<?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>185022</bug_id>
          
          <creation_ts>2018-04-25 19:38:31 -0700</creation_ts>
          <short_desc>Use WindowProxy instead of DOMWindow in our IDL</short_desc>
          <delta_ts>2018-04-27 19:31:44 -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>Bindings</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>
          
          <blocked>185102</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1417957</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-25 19:38:31 -0700</bug_when>
    <thetext>Use WindowProxy instead of DOMWindow in our IDL, as per respective specifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417975</commentid>
    <comment_count>1</comment_count>
      <attachid>338855</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-25 21:55:10 -0700</bug_when>
    <thetext>Created attachment 338855
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417976</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-25 21:57:47 -0700</bug_when>
    <thetext>Attachment 338855 did not pass style-queue:


ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Wrong number of spaces before statement. (expected: 41)  [whitespace/indent] [4]
ERROR: Source/WebCore/bindings/js/WindowProxy.cpp:67:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 6 in 70 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>1417977</commentid>
    <comment_count>3</comment_count>
      <attachid>338855</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-25 22:00:02 -0700</bug_when>
    <thetext>Comment on attachment 338855
WIP Patch

Attachment 338855 did not pass bindings-ews (mac):
Output: http://webkit-queues.webkit.org/results/7464405

New failing tests:
(JS) JSTestObj.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418045</commentid>
    <comment_count>4</comment_count>
      <attachid>338874</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-26 08:53:16 -0700</bug_when>
    <thetext>Created attachment 338874
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418046</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-26 08:55:26 -0700</bug_when>
    <thetext>Attachment 338874 did not pass style-queue:


ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Wrong number of spaces before statement. (expected: 41)  [whitespace/indent] [4]
ERROR: Source/WebCore/bindings/js/WindowProxy.cpp:67:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WebCore/dom/Node.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 7 in 74 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>1418060</commentid>
    <comment_count>6</comment_count>
      <attachid>338877</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-26 09:15:59 -0700</bug_when>
    <thetext>Created attachment 338877
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418062</commentid>
    <comment_count>7</comment_count>
      <attachid>338879</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-26 09:19:19 -0700</bug_when>
    <thetext>Created attachment 338879
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418063</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-26 09:21:34 -0700</bug_when>
    <thetext>Attachment 338879 did not pass style-queue:


ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Wrong number of spaces before statement. (expected: 41)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 5 in 76 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>1418078</commentid>
    <comment_count>9</comment_count>
      <attachid>338880</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-26 09:40:36 -0700</bug_when>
    <thetext>Created attachment 338880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418080</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-26 09:43:35 -0700</bug_when>
    <thetext>Attachment 338880 did not pass style-queue:


ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Wrong number of spaces before statement. (expected: 41)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/TouchEvent.h:49:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 9 in 78 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>1418093</commentid>
    <comment_count>11</comment_count>
      <attachid>338884</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-26 10:06:19 -0700</bug_when>
    <thetext>Created attachment 338884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418096</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-26 10:08:20 -0700</bug_when>
    <thetext>Attachment 338884 did not pass style-queue:


ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Wrong number of spaces before statement. (expected: 41)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/TouchEvent.h:49:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 9 in 78 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>1418102</commentid>
    <comment_count>13</comment_count>
      <attachid>338886</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-26 10:14:29 -0700</bug_when>
    <thetext>Created attachment 338886
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418103</commentid>
    <comment_count>14</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-26 10:16:59 -0700</bug_when>
    <thetext>Attachment 338886 did not pass style-queue:


ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Wrong number of spaces before statement. (expected: 41)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/TouchEvent.h:49:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 9 in 78 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>1418117</commentid>
    <comment_count>15</comment_count>
      <attachid>338890</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-26 10:35:36 -0700</bug_when>
    <thetext>Created attachment 338890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418118</commentid>
    <comment_count>16</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-26 10:37:28 -0700</bug_when>
    <thetext>Attachment 338890 did not pass style-queue:


ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Wrong number of spaces before statement. (expected: 41)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/TouchEvent.h:49:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 9 in 78 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>1418153</commentid>
    <comment_count>17</comment_count>
      <attachid>338895</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-26 11:21:27 -0700</bug_when>
    <thetext>Created attachment 338895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418159</commentid>
    <comment_count>18</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-26 11:23:56 -0700</bug_when>
    <thetext>Attachment 338895 did not pass style-queue:


ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Wrong number of spaces before statement. (expected: 41)  [whitespace/indent] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameElement.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindowPrivate.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMKeyboardEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp&quot;
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/TouchEvent.h:49:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 9 in 80 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>1418160</commentid>
    <comment_count>19</comment_count>
      <attachid>338897</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-26 11:24:15 -0700</bug_when>
    <thetext>Created attachment 338897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418161</commentid>
    <comment_count>20</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-26 11:27:05 -0700</bug_when>
    <thetext>Attachment 338897 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMWheelEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindowPrivate.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameElement.cpp&quot;
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMKeyboardEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMouseEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMUIEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp&quot;
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/TouchEvent.h:49:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Wrong number of spaces before statement. (expected: 41)  [whitespace/indent] [4]
Total errors found: 9 in 83 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>1418178</commentid>
    <comment_count>21</comment_count>
      <attachid>338901</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-26 11:58:37 -0700</bug_when>
    <thetext>Created attachment 338901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418179</commentid>
    <comment_count>22</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-26 12:01:50 -0700</bug_when>
    <thetext>Attachment 338901 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMWheelEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindowPrivate.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameElement.cpp&quot;
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMKeyboardEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMouseEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMUIEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp&quot;
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/TouchEvent.h:49:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Wrong number of spaces before statement. (expected: 41)  [whitespace/indent] [4]
Total errors found: 9 in 83 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>1418180</commentid>
    <comment_count>23</comment_count>
      <attachid>338902</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-26 12:10:45 -0700</bug_when>
    <thetext>Created attachment 338902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418182</commentid>
    <comment_count>24</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-26 12:13:20 -0700</bug_when>
    <thetext>Attachment 338902 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMWheelEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindowPrivate.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameElement.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentGtk.cpp&quot;
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMKeyboardEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMouseEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMUIEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp&quot;
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/TouchEvent.h:49:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLIFrameElement.cpp&quot;
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Wrong number of spaces before statement. (expected: 41)  [whitespace/indent] [4]
Total errors found: 9 in 85 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>1418397</commentid>
    <comment_count>25</comment_count>
      <attachid>338902</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-04-26 21:10:28 -0700</bug_when>
    <thetext>Comment on attachment 338902
Patch

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

&gt; Source/WebCore/bindings/js/WindowProxy.cpp:-61
&gt; -            it-&gt;value-&gt;window()-&gt;setConsoleClient(nullptr);

What prompted this change?

&gt; Source/WebCore/dom/Document.h:802
&gt;      DOMWindow* domWindow() const { return m_domWindow.get(); }
&gt;      // In DOM Level 2, the Document&apos;s DOMWindow is called the defaultView.
&gt; -    DOMWindow* defaultView() const { return domWindow(); } 
&gt; +    WEBCORE_EXPORT WindowProxy* defaultView() const;

In addition to defaultView() returning a WindowProxy*, I think there should be a windowProxy() member function which does the same thing. defaultView() is a terribly uninformatively named function, and only exists to appease the DOM. Internally in WebCore, I think we should use this new windowProxy() member function instead (much like we used to call the domWindow() instead).

&gt; Source/WebCore/editing/AlternativeTextController.cpp:635
&gt; -    Ref&lt;TextEvent&gt; event = TextEvent::createForDictation(m_frame.document()-&gt;domWindow(), text, dictationAlternatives);
&gt; +    Ref&lt;TextEvent&gt; event = TextEvent::createForDictation(m_frame.document()-&gt;defaultView(), text, dictationAlternatives);

Seems like this could just call m_frame-&gt;windowProxy().  Also could probably use auto.

&gt; Source/WebCore/page/DragController.cpp:511
&gt; +    auto event = TextEvent::createForDrop(innerFrame-&gt;document()-&gt;defaultView(), text);

Could just call innerFrame-&gt;windowProxy().

&gt; Source/WebCore/page/EventHandler.cpp:3805
&gt; +    Ref&lt;TextEvent&gt; event = TextEvent::create(m_frame.document()-&gt;defaultView(), text, inputType);

Could just call m_frame.windowProxy().  Could also use auto.

&gt; Source/WebCore/page/Frame.cpp:215
&gt; +    windowProxy().destroyAllJSWindowProxies();

This feels icky. It seems weird that it is called here, and then again in the WindowProxy destructor. If we really can&apos;t figure out another way, please at least add a comment explaining it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418412</commentid>
    <comment_count>26</comment_count>
      <attachid>338902</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-26 21:56:36 -0700</bug_when>
    <thetext>Comment on attachment 338902
Patch

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

&gt;&gt; Source/WebCore/bindings/js/WindowProxy.cpp:-61
&gt;&gt; -            it-&gt;value-&gt;window()-&gt;setConsoleClient(nullptr);
&gt; 
&gt; What prompted this change?

JSWindowProxy::window() does a jsCast, which is not allowed during sweeping :/ It is for the same reason that I had to clear all proxies in the Frame destructor. I gave some more details in the change log. I will try and find a better way to address. Let me know if you have an idea.

&gt;&gt; Source/WebCore/dom/Document.h:802
&gt;&gt; +    WEBCORE_EXPORT WindowProxy* defaultView() const;
&gt; 
&gt; In addition to defaultView() returning a WindowProxy*, I think there should be a windowProxy() member function which does the same thing. defaultView() is a terribly uninformatively named function, and only exists to appease the DOM. Internally in WebCore, I think we should use this new windowProxy() member function instead (much like we used to call the domWindow() instead).

I guess we can simply rename this method to windowProxy and update all call sites? I do not think keeping defaultView method is very useful.

&gt;&gt; Source/WebCore/editing/AlternativeTextController.cpp:635
&gt;&gt; +    Ref&lt;TextEvent&gt; event = TextEvent::createForDictation(m_frame.document()-&gt;defaultView(), text, dictationAlternatives);
&gt; 
&gt; Seems like this could just call m_frame-&gt;windowProxy().  Also could probably use auto.

Ok

&gt;&gt; Source/WebCore/page/DragController.cpp:511
&gt;&gt; +    auto event = TextEvent::createForDrop(innerFrame-&gt;document()-&gt;defaultView(), text);
&gt; 
&gt; Could just call innerFrame-&gt;windowProxy().

Ok.

&gt;&gt; Source/WebCore/page/EventHandler.cpp:3805
&gt;&gt; +    Ref&lt;TextEvent&gt; event = TextEvent::create(m_frame.document()-&gt;defaultView(), text, inputType);
&gt; 
&gt; Could just call m_frame.windowProxy().  Could also use auto.

Ok.

&gt;&gt; Source/WebCore/page/Frame.cpp:215
&gt;&gt; +    windowProxy().destroyAllJSWindowProxies();
&gt; 
&gt; This feels icky. It seems weird that it is called here, and then again in the WindowProxy destructor. If we really can&apos;t figure out another way, please at least add a comment explaining it.

Yes, I will try to find a better way. I explained in the change log why I had to do it. I agree it is unfortunate though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418417</commentid>
    <comment_count>27</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-26 22:05:23 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #26)
&gt; Comment on attachment 338902 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=338902&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/bindings/js/WindowProxy.cpp:-61
&gt; &gt;&gt; -            it-&gt;value-&gt;window()-&gt;setConsoleClient(nullptr);
&gt; &gt; 
&gt; &gt; What prompted this change?
&gt; 
&gt; JSWindowProxy::window() does a jsCast, which is not allowed during sweeping
&gt; :/ It is for the same reason that I had to clear all proxies in the Frame
&gt; destructor. I gave some more details in the change log. I will try and find
&gt; a better way to address. Let me know if you have an idea.

FYI crash log looks like:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x000000066fc6c3d0 WTFCrash + 16 (Assertions.cpp:261)
1   com.apple.WebCore             	0x0000000660096b5b JSC::JSCell::classInfo(JSC::VM&amp;) const + 107 (JSCellInlines.h:297)
2   com.apple.WebCore             	0x0000000660096ac1 JSC::JSCell::inherits(JSC::VM&amp;, JSC::ClassInfo const*) const + 33 (JSCellInlines.h:265)
3   com.apple.WebCore             	0x0000000660370494 WebCore::JSDOMGlobalObject* JSC::jsCast&lt;WebCore::JSDOMGlobalObject*, JSC::JSObject&gt;(JSC::JSObject*) + 68 (JSCast.h:36)
4   com.apple.WebCore             	0x000000066036f14d WebCore::JSWindowProxy::window() const + 29 (JSWindowProxy.h:53)
5   com.apple.WebCore             	0x00000006619b0e57 WebCore::ScriptController::enableEval() + 71 (ScriptController.cpp:346)
6   com.apple.WebCore             	0x000000066260c65d WebCore::FrameLoader::clear(WebCore::Document*, bool, bool, bool) + 749 (FrameLoader.cpp:658)
7   com.apple.WebCore             	0x000000066261bfac WebCore::FrameLoader::cancelAndClear() + 108 (FrameLoader.cpp:597)
8   com.apple.WebCore             	0x00000006627d4c49 WebCore::Frame::~Frame() + 89 (Frame.cpp:217)
9   com.apple.WebCore             	0x00000006627d52a5 WebCore::Frame::~Frame() + 21 (Frame.cpp:232)
10  com.apple.WebCore             	0x00000006627d52c9 WebCore::Frame::~Frame() + 25 (Frame.cpp:214)
11  com.apple.WebCore             	0x000000066042dbbf WTF::ThreadSafeRefCounted&lt;WebCore::AbstractFrame, (WTF::DestructionThread)0&gt;::deref() const + 79 (ThreadSafeRefCounted.h:77)
12  com.apple.WebCore             	0x00000006619d611c WebCore::WindowProxy::deref() + 28 (WindowProxy.cpp:192)
13  com.apple.WebCore             	0x00000006604e6e9e void WTF::derefIfNotNull&lt;WebCore::WindowProxy&gt;(WebCore::WindowProxy*) + 46 (RefPtr.h:46)
14  com.apple.WebCore             	0x00000006604e6e69 WTF::RefPtr&lt;WebCore::WindowProxy, WTF::DumbPtrTraits&lt;WebCore::WindowProxy&gt; &gt;::~RefPtr() + 41 (RefPtr.h:70)
15  com.apple.WebCore             	0x00000006604e6e35 WTF::RefPtr&lt;WebCore::WindowProxy, WTF::DumbPtrTraits&lt;WebCore::WindowProxy&gt; &gt;::~RefPtr() + 21 (RefPtr.h:70)
16  com.apple.WebCore             	0x0000000661ffe881 WebCore::UIEvent::~UIEvent() + 49 (UIEvent.cpp:56)
17  com.apple.WebCore             	0x0000000661f0dce5 WebCore::UIEventWithKeyState::~UIEventWithKeyState() + 21 (UIEventWithKeyState.h:31)
18  com.apple.WebCore             	0x0000000661f35145 WebCore::MouseRelatedEvent::~MouseRelatedEvent() + 21 (MouseRelatedEvent.h:39)
19  com.apple.WebCore             	0x0000000661f35121 WebCore::MouseEvent::~MouseEvent() + 81 (MouseEvent.cpp:128)
20  com.apple.WebCore             	0x0000000661f35165 WebCore::MouseEvent::~MouseEvent() + 21 (MouseEvent.cpp:128)
21  com.apple.WebCore             	0x0000000661f35189 WebCore::MouseEvent::~MouseEvent() + 25 (MouseEvent.cpp:128)
22  com.apple.WebCore             	0x000000066011733f WTF::RefCounted&lt;WebCore::Event&gt;::deref() const + 79 (RefCounted.h:145)
23  com.apple.WebCore             	0x00000006601fc153 WTF::Ref&lt;WebCore::Event, WTF::DumbPtrTraits&lt;WebCore::Event&gt; &gt;::~Ref() + 51 (Ref.h:62)
24  com.apple.WebCore             	0x00000006601f0e05 WTF::Ref&lt;WebCore::Event, WTF::DumbPtrTraits&lt;WebCore::Event&gt; &gt;::~Ref() + 21 (Ref.h:62)
25  com.apple.WebCore             	0x000000066079ccf9 WebCore::JSDOMWrapper&lt;WebCore::Event&gt;::~JSDOMWrapper() + 25 (JSDOMWrapper.h:72)
26  com.apple.WebCore             	0x000000066079ccd5 WebCore::JSEvent::~JSEvent() + 21 (JSEvent.h:30)
27  com.apple.WebCore             	0x00000006607984e5 WebCore::JSEvent::~JSEvent() + 21 (JSEvent.h:30)
28  com.apple.WebCore             	0x00000006607962dd WebCore::JSEvent::destroy(JSC::JSCell*) + 29 (JSEvent.cpp:253)
29  com.apple.JavaScriptCore      	0x0000000670eca2fa JSC::JSDestructibleObjectDestroyFunc::operator()(JSC::VM&amp;, JSC::JSCell*) const + 42 (JSDestructibleObjectHeapCellType.cpp:38)
30  com.apple.JavaScriptCore      	0x0000000670ed16d5 void JSC::MarkedBlock::Handle::specializedSweep&lt;false, (JSC::MarkedBlock::Handle::EmptyMode)0, (JSC::MarkedBlock::Handle::SweepMode)0, (JSC::MarkedBlock::Handle::SweepDestructionMode)0, (JSC::MarkedBlock::Handle::ScribbleMode)0, (JSC::MarkedBlock::Handle::NewlyAllocatedMode)0, (JSC::MarkedBlock::Handle::MarksMode)0, JSC::JSDestructibleObjectDestroyFunc&gt;(JSC::FreeList*, JSC::MarkedBlock::Handle::EmptyMode, JSC::MarkedBlock::Handle::SweepMode, JSC::MarkedBlock::Handle::SweepDestructionMode, JSC::MarkedBlock::Handle::ScribbleMode, JSC::MarkedBlock::Handle::NewlyAllocatedMode, JSC::MarkedBlock::Handle::MarksMode, JSC::JSDestructibleObjectDestroyFunc const&amp;)::&apos;lambda&apos;(void*)::operator()(void*) const + 69 (MarkedBlockInlines.h:256)
31  com.apple.JavaScriptCore      	0x0000000670ed1744 void JSC::MarkedBlock::Handle::specializedSweep&lt;false, (JSC::MarkedBlock::Handle::EmptyMode)0, (JSC::MarkedBlock::Handle::SweepMode)0, (JSC::MarkedBlock::Handle::SweepDestructionMode)0, (JSC::MarkedBlock::Handle::ScribbleMode)0, (JSC::MarkedBlock::Handle::NewlyAllocatedMode)0, (JSC::MarkedBlock::Handle::MarksMode)0, JSC::JSDestructibleObjectDestroyFunc&gt;(JSC::FreeList*, JSC::MarkedBlock::Handle::EmptyMode, JSC::MarkedBlock::Handle::SweepMode, JSC::MarkedBlock::Handle::SweepDestructionMode, JSC::MarkedBlock::Handle::ScribbleMode, JSC::MarkedBlock::Handle::NewlyAllocatedMode, JSC::MarkedBlock::Handle::MarksMode, JSC::JSDestructibleObjectDestroyFunc const&amp;)::&apos;lambda&apos;(unsigned long)::operator()(unsigned long) const + 84 (MarkedBlockInlines.h:316)
32  com.apple.JavaScriptCore      	0x0000000670ecc4d6 void JSC::MarkedBlock::Handle::specializedSweep&lt;false, (JSC::MarkedBlock::Handle::EmptyMode)0, (JSC::MarkedBlock::Handle::SweepMode)0, (JSC::MarkedBlock::Handle::SweepDestructionMode)0, (JSC::MarkedBlock::Handle::ScribbleMode)0, (JSC::MarkedBlock::Handle::NewlyAllocatedMode)0, (JSC::MarkedBlock::Handle::MarksMode)0, JSC::JSDestructibleObjectDestroyFunc&gt;(JSC::FreeList*, JSC::MarkedBlock::Handle::EmptyMode, JSC::MarkedBlock::Handle::SweepMode, JSC::MarkedBlock::Handle::SweepDestructionMode, JSC::MarkedBlock::Handle::ScribbleMode, JSC::MarkedBlock::Handle::NewlyAllocatedMode, JSC::MarkedBlock::Handle::MarksMode, JSC::JSDestructibleObjectDestroyFunc const&amp;) + 1366 (MarkedBlockInlines.h:337)
33  com.apple.JavaScriptCore      	0x0000000670eca290 void JSC::MarkedBlock::Handle::finishSweepKnowingHeapCellType&lt;JSC::JSDestructibleObjectDestroyFunc&gt;(JSC::FreeList*, JSC::JSDestructibleObjectDestroyFunc const&amp;) + 304 (MarkedBlockInlines.h:432)
34  com.apple.JavaScriptCore      	0x0000000670eca158 JSC::JSDestructibleObjectHeapCellType::finishSweep(JSC::MarkedBlock::Handle&amp;, JSC::FreeList*) + 40 (JSDestructibleObjectHeapCellType.cpp:53)
35  com.apple.JavaScriptCore      	0x0000000670a6c906 JSC::Subspace::finishSweep(JSC::MarkedBlock::Handle&amp;, JSC::FreeList*) + 70 (Subspace.cpp:66)
36  com.apple.JavaScriptCore      	0x0000000670a51417 JSC::MarkedBlock::Handle::sweep(JSC::FreeList*) + 615 (MarkedBlock.cpp:432)
37  com.apple.JavaScriptCore      	0x0000000670a46134 JSC::LocalAllocator::tryAllocateIn(JSC::MarkedBlock::Handle*) + 164 (LocalAllocator.cpp:260)
38  com.apple.JavaScriptCore      	0x0000000670a45ec0 JSC::LocalAllocator::tryAllocateWithoutCollecting() + 224 (LocalAllocator.cpp:221)
39  com.apple.JavaScriptCore      	0x0000000670a45b33 JSC::LocalAllocator::allocateSlowCase(JSC::GCDeferralContext*, JSC::AllocationFailureMode) + 371 (LocalAllocator.cpp:168)
40  com.apple.JavaScriptCore      	0x00000006709ec7b1 JSC::LocalAllocator::allocate(JSC::GCDeferralContext*, JSC::AllocationFailureMode)::&apos;lambda&apos;()::operator()() const + 81 (LocalAllocatorInlines.h:37)
41  com.apple.JavaScriptCore      	0x00000006709ec729 JSC::HeapCell* JSC::FreeList::allocate&lt;JSC::LocalAllocator::allocate(JSC::GCDeferralContext*, JSC::AllocationFailureMode)::&apos;lambda&apos;()&gt;(JSC::LocalAllocator::allocate(JSC::GCDeferralContext*, JSC::AllocationFailureMode)::&apos;lambda&apos;() const&amp;) + 169 (FreeListInlines.h:46)
42  com.apple.JavaScriptCore      	0x00000006709ec5ce JSC::LocalAllocator::allocate(JSC::GCDeferralContext*, JSC::AllocationFailureMode) + 62 (LocalAllocatorInlines.h:34)
43  com.apple.JavaScriptCore      	0x00000006709ecd21 void* JSC::Allocator::tryAllocate&lt;JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long, JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0&gt;(JSC::VM&amp;, JSC::GCDeferralContext*, JSC::AllocationFailureMode, JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long, JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0 const&amp;) const::&apos;lambda&apos;(JSC::LocalAllocator&amp;)::operator()(JSC::LocalAllocator&amp;) const + 49 (AllocatorInlines.h:45)
44  com.apple.JavaScriptCore      	0x00000006709ecccf void JSC::ThreadLocalCache::tryGetAllocator&lt;void* JSC::Allocator::tryAllocate&lt;JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long, JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0&gt;(JSC::VM&amp;, JSC::GCDeferralContext*, JSC::AllocationFailureMode, JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long, JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0 const&amp;) const::&apos;lambda&apos;(JSC::LocalAllocator&amp;), void* JSC::Allocator::tryAllocate&lt;JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long, JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0&gt;(JSC::VM&amp;, JSC::GCDeferralContext*, JSC::AllocationFailureMode, JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long, JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0 const&amp;) const::&apos;lambda&apos;()&gt;(JSC::VM&amp;, unsigned long, JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long, JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0 const&amp;, void* JSC::Allocator::tryAllocate&lt;JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long, JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0&gt;(JSC::VM&amp;, JSC::GCDeferralContext*, JSC::AllocationFailureMode, JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long, JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0 const&amp;) const::&apos;lambda&apos;() const&amp;) + 111 (ThreadLocalCacheInlines.h:74)
45  com.apple.JavaScriptCore      	0x00000006709ea53f void* JSC::Allocator::tryAllocate&lt;JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long, JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0&gt;(JSC::VM&amp;, JSC::GCDeferralContext*, JSC::AllocationFailureMode, JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long, JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0 const&amp;) const + 95 (AllocatorInlines.h:50)
46  com.apple.JavaScriptCore      	0x00000006709ea4d0 JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long, JSC::GCDeferralContext*, JSC::AllocationFailureMode) + 128 (CompleteSubspace.cpp:64)
47  com.apple.JavaScriptCore      	0x0000000670f02ac4 void* JSC::tryAllocateCellHelper&lt;JSC::JSProxy&gt;(JSC::Heap&amp;, unsigned long, JSC::GCDeferralContext*, JSC::AllocationFailureMode) + 196 (JSCellInlines.h:151)
48  com.apple.JavaScriptCore      	0x0000000670f02963 void* JSC::allocateCell&lt;JSC::JSProxy&gt;(JSC::Heap&amp;, unsigned long) + 35 (JSCellInlines.h:165)
49  com.apple.JavaScriptCore      	0x0000000670ef848e JSC::JSProxy::create(JSC::VM&amp;, JSC::Structure*, JSC::JSObject*) + 46 (JSProxy.h:39)
50  com.apple.JavaScriptCore      	0x0000000670ef757f JSC::JSGlobalObject::resetPrototype(JSC::VM&amp;, JSC::JSValue) + 239 (JSGlobalObject.cpp:1313)
51  com.apple.JavaScriptCore      	0x0000000670eecbbc JSC::JSGlobalObject::init(JSC::VM&amp;) + 77036 (JSGlobalObject.cpp:1084)
52  com.apple.JavaScriptCore      	0x0000000670ef9bac JSC::JSGlobalObject::finishCreation(JSC::VM&amp;, JSC::JSObject*) + 124 (JSGlobalObject.cpp:1624)
53  com.apple.WebCore             	0x000000066194c09a WebCore::JSDOMGlobalObject::finishCreation(JSC::VM&amp;, JSC::JSObject*) + 58 (JSDOMGlobalObject.cpp:190)
54  com.apple.WebCore             	0x0000000661960438 WebCore::JSDOMWindowBase::finishCreation(JSC::VM&amp;, WebCore::JSWindowProxy*) + 72 (JSDOMWindowBase.cpp:92)
55  com.apple.WebCore             	0x00000006605c5096 WebCore::JSDOMWindow::finishCreation(JSC::VM&amp;, WebCore::JSWindowProxy*) + 70 (JSDOMWindow.cpp:6129)
56  com.apple.WebCore             	0x00000006619a7574 WebCore::JSDOMWindow::create(JSC::VM&amp;, JSC::Structure*, WTF::Ref&lt;WebCore::DOMWindow, WTF::DumbPtrTraits&lt;WebCore::DOMWindow&gt; &gt;&amp;&amp;, WebCore::JSWindowProxy*) + 148 (JSDOMWindow.h:40)
57  com.apple.WebCore             	0x00000006619a6b43 WebCore::JSWindowProxy::setWindow(WebCore::AbstractDOMWindow&amp;) + 675 (JSWindowProxy.cpp:107)
58  com.apple.WebCore             	0x00000006619d5b60 WebCore::WindowProxy::setDOMWindow(WebCore::AbstractDOMWindow*) + 272 (WindowProxy.cpp:153)
59  com.apple.WebCore             	0x000000066260c62b WebCore::FrameLoader::clear(WebCore::Document*, bool, bool, bool) + 699 (FrameLoader.cpp:653)
60  com.apple.WebCore             	0x000000066260bad0 WebCore::DocumentWriter::begin(WebCore::URL const&amp;, bool, WebCore::Document*) + 592 (DocumentWriter.cpp:162)
61  com.apple.WebCore             	0x00000006625cf3ae WebCore::DocumentLoader::commitData(char const*, unsigned long) + 142 (DocumentLoader.cpp:994)
62  com.apple.WebKit              	0x000000010143428f WebKit::WebFrameLoaderClient::committedLoad(WebCore::DocumentLoader*, char const*, int) + 79 (WebFrameLoaderClient.cpp:1021)
63  com.apple.WebCore             	0x00000006625d4bdd WebCore::DocumentLoader::commitLoad(char const*, int) + 205 (DocumentLoader.cpp:965)
64  com.apple.WebCore             	0x00000006625d4aff WebCore::DocumentLoader::dataReceived(char const*, int) + 511 (DocumentLoader.cpp:1105)
65  com.apple.WebCore             	0x00000006625d52b4 WebCore::DocumentLoader::dataReceived(WebCore::CachedResource&amp;, char const*, int) + 116 (DocumentLoader.cpp:1078)
66  com.apple.WebCore             	0x00000006625d52fa non-virtual thunk to WebCore::DocumentLoader::dataReceived(WebCore::CachedResource&amp;, char const*, int) + 58
67  com.apple.WebCore             	0x00000006626fc558 WebCore::CachedRawResource::notifyClientsDataWasReceived(char const*, unsigned int) + 152 (CachedRawResource.cpp:132)
68  com.apple.WebCore             	0x00000006626fc348 WebCore::CachedRawResource::updateBuffer(WebCore::SharedBuffer&amp;) + 344 (CachedRawResource.cpp:71)
69  com.apple.WebCore             	0x00000006626975aa WebCore::SubresourceLoader::didReceiveDataOrBuffer(char const*, int, WTF::RefPtr&lt;WebCore::SharedBuffer, WTF::DumbPtrTraits&lt;WebCore::SharedBuffer&gt; &gt;&amp;&amp;, long long, WebCore::DataPayloadType) + 538 (SubresourceLoader.cpp:450)
70  com.apple.WebCore             	0x0000000662697372 WebCore::SubresourceLoader::didReceiveData(char const*, unsigned int, long long, WebCore::DataPayloadType) + 98 (SubresourceLoader.cpp:418)
71  com.apple.WebKit              	0x00000001018b7534 WebKit::WebResourceLoader::didReceiveData(IPC::DataReference const&amp;, long long) + 564 (WebResourceLoader.cpp:143)
72  com.apple.WebKit              	0x00000001018bba00 void IPC::callMemberFunctionImpl&lt;WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(IPC::DataReference const&amp;, long long), std::__1::tuple&lt;IPC::DataReference, long long&gt;, 0ul, 1ul&gt;(WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(IPC::DataReference const&amp;, long long), std::__1::tuple&lt;IPC::DataReference, long long&gt;&amp;&amp;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul&gt;) + 192 (HandleMessage.h:41)
73  com.apple.WebKit              	0x00000001018bb930 void IPC::callMemberFunction&lt;WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(IPC::DataReference const&amp;, long long), std::__1::tuple&lt;IPC::DataReference, long long&gt;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul&gt; &gt;(std::__1::tuple&lt;IPC::DataReference, long long&gt;&amp;&amp;, WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(IPC::DataReference const&amp;, long long)) + 96 (HandleMessage.h:47)
74  com.apple.WebKit              	0x00000001018bacc1 void IPC::handleMessage&lt;Messages::WebResourceLoader::DidReceiveData, WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(IPC::DataReference const&amp;, long long)&gt;(IPC::Decoder&amp;, WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(IPC::DataReference const&amp;, long long)) + 289 (HandleMessage.h:127)
75  com.apple.WebKit              	0x00000001018ba3f6 WebKit::WebResourceLoader::didReceiveWebResourceLoaderMessage(IPC::Connection&amp;, IPC::Decoder&amp;) + 502 (WebResourceLoaderMessageReceiver.cpp:62)
76  com.apple.WebKit              	0x0000000100e7e429 WebKit::NetworkProcessConnection::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) + 169 (NetworkProcessConnection.cpp:71)
77  com.apple.WebKit              	0x0000000100bdced3 IPC::Connection::dispatchMessage(IPC::Decoder&amp;) + 51 (Connection.cpp:907)
78  com.apple.WebKit              	0x0000000100bd2488 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;) + 712
79  com.apple.WebKit              	0x0000000100bdd4da IPC::Connection::dispatchOneMessage() + 1530 (Connection.cpp:964)
80  com.apple.WebKit              	0x0000000100bf579d IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_14::operator()() + 29 (Connection.cpp:901)
81  com.apple.WebKit              	0x0000000100bf56f9 WTF::Function&lt;void ()&gt;::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_14&gt;::call() + 25 (Function.h:101)
82  com.apple.JavaScriptCore      	0x000000066fc90c1b WTF::Function&lt;void ()&gt;::operator()() const + 139 (Function.h:56)
83  com.apple.JavaScriptCore      	0x000000066fce28e3 WTF::RunLoop::performWork() + 211 (RunLoop.cpp:107)
84  com.apple.JavaScriptCore      	0x000000066fce31e4 WTF::RunLoop::performWork(void*) + 36 (RunLoopCF.cpp:38)
85  com.apple.CoreFoundation      	0x00007fff4c987a61 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
86  com.apple.CoreFoundation      	0x00007fff4ca4147c __CFRunLoopDoSource0 + 108
87  com.apple.CoreFoundation      	0x00007fff4c96a4c0 __CFRunLoopDoSources0 + 208
88  com.apple.CoreFoundation      	0x00007fff4c96993d __CFRunLoopRun + 1293
89  com.apple.CoreFoundation      	0x00007fff4c9691a3 CFRunLoopRunSpecific + 483
90  com.apple.HIToolbox           	0x00007fff4bc51d96 RunCurrentEventLoopInMode + 286
91  com.apple.HIToolbox           	0x00007fff4bc51b06 ReceiveNextEventCommon + 613
92  com.apple.HIToolbox           	0x00007fff4bc51884 _BlockUntilNextEventMatchingListInModeWithFilter + 64
93  com.apple.AppKit              	0x00007fff49f04b53 _DPSNextEvent + 2085
94  com.apple.AppKit              	0x00007fff4a69aeb0 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 3044
95  com.apple.AppKit              	0x00007fff49ef9965 -[NSApplication run] + 764
96  com.apple.AppKit              	0x00007fff49ec8b3e NSApplicationMain + 804
97  libxpc.dylib                  	0x00007fff75144f57 _xpc_objc_main + 580
98  libxpc.dylib                  	0x00007fff75143baa xpc_main + 417
99  com.apple.WebKit.WebContent   	0x0000000100a7813b main + 1195 (XPCServiceMain.mm:160)
100 libdyld.dylib                 	0x00007fff74dea015 start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418418</commentid>
    <comment_count>28</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-26 22:08:05 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #27)
&gt; (In reply to Chris Dumez from comment #26)
&gt; &gt; Comment on attachment 338902 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=338902&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/bindings/js/WindowProxy.cpp:-61
&gt; &gt; &gt;&gt; -            it-&gt;value-&gt;window()-&gt;setConsoleClient(nullptr);
&gt; &gt; &gt; 
&gt; &gt; &gt; What prompted this change?
&gt; &gt; 
&gt; &gt; JSWindowProxy::window() does a jsCast, which is not allowed during sweeping
&gt; &gt; :/ It is for the same reason that I had to clear all proxies in the Frame
&gt; &gt; destructor. I gave some more details in the change log. I will try and find
&gt; &gt; a better way to address. Let me know if you have an idea.
&gt; 
&gt; FYI crash log looks like:
&gt; Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
&gt; 0   com.apple.JavaScriptCore      	0x000000066fc6c3d0 WTFCrash + 16
&gt; (Assertions.cpp:261)
&gt; 1   com.apple.WebCore             	0x0000000660096b5b
&gt; JSC::JSCell::classInfo(JSC::VM&amp;) const + 107 (JSCellInlines.h:297)
&gt; 2   com.apple.WebCore             	0x0000000660096ac1
&gt; JSC::JSCell::inherits(JSC::VM&amp;, JSC::ClassInfo const*) const + 33
&gt; (JSCellInlines.h:265)
&gt; 3   com.apple.WebCore             	0x0000000660370494
&gt; WebCore::JSDOMGlobalObject* JSC::jsCast&lt;WebCore::JSDOMGlobalObject*,
&gt; JSC::JSObject&gt;(JSC::JSObject*) + 68 (JSCast.h:36)
&gt; 4   com.apple.WebCore             	0x000000066036f14d
&gt; WebCore::JSWindowProxy::window() const + 29 (JSWindowProxy.h:53)
&gt; 5   com.apple.WebCore             	0x00000006619b0e57
&gt; WebCore::ScriptController::enableEval() + 71 (ScriptController.cpp:346)
&gt; 6   com.apple.WebCore             	0x000000066260c65d
&gt; WebCore::FrameLoader::clear(WebCore::Document*, bool, bool, bool) + 749
&gt; (FrameLoader.cpp:658)
&gt; 7   com.apple.WebCore             	0x000000066261bfac
&gt; WebCore::FrameLoader::cancelAndClear() + 108 (FrameLoader.cpp:597)
&gt; 8   com.apple.WebCore             	0x00000006627d4c49
&gt; WebCore::Frame::~Frame() + 89 (Frame.cpp:217)
&gt; 9   com.apple.WebCore             	0x00000006627d52a5
&gt; WebCore::Frame::~Frame() + 21 (Frame.cpp:232)
&gt; 10  com.apple.WebCore             	0x00000006627d52c9
&gt; WebCore::Frame::~Frame() + 25 (Frame.cpp:214)
&gt; 11  com.apple.WebCore             	0x000000066042dbbf
&gt; WTF::ThreadSafeRefCounted&lt;WebCore::AbstractFrame,
&gt; (WTF::DestructionThread)0&gt;::deref() const + 79 (ThreadSafeRefCounted.h:77)
&gt; 12  com.apple.WebCore             	0x00000006619d611c
&gt; WebCore::WindowProxy::deref() + 28 (WindowProxy.cpp:192)
&gt; 13  com.apple.WebCore             	0x00000006604e6e9e void
&gt; WTF::derefIfNotNull&lt;WebCore::WindowProxy&gt;(WebCore::WindowProxy*) + 46
&gt; (RefPtr.h:46)
&gt; 14  com.apple.WebCore             	0x00000006604e6e69
&gt; WTF::RefPtr&lt;WebCore::WindowProxy, WTF::DumbPtrTraits&lt;WebCore::WindowProxy&gt;
&gt; &gt;::~RefPtr() + 41 (RefPtr.h:70)
&gt; 15  com.apple.WebCore             	0x00000006604e6e35
&gt; WTF::RefPtr&lt;WebCore::WindowProxy, WTF::DumbPtrTraits&lt;WebCore::WindowProxy&gt;
&gt; &gt;::~RefPtr() + 21 (RefPtr.h:70)
&gt; 16  com.apple.WebCore             	0x0000000661ffe881
&gt; WebCore::UIEvent::~UIEvent() + 49 (UIEvent.cpp:56)
&gt; 17  com.apple.WebCore             	0x0000000661f0dce5
&gt; WebCore::UIEventWithKeyState::~UIEventWithKeyState() + 21
&gt; (UIEventWithKeyState.h:31)
&gt; 18  com.apple.WebCore             	0x0000000661f35145
&gt; WebCore::MouseRelatedEvent::~MouseRelatedEvent() + 21
&gt; (MouseRelatedEvent.h:39)
&gt; 19  com.apple.WebCore             	0x0000000661f35121
&gt; WebCore::MouseEvent::~MouseEvent() + 81 (MouseEvent.cpp:128)
&gt; 20  com.apple.WebCore             	0x0000000661f35165
&gt; WebCore::MouseEvent::~MouseEvent() + 21 (MouseEvent.cpp:128)
&gt; 21  com.apple.WebCore             	0x0000000661f35189
&gt; WebCore::MouseEvent::~MouseEvent() + 25 (MouseEvent.cpp:128)
&gt; 22  com.apple.WebCore             	0x000000066011733f
&gt; WTF::RefCounted&lt;WebCore::Event&gt;::deref() const + 79 (RefCounted.h:145)
&gt; 23  com.apple.WebCore             	0x00000006601fc153
&gt; WTF::Ref&lt;WebCore::Event, WTF::DumbPtrTraits&lt;WebCore::Event&gt; &gt;::~Ref() + 51
&gt; (Ref.h:62)
&gt; 24  com.apple.WebCore             	0x00000006601f0e05
&gt; WTF::Ref&lt;WebCore::Event, WTF::DumbPtrTraits&lt;WebCore::Event&gt; &gt;::~Ref() + 21
&gt; (Ref.h:62)
&gt; 25  com.apple.WebCore             	0x000000066079ccf9
&gt; WebCore::JSDOMWrapper&lt;WebCore::Event&gt;::~JSDOMWrapper() + 25
&gt; (JSDOMWrapper.h:72)
&gt; 26  com.apple.WebCore             	0x000000066079ccd5
&gt; WebCore::JSEvent::~JSEvent() + 21 (JSEvent.h:30)
&gt; 27  com.apple.WebCore             	0x00000006607984e5
&gt; WebCore::JSEvent::~JSEvent() + 21 (JSEvent.h:30)
&gt; 28  com.apple.WebCore             	0x00000006607962dd
&gt; WebCore::JSEvent::destroy(JSC::JSCell*) + 29 (JSEvent.cpp:253)
&gt; 29  com.apple.JavaScriptCore      	0x0000000670eca2fa
&gt; JSC::JSDestructibleObjectDestroyFunc::operator()(JSC::VM&amp;, JSC::JSCell*)
&gt; const + 42 (JSDestructibleObjectHeapCellType.cpp:38)
&gt; 30  com.apple.JavaScriptCore      	0x0000000670ed16d5 void
&gt; JSC::MarkedBlock::Handle::specializedSweep&lt;false,
&gt; (JSC::MarkedBlock::Handle::EmptyMode)0,
&gt; (JSC::MarkedBlock::Handle::SweepMode)0,
&gt; (JSC::MarkedBlock::Handle::SweepDestructionMode)0,
&gt; (JSC::MarkedBlock::Handle::ScribbleMode)0,
&gt; (JSC::MarkedBlock::Handle::NewlyAllocatedMode)0,
&gt; (JSC::MarkedBlock::Handle::MarksMode)0,
&gt; JSC::JSDestructibleObjectDestroyFunc&gt;(JSC::FreeList*,
&gt; JSC::MarkedBlock::Handle::EmptyMode, JSC::MarkedBlock::Handle::SweepMode,
&gt; JSC::MarkedBlock::Handle::SweepDestructionMode,
&gt; JSC::MarkedBlock::Handle::ScribbleMode,
&gt; JSC::MarkedBlock::Handle::NewlyAllocatedMode,
&gt; JSC::MarkedBlock::Handle::MarksMode, JSC::JSDestructibleObjectDestroyFunc
&gt; const&amp;)::&apos;lambda&apos;(void*)::operator()(void*) const + 69
&gt; (MarkedBlockInlines.h:256)
&gt; 31  com.apple.JavaScriptCore      	0x0000000670ed1744 void
&gt; JSC::MarkedBlock::Handle::specializedSweep&lt;false,
&gt; (JSC::MarkedBlock::Handle::EmptyMode)0,
&gt; (JSC::MarkedBlock::Handle::SweepMode)0,
&gt; (JSC::MarkedBlock::Handle::SweepDestructionMode)0,
&gt; (JSC::MarkedBlock::Handle::ScribbleMode)0,
&gt; (JSC::MarkedBlock::Handle::NewlyAllocatedMode)0,
&gt; (JSC::MarkedBlock::Handle::MarksMode)0,
&gt; JSC::JSDestructibleObjectDestroyFunc&gt;(JSC::FreeList*,
&gt; JSC::MarkedBlock::Handle::EmptyMode, JSC::MarkedBlock::Handle::SweepMode,
&gt; JSC::MarkedBlock::Handle::SweepDestructionMode,
&gt; JSC::MarkedBlock::Handle::ScribbleMode,
&gt; JSC::MarkedBlock::Handle::NewlyAllocatedMode,
&gt; JSC::MarkedBlock::Handle::MarksMode, JSC::JSDestructibleObjectDestroyFunc
&gt; const&amp;)::&apos;lambda&apos;(unsigned long)::operator()(unsigned long) const + 84
&gt; (MarkedBlockInlines.h:316)
&gt; 32  com.apple.JavaScriptCore      	0x0000000670ecc4d6 void
&gt; JSC::MarkedBlock::Handle::specializedSweep&lt;false,
&gt; (JSC::MarkedBlock::Handle::EmptyMode)0,
&gt; (JSC::MarkedBlock::Handle::SweepMode)0,
&gt; (JSC::MarkedBlock::Handle::SweepDestructionMode)0,
&gt; (JSC::MarkedBlock::Handle::ScribbleMode)0,
&gt; (JSC::MarkedBlock::Handle::NewlyAllocatedMode)0,
&gt; (JSC::MarkedBlock::Handle::MarksMode)0,
&gt; JSC::JSDestructibleObjectDestroyFunc&gt;(JSC::FreeList*,
&gt; JSC::MarkedBlock::Handle::EmptyMode, JSC::MarkedBlock::Handle::SweepMode,
&gt; JSC::MarkedBlock::Handle::SweepDestructionMode,
&gt; JSC::MarkedBlock::Handle::ScribbleMode,
&gt; JSC::MarkedBlock::Handle::NewlyAllocatedMode,
&gt; JSC::MarkedBlock::Handle::MarksMode, JSC::JSDestructibleObjectDestroyFunc
&gt; const&amp;) + 1366 (MarkedBlockInlines.h:337)
&gt; 33  com.apple.JavaScriptCore      	0x0000000670eca290 void
&gt; JSC::MarkedBlock::Handle::finishSweepKnowingHeapCellType&lt;JSC::
&gt; JSDestructibleObjectDestroyFunc&gt;(JSC::FreeList*,
&gt; JSC::JSDestructibleObjectDestroyFunc const&amp;) + 304 (MarkedBlockInlines.h:432)
&gt; 34  com.apple.JavaScriptCore      	0x0000000670eca158
&gt; JSC::JSDestructibleObjectHeapCellType::finishSweep(JSC::MarkedBlock::Handle&amp;,
&gt; JSC::FreeList*) + 40 (JSDestructibleObjectHeapCellType.cpp:53)
&gt; 35  com.apple.JavaScriptCore      	0x0000000670a6c906
&gt; JSC::Subspace::finishSweep(JSC::MarkedBlock::Handle&amp;, JSC::FreeList*) + 70
&gt; (Subspace.cpp:66)
&gt; 36  com.apple.JavaScriptCore      	0x0000000670a51417
&gt; JSC::MarkedBlock::Handle::sweep(JSC::FreeList*) + 615 (MarkedBlock.cpp:432)
&gt; 37  com.apple.JavaScriptCore      	0x0000000670a46134
&gt; JSC::LocalAllocator::tryAllocateIn(JSC::MarkedBlock::Handle*) + 164
&gt; (LocalAllocator.cpp:260)
&gt; 38  com.apple.JavaScriptCore      	0x0000000670a45ec0
&gt; JSC::LocalAllocator::tryAllocateWithoutCollecting() + 224
&gt; (LocalAllocator.cpp:221)
&gt; 39  com.apple.JavaScriptCore      	0x0000000670a45b33
&gt; JSC::LocalAllocator::allocateSlowCase(JSC::GCDeferralContext*,
&gt; JSC::AllocationFailureMode) + 371 (LocalAllocator.cpp:168)
&gt; 40  com.apple.JavaScriptCore      	0x00000006709ec7b1
&gt; JSC::LocalAllocator::allocate(JSC::GCDeferralContext*,
&gt; JSC::AllocationFailureMode)::&apos;lambda&apos;()::operator()() const + 81
&gt; (LocalAllocatorInlines.h:37)
&gt; 41  com.apple.JavaScriptCore      	0x00000006709ec729 JSC::HeapCell*
&gt; JSC::FreeList::allocate&lt;JSC::LocalAllocator::allocate(JSC::
&gt; GCDeferralContext*,
&gt; JSC::AllocationFailureMode)::&apos;lambda&apos;()&gt;(JSC::LocalAllocator::allocate(JSC::
&gt; GCDeferralContext*, JSC::AllocationFailureMode)::&apos;lambda&apos;() const&amp;) + 169
&gt; (FreeListInlines.h:46)
&gt; 42  com.apple.JavaScriptCore      	0x00000006709ec5ce
&gt; JSC::LocalAllocator::allocate(JSC::GCDeferralContext*,
&gt; JSC::AllocationFailureMode) + 62 (LocalAllocatorInlines.h:34)
&gt; 43  com.apple.JavaScriptCore      	0x00000006709ecd21 void*
&gt; JSC::Allocator::tryAllocate&lt;JSC::CompleteSubspace::allocateNonVirtual(JSC::
&gt; VM&amp;, unsigned long, JSC::GCDeferralContext*,
&gt; JSC::AllocationFailureMode)::$_0&gt;(JSC::VM&amp;, JSC::GCDeferralContext*,
&gt; JSC::AllocationFailureMode,
&gt; JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long,
&gt; JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0 const&amp;)
&gt; const::&apos;lambda&apos;(JSC::LocalAllocator&amp;)::operator()(JSC::LocalAllocator&amp;)
&gt; const + 49 (AllocatorInlines.h:45)
&gt; 44  com.apple.JavaScriptCore      	0x00000006709ecccf void
&gt; JSC::ThreadLocalCache::tryGetAllocator&lt;void*
&gt; JSC::Allocator::tryAllocate&lt;JSC::CompleteSubspace::allocateNonVirtual(JSC::
&gt; VM&amp;, unsigned long, JSC::GCDeferralContext*,
&gt; JSC::AllocationFailureMode)::$_0&gt;(JSC::VM&amp;, JSC::GCDeferralContext*,
&gt; JSC::AllocationFailureMode,
&gt; JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long,
&gt; JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0 const&amp;)
&gt; const::&apos;lambda&apos;(JSC::LocalAllocator&amp;), void*
&gt; JSC::Allocator::tryAllocate&lt;JSC::CompleteSubspace::allocateNonVirtual(JSC::
&gt; VM&amp;, unsigned long, JSC::GCDeferralContext*,
&gt; JSC::AllocationFailureMode)::$_0&gt;(JSC::VM&amp;, JSC::GCDeferralContext*,
&gt; JSC::AllocationFailureMode,
&gt; JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long,
&gt; JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0 const&amp;)
&gt; const::&apos;lambda&apos;()&gt;(JSC::VM&amp;, unsigned long,
&gt; JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long,
&gt; JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0 const&amp;, void*
&gt; JSC::Allocator::tryAllocate&lt;JSC::CompleteSubspace::allocateNonVirtual(JSC::
&gt; VM&amp;, unsigned long, JSC::GCDeferralContext*,
&gt; JSC::AllocationFailureMode)::$_0&gt;(JSC::VM&amp;, JSC::GCDeferralContext*,
&gt; JSC::AllocationFailureMode,
&gt; JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long,
&gt; JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0 const&amp;)
&gt; const::&apos;lambda&apos;() const&amp;) + 111 (ThreadLocalCacheInlines.h:74)
&gt; 45  com.apple.JavaScriptCore      	0x00000006709ea53f void*
&gt; JSC::Allocator::tryAllocate&lt;JSC::CompleteSubspace::allocateNonVirtual(JSC::
&gt; VM&amp;, unsigned long, JSC::GCDeferralContext*,
&gt; JSC::AllocationFailureMode)::$_0&gt;(JSC::VM&amp;, JSC::GCDeferralContext*,
&gt; JSC::AllocationFailureMode,
&gt; JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long,
&gt; JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0 const&amp;) const + 95
&gt; (AllocatorInlines.h:50)
&gt; 46  com.apple.JavaScriptCore      	0x00000006709ea4d0
&gt; JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long,
&gt; JSC::GCDeferralContext*, JSC::AllocationFailureMode) + 128
&gt; (CompleteSubspace.cpp:64)
&gt; 47  com.apple.JavaScriptCore      	0x0000000670f02ac4 void*
&gt; JSC::tryAllocateCellHelper&lt;JSC::JSProxy&gt;(JSC::Heap&amp;, unsigned long,
&gt; JSC::GCDeferralContext*, JSC::AllocationFailureMode) + 196
&gt; (JSCellInlines.h:151)
&gt; 48  com.apple.JavaScriptCore      	0x0000000670f02963 void*
&gt; JSC::allocateCell&lt;JSC::JSProxy&gt;(JSC::Heap&amp;, unsigned long) + 35
&gt; (JSCellInlines.h:165)
&gt; 49  com.apple.JavaScriptCore      	0x0000000670ef848e
&gt; JSC::JSProxy::create(JSC::VM&amp;, JSC::Structure*, JSC::JSObject*) + 46
&gt; (JSProxy.h:39)
&gt; 50  com.apple.JavaScriptCore      	0x0000000670ef757f
&gt; JSC::JSGlobalObject::resetPrototype(JSC::VM&amp;, JSC::JSValue) + 239
&gt; (JSGlobalObject.cpp:1313)
&gt; 51  com.apple.JavaScriptCore      	0x0000000670eecbbc
&gt; JSC::JSGlobalObject::init(JSC::VM&amp;) + 77036 (JSGlobalObject.cpp:1084)
&gt; 52  com.apple.JavaScriptCore      	0x0000000670ef9bac
&gt; JSC::JSGlobalObject::finishCreation(JSC::VM&amp;, JSC::JSObject*) + 124
&gt; (JSGlobalObject.cpp:1624)
&gt; 53  com.apple.WebCore             	0x000000066194c09a
&gt; WebCore::JSDOMGlobalObject::finishCreation(JSC::VM&amp;, JSC::JSObject*) + 58
&gt; (JSDOMGlobalObject.cpp:190)
&gt; 54  com.apple.WebCore             	0x0000000661960438
&gt; WebCore::JSDOMWindowBase::finishCreation(JSC::VM&amp;, WebCore::JSWindowProxy*)
&gt; + 72 (JSDOMWindowBase.cpp:92)
&gt; 55  com.apple.WebCore             	0x00000006605c5096
&gt; WebCore::JSDOMWindow::finishCreation(JSC::VM&amp;, WebCore::JSWindowProxy*) + 70
&gt; (JSDOMWindow.cpp:6129)
&gt; 56  com.apple.WebCore             	0x00000006619a7574
&gt; WebCore::JSDOMWindow::create(JSC::VM&amp;, JSC::Structure*,
&gt; WTF::Ref&lt;WebCore::DOMWindow, WTF::DumbPtrTraits&lt;WebCore::DOMWindow&gt; &gt;&amp;&amp;,
&gt; WebCore::JSWindowProxy*) + 148 (JSDOMWindow.h:40)
&gt; 57  com.apple.WebCore             	0x00000006619a6b43
&gt; WebCore::JSWindowProxy::setWindow(WebCore::AbstractDOMWindow&amp;) + 675
&gt; (JSWindowProxy.cpp:107)
&gt; 58  com.apple.WebCore             	0x00000006619d5b60
&gt; WebCore::WindowProxy::setDOMWindow(WebCore::AbstractDOMWindow*) + 272
&gt; (WindowProxy.cpp:153)
&gt; 59  com.apple.WebCore             	0x000000066260c62b
&gt; WebCore::FrameLoader::clear(WebCore::Document*, bool, bool, bool) + 699
&gt; (FrameLoader.cpp:653)
&gt; 60  com.apple.WebCore             	0x000000066260bad0
&gt; WebCore::DocumentWriter::begin(WebCore::URL const&amp;, bool,
&gt; WebCore::Document*) + 592 (DocumentWriter.cpp:162)
&gt; 61  com.apple.WebCore             	0x00000006625cf3ae
&gt; WebCore::DocumentLoader::commitData(char const*, unsigned long) + 142
&gt; (DocumentLoader.cpp:994)
&gt; 62  com.apple.WebKit              	0x000000010143428f
&gt; WebKit::WebFrameLoaderClient::committedLoad(WebCore::DocumentLoader*, char
&gt; const*, int) + 79 (WebFrameLoaderClient.cpp:1021)
&gt; 63  com.apple.WebCore             	0x00000006625d4bdd
&gt; WebCore::DocumentLoader::commitLoad(char const*, int) + 205
&gt; (DocumentLoader.cpp:965)
&gt; 64  com.apple.WebCore             	0x00000006625d4aff
&gt; WebCore::DocumentLoader::dataReceived(char const*, int) + 511
&gt; (DocumentLoader.cpp:1105)
&gt; 65  com.apple.WebCore             	0x00000006625d52b4
&gt; WebCore::DocumentLoader::dataReceived(WebCore::CachedResource&amp;, char const*,
&gt; int) + 116 (DocumentLoader.cpp:1078)
&gt; 66  com.apple.WebCore             	0x00000006625d52fa non-virtual thunk to
&gt; WebCore::DocumentLoader::dataReceived(WebCore::CachedResource&amp;, char const*,
&gt; int) + 58
&gt; 67  com.apple.WebCore             	0x00000006626fc558
&gt; WebCore::CachedRawResource::notifyClientsDataWasReceived(char const*,
&gt; unsigned int) + 152 (CachedRawResource.cpp:132)
&gt; 68  com.apple.WebCore             	0x00000006626fc348
&gt; WebCore::CachedRawResource::updateBuffer(WebCore::SharedBuffer&amp;) + 344
&gt; (CachedRawResource.cpp:71)
&gt; 69  com.apple.WebCore             	0x00000006626975aa
&gt; WebCore::SubresourceLoader::didReceiveDataOrBuffer(char const*, int,
&gt; WTF::RefPtr&lt;WebCore::SharedBuffer, WTF::DumbPtrTraits&lt;WebCore::SharedBuffer&gt;
&gt; &gt;&amp;&amp;, long long, WebCore::DataPayloadType) + 538 (SubresourceLoader.cpp:450)
&gt; 70  com.apple.WebCore             	0x0000000662697372
&gt; WebCore::SubresourceLoader::didReceiveData(char const*, unsigned int, long
&gt; long, WebCore::DataPayloadType) + 98 (SubresourceLoader.cpp:418)
&gt; 71  com.apple.WebKit              	0x00000001018b7534
&gt; WebKit::WebResourceLoader::didReceiveData(IPC::DataReference const&amp;, long
&gt; long) + 564 (WebResourceLoader.cpp:143)
&gt; 72  com.apple.WebKit              	0x00000001018bba00 void
&gt; IPC::callMemberFunctionImpl&lt;WebKit::WebResourceLoader, void
&gt; (WebKit::WebResourceLoader::*)(IPC::DataReference const&amp;, long long),
&gt; std::__1::tuple&lt;IPC::DataReference, long long&gt;, 0ul,
&gt; 1ul&gt;(WebKit::WebResourceLoader*, void
&gt; (WebKit::WebResourceLoader::*)(IPC::DataReference const&amp;, long long),
&gt; std::__1::tuple&lt;IPC::DataReference, long long&gt;&amp;&amp;,
&gt; std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul&gt;) + 192
&gt; (HandleMessage.h:41)
&gt; 73  com.apple.WebKit              	0x00000001018bb930 void
&gt; IPC::callMemberFunction&lt;WebKit::WebResourceLoader, void
&gt; (WebKit::WebResourceLoader::*)(IPC::DataReference const&amp;, long long),
&gt; std::__1::tuple&lt;IPC::DataReference, long long&gt;,
&gt; std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul&gt;
&gt; &gt;(std::__1::tuple&lt;IPC::DataReference, long long&gt;&amp;&amp;,
&gt; WebKit::WebResourceLoader*, void
&gt; (WebKit::WebResourceLoader::*)(IPC::DataReference const&amp;, long long)) + 96
&gt; (HandleMessage.h:47)
&gt; 74  com.apple.WebKit              	0x00000001018bacc1 void
&gt; IPC::handleMessage&lt;Messages::WebResourceLoader::DidReceiveData,
&gt; WebKit::WebResourceLoader, void
&gt; (WebKit::WebResourceLoader::*)(IPC::DataReference const&amp;, long
&gt; long)&gt;(IPC::Decoder&amp;, WebKit::WebResourceLoader*, void
&gt; (WebKit::WebResourceLoader::*)(IPC::DataReference const&amp;, long long)) + 289
&gt; (HandleMessage.h:127)
&gt; 75  com.apple.WebKit              	0x00000001018ba3f6
&gt; WebKit::WebResourceLoader::didReceiveWebResourceLoaderMessage(IPC::
&gt; Connection&amp;, IPC::Decoder&amp;) + 502 (WebResourceLoaderMessageReceiver.cpp:62)
&gt; 76  com.apple.WebKit              	0x0000000100e7e429
&gt; WebKit::NetworkProcessConnection::didReceiveMessage(IPC::Connection&amp;,
&gt; IPC::Decoder&amp;) + 169 (NetworkProcessConnection.cpp:71)
&gt; 77  com.apple.WebKit              	0x0000000100bdced3
&gt; IPC::Connection::dispatchMessage(IPC::Decoder&amp;) + 51 (Connection.cpp:907)
&gt; 78  com.apple.WebKit              	0x0000000100bd2488
&gt; IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder,
&gt; std::__1::default_delete&lt;IPC::Decoder&gt; &gt;) + 712
&gt; 79  com.apple.WebKit              	0x0000000100bdd4da
&gt; IPC::Connection::dispatchOneMessage() + 1530 (Connection.cpp:964)
&gt; 80  com.apple.WebKit              	0x0000000100bf579d
&gt; IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder,
&gt; std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_14::operator()() + 29
&gt; (Connection.cpp:901)
&gt; 81  com.apple.WebKit              	0x0000000100bf56f9 WTF::Function&lt;void
&gt; ()&gt;::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::__1::
&gt; unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt;
&gt; &gt;)::$_14&gt;::call() + 25 (Function.h:101)
&gt; 82  com.apple.JavaScriptCore      	0x000000066fc90c1b WTF::Function&lt;void
&gt; ()&gt;::operator()() const + 139 (Function.h:56)
&gt; 83  com.apple.JavaScriptCore      	0x000000066fce28e3
&gt; WTF::RunLoop::performWork() + 211 (RunLoop.cpp:107)
&gt; 84  com.apple.JavaScriptCore      	0x000000066fce31e4
&gt; WTF::RunLoop::performWork(void*) + 36 (RunLoopCF.cpp:38)
&gt; 85  com.apple.CoreFoundation      	0x00007fff4c987a61
&gt; __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
&gt; 86  com.apple.CoreFoundation      	0x00007fff4ca4147c __CFRunLoopDoSource0 +
&gt; 108
&gt; 87  com.apple.CoreFoundation      	0x00007fff4c96a4c0 __CFRunLoopDoSources0
&gt; + 208
&gt; 88  com.apple.CoreFoundation      	0x00007fff4c96993d __CFRunLoopRun + 1293
&gt; 89  com.apple.CoreFoundation      	0x00007fff4c9691a3 CFRunLoopRunSpecific +
&gt; 483
&gt; 90  com.apple.HIToolbox           	0x00007fff4bc51d96
&gt; RunCurrentEventLoopInMode + 286
&gt; 91  com.apple.HIToolbox           	0x00007fff4bc51b06 ReceiveNextEventCommon
&gt; + 613
&gt; 92  com.apple.HIToolbox           	0x00007fff4bc51884
&gt; _BlockUntilNextEventMatchingListInModeWithFilter + 64
&gt; 93  com.apple.AppKit              	0x00007fff49f04b53 _DPSNextEvent + 2085
&gt; 94  com.apple.AppKit              	0x00007fff4a69aeb0
&gt; -[NSApplication(NSEvent)
&gt; _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 3044
&gt; 95  com.apple.AppKit              	0x00007fff49ef9965 -[NSApplication run] +
&gt; 764
&gt; 96  com.apple.AppKit              	0x00007fff49ec8b3e NSApplicationMain + 804
&gt; 97  libxpc.dylib                  	0x00007fff75144f57 _xpc_objc_main + 580
&gt; 98  libxpc.dylib                  	0x00007fff75143baa xpc_main + 417
&gt; 99  com.apple.WebKit.WebContent   	0x0000000100a7813b main + 1195
&gt; (XPCServiceMain.mm:160)
&gt; 100 libdyld.dylib                 	0x00007fff74dea015 start + 1

classInfo looks like:
ALWAYS_INLINE const ClassInfo* JSCell::classInfo(VM&amp; vm) const
{
    // What we really want to assert here is that we&apos;re not currently destructing this object (which makes its classInfo
    // invalid). If mutatorState() == MutatorState::Running, then we&apos;re not currently sweeping, and therefore cannot be
    // destructing the object. The GC thread or JIT threads, unlike the mutator thread, are able to access classInfo
    // independent of whether the mutator thread is sweeping or not. Hence, we also check for !currentThreadIsHoldingAPILock()
    // to allow the GC thread or JIT threads to pass this assertion.
    ASSERT(vm.heap.mutatorState() != MutatorState::Sweeping || !vm.currentThreadIsHoldingAPILock());
    return structure(vm)-&gt;classInfo();
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418422</commentid>
    <comment_count>29</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-26 22:16:32 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #28)
&gt; (In reply to Chris Dumez from comment #27)
&gt; &gt; (In reply to Chris Dumez from comment #26)
&gt; &gt; &gt; Comment on attachment 338902 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=338902&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt; Source/WebCore/bindings/js/WindowProxy.cpp:-61
&gt; &gt; &gt; &gt;&gt; -            it-&gt;value-&gt;window()-&gt;setConsoleClient(nullptr);
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; What prompted this change?
&gt; &gt; &gt; 
&gt; &gt; &gt; JSWindowProxy::window() does a jsCast, which is not allowed during sweeping
&gt; &gt; &gt; :/ It is for the same reason that I had to clear all proxies in the Frame
&gt; &gt; &gt; destructor. I gave some more details in the change log. I will try and find
&gt; &gt; &gt; a better way to address. Let me know if you have an idea.
&gt; &gt; 
&gt; &gt; FYI crash log looks like:
&gt; &gt; Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
&gt; &gt; 0   com.apple.JavaScriptCore      	0x000000066fc6c3d0 WTFCrash + 16
&gt; &gt; (Assertions.cpp:261)
&gt; &gt; 1   com.apple.WebCore             	0x0000000660096b5b
&gt; &gt; JSC::JSCell::classInfo(JSC::VM&amp;) const + 107 (JSCellInlines.h:297)
&gt; &gt; 2   com.apple.WebCore             	0x0000000660096ac1
&gt; &gt; JSC::JSCell::inherits(JSC::VM&amp;, JSC::ClassInfo const*) const + 33
&gt; &gt; (JSCellInlines.h:265)
&gt; &gt; 3   com.apple.WebCore             	0x0000000660370494
&gt; &gt; WebCore::JSDOMGlobalObject* JSC::jsCast&lt;WebCore::JSDOMGlobalObject*,
&gt; &gt; JSC::JSObject&gt;(JSC::JSObject*) + 68 (JSCast.h:36)
&gt; &gt; 4   com.apple.WebCore             	0x000000066036f14d
&gt; &gt; WebCore::JSWindowProxy::window() const + 29 (JSWindowProxy.h:53)
&gt; &gt; 5   com.apple.WebCore             	0x00000006619b0e57
&gt; &gt; WebCore::ScriptController::enableEval() + 71 (ScriptController.cpp:346)
&gt; &gt; 6   com.apple.WebCore             	0x000000066260c65d
&gt; &gt; WebCore::FrameLoader::clear(WebCore::Document*, bool, bool, bool) + 749
&gt; &gt; (FrameLoader.cpp:658)
&gt; &gt; 7   com.apple.WebCore             	0x000000066261bfac
&gt; &gt; WebCore::FrameLoader::cancelAndClear() + 108 (FrameLoader.cpp:597)
&gt; &gt; 8   com.apple.WebCore             	0x00000006627d4c49
&gt; &gt; WebCore::Frame::~Frame() + 89 (Frame.cpp:217)
&gt; &gt; 9   com.apple.WebCore             	0x00000006627d52a5
&gt; &gt; WebCore::Frame::~Frame() + 21 (Frame.cpp:232)
&gt; &gt; 10  com.apple.WebCore             	0x00000006627d52c9
&gt; &gt; WebCore::Frame::~Frame() + 25 (Frame.cpp:214)
&gt; &gt; 11  com.apple.WebCore             	0x000000066042dbbf
&gt; &gt; WTF::ThreadSafeRefCounted&lt;WebCore::AbstractFrame,
&gt; &gt; (WTF::DestructionThread)0&gt;::deref() const + 79 (ThreadSafeRefCounted.h:77)
&gt; &gt; 12  com.apple.WebCore             	0x00000006619d611c
&gt; &gt; WebCore::WindowProxy::deref() + 28 (WindowProxy.cpp:192)
&gt; &gt; 13  com.apple.WebCore             	0x00000006604e6e9e void
&gt; &gt; WTF::derefIfNotNull&lt;WebCore::WindowProxy&gt;(WebCore::WindowProxy*) + 46
&gt; &gt; (RefPtr.h:46)
&gt; &gt; 14  com.apple.WebCore             	0x00000006604e6e69
&gt; &gt; WTF::RefPtr&lt;WebCore::WindowProxy, WTF::DumbPtrTraits&lt;WebCore::WindowProxy&gt;
&gt; &gt; &gt;::~RefPtr() + 41 (RefPtr.h:70)
&gt; &gt; 15  com.apple.WebCore             	0x00000006604e6e35
&gt; &gt; WTF::RefPtr&lt;WebCore::WindowProxy, WTF::DumbPtrTraits&lt;WebCore::WindowProxy&gt;
&gt; &gt; &gt;::~RefPtr() + 21 (RefPtr.h:70)
&gt; &gt; 16  com.apple.WebCore             	0x0000000661ffe881
&gt; &gt; WebCore::UIEvent::~UIEvent() + 49 (UIEvent.cpp:56)
&gt; &gt; 17  com.apple.WebCore             	0x0000000661f0dce5
&gt; &gt; WebCore::UIEventWithKeyState::~UIEventWithKeyState() + 21
&gt; &gt; (UIEventWithKeyState.h:31)
&gt; &gt; 18  com.apple.WebCore             	0x0000000661f35145
&gt; &gt; WebCore::MouseRelatedEvent::~MouseRelatedEvent() + 21
&gt; &gt; (MouseRelatedEvent.h:39)
&gt; &gt; 19  com.apple.WebCore             	0x0000000661f35121
&gt; &gt; WebCore::MouseEvent::~MouseEvent() + 81 (MouseEvent.cpp:128)
&gt; &gt; 20  com.apple.WebCore             	0x0000000661f35165
&gt; &gt; WebCore::MouseEvent::~MouseEvent() + 21 (MouseEvent.cpp:128)
&gt; &gt; 21  com.apple.WebCore             	0x0000000661f35189
&gt; &gt; WebCore::MouseEvent::~MouseEvent() + 25 (MouseEvent.cpp:128)
&gt; &gt; 22  com.apple.WebCore             	0x000000066011733f
&gt; &gt; WTF::RefCounted&lt;WebCore::Event&gt;::deref() const + 79 (RefCounted.h:145)
&gt; &gt; 23  com.apple.WebCore             	0x00000006601fc153
&gt; &gt; WTF::Ref&lt;WebCore::Event, WTF::DumbPtrTraits&lt;WebCore::Event&gt; &gt;::~Ref() + 51
&gt; &gt; (Ref.h:62)
&gt; &gt; 24  com.apple.WebCore             	0x00000006601f0e05
&gt; &gt; WTF::Ref&lt;WebCore::Event, WTF::DumbPtrTraits&lt;WebCore::Event&gt; &gt;::~Ref() + 21
&gt; &gt; (Ref.h:62)
&gt; &gt; 25  com.apple.WebCore             	0x000000066079ccf9
&gt; &gt; WebCore::JSDOMWrapper&lt;WebCore::Event&gt;::~JSDOMWrapper() + 25
&gt; &gt; (JSDOMWrapper.h:72)
&gt; &gt; 26  com.apple.WebCore             	0x000000066079ccd5
&gt; &gt; WebCore::JSEvent::~JSEvent() + 21 (JSEvent.h:30)
&gt; &gt; 27  com.apple.WebCore             	0x00000006607984e5
&gt; &gt; WebCore::JSEvent::~JSEvent() + 21 (JSEvent.h:30)
&gt; &gt; 28  com.apple.WebCore             	0x00000006607962dd
&gt; &gt; WebCore::JSEvent::destroy(JSC::JSCell*) + 29 (JSEvent.cpp:253)
&gt; &gt; 29  com.apple.JavaScriptCore      	0x0000000670eca2fa
&gt; &gt; JSC::JSDestructibleObjectDestroyFunc::operator()(JSC::VM&amp;, JSC::JSCell*)
&gt; &gt; const + 42 (JSDestructibleObjectHeapCellType.cpp:38)
&gt; &gt; 30  com.apple.JavaScriptCore      	0x0000000670ed16d5 void
&gt; &gt; JSC::MarkedBlock::Handle::specializedSweep&lt;false,
&gt; &gt; (JSC::MarkedBlock::Handle::EmptyMode)0,
&gt; &gt; (JSC::MarkedBlock::Handle::SweepMode)0,
&gt; &gt; (JSC::MarkedBlock::Handle::SweepDestructionMode)0,
&gt; &gt; (JSC::MarkedBlock::Handle::ScribbleMode)0,
&gt; &gt; (JSC::MarkedBlock::Handle::NewlyAllocatedMode)0,
&gt; &gt; (JSC::MarkedBlock::Handle::MarksMode)0,
&gt; &gt; JSC::JSDestructibleObjectDestroyFunc&gt;(JSC::FreeList*,
&gt; &gt; JSC::MarkedBlock::Handle::EmptyMode, JSC::MarkedBlock::Handle::SweepMode,
&gt; &gt; JSC::MarkedBlock::Handle::SweepDestructionMode,
&gt; &gt; JSC::MarkedBlock::Handle::ScribbleMode,
&gt; &gt; JSC::MarkedBlock::Handle::NewlyAllocatedMode,
&gt; &gt; JSC::MarkedBlock::Handle::MarksMode, JSC::JSDestructibleObjectDestroyFunc
&gt; &gt; const&amp;)::&apos;lambda&apos;(void*)::operator()(void*) const + 69
&gt; &gt; (MarkedBlockInlines.h:256)
&gt; &gt; 31  com.apple.JavaScriptCore      	0x0000000670ed1744 void
&gt; &gt; JSC::MarkedBlock::Handle::specializedSweep&lt;false,
&gt; &gt; (JSC::MarkedBlock::Handle::EmptyMode)0,
&gt; &gt; (JSC::MarkedBlock::Handle::SweepMode)0,
&gt; &gt; (JSC::MarkedBlock::Handle::SweepDestructionMode)0,
&gt; &gt; (JSC::MarkedBlock::Handle::ScribbleMode)0,
&gt; &gt; (JSC::MarkedBlock::Handle::NewlyAllocatedMode)0,
&gt; &gt; (JSC::MarkedBlock::Handle::MarksMode)0,
&gt; &gt; JSC::JSDestructibleObjectDestroyFunc&gt;(JSC::FreeList*,
&gt; &gt; JSC::MarkedBlock::Handle::EmptyMode, JSC::MarkedBlock::Handle::SweepMode,
&gt; &gt; JSC::MarkedBlock::Handle::SweepDestructionMode,
&gt; &gt; JSC::MarkedBlock::Handle::ScribbleMode,
&gt; &gt; JSC::MarkedBlock::Handle::NewlyAllocatedMode,
&gt; &gt; JSC::MarkedBlock::Handle::MarksMode, JSC::JSDestructibleObjectDestroyFunc
&gt; &gt; const&amp;)::&apos;lambda&apos;(unsigned long)::operator()(unsigned long) const + 84
&gt; &gt; (MarkedBlockInlines.h:316)
&gt; &gt; 32  com.apple.JavaScriptCore      	0x0000000670ecc4d6 void
&gt; &gt; JSC::MarkedBlock::Handle::specializedSweep&lt;false,
&gt; &gt; (JSC::MarkedBlock::Handle::EmptyMode)0,
&gt; &gt; (JSC::MarkedBlock::Handle::SweepMode)0,
&gt; &gt; (JSC::MarkedBlock::Handle::SweepDestructionMode)0,
&gt; &gt; (JSC::MarkedBlock::Handle::ScribbleMode)0,
&gt; &gt; (JSC::MarkedBlock::Handle::NewlyAllocatedMode)0,
&gt; &gt; (JSC::MarkedBlock::Handle::MarksMode)0,
&gt; &gt; JSC::JSDestructibleObjectDestroyFunc&gt;(JSC::FreeList*,
&gt; &gt; JSC::MarkedBlock::Handle::EmptyMode, JSC::MarkedBlock::Handle::SweepMode,
&gt; &gt; JSC::MarkedBlock::Handle::SweepDestructionMode,
&gt; &gt; JSC::MarkedBlock::Handle::ScribbleMode,
&gt; &gt; JSC::MarkedBlock::Handle::NewlyAllocatedMode,
&gt; &gt; JSC::MarkedBlock::Handle::MarksMode, JSC::JSDestructibleObjectDestroyFunc
&gt; &gt; const&amp;) + 1366 (MarkedBlockInlines.h:337)
&gt; &gt; 33  com.apple.JavaScriptCore      	0x0000000670eca290 void
&gt; &gt; JSC::MarkedBlock::Handle::finishSweepKnowingHeapCellType&lt;JSC::
&gt; &gt; JSDestructibleObjectDestroyFunc&gt;(JSC::FreeList*,
&gt; &gt; JSC::JSDestructibleObjectDestroyFunc const&amp;) + 304 (MarkedBlockInlines.h:432)
&gt; &gt; 34  com.apple.JavaScriptCore      	0x0000000670eca158
&gt; &gt; JSC::JSDestructibleObjectHeapCellType::finishSweep(JSC::MarkedBlock::Handle&amp;,
&gt; &gt; JSC::FreeList*) + 40 (JSDestructibleObjectHeapCellType.cpp:53)
&gt; &gt; 35  com.apple.JavaScriptCore      	0x0000000670a6c906
&gt; &gt; JSC::Subspace::finishSweep(JSC::MarkedBlock::Handle&amp;, JSC::FreeList*) + 70
&gt; &gt; (Subspace.cpp:66)
&gt; &gt; 36  com.apple.JavaScriptCore      	0x0000000670a51417
&gt; &gt; JSC::MarkedBlock::Handle::sweep(JSC::FreeList*) + 615 (MarkedBlock.cpp:432)
&gt; &gt; 37  com.apple.JavaScriptCore      	0x0000000670a46134
&gt; &gt; JSC::LocalAllocator::tryAllocateIn(JSC::MarkedBlock::Handle*) + 164
&gt; &gt; (LocalAllocator.cpp:260)
&gt; &gt; 38  com.apple.JavaScriptCore      	0x0000000670a45ec0
&gt; &gt; JSC::LocalAllocator::tryAllocateWithoutCollecting() + 224
&gt; &gt; (LocalAllocator.cpp:221)
&gt; &gt; 39  com.apple.JavaScriptCore      	0x0000000670a45b33
&gt; &gt; JSC::LocalAllocator::allocateSlowCase(JSC::GCDeferralContext*,
&gt; &gt; JSC::AllocationFailureMode) + 371 (LocalAllocator.cpp:168)
&gt; &gt; 40  com.apple.JavaScriptCore      	0x00000006709ec7b1
&gt; &gt; JSC::LocalAllocator::allocate(JSC::GCDeferralContext*,
&gt; &gt; JSC::AllocationFailureMode)::&apos;lambda&apos;()::operator()() const + 81
&gt; &gt; (LocalAllocatorInlines.h:37)
&gt; &gt; 41  com.apple.JavaScriptCore      	0x00000006709ec729 JSC::HeapCell*
&gt; &gt; JSC::FreeList::allocate&lt;JSC::LocalAllocator::allocate(JSC::
&gt; &gt; GCDeferralContext*,
&gt; &gt; JSC::AllocationFailureMode)::&apos;lambda&apos;()&gt;(JSC::LocalAllocator::allocate(JSC::
&gt; &gt; GCDeferralContext*, JSC::AllocationFailureMode)::&apos;lambda&apos;() const&amp;) + 169
&gt; &gt; (FreeListInlines.h:46)
&gt; &gt; 42  com.apple.JavaScriptCore      	0x00000006709ec5ce
&gt; &gt; JSC::LocalAllocator::allocate(JSC::GCDeferralContext*,
&gt; &gt; JSC::AllocationFailureMode) + 62 (LocalAllocatorInlines.h:34)
&gt; &gt; 43  com.apple.JavaScriptCore      	0x00000006709ecd21 void*
&gt; &gt; JSC::Allocator::tryAllocate&lt;JSC::CompleteSubspace::allocateNonVirtual(JSC::
&gt; &gt; VM&amp;, unsigned long, JSC::GCDeferralContext*,
&gt; &gt; JSC::AllocationFailureMode)::$_0&gt;(JSC::VM&amp;, JSC::GCDeferralContext*,
&gt; &gt; JSC::AllocationFailureMode,
&gt; &gt; JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long,
&gt; &gt; JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0 const&amp;)
&gt; &gt; const::&apos;lambda&apos;(JSC::LocalAllocator&amp;)::operator()(JSC::LocalAllocator&amp;)
&gt; &gt; const + 49 (AllocatorInlines.h:45)
&gt; &gt; 44  com.apple.JavaScriptCore      	0x00000006709ecccf void
&gt; &gt; JSC::ThreadLocalCache::tryGetAllocator&lt;void*
&gt; &gt; JSC::Allocator::tryAllocate&lt;JSC::CompleteSubspace::allocateNonVirtual(JSC::
&gt; &gt; VM&amp;, unsigned long, JSC::GCDeferralContext*,
&gt; &gt; JSC::AllocationFailureMode)::$_0&gt;(JSC::VM&amp;, JSC::GCDeferralContext*,
&gt; &gt; JSC::AllocationFailureMode,
&gt; &gt; JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long,
&gt; &gt; JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0 const&amp;)
&gt; &gt; const::&apos;lambda&apos;(JSC::LocalAllocator&amp;), void*
&gt; &gt; JSC::Allocator::tryAllocate&lt;JSC::CompleteSubspace::allocateNonVirtual(JSC::
&gt; &gt; VM&amp;, unsigned long, JSC::GCDeferralContext*,
&gt; &gt; JSC::AllocationFailureMode)::$_0&gt;(JSC::VM&amp;, JSC::GCDeferralContext*,
&gt; &gt; JSC::AllocationFailureMode,
&gt; &gt; JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long,
&gt; &gt; JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0 const&amp;)
&gt; &gt; const::&apos;lambda&apos;()&gt;(JSC::VM&amp;, unsigned long,
&gt; &gt; JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long,
&gt; &gt; JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0 const&amp;, void*
&gt; &gt; JSC::Allocator::tryAllocate&lt;JSC::CompleteSubspace::allocateNonVirtual(JSC::
&gt; &gt; VM&amp;, unsigned long, JSC::GCDeferralContext*,
&gt; &gt; JSC::AllocationFailureMode)::$_0&gt;(JSC::VM&amp;, JSC::GCDeferralContext*,
&gt; &gt; JSC::AllocationFailureMode,
&gt; &gt; JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long,
&gt; &gt; JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0 const&amp;)
&gt; &gt; const::&apos;lambda&apos;() const&amp;) + 111 (ThreadLocalCacheInlines.h:74)
&gt; &gt; 45  com.apple.JavaScriptCore      	0x00000006709ea53f void*
&gt; &gt; JSC::Allocator::tryAllocate&lt;JSC::CompleteSubspace::allocateNonVirtual(JSC::
&gt; &gt; VM&amp;, unsigned long, JSC::GCDeferralContext*,
&gt; &gt; JSC::AllocationFailureMode)::$_0&gt;(JSC::VM&amp;, JSC::GCDeferralContext*,
&gt; &gt; JSC::AllocationFailureMode,
&gt; &gt; JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long,
&gt; &gt; JSC::GCDeferralContext*, JSC::AllocationFailureMode)::$_0 const&amp;) const + 95
&gt; &gt; (AllocatorInlines.h:50)
&gt; &gt; 46  com.apple.JavaScriptCore      	0x00000006709ea4d0
&gt; &gt; JSC::CompleteSubspace::allocateNonVirtual(JSC::VM&amp;, unsigned long,
&gt; &gt; JSC::GCDeferralContext*, JSC::AllocationFailureMode) + 128
&gt; &gt; (CompleteSubspace.cpp:64)
&gt; &gt; 47  com.apple.JavaScriptCore      	0x0000000670f02ac4 void*
&gt; &gt; JSC::tryAllocateCellHelper&lt;JSC::JSProxy&gt;(JSC::Heap&amp;, unsigned long,
&gt; &gt; JSC::GCDeferralContext*, JSC::AllocationFailureMode) + 196
&gt; &gt; (JSCellInlines.h:151)
&gt; &gt; 48  com.apple.JavaScriptCore      	0x0000000670f02963 void*
&gt; &gt; JSC::allocateCell&lt;JSC::JSProxy&gt;(JSC::Heap&amp;, unsigned long) + 35
&gt; &gt; (JSCellInlines.h:165)
&gt; &gt; 49  com.apple.JavaScriptCore      	0x0000000670ef848e
&gt; &gt; JSC::JSProxy::create(JSC::VM&amp;, JSC::Structure*, JSC::JSObject*) + 46
&gt; &gt; (JSProxy.h:39)
&gt; &gt; 50  com.apple.JavaScriptCore      	0x0000000670ef757f
&gt; &gt; JSC::JSGlobalObject::resetPrototype(JSC::VM&amp;, JSC::JSValue) + 239
&gt; &gt; (JSGlobalObject.cpp:1313)
&gt; &gt; 51  com.apple.JavaScriptCore      	0x0000000670eecbbc
&gt; &gt; JSC::JSGlobalObject::init(JSC::VM&amp;) + 77036 (JSGlobalObject.cpp:1084)
&gt; &gt; 52  com.apple.JavaScriptCore      	0x0000000670ef9bac
&gt; &gt; JSC::JSGlobalObject::finishCreation(JSC::VM&amp;, JSC::JSObject*) + 124
&gt; &gt; (JSGlobalObject.cpp:1624)
&gt; &gt; 53  com.apple.WebCore             	0x000000066194c09a
&gt; &gt; WebCore::JSDOMGlobalObject::finishCreation(JSC::VM&amp;, JSC::JSObject*) + 58
&gt; &gt; (JSDOMGlobalObject.cpp:190)
&gt; &gt; 54  com.apple.WebCore             	0x0000000661960438
&gt; &gt; WebCore::JSDOMWindowBase::finishCreation(JSC::VM&amp;, WebCore::JSWindowProxy*)
&gt; &gt; + 72 (JSDOMWindowBase.cpp:92)
&gt; &gt; 55  com.apple.WebCore             	0x00000006605c5096
&gt; &gt; WebCore::JSDOMWindow::finishCreation(JSC::VM&amp;, WebCore::JSWindowProxy*) + 70
&gt; &gt; (JSDOMWindow.cpp:6129)
&gt; &gt; 56  com.apple.WebCore             	0x00000006619a7574
&gt; &gt; WebCore::JSDOMWindow::create(JSC::VM&amp;, JSC::Structure*,
&gt; &gt; WTF::Ref&lt;WebCore::DOMWindow, WTF::DumbPtrTraits&lt;WebCore::DOMWindow&gt; &gt;&amp;&amp;,
&gt; &gt; WebCore::JSWindowProxy*) + 148 (JSDOMWindow.h:40)
&gt; &gt; 57  com.apple.WebCore             	0x00000006619a6b43
&gt; &gt; WebCore::JSWindowProxy::setWindow(WebCore::AbstractDOMWindow&amp;) + 675
&gt; &gt; (JSWindowProxy.cpp:107)
&gt; &gt; 58  com.apple.WebCore             	0x00000006619d5b60
&gt; &gt; WebCore::WindowProxy::setDOMWindow(WebCore::AbstractDOMWindow*) + 272
&gt; &gt; (WindowProxy.cpp:153)
&gt; &gt; 59  com.apple.WebCore             	0x000000066260c62b
&gt; &gt; WebCore::FrameLoader::clear(WebCore::Document*, bool, bool, bool) + 699
&gt; &gt; (FrameLoader.cpp:653)
&gt; &gt; 60  com.apple.WebCore             	0x000000066260bad0
&gt; &gt; WebCore::DocumentWriter::begin(WebCore::URL const&amp;, bool,
&gt; &gt; WebCore::Document*) + 592 (DocumentWriter.cpp:162)
&gt; &gt; 61  com.apple.WebCore             	0x00000006625cf3ae
&gt; &gt; WebCore::DocumentLoader::commitData(char const*, unsigned long) + 142
&gt; &gt; (DocumentLoader.cpp:994)
&gt; &gt; 62  com.apple.WebKit              	0x000000010143428f
&gt; &gt; WebKit::WebFrameLoaderClient::committedLoad(WebCore::DocumentLoader*, char
&gt; &gt; const*, int) + 79 (WebFrameLoaderClient.cpp:1021)
&gt; &gt; 63  com.apple.WebCore             	0x00000006625d4bdd
&gt; &gt; WebCore::DocumentLoader::commitLoad(char const*, int) + 205
&gt; &gt; (DocumentLoader.cpp:965)
&gt; &gt; 64  com.apple.WebCore             	0x00000006625d4aff
&gt; &gt; WebCore::DocumentLoader::dataReceived(char const*, int) + 511
&gt; &gt; (DocumentLoader.cpp:1105)
&gt; &gt; 65  com.apple.WebCore             	0x00000006625d52b4
&gt; &gt; WebCore::DocumentLoader::dataReceived(WebCore::CachedResource&amp;, char const*,
&gt; &gt; int) + 116 (DocumentLoader.cpp:1078)
&gt; &gt; 66  com.apple.WebCore             	0x00000006625d52fa non-virtual thunk to
&gt; &gt; WebCore::DocumentLoader::dataReceived(WebCore::CachedResource&amp;, char const*,
&gt; &gt; int) + 58
&gt; &gt; 67  com.apple.WebCore             	0x00000006626fc558
&gt; &gt; WebCore::CachedRawResource::notifyClientsDataWasReceived(char const*,
&gt; &gt; unsigned int) + 152 (CachedRawResource.cpp:132)
&gt; &gt; 68  com.apple.WebCore             	0x00000006626fc348
&gt; &gt; WebCore::CachedRawResource::updateBuffer(WebCore::SharedBuffer&amp;) + 344
&gt; &gt; (CachedRawResource.cpp:71)
&gt; &gt; 69  com.apple.WebCore             	0x00000006626975aa
&gt; &gt; WebCore::SubresourceLoader::didReceiveDataOrBuffer(char const*, int,
&gt; &gt; WTF::RefPtr&lt;WebCore::SharedBuffer, WTF::DumbPtrTraits&lt;WebCore::SharedBuffer&gt;
&gt; &gt; &gt;&amp;&amp;, long long, WebCore::DataPayloadType) + 538 (SubresourceLoader.cpp:450)
&gt; &gt; 70  com.apple.WebCore             	0x0000000662697372
&gt; &gt; WebCore::SubresourceLoader::didReceiveData(char const*, unsigned int, long
&gt; &gt; long, WebCore::DataPayloadType) + 98 (SubresourceLoader.cpp:418)
&gt; &gt; 71  com.apple.WebKit              	0x00000001018b7534
&gt; &gt; WebKit::WebResourceLoader::didReceiveData(IPC::DataReference const&amp;, long
&gt; &gt; long) + 564 (WebResourceLoader.cpp:143)
&gt; &gt; 72  com.apple.WebKit              	0x00000001018bba00 void
&gt; &gt; IPC::callMemberFunctionImpl&lt;WebKit::WebResourceLoader, void
&gt; &gt; (WebKit::WebResourceLoader::*)(IPC::DataReference const&amp;, long long),
&gt; &gt; std::__1::tuple&lt;IPC::DataReference, long long&gt;, 0ul,
&gt; &gt; 1ul&gt;(WebKit::WebResourceLoader*, void
&gt; &gt; (WebKit::WebResourceLoader::*)(IPC::DataReference const&amp;, long long),
&gt; &gt; std::__1::tuple&lt;IPC::DataReference, long long&gt;&amp;&amp;,
&gt; &gt; std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul&gt;) + 192
&gt; &gt; (HandleMessage.h:41)
&gt; &gt; 73  com.apple.WebKit              	0x00000001018bb930 void
&gt; &gt; IPC::callMemberFunction&lt;WebKit::WebResourceLoader, void
&gt; &gt; (WebKit::WebResourceLoader::*)(IPC::DataReference const&amp;, long long),
&gt; &gt; std::__1::tuple&lt;IPC::DataReference, long long&gt;,
&gt; &gt; std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul&gt;
&gt; &gt; &gt;(std::__1::tuple&lt;IPC::DataReference, long long&gt;&amp;&amp;,
&gt; &gt; WebKit::WebResourceLoader*, void
&gt; &gt; (WebKit::WebResourceLoader::*)(IPC::DataReference const&amp;, long long)) + 96
&gt; &gt; (HandleMessage.h:47)
&gt; &gt; 74  com.apple.WebKit              	0x00000001018bacc1 void
&gt; &gt; IPC::handleMessage&lt;Messages::WebResourceLoader::DidReceiveData,
&gt; &gt; WebKit::WebResourceLoader, void
&gt; &gt; (WebKit::WebResourceLoader::*)(IPC::DataReference const&amp;, long
&gt; &gt; long)&gt;(IPC::Decoder&amp;, WebKit::WebResourceLoader*, void
&gt; &gt; (WebKit::WebResourceLoader::*)(IPC::DataReference const&amp;, long long)) + 289
&gt; &gt; (HandleMessage.h:127)
&gt; &gt; 75  com.apple.WebKit              	0x00000001018ba3f6
&gt; &gt; WebKit::WebResourceLoader::didReceiveWebResourceLoaderMessage(IPC::
&gt; &gt; Connection&amp;, IPC::Decoder&amp;) + 502 (WebResourceLoaderMessageReceiver.cpp:62)
&gt; &gt; 76  com.apple.WebKit              	0x0000000100e7e429
&gt; &gt; WebKit::NetworkProcessConnection::didReceiveMessage(IPC::Connection&amp;,
&gt; &gt; IPC::Decoder&amp;) + 169 (NetworkProcessConnection.cpp:71)
&gt; &gt; 77  com.apple.WebKit              	0x0000000100bdced3
&gt; &gt; IPC::Connection::dispatchMessage(IPC::Decoder&amp;) + 51 (Connection.cpp:907)
&gt; &gt; 78  com.apple.WebKit              	0x0000000100bd2488
&gt; &gt; IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder,
&gt; &gt; std::__1::default_delete&lt;IPC::Decoder&gt; &gt;) + 712
&gt; &gt; 79  com.apple.WebKit              	0x0000000100bdd4da
&gt; &gt; IPC::Connection::dispatchOneMessage() + 1530 (Connection.cpp:964)
&gt; &gt; 80  com.apple.WebKit              	0x0000000100bf579d
&gt; &gt; IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder,
&gt; &gt; std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_14::operator()() + 29
&gt; &gt; (Connection.cpp:901)
&gt; &gt; 81  com.apple.WebKit              	0x0000000100bf56f9 WTF::Function&lt;void
&gt; &gt; ()&gt;::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::__1::
&gt; &gt; unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt;
&gt; &gt; &gt;)::$_14&gt;::call() + 25 (Function.h:101)
&gt; &gt; 82  com.apple.JavaScriptCore      	0x000000066fc90c1b WTF::Function&lt;void
&gt; &gt; ()&gt;::operator()() const + 139 (Function.h:56)
&gt; &gt; 83  com.apple.JavaScriptCore      	0x000000066fce28e3
&gt; &gt; WTF::RunLoop::performWork() + 211 (RunLoop.cpp:107)
&gt; &gt; 84  com.apple.JavaScriptCore      	0x000000066fce31e4
&gt; &gt; WTF::RunLoop::performWork(void*) + 36 (RunLoopCF.cpp:38)
&gt; &gt; 85  com.apple.CoreFoundation      	0x00007fff4c987a61
&gt; &gt; __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
&gt; &gt; 86  com.apple.CoreFoundation      	0x00007fff4ca4147c __CFRunLoopDoSource0 +
&gt; &gt; 108
&gt; &gt; 87  com.apple.CoreFoundation      	0x00007fff4c96a4c0 __CFRunLoopDoSources0
&gt; &gt; + 208
&gt; &gt; 88  com.apple.CoreFoundation      	0x00007fff4c96993d __CFRunLoopRun + 1293
&gt; &gt; 89  com.apple.CoreFoundation      	0x00007fff4c9691a3 CFRunLoopRunSpecific +
&gt; &gt; 483
&gt; &gt; 90  com.apple.HIToolbox           	0x00007fff4bc51d96
&gt; &gt; RunCurrentEventLoopInMode + 286
&gt; &gt; 91  com.apple.HIToolbox           	0x00007fff4bc51b06 ReceiveNextEventCommon
&gt; &gt; + 613
&gt; &gt; 92  com.apple.HIToolbox           	0x00007fff4bc51884
&gt; &gt; _BlockUntilNextEventMatchingListInModeWithFilter + 64
&gt; &gt; 93  com.apple.AppKit              	0x00007fff49f04b53 _DPSNextEvent + 2085
&gt; &gt; 94  com.apple.AppKit              	0x00007fff4a69aeb0
&gt; &gt; -[NSApplication(NSEvent)
&gt; &gt; _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 3044
&gt; &gt; 95  com.apple.AppKit              	0x00007fff49ef9965 -[NSApplication run] +
&gt; &gt; 764
&gt; &gt; 96  com.apple.AppKit              	0x00007fff49ec8b3e NSApplicationMain + 804
&gt; &gt; 97  libxpc.dylib                  	0x00007fff75144f57 _xpc_objc_main + 580
&gt; &gt; 98  libxpc.dylib                  	0x00007fff75143baa xpc_main + 417
&gt; &gt; 99  com.apple.WebKit.WebContent   	0x0000000100a7813b main + 1195
&gt; &gt; (XPCServiceMain.mm:160)
&gt; &gt; 100 libdyld.dylib                 	0x00007fff74dea015 start + 1
&gt; 
&gt; classInfo looks like:
&gt; ALWAYS_INLINE const ClassInfo* JSCell::classInfo(VM&amp; vm) const
&gt; {
&gt;     // What we really want to assert here is that we&apos;re not currently
&gt; destructing this object (which makes its classInfo
&gt;     // invalid). If mutatorState() == MutatorState::Running, then we&apos;re not
&gt; currently sweeping, and therefore cannot be
&gt;     // destructing the object. The GC thread or JIT threads, unlike the
&gt; mutator thread, are able to access classInfo
&gt;     // independent of whether the mutator thread is sweeping or not. Hence,
&gt; we also check for !currentThreadIsHoldingAPILock()
&gt;     // to allow the GC thread or JIT threads to pass this assertion.
&gt;     ASSERT(vm.heap.mutatorState() != MutatorState::Sweeping ||
&gt; !vm.currentThreadIsHoldingAPILock());
&gt;     return structure(vm)-&gt;classInfo();
&gt; }

+ Mark &amp; Keith in case they have an idea how to fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418426</commentid>
    <comment_count>30</comment_count>
      <attachid>338973</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-26 22:38:51 -0700</bug_when>
    <thetext>Created attachment 338973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418428</commentid>
    <comment_count>31</comment_count>
      <attachid>338974</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-26 22:40:03 -0700</bug_when>
    <thetext>Created attachment 338974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418429</commentid>
    <comment_count>32</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-26 22:41:34 -0700</bug_when>
    <thetext>Attachment 338974 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMWheelEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindowPrivate.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameElement.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentGtk.cpp&quot;
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMKeyboardEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMouseEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMUIEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp&quot;
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/TouchEvent.h:49:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLIFrameElement.cpp&quot;
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Wrong number of spaces before statement. (expected: 41)  [whitespace/indent] [4]
Total errors found: 9 in 88 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>1418431</commentid>
    <comment_count>33</comment_count>
      <attachid>338976</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-26 22:57:00 -0700</bug_when>
    <thetext>Created attachment 338976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418432</commentid>
    <comment_count>34</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-26 22:59:45 -0700</bug_when>
    <thetext>Attachment 338976 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMWheelEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindowPrivate.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameElement.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentGtk.cpp&quot;
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMKeyboardEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMouseEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMUIEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp&quot;
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/TouchEvent.h:49:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLIFrameElement.cpp&quot;
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Wrong number of spaces before statement. (expected: 41)  [whitespace/indent] [4]
Total errors found: 9 in 88 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>1418495</commentid>
    <comment_count>35</comment_count>
      <attachid>338993</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-27 08:46:42 -0700</bug_when>
    <thetext>Created attachment 338993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418496</commentid>
    <comment_count>36</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-27 08:49:52 -0700</bug_when>
    <thetext>Attachment 338993 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMWheelEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindowPrivate.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameElement.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentGtk.cpp&quot;
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseEvent.cpp:88:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMKeyboardEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMouseEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMUIEvent.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp&quot;
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/TouchEvent.cpp:43:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/TouchEvent.h:49:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLIFrameElement.cpp&quot;
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/MouseRelatedEvent.cpp:41:  Wrong number of spaces before statement. (expected: 41)  [whitespace/indent] [4]
Total errors found: 9 in 88 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>1418516</commentid>
    <comment_count>37</comment_count>
      <attachid>338993</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-04-27 09:57:52 -0700</bug_when>
    <thetext>Comment on attachment 338993
Patch

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

&gt; Source/WebCore/ChangeLog:23
&gt; +        Use static_cast&lt;&gt;() instead of jsCast&lt;&gt;() because jsCast&lt;&gt;()
&gt; +        relies on classInfo() which is not allowed to be called during
&gt; +        JS sweep due to an assertion inside classInfo(). The JSWindowProxy
&gt; +        objects are held strongly by the WindowProxy so we know the JSWindowProxy
&gt; +        object is not getting destroyed here.

There are 2 issues discussed here:
1. The jsCast is unnecessary.  The only reason we would use a jsCast is so that we can assert that the target object is indeed of the type we expect i.e. JSDOMGlobalObject in this case.  But here in JSWindowProxy, we already know that the target is always a JSDOMGlobalObject.  This is why it&apos;s safe to replace it with a static_cast.
2. The liveness of the target JSDOMGlobalObject is tied to the JSWindowProxy.  The client invoking this window() method on the JSWindowProxy implies that the JSWindowProxy is alive.  By inference, this also means that the target JSDOMGlobalObject is also alive and safe to access.  While this detail is important, it is orthogonal to the use of jsCast here, and does not prohibit its replacement with a static_cast.

In short, it is correct to replace this jsCast with a static_cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418644</commentid>
    <comment_count>38</comment_count>
      <attachid>338993</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-27 15:11:07 -0700</bug_when>
    <thetext>Comment on attachment 338993
Patch

Clearing flags on attachment: 338993

Committed r231114: &lt;https://trac.webkit.org/changeset/231114&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418645</commentid>
    <comment_count>39</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-27 15:11:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418646</commentid>
    <comment_count>40</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-27 15:12:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/39806231&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338855</attachid>
            <date>2018-04-25 21:55:10 -0700</date>
            <delta_ts>2018-04-26 08:53:16 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>185022_use_WindowProxy_everywhere_wip.patch</filename>
            <type>text/plain</type>
            <size>111088</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAzMGY2NDZlYzc4OC4uMDExNGYyMDU4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzNjUsNyArMjM2NSw2IEBACiAJ
CTgzQjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBOYXRpdmVOb2RlRmlsdGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0U5NTlFMTFCOEJDMjJCMDA0
RDkzODUgLyogTmF0aXZlTm9kZUZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTgzQjc0RUY2MUYzRTBCRjIwMDk5NkJDNyAvKiBLZWVwYWxp
dmVSZXF1ZXN0VHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODNCNzRFRjMxRjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFj
a2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODNCOTY4N0IxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCOTY4NzkxOUY4QUI4
MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oICovOyB9OwotCQk4M0I5RTcwQjIw
ODZCQTQzMDBFNUQ3NTYgLyogSlNET01Db252ZXJ0V2luZG93UHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjlFNzA5MjA4NkJBMjcwMEU1RDc1
NiAvKiBKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQkI1Qzg4MUQ1RDZGNDUwMDVBNzFGNCAvKiBBbGxE
ZXNjZW5kYW50c0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzQkI1Qzg3MUQ1RDZGM0EwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50c0Nv
bGxlY3Rpb24uaCAqLzsgfTsKIAkJODNDMDVBNUIxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJv
cGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kRnVuY3Rpb25zLmggKi87IH07CiAJCTgzQzFENDI1MTc4RDVBQjQwMDE0MUU2OCAv
KiBTVkdQYXRoU2VnQXJjQWJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4M0MxRDQxMzE3OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0FyY0Ficy5o
ICovOyB9OwpAQCAtOTg3Nyw3ICs5ODc2LDYgQEAKIAkJODNCNzRFRjIxRjNFMEJENzAwOTk2QkM3
IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNCNzRFRjMxRjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVl
c3RUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtlZXBhbGl2ZVJl
cXVlc3RUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjk2ODc5MTlG
OEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVCdWlsZGVyQ29udmVydGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTgzQjlFNzA5MjA4NkJBMjcwMEU1RDc1NiAvKiBKU0RPTUNvbnZlcnRX
aW5kb3dQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUNvbnZl
cnRXaW5kb3dQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0JCNUM4NzFE
NUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4M0MwNUE1ODFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNDMDVBNTkxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJv
cGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTk4MzUsNyArMTk4MzMsNiBAQAogCQkJCTdDOEUzNEFBMUU0QTMzOEUwMDU0
Q0UyMyAvKiBKU0RPTUNvbnZlcnRWYXJpYWRpYy5oICovLAogCQkJCTdDQkE1QkE2MUYwQjRCREUw
MDM0RDc0NSAvKiBKU0RPTUNvbnZlcnRXZWJHTC5jcHAgKi8sCiAJCQkJN0M4RTM0QUIxRTRBMzM4
RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFdlYkdMLmggKi8sCi0JCQkJODNCOUU3MDkyMDg2QkEy
NzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggKi8sCiAJCQkJN0M4RTM0QUMx
RTRBMzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFhQYXRoTlNSZXNvbHZlci5oICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBDb252ZXJzaW9uczsKQEAgLTI4NDE2LDcgKzI4NDEzLDYgQEAKIAkJCQk3
QzhFMzRDNDFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0VW5pb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDOEUzNEM1MUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRWYXJpYWRp
Yy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4RTM0QzYxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9N
Q29udmVydFdlYkdMLmggaW4gSGVhZGVycyAqLywKLQkJCQk4M0I5RTcwQjIwODZCQTQzMDBFNUQ3
NTYgLyogSlNET01Db252ZXJ0V2luZG93UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUz
NEM3MUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZDOUUwRTREMTY0MTlDMUUwMDM5MkJFMyAvKiBKU0RPTUNTU05hbWVz
cGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2MEQ3QzEwRDI5QTQ2MzAwQjk5MThGIC8qIEpT
RE9NRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL0lETFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5o
CmluZGV4IDVmZTc3ZTgzZjIzLi5lYmYzZDM0YzgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvSURMVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExU
eXBlcy5oCkBAIC01NCw2ICs1NCw3IEBAIGNsYXNzIElEQlZhbHVlOwogY2xhc3MgSlNXaW5kb3dQ
cm94eTsKIGNsYXNzIERPTVByb21pc2U7CiBjbGFzcyBTY2hlZHVsZWRBY3Rpb247CitjbGFzcyBX
aW5kb3dQcm94eTsKIAogI2lmIEVOQUJMRShXRUJHTCkKIGNsYXNzIFdlYkdMRXh0ZW5zaW9uOwpA
QCAtMjc0LDcgKzI3NSw2IEBAIHN0cnVjdCBJRExTY2hlZHVsZWRBY3Rpb24gOiBJRExUeXBlPHN0
ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+PiB7IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgSURMU2VyaWFsaXplZFNjcmlwdFZhbHVlIDogSURMV3JhcHBlcjxUPiB7IH07CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMRXZlbnRMaXN0ZW5lciA6IElETFdyYXBwZXI8
VD4geyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFhQYXRoTlNSZXNvbHZlciA6
IElETFdyYXBwZXI8VD4geyB9Owotc3RydWN0IElETFdpbmRvd1Byb3h5IDogSURMV3JhcHBlcjxK
U1dpbmRvd1Byb3h5PiB7IH07CiAKIHN0cnVjdCBJRExJREJLZXkgOiBJRExXcmFwcGVyPElEQktl
eT4geyB9Owogc3RydWN0IElETElEQktleURhdGEgOiBJRExXcmFwcGVyPElEQktleURhdGE+IHsg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdp
bmRvd1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5k
b3dQcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MmMxZmY0ODE5Mi4uMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2lu
ZG93UHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIklETFR5cGVzLmgiCi0jaW5jbHVkZSAiSlNET01Db252
ZXJ0QmFzZS5oIgotI2luY2x1ZGUgIkpTV2luZG93UHJveHkuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExXaW5kb3dQcm94eT4gewot
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc1N0YXRlID0gdHJ1ZTsKLSAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgbmVlZHNHbG9iYWxPYmplY3QgPSBmYWxzZTsKLQotICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBVPgotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udmVydChKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIFUmJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0b0pTKCZzdGF0
ZSwgc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7Ci0gICAgfQotfTsKLQotfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmNwcAppbmRleCAxODg2NzFlNDliMS4uYTRi
MTgwNWM2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHku
Y3BwCkBAIC0xMTksNiArMTE5LDEyIEBAIHZvaWQgSlNXaW5kb3dQcm94eTo6c2V0V2luZG93KEFi
c3RyYWN0RE9NV2luZG93JiBkb21XaW5kb3cpCiAgICAgQVNTRVJUKHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkgPT0gd2luZG93KTsKIH0KIAorV2luZG93UHJveHkqIEpTV2luZG93UHJveHk6Ondp
bmRvd1Byb3h5KCkgY29uc3QKK3sKKyAgICBhdXRvJiB3aW5kb3cgPSB3cmFwcGVkKCk7CisgICAg
cmV0dXJuIHdpbmRvdy5mcmFtZSgpID8gJndpbmRvdy5mcmFtZSgpLT53aW5kb3dQcm94eSgpIDog
bnVsbHB0cjsKK30KKwogdm9pZCBKU1dpbmRvd1Byb3h5OjphdHRhY2hEZWJ1Z2dlcihKU0M6OkRl
YnVnZ2VyKiBkZWJ1Z2dlcikKIHsKICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB3aW5kb3coKTsK
QEAgLTEzOCwxMiArMTQ0LDYgQEAgQWJzdHJhY3RET01XaW5kb3cmIEpTV2luZG93UHJveHk6Ondy
YXBwZWQoKSBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4od2luZG93
KS0+d3JhcHBlZCgpOwogfQogCi1BYnN0cmFjdERPTVdpbmRvdyogSlNXaW5kb3dQcm94eTo6dG9X
cmFwcGVkKFZNJiB2bSwgSlNPYmplY3QqIHZhbHVlKQotewotICAgIGF1dG8qIHdyYXBwZXIgPSBq
c0R5bmFtaWNDYXN0PEpTV2luZG93UHJveHkqPih2bSwgdmFsdWUpOwotICAgIHJldHVybiB3cmFw
cGVyID8gJndyYXBwZXItPndyYXBwZWQoKSA6IG51bGxwdHI7Ci19Ci0KIEpTVmFsdWUgdG9KUyhF
eGVjU3RhdGUqIHN0YXRlLCBXaW5kb3dQcm94eSYgd2luZG93UHJveHkpCiB7CiAgICAgcmV0dXJu
ICZ3aW5kb3dQcm94eS5qc1dpbmRvd1Byb3h5KGN1cnJlbnRXb3JsZCgqc3RhdGUpKTsKQEAgLTE1
NCw0ICsxNTQsMTQgQEAgSlNXaW5kb3dQcm94eSYgdG9KU1dpbmRvd1Byb3h5KFdpbmRvd1Byb3h5
JiB3aW5kb3dQcm94eSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKICAgICByZXR1cm4gd2luZG93
UHJveHkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiB9CiAKK1dpbmRvd1Byb3h5KiBKU1dpbmRvd1By
b3h5Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmICghdmFsdWUu
aXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgSlNPYmplY3QqIG9iamVj
dCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBpZiAob2JqZWN0LT5pbmhlcml0czxKU1dpbmRvd1By
b3h5Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNXaW5kb3dQcm94eSo+KG9iamVjdCkt
PndpbmRvd1Byb3h5KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93
UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaAppbmRl
eCAxODVhNTQ1NzhiZi4uMzYyNDBkODY2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2luZG93UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dpbmRvd1Byb3h5LmgKQEAgLTI4LDcgKzI4LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlICJKU0RPTUNvbnZlcnRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5o
IgorI2luY2x1ZGUgIldpbmRvd1Byb3h5LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNQ
cm94eS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM5LDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBBYnN0cmFjdERPTVdpbmRvdzsKIGNsYXNzIEFic3RyYWN0RnJhbWU7
Ci1jbGFzcyBXaW5kb3dQcm94eTsKIAogY2xhc3MgSlNXaW5kb3dQcm94eSBmaW5hbCA6IHB1Ymxp
YyBKU0M6OkpTUHJveHkgewogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTUHJveHk7CkBAIC01Myw4
ICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXaW5kb3coSlNDOjpWTSYsIEpTRE9NR2xv
YmFsT2JqZWN0Jik7CiAgICAgdm9pZCBzZXRXaW5kb3coQWJzdHJhY3RET01XaW5kb3cmKTsKIAor
ICAgIFdpbmRvd1Byb3h5KiB3aW5kb3dQcm94eSgpIGNvbnN0OworCiAgICAgQWJzdHJhY3RET01X
aW5kb3cmIHdyYXBwZWQoKSBjb25zdDsKLSAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgQWJzdHJh
Y3RET01XaW5kb3cqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU09iamVjdCopOworICAgIHN0
YXRpYyBXRUJDT1JFX0VYUE9SVCBXaW5kb3dQcm94eSogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6
OkpTVmFsdWUpOwogCiAgICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCgpIHsgcmV0dXJuIG1fd29y
bGQ7IH0KIApAQCAtNzEsMTAgKzc0LDE2IEBAIHByaXZhdGU6CiAvLyBJdCBpcywgaG93ZXZlciwg
c3Ryb25nbHkgb3duZWQgYnkgQWJzdHJhY3RGcmFtZSB2aWEgaXRzIFdpbmRvd1Byb3h5LCBzbyB3
ZSBjYW4gZ2V0IG9uZSBmcm9tIGEgV2luZG93UHJveHkuCiBXRUJDT1JFX0VYUE9SVCBKU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIFdpbmRvd1Byb3h5Jik7CiBpbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBXaW5kb3dQcm94eSogd2luZG93UHJv
eHkpIHsgcmV0dXJuIHdpbmRvd1Byb3h5ID8gdG9KUyhzdGF0ZSwgKndpbmRvd1Byb3h5KSA6IEpT
Qzo6anNOdWxsKCk7IH0KLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIGNvbnN0IFJlZlB0cjxXaW5kb3dQcm94eT4mIHdpbmRvd1Byb3h5KSB7IHJldHVybiB0
b0pTKHN0YXRlLCB3aW5kb3dQcm94eS5nZXQoKSk7IH0KK2lubGluZSBKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiwgV2luZG93UHJveHkm
IHdpbmRvd1Byb3h5KSB7IHJldHVybiB0b0pTKHN0YXRlLCB3aW5kb3dQcm94eSk7IH0KK2lubGlu
ZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFdpbmRvd1Byb3h5KiB3aW5kb3dQcm94eSkgeyByZXR1cm4gd2lu
ZG93UHJveHkgPyB0b0pTKHN0YXRlLCBnbG9iYWxPYmplY3QsICp3aW5kb3dQcm94eSkgOiBKU0M6
OmpzTnVsbCgpOyB9CiAKIEpTV2luZG93UHJveHkmIHRvSlNXaW5kb3dQcm94eShXaW5kb3dQcm94
eSYsIERPTVdyYXBwZXJXb3JsZCYpOwogaW5saW5lIEpTV2luZG93UHJveHkqIHRvSlNXaW5kb3dQ
cm94eShXaW5kb3dQcm94eSogd2luZG93UHJveHksIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpIHsg
cmV0dXJuIHdpbmRvd1Byb3h5ID8gJnRvSlNXaW5kb3dQcm94eSgqd2luZG93UHJveHksIHdvcmxk
KSA6IG51bGxwdHI7IH0KIAogCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0
ZXJUcmFpdHM8V2luZG93UHJveHk+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1dpbmRv
d1Byb3h5OworICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBXaW5kb3dQcm94eSo7Cit9
OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XaW5kb3dQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
aW5kb3dQcm94eS5jcHAKaW5kZXggOGU4ZjUxMzUzZWQuLmUyMmY2MmMwMzk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAj
aW5jbHVkZSAiQ29tbW9uVk0uaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkdDQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIkpTV2luZG93UHJveHkuaCIKICNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIK
QEAgLTUzLDEyICs1NCwxNyBAQCBXaW5kb3dQcm94eTo6V2luZG93UHJveHkoQWJzdHJhY3RGcmFt
ZSYgZnJhbWUpCiB9CiAKIFdpbmRvd1Byb3h5Ojp+V2luZG93UHJveHkoKQoreworICAgIGNsZWFy
KCk7Cit9CisKK3ZvaWQgV2luZG93UHJveHk6OmNsZWFyKCkKIHsKICAgICAvLyBJdCdzIGxpa2Vs
eSB0aGF0IGRlc3Ryb3lpbmcgd2luZG93UHJveGllcyB3aWxsIGNyZWF0ZSBhIGxvdCBvZiBnYXJi
YWdlLgogICAgIGlmICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIHdo
aWxlICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBhdXRvIGl0
ID0gbV9qc1dpbmRvd1Byb3hpZXMuYmVnaW4oKTsKLSAgICAgICAgICAgIGl0LT52YWx1ZS0+d2lu
ZG93KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CisgICAgICAgICAgICAvL2l0LT52YWx1
ZS0+d2luZG93KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CiAgICAgICAgICAgICBkZXN0
cm95SlNXaW5kb3dQcm94eSgqaXQtPmtleSk7CiAgICAgICAgIH0KICAgICAgICAgY29sbGVjdEdh
cmJhZ2VBZnRlcldpbmRvd1Byb3h5RGVzdHJ1Y3Rpb24oKTsKQEAgLTkxLDYgKzk3LDExIEBAIFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU1dpbmRvd1Byb3h5Pj4gV2luZG93UHJveHk6OmpzV2luZG93UHJv
eGllc0FzVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fanNXaW5kb3dQ
cm94aWVzLnZhbHVlcygpKTsKIH0KIAorSlNET01HbG9iYWxPYmplY3QqIFdpbmRvd1Byb3h5Ojpn
bG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICByZXR1cm4ganNXaW5k
b3dQcm94eSh3b3JsZCkud2luZG93KCk7Cit9CisKIEpTV2luZG93UHJveHkmIFdpbmRvd1Byb3h5
OjpjcmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaAppbmRleCA3NzcyMjk4M2IwYS4uMDc5YTc1
MGUxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaApAQCAtMjAs
NyArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTV2luZG93UHJveHkuaCIK
KyNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC0zMCw3ICszMCwxMCBAQCBj
bGFzcyBEZWJ1Z2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBYnN0cmFjdERP
TVdpbmRvdzsKIGNsYXNzIEFic3RyYWN0RnJhbWU7CitjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsK
K2NsYXNzIEpTV2luZG93UHJveHk7CiAKIGNsYXNzIFdpbmRvd1Byb3h5IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTYzLDEwICs2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIChpdCAhPSBtX2pzV2luZG93UHJveGllcy5lbmQoKSkgPyBpdC0+dmFsdWUuZ2V0KCkgOiBu
dWxscHRyOwogICAgIH0KIAotICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBqc1dpbmRvd1Byb3h5
KHdvcmxkKS53aW5kb3coKTsKLSAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdChET01XcmFwcGVyV29ybGQmKTsKIAogICAgIHZvaWQgY2xlYXJK
U1dpbmRvd1Byb3hpZXNOb3RNYXRjaGluZ0RPTVdpbmRvdyhBYnN0cmFjdERPTVdpbmRvdyosIGJv
b2wgZ29pbmdJbnRvUGFnZUNhY2hlKTsKIApAQCAtODAsNiArODAsOCBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZWYoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlcmVm
KCk7CiAKKyAgICB2b2lkIGNsZWFyKCk7CisKIHByaXZhdGU6CiAgICAgSlNXaW5kb3dQcm94eSYg
Y3JlYXRlSlNXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBKU1dpbmRvd1Byb3h5JiBjcmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0
KERPTVdyYXBwZXJXb3JsZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IDk1MjQyOWEwZTQ5Li4yZmNmZWUzYTdhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAt
ODkxLDcgKzg5MSw2IEBAIHN1YiBJc0J1aWx0aW5UeXBlCiAgICAgcmV0dXJuIDEgaWYgJHR5cGUt
Pm5hbWUgZXEgIlhQYXRoTlNSZXNvbHZlciI7CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUg
ZXEgImFueSI7CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIm9iamVjdCI7Ci0gICAg
cmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsKIAogICAgIHJldHVybiAw
OwogfQpAQCAtMTAwMSw2ICsxMDAwLDcgQEAgc3ViIENvbXB1dGVJc0NhbGxiYWNrSW50ZXJmYWNl
CiAgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAK
ICAgICByZXR1cm4gMCB1bmxlc3MgJG9iamVjdC0+SXNJbnRlcmZhY2VUeXBlKCR0eXBlKTsKKyAg
ICByZXR1cm4gMCBpZiAkdHlwZS0+bmFtZSBlcSAiV2luZG93UHJveHkiOwogCiAgICAgbXkgJHR5
cGVOYW1lID0gJHR5cGUtPm5hbWU7CiAgICAgbXkgJGlkbEZpbGUgPSAkb2JqZWN0LT5JRExGaWxl
Rm9ySW50ZXJmYWNlKCR0eXBlTmFtZSkgb3IgYXNzZXJ0KCJDb3VsZCBOT1QgZmluZCBJREwgZmls
ZSBmb3IgaW50ZXJmYWNlIFwiJHR5cGVOYW1lXCIhXG4iKTsKQEAgLTEwMzgsNiArMTAzOCw3IEBA
IHN1YiBDb21wdXRlSXNDYWxsYmFja0Z1bmN0aW9uCiAgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikg
aWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICByZXR1cm4gMCB1bmxlc3MgJG9iamVj
dC0+SXNJbnRlcmZhY2VUeXBlKCR0eXBlKTsKKyAgICByZXR1cm4gMCBpZiAkdHlwZS0+bmFtZSBl
cSAiV2luZG93UHJveHkiOwogCiAgICAgbXkgJHR5cGVOYW1lID0gJHR5cGUtPm5hbWU7CiAgICAg
bXkgJGlkbEZpbGUgPSAkb2JqZWN0LT5JRExGaWxlRm9ySW50ZXJmYWNlKCR0eXBlTmFtZSkgb3Ig
YXNzZXJ0KCJDb3VsZCBOT1QgZmluZCBJREwgZmlsZSBmb3IgaW50ZXJmYWNlIFwiJHR5cGVOYW1l
XCIhXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KaW5kZXggNjI2YTlmMGIyZDYuLjMwYTM3NGMyODI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDIx
LDEzICs0MjEsNiBAQCBzdWIgQWRkVG9JbmNsdWRlc0ZvcklETFR5cGUKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGlmICgkdHlwZS0+bmFtZSBlcSAiV2luZG93UHJveHkiKSB7Ci0gICAg
ICAgIEFkZFRvSW5jbHVkZXMoIldpbmRvd1Byb3h5LmgiLCAkaW5jbHVkZXNSZWYsICRjb25kaXRp
b25hbCk7Ci0gICAgICAgIEFkZFRvSW5jbHVkZXMoIkpTV2luZG93UHJveHkuaCIsICRpbmNsdWRl
c1JlZiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAgQWRkVG9JbmNsdWRlcygiSlNET01Db252ZXJ0
V2luZG93UHJveHkuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQogICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBl
KSkgewogICAgICAgICBBZGRUb0luY2x1ZGVzKCJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiLCAkaW5j
bHVkZXNSZWYsICRjb25kaXRpb25hbCk7CiAgICAgICAgIHJldHVybjsKQEAgLTYzOTMsNyArNjM4
Niw2IEBAIHN1YiBHZXRCYXNlSURMVHlwZQogICAgICAgICAiSlNPTiIgPT4gIklETEpTT04iLAog
ICAgICAgICAiU2NoZWR1bGVkQWN0aW9uIiA9PiAiSURMU2NoZWR1bGVkQWN0aW9uIiwKICAgICAg
ICAgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIgPT4gIklETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IiwKLSAgICAgICAgIldpbmRvd1Byb3h5IiA9PiAiSURMV2lu
ZG93UHJveHkiLAogICAgICAgICAiWFBhdGhOU1Jlc29sdmVyIiA9PiAiSURMWFBhdGhOU1Jlc29s
dmVyPFhQYXRoTlNSZXNvbHZlcj4iLAogICAgICk7CiAKQEAgLTY1NTQsNyArNjU0Niw2IEBAIHN1
YiBOYXRpdmVUb0pTVmFsdWVET01Db252ZXJ0TmVlZHNTdGF0ZQogICAgIHJldHVybiAxIGlmICR0
eXBlLT5uYW1lIGVxICJKU09OIjsKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+bmFtZSBlcSAiU2Vy
aWFsaXplZFNjcmlwdFZhbHVlIjsKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+bmFtZSBlcSAiWFBh
dGhOU1Jlc29sdmVyIjsKLSAgICByZXR1cm4gMSBpZiAkdHlwZS0+bmFtZSBlcSAiV2luZG93UHJv
eHkiOwogICAgIAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBiYTQ1YmI5OGYyMS4u
NDE2NzEzNWNiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSlNE
T01Db252ZXJ0U3RyaW5ncy5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydFVuaW9uLmgiCiAjaW5j
bHVkZSAiSlNET01Db252ZXJ0VmFyaWFkaWMuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRXaW5k
b3dQcm94eS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydFhQYXRoTlNSZXNvbHZlci5oIgogI2lu
Y2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9i
amVjdC5oIgpAQCAtNTUsNyArNTYsNiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAj
aW5jbHVkZSAiSlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNE
T01TdHJpbmdMaXN0LmgiCi0jaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU0RP
TVdpbmRvd0Jhc2UuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUg
IkpTRG9jdW1lbnQuaCIKQEAgLTgwLDYgKzgwLDcgQEAKICNpbmNsdWRlICJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnRE
YXRhLmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9BcnJheVByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1l
cy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CkBAIC02
OTU3LDkgKzY5NTgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOUJvZAogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byB3aW5kb3cgPSBjb252ZXJ0PElETElu
dGVyZmFjZTxET01XaW5kb3c+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwg
W10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAid2luZG93IiwgIlRlc3RPYmplY3Qi
LCAib3ZlcmxvYWRlZE1ldGhvZCIsICJET01XaW5kb3ciKTsgfSk7CisgICAgYXV0byB3aW5kb3cg
PSBjb252ZXJ0PElETFdpbmRvd1Byb3h5Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoKndpbmRvdyk7CisgICAgaW1wbC5vdmVy
bG9hZGVkTWV0aG9kKFdURk1vdmUod2luZG93KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzAyOSw4ICs3MDMwLDYgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZE92ZXIKICAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2Q2Qm9keShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CiAg
ICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0KGRpc3Rp
bmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNUZXN0T2JqPih2bSkpCiAgICAgICAgICAgICByZXR1
cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOEJvZHkoc3RhdGUs
IGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwotICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcu
aXNPYmplY3QoKSAmJiAoYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU1dp
bmRvd1Byb3h5Pih2bSkgfHwgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0czxK
U0RPTVdpbmRvdz4odm0pKSkKLSAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5Qm9keShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29w
ZSk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0
KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNCbG9iPih2bSkpCiAgICAgICAgICAgICBy
ZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTNCb2R5KHN0
YXRlLCBjYXN0ZWRUaGlzLCB0aHJvd1Njb3BlKTsKICAgICAgICAgaWYgKGhhc0l0ZXJhdG9yTWV0
aG9kKCpzdGF0ZSwgZGlzdGluZ3Vpc2hpbmdBcmcpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4IGM4M2VlZWVkYmY0Li43MWRkZmM0
ODllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
T2JqLmlkbApAQCAtMjg2LDcgKzI4Niw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIs
ICJraW5kYS1sb3ciIH07CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmluZ0xp
c3Q/IGxpc3RBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChzZXF1ZW5jZTxET01T
dHJpbmc+PyBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFRlc3RPYmog
b2JqQXJnKTsKLSAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoRE9NV2luZG93IHdpbmRvdyk7
CisgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFdpbmRvd1Byb3h5IHdpbmRvdyk7CiAgICAg
dm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKHNlcXVlbmNlPERPTVN0cmluZz4gYXJyYXlBcmcpOwog
ICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChzZXF1ZW5jZTx1bnNpZ25lZCBsb25nPiBhcnJh
eUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmluZyBzdHJBcmcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCmluZGV4IDBlMzhhNjcxOGNkLi4w
MDdhZjdkNzI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmNwcApAQCAt
MzEsOCArMzEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENvbXBvc2l0aW9uRXZlbnQ6OkNv
bXBvc2l0aW9uRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLUNvbXBvc2l0aW9uRXZlbnQ6OkNvbXBvc2l0
aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0
IFN0cmluZyYgZGF0YSkKLSAgICA6IFVJRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCkK
K0NvbXBvc2l0aW9uRXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQorICAg
IDogVUlFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCBXVEZNb3ZlKHZpZXcpLCAwKQogICAgICwgbV9k
YXRhKGRhdGEpCiB7CiB9CkBAIC00NSwxMiArNDUsMTIgQEAgQ29tcG9zaXRpb25FdmVudDo6Q29t
cG9zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRp
YWwKIAogQ29tcG9zaXRpb25FdmVudDo6fkNvbXBvc2l0aW9uRXZlbnQoKSA9IGRlZmF1bHQ7CiAK
LXZvaWQgQ29tcG9zaXRpb25FdmVudDo6aW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cq
IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKK3ZvaWQgQ29tcG9zaXRpb25FdmVudDo6aW5pdENv
bXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5n
JiBkYXRhKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIDAp
OworICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2
aWV3KSwgMCk7CiAKICAgICBtX2RhdGEgPSBkYXRhOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3Np
dGlvbkV2ZW50LmgKaW5kZXggOGZmMDJlYzk2OTcuLjNiMWM0NmQ2MzVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21wb3NpdGlvbkV2ZW50LmgKQEAgLTMyLDkgKzMyLDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDb21wb3NpdGlvbkV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8Q29tcG9zaXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCisg
ICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29tcG9zaXRpb25FdmVudCh0eXBl
LCB2aWV3LCBkYXRhKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbXBvc2l0aW9u
RXZlbnQodHlwZSwgV1RGTW92ZSh2aWV3KSwgZGF0YSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBS
ZWY8Q29tcG9zaXRpb25FdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKQpAQCAtNTMsNyArNTMsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5Db21wb3NpdGlvbkV2ZW50KCk7CiAKLSAgICB2b2lk
IGluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhKTsK
KyAgICB2b2lkIGluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBj
b25zdCBTdHJpbmcmIGRhdGEpOwogCiAgICAgU3RyaW5nIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGE7IH0KIApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgQ29t
cG9zaXRpb25FdmVudCgpOwotICAgIENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBDb21wb3NpdGlvbkV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBT
dHJpbmcmKTsKICAgICBDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Y29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBib29sIGlzQ29tcG9zaXRpb25FdmVudCgp
IGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0
aW9uRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCmlu
ZGV4IGQ4NzI0MDg4M2UyLi4yMGFhYzdlYTQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3Np
dGlvbkV2ZW50LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIHZvaWQgaW5pdENvbXBvc2l0aW9u
RXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZpbmVkIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlQXJnID0gZmFs
c2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBib29sZWFuIGNhbmNl
bGFibGVBcmcgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFs
IERPTVdpbmRvdz8gdmlld0FyZyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlld0FyZyA9IG51bGwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcHRpb25hbCBET01TdHJpbmcgZGF0YUFyZyA9ICJ1bmRlZmluZWQiKTsK
IAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDg2ZjgzZTcyNjQyLi43OGY4YmUyN2U5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MjgwLDYgKzQyODAsMTMgQEAgdm9pZCBE
b2N1bWVudDo6dGFrZURPTVdpbmRvd0Zyb20oRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIEFTU0VS
VChtX2RvbVdpbmRvdy0+ZnJhbWUoKSA9PSBtX2ZyYW1lKTsKIH0KIAorV2luZG93UHJveHkqIERv
Y3VtZW50OjpkZWZhdWx0VmlldygpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJm1fZnJhbWUtPndpbmRvd1Byb3h5KCk7Cit9
CisKIERvY3VtZW50JiBEb2N1bWVudDo6Y29udGV4dERvY3VtZW50KCkgY29uc3QKIHsKICAgICBp
ZiAobV9jb250ZXh0RG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGE0ZmIwMmY5ZTFi
Li44NWEyNTY1MjFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTc5OSw3ICs3OTksNyBAQCBw
dWJsaWM6CiAKICAgICBET01XaW5kb3cqIGRvbVdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fZG9t
V2luZG93LmdldCgpOyB9CiAgICAgLy8gSW4gRE9NIExldmVsIDIsIHRoZSBEb2N1bWVudCdzIERP
TVdpbmRvdyBpcyBjYWxsZWQgdGhlIGRlZmF1bHRWaWV3LgotICAgIERPTVdpbmRvdyogZGVmYXVs
dFZpZXcoKSBjb25zdCB7IHJldHVybiBkb21XaW5kb3coKTsgfSAKKyAgICBXRUJDT1JFX0VYUE9S
VCBXaW5kb3dQcm94eSogZGVmYXVsdFZpZXcoKSBjb25zdDsKIAogICAgIERvY3VtZW50JiBjb250
ZXh0RG9jdW1lbnQoKSBjb25zdDsKICAgICB2b2lkIHNldENvbnRleHREb2N1bWVudChEb2N1bWVu
dCYgZG9jdW1lbnQpIHsgbV9jb250ZXh0RG9jdW1lbnQgPSBkb2N1bWVudC5jcmVhdGVXZWFrUHRy
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCmluZGV4IDJkNWJhYWQ4YzYwLi4wOGY3MmE5MjAw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0xMTMsNyArMTEzLDcgQEAgdHlwZWRlZiAo
CiAgICAgW0NFUmVhY3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJsZURvY3VtZW50LCBNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCB3cml0ZWxuKERPTVN0cmluZy4uLiB0ZXh0KTsKIAogICAgIC8vIFVz
ZXIgaW50ZXJhY3Rpb24uCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVdpbmRvdz8gZGVmYXVs
dFZpZXc7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyBkZWZhdWx0VmlldzsK
ICAgICBib29sZWFuIGhhc0ZvY3VzKCk7CiAgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGRlc2lnbk1vZGU7CiAgICAgW0NFUmVhY3Rpb25zXSBib29sZWFuIGV4ZWNDb21tYW5k
KERPTVN0cmluZyBjb21tYW5kSWQsIG9wdGlvbmFsIGJvb2xlYW4gc2hvd1VJID0gZmFsc2UsIG9w
dGlvbmFsIERPTVN0cmluZz8gdmFsdWUgPSBudWxsKTsgLy8gRklYTUU6IHZhbHVlIHNob3VsZCBu
b3QgYmUgbnVsbGFibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRU
b3VjaC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5pZGwKaW5kZXggN2Ey
NzM3NDU4NjUuLjA0ODlhMzZhZDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRUb3VjaC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guaWRs
CkBAIC0yMiw3ICsyMiw3IEBACiAgICAgQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTCiBdIHBhcnRp
YWwgaW50ZXJmYWNlIERvY3VtZW50IHsKICAgICAvLyBGSVhNRTogVGhpcyBoYXMgYmVlbiBkcm9w
cGVkIGZyb20gdGhlIHN0YW5kYXJkIG5vdyB0aGF0IFRvdWNoIGhhcyBhIGNvbnN0cnVjdG9yLgot
ICAgIFtOZXdPYmplY3RdIFRvdWNoIGNyZWF0ZVRvdWNoKG9wdGlvbmFsIERPTVdpbmRvdz8gd2lu
ZG93ID0gbnVsbCwgb3B0aW9uYWwgRXZlbnRUYXJnZXQ/IHRhcmdldCA9IG51bGwsCisgICAgW05l
d09iamVjdF0gVG91Y2ggY3JlYXRlVG91Y2gob3B0aW9uYWwgV2luZG93UHJveHk/IHdpbmRvdyA9
IG51bGwsIG9wdGlvbmFsIEV2ZW50VGFyZ2V0PyB0YXJnZXQgPSBudWxsLAogICAgICAgICBvcHRp
b25hbCBsb25nIGlkZW50aWZpZXIgPSAwLAogICAgICAgICBvcHRpb25hbCBsb25nIHBhZ2VYID0g
MCwgb3B0aW9uYWwgbG9uZyBwYWdlWSA9IDAsIG9wdGlvbmFsIGxvbmcgc2NyZWVuWCA9IDAsIG9w
dGlvbmFsIGxvbmcgc2NyZWVuWSA9IDAsCiAgICAgICAgIG9wdGlvbmFsIGxvbmcgd2Via2l0UmFk
aXVzWCA9IDAsIG9wdGlvbmFsIGxvbmcgd2Via2l0UmFkaXVzWSA9IDAsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRm9j
dXNFdmVudC5jcHAKaW5kZXggMTZkOGIzZmYwNzguLjk4Njg3NzMyNmNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0ZvY3VzRXZlbnQuY3BwCkBAIC00MCw4ICs0MCw4IEBAIGJvb2wgRm9jdXNFdmVudDo6aXNGb2N1
c0V2ZW50KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRm9jdXNFdmVudDo6Rm9jdXNF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYm
IHJlbGF0ZWRUYXJnZXQpCi0gICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJs
ZSwgdmlldywgZGV0YWlsKQorRm9jdXNFdmVudDo6Rm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYgcmVsYXRlZFRh
cmdldCkKKyAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3Zl
KHZpZXcpLCBkZXRhaWwpCiAgICAgLCBtX3JlbGF0ZWRUYXJnZXQoV1RGTW92ZShyZWxhdGVkVGFy
Z2V0KSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5oCmluZGV4IDA2NzI1NTc0YzA2Li5jN2E0
ZGY4ZTc3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5oCkBAIC0zNSw5ICszNSw5IEBAIGNsYXNz
IE5vZGU7CiAKIGNsYXNzIEZvY3VzRXZlbnQgZmluYWwgOiBwdWJsaWMgVUlFdmVudCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxGb2N1c0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcs
IGludCBkZXRhaWwsIFJlZlB0cjxFdmVudFRhcmdldD4mJiByZWxhdGVkVGFyZ2V0KQorICAgIHN0
YXRpYyBSZWY8Rm9jdXNFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcs
IGludCBkZXRhaWwsIFJlZlB0cjxFdmVudFRhcmdldD4mJiByZWxhdGVkVGFyZ2V0KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9jdXNFdmVudCh0eXBlLCBjYW5CdWJibGUs
IGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCwgV1RGTW92ZShyZWxhdGVkVGFyZ2V0KSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb2N1c0V2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2Fu
Y2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCBXVEZNb3ZlKHJlbGF0ZWRUYXJnZXQpKSk7
CiAgICAgfQogCiAgICAgc3RhdGljIFJlZjxGb2N1c0V2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygp
CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBGb2N1c0V2ZW50KCkg
PSBkZWZhdWx0OwotICAgIEZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBpbnQsIFJlZlB0cjxFdmVu
dFRhcmdldD4mJik7CisgICAgRm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50
LCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYpOwogICAgIEZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIEV2ZW50SW50ZXJmYWNl
IGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vSW5wdXRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5jcHAK
aW5kZXggZDQ0OTI5NGZlYzYuLmMxN2JmMThkODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vSW5wdXRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQu
Y3BwCkBAIC0yNiwyMCArMjYsMjAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJ
bnB1dEV2ZW50LmgiCiAKLSNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEYXRhVHJh
bnNmZXIuaCIKICNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPElucHV0
RXZlbnQ+IElucHV0RXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IFdlYkNvcmU6OkRPTVdpbmRvdyAqdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0
YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5n
ZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCitSZWY8SW5wdXRFdmVudD4gSW5wdXRFdmVu
dDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlu
cHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1By
b3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiBk
YXRhVHJhbnNmZXIsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFu
Z2VzLCBpbnQgZGV0YWlsKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQo
ZXZlbnRUeXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGF0YSwg
V1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRSYW5nZXMsIGRldGFpbCkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQoZXZlbnRUeXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIp
LCB0YXJnZXRSYW5nZXMsIGRldGFpbCkpOwogfQogCi1JbnB1dEV2ZW50OjpJbnB1dEV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJp
bmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYgZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0
b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJhbmdlcywgaW50IGRldGFpbCkKLSAgICA6
IFVJRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCkK
K0lucHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNv
bnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0
YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5n
ZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCisgICAgOiBVSUV2ZW50KGV2ZW50VHlwZSwg
Y2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAgLCBtX2lu
cHV0VHlwZShpbnB1dFR5cGUpCiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fZGF0YVRyYW5z
ZmVyKGRhdGFUcmFuc2ZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5oCmluZGV4IGNhZDhkY2U3YjM2
Li5kMDUwNzYzOWM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5oCkBAIC0zMCw4ICszMCw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRE9NV2luZG93OwogY2xhc3MgRGF0YVRy
YW5zZmVyOworY2xhc3MgV2luZG93UHJveHk7CiAKIGNsYXNzIElucHV0RXZlbnQgZmluYWwgOiBw
dWJsaWMgVUlFdmVudCB7CiBwdWJsaWM6CkBAIC0zOSwxMyArMzksMTMgQEAgcHVibGljOgogICAg
ICAgICBTdHJpbmcgZGF0YTsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxJbnB1dEV2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRU
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGNv
bnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwgY29uc3QgVmVjdG9yPFJl
ZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpOworICAgIHN0YXRp
YyBSZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBj
b25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
UmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERh
dGFUcmFuc2Zlcj4mJiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRS
YW5nZXMsIGludCBkZXRhaWwpOwogICAgIHN0YXRpYyBSZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3Rl
ZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgSW5wdXRFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiAgICAg
fQogCi0gICAgSW5wdXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdp
bmRvdyosIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpOwor
ICAgIElucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwg
Y29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRh
aWwpOwogICAgIElucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0
IEluaXQmLCBJc1RydXN0ZWQpOwogCiAgICAgYm9vbCBpc0lucHV0RXZlbnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5
Ym9hcmRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKaW5k
ZXggNGRhMTAxNzcyNWYuLjRhY2I1ZjRjZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vS2V5Ym9hcmRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZl
bnQuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
S2V5Ym9hcmRFdmVudC5oIgogCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIK
QEAgLTkyLDggKzkzLDggQEAgc3RhdGljIGlubGluZSBLZXlib2FyZEV2ZW50OjpLZXlMb2NhdGlv
bkNvZGUga2V5TG9jYXRpb25Db2RlKGNvbnN0IFBsYXRmb3JtS2V5Ym8KIAogaW5saW5lIEtleWJv
YXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLWlubGluZSBLZXlib2FyZEV2
ZW50OjpLZXlib2FyZEV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYga2V5LCBET01X
aW5kb3cqIHZpZXcpCi0gICAgOiBVSUV2ZW50V2l0aEtleVN0YXRlKGV2ZW50VHlwZUZvcktleWJv
YXJkRXZlbnRUeXBlKGtleS50eXBlKCkpLCB0cnVlLCB0cnVlLCBrZXkudGltZXN0YW1wKCkuYXBw
cm94aW1hdGVNb25vdG9uaWNUaW1lKCksIHZpZXcsIDAsIGtleS5jdHJsS2V5KCksIGtleS5hbHRL
ZXkoKSwga2V5LnNoaWZ0S2V5KCksIGtleS5tZXRhS2V5KCksIGZhbHNlLCBrZXkubW9kaWZpZXJz
KCkuY29udGFpbnMoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkNhcHNMb2NrS2V5KSkKK2lubGlu
ZSBLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dCYga2V5LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKKyAgICA6IFVJRXZlbnRXaXRoS2V5
U3RhdGUoZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUoa2V5LnR5cGUoKSksIHRydWUsIHRy
dWUsIGtleS50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgdmlldy5jb3B5
UmVmKCksIDAsIGtleS5jdHJsS2V5KCksIGtleS5hbHRLZXkoKSwga2V5LnNoaWZ0S2V5KCksIGtl
eS5tZXRhS2V5KCksIGZhbHNlLCBrZXkubW9kaWZpZXJzKCkuY29udGFpbnMoUGxhdGZvcm1FdmVu
dDo6TW9kaWZpZXI6OkNhcHNMb2NrS2V5KSkKICAgICAsIG1fdW5kZXJseWluZ1BsYXRmb3JtRXZl
bnQoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUtleWJvYXJkRXZlbnQ+KGtleSkpCiAjaWYgRU5B
QkxFKEtFWUJPQVJEX0tFWV9BVFRSSUJVVEUpCiAgICAgLCBtX2tleShrZXkua2V5KCkpCkBAIC0x
MDQsNyArMTA1LDcgQEAgaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3Qg
UGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIERPTVdpbmRvdyoKICAgICAsIG1fa2V5SWRlbnRp
ZmllcihrZXkua2V5SWRlbnRpZmllcigpKQogICAgICwgbV9sb2NhdGlvbihrZXlMb2NhdGlvbkNv
ZGUoa2V5KSkKICAgICAsIG1fcmVwZWF0KGtleS5pc0F1dG9SZXBlYXQoKSkKLSAgICAsIG1faXND
b21wb3NpbmcodmlldyAmJiB2aWV3LT5mcmFtZSgpICYmIHZpZXctPmZyYW1lKCktPmVkaXRvcigp
Lmhhc0NvbXBvc2l0aW9uKCkpCisgICAgLCBtX2lzQ29tcG9zaW5nKHZpZXcgJiYgaXM8RE9NV2lu
ZG93Pih2aWV3LT53aW5kb3coKSkgJiYgZG93bmNhc3Q8RE9NV2luZG93Pigqdmlldy0+d2luZG93
KCkpLmZyYW1lKCkgJiYgZG93bmNhc3Q8RE9NV2luZG93Pigqdmlldy0+d2luZG93KCkpLmZyYW1l
KCktPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpCiAjaWYgVVNFKEFQUEtJVCkKICAgICAsIG1f
aGFuZGxlZEJ5SW5wdXRNZXRob2Qoa2V5LmhhbmRsZWRCeUlucHV0TWV0aG9kKCkpCiAgICAgLCBt
X2tleXByZXNzQ29tbWFuZHMoa2V5LmNvbW1hbmRzKCkpCkBAIC0xMzIsOSArMTMzLDkgQEAgaW5s
aW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIGNvbnN0IEluaXQmIGkKIAogS2V5Ym9hcmRFdmVudDo6fktleWJvYXJkRXZlbnQoKSA9
IGRlZmF1bHQ7CiAKLVJlZjxLZXlib2FyZEV2ZW50PiBLZXlib2FyZEV2ZW50OjpjcmVhdGUoY29u
c3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBwbGF0Zm9ybUV2ZW50LCBET01XaW5kb3cqIHZpZXcp
CitSZWY8S2V5Ym9hcmRFdmVudD4gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGNvbnN0IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCYgcGxhdGZvcm1FdmVudCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgS2V5Ym9hcmRFdmVudChwbGF0Zm9ybUV2ZW50
LCB2aWV3KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgS2V5Ym9hcmRFdmVudChwbGF0Zm9y
bUV2ZW50LCBXVEZNb3ZlKHZpZXcpKSk7CiB9CiAKIFJlZjxLZXlib2FyZEV2ZW50PiBLZXlib2Fy
ZEV2ZW50OjpjcmVhdGVGb3JCaW5kaW5ncygpCkBAIC0xNDcsMTMgKzE0OCwxMyBAQCBSZWY8S2V5
Ym9hcmRFdmVudD4gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgY29uc3QgSW5pdCYgaQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEtleWJvYXJkRXZlbnQo
dHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkpOwogfQogCi12b2lkIEtleWJvYXJkRXZlbnQ6
OmluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LAordm9pZCBLZXlib2FyZEV2ZW50
Ojppbml0S2V5Ym9hcmRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LAogICAgIGNv
bnN0IFN0cmluZyYga2V5SWRlbnRpZmllciwgdW5zaWduZWQgbG9jYXRpb24sIGJvb2wgY3RybEtl
eSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgYm9vbCBhbHRHcmFw
aEtleSkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCAwKTsK
KyAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmll
dyksIDApOwogCiAgICAgbV9rZXlJZGVudGlmaWVyID0ga2V5SWRlbnRpZmllcjsKICAgICBtX2xv
Y2F0aW9uID0gbG9jYXRpb247CkBAIC0yMjcsOCArMjI4LDkgQEAgaW50IEtleWJvYXJkRXZlbnQ6
OmNoYXJDb2RlKCkgY29uc3QKICAgICAvLyBGaXJlZm94OiAwIGZvciBrZXlkb3duL2tleXVwIGV2
ZW50cywgY2hhcmFjdGVyIGNvZGUgZm9yIGtleXByZXNzCiAgICAgLy8gV2UgbWF0Y2ggRmlyZWZv
eCwgdW5sZXNzIGluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgbW9kZSwgd2hlcmUgd2UgYWx3YXlz
IHJldHVybiB0aGUgY2hhcmFjdGVyIGNvZGUuCiAgICAgYm9vbCBiYWNrd2FyZENvbXBhdGliaWxp
dHlNb2RlID0gZmFsc2U7Ci0gICAgaWYgKHZpZXcoKSAmJiB2aWV3KCktPmZyYW1lKCkpCi0gICAg
ICAgIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUgPSB2aWV3KCktPmZyYW1lKCktPmV2ZW50SGFu
ZGxlcigpLm5lZWRzS2V5Ym9hcmRFdmVudERpc2FtYmlndWF0aW9uUXVpcmtzKCk7CisgICAgYXV0
byogd2luZG93ID0gdmlldygpID8gdmlldygpLT53aW5kb3coKSA6IG51bGxwdHI7CisgICAgaWYg
KGlzPERPTVdpbmRvdz4od2luZG93KSAmJiBkb3duY2FzdDxET01XaW5kb3c+KCp3aW5kb3cpLmZy
YW1lKCkpCisgICAgICAgIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUgPSBkb3duY2FzdDxET01X
aW5kb3c+KCp3aW5kb3cpLmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLm5lZWRzS2V5Ym9hcmRFdmVu
dERpc2FtYmlndWF0aW9uUXVpcmtzKCk7CiAKICAgICBpZiAoIW1fdW5kZXJseWluZ1BsYXRmb3Jt
RXZlbnQgfHwgKHR5cGUoKSAhPSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCAmJiAhYmFja3dh
cmRDb21wYXRpYmlsaXR5TW9kZSkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXli
b2FyZEV2ZW50LmgKaW5kZXggODIxMDMzMGVhYjAuLjFkM2NjMjQzNzk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9LZXlib2FyZEV2ZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgICAgICBET01f
S0VZX0xPQ0FUSU9OX05VTVBBRCA9IDB4MDMKICAgICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxLZXlib2FyZEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2
ZW50JiwgRE9NV2luZG93Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxLZXlib2Fy
ZEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgUmVmUHRyPFdpbmRv
d1Byb3h5PiYmKTsKICAgICBzdGF0aWMgUmVmPEtleWJvYXJkRXZlbnQ+IGNyZWF0ZUZvckJpbmRp
bmdzKCk7CiAKICAgICBzdHJ1Y3QgSW5pdCA6IHB1YmxpYyBFdmVudE1vZGlmaWVySW5pdCB7CkBA
IC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfktleWJvYXJkRXZlbnQoKTsK
ICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2lu
ZG93KiwKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRy
PFdpbmRvd1Byb3h5PiYmLAogICAgICAgICBjb25zdCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIHVu
c2lnbmVkIGxvY2F0aW9uLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29s
IHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIGJvb2wgYWx0R3JhcGhLZXkgPSBmYWxzZSk7CiAgICAg
CkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEtleWJvYXJkRXZl
bnQoKTsKLSAgICBLZXlib2FyZEV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYsIERP
TVdpbmRvdyopOworICAgIEtleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50
JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAgICBLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4gbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9LZXlib2FyZEV2ZW50LmlkbAppbmRleCA3NTdjMDc3OTNmNS4uY2RlNDUwYzM0MzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5pZGwKQEAgLTUyLDcgKzUyLDcgQEAKICAg
ICAvLyBGSVhNRTogdGhpcyBkb2VzIG5vdCBtYXRjaCB0aGUgdmVyc2lvbiBpbiB0aGUgRE9NIHNw
ZWMuCiAgICAgLy8gRklYTUU6IFVzaW5nICJ1bmRlZmluZWQiIGFzIGRlZmF1bHQgcGFyYW1ldGVy
IHZhbHVlIGlzIHdyb25nLgogICAgIHZvaWQgaW5pdEtleWJvYXJkRXZlbnQob3B0aW9uYWwgRE9N
U3RyaW5nIHR5cGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGUgPSBm
YWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlID0gZmFsc2UsCi0gICAgICAgIG9wdGlv
bmFsIERPTVdpbmRvdz8gdmlldyA9IG51bGwsIG9wdGlvbmFsIERPTVN0cmluZyBrZXlJZGVudGlm
aWVyID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbG9jYXRpb24gPSAwLAor
ICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlldyA9IG51bGwsIG9wdGlvbmFsIERPTVN0
cmluZyBrZXlJZGVudGlmaWVyID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcg
bG9jYXRpb24gPSAwLAogICAgICAgICBvcHRpb25hbCBib29sZWFuIGN0cmxLZXkgPSBmYWxzZSwg
b3B0aW9uYWwgYm9vbGVhbiBhbHRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBzaGlmdEtl
eSA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIG1ldGFLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9v
bGVhbiBhbHRHcmFwaEtleSA9IGZhbHNlKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQu
aAppbmRleCA1MTk3ZDViYWUxYS4uMzMwOTI3ODdkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmgKQEAgLTI3LDEyICsyNywxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiSlNWYWx1ZUluV3JhcHBl
ZE9iamVjdC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgorI2luY2x1ZGUgIldp
bmRvd1Byb3h5LmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDAsOSArNDAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iOwog
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdXNpbmcgTWVzc2FnZUV2ZW50U291cmNlID0g
VmFyaWFudDxSZWZQdHI8RE9NV2luZG93PiwgUmVmUHRyPE1lc3NhZ2VQb3J0PiwgUmVmUHRyPFNl
cnZpY2VXb3JrZXI+PjsKK3VzaW5nIE1lc3NhZ2VFdmVudFNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRy
PFdpbmRvd1Byb3h5PiwgUmVmUHRyPE1lc3NhZ2VQb3J0PiwgUmVmUHRyPFNlcnZpY2VXb3JrZXI+
PjsKICNlbHNlCi11c2luZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxET01X
aW5kb3c+LCBSZWZQdHI8TWVzc2FnZVBvcnQ+PjsKK3VzaW5nIE1lc3NhZ2VFdmVudFNvdXJjZSA9
IFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPE1lc3NhZ2VQb3J0Pj47CiAjZW5k
aWYKIAogY2xhc3MgTWVzc2FnZUV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VFdmVudC5pZGwKaW5kZXggMDI0MzhmZDRjNDcuLmZhNDhjOGZhNWRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbApAQCAtMjcsOSArMjcsOSBAQAogICovCiAKICNp
ZiBkZWZpbmVkKEVOQUJMRV9TRVJWSUNFX1dPUktFUikgJiYgRU5BQkxFX1NFUlZJQ0VfV09SS0VS
Ci10eXBlZGVmIChET01XaW5kb3cgb3IgTWVzc2FnZVBvcnQgb3IgU2VydmljZVdvcmtlcikgTWVz
c2FnZUV2ZW50U291cmNlOwordHlwZWRlZiAoV2luZG93UHJveHkgb3IgTWVzc2FnZVBvcnQgb3Ig
U2VydmljZVdvcmtlcikgTWVzc2FnZUV2ZW50U291cmNlOwogI2Vsc2UKLXR5cGVkZWYgKERPTVdp
bmRvdyBvciBNZXNzYWdlUG9ydCkgTWVzc2FnZUV2ZW50U291cmNlOwordHlwZWRlZiAoV2luZG93
UHJveHkgb3IgTWVzc2FnZVBvcnQpIE1lc3NhZ2VFdmVudFNvdXJjZTsKICNlbmRpZgogCiBbCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VFdmVudC5jcHAKaW5kZXggYTE0N2UxMjE4YmIuLmM4OTZmODYzMWEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCkBAIC00NCwxMyArNDQsMTMgQEAgUmVmPE1vdXNl
RXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0
IE1vdXNlRXZlbnRJbmkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb3VzZUV2ZW50KHR5cGUs
IGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKIH0KIAotUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZl
bnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWV3
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBpbnQgZGV0YWlsLCBOb2RlKiByZWxh
dGVkVGFyZ2V0KQorUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGludCBkZXRhaWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQp
CiB7CiAgICAgYm9vbCBpc01vdXNlRW50ZXJPckxlYXZlID0gZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMoKS5tb3VzZWVudGVyRXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5tb3VzZWxl
YXZlRXZlbnQ7CiAgICAgYm9vbCBpc0NhbmNlbGFibGUgPSBldmVudFR5cGUgIT0gZXZlbnROYW1l
cygpLm1vdXNlbW92ZUV2ZW50ICYmICFpc01vdXNlRW50ZXJPckxlYXZlOwogICAgIGJvb2wgY2Fu
QnViYmxlID0gIWlzTW91c2VFbnRlck9yTGVhdmU7CiAKLSAgICByZXR1cm4gTW91c2VFdmVudDo6
Y3JlYXRlKGV2ZW50VHlwZSwgY2FuQnViYmxlLCBpc0NhbmNlbGFibGUsIGV2ZW50LnRpbWVzdGFt
cCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LAorICAgIHJldHVybiBNb3VzZUV2
ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGlzQ2FuY2VsYWJsZSwgZXZlbnQudGlt
ZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCksIFdURk1vdmUodmlldyksCiAgICAg
ICAgIGRldGFpbCwgZXZlbnQuZ2xvYmFsUG9zaXRpb24oKS54KCksIGV2ZW50Lmdsb2JhbFBvc2l0
aW9uKCkueSgpLCBldmVudC5wb3NpdGlvbigpLngoKSwgZXZlbnQucG9zaXRpb24oKS55KCksCiAj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgZXZlbnQubW92ZW1lbnREZWx0YSgpLngo
KSwgZXZlbnQubW92ZW1lbnREZWx0YSgpLnkoKSwKQEAgLTU5LDEzICs1OSwxMyBAQCBSZWY8TW91
c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBET01XaW5kb3cqIHZpZQogICAgICAgICByZWxhdGVkVGFyZ2V0LCBldmVudC5mb3JjZSgpLCBl
dmVudC5zeW50aGV0aWNDbGlja1R5cGUoKSk7CiB9CiAKLVJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2
ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiB2aWV3LCBp
bnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZ
LAorUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGlt
ZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVl
blgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKICNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQogICAgIGludCBtb3ZlbWVudFgsIGludCBtb3ZlbWVudFksCiAjZW5kaWYKICAgICBi
b29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVu
c2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgRXZlbnRUYXJnZXQq
IHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xp
Y2tUeXBlLCBEYXRhVHJhbnNmZXIqIGRhdGFUcmFuc2ZlciwgYm9vbCBpc1NpbXVsYXRlZCkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2Fu
Y2VsYWJsZSwgdGltZXN0YW1wLCB2aWV3LAorICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNl
RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIFdURk1vdmUodmll
dyksCiAgICAgICAgIGRldGFpbCwgeyBzY3JlZW5YLCBzY3JlZW5ZIH0sIHsgcGFnZVgsIHBhZ2VZ
IH0sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgeyBtb3ZlbWVudFgsIG1vdmVt
ZW50WSB9LApAQCAtNzMsMTkgKzczLDE5IEBAIFJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50Ojpj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vCiAgICAg
ICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9ucywg
cmVsYXRlZFRhcmdldCwgZm9yY2UsIHN5bnRoZXRpY0NsaWNrVHlwZSwgZGF0YVRyYW5zZmVyLCBp
c1NpbXVsYXRlZCkpOwogfQogCi1SZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVu
WSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBi
b29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWdu
ZWQgc2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVu
dFRhcmdldCogcmVsYXRlZFRhcmdldCkKK1JlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBpbnQgc2Ny
ZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9y
dCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRp
Y0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTW91c2VFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwg
dmlldywgZGV0YWlsLCB7IHNjcmVlblgsIHNjcmVlblkgfSwgeyBjbGllbnRYLCBjbGllbnRZIH0s
IGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9ucywgc3lu
dGhldGljQ2xpY2tUeXBlLCByZWxhdGVkVGFyZ2V0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTW91c2VFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2
aWV3KSwgZGV0YWlsLCB7IHNjcmVlblgsIHNjcmVlblkgfSwgeyBjbGllbnRYLCBjbGllbnRZIH0s
IGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9ucywgc3lu
dGhldGljQ2xpY2tUeXBlLCByZWxhdGVkVGFyZ2V0KSk7CiB9CiAKIE1vdXNlRXZlbnQ6Ok1vdXNl
RXZlbnQoKSA9IGRlZmF1bHQ7CiAKLU1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90
b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGNvbnN0IElu
dFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAor
TW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2Ny
ZWVuTG9jYXRpb24sIGNvbnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQogICAgICAgICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKICNl
bmRpZgogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBi
b29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
cywgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwgdW5zaWduZWQgc2hv
cnQgc3ludGhldGljQ2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIqIGRhdGFUcmFuc2ZlciwgYm9vbCBp
c1NpbXVsYXRlZCkKLSAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxl
LCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIHZpZXcsIGRldGFpbCwgc2NyZWVuTG9jYXRpb24sIHdp
bmRvd0xvY2F0aW9uLAorICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJi
bGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCBzY3JlZW5M
b2NhdGlvbiwgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAg
ICAgbW92ZW1lbnREZWx0YSwKICNlbmRpZgpAQCAtMTAwLDggKzEwMCw4IEBAIE1vdXNlRXZlbnQ6
Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlCiB7CiB9CiAKLU1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdp
bmRvdyogdmlldywgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBj
b25zdCBJbnRQb2ludCYgY2xpZW50TG9jYXRpb24sIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXks
IGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNp
Z25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2
ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KQotICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZlbnRU
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWU6Om5vdygpLCB2aWV3LCBk
ZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB7IH0sCitNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxl
LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQm
IHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgY2xpZW50TG9jYXRpb24sIGJvb2wgY3Ry
bEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQg
c2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50
aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KQorICAgIDogTW91c2VS
ZWxhdGVkRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIE1vbm90b25pY1Rp
bWU6Om5vdygpLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB7IH0sCiAj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgeyB9LAogI2VuZGlmCkBAIC0xMjcsMTIg
KzEyNywxMiBAQCBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBjb25zdCBNb3VzZUV2ZW50SW5pdCYgaW5pdAogCiBNb3VzZUV2ZW50Ojp+TW91c2VF
dmVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBNb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERP
TVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQg
Y2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hp
ZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBFdmVudFRhcmdldCog
cmVsYXRlZFRhcmdldCkKK3ZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5Z
LCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJv
b2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBFdmVudFRh
cmdldCogcmVsYXRlZFRhcmdldCkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxh
YmxlLCB2aWV3LCBkZXRhaWwpOworICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2Fu
Y2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKTsKIAogICAgIG1fc2NyZWVuTG9jYXRpb24g
PSBJbnRQb2ludChzY3JlZW5YLCBzY3JlZW5ZKTsKICAgICBtX2N0cmxLZXkgPSBjdHJsS2V5OwpA
QCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjCiAKIC8vIEZJWE1FOiBX
ZSBuZWVkIHRoaXMgcXVpcmsgYmVjYXVzZSBpQWQgUHJvZHVjZXIgaXMgY2FsbGluZyB0aGlzIGZ1
bmN0aW9uIHdpdGggYSByZWxhdGVkVGFyZ2V0IHRoYXQgaXMgbm90IGFuIEV2ZW50VGFyZ2V0IChy
ZGFyOi8vcHJvYmxlbS8zMDY0MDEwMSkuCiAvLyBXZSBzaG91bGQgcmVtb3ZlIHRoaXMgcXVpcmsg
d2hlbiBwb3NzaWJsZS4KLXZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayhFeGVj
U3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3Jl
ZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXks
IGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBKU1Zh
bHVlIHJlbGF0ZWRUYXJnZXRWYWx1ZSkKK3ZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRR
dWlyayhFeGVjU3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBp
bnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBj
dHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25l
ZCBzaG9ydCBidXR0b24sIEpTVmFsdWUgcmVsYXRlZFRhcmdldFZhbHVlKQogewogICAgIEV2ZW50
VGFyZ2V0KiByZWxhdGVkVGFyZ2V0ID0gbnVsbHB0cjsKICNpZiBQTEFURk9STShNQUMpCkBAIC0x
NzYsNyArMTc2LDcgQEAgdm9pZCBNb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudFF1aXJrKEV4ZWNT
dGF0ZSYgc3RhdGUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHMKICNpZiBQTEFURk9STShNQUMp
CiAgICAgfQogI2VuZGlmCi0gICAgaW5pdE1vdXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCB2aWV3LCBkZXRhaWwsIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVudFks
IGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgcmVsYXRlZFRhcmdl
dCk7CisgICAgaW5pdE1vdXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZN
b3ZlKHZpZXcpLCBkZXRhaWwsIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVudFksIGN0
cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgcmVsYXRlZFRhcmdldCk7
CiB9CiAKIEV2ZW50SW50ZXJmYWNlIE1vdXNlRXZlbnQ6OmV2ZW50SW50ZXJmYWNlKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VFdmVudC5oCmluZGV4IDI2Y2FmOGY2YjE5Li40YjI4MDc5OTU1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VFdmVudC5oCkBAIC0yOSwxOSArMjksMjAgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRGF0YVRyYW5zZmVyOworY2xhc3MgTm9kZTsKIGNsYXNzIFBsYXRmb3Jt
TW91c2VFdmVudDsKIAogY2xhc3MgTW91c2VFdmVudCA6IHB1YmxpYyBNb3VzZVJlbGF0ZWRFdmVu
dCB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiwgaW50IGRldGFpbCwg
aW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUg
dGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRhaWwsIGludCBzY3JlZW5Y
LCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCiAjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKICAgICAgICAgaW50IG1vdmVtZW50WCwgaW50IG1vdmVtZW50WSwKICNlbmRpZgogICAg
ICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgRXZlbnRU
YXJnZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwgdW5zaWduZWQgc2hvcnQgc3ludGhl
dGljQ2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIqID0gbnVsbHB0ciwgYm9vbCBpc1NpbXVsYXRlZCA9
IGZhbHNlKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW91c2VFdmVudD4gY3Jl
YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmLCBpbnQgZGV0YWlsLCBOb2RlKiByZWxhdGVkVGFyZ2V0KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmLCBpbnQgZGV0YWlsLCBOb2RlKiByZWxhdGVkVGFyZ2V0KTsKIAotICAgIHN0YXRp
YyBSZWY8TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBpbnQgZGV0YWlsLCBp
bnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBj
dHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25l
ZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVkIHNob3J0IHN5
bnRoZXRpY0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpOworICAgIHN0YXRp
YyBSZWY8TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGlu
dCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGll
bnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWdu
ZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCk7
CiAKICAgICBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBNb3VzZUV2ZW50KTsgfQogCkBAIC00OSw4ICs1MCw4IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgfk1vdXNlRXZlbnQoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgaW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwg
aW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29s
IGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0
b24sIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KTsKLSAgICB2b2lkIGluaXRNb3VzZUV2ZW50
UXVpcmsoSlNDOjpFeGVjU3RhdGUmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5k
b3cqLCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBp
bnQgY2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9v
bCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIEpTQzo6SlNWYWx1ZSByZWxhdGVkVGFy
Z2V0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdp
bmRvd1Byb3h5PiYmLCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBj
bGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlm
dEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIEV2ZW50VGFyZ2V0KiBy
ZWxhdGVkVGFyZ2V0KTsKKyAgICB2b2lkIGluaXRNb3VzZUV2ZW50UXVpcmsoSlNDOjpFeGVjU3Rh
dGUmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGlu
dCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGll
bnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgSlNDOjpKU1ZhbHVlIHJlbGF0ZWRUYXJnZXQpOwog
CiAgICAgdW5zaWduZWQgc2hvcnQgYnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV9idXR0b247IH0K
ICAgICB1bnNpZ25lZCBzaG9ydCBidXR0b25zKCkgY29uc3QgeyByZXR1cm4gbV9idXR0b25zOyB9
CkBAIC03MCw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBpbnQgd2hpY2goKSBjb25zdCBmaW5hbDsK
IAogcHJvdGVjdGVkOgotICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwg
RE9NV2luZG93KiwKKyAgICBNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiwKICAgICAgICAgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQm
IHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93TG9jYXRpb24sCiAjaWYgRU5B
QkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgY29uc3QgSW50UG9pbnQmIG1vdmVtZW50RGVsdGEs
CkBAIC03OCw3ICs3OSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29s
IGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0
b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsCiAgICAgICAgIEV2ZW50VGFyZ2V0KiByZWxhdGVk
VGFyZ2V0LCBkb3VibGUgZm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwg
RGF0YVRyYW5zZmVyKiwgYm9vbCBpc1NpbXVsYXRlZCk7CiAKLSAgICBNb3VzZUV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9N
V2luZG93KiwKKyAgICBNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAogICAgICAg
ICBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IEludFBv
aW50JiBjbGllbnRMb2NhdGlvbiwKICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwg
Ym9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LAogICAgICAgICB1bnNpZ25lZCBzaG9ydCBidXR0
b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNr
VHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQu
aWRsCmluZGV4IDBiZTBmODhkZDM1Li42MGM0NDY2NjcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2
ZW50LmlkbApAQCAtNDMsNyArNDMsNyBAQAogICAgIC8vIEZJWE1FOiByZWxhdGVkVGFyZ2V0IHNo
b3VsZCBiZSBvZiB0eXBlIEV2ZW50VGFyZ2V0PyBidXQgd2UgbmVlZCB0byB1c2UgYW55IHRvIHN1
cHBvcnQgYSBxdWlyayBmb3IgaUFkIFByb2R1Y2VyIChyZGFyOi8vcHJvYmxlbS8zMDY0MDEwMSku
CiAgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlJlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxl
bWVudGVkQXM9aW5pdE1vdXNlRXZlbnRRdWlya10gdm9pZCBpbml0TW91c2VFdmVudChvcHRpb25h
bCBET01TdHJpbmcgdHlwZSA9ICJ1bmRlZmluZWQiLAogICAgICAgICBvcHRpb25hbCBib29sZWFu
IGNhbkJ1YmJsZSA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIGNhbmNlbGFibGUgPSBmYWxzZSwK
LSAgICAgICAgb3B0aW9uYWwgRE9NV2luZG93PyB2aWV3ID0gbnVsbCwgb3B0aW9uYWwgbG9uZyBk
ZXRhaWwgPSAwLAorICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlldyA9IG51bGwsIG9w
dGlvbmFsIGxvbmcgZGV0YWlsID0gMCwKICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5YID0g
MCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRYID0gMCwg
b3B0aW9uYWwgbG9uZyBjbGllbnRZID0gMCwKICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjdHJs
S2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJv
b2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBtZXRhS2V5ID0gZmFsc2Us
CiAgICAgICAgIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiA9IDAsIG9wdGlvbmFsIGFu
eSByZWxhdGVkVGFyZ2V0ID0gbnVsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TW91c2VSZWxhdGVkRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2
ZW50LmNwcAppbmRleCA4NTM3MTRkNmFiMS4uODBhODI2N2RjMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxl
LCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiBET01XaW5kb3csCitNb3VzZVJl
bGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0
YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24s
IGNvbnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NL
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFBvaW50JiBt
b3ZlbWVudERlbHRhLAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5
LCBib29sIGlzU2ltdWxhdGVkKQotICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCBET01XaW5kb3csIGRldGFpbCwgY3Ry
bEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSwgZmFsc2UsIGZhbHNlKQorICAgIDogVUlF
dmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0
YW1wLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1l
dGFLZXksIGZhbHNlLCBmYWxzZSkKICAgICAsIG1fc2NyZWVuTG9jYXRpb24oc2NyZWVuTG9jYXRp
b24pCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAsIG1fbW92ZW1lbnREZWx0YShtb3Zl
bWVudERlbHRhKQpAQCAtNjEsNyArNjEsNyBAQCBNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxh
dGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IE1vdXNlUgogdm9p
ZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdChib29sIGlzU2ltdWxhdGVkLCBjb25zdCBJbnRQb2lu
dCYgd2luZG93TG9jYXRpb24pCiB7CiAgICAgaWYgKCFpc1NpbXVsYXRlZCkgewotICAgICAgICBp
ZiAoYXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJvbURPTVdpbmRvdyh2aWV3KCkpKSB7Cisg
ICAgICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9tV2luZG93UHJveHkodmll
dygpKSkgewogICAgICAgICAgICAgRmxvYXRQb2ludCBhYnNvbHV0ZVBvaW50ID0gZnJhbWVWaWV3
LT53aW5kb3dUb0NvbnRlbnRzKHdpbmRvd0xvY2F0aW9uKTsKICAgICAgICAgICAgIEZsb2F0UG9p
bnQgZG9jdW1lbnRQb2ludCA9IGZyYW1lVmlldy0+YWJzb2x1dGVUb0RvY3VtZW50UG9pbnQoYWJz
b2x1dGVQb2ludCk7CiAgICAgICAgICAgICBtX3BhZ2VMb2NhdGlvbiA9IGZsb29yZWRMYXlvdXRQ
b2ludChkb2N1bWVudFBvaW50KTsKQEAgLTgzLDEzICs4MywxMyBAQCB2b2lkIE1vdXNlUmVsYXRl
ZEV2ZW50Ojppbml0Q29vcmRpbmF0ZXMoKQogICAgIG1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlv
biA9IGZhbHNlOwogfQogCi1GcmFtZVZpZXcqIE1vdXNlUmVsYXRlZEV2ZW50OjpmcmFtZVZpZXdG
cm9tRE9NV2luZG93KERPTVdpbmRvdyogd2luZG93KQorRnJhbWVWaWV3KiBNb3VzZVJlbGF0ZWRF
dmVudDo6ZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KFdpbmRvd1Byb3h5KiB3aW5kb3dQcm94eSkK
IHsKLSAgICBhdXRvKiBmcmFtZSA9IHdpbmRvdyA/IHdpbmRvdy0+ZnJhbWUoKSA6IG51bGxwdHI7
Ci0gICAgaWYgKCFmcmFtZSkKKyAgICBpZiAoIXdpbmRvd1Byb3h5IHx8ICFpczxET01XaW5kb3c+
KHdpbmRvd1Byb3h5LT53aW5kb3coKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIGZyYW1lLT52aWV3KCk7CisgICAgYXV0byogZnJhbWUgPSBkb3duY2FzdDxET01XaW5k
b3c+KCp3aW5kb3dQcm94eS0+d2luZG93KCkpLmZyYW1lKCk7CisgICAgcmV0dXJuIGZyYW1lID8g
ZnJhbWUtPnZpZXcoKSA6IG51bGxwdHI7CiB9CiAKIExheW91dFBvaW50IE1vdXNlUmVsYXRlZEV2
ZW50OjpwYWdlUG9pbnRUb0NsaWVudFBvaW50KExheW91dFBvaW50IHBhZ2VQb2ludCwgRnJhbWVW
aWV3KiBmcmFtZVZpZXcpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVu
dDo6aW5pdENvb3JkaW5hdGVzKGNvbnN0IExheW91dFBvaW50JiBjbGllbnRMb2NhdGlvbikKICAg
ICAvLyBTZXQgdXAgaW5pdGlhbCB2YWx1ZXMgZm9yIGNvb3JkaW5hdGVzLgogICAgIC8vIENvcnJl
Y3QgdmFsdWVzIGFyZSBjb21wdXRlZCBsYXppbHksIHNlZSBjb21wdXRlUmVsYXRpdmVQb3NpdGlv
bi4KICAgICBGbG9hdFNpemUgZG9jdW1lbnRUb0NsaWVudE9mZnNldDsKLSAgICBpZiAoYXV0byog
ZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJvbURPTVdpbmRvdyh2aWV3KCkpKQorICAgIGlmIChhdXRv
KiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9tV2luZG93UHJveHkodmlldygpKSkKICAgICAgICAg
ZG9jdW1lbnRUb0NsaWVudE9mZnNldCA9IGZyYW1lVmlldy0+ZG9jdW1lbnRUb0NsaWVudE9mZnNl
dCgpOwogCiAgICAgbV9jbGllbnRMb2NhdGlvbiA9IGNsaWVudExvY2F0aW9uOwpAQCAtMTI4LDcg
KzEyOCw3IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGluYXRlcyhjb25zdCBM
YXlvdXRQb2ludCYgY2xpZW50TG9jYXRpb24pCiAKIGZsb2F0IE1vdXNlUmVsYXRlZEV2ZW50Ojpk
b2N1bWVudFRvQWJzb2x1dGVTY2FsZUZhY3RvcigpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGZy
YW1lVmlldyA9IGZyYW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSkKKyAgICBpZiAoYXV0byog
ZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpCiAgICAgICAgIHJl
dHVybiBmcmFtZVZpZXctPmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFjdG9yKCk7CiAKICAgICBy
ZXR1cm4gMTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBmbG9hdCBNb3VzZVJlbGF0ZWRFdmVudDo6ZG9j
dW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3IoKSBjb25zdAogCiB2b2lkIE1vdXNlUmVsYXRlZEV2
ZW50Ojpjb21wdXRlUGFnZUxvY2F0aW9uKCkKIHsKLSAgICBtX2Fic29sdXRlTG9jYXRpb24gPSBw
YWdlUG9pbnRUb0Fic29sdXRlUG9pbnQobV9wYWdlTG9jYXRpb24sIGZyYW1lVmlld0Zyb21ET01X
aW5kb3codmlldygpKSk7CisgICAgbV9hYnNvbHV0ZUxvY2F0aW9uID0gcGFnZVBvaW50VG9BYnNv
bHV0ZVBvaW50KG1fcGFnZUxvY2F0aW9uLCBmcmFtZVZpZXdGcm9tV2luZG93UHJveHkodmlldygp
KSk7CiB9CiAKIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OnJlY2VpdmVkVGFyZ2V0KCkKQEAgLTE4
NSw3ICsxODUsNyBAQCB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUmVsYXRpdmVQb3Np
dGlvbigpCiAgICAgCiBGbG9hdFBvaW50IE1vdXNlUmVsYXRlZEV2ZW50Ojpsb2NhdGlvbkluUm9v
dFZpZXdDb29yZGluYXRlcygpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZy
YW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSkKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0g
ZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpCiAgICAgICAgIHJldHVybiBmcmFtZVZp
ZXctPmNvbnRlbnRzVG9Sb290Vmlldyhyb3VuZGVkSW50UG9pbnQobV9hYnNvbHV0ZUxvY2F0aW9u
KSk7CiAKICAgICByZXR1cm4gbV9hYnNvbHV0ZUxvY2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91
c2VSZWxhdGVkRXZlbnQuaAppbmRleCAwZDgzYzM2MDlmNy4uYWQ0ZTVkMGMzNTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5oCkBAIC02NywxNCArNjcsMTQgQEAgcHVibGlj
OgogICAgIC8vIHVzYWJsZSB3aXRoIFJlbmRlck9iamVjdDo6YWJzb2x1dGVUb0xvY2FsKS4KICAg
ICBjb25zdCBMYXlvdXRQb2ludCYgYWJzb2x1dGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
YWJzb2x1dGVMb2NhdGlvbjsgfQogICAgIAotICAgIHN0YXRpYyBGcmFtZVZpZXcqIGZyYW1lVmll
d0Zyb21ET01XaW5kb3coRE9NV2luZG93Kik7CisgICAgc3RhdGljIEZyYW1lVmlldyogZnJhbWVW
aWV3RnJvbVdpbmRvd1Byb3h5KFdpbmRvd1Byb3h5Kik7CiAKICAgICBzdGF0aWMgTGF5b3V0UG9p
bnQgcGFnZVBvaW50VG9DbGllbnRQb2ludChMYXlvdXRQb2ludCBwYWdlUG9pbnQsIEZyYW1lVmll
dyopOwogICAgIHN0YXRpYyBMYXlvdXRQb2ludCBwYWdlUG9pbnRUb0Fic29sdXRlUG9pbnQoTGF5
b3V0UG9pbnQgcGFnZVBvaW50LCBGcmFtZVZpZXcqKTsKIAogcHJvdGVjdGVkOgogICAgIE1vdXNl
UmVsYXRlZEV2ZW50KCkgPSBkZWZhdWx0OwotICAgIE1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3Rv
bmljVGltZSB0aW1lc3RhbXAsIERPTVdpbmRvdyosCisgICAgTW91c2VSZWxhdGVkRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBN
b25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAogICAgICAgICBp
bnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IEludFBvaW50
JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBjb25z
dCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaW11bGF0ZWRDbGljay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltdWxhdGVkQ2xpY2su
Y3BwCmluZGV4IGUwZjRlMzUyZWNhLi40MTdlOTA3YmYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1NpbXVsYXRlZENsaWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2lt
dWxhdGVkQ2xpY2suY3BwCkBAIC0zNywxNCArMzcsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBTaW11bGF0ZWRNb3VzZUV2ZW50IGZpbmFsIDogcHVibGljIE1vdXNlRXZlbnQgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8U2ltdWxhdGVkTW91c2VFdmVudD4gY3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxFdmVudD4m
JiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVkQ2xpY2tTb3VyY2Ug
c291cmNlKQorICAgIHN0YXRpYyBSZWY8U2ltdWxhdGVkTW91c2VFdmVudD4gY3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgUmVm
UHRyPEV2ZW50PiYmIHVuZGVybHlpbmdFdmVudCwgRWxlbWVudCYgdGFyZ2V0LCBTaW11bGF0ZWRD
bGlja1NvdXJjZSBzb3VyY2UpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aW11bGF0ZWRNb3VzZUV2ZW50KGV2ZW50VHlwZSwgdmlldywgV1RGTW92ZSh1bmRlcmx5aW5nRXZl
bnQpLCB0YXJnZXQsIHNvdXJjZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW11
bGF0ZWRNb3VzZUV2ZW50KGV2ZW50VHlwZSwgV1RGTW92ZSh2aWV3KSwgV1RGTW92ZSh1bmRlcmx5
aW5nRXZlbnQpLCB0YXJnZXQsIHNvdXJjZSkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTaW11
bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cq
IHZpZXcsIFJlZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwg
U2ltdWxhdGVkQ2xpY2tTb3VyY2Ugc291cmNlKQotICAgICAgICA6IE1vdXNlRXZlbnQoZXZlbnRU
eXBlLCB0cnVlLCB0cnVlLCB1bmRlcmx5aW5nRXZlbnQgPyB1bmRlcmx5aW5nRXZlbnQtPnRpbWVT
dGFtcCgpIDogTW9ub3RvbmljVGltZTo6bm93KCksIHZpZXcsIDAsIHsgfSwgeyB9LAorICAgIFNp
bXVsYXRlZE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiB2aWV3LCBSZWZQdHI8RXZlbnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVt
ZW50JiB0YXJnZXQsIFNpbXVsYXRlZENsaWNrU291cmNlIHNvdXJjZSkKKyAgICAgICAgOiBNb3Vz
ZUV2ZW50KGV2ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwgdW5kZXJseWluZ0V2ZW50ID8gdW5kZXJseWlu
Z0V2ZW50LT50aW1lU3RhbXAoKSA6IE1vbm90b25pY1RpbWU6Om5vdygpLCBXVEZNb3ZlKHZpZXcp
LCAwLCB7IH0sIHsgfSwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICAgICAgeyB9
LAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCmluZGV4IGJkMDI0ZWE1NWY2Li5iMDk0
NDkzYzFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAKQEAgLTM4LDI5ICszOCwyOSBAQCBS
ZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzKCkKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQpOwogfQogCi1SZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6
OmNyZWF0ZShET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5w
dXRUeXBlIGlucHV0VHlwZSkKK1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlKFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0
VHlwZSBpbnB1dFR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KHZp
ZXcsIGRhdGEsIGlucHV0VHlwZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVu
dChXVEZNb3ZlKHZpZXcpLCBkYXRhLCBpbnB1dFR5cGUpKTsKIH0KIAotUmVmPFRleHRFdmVudD4g
VGV4dEV2ZW50OjpjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShET01XaW5kb3cqIHZpZXcsIGNvbnN0
IFN0cmluZyYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UpCitSZWY8VGV4dEV2ZW50PiBU
ZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKQogewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudCh2aWV3LCBkYXRhLCAwLCBzaG91bGRTbWFy
dFJlcGxhY2UsIGZhbHNlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90
ZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudChXVEZNb3ZlKHZpZXcpLCBk
YXRhLCAwLCBzaG91bGRTbWFydFJlcGxhY2UsIGZhbHNlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5n
OjpSZXNwZWN0QmxvY2txdW90ZSkpOwogfQogCi1SZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6OmNy
ZWF0ZUZvckZyYWdtZW50UGFzdGUoRE9NV2luZG93KiB2aWV3LCBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4mJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0
eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpCitSZWY8
VGV4dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUoUmVmUHRyPFdpbmRv
d1Byb3h5PiYmIHZpZXcsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIGRhdGEsIGJvb2wgc2hv
dWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFu
ZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBUZXh0RXZlbnQodmlldywgZW1wdHlTdHJpbmcoKSwgV1RGTW92ZShkYXRhKSwgc2hvdWxkU21h
cnRSZXBsYWNlLCBzaG91bGRNYXRjaFN0eWxlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdURk1vdmUodmlldyksIGVtcHR5U3Ry
aW5nKCksIFdURk1vdmUoZGF0YSksIHNob3VsZFNtYXJ0UmVwbGFjZSwgc2hvdWxkTWF0Y2hTdHls
ZSwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykpOwogfQogCi1SZWY8VGV4dEV2ZW50PiBUZXh0RXZl
bnQ6OmNyZWF0ZUZvckRyb3AoRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCitS
ZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3AoUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBUZXh0RXZlbnQodmlldywgZGF0YSwgVGV4dEV2ZW50SW5wdXREcm9wKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdURk1vdmUodmlldyksIGRhdGEsIFRleHRFdmVudElu
cHV0RHJvcCkpOwogfQogCi1SZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3Rh
dGlvbihET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgVmVjdG9yPERp
Y3RhdGlvbkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKQorUmVmPFRleHRFdmVu
dD4gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24oUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZp
ZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZl
PiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRl
eHRFdmVudCh2aWV3LCBkYXRhLCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZGF0YSwgZGljdGF0aW9uQWx0
ZXJuYXRpdmVzKSk7CiB9CiAKIFRleHRFdmVudDo6VGV4dEV2ZW50KCkKQEAgLTcxLDggKzcxLDgg
QEAgVGV4dEV2ZW50OjpUZXh0RXZlbnQoKQogewogfQogCi1UZXh0RXZlbnQ6OlRleHRFdmVudChE
T01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlIGlu
cHV0VHlwZSkKLSAgICA6IFVJRXZlbnQoZXZlbnROYW1lcygpLnRleHRJbnB1dEV2ZW50LCB0cnVl
LCB0cnVlLCB2aWV3LCAwKQorVGV4dEV2ZW50OjpUZXh0RXZlbnQoUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlIGlucHV0VHlw
ZSkKKyAgICA6IFVJRXZlbnQoZXZlbnROYW1lcygpLnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0cnVl
LCBXVEZNb3ZlKHZpZXcpLCAwKQogICAgICwgbV9pbnB1dFR5cGUoaW5wdXRUeXBlKQogICAgICwg
bV9kYXRhKGRhdGEpCiAgICAgLCBtX3Nob3VsZFNtYXJ0UmVwbGFjZShmYWxzZSkKQEAgLTgxLDgg
KzgxLDggQEAgVGV4dEV2ZW50OjpUZXh0RXZlbnQoRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJp
bmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSBpbnAKIHsKIH0KIAotVGV4dEV2ZW50OjpUZXh0
RXZlbnQoRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJv
b2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90
ZUhhbmRsaW5nKQotICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRy
dWUsIHRydWUsIHZpZXcsIDApCitUZXh0RXZlbnQ6OlRleHRFdmVudChSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4m
JiBwYXN0aW5nRnJhZ21lbnQsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1h
dGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykK
KyAgICA6IFVJRXZlbnQoZXZlbnROYW1lcygpLnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0cnVlLCBX
VEZNb3ZlKHZpZXcpLCAwKQogICAgICwgbV9pbnB1dFR5cGUoVGV4dEV2ZW50SW5wdXRQYXN0ZSkK
ICAgICAsIG1fZGF0YShkYXRhKQogICAgICwgbV9wYXN0aW5nRnJhZ21lbnQoV1RGTW92ZShwYXN0
aW5nRnJhZ21lbnQpKQpAQCAtOTIsOCArOTIsOCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudChET01X
aW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJhZ21lbgog
ewogfQogCi1UZXh0RXZlbnQ6OlRleHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmlu
ZyYgZGF0YSwgY29uc3QgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0
ZXJuYXRpdmVzKQotICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRy
dWUsIHRydWUsIHZpZXcsIDApCitUZXh0RXZlbnQ6OlRleHRFdmVudChSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0
ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCisgICAgOiBVSUV2ZW50KGV2ZW50TmFt
ZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCkKICAgICAs
IG1faW5wdXRUeXBlKFRleHRFdmVudElucHV0RGljdGF0aW9uKQogICAgICwgbV9kYXRhKGRhdGEp
CiAgICAgLCBtX3Nob3VsZFNtYXJ0UmVwbGFjZShmYWxzZSkKQEAgLTEwNSwxMiArMTA1LDEyIEBA
IFRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRh
LCBjb25zdCBWZWN0b3I8RGljdGF0aW9uCiAKIFRleHRFdmVudDo6flRleHRFdmVudCgpID0gZGVm
YXVsdDsKIAotdm9pZCBUZXh0RXZlbnQ6OmluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcs
IGNvbnN0IFN0cmluZyYgZGF0YSkKK3ZvaWQgVGV4dEV2ZW50Ojppbml0VGV4dEV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICBpZiAo
aXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW5pdFVJRXZlbnQo
dHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCAwKTsKKyAgICBpbml0VUlFdmVudCh0
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIDApOwogCiAgICAgbV9p
bnB1dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmgK
aW5kZXggMjllYjI2ZDBlMDcuLjBhZTJhYzg2M2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oCkBA
IC0zOCwxNiArMzgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgVGV4dEV2
ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGlj
IFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZShET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFRl
eHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOworICAgICAgICBzdGF0
aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlKFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgU3Ry
aW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJkKTsK
ICAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7Ci0gICAg
ICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShET01XaW5k
b3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKLSAgICAg
ICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoRE9NV2luZG93
KiwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxh
Y2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0gICAg
ICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEcm9wKERPTVdpbmRvdyosIGNvbnN0
IFN0cmluZyYgZGF0YSk7Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JE
aWN0YXRpb24oRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGlj
dGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgICAgICBzdGF0
aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRvd1By
b3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKKyAg
ICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoUmVmUHRy
PFdpbmRvd1Byb3h5PiYmLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBkYXRhLCBib29sIHNo
b3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhh
bmRsaW5nKTsKKyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRyb3AoUmVm
UHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBzdGF0aWMg
UmVmPFRleHRFdmVudD4gY3JlYXRlRm9yRGljdGF0aW9uKFJlZlB0cjxXaW5kb3dQcm94eT4mJiwg
Y29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBk
aWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogCiAgICAgICAgIHZpcnR1YWwgflRleHRFdmVudCgpOwog
ICAgIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRUZXh0RXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5k
b3cqLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlu
aXRUZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7
CiAgICAgCiAgICAgICAgIFN0cmluZyBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAK
QEAgLTcxLDkgKzcxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAg
ICAgIFRleHRFdmVudCgpOwogCi0gICAgICAgIFRleHRFdmVudChET01XaW5kb3cqLCBjb25zdCBT
dHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQp
OwotICAgICAgICBUZXh0RXZlbnQoRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4mJiwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hv
dWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0gICAgICAgIFRleHRFdmVu
dChET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25B
bHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgICAgIFRleHRFdmVudChS
ZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRU
eXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7CisgICAgICAgIFRleHRFdmVudChSZWZQdHI8
V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+JiYsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1h
aWxCbG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBUZXh0RXZlbnQoUmVmUHRyPFdpbmRvd1By
b3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5h
dGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAKICAgICAgICAgYm9vbCBpc1RleHRFdmVu
dCgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4
dEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCmluZGV4IDM2NDA2
NWZhODJkLi5jZThiMzBhY2IzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRF
dmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5pZGwKQEAgLTMyLDcg
KzMyLDcgQEAgaW50ZXJmYWNlIFRleHRFdmVudCA6IFVJRXZlbnQgewogICAgIHZvaWQgaW5pdFRl
eHRFdmVudChvcHRpb25hbCBET01TdHJpbmcgdHlwZUFyZyA9ICJ1bmRlZmluZWQiLAogICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25hbCBib29sZWFuIGNhbkJ1YmJsZUFyZyA9IGZhbHNlLAog
ICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBib29sZWFuIGNhbmNlbGFibGVBcmcgPSBm
YWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NV2luZG93PyB2aWV3QXJn
ID0gbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgV2luZG93UHJveHk/IHZp
ZXdBcmcgPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBET01TdHJpbmcg
ZGF0YUFyZyA9ICJ1bmRlZmluZWQiKTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ub3VjaEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmlkbApp
bmRleCA4MTA1ODM1N2VkMy4uNTRlOTlkYjQ4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ub3VjaEV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5p
ZGwKQEAgLTQwLDcgKzQwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFRv
dWNoTGlzdD8gdGFyZ2V0VG91Y2hlcyA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICBv
cHRpb25hbCBUb3VjaExpc3Q/IGNoYW5nZWRUb3VjaGVzID0gbnVsbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wdGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgV2luZG93UHJveHk/IHZpZXcgPSBudWxsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5YID0gMCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbmFsIGxvbmcgc2NyZWVuWSA9IDAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBvcHRpb25hbCBsb25nIGNsaWVudFggPSAwLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3Bw
CmluZGV4IGFiMjBlZWNiOWM1Li4wYTZmODFhZjUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1VJRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmNwcApA
QCAtMzIsMTYgKzMyLDE2IEBAIFVJRXZlbnQ6OlVJRXZlbnQoKQogewogfQogCi1VSUV2ZW50OjpV
SUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZUFyZywg
Ym9vbCBjYW5jZWxhYmxlQXJnLCBET01XaW5kb3cqIHZpZXdBcmcsIGludCBkZXRhaWxBcmcpCitV
SUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1
YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlld0Fy
ZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlQXJnLCBj
YW5jZWxhYmxlQXJnKQotICAgICwgbV92aWV3KHZpZXdBcmcpCisgICAgLCBtX3ZpZXcoV1RGTW92
ZSh2aWV3QXJnKSkKICAgICAsIG1fZGV0YWlsKGRldGFpbEFyZykKIHsKIH0KIAotVUlFdmVudDo6
VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGVBcmcs
IGJvb2wgY2FuY2VsYWJsZUFyZywgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIERPTVdpbmRvdyog
dmlld0FyZywgaW50IGRldGFpbEFyZykKK1VJRXZlbnQ6OlVJRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVBcmcsIE1v
bm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlld0FyZywgaW50
IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlQXJnLCBjYW5jZWxh
YmxlQXJnLCB0aW1lc3RhbXApCi0gICAgLCBtX3ZpZXcodmlld0FyZykKKyAgICAsIG1fdmlldyhX
VEZNb3ZlKHZpZXdBcmcpKQogICAgICwgbV9kZXRhaWwoZGV0YWlsQXJnKQogewogfQpAQCAtNTUs
NyArNTUsNyBAQCBVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBjb25zdCBVSUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIsCiAKIFVJRXZlbnQ6On5VSUV2ZW50KCkg
PSBkZWZhdWx0OwogCi12b2lkIFVJRXZlbnQ6OmluaXRVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZUFyZywgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgRE9NV2lu
ZG93KiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQordm9pZCBVSUV2ZW50Ojppbml0VUlFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGVBcmcsIGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNhbmNl
bGFibGVBcmcsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQog
ewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJ
RXZlbnQuaAppbmRleCBiYWE3MzFmY2Y4MS4uNTBmMmQxNzcxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQu
aApAQCAtMjMsMjAgKzIzLDIwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRE9NV2lu
ZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJVSUV2ZW50SW5pdC5oIgorI2lu
Y2x1ZGUgIldpbmRvd1Byb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRklYTUU6
IFJlbW92ZSB0aGlzIHdoZW4gbm8gb25lIGlzIGRlcGVuZGluZyBvbiBpdCBhbnltb3JlLgotdHlw
ZWRlZiBET01XaW5kb3cgQWJzdHJhY3RWaWV3OwordHlwZWRlZiBXaW5kb3dQcm94eSBBYnN0cmFj
dFZpZXc7CiAKIGNsYXNzIFVJRXZlbnQgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8VUlFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBpbnQgZGV0YWlsKQor
ICAgIHN0YXRpYyBSZWY8VUlFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZp
ZXcsIGludCBkZXRhaWwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVSUV2
ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpKTsKICAgICB9CiAgICAgc3RhdGljIFJlZjxVSUV2ZW50
PiBjcmVhdGVGb3JCaW5kaW5ncygpCiAgICAgewpAQCAtNDgsOSArNDgsOSBAQCBwdWJsaWM6CiAg
ICAgfQogICAgIHZpcnR1YWwgflVJRXZlbnQoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
aW5pdFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBpbnQgZGV0YWlsKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGluaXRVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQgZGV0YWlsKTsK
IAotICAgIERPTVdpbmRvdyogdmlldygpIGNvbnN0IHsgcmV0dXJuIG1fdmlldy5nZXQoKTsgfQor
ICAgIFdpbmRvd1Byb3h5KiB2aWV3KCkgY29uc3QgeyByZXR1cm4gbV92aWV3LmdldCgpOyB9CiAg
ICAgaW50IGRldGFpbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV0YWlsOyB9CiAKICAgICBFdmVudElu
dGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNjUsMTQgKzY1LDE0
IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFVJRXZlbnQoKTsKLSAgICBVSUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
RE9NV2luZG93KiwgaW50IGRldGFpbCk7Ci0gICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGlt
ZXN0YW1wLCBET01XaW5kb3cqLCBpbnQgZGV0YWlsKTsKKyAgICBVSUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdp
bmRvd1Byb3h5PiYmLCBpbnQgZGV0YWlsKTsKKyAgICBVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0
aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCk7CiAgICAgVUlFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBVSUV2ZW50SW5pdCYsIElzVHJ1c3RlZCk7CiAK
IHByaXZhdGU6CiAgICAgYm9vbCBpc1VJRXZlbnQoKSBjb25zdCBmaW5hbDsKIAotICAgIFJlZlB0
cjxET01XaW5kb3c+IG1fdmlldzsKKyAgICBSZWZQdHI8V2luZG93UHJveHk+IG1fdmlldzsKICAg
ICBpbnQgbV9kZXRhaWw7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlF
dmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5pZGwKaW5kZXggODdiMzkxNTI4
MzAuLjZhMzVjNTdhMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRsCkBAIC0yMCwxMSArMjAsMTEg
QEAKIFsKICAgICBDb25zdHJ1Y3RvcihET01TdHJpbmcgdHlwZSwgb3B0aW9uYWwgVUlFdmVudElu
aXQgZXZlbnRJbml0RGljdCkKIF0gaW50ZXJmYWNlIFVJRXZlbnQgOiBFdmVudCB7Ci0gICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVdpbmRvdyB2aWV3OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBX
aW5kb3dQcm94eSB2aWV3OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGRldGFpbDsKICAg
ICAKICAgICAvLyBGSVhNRTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIg
dmFsdWUgaXMgd3JvbmcuCi0gICAgdm9pZCBpbml0VUlFdmVudChvcHRpb25hbCBET01TdHJpbmcg
dHlwZSA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBib29sZWFuIGNhbkJ1YmJsZSA9IGZhbHNlLCBv
cHRpb25hbCBib29sZWFuIGNhbmNlbGFibGUgPSBmYWxzZSwgb3B0aW9uYWwgRE9NV2luZG93PyB2
aWV3ID0gbnVsbCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAwKTsKKyAgICB2b2lkIGluaXRVSUV2
ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIGJvb2xl
YW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZhbHNl
LCBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlldyA9IG51bGwsIG9wdGlvbmFsIGxvbmcgZGV0YWls
ID0gMCk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsYXllclg7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGxvbmcgbGF5ZXJZOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1VJRXZlbnRJbml0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaAppbmRleCAw
MzE2YmMwNmY1Ni4uZTExMjhhNzZkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9V
SUV2ZW50SW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5oCkBAIC0y
NSwxNCArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJFdmVudEluaXQuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgVUlFdmVu
dEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKLSAgICBSZWZQdHI8RE9NV2luZG93PiB2aWV3Owor
ICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gdmlldzsKICAgICBpbnQgZGV0YWlsIHsgMCB9OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRJbml0LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5pZGwKaW5kZXggMGQ3ZWI4ZWZjMWMuLjNjY2JiZWQ2
MDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5pZGwKQEAgLTI0LDYgKzI0LDYgQEAKICAq
LwogCiBkaWN0aW9uYXJ5IFVJRXZlbnRJbml0IDogRXZlbnRJbml0IHsKLSAgICBET01XaW5kb3c/
IHZpZXcgPSBudWxsOworICAgIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbDsKICAgICBsb25nIGRl
dGFpbCA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRo
S2V5U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmgKaW5k
ZXggMGE4ZTQwMzEyNDguLjA4NWEwMzE3ZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVUlFdmVudFdpdGhLZXlTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50
V2l0aEtleVN0YXRlLmgKQEAgLTQwLDggKzQwLDggQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAg
IFVJRXZlbnRXaXRoS2V5U3RhdGUoKSA9IGRlZmF1bHQ7CiAKLSAgICBVSUV2ZW50V2l0aEtleVN0
YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgRE9NV2luZG93KiB2aWV3LCBpbnQgZGV0YWlsLCBib29sIGN0cmxLZXksIGJvb2wgYWx0
S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCi0gICAgICAgIDogVUlFdmVudCh0eXBl
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCkKKyAgICBVSUV2ZW50V2l0aEtl
eVN0YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBkZXRhaWwsIGJvb2wgY3Ry
bEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSkKKyAgICAgICAg
OiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0
YWlsKQogICAgICAgICAsIG1fY3RybEtleShjdHJsS2V5KQogICAgICAgICAsIG1fYWx0S2V5KGFs
dEtleSkKICAgICAgICAgLCBtX3NoaWZ0S2V5KHNoaWZ0S2V5KQpAQCAtNDksOSArNDksOSBAQCBw
cm90ZWN0ZWQ6CiAgICAgewogICAgIH0KIAotICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25v
dG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiB2aWV3LAorICAgIFVJRXZlbnRXaXRoS2V5
U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZp
ZXcsCiAgICAgICAgIGludCBkZXRhaWwsIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSwgYm9vbCBhbHRHcmFwaEtleSwgYm9vbCBjYXBzTG9ja0tl
eSkKLSAgICAgICAgICAgIDogVUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRp
bWVzdGFtcCwgdmlldywgZGV0YWlsKQorICAgICAgICAgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAg
ICAgICAgICAsIG1fY3RybEtleShjdHJsS2V5KQogICAgICAgICAgICAgLCBtX2FsdEtleShhbHRL
ZXkpCiAgICAgICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxF
dmVudC5jcHAKaW5kZXggZDJiOGZiNzJkOTEuLjUzN2NiMTkzYzgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1do
ZWVsRXZlbnQuY3BwCkBAIC00Nyw4ICs0Nyw4IEBAIGlubGluZSBXaGVlbEV2ZW50OjpXaGVlbEV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsCiB7
CiB9CiAKLWlubGluZSBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgZXZlbnQsIERPTVdpbmRvdyogdmlldykKLSAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1l
cygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRl
TW9ub3RvbmljVGltZSgpLCB2aWV3LCAwLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5w
b3NpdGlvbigpCitpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKKyAgICA6IE1vdXNl
RXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUsIGV2ZW50LnRpbWVzdGFt
cCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCBXVEZNb3ZlKHZpZXcpLCAwLCBldmVudC5n
bG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9D
SykKICAgICAgICAgLCB7IH0KICNlbmRpZgpAQCAtNjEsOSArNjEsOSBAQCBpbmxpbmUgV2hlZWxF
dmVudDo6V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBET01XaW5k
b3cqIHZpZXcpCiB7CiB9CiAKLVJlZjxXaGVlbEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB2aWV3KQorUmVmPFdoZWVs
RXZlbnQ+IFdoZWVsRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50
LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXaGVlbEV2ZW50KGV2ZW50LCB2aWV3KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2hl
ZWxFdmVudChldmVudCwgV1RGTW92ZSh2aWV3KSkpOwogfQogCiBSZWY8V2hlZWxFdmVudD4gV2hl
ZWxFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQpAQCAtNzYsMTIgKzc2LDEyIEBAIFJlZjxXaGVl
bEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25z
dCBJbml0JiBpbml0aWFsCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2hlZWxFdmVudCh0eXBl
LCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiB9CiAKLXZvaWQgV2hlZWxFdmVudDo6aW5pdFdl
YktpdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwgaW50IHJhd0RlbHRhWSwgRE9NV2luZG93KiB2
aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCit2b2lk
IFdoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGludCByYXdE
ZWx0YVksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVl
blksIGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29s
IHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpbml0TW91c2VFdmVudChldmVudE5hbWVzKCku
d2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgs
IHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCAwLCBudWxscHRyKTsK
KyAgICBpbml0TW91c2VFdmVudChldmVudE5hbWVzKCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwg
V1RGTW92ZSh2aWV3KSwgMCwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5
LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCAwLCBudWxscHRyKTsKIAogICAgIC8vIE5vcm1h
bGl6ZSB0byAxMjAgbXVsdGlwbGUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBJRS4KICAgICBtX3do
ZWVsRGVsdGEgPSB7IHJhd0RlbHRhWCAqIFRpY2tNdWx0aXBsaWVyLCByYXdEZWx0YVkgKiBUaWNr
TXVsdGlwbGllciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgKaW5kZXggNGQzNGIzMGQ2ZGUuLjEw
YjYyZTA1YzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVi
bGljOgogICAgICAgICBET01fREVMVEFfUEFHRQogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPFdo
ZWVsRXZlbnQ+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBET01XaW5kb3cqKTsK
KyAgICBzdGF0aWMgUmVmPFdoZWVsRXZlbnQ+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmLCBSZWZQdHI8V2luZG93UHJveHk+JiYpOwogICAgIHN0YXRpYyBSZWY8V2hlZWxFdmVudD4g
Y3JlYXRlRm9yQmluZGluZ3MoKTsKIAogICAgIHN0cnVjdCBJbml0IDogTW91c2VFdmVudEluaXQg
ewpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPFdoZWVsRXZlbnQ+
IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQg
PSBJc1RydXN0ZWQ6Ok5vKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdFdlYktpdFdo
ZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwgaW50IHJhd0RlbHRhWSwgRE9NV2luZG93KiwgaW50IHNj
cmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgYm9vbCBjdHJsS2V5LCBi
b29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGluaXRXZWJLaXRXaGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0
YVksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQg
cGFnZVgsIGludCBwYWdlWSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtl
eSwgYm9vbCBtZXRhS2V5KTsKIAogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1XaGVl
bEV2ZW50PiYgdW5kZXJseWluZ1BsYXRmb3JtRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX3VuZGVy
bHlpbmdQbGF0Zm9ybUV2ZW50OyB9CiAKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBXaGVlbEV2ZW50KCk7CiAgICAgV2hlZWxFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
LCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKLSAgICBXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYsIERPTVdpbmRvdyopOworICAgIFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKIAogICAgIEV2ZW50SW50ZXJmYWNl
IGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9XaGVlbEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50Lmlk
bAppbmRleCA5M2M1M2E0YmZiMi4uYjI4MWRhMWM2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9XaGVlbEV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVu
dC5pZGwKQEAgLTM5LDcgKzM5LDcgQEAKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFu
IHdlYmtpdERpcmVjdGlvbkludmVydGVkRnJvbURldmljZTsKIAotICAgIHZvaWQgaW5pdFdlYktp
dFdoZWVsRXZlbnQob3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWCA9IDAsIG9wdGlvbmFsIGxvbmcg
d2hlZWxEZWx0YVkgPSAwLCBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLAorICAgIHZv
aWQgaW5pdFdlYktpdFdoZWVsRXZlbnQob3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWCA9IDAsIG9w
dGlvbmFsIGxvbmcgd2hlZWxEZWx0YVkgPSAwLCBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlldyA9
IG51bGwsCiAgICAgICAgIG9wdGlvbmFsIGxvbmcgc2NyZWVuWCA9IDAsIG9wdGlvbmFsIGxvbmcg
c2NyZWVuWSA9IDAsIG9wdGlvbmFsIGxvbmcgY2xpZW50WCA9IDAsIG9wdGlvbmFsIGxvbmcgY2xp
ZW50WSA9IDAsCiAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY3RybEtleSA9IGZhbHNlLCBvcHRp
b25hbCBib29sZWFuIGFsdEtleSA9IGZhbHNlLAogICAgICAgICBvcHRpb25hbCBib29sZWFuIHNo
aWZ0S2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gbWV0YUtleSA9IGZhbHNlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3Bw
CmluZGV4IGQxNDcyNDI3NzIzLi5kNzNhNzFiMGUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCkBAIC02MzIsNyArNjMy
LDcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjppbnNlcnREaWN0YXRlZFRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWMKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0g
bV9mcmFtZS52aWV3KCkpCiAgICAgICAgIHZpZXctPmRpc2FibGVMYXllckZsdXNoVGhyb3R0bGlu
Z1RlbXBvcmFyaWx5Rm9ySW50ZXJhY3Rpb24oKTsKIAotICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50
ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24obV9mcmFtZS5kb2N1bWVudCgpLT5kb21X
aW5kb3coKSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICBSZWY8VGV4dEV2ZW50
PiBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlRm9yRGljdGF0aW9uKG1fZnJhbWUuZG9jdW1lbnQo
KS0+ZGVmYXVsdFZpZXcoKSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICBldmVu
dC0+c2V0VW5kZXJseWluZ0V2ZW50KHRyaWdnZXJpbmdFdmVudCk7CiAKICAgICB0YXJnZXQtPmRp
c3BhdGNoRXZlbnQoZXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGNiOGI2
YjhiYmFjLi40ZTM2OGJmZDgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNTY5
LDcgKzU2OSw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZUFzUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYg
cGFzdGluZ1RleHQsIGJvb2wgc21hcnRSZXBsYWNlKQogICAgIEVsZW1lbnQqIHRhcmdldCA9IGZp
bmRFdmVudFRhcmdldEZyb21TZWxlY3Rpb24oKTsKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAg
cmV0dXJuOwotICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvclBs
YWluVGV4dFBhc3RlKGRvY3VtZW50KCkuZG9tV2luZG93KCksIHBhc3RpbmdUZXh0LCBzbWFydFJl
cGxhY2UpKTsKKyAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JQ
bGFpblRleHRQYXN0ZShkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIHBhc3RpbmdUZXh0LCBzbWFy
dFJlcGxhY2UpKTsKIH0KIAogdm9pZCBFZGl0b3I6OnBhc3RlQXNGcmFnbWVudChSZWY8RG9jdW1l
bnRGcmFnbWVudD4mJiBwYXN0aW5nRnJhZ21lbnQsIGJvb2wgc21hcnRSZXBsYWNlLCBib29sIG1h
dGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgcmVzcGVjdHNNYWlsQmxvY2txdW90ZSkK
QEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVBc0ZyYWdtZW50KFJlZjxEb2N1
bWVudEZyYWdtZW50PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzbWFydAogICAgIEVsZW1lbnQq
IHRhcmdldCA9IGZpbmRFdmVudFRhcmdldEZyb21TZWxlY3Rpb24oKTsKICAgICBpZiAoIXRhcmdl
dCkKICAgICAgICAgcmV0dXJuOwotICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6
OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUoZG9jdW1lbnQoKS5kb21XaW5kb3coKSwgV1RGTW92ZShw
YXN0aW5nRnJhZ21lbnQpLCBzbWFydFJlcGxhY2UsIG1hdGNoU3R5bGUsIHJlc3BlY3RzTWFpbEJs
b2NrcXVvdGUpKTsKKyAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVG
b3JGcmFnbWVudFBhc3RlKGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgV1RGTW92ZShwYXN0aW5n
RnJhZ21lbnQpLCBzbWFydFJlcGxhY2UsIG1hdGNoU3R5bGUsIHJlc3BlY3RzTWFpbEJsb2NrcXVv
dGUpKTsKIH0KIAogdm9pZCBFZGl0b3I6OnBhc3RlQXNQbGFpblRleHRCeXBhc3NpbmdESFRNTCgp
CkBAIC0xODQ4LDcgKzE4NDgsNyBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3Qg
U3RyaW5nJiB0ZXh0LCBTZXRDb21wb3NpdGlvbk1vZGUgbW9kZSkKICAgICBpbnNlcnRUZXh0Rm9y
Q29uZmlybWVkQ29tcG9zaXRpb24odGV4dCk7CiAKICAgICBpZiAoYXV0byogdGFyZ2V0ID0gZG9j
dW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpKQotICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQo
Q29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50
LCBkb2N1bWVudCgpLmRvbVdpbmRvdygpLCB0ZXh0KSk7CisgICAgICAgIHRhcmdldC0+ZGlzcGF0
Y2hFdmVudChDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9u
ZW5kRXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdGV4dCkpOwogCiAgICAgaWYgKG1v
ZGUgPT0gQ2FuY2VsQ29tcG9zaXRpb24pIHsKICAgICAgICAgLy8gQW4gb3BlbiB0eXBpbmcgY29t
bWFuZCB0aGF0IGRpc2FncmVlcyBhYm91dCBjdXJyZW50IHNlbGVjdGlvbiB3b3VsZCBjYXVzZSBp
c3N1ZXMgd2l0aCB0eXBpbmcgbGF0ZXIgb24uCkBAIC0xOTA4LDExICsxOTA4LDExIEBAIHZvaWQg
RWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxD
b21wb3NpdGlvblVuZGVybGluCiAgICAgICAgICAgICAvLyBXZSBzaG91bGQgc2VuZCBhIGNvbXBv
c2l0aW9uc3RhcnQgZXZlbnQgb25seSB3aGVuIHRoZSBnaXZlbiB0ZXh0IGlzIG5vdCBlbXB0eSBi
ZWNhdXNlIHRoaXMKICAgICAgICAgICAgIC8vIGZ1bmN0aW9uIGRvZXNuJ3QgY3JlYXRlIGEgY29t
cG9zaXRpb24gbm9kZSB3aGVuIHRoZSB0ZXh0IGlzIGVtcHR5LgogICAgICAgICAgICAgaWYgKCF0
ZXh0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChD
b21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uc3RhcnRFdmVu
dCwgZG9jdW1lbnQoKS5kb21XaW5kb3coKSwgb3JpZ2luYWxUZXh0KSk7Ci0gICAgICAgICAgICAg
ICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0
aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZG9tV2luZG93KCksIHRleHQpOworICAgICAgICAg
ICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmNvbXBvc2l0aW9uc3RhcnRFdmVudCwgZG9jdW1lbnQoKS5kZWZhdWx0Vmlldygp
LCBvcmlnaW5hbFRleHQpKTsKKyAgICAgICAgICAgICAgICBldmVudCA9IENvbXBvc2l0aW9uRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb251cGRhdGVFdmVudCwgZG9jdW1lbnQo
KS5kZWZhdWx0VmlldygpLCB0ZXh0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlm
ICghdGV4dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb251cGRhdGVFdmVudCwgZG9jdW1lbnQoKS5k
b21XaW5kb3coKSwgdGV4dCk7CisgICAgICAgICAgICBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb251cGRhdGVFdmVudCwgZG9jdW1lbnQoKS5k
ZWZhdWx0VmlldygpLCB0ZXh0KTsKIAogICAgICAgICBpZiAoZXZlbnQpCiAgICAgICAgICAgICB0
YXJnZXQtPmRpc3BhdGNoRXZlbnQoKmV2ZW50KTsKQEAgLTE5MjMsNyArMTkyMyw3IEBAIHZvaWQg
RWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxD
b21wb3NpdGlvblVuZGVybGluCiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIFR5
cGluZ0NvbW1hbmQ6OmRlbGV0ZVNlbGVjdGlvbihkb2N1bWVudCgpLCBUeXBpbmdDb21tYW5kOjpQ
cmV2ZW50U3BlbGxDaGVja2luZywgVHlwaW5nQ29tbWFuZDo6VGV4dENvbXBvc2l0aW9uUGVuZGlu
Zyk7CiAgICAgICAgIGlmICh0YXJnZXQpCi0gICAgICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZl
bnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2
ZW50LCBkb2N1bWVudCgpLmRvbVdpbmRvdygpLCB0ZXh0KSk7CisgICAgICAgICAgICB0YXJnZXQt
PmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21w
b3NpdGlvbmVuZEV2ZW50LCBkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIHRleHQpKTsKICAgICB9
CiAKICAgICBtX2NvbXBvc2l0aW9uTm9kZSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
b2N1bWVudC5jcHAKaW5kZXggYTNkN2Q5NzcwY2UuLjlkNTgxY2VkZmE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgUmVmPERvY3VtZW50UGFy
c2VyPiBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiB9CiAKIC8vIGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2RvbS5odG1sI2RvbS1kb2N1bWVudC1uYW1lZGl0ZW0K
LXN0ZDo6b3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+
LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gSFRNTERvY3VtZW50OjpuYW1lZEl0ZW0oY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKQorc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxXaW5kb3dQ
cm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IEhUTUxEb2N1
bWVudDo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKICAgICBpZiAobmFt
ZS5pc051bGwoKSB8fCAhaGFzRG9jdW1lbnROYW1lZEl0ZW0oKm5hbWUuaW1wbCgpKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEyMiwxNiArMTIyLDE2IEBAIHN0ZDo6b3B0aW9u
YWw8VmFyaWFudDxSZWZQdHI8RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRN
TENvbGxlY3Rpb24+CiAgICAgaWYgKFVOTElLRUxZKGRvY3VtZW50TmFtZWRJdGVtQ29udGFpbnNN
dWx0aXBsZUVsZW1lbnRzKCpuYW1lLmltcGwoKSkpKSB7CiAgICAgICAgIGF1dG8gY29sbGVjdGlv
biA9IGRvY3VtZW50TmFtZWRJdGVtcyhuYW1lKTsKICAgICAgICAgQVNTRVJUKGNvbGxlY3Rpb24t
Pmxlbmd0aCgpID4gMSk7Ci0gICAgICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+
LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgUmVmUHRyPEhUTUxD
b2xsZWN0aW9uPiB7IFdURk1vdmUoY29sbGVjdGlvbikgfSB9OworICAgICAgICByZXR1cm4gVmFy
aWFudDxSZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29s
bGVjdGlvbj4+IHsgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiB7IFdURk1vdmUoY29sbGVjdGlvbikg
fSB9OwogICAgIH0KIAogICAgIGF1dG8mIGVsZW1lbnQgPSAqZG9jdW1lbnROYW1lZEl0ZW0oKm5h
bWUuaW1wbCgpKTsKICAgICBpZiAoVU5MSUtFTFkoaXM8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1l
bnQpKSkgewogICAgICAgICBpZiAoYXV0byBkb21XaW5kb3cgPSBtYWtlUmVmUHRyKGRvd25jYXN0
PEhUTUxJRnJhbWVFbGVtZW50PihlbGVtZW50KS5jb250ZW50V2luZG93KCkpKQotICAgICAgICAg
ICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVm
UHRyPEhUTUxDb2xsZWN0aW9uPj4geyBXVEZNb3ZlKGRvbVdpbmRvdykgfTsKKyAgICAgICAgICAg
IHJldHVybiBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVm
UHRyPEhUTUxDb2xsZWN0aW9uPj4geyBXVEZNb3ZlKGRvbVdpbmRvdykgfTsKICAgICB9CiAKLSAg
ICByZXR1cm4gVmFyaWFudDxSZWZQdHI8RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQ
dHI8SFRNTENvbGxlY3Rpb24+PiB7IFJlZlB0cjxFbGVtZW50PiB7ICZlbGVtZW50IH0gfTsKKyAg
ICByZXR1cm4gVmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8RWxlbWVudD4sIFJl
ZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgUmVmUHRyPEVsZW1lbnQ+IHsgJmVsZW1lbnQgfSB9Owog
fQogCiBWZWN0b3I8QXRvbWljU3RyaW5nPiBIVE1MRG9jdW1lbnQ6OnN1cHBvcnRlZFByb3BlcnR5
TmFtZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKaW5kZXggYTM2Mzk3NDA2
ZDMuLjBiM2QzNDE0YTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKQEAgLTQ0LDcg
KzQ0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGludCB3aWR0aCgpOwogICAgIFdF
QkNPUkVfRVhQT1JUIGludCBoZWlnaHQoKTsKICAgICAKLSAgICBzdGQ6Om9wdGlvbmFsPFZhcmlh
bnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0
aW9uPj4+IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRN
TENvbGxlY3Rpb24+Pj4gbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIFZlY3Rv
cjxBdG9taWNTdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdDsKIAogICAgIEVs
ZW1lbnQqIGRvY3VtZW50TmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIG5hbWUpIGNv
bnN0IHsgcmV0dXJuIG1fZG9jdW1lbnROYW1lZEl0ZW0uZ2V0RWxlbWVudEJ5RG9jdW1lbnROYW1l
ZEl0ZW0obmFtZSwgKnRoaXMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwKaW5k
ZXggMTI3ZjI2NDVlMDMuLmE5OTliMDNmNjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEb2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1l
bnQuaWRsCkBAIC0yMyw1ICsyMyw1IEBACiAgICAgTmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNo
cG9pbnRzLAogICAgIE92ZXJyaWRlQnVpbHRpbnMsCiBdIGludGVyZmFjZSBIVE1MRG9jdW1lbnQg
OiBEb2N1bWVudCB7ICAgIAotICAgIGdldHRlciAoRE9NV2luZG93IG9yIEVsZW1lbnQgb3IgSFRN
TENvbGxlY3Rpb24pIChET01TdHJpbmcgbmFtZSk7CisgICAgZ2V0dGVyIChXaW5kb3dQcm94eSBv
ciBFbGVtZW50IG9yIEhUTUxDb2xsZWN0aW9uKSAoRE9NU3RyaW5nIG5hbWUpOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCmluZGV4IGNkNjNhMjEyYWQ0Li5lZDdj
MGI2ZTI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCkBAIC0y
Niw3ICsyNiw3IEBAIGludGVyZmFjZSBIVE1MRnJhbWVFbGVtZW50IDogSFRNTEVsZW1lbnQgewog
ICAgIFtSZWZsZWN0LCBVUkxdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgbG9uZ0Rlc2M7CiAgICAgW1Jl
ZmxlY3RdIGF0dHJpYnV0ZSBib29sZWFuIG5vUmVzaXplOwogICAgIFtDaGVja1NlY3VyaXR5Rm9y
Tm9kZV0gcmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50IGNvbnRlbnREb2N1bWVudDsKLSAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IGNvbnRlbnRXaW5kb3c7CisgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFdpbmRvd1Byb3h5IGNvbnRlbnRXaW5kb3c7CiAKICAgICBbUmVmbGVjdF0gYXR0
cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1hcmdpbkhlaWdodDsK
ICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3Ry
aW5nIG1hcmdpbldpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVPd25lckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVs
ZW1lbnQuY3BwCmluZGV4IDU4ODczOTg0N2NiLi5iOWJlZjE3NjNlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcApAQCAtOTksOSArOTksOSBAQCBE
b2N1bWVudCogSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50RG9jdW1lbnQoKSBjb25zdAog
ICAgIHJldHVybiBtX2NvbnRlbnRGcmFtZSA/IG1fY29udGVudEZyYW1lLT5kb2N1bWVudCgpIDog
bnVsbHB0cjsKIH0KIAotRE9NV2luZG93KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRX
aW5kb3coKSBjb25zdAorV2luZG93UHJveHkqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVu
dFdpbmRvdygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8gbV9jb250ZW50
RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gbV9j
b250ZW50RnJhbWUgPyAmbV9jb250ZW50RnJhbWUtPndpbmRvd1Byb3h5KCkgOiBudWxscHRyOwog
fQogCiB2b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6c2V0U2FuZGJveEZsYWdzKFNhbmRib3hG
bGFncyBmbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5o
CmluZGV4IDg2NWVkZGI5MWY1Li44MGYxODIwMGRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5IVE1MRnJhbWVPd25lckVsZW1lbnQoKTsKIAogICAgIEZyYW1lKiBjb250ZW50RnJh
bWUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRGcmFtZTsgfQotICAgIFdFQkNPUkVfRVhQT1JU
IERPTVdpbmRvdyogY29udGVudFdpbmRvdygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFdp
bmRvd1Byb3h5KiBjb250ZW50V2luZG93KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgRG9j
dW1lbnQqIGNvbnRlbnREb2N1bWVudCgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRDb250ZW50RnJh
bWUoRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3Bw
CmluZGV4IDI4NTY0MjQ5NTBhLi41ZDIzN2Q0ODI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCkBAIC0yMzEsMTUgKzIzMSwxMyBAQCB2b2lkIEhUTUxG
cmFtZVNldEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5
cGUsIENvbnRhaW5lcgogICAgIH0KIH0KIAotRE9NV2luZG93KiBIVE1MRnJhbWVTZXRFbGVtZW50
OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorV2luZG93UHJveHkqIEhUTUxG
cmFtZVNldEVsZW1lbnQ6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7CiAg
ICAgYXV0byBmcmFtZUVsZW1lbnQgPSBtYWtlUmVmUHRyKGNoaWxkcmVuKCktPm5hbWVkSXRlbShu
YW1lKSk7CiAgICAgaWYgKCFpczxIVE1MRnJhbWVFbGVtZW50PihmcmFtZUVsZW1lbnQpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmIChhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0
cihkb3duY2FzdDxIVE1MRnJhbWVFbGVtZW50PihmcmFtZUVsZW1lbnQuZ2V0KCkpLT5jb250ZW50
RG9jdW1lbnQoKSkpCi0gICAgICAgIHJldHVybiBkb2N1bWVudC0+ZG9tV2luZG93KCk7Ci0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxGcmFtZUVsZW1lbnQ+KCpm
cmFtZUVsZW1lbnQpLmNvbnRlbnRXaW5kb3coKTsKIH0KIAogVmVjdG9yPEF0b21pY1N0cmluZz4g
SFRNTEZyYW1lU2V0RWxlbWVudDo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCmluZGV4IGQxZjM3OWI3MzVjLi5j
M2M2OGI1N2JmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgK
QEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8SFRNTEZyYW1lU2V0
RWxlbWVudD4gZmluZENvbnRhaW5pbmcoRWxlbWVudCogZGVzY2VuZGFudCk7CiAgICAgCiAgICAg
VmVjdG9yPEF0b21pY1N0cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0OwotICAg
IERPTVdpbmRvdyogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFdpbmRvd1By
b3h5KiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJik7CiAKIHByaXZhdGU6CiAgICAgSFRN
TEZyYW1lU2V0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsCmluZGV4IDMyNTBiOTQ5MGVk
Li42OTQyMTczZTc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVT
ZXRFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1l
bnQuaWRsCkBAIC0zMyw3ICszMyw3IEBAIGludGVyZmFjZSBIVE1MRnJhbWVTZXRFbGVtZW50IDog
SFRNTEVsZW1lbnQgewogCiAgICAgLy8gTm9uLXN0YW5kYXJkIG5hbWVkIGdldHRlcgogICAgIC8v
IEZJWE1FOiBUaGlzIGlzIG5vdCBpbiB0aGUgc3RhbmRhcmQsIGNhbiB3ZSByZW1vdmUgdGhpcz8K
LSAgICBnZXR0ZXIgRE9NV2luZG93IChET01TdHJpbmcgbmFtZSk7CisgICAgZ2V0dGVyIFdpbmRv
d1Byb3h5IChET01TdHJpbmcgbmFtZSk7CiB9OwogCiBIVE1MRnJhbWVTZXRFbGVtZW50IGltcGxl
bWVudHMgV2luZG93RXZlbnRIYW5kbGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1l
RWxlbWVudC5pZGwKaW5kZXggM2UzYmRjYzExMDQuLmMxNjM5MjJlZTQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbApAQCAtMzgsNyArMzgsNyBAQCBpbnRlcmZh
Y2UgSFRNTElGcmFtZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAKICAgICBbQ2hlY2tTZWN1cml0
eUZvck5vZGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBEb2N1bWVudCBjb250ZW50RG9jdW1lbnQ7CiAK
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IGNvbnRlbnRXaW5kb3c7CisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IGNvbnRlbnRXaW5kb3c7CiAKICAgICBbQ2hlY2tT
ZWN1cml0eUZvck5vZGUsIE1heVRocm93RXhjZXB0aW9uXSBEb2N1bWVudCBnZXRTVkdEb2N1bWVu
dCgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IGQxNTEyNzNh
MzU5Li44NWMxM2ZmN2YwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDaHJv
bWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIK
ICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXgg
YjAyM2E0ZTJlZjIuLjNlMmE5MTY2ZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBA
IC0xNDgsNyArMTQ4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogY2xhc3MgUG9z
dE1lc3NhZ2VUaW1lciA6IHB1YmxpYyBUaW1lckJhc2UgewogcHVibGljOgotICAgIFBvc3RNZXNz
YWdlVGltZXIoRE9NV2luZG93JiB3aW5kb3csIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIERPTVdpbmRvdyYgc291cmNlLCBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+JiYgdGFyZ2V0T3JpZ2luLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
PiYmIHN0YWNrVHJhY2UpCisgICAgUG9zdE1lc3NhZ2VUaW1lcihET01XaW5kb3cmIHdpbmRvdywg
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9y
aWdpbiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHNvdXJjZSwgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiYmIHRhcmdldE9yaWdpbiwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFja1RyYWNlKQog
ICAgICAgICA6IG1fd2luZG93KHdpbmRvdykKICAgICAgICAgLCBtX21lc3NhZ2UoV1RGTW92ZSht
ZXNzYWdlKSkKICAgICAgICAgLCBtX29yaWdpbihzb3VyY2VPcmlnaW4pCkBAIC0xNjEsNyArMTYx
LDcgQEAgcHVibGljOgogCiAgICAgUmVmPE1lc3NhZ2VFdmVudD4gZXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBNZXNzYWdlRXZlbnQ6
OmNyZWF0ZShNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhjb250ZXh0LCBXVEZNb3ZlKG1fbWVz
c2FnZS50cmFuc2ZlcnJlZFBvcnRzKSksIG1fbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxs
KCksIG1fb3JpZ2luLCB7IH0sIE1lc3NhZ2VFdmVudFNvdXJjZShSZWZQdHI8RE9NV2luZG93PihX
VEZNb3ZlKG1fc291cmNlKSkpKTsKKyAgICAgICAgcmV0dXJuIE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKGNvbnRleHQsIFdURk1vdmUobV9tZXNzYWdlLnRy
YW5zZmVycmVkUG9ydHMpKSwgbV9tZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgbV9v
cmlnaW4sIHsgfSwgbV9zb3VyY2UgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoTWVzc2FnZUV2ZW50U291
cmNlKFdURk1vdmUobV9zb3VyY2UpKSkgOiBzdGQ6Om51bGxvcHQpOwogICAgIH0KIAogICAgIFNl
Y3VyaXR5T3JpZ2luKiB0YXJnZXRPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3RhcmdldE9yaWdp
bi5nZXQoKTsgfQpAQCAtMTgwLDcgKzE4MCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPERPTVdpbmRv
dz4gbV93aW5kb3c7CiAgICAgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbV9tZXNzYWdlOwogICAg
IFN0cmluZyBtX29yaWdpbjsKLSAgICBSZWY8RE9NV2luZG93PiBtX3NvdXJjZTsKKyAgICBSZWZQ
dHI8V2luZG93UHJveHk+IG1fc291cmNlOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV90
YXJnZXRPcmlnaW47CiAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gbV9zdGFja1RyYWNlOwog
ICAgIFJlZlB0cjxVc2VyR2VzdHVyZVRva2VuPiBtX3VzZXJHZXN0dXJlVG9Gb3J3YXJkOwpAQCAt
OTYwLDcgKzk2MCw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVdpbmRvdzo6cG9zdE1lc3NhZ2Uo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBET01XaW5kb3cmIGluY3VtCiAgICAgTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMgbWVzc2FnZSB7IG1lc3NhZ2VEYXRhLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBk
aXNlbnRhbmdsZWRQb3J0cy5yZWxlYXNlUmV0dXJuVmFsdWUoKSB9OwogCiAgICAgLy8gU2NoZWR1
bGUgdGhlIG1lc3NhZ2UuCi0gICAgYXV0byogdGltZXIgPSBuZXcgUG9zdE1lc3NhZ2VUaW1lcigq
dGhpcywgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luLCBpbmN1bWJlbnRXaW5kb3csIFdU
Rk1vdmUodGFyZ2V0KSwgV1RGTW92ZShzdGFja1RyYWNlKSk7CisgICAgUmVmUHRyPFdpbmRvd1By
b3h5PiBpbmN1bWJlbnRXaW5kb3dQcm94eSA9IGluY3VtYmVudFdpbmRvdy5mcmFtZSgpID8gJmlu
Y3VtYmVudFdpbmRvdy5mcmFtZSgpLT53aW5kb3dQcm94eSgpIDogbnVsbHB0cjsKKyAgICBhdXRv
KiB0aW1lciA9IG5ldyBQb3N0TWVzc2FnZVRpbWVyKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpLCBz
b3VyY2VPcmlnaW4sIFdURk1vdmUoaW5jdW1iZW50V2luZG93UHJveHkpLCBXVEZNb3ZlKHRhcmdl
dCksIFdURk1vdmUoc3RhY2tUcmFjZSkpOwogICAgIHRpbWVyLT5zdGFydE9uZVNob3QoMF9zKTsK
IAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUG9zdE1lc3NhZ2UoKm1fZnJhbWUs
ICp0aW1lciwgc3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRl
eCA5MTc0YWZkNTMyMS4uN2M0OWEyMTdmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCkBAIC01MDgsNyArNTA4LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6ZGlzcGF0
Y2hUZXh0SW5wdXRFdmVudEZvcihGcmFtZSogaW5uZXJGcmFtZSwgY29uc3QgRHJhZ0RhdGEKICAg
ICBTdHJpbmcgdGV4dCA9IG1fcGFnZS5kcmFnQ2FyZXRDb250cm9sbGVyKCkuaXNDb250ZW50Umlj
aGx5RWRpdGFibGUoKSA/IGVtcHR5U3RyaW5nKCkgOiBkcmFnRGF0YS5hc1BsYWluVGV4dCgpOwog
ICAgIEVsZW1lbnQqIHRhcmdldCA9IGlubmVyRnJhbWUtPmVkaXRvcigpLmZpbmRFdmVudFRhcmdl
dEZyb20obV9wYWdlLmRyYWdDYXJldENvbnRyb2xsZXIoKS5jYXJldFBvc2l0aW9uKCkpOwogICAg
IC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGFyZ2V0IGlzIG5vdCBudWxsPwotICAgIGF1dG8g
ZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3AoaW5uZXJGcmFtZS0+ZG9jdW1lbnQoKS0+
ZG9tV2luZG93KCksIHRleHQpOworICAgIGF1dG8gZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZUZv
ckRyb3AoaW5uZXJGcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgdGV4dCk7CiAgICAg
dGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKICAgICByZXR1cm4gIWV2ZW50LT5kZWZhdWx0
UHJldmVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggODdk
MTI3NzRjYzYuLjdkMmM5M2EzYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CkBAIC0zODAyLDcgKzM4MDIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVGV4dElucHV0
RXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFdmVudCogdW5kZXJseWluZ0V2ZQogICAgIGlmIChG
cmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkKICAgICAgICAgdmlldy0+ZGlzYWJsZUxh
eWVyRmx1c2hUaHJvdHRsaW5nVGVtcG9yYXJpbHlGb3JJbnRlcmFjdGlvbigpOwogCi0gICAgUmVm
PFRleHRFdmVudD4gZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCkt
PmRvbVdpbmRvdygpLCB0ZXh0LCBpbnB1dFR5cGUpOworICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50
ID0gVGV4dEV2ZW50OjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCB0
ZXh0LCBpbnB1dFR5cGUpOwogICAgIGV2ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQodW5kZXJseWlu
Z0V2ZW50KTsKIAogICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCmluZGV4IGE4NDI2NWFhNzkzLi5mZDY5MDQzYmYzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKQEAgLTIxMiw2ICsyMTIsNyBAQCBSZWY8RnJhbWU+IEZyYW1lOjpjcmVhdGUoUGFnZSogcGFn
ZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIEZyYW1lTAogCiBGcmFtZTo6
fkZyYW1lKCkKIHsKKyAgICB3aW5kb3dQcm94eSgpLmNsZWFyKCk7CiAgICAgc2V0VmlldyhudWxs
cHRyKTsKICAgICBsb2FkZXIoKS5jYW5jZWxBbmRDbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlldy5tbQppbmRleCAxYTRjMjliMWIwZC4uMTY5
ZTRhZTVmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0
cmFjdFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0
Vmlldy5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dpbmRvd1Byb3h5Lmg+CiAKICNkZWZp
bmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkZyYW1lKj4oX2ludGVybmFsKQogCkBA
IC0xMDAsMyArMTAxLDE5IEBAIERPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OkFic3RyYWN0
RE9NV2luZG93KiB2YWx1ZSkKIAogICAgIHJldHVybiBraXQoZG93bmNhc3Q8V2ViQ29yZTo6RE9N
V2luZG93Pih2YWx1ZSkpOwogfQorCitET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpXaW5k
b3dQcm94eSogd2luZG93UHJveHkpCit7CisgICAgaWYgKCF3aW5kb3dQcm94eSkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKworICAgIHJldHVybiBraXQod2luZG93UHJveHktPndpbmRvdygpKTsKK30K
KworV2ViQ29yZTo6V2luZG93UHJveHkqIHRvV2luZG93UHJveHkoRE9NQWJzdHJhY3RWaWV3ICp2
aWV3KQoreworICAgIGF1dG8qIHdpbmRvdyA9IGNvcmUodmlldyk7CisgICAgaWYgKCF3aW5kb3cg
fHwgIXdpbmRvdy0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gJndp
bmRvdy0+ZnJhbWUoKS0+d2luZG93UHJveHkoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmgKaW5kZXggYzRkNzMyNWM3
ZjIuLjM1OWYwNWViNGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaApAQCAtMjgsMTEgKzI4LDE0IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBBYnN0cmFjdERPTVdpbmRvdzsKIGNsYXNzIERPTVdpbmRvdzsK
K2NsYXNzIFdpbmRvd1Byb3h5OwogfQogCiBXZWJDb3JlOjpET01XaW5kb3cqIGNvcmUoRE9NQWJz
dHJhY3RWaWV3ICopOwogRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6RE9NV2luZG93Kik7
CiBET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpBYnN0cmFjdERPTVdpbmRvdyopOworRE9N
QWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6V2luZG93UHJveHkqKTsKK1dlYkNvcmU6OldpbmRv
d1Byb3h5KiB0b1dpbmRvd1Byb3h5KERPTUFic3RyYWN0VmlldyAqKTsKIAogQGludGVyZmFjZSBE
T01BYnN0cmFjdFZpZXcgKFdlYktpdExlZ2FjeUludGVybmFsKQogLSAodm9pZClfZGlzY29ubmVj
dEZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3Vt
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCmluZGV4
IDZjMmYzNmQ4MjRhLi5hN2I4MTM0MDA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01Eb2N1bWVudC5tbQpAQCAtODQsNiArODQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9UcmVl
V2Fsa2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dpbmRvd1Byb3h5Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1hQYXRoRXhwcmVzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9YUGF0
aE5TUmVzb2x2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvWFBhdGhSZXN1bHQuaD4KQEAgLTE2Miw3
ICsxNjMsMTAgQEAgLSAodm9pZClzZXREb2N1bWVudFVSSTooTlNTdHJpbmcgKiluZXdEb2N1bWVu
dFVSSQogLSAoRE9NQWJzdHJhY3RWaWV3ICopZGVmYXVsdFZpZXcKIHsKICAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJ
TVBMLT5kZWZhdWx0VmlldygpKSk7CisgICAgYXV0byogZGVmYXVsdFZpZXcgPSBJTVBMLT5kZWZh
dWx0VmlldygpOworICAgIGlmICghZGVmYXVsdFZpZXcpCisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgcmV0dXJuIGtpdChkZWZhdWx0Vmlldy0+d2luZG93KCkpOwogfQogCiAtIChET01TdHlsZVNo
ZWV0TGlzdCAqKXN0eWxlU2hlZXRzCkBAIC02ODQsNyArNjg4LDcgQEAgLSAoRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbiAqKWdldENvbXB1dGVkU3R5bGU6KERPTUVsZW1lbnQgKillbGVtZW50IHBzZXVk
b0VsZW1lbnQKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAg
aWYgKCFlbGVtZW50KQogICAgICAgICByYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOwotICAgIFdl
YkNvcmU6OkRPTVdpbmRvdyogZHYgPSBJTVBMLT5kZWZhdWx0VmlldygpOworICAgIFdlYkNvcmU6
OkRPTVdpbmRvdyogZHYgPSBJTVBMLT5kb21XaW5kb3coKTsKICAgICBpZiAoIWR2KQogICAgICAg
ICByZXR1cm4gbmlsOwogICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoZHYtPmdldENvbXB1dGVk
U3R5bGUoKmNvcmUoZWxlbWVudCksIHBzZXVkb0VsZW1lbnQpKSk7CkBAIC02OTgsNyArNzAyLDcg
QEAgLSAoRE9NQ1NTUnVsZUxpc3QgKilnZXRNYXRjaGVkQ1NTUnVsZXM6KERPTUVsZW1lbnQgKill
bGVtZW50IHBzZXVkb0VsZW1lbnQ6KE5TU3QKIC0gKERPTUNTU1J1bGVMaXN0ICopZ2V0TWF0Y2hl
ZENTU1J1bGVzOihET01FbGVtZW50ICopZWxlbWVudCBwc2V1ZG9FbGVtZW50OihOU1N0cmluZyAq
KXBzZXVkb0VsZW1lbnQgYXV0aG9yT25seTooQk9PTClhdXRob3JPbmx5CiB7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkRPTVdpbmRvdyog
ZHYgPSBJTVBMLT5kZWZhdWx0VmlldygpOworICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogZHYgPSBJ
TVBMLT5kb21XaW5kb3coKTsKICAgICBpZiAoIWR2KQogICAgICAgICByZXR1cm4gbmlsOwogICAg
IHJldHVybiBraXQoV1RGOjpnZXRQdHIoZHYtPmdldE1hdGNoZWRDU1NSdWxlcyhjb3JlKGVsZW1l
bnQpLCBwc2V1ZG9FbGVtZW50LCBhdXRob3JPbmx5KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQppbmRleCA5NzdlYjRhNmI4Mi4u
ZDVhYjAxMWY4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MRnJhbWVFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MRnJhbWVFbGVtZW50Lm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Ro
cmVhZENoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dpbmRvd1Byb3h5Lmg+
CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MRnJhbWVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKQEAgLTE0OCw3ICsxNDksMTAgQEAgLSAoRE9NRG9jdW1lbnQgKiljb250ZW50
RG9jdW1lbnQKIC0gKERPTUFic3RyYWN0VmlldyAqKWNvbnRlbnRXaW5kb3cKIHsKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6Omdl
dFB0cihJTVBMLT5jb250ZW50V2luZG93KCkpKTsKKyAgICBhdXRvKiBjb250ZW50V2luZG93ID0g
SU1QTC0+Y29udGVudFdpbmRvdygpOworICAgIGlmICghY29udGVudFdpbmRvdykKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICByZXR1cm4ga2l0KGNvbnRlbnRXaW5kb3ctPndpbmRvdygpKTsKIH0K
IAogLSAoTlNTdHJpbmcgKilsb2NhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tCmluZGV4IGIxYjJjMDMxOGIyLi42ZWEzNzNh
YzMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJh
bWVFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSUZy
YW1lRWxlbWVudC5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRD
aGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9XaW5kb3dQcm94eS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
SFRNTElGcmFtZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50
ZXJuYWwpKQpAQCAtMTk2LDcgKzE5NywxMCBAQCAtIChET01Eb2N1bWVudCAqKWNvbnRlbnREb2N1
bWVudAogLSAoRE9NQWJzdHJhY3RWaWV3ICopY29udGVudFdpbmRvdwogewogICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRy
KElNUEwtPmNvbnRlbnRXaW5kb3coKSkpOworICAgIGF1dG8qIGNvbnRlbnRXaW5kb3cgPSBJTVBM
LT5jb250ZW50V2luZG93KCk7CisgICAgaWYgKCFjb250ZW50V2luZG93KQorICAgICAgICByZXR1
cm4gbmlsOworICAgIHJldHVybiBraXQoY29udGVudFdpbmRvdy0+d2luZG93KCkpOwogfQogCiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRF
dmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01LZXlib2FyZEV2ZW50Lm1t
CmluZGV4IGU5YWIxZmVmZTc0Li5iYTJmYmU0ZTE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0KQEAgLTExMCwyNSArMTEwLDI1IEBAIC0g
KEJPT0wpZ2V0TW9kaWZpZXJTdGF0ZTooTlNTdHJpbmcgKilrZXlJZGVudGlmaWVyQXJnCiAtICh2
b2lkKWluaXRLZXlib2FyZEV2ZW50OihOU1N0cmluZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNh
bkJ1YmJsZSBjYW5jZWxhYmxlOihCT09MKWNhbmNlbGFibGUgdmlldzooRE9NQWJzdHJhY3RWaWV3
ICopdmlldyBrZXlJZGVudGlmaWVyOihOU1N0cmluZyAqKWluS2V5SWRlbnRpZmllciBsb2NhdGlv
bjoodW5zaWduZWQpaW5Mb2NhdGlvbiBjdHJsS2V5OihCT09MKWluQ3RybEtleSBhbHRLZXk6KEJP
T0wpaW5BbHRLZXkgc2hpZnRLZXk6KEJPT0wpaW5TaGlmdEtleSBtZXRhS2V5OihCT09MKWluTWV0
YUtleSBhbHRHcmFwaEtleTooQk9PTClpbkFsdEdyYXBoS2V5CiB7CiAgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50KHR5
cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29yZSh2aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBp
bkxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXksIGlu
QWx0R3JhcGhLZXkpOworICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBpbkxv
Y2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXksIGluQWx0
R3JhcGhLZXkpOwogfQogCiAtICh2b2lkKWluaXRLZXlib2FyZEV2ZW50OihOU1N0cmluZyAqKXR5
cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihCT09MKWNhbmNlbGFibGUg
dmlldzooRE9NQWJzdHJhY3RWaWV3ICopdmlldyBrZXlJZGVudGlmaWVyOihOU1N0cmluZyAqKWlu
S2V5SWRlbnRpZmllciBsb2NhdGlvbjoodW5zaWduZWQpaW5Mb2NhdGlvbiBjdHJsS2V5OihCT09M
KWluQ3RybEtleSBhbHRLZXk6KEJPT0wpaW5BbHRLZXkgc2hpZnRLZXk6KEJPT0wpaW5TaGlmdEtl
eSBtZXRhS2V5OihCT09MKWluTWV0YUtleQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJi
bGUsIGNhbmNlbGFibGUsIGNvcmUodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5Mb2NhdGlvbiwg
aW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5KTsKKyAgICBJTVBMLT5p
bml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRvV2luZG93UHJv
eHkodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5Mb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtl
eSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5KTsKIH0KIAogLSAodm9pZClpbml0S2V5Ym9hcmRFdmVu
dDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZToo
Qk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKXZpZXcga2V5SWRlbnRpZmll
cjooTlNTdHJpbmcgKilpbktleUlkZW50aWZpZXIga2V5TG9jYXRpb246KHVuc2lnbmVkKWluS2V5
TG9jYXRpb24gY3RybEtleTooQk9PTClpbkN0cmxLZXkgYWx0S2V5OihCT09MKWluQWx0S2V5IHNo
aWZ0S2V5OihCT09MKWluU2hpZnRLZXkgbWV0YUtleTooQk9PTClpbk1ldGFLZXkgYWx0R3JhcGhL
ZXk6KEJPT0wpaW5BbHRHcmFwaEtleQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUs
IGNhbmNlbGFibGUsIGNvcmUodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5LZXlMb2NhdGlvbiwg
aW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkFsdEdyYXBoS2V5
KTsKKyAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIHRvV2luZG93UHJveHkodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5LZXlMb2NhdGlvbiwg
aW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkFsdEdyYXBoS2V5
KTsKIH0KIAogLSAodm9pZClpbml0S2V5Ym9hcmRFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1
YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERP
TUFic3RyYWN0VmlldyAqKXZpZXcga2V5SWRlbnRpZmllcjooTlNTdHJpbmcgKilpbktleUlkZW50
aWZpZXIga2V5TG9jYXRpb246KHVuc2lnbmVkKWluS2V5TG9jYXRpb24gY3RybEtleTooQk9PTClp
bkN0cmxLZXkgYWx0S2V5OihCT09MKWluQWx0S2V5IHNoaWZ0S2V5OihCT09MKWluU2hpZnRLZXkg
bWV0YUtleTooQk9PTClpbk1ldGFLZXkKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxl
LCBjYW5jZWxhYmxlLCBjb3JlKHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluS2V5TG9jYXRpb24s
IGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSk7CisgICAgSU1QTC0+
aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRvd1By
b3h5KHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluS2V5TG9jYXRpb24sIGluQ3RybEtleSwgaW5B
bHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KaW5kZXggN2M3ZTBkZGZmMTQuLmU1MTVk
ODkzNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTW91c2VF
dmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTW91c2VFdmVudC5t
bQpAQCAtMTQ1LDcgKzE0NSw3IEBAIC0gKHZvaWQpaW5pdE1vdXNlRXZlbnQ6KE5TU3RyaW5nICop
dHlwZSBjYW5CdWJibGU6KEJPT0wpY2FuQnViYmxlIGNhbmNlbGFibGU6KEJPCiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIERPTU5vZGUqIGluUmVsYXRlZFRh
cmdldE9iakMgPSBpblJlbGF0ZWRUYXJnZXQ7CiAgICAgV2ViQ29yZTo6Tm9kZSogaW5SZWxhdGVk
VGFyZ2V0Tm9kZSA9IGNvcmUoaW5SZWxhdGVkVGFyZ2V0T2JqQyk7Ci0gICAgSU1QTC0+aW5pdE1v
dXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBjb3JlKHZpZXcpLCBkZXRhaWws
IGluU2NyZWVuWCwgaW5TY3JlZW5ZLCBpbkNsaWVudFgsIGluQ2xpZW50WSwgaW5DdHJsS2V5LCBp
bkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkJ1dHRvbiwgaW5SZWxhdGVkVGFyZ2V0
Tm9kZSk7CisgICAgSU1QTC0+aW5pdE1vdXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxh
YmxlLCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBkZXRhaWwsIGluU2NyZWVuWCwgaW5TY3JlZW5ZLCBp
bkNsaWVudFgsIGluQ2xpZW50WSwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5N
ZXRhS2V5LCBpbkJ1dHRvbiwgaW5SZWxhdGVkVGFyZ2V0Tm9kZSk7CiB9CiAKIEBlbmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tCmluZGV4IDI4NjdiYzgwMjM5
Li5kZmE3NjIwMjRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TVRleHRFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2
ZW50Lm1tCkBAIC01MCw3ICs1MCw3IEBAIC0gKE5TU3RyaW5nICopZGF0YQogLSAodm9pZClpbml0
VGV4dEV2ZW50OihOU1N0cmluZyAqKXR5cGVBcmcgY2FuQnViYmxlQXJnOihCT09MKWNhbkJ1YmJs
ZUFyZyBjYW5jZWxhYmxlQXJnOihCT09MKWNhbmNlbGFibGVBcmcgdmlld0FyZzooRE9NQWJzdHJh
Y3RWaWV3ICopdmlld0FyZyBkYXRhQXJnOihOU1N0cmluZyAqKWRhdGFBcmcKIHsKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+aW5pdFRleHRFdmVu
dCh0eXBlQXJnLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsIGNvcmUodmlld0FyZyksIGRh
dGFBcmcpOworICAgIElNUEwtPmluaXRUZXh0RXZlbnQodHlwZUFyZywgY2FuQnViYmxlQXJnLCBj
YW5jZWxhYmxlQXJnLCB0b1dpbmRvd1Byb3h5KHZpZXdBcmcpLCBkYXRhQXJnKTsKIH0KIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJRXZlbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbQppbmRleCBhNDY0ZGFj
ZmJmNS4uOTEwMzc5ZTY1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01VSUV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2
ZW50Lm1tCkBAIC00NSw3ICs0NSw5IEBAIEBpbXBsZW1lbnRhdGlvbiBET01VSUV2ZW50CiAtIChE
T01BYnN0cmFjdFZpZXcgKil2aWV3CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+dmlldygpKSk7Cisg
ICAgaWYgKCFJTVBMLT52aWV3KCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIGtp
dChJTVBMLT52aWV3KCktPndpbmRvdygpKTsKIH0KIAogLSAoaW50KWRldGFpbApAQCAtMTAzLDcg
KzEwNSw3IEBAIC0gKGludCl3aGljaAogLSAodm9pZClpbml0VUlFdmVudDooTlNTdHJpbmcgKil0
eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxl
IHZpZXc6KERPTUFic3RyYWN0VmlldyAqKWluVmlldyBkZXRhaWw6KGludClpbkRldGFpbAogewog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0
VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUoaW5WaWV3KSwgaW5EZXRh
aWwpOworICAgIElNUEwtPmluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwg
dG9XaW5kb3dQcm94eShpblZpZXcpLCBpbkRldGFpbCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01XaGVlbEV2ZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQubW0KaW5kZXggOGYwNTY5Y2E2YTMuLmRk
NGE1N2IwZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NV2hl
ZWxFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NV2hlZWxFdmVu
dC5tbQpAQCAtOTYsNyArOTYsNyBAQCAtIChCT09MKWlzSG9yaXpvbnRhbAogLSAodm9pZClpbml0
V2hlZWxFdmVudDooaW50KWluV2hlZWxEZWx0YVggd2hlZWxEZWx0YVk6KGludClpbldoZWVsRGVs
dGFZIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKXZpZXcgc2NyZWVuWDooaW50KXNjcmVlblggc2Ny
ZWVuWTooaW50KXNjcmVlblkgY2xpZW50WDooaW50KWNsaWVudFggY2xpZW50WTooaW50KWNsaWVu
dFkgY3RybEtleTooQk9PTCljdHJsS2V5IGFsdEtleTooQk9PTClhbHRLZXkgc2hpZnRLZXk6KEJP
T0wpc2hpZnRLZXkgbWV0YUtleTooQk9PTCltZXRhS2V5CiB7CiAgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmluaXRXZWJLaXRXaGVlbEV2ZW50KGlu
V2hlZWxEZWx0YVgsIGluV2hlZWxEZWx0YVksIGNvcmUodmlldyksIHNjcmVlblgsIHNjcmVlblks
IGNsaWVudFgsIGNsaWVudFksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpOwor
ICAgIElNUEwtPmluaXRXZWJLaXRXaGVlbEV2ZW50KGluV2hlZWxEZWx0YVgsIGluV2hlZWxEZWx0
YVksIHRvV2luZG93UHJveHkodmlldyksIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVu
dFksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpOwogfQogCiBAZW5kCg==
</data>
<flag name="commit-queue"
          id="357110"
          type_id="3"
          status="-"
          setter="ews-watchlist"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338874</attachid>
            <date>2018-04-26 08:53:16 -0700</date>
            <delta_ts>2018-04-26 09:15:58 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>185022_use_WindowProxy_everywhere_wip.patch</filename>
            <type>text/plain</type>
            <size>114474</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAzMGY2NDZlYzc4OC4uMDExNGYyMDU4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzNjUsNyArMjM2NSw2IEBACiAJ
CTgzQjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBOYXRpdmVOb2RlRmlsdGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0U5NTlFMTFCOEJDMjJCMDA0
RDkzODUgLyogTmF0aXZlTm9kZUZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTgzQjc0RUY2MUYzRTBCRjIwMDk5NkJDNyAvKiBLZWVwYWxp
dmVSZXF1ZXN0VHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODNCNzRFRjMxRjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFj
a2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODNCOTY4N0IxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCOTY4NzkxOUY4QUI4
MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oICovOyB9OwotCQk4M0I5RTcwQjIw
ODZCQTQzMDBFNUQ3NTYgLyogSlNET01Db252ZXJ0V2luZG93UHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjlFNzA5MjA4NkJBMjcwMEU1RDc1
NiAvKiBKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQkI1Qzg4MUQ1RDZGNDUwMDVBNzFGNCAvKiBBbGxE
ZXNjZW5kYW50c0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzQkI1Qzg3MUQ1RDZGM0EwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50c0Nv
bGxlY3Rpb24uaCAqLzsgfTsKIAkJODNDMDVBNUIxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJv
cGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kRnVuY3Rpb25zLmggKi87IH07CiAJCTgzQzFENDI1MTc4RDVBQjQwMDE0MUU2OCAv
KiBTVkdQYXRoU2VnQXJjQWJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4M0MxRDQxMzE3OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0FyY0Ficy5o
ICovOyB9OwpAQCAtOTg3Nyw3ICs5ODc2LDYgQEAKIAkJODNCNzRFRjIxRjNFMEJENzAwOTk2QkM3
IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNCNzRFRjMxRjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVl
c3RUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtlZXBhbGl2ZVJl
cXVlc3RUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjk2ODc5MTlG
OEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVCdWlsZGVyQ29udmVydGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTgzQjlFNzA5MjA4NkJBMjcwMEU1RDc1NiAvKiBKU0RPTUNvbnZlcnRX
aW5kb3dQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUNvbnZl
cnRXaW5kb3dQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0JCNUM4NzFE
NUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4M0MwNUE1ODFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNDMDVBNTkxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJv
cGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTk4MzUsNyArMTk4MzMsNiBAQAogCQkJCTdDOEUzNEFBMUU0QTMzOEUwMDU0
Q0UyMyAvKiBKU0RPTUNvbnZlcnRWYXJpYWRpYy5oICovLAogCQkJCTdDQkE1QkE2MUYwQjRCREUw
MDM0RDc0NSAvKiBKU0RPTUNvbnZlcnRXZWJHTC5jcHAgKi8sCiAJCQkJN0M4RTM0QUIxRTRBMzM4
RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFdlYkdMLmggKi8sCi0JCQkJODNCOUU3MDkyMDg2QkEy
NzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggKi8sCiAJCQkJN0M4RTM0QUMx
RTRBMzM4RTAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFhQYXRoTlNSZXNvbHZlci5oICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBDb252ZXJzaW9uczsKQEAgLTI4NDE2LDcgKzI4NDEzLDYgQEAKIAkJCQk3
QzhFMzRDNDFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0VW5pb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDOEUzNEM1MUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRWYXJpYWRp
Yy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4RTM0QzYxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9N
Q29udmVydFdlYkdMLmggaW4gSGVhZGVycyAqLywKLQkJCQk4M0I5RTcwQjIwODZCQTQzMDBFNUQ3
NTYgLyogSlNET01Db252ZXJ0V2luZG93UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUz
NEM3MUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZDOUUwRTREMTY0MTlDMUUwMDM5MkJFMyAvKiBKU0RPTUNTU05hbWVz
cGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2MEQ3QzEwRDI5QTQ2MzAwQjk5MThGIC8qIEpT
RE9NRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL0lETFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5o
CmluZGV4IDVmZTc3ZTgzZjIzLi5lYmYzZDM0YzgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvSURMVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExU
eXBlcy5oCkBAIC01NCw2ICs1NCw3IEBAIGNsYXNzIElEQlZhbHVlOwogY2xhc3MgSlNXaW5kb3dQ
cm94eTsKIGNsYXNzIERPTVByb21pc2U7CiBjbGFzcyBTY2hlZHVsZWRBY3Rpb247CitjbGFzcyBX
aW5kb3dQcm94eTsKIAogI2lmIEVOQUJMRShXRUJHTCkKIGNsYXNzIFdlYkdMRXh0ZW5zaW9uOwpA
QCAtMjc0LDcgKzI3NSw2IEBAIHN0cnVjdCBJRExTY2hlZHVsZWRBY3Rpb24gOiBJRExUeXBlPHN0
ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+PiB7IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgSURMU2VyaWFsaXplZFNjcmlwdFZhbHVlIDogSURMV3JhcHBlcjxUPiB7IH07CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMRXZlbnRMaXN0ZW5lciA6IElETFdyYXBwZXI8
VD4geyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFhQYXRoTlNSZXNvbHZlciA6
IElETFdyYXBwZXI8VD4geyB9Owotc3RydWN0IElETFdpbmRvd1Byb3h5IDogSURMV3JhcHBlcjxK
U1dpbmRvd1Byb3h5PiB7IH07CiAKIHN0cnVjdCBJRExJREJLZXkgOiBJRExXcmFwcGVyPElEQktl
eT4geyB9Owogc3RydWN0IElETElEQktleURhdGEgOiBJRExXcmFwcGVyPElEQktleURhdGE+IHsg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdp
bmRvd1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5k
b3dQcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MmMxZmY0ODE5Mi4uMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2lu
ZG93UHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIklETFR5cGVzLmgiCi0jaW5jbHVkZSAiSlNET01Db252
ZXJ0QmFzZS5oIgotI2luY2x1ZGUgIkpTV2luZG93UHJveHkuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExXaW5kb3dQcm94eT4gewot
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc1N0YXRlID0gdHJ1ZTsKLSAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgbmVlZHNHbG9iYWxPYmplY3QgPSBmYWxzZTsKLQotICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBVPgotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udmVydChKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIFUmJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0b0pTKCZzdGF0
ZSwgc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7Ci0gICAgfQotfTsKLQotfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmNwcAppbmRleCAxODg2NzFlNDliMS4uYTRi
MTgwNWM2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHku
Y3BwCkBAIC0xMTksNiArMTE5LDEyIEBAIHZvaWQgSlNXaW5kb3dQcm94eTo6c2V0V2luZG93KEFi
c3RyYWN0RE9NV2luZG93JiBkb21XaW5kb3cpCiAgICAgQVNTRVJUKHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkgPT0gd2luZG93KTsKIH0KIAorV2luZG93UHJveHkqIEpTV2luZG93UHJveHk6Ondp
bmRvd1Byb3h5KCkgY29uc3QKK3sKKyAgICBhdXRvJiB3aW5kb3cgPSB3cmFwcGVkKCk7CisgICAg
cmV0dXJuIHdpbmRvdy5mcmFtZSgpID8gJndpbmRvdy5mcmFtZSgpLT53aW5kb3dQcm94eSgpIDog
bnVsbHB0cjsKK30KKwogdm9pZCBKU1dpbmRvd1Byb3h5OjphdHRhY2hEZWJ1Z2dlcihKU0M6OkRl
YnVnZ2VyKiBkZWJ1Z2dlcikKIHsKICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB3aW5kb3coKTsK
QEAgLTEzOCwxMiArMTQ0LDYgQEAgQWJzdHJhY3RET01XaW5kb3cmIEpTV2luZG93UHJveHk6Ondy
YXBwZWQoKSBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4od2luZG93
KS0+d3JhcHBlZCgpOwogfQogCi1BYnN0cmFjdERPTVdpbmRvdyogSlNXaW5kb3dQcm94eTo6dG9X
cmFwcGVkKFZNJiB2bSwgSlNPYmplY3QqIHZhbHVlKQotewotICAgIGF1dG8qIHdyYXBwZXIgPSBq
c0R5bmFtaWNDYXN0PEpTV2luZG93UHJveHkqPih2bSwgdmFsdWUpOwotICAgIHJldHVybiB3cmFw
cGVyID8gJndyYXBwZXItPndyYXBwZWQoKSA6IG51bGxwdHI7Ci19Ci0KIEpTVmFsdWUgdG9KUyhF
eGVjU3RhdGUqIHN0YXRlLCBXaW5kb3dQcm94eSYgd2luZG93UHJveHkpCiB7CiAgICAgcmV0dXJu
ICZ3aW5kb3dQcm94eS5qc1dpbmRvd1Byb3h5KGN1cnJlbnRXb3JsZCgqc3RhdGUpKTsKQEAgLTE1
NCw0ICsxNTQsMTQgQEAgSlNXaW5kb3dQcm94eSYgdG9KU1dpbmRvd1Byb3h5KFdpbmRvd1Byb3h5
JiB3aW5kb3dQcm94eSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKICAgICByZXR1cm4gd2luZG93
UHJveHkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiB9CiAKK1dpbmRvd1Byb3h5KiBKU1dpbmRvd1By
b3h5Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmICghdmFsdWUu
aXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgSlNPYmplY3QqIG9iamVj
dCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBpZiAob2JqZWN0LT5pbmhlcml0czxKU1dpbmRvd1By
b3h5Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNXaW5kb3dQcm94eSo+KG9iamVjdCkt
PndpbmRvd1Byb3h5KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93
UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaAppbmRl
eCAxODVhNTQ1NzhiZi4uMzYyNDBkODY2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2luZG93UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dpbmRvd1Byb3h5LmgKQEAgLTI4LDcgKzI4LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlICJKU0RPTUNvbnZlcnRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5o
IgorI2luY2x1ZGUgIldpbmRvd1Byb3h5LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNQ
cm94eS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM5LDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBBYnN0cmFjdERPTVdpbmRvdzsKIGNsYXNzIEFic3RyYWN0RnJhbWU7
Ci1jbGFzcyBXaW5kb3dQcm94eTsKIAogY2xhc3MgSlNXaW5kb3dQcm94eSBmaW5hbCA6IHB1Ymxp
YyBKU0M6OkpTUHJveHkgewogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTUHJveHk7CkBAIC01Myw4
ICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXaW5kb3coSlNDOjpWTSYsIEpTRE9NR2xv
YmFsT2JqZWN0Jik7CiAgICAgdm9pZCBzZXRXaW5kb3coQWJzdHJhY3RET01XaW5kb3cmKTsKIAor
ICAgIFdpbmRvd1Byb3h5KiB3aW5kb3dQcm94eSgpIGNvbnN0OworCiAgICAgQWJzdHJhY3RET01X
aW5kb3cmIHdyYXBwZWQoKSBjb25zdDsKLSAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgQWJzdHJh
Y3RET01XaW5kb3cqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU09iamVjdCopOworICAgIHN0
YXRpYyBXRUJDT1JFX0VYUE9SVCBXaW5kb3dQcm94eSogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6
OkpTVmFsdWUpOwogCiAgICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCgpIHsgcmV0dXJuIG1fd29y
bGQ7IH0KIApAQCAtNzEsMTAgKzc0LDE2IEBAIHByaXZhdGU6CiAvLyBJdCBpcywgaG93ZXZlciwg
c3Ryb25nbHkgb3duZWQgYnkgQWJzdHJhY3RGcmFtZSB2aWEgaXRzIFdpbmRvd1Byb3h5LCBzbyB3
ZSBjYW4gZ2V0IG9uZSBmcm9tIGEgV2luZG93UHJveHkuCiBXRUJDT1JFX0VYUE9SVCBKU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIFdpbmRvd1Byb3h5Jik7CiBpbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBXaW5kb3dQcm94eSogd2luZG93UHJv
eHkpIHsgcmV0dXJuIHdpbmRvd1Byb3h5ID8gdG9KUyhzdGF0ZSwgKndpbmRvd1Byb3h5KSA6IEpT
Qzo6anNOdWxsKCk7IH0KLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIGNvbnN0IFJlZlB0cjxXaW5kb3dQcm94eT4mIHdpbmRvd1Byb3h5KSB7IHJldHVybiB0
b0pTKHN0YXRlLCB3aW5kb3dQcm94eS5nZXQoKSk7IH0KK2lubGluZSBKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiwgV2luZG93UHJveHkm
IHdpbmRvd1Byb3h5KSB7IHJldHVybiB0b0pTKHN0YXRlLCB3aW5kb3dQcm94eSk7IH0KK2lubGlu
ZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFdpbmRvd1Byb3h5KiB3aW5kb3dQcm94eSkgeyByZXR1cm4gd2lu
ZG93UHJveHkgPyB0b0pTKHN0YXRlLCBnbG9iYWxPYmplY3QsICp3aW5kb3dQcm94eSkgOiBKU0M6
OmpzTnVsbCgpOyB9CiAKIEpTV2luZG93UHJveHkmIHRvSlNXaW5kb3dQcm94eShXaW5kb3dQcm94
eSYsIERPTVdyYXBwZXJXb3JsZCYpOwogaW5saW5lIEpTV2luZG93UHJveHkqIHRvSlNXaW5kb3dQ
cm94eShXaW5kb3dQcm94eSogd2luZG93UHJveHksIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpIHsg
cmV0dXJuIHdpbmRvd1Byb3h5ID8gJnRvSlNXaW5kb3dQcm94eSgqd2luZG93UHJveHksIHdvcmxk
KSA6IG51bGxwdHI7IH0KIAogCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0
ZXJUcmFpdHM8V2luZG93UHJveHk+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1dpbmRv
d1Byb3h5OworICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBXaW5kb3dQcm94eSo7Cit9
OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XaW5kb3dQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
aW5kb3dQcm94eS5jcHAKaW5kZXggOGU4ZjUxMzUzZWQuLmUyMmY2MmMwMzk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAj
aW5jbHVkZSAiQ29tbW9uVk0uaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkdDQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIkpTV2luZG93UHJveHkuaCIKICNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIK
QEAgLTUzLDEyICs1NCwxNyBAQCBXaW5kb3dQcm94eTo6V2luZG93UHJveHkoQWJzdHJhY3RGcmFt
ZSYgZnJhbWUpCiB9CiAKIFdpbmRvd1Byb3h5Ojp+V2luZG93UHJveHkoKQoreworICAgIGNsZWFy
KCk7Cit9CisKK3ZvaWQgV2luZG93UHJveHk6OmNsZWFyKCkKIHsKICAgICAvLyBJdCdzIGxpa2Vs
eSB0aGF0IGRlc3Ryb3lpbmcgd2luZG93UHJveGllcyB3aWxsIGNyZWF0ZSBhIGxvdCBvZiBnYXJi
YWdlLgogICAgIGlmICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIHdo
aWxlICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBhdXRvIGl0
ID0gbV9qc1dpbmRvd1Byb3hpZXMuYmVnaW4oKTsKLSAgICAgICAgICAgIGl0LT52YWx1ZS0+d2lu
ZG93KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CisgICAgICAgICAgICAvL2l0LT52YWx1
ZS0+d2luZG93KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CiAgICAgICAgICAgICBkZXN0
cm95SlNXaW5kb3dQcm94eSgqaXQtPmtleSk7CiAgICAgICAgIH0KICAgICAgICAgY29sbGVjdEdh
cmJhZ2VBZnRlcldpbmRvd1Byb3h5RGVzdHJ1Y3Rpb24oKTsKQEAgLTkxLDYgKzk3LDExIEBAIFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU1dpbmRvd1Byb3h5Pj4gV2luZG93UHJveHk6OmpzV2luZG93UHJv
eGllc0FzVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fanNXaW5kb3dQ
cm94aWVzLnZhbHVlcygpKTsKIH0KIAorSlNET01HbG9iYWxPYmplY3QqIFdpbmRvd1Byb3h5Ojpn
bG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICByZXR1cm4ganNXaW5k
b3dQcm94eSh3b3JsZCkud2luZG93KCk7Cit9CisKIEpTV2luZG93UHJveHkmIFdpbmRvd1Byb3h5
OjpjcmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaAppbmRleCA3NzcyMjk4M2IwYS4uZmZhZDlm
ZTU4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaApAQCAtMjAs
NyArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTV2luZG93UHJveHkuaCIK
KyNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC0zMCw3ICszMCwxMCBAQCBj
bGFzcyBEZWJ1Z2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBYnN0cmFjdERP
TVdpbmRvdzsKIGNsYXNzIEFic3RyYWN0RnJhbWU7CitjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsK
K2NsYXNzIEpTV2luZG93UHJveHk7CiAKIGNsYXNzIFdpbmRvd1Byb3h5IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQwLDYgKzQzLDggQEAgcHVibGljOgogICAgIGV4cGxpY2l0
IFdpbmRvd1Byb3h5KEFic3RyYWN0RnJhbWUmKTsKICAgICB+V2luZG93UHJveHkoKTsKIAorICAg
IEFic3RyYWN0RnJhbWUmIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQorCiAgICAg
dm9pZCBkZXN0cm95SlNXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmKTsKIAogICAgIFByb3h5
TWFwOjpWYWx1ZXNDb25zdEl0ZXJhdG9yUmFuZ2UganNXaW5kb3dQcm94aWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9qc1dpbmRvd1Byb3hpZXMudmFsdWVzKCk7IH0KQEAgLTYzLDEwICs2OCw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIChpdCAhPSBtX2pzV2luZG93UHJveGllcy5lbmQoKSkgPyBp
dC0+dmFsdWUuZ2V0KCkgOiBudWxscHRyOwogICAgIH0KIAotICAgIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBqc1dpbmRvd1Byb3h5KHdvcmxkKS53aW5kb3coKTsKLSAgICB9CisgICAgV0VCQ09SRV9F
WFBPUlQgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChET01XcmFwcGVyV29ybGQmKTsK
IAogICAgIHZvaWQgY2xlYXJKU1dpbmRvd1Byb3hpZXNOb3RNYXRjaGluZ0RPTVdpbmRvdyhBYnN0
cmFjdERPTVdpbmRvdyosIGJvb2wgZ29pbmdJbnRvUGFnZUNhY2hlKTsKIApAQCAtODAsNiArODIs
OCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWYoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRlcmVmKCk7CiAKKyAgICB2b2lkIGNsZWFyKCk7CisKIHByaXZhdGU6CiAg
ICAgSlNXaW5kb3dQcm94eSYgY3JlYXRlSlNXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBKU1dpbmRvd1Byb3h5JiBjcmVhdGVKU1dpbmRvd1Byb3h5V2l0
aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IDk1MjQyOWEwZTQ5Li4y
ZmNmZWUzYTdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvci5wbQpAQCAtODkxLDcgKzg5MSw2IEBAIHN1YiBJc0J1aWx0aW5UeXBlCiAgICAg
cmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIlhQYXRoTlNSZXNvbHZlciI7CiAgICAgcmV0dXJu
IDEgaWYgJHR5cGUtPm5hbWUgZXEgImFueSI7CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUg
ZXEgIm9iamVjdCI7Ci0gICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5
IjsKIAogICAgIHJldHVybiAwOwogfQpAQCAtMTAwMSw2ICsxMDAwLDcgQEAgc3ViIENvbXB1dGVJ
c0NhbGxiYWNrSW50ZXJmYWNlCiAgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBl
KSBuZSAiSURMVHlwZSI7CiAKICAgICByZXR1cm4gMCB1bmxlc3MgJG9iamVjdC0+SXNJbnRlcmZh
Y2VUeXBlKCR0eXBlKTsKKyAgICByZXR1cm4gMCBpZiAkdHlwZS0+bmFtZSBlcSAiV2luZG93UHJv
eHkiOwogCiAgICAgbXkgJHR5cGVOYW1lID0gJHR5cGUtPm5hbWU7CiAgICAgbXkgJGlkbEZpbGUg
PSAkb2JqZWN0LT5JRExGaWxlRm9ySW50ZXJmYWNlKCR0eXBlTmFtZSkgb3IgYXNzZXJ0KCJDb3Vs
ZCBOT1QgZmluZCBJREwgZmlsZSBmb3IgaW50ZXJmYWNlIFwiJHR5cGVOYW1lXCIhXG4iKTsKQEAg
LTEwMzgsNiArMTAzOCw3IEBAIHN1YiBDb21wdXRlSXNDYWxsYmFja0Z1bmN0aW9uCiAgICAgYXNz
ZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICByZXR1
cm4gMCB1bmxlc3MgJG9iamVjdC0+SXNJbnRlcmZhY2VUeXBlKCR0eXBlKTsKKyAgICByZXR1cm4g
MCBpZiAkdHlwZS0+bmFtZSBlcSAiV2luZG93UHJveHkiOwogCiAgICAgbXkgJHR5cGVOYW1lID0g
JHR5cGUtPm5hbWU7CiAgICAgbXkgJGlkbEZpbGUgPSAkb2JqZWN0LT5JRExGaWxlRm9ySW50ZXJm
YWNlKCR0eXBlTmFtZSkgb3IgYXNzZXJ0KCJDb3VsZCBOT1QgZmluZCBJREwgZmlsZSBmb3IgaW50
ZXJmYWNlIFwiJHR5cGVOYW1lXCIhXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNjI2YTlmMGIyZDYuLjMwYTM3NGMy
ODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQpAQCAtNDIxLDEzICs0MjEsNiBAQCBzdWIgQWRkVG9JbmNsdWRlc0ZvcklETFR5
cGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICgkdHlwZS0+bmFtZSBlcSAiV2lu
ZG93UHJveHkiKSB7Ci0gICAgICAgIEFkZFRvSW5jbHVkZXMoIldpbmRvd1Byb3h5LmgiLCAkaW5j
bHVkZXNSZWYsICRjb25kaXRpb25hbCk7Ci0gICAgICAgIEFkZFRvSW5jbHVkZXMoIkpTV2luZG93
UHJveHkuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAgQWRkVG9JbmNs
dWRlcygiSlNET01Db252ZXJ0V2luZG93UHJveHkuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlv
bmFsKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGlmICgkY29kZUdlbmVyYXRvci0+
SXNTdHJpbmdUeXBlKCR0eXBlKSkgewogICAgICAgICBBZGRUb0luY2x1ZGVzKCJKU0RPTUNvbnZl
cnRTdHJpbmdzLmgiLCAkaW5jbHVkZXNSZWYsICRjb25kaXRpb25hbCk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTYzOTMsNyArNjM4Niw2IEBAIHN1YiBHZXRCYXNlSURMVHlwZQogICAgICAgICAiSlNP
TiIgPT4gIklETEpTT04iLAogICAgICAgICAiU2NoZWR1bGVkQWN0aW9uIiA9PiAiSURMU2NoZWR1
bGVkQWN0aW9uIiwKICAgICAgICAgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIgPT4gIklETFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IiwKLSAgICAgICAgIldpbmRv
d1Byb3h5IiA9PiAiSURMV2luZG93UHJveHkiLAogICAgICAgICAiWFBhdGhOU1Jlc29sdmVyIiA9
PiAiSURMWFBhdGhOU1Jlc29sdmVyPFhQYXRoTlNSZXNvbHZlcj4iLAogICAgICk7CiAKQEAgLTY1
NTQsNyArNjU0Niw2IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWVET01Db252ZXJ0TmVlZHNTdGF0ZQog
ICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJKU09OIjsKICAgICByZXR1cm4gMSBpZiAk
dHlwZS0+bmFtZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIjsKICAgICByZXR1cm4gMSBpZiAk
dHlwZS0+bmFtZSBlcSAiWFBhdGhOU1Jlc29sdmVyIjsKLSAgICByZXR1cm4gMSBpZiAkdHlwZS0+
bmFtZSBlcSAiV2luZG93UHJveHkiOwogICAgIAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApp
bmRleCBiYTQ1YmI5OGYyMS4uYzA0NjZjMjY2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC01NSw3ICs1NSw2
IEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlv
blJldHVybmluZ1Byb21pc2UuaCIKICNpbmNsdWRlICJKU0RPTVN0cmluZ0xpc3QuaCIKLSNpbmNs
dWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgpAQCAtNjk1
Nyw3ICs2OTU2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDlCb2QKICAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8gd2luZG93ID0gY29udmVydDxJRExJbnRl
cmZhY2U8RE9NV2luZG93Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFtd
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgIndpbmRvdyIsICJUZXN0T2JqZWN0Iiwg
Im92ZXJsb2FkZWRNZXRob2QiLCAiRE9NV2luZG93Iik7IH0pOworICAgIGF1dG8gd2luZG93ID0g
Y29udmVydDxJRExJbnRlcmZhY2U8V2luZG93UHJveHk+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAid2luZG93
IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJXaW5kb3dQcm94eSIpOyB9KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqd2luZG93KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNzAyOSw3ICs3MDI4LDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZE92ZXIKICAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2Q2Qm9keShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CiAg
ICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0KGRpc3Rp
bmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNUZXN0T2JqPih2bSkpCiAgICAgICAgICAgICByZXR1
cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOEJvZHkoc3RhdGUs
IGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwotICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcu
aXNPYmplY3QoKSAmJiAoYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU1dp
bmRvd1Byb3h5Pih2bSkgfHwgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0czxK
U0RPTVdpbmRvdz4odm0pKSkKKyAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0
KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU1dpbmRvd1Byb3h5
Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kOUJvZHkoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwogICAgICAg
ICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiBhc09iamVjdChkaXN0aW5ndWlz
aGluZ0FyZyktPmluaGVyaXRzPEpTQmxvYj4odm0pKQogICAgICAgICAgICAgcmV0dXJuIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEzQm9keShzdGF0ZSwgY2FzdGVk
VGhpcywgdGhyb3dTY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggYzgzZWVlZWRiZjQuLjcxZGRmYzQ4OWVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC0y
ODYsNyArMjg2LDcgQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdyIg
fTsKICAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoRE9NU3RyaW5nTGlzdD8gbGlzdEFyZyk7
CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKHNlcXVlbmNlPERPTVN0cmluZz4/IGFycmF5
QXJnKTsKICAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoVGVzdE9iaiBvYmpBcmcpOwotICAg
IHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChET01XaW5kb3cgd2luZG93KTsKKyAgICB2b2lkICAg
IG92ZXJsb2FkZWRNZXRob2QoV2luZG93UHJveHkgd2luZG93KTsKICAgICB2b2lkICAgIG92ZXJs
b2FkZWRNZXRob2Qoc2VxdWVuY2U8RE9NU3RyaW5nPiBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBv
dmVybG9hZGVkTWV0aG9kKHNlcXVlbmNlPHVuc2lnbmVkIGxvbmc+IGFycmF5QXJnKTsKICAgICB2
b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoRE9NU3RyaW5nIHN0ckFyZyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29tcG9zaXRpb25FdmVudC5jcHAKaW5kZXggMGUzOGE2NzE4Y2QuLjAwN2FmN2Q3MjRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCkBAIC0zMSw4ICszMSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ29tcG9zaXRpb25FdmVudDo6Q29tcG9zaXRpb25FdmVu
dCgpID0gZGVmYXVsdDsKIAotQ29tcG9zaXRpb25FdmVudDo6Q29tcG9zaXRpb25FdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRh
KQotICAgIDogVUlFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCB2aWV3LCAwKQorQ29tcG9zaXRpb25F
dmVudDo6Q29tcG9zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCisgICAgOiBVSUV2ZW50KHR5
cGUsIHRydWUsIHRydWUsIFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2RhdGEoZGF0YSkKIHsK
IH0KQEAgLTQ1LDEyICs0NSwxMiBAQCBDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbAogCiBDb21wb3Np
dGlvbkV2ZW50Ojp+Q29tcG9zaXRpb25FdmVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBDb21wb3Np
dGlvbkV2ZW50Ojppbml0Q29tcG9zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgY29uc3Qg
U3RyaW5nJiBkYXRhKQordm9pZCBDb21wb3NpdGlvbkV2ZW50Ojppbml0Q29tcG9zaXRpb25FdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7CiAg
ICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRV
SUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgMCk7CisgICAgaW5pdFVJ
RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCAwKTsKIAog
ICAgIG1fZGF0YSA9IGRhdGE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29t
cG9zaXRpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaApp
bmRleCA4ZmYwMmVjOTY5Ny4uM2IxYzQ2ZDYzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21wb3NpdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0
aW9uRXZlbnQuaApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENvbXBvc2l0aW9uRXZlbnQgZmluYWwgOiBwdWJsaWMgVUlFdmVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKKyAgICBzdGF0aWMgUmVm
PENvbXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21wb3NpdGlvbkV2ZW50KHR5cGUsIHZpZXcsIGRhdGEp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29tcG9zaXRpb25FdmVudCh0eXBlLCBX
VEZNb3ZlKHZpZXcpLCBkYXRhKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZjxDb21wb3NpdGlv
bkV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgfkNvbXBvc2l0aW9uRXZlbnQoKTsKIAotICAgIHZvaWQgaW5pdENvbXBvc2l0
aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBj
YW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgIHZvaWQgaW5p
dENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYg
ZGF0YSk7CiAKICAgICBTdHJpbmcgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCkBA
IC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBDb21wb3NpdGlvbkV2ZW50
KCk7Ci0gICAgQ29tcG9zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIERPTVdp
bmRvdyosIGNvbnN0IFN0cmluZyYpOworICAgIENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYpOwogICAg
IENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0Jiwg
SXNUcnVzdGVkKTsKIAogICAgIGJvb2wgaXNDb21wb3NpdGlvbkV2ZW50KCkgY29uc3Qgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5pZGwKaW5kZXggZDg3MjQwODgz
ZTIuLjIwYWFjN2VhNDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRp
b25FdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRs
CkBAIC0zMyw3ICszMyw3IEBACiAgICAgdm9pZCBpbml0Q29tcG9zaXRpb25FdmVudChvcHRpb25h
bCBET01TdHJpbmcgdHlwZUFyZyA9ICJ1bmRlZmluZWQiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGVBcmcgPSBmYWxzZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZUFyZyA9IGZh
bHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NV2luZG93PyB2
aWV3QXJnID0gbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFdp
bmRvd1Byb3h5PyB2aWV3QXJnID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wdGlvbmFsIERPTVN0cmluZyBkYXRhQXJnID0gInVuZGVmaW5lZCIpOwogCiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggODZmODNlNzI2NDIuLjc4ZjhiZTI3ZTk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKQEAgLTQyODAsNiArNDI4MCwxMyBAQCB2b2lkIERvY3VtZW50Ojp0YWtl
RE9NV2luZG93RnJvbShEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgQVNTRVJUKG1fZG9tV2luZG93
LT5mcmFtZSgpID09IG1fZnJhbWUpOwogfQogCitXaW5kb3dQcm94eSogRG9jdW1lbnQ6OmRlZmF1
bHRWaWV3KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiAmbV9mcmFtZS0+d2luZG93UHJveHkoKTsKK30KKwogRG9jdW1lbnQm
IERvY3VtZW50Ojpjb250ZXh0RG9jdW1lbnQoKSBjb25zdAogewogICAgIGlmIChtX2NvbnRleHRE
b2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYTRmYjAyZjllMWIuLjg1YTI1NjUyMWI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNzk5LDcgKzc5OSw3IEBAIHB1YmxpYzoKIAogICAg
IERPTVdpbmRvdyogZG9tV2luZG93KCkgY29uc3QgeyByZXR1cm4gbV9kb21XaW5kb3cuZ2V0KCk7
IH0KICAgICAvLyBJbiBET00gTGV2ZWwgMiwgdGhlIERvY3VtZW50J3MgRE9NV2luZG93IGlzIGNh
bGxlZCB0aGUgZGVmYXVsdFZpZXcuCi0gICAgRE9NV2luZG93KiBkZWZhdWx0VmlldygpIGNvbnN0
IHsgcmV0dXJuIGRvbVdpbmRvdygpOyB9IAorICAgIFdFQkNPUkVfRVhQT1JUIFdpbmRvd1Byb3h5
KiBkZWZhdWx0VmlldygpIGNvbnN0OwogCiAgICAgRG9jdW1lbnQmIGNvbnRleHREb2N1bWVudCgp
IGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4dERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkg
eyBtX2NvbnRleHREb2N1bWVudCA9IGRvY3VtZW50LmNyZWF0ZVdlYWtQdHIoKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5pZGwKaW5kZXggMmQ1YmFhZDhjNjAuLjA4ZjcyYTkyMDAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5pZGwKQEAgLTExMyw3ICsxMTMsNyBAQCB0eXBlZGVmICgKICAgICBbQ0VSZWFj
dGlvbnMsIENhbGxXaXRoPVJlc3BvbnNpYmxlRG9jdW1lbnQsIE1heVRocm93RXhjZXB0aW9uXSB2
b2lkIHdyaXRlbG4oRE9NU3RyaW5nLi4uIHRleHQpOwogCiAgICAgLy8gVXNlciBpbnRlcmFjdGlv
bi4KLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93PyBkZWZhdWx0VmlldzsKKyAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHk/IGRlZmF1bHRWaWV3OwogICAgIGJvb2xlYW4g
aGFzRm9jdXMoKTsKICAgICBbQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBET01TdHJpbmcgZGVzaWdu
TW9kZTsKICAgICBbQ0VSZWFjdGlvbnNdIGJvb2xlYW4gZXhlY0NvbW1hbmQoRE9NU3RyaW5nIGNv
bW1hbmRJZCwgb3B0aW9uYWwgYm9vbGVhbiBzaG93VUkgPSBmYWxzZSwgb3B0aW9uYWwgRE9NU3Ry
aW5nPyB2YWx1ZSA9IG51bGwpOyAvLyBGSVhNRTogdmFsdWUgc2hvdWxkIG5vdCBiZSBudWxsYWJs
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmNwcAppbmRleCAzZDkxMjNkOGY3NS4uYmRk
YWVhNzUzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5jcHAKQEAgLTM1LDEzICsz
NSwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxUb3VjaD4gRG9jdW1lbnRUb3Vj
aDo6Y3JlYXRlVG91Y2goRG9jdW1lbnQmIGRvY3VtZW50LCBET01XaW5kb3cqIHdpbmRvdywgRXZl
bnRUYXJnZXQqIHRhcmdldCwgaW50IGlkZW50aWZpZXIsIGludCBwYWdlWCwgaW50IHBhZ2VZLCBp
bnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSwgZmxvYXQg
cm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2UpCitSZWY8VG91Y2g+IERvY3VtZW50VG91Y2g6OmNy
ZWF0ZVRvdWNoKERvY3VtZW50JiBkb2N1bWVudCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHdpbmRv
dywgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGlkZW50aWZpZXIsIGludCBwYWdlWCwgaW50IHBh
Z2VZLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSwg
ZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2UpCiB7CisgICAgRnJhbWUqIGZyYW1lOwor
ICAgIGlmICh3aW5kb3cgJiYgaXM8RnJhbWU+KHdpbmRvdy0+ZnJhbWUoKSkpCisgICAgICAgIGZy
YW1lID0gZG93bmNhc3Q8RnJhbWU+KHdpbmRvdy0+ZnJhbWUoKSk7CisgICAgZWxzZQorICAgICAg
ICBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CisKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xl
YXIgZnJvbSB0aGUgZG9jdW1lbnRhdGlvbiBhdAogICAgIC8vIGh0dHA6Ly9kZXZlbG9wZXIuYXBw
bGUuY29tL2xpYnJhcnkvc2FmYXJpLyNkb2N1bWVudGF0aW9uL1VzZXJFeHBlcmllbmNlL1JlZmVy
ZW5jZS9Eb2N1bWVudEFkZGl0aW9uc1JlZmVyZW5jZS9Eb2N1bWVudEFkZGl0aW9ucy9Eb2N1bWVu
dEFkZGl0aW9ucy5odG1sCiAgICAgLy8gd2hlbiB0aGlzIG1ldGhvZCBzaG91bGQgdGhyb3cgYW5k
IG5vciBpcyBpdCBieSBpbnNwZWN0aW9uIG9mIGlPUyBiZWhhdmlvci4gSXQgd291bGQgYmUgbmlj
ZSB0byB2ZXJpZnkgYW55IGNhc2VzIHdoZXJlIGl0IHRocm93cyB1bmRlciBpT1MKICAgICAvLyBh
bmQgaW1wbGVtZW50IHRoZW0gaGVyZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NzgxOQotICAgIHJldHVybiBUb3VjaDo6Y3JlYXRlKHdpbmRvdyA/IHdpbmRv
dy0+ZnJhbWUoKSA6IGRvY3VtZW50LmZyYW1lKCksIHRhcmdldCwgaWRlbnRpZmllciwgc2NyZWVu
WCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCByYWRpdXNYLCByYWRpdXNZLCByb3RhdGlvbkFuZ2xl
LCBmb3JjZSk7CisgICAgcmV0dXJuIFRvdWNoOjpjcmVhdGUoZnJhbWUsIHRhcmdldCwgaWRlbnRp
Zmllciwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCByYWRpdXNYLCByYWRpdXNZLCBy
b3RhdGlvbkFuZ2xlLCBmb3JjZSk7CiB9CiAKIFJlZjxUb3VjaExpc3Q+IERvY3VtZW50VG91Y2g6
OmNyZWF0ZVRvdWNoTGlzdChEb2N1bWVudCYsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PFRvdWNoPj4mJiB0b3VjaGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50VG91Y2guaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmgKaW5kZXggZTBk
YWY1MDUyY2MuLmU4NjFlYzY3YzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRUb3VjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmgKQEAg
LTQyLDcgKzQyLDcgQEAgY2xhc3MgVG91Y2hMaXN0OwogCiBjbGFzcyBEb2N1bWVudFRvdWNoIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFRvdWNoPiBjcmVhdGVUb3VjaChEb2N1bWVudCYsIERP
TVdpbmRvdyosIEV2ZW50VGFyZ2V0KiwgaW50IGlkZW50aWZpZXIsIGludCBwYWdlWCwgaW50IHBh
Z2VZLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSwg
ZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2UpOworICAgIHN0YXRpYyBSZWY8VG91Y2g+
IGNyZWF0ZVRvdWNoKERvY3VtZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBFdmVudFRhcmdl
dCosIGludCBpZGVudGlmaWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUs
IGZsb2F0IGZvcmNlKTsKICAgICBzdGF0aWMgUmVmPFRvdWNoTGlzdD4gY3JlYXRlVG91Y2hMaXN0
KERvY3VtZW50JiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmKTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmlkbAppbmRleCA3YTI3Mzc0NTg2NS4uMDQ4
OWEzNmFkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5pZGwKQEAgLTIyLDcgKzIy
LDcgQEAKICAgICBDb25kaXRpb25hbD1UT1VDSF9FVkVOVFMKIF0gcGFydGlhbCBpbnRlcmZhY2Ug
RG9jdW1lbnQgewogICAgIC8vIEZJWE1FOiBUaGlzIGhhcyBiZWVuIGRyb3BwZWQgZnJvbSB0aGUg
c3RhbmRhcmQgbm93IHRoYXQgVG91Y2ggaGFzIGEgY29uc3RydWN0b3IuCi0gICAgW05ld09iamVj
dF0gVG91Y2ggY3JlYXRlVG91Y2gob3B0aW9uYWwgRE9NV2luZG93PyB3aW5kb3cgPSBudWxsLCBv
cHRpb25hbCBFdmVudFRhcmdldD8gdGFyZ2V0ID0gbnVsbCwKKyAgICBbTmV3T2JqZWN0XSBUb3Vj
aCBjcmVhdGVUb3VjaChvcHRpb25hbCBXaW5kb3dQcm94eT8gd2luZG93ID0gbnVsbCwgb3B0aW9u
YWwgRXZlbnRUYXJnZXQ/IHRhcmdldCA9IG51bGwsCiAgICAgICAgIG9wdGlvbmFsIGxvbmcgaWRl
bnRpZmllciA9IDAsCiAgICAgICAgIG9wdGlvbmFsIGxvbmcgcGFnZVggPSAwLCBvcHRpb25hbCBs
b25nIHBhZ2VZID0gMCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBz
Y3JlZW5ZID0gMCwKICAgICAgICAgb3B0aW9uYWwgbG9uZyB3ZWJraXRSYWRpdXNYID0gMCwgb3B0
aW9uYWwgbG9uZyB3ZWJraXRSYWRpdXNZID0gMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Gb2N1c0V2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcApp
bmRleCAxNmQ4YjNmZjA3OC4uOTg2ODc3MzI2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Gb2N1c0V2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5j
cHAKQEAgLTQwLDggKzQwLDggQEAgYm9vbCBGb2N1c0V2ZW50Ojppc0ZvY3VzRXZlbnQoKSBjb25z
dAogICAgIHJldHVybiB0cnVlOwogfQogCi1Gb2N1c0V2ZW50OjpGb2N1c0V2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2lu
ZG93KiB2aWV3LCBpbnQgZGV0YWlsLCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYgcmVsYXRlZFRhcmdl
dCkKLSAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkZXRh
aWwpCitGb2N1c0V2ZW50OjpGb2N1c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcs
IGludCBkZXRhaWwsIFJlZlB0cjxFdmVudFRhcmdldD4mJiByZWxhdGVkVGFyZ2V0KQorICAgIDog
VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRldGFp
bCkKICAgICAsIG1fcmVsYXRlZFRhcmdldChXVEZNb3ZlKHJlbGF0ZWRUYXJnZXQpKQogewogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Gb2N1c0V2ZW50LmgKaW5kZXggMDY3MjU1NzRjMDYuLmM3YTRkZjhlNzc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Gb2N1c0V2ZW50LmgKQEAgLTM1LDkgKzM1LDkgQEAgY2xhc3MgTm9kZTsKIAogY2xh
c3MgRm9jdXNFdmVudCBmaW5hbCA6IHB1YmxpYyBVSUV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPEZvY3VzRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwg
UmVmUHRyPEV2ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpCisgICAgc3RhdGljIFJlZjxGb2N1
c0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwg
UmVmUHRyPEV2ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGb2N1c0V2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwg
dmlldywgZGV0YWlsLCBXVEZNb3ZlKHJlbGF0ZWRUYXJnZXQpKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZvY3VzRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZN
b3ZlKHZpZXcpLCBkZXRhaWwsIFdURk1vdmUocmVsYXRlZFRhcmdldCkpKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgUmVmPEZvY3VzRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCkKQEAgLTU4LDcgKzU4
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEZvY3VzRXZlbnQoKSA9IGRlZmF1bHQ7Ci0g
ICAgRm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmKTsK
KyAgICBGb2N1c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQsIFJlZlB0cjxFdmVu
dFRhcmdldD4mJik7CiAgICAgRm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNv
bnN0IEluaXQmLCBJc1RydXN0ZWQpOwogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZh
Y2UoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmNwcAppbmRleCBkNDQ5Mjk0
ZmVjNi4uYzE3YmYxOGQ4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5jcHAKQEAgLTI2LDIw
ICsyNiwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklucHV0RXZlbnQuaCIK
IAotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlci5oIgogI2lu
Y2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8SW5wdXRFdmVudD4gSW5wdXRF
dmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcm
IGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgV2ViQ29yZTo6RE9N
V2luZG93ICp2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYg
ZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJh
bmdlcywgaW50IGRldGFpbCkKK1JlZjxJbnB1dEV2ZW50PiBJbnB1dEV2ZW50OjpjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywg
Y29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2Zlciwg
Y29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRh
aWwpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5wdXRFdmVudChldmVudFR5cGUsIGlu
cHV0VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkYXRhLCBXVEZNb3ZlKGRhdGFU
cmFuc2ZlciksIHRhcmdldFJhbmdlcywgZGV0YWlsKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW5wdXRFdmVudChldmVudFR5cGUsIGlucHV0VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBXVEZNb3ZlKHZpZXcpLCBkYXRhLCBXVEZNb3ZlKGRhdGFUcmFuc2ZlciksIHRhcmdldFJhbmdl
cywgZGV0YWlsKSk7CiB9CiAKLUlucHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVm
UHRyPERhdGFUcmFuc2Zlcj4mJiBkYXRhVHJhbnNmZXIsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3Rh
dGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKQotICAgIDogVUlFdmVudChldmVu
dFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKQorSW5wdXRFdmVudDo6
SW5wdXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBp
bnB1dFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYg
ZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJh
bmdlcywgaW50IGRldGFpbCkKKyAgICA6IFVJRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIFdURk1vdmUodmlldyksIGRldGFpbCkKICAgICAsIG1faW5wdXRUeXBlKGlucHV0
VHlwZSkKICAgICAsIG1fZGF0YShkYXRhKQogICAgICwgbV9kYXRhVHJhbnNmZXIoZGF0YVRyYW5z
ZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmgKaW5kZXggY2FkOGRjZTdiMzYuLmQwNTA3NjM5YzZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmgKQEAgLTMwLDggKzMwLDggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBET01XaW5kb3c7CiBjbGFzcyBEYXRhVHJhbnNmZXI7CitjbGFz
cyBXaW5kb3dQcm94eTsKIAogY2xhc3MgSW5wdXRFdmVudCBmaW5hbCA6IHB1YmxpYyBVSUV2ZW50
IHsKIHB1YmxpYzoKQEAgLTM5LDEzICszOSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBk
YXRhOwogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBk
YXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1Jh
bmdlPj4mIHRhcmdldFJhbmdlcywgaW50IGRldGFpbCk7CisgICAgc3RhdGljIFJlZjxJbnB1dEV2
ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYg
aW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYm
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJhbmdlcywgaW50IGRl
dGFpbCk7CiAgICAgc3RhdGljIFJlZjxJbnB1dEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9
IElzVHJ1c3RlZDo6Tm8pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnB1
dEV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKICAgICB9CiAKLSAgICBJbnB1
dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0
VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgY29uc3Qg
U3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmLCBjb25zdCBWZWN0b3I8UmVmUHRy
PFN0YXRpY1JhbmdlPj4mIHRhcmdldFJhbmdlcywgaW50IGRldGFpbCk7CisgICAgSW5wdXRFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwg
Y29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmLCBjb25zdCBWZWN0b3I8
UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJhbmdlcywgaW50IGRldGFpbCk7CiAgICAgSW5w
dXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgSW5pdCYsIElzVHJ1
c3RlZCk7CiAKICAgICBib29sIGlzSW5wdXRFdmVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAppbmRleCA0ZGExMDE3NzI1
Zi4uNGFjYjVmNGNlYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKQEAgLTIz
LDYgKzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50
LmgiCiAKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgpAQCAtOTIsOCArOTMs
OCBAQCBzdGF0aWMgaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleUxvY2F0aW9uQ29kZSBrZXlMb2Nh
dGlvbkNvZGUoY29uc3QgUGxhdGZvcm1LZXlibwogCiBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5
Ym9hcmRFdmVudCgpID0gZGVmYXVsdDsKIAotaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJk
RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIERPTVdpbmRvdyogdmlldykK
LSAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUo
a2V5LnR5cGUoKSksIHRydWUsIHRydWUsIGtleS50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90
b25pY1RpbWUoKSwgdmlldywgMCwga2V5LmN0cmxLZXkoKSwga2V5LmFsdEtleSgpLCBrZXkuc2hp
ZnRLZXkoKSwga2V5Lm1ldGFLZXkoKSwgZmFsc2UsIGtleS5tb2RpZmllcnMoKS5jb250YWlucyhQ
bGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tLZXkpKQoraW5saW5lIEtleWJvYXJkRXZl
bnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3KQorICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5
cGVGb3JLZXlib2FyZEV2ZW50VHlwZShrZXkudHlwZSgpKSwgdHJ1ZSwgdHJ1ZSwga2V5LnRpbWVz
dGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LmNvcHlSZWYoKSwgMCwga2V5
LmN0cmxLZXkoKSwga2V5LmFsdEtleSgpLCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1ldGFLZXkoKSwg
ZmFsc2UsIGtleS5tb2RpZmllcnMoKS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6
Q2Fwc0xvY2tLZXkpKQogICAgICwgbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudChzdGQ6Om1ha2Vf
dW5pcXVlPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4oa2V5KSkKICNpZiBFTkFCTEUoS0VZQk9BUkRf
S0VZX0FUVFJJQlVURSkKICAgICAsIG1fa2V5KGtleS5rZXkoKSkKQEAgLTEwNCw3ICsxMDUsNyBA
QCBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQmIGtleSwgRE9NV2luZG93KgogICAgICwgbV9rZXlJZGVudGlmaWVyKGtleS5rZXlJ
ZGVudGlmaWVyKCkpCiAgICAgLCBtX2xvY2F0aW9uKGtleUxvY2F0aW9uQ29kZShrZXkpKQogICAg
ICwgbV9yZXBlYXQoa2V5LmlzQXV0b1JlcGVhdCgpKQotICAgICwgbV9pc0NvbXBvc2luZyh2aWV3
ICYmIHZpZXctPmZyYW1lKCkgJiYgdmlldy0+ZnJhbWUoKS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRp
b24oKSkKKyAgICAsIG1faXNDb21wb3NpbmcodmlldyAmJiBpczxET01XaW5kb3c+KHZpZXctPndp
bmRvdygpKSAmJiBkb3duY2FzdDxET01XaW5kb3c+KCp2aWV3LT53aW5kb3coKSkuZnJhbWUoKSAm
JiBkb3duY2FzdDxET01XaW5kb3c+KCp2aWV3LT53aW5kb3coKSkuZnJhbWUoKS0+ZWRpdG9yKCku
aGFzQ29tcG9zaXRpb24oKSkKICNpZiBVU0UoQVBQS0lUKQogICAgICwgbV9oYW5kbGVkQnlJbnB1
dE1ldGhvZChrZXkuaGFuZGxlZEJ5SW5wdXRNZXRob2QoKSkKICAgICAsIG1fa2V5cHJlc3NDb21t
YW5kcyhrZXkuY29tbWFuZHMoKSkKQEAgLTEzMiw5ICsxMzMsOSBAQCBpbmxpbmUgS2V5Ym9hcmRF
dmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3Qg
SW5pdCYgaQogCiBLZXlib2FyZEV2ZW50Ojp+S2V5Ym9hcmRFdmVudCgpID0gZGVmYXVsdDsKIAot
UmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQmIHBsYXRmb3JtRXZlbnQsIERPTVdpbmRvdyogdmlldykKK1JlZjxLZXlib2Fy
ZEV2ZW50PiBLZXlib2FyZEV2ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50
JiBwbGF0Zm9ybUV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBLZXlib2FyZEV2ZW50KHBsYXRmb3JtRXZlbnQsIHZpZXcpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBLZXlib2FyZEV2ZW50KHBsYXRmb3JtRXZlbnQsIFdURk1v
dmUodmlldykpKTsKIH0KIAogUmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0
ZUZvckJpbmRpbmdzKCkKQEAgLTE0NywxMyArMTQ4LDEzIEBAIFJlZjxLZXlib2FyZEV2ZW50PiBL
ZXlib2FyZEV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0
JiBpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgS2V5Ym9hcmRFdmVudCh0eXBlLCBpbml0aWFs
aXplciwgaXNUcnVzdGVkKSk7CiB9CiAKLXZvaWQgS2V5Ym9hcmRFdmVudDo6aW5pdEtleWJvYXJk
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsCit2b2lkIEtleWJvYXJkRXZlbnQ6OmluaXRLZXlib2Fy
ZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgY29uc3QgU3RyaW5nJiBr
ZXlJZGVudGlmaWVyLCB1bnNpZ25lZCBsb2NhdGlvbiwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtl
eSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBib29sIGFsdEdyYXBoS2V5KQogewogICAg
IGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbml0VUlF
dmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2
ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAg
ICBtX2tleUlkZW50aWZpZXIgPSBrZXlJZGVudGlmaWVyOwogICAgIG1fbG9jYXRpb24gPSBsb2Nh
dGlvbjsKQEAgLTIyNyw4ICsyMjgsOSBAQCBpbnQgS2V5Ym9hcmRFdmVudDo6Y2hhckNvZGUoKSBj
b25zdAogICAgIC8vIEZpcmVmb3g6IDAgZm9yIGtleWRvd24va2V5dXAgZXZlbnRzLCBjaGFyYWN0
ZXIgY29kZSBmb3Iga2V5cHJlc3MKICAgICAvLyBXZSBtYXRjaCBGaXJlZm94LCB1bmxlc3MgaW4g
YmFja3dhcmQgY29tcGF0aWJpbGl0eSBtb2RlLCB3aGVyZSB3ZSBhbHdheXMgcmV0dXJuIHRoZSBj
aGFyYWN0ZXIgY29kZS4KICAgICBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUgPSBmYWxz
ZTsKLSAgICBpZiAodmlldygpICYmIHZpZXcoKS0+ZnJhbWUoKSkKLSAgICAgICAgYmFja3dhcmRD
b21wYXRpYmlsaXR5TW9kZSA9IHZpZXcoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkubmVlZHNL
ZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25RdWlya3MoKTsKKyAgICBhdXRvKiB3aW5kb3cgPSB2
aWV3KCkgPyB2aWV3KCktPndpbmRvdygpIDogbnVsbHB0cjsKKyAgICBpZiAoaXM8RE9NV2luZG93
Pih3aW5kb3cpICYmIGRvd25jYXN0PERPTVdpbmRvdz4oKndpbmRvdykuZnJhbWUoKSkKKyAgICAg
ICAgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9IGRvd25jYXN0PERPTVdpbmRvdz4oKndpbmRv
dykuZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkubmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRp
b25RdWlya3MoKTsKIAogICAgIGlmICghbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudCB8fCAodHlw
ZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50ICYmICFiYWNrd2FyZENvbXBhdGliaWxp
dHlNb2RlKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaApp
bmRleCA4MjEwMzMwZWFiMC4uMWQzY2MyNDM3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9LZXlib2FyZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZl
bnQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIERPTV9LRVlfTE9DQVRJT05f
TlVNUEFEID0gMHgwMwogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEtl
eWJvYXJkRXZlbnQ+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmLCBET01XaW5k
b3cqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEtleWJvYXJkRXZlbnQ+IGNyZWF0
ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmLCBSZWZQdHI8V2luZG93UHJveHk+JiYpOwog
ICAgIHN0YXRpYyBSZWY8S2V5Ym9hcmRFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKTsKIAogICAg
IHN0cnVjdCBJbml0IDogcHVibGljIEV2ZW50TW9kaWZpZXJJbml0IHsKQEAgLTY1LDcgKzY1LDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+S2V5Ym9hcmRFdmVudCgpOwogICAgIAotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLAorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+
JiYsCiAgICAgICAgIGNvbnN0IFN0cmluZyYga2V5SWRlbnRpZmllciwgdW5zaWduZWQgbG9jYXRp
b24sCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJv
b2wgbWV0YUtleSwgYm9vbCBhbHRHcmFwaEtleSA9IGZhbHNlKTsKICAgICAKQEAgLTEwMiw3ICsx
MDIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgS2V5Ym9hcmRFdmVudCgpOwotICAgIEtl
eWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgRE9NV2luZG93Kik7Cisg
ICAgS2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYpOwogICAgIEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29u
c3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1LZXli
b2FyZEV2ZW50PiBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJv
YXJkRXZlbnQuaWRsCmluZGV4IDc1N2MwNzc5M2Y1Li5jZGU0NTBjMzQzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9LZXlib2FyZEV2ZW50LmlkbApAQCAtNTIsNyArNTIsNyBAQAogICAgIC8vIEZJWE1FOiB0
aGlzIGRvZXMgbm90IG1hdGNoIHRoZSB2ZXJzaW9uIGluIHRoZSBET00gc3BlYy4KICAgICAvLyBG
SVhNRTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3Jv
bmcuCiAgICAgdm9pZCBpbml0S2V5Ym9hcmRFdmVudChvcHRpb25hbCBET01TdHJpbmcgdHlwZSA9
ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBib29sZWFuIGNhbkJ1YmJsZSA9IGZhbHNlLCBvcHRpb25h
bCBib29sZWFuIGNhbmNlbGFibGUgPSBmYWxzZSwKLSAgICAgICAgb3B0aW9uYWwgRE9NV2luZG93
PyB2aWV3ID0gbnVsbCwgb3B0aW9uYWwgRE9NU3RyaW5nIGtleUlkZW50aWZpZXIgPSAidW5kZWZp
bmVkIiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBsb2NhdGlvbiA9IDAsCisgICAgICAgIG9wdGlv
bmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwgb3B0aW9uYWwgRE9NU3RyaW5nIGtleUlkZW50
aWZpZXIgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBsb2NhdGlvbiA9IDAs
CiAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY3RybEtleSA9IGZhbHNlLCBvcHRpb25hbCBib29s
ZWFuIGFsdEtleSA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIHNoaWZ0S2V5ID0gZmFsc2UsIG9w
dGlvbmFsIGJvb2xlYW4gbWV0YUtleSA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIGFsdEdyYXBo
S2V5ID0gZmFsc2UpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCmluZGV4IDUxOTdk
NWJhZTFhLi4zMzA5Mjc4N2QxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMjcs
MTIgKzI3LDEyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAj
aW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIK
ICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCw5
ICs0MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2I7CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi11c2luZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0
cjxET01XaW5kb3c+LCBSZWZQdHI8TWVzc2FnZVBvcnQ+LCBSZWZQdHI8U2VydmljZVdvcmtlcj4+
OwordXNpbmcgTWVzc2FnZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+
LCBSZWZQdHI8TWVzc2FnZVBvcnQ+LCBSZWZQdHI8U2VydmljZVdvcmtlcj4+OwogI2Vsc2UKLXVz
aW5nIE1lc3NhZ2VFdmVudFNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0
cjxNZXNzYWdlUG9ydD4+OwordXNpbmcgTWVzc2FnZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQ
dHI8V2luZG93UHJveHk+LCBSZWZQdHI8TWVzc2FnZVBvcnQ+PjsKICNlbmRpZgogCiBjbGFzcyBN
ZXNzYWdlRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmlkbAppbmRleCAwMjQzOGZkNGM0Ny4uZmE0OGM4ZmE1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuaWRsCkBAIC0yNyw5ICsyNyw5IEBACiAgKi8KIAogI2lmIGRlZmluZWQoRU5B
QkxFX1NFUlZJQ0VfV09SS0VSKSAmJiBFTkFCTEVfU0VSVklDRV9XT1JLRVIKLXR5cGVkZWYgKERP
TVdpbmRvdyBvciBNZXNzYWdlUG9ydCBvciBTZXJ2aWNlV29ya2VyKSBNZXNzYWdlRXZlbnRTb3Vy
Y2U7Cit0eXBlZGVmIChXaW5kb3dQcm94eSBvciBNZXNzYWdlUG9ydCBvciBTZXJ2aWNlV29ya2Vy
KSBNZXNzYWdlRXZlbnRTb3VyY2U7CiAjZWxzZQotdHlwZWRlZiAoRE9NV2luZG93IG9yIE1lc3Nh
Z2VQb3J0KSBNZXNzYWdlRXZlbnRTb3VyY2U7Cit0eXBlZGVmIChXaW5kb3dQcm94eSBvciBNZXNz
YWdlUG9ydCkgTWVzc2FnZUV2ZW50U291cmNlOwogI2VuZGlmCiAKIFsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3Vz
ZUV2ZW50LmNwcAppbmRleCBhMTQ3ZTEyMThiYi4uYzg5NmY4NjMxYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TW91c2VFdmVudC5jcHAKQEAgLTQ0LDEzICs0NCwxMyBAQCBSZWY8TW91c2VFdmVudD4gTW91c2VF
dmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTW91c2VFdmVudElu
aQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIs
IGlzVHJ1c3RlZCkpOwogfQogCi1SZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQsIGludCBkZXRhaWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQpCitS
ZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBldmVudCwgaW50IGRldGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCkKIHsKICAgICBib29s
IGlzTW91c2VFbnRlck9yTGVhdmUgPSBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLm1vdXNlZW50
ZXJFdmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLm1vdXNlbGVhdmVFdmVudDsKICAg
ICBib29sIGlzQ2FuY2VsYWJsZSA9IGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkubW91c2Vtb3Zl
RXZlbnQgJiYgIWlzTW91c2VFbnRlck9yTGVhdmU7CiAgICAgYm9vbCBjYW5CdWJibGUgPSAhaXNN
b3VzZUVudGVyT3JMZWF2ZTsKIAotICAgIHJldHVybiBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRU
eXBlLCBjYW5CdWJibGUsIGlzQ2FuY2VsYWJsZSwgZXZlbnQudGltZXN0YW1wKCkuYXBwcm94aW1h
dGVNb25vdG9uaWNUaW1lKCksIHZpZXcsCisgICAgcmV0dXJuIE1vdXNlRXZlbnQ6OmNyZWF0ZShl
dmVudFR5cGUsIGNhbkJ1YmJsZSwgaXNDYW5jZWxhYmxlLCBldmVudC50aW1lc3RhbXAoKS5hcHBy
b3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgV1RGTW92ZSh2aWV3KSwKICAgICAgICAgZGV0YWlsLCBl
dmVudC5nbG9iYWxQb3NpdGlvbigpLngoKSwgZXZlbnQuZ2xvYmFsUG9zaXRpb24oKS55KCksIGV2
ZW50LnBvc2l0aW9uKCkueCgpLCBldmVudC5wb3NpdGlvbigpLnkoKSwKICNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQogICAgICAgICBldmVudC5tb3ZlbWVudERlbHRhKCkueCgpLCBldmVudC5tb3Zl
bWVudERlbHRhKCkueSgpLApAQCAtNTksMTMgKzU5LDEzIEBAIFJlZjxNb3VzZUV2ZW50PiBNb3Vz
ZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERPTVdpbmRvdyog
dmllCiAgICAgICAgIHJlbGF0ZWRUYXJnZXQsIGV2ZW50LmZvcmNlKCksIGV2ZW50LnN5bnRoZXRp
Y0NsaWNrVHlwZSgpKTsKIH0KIAotUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGlu
dCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCitSZWY8TW91c2VF
dmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVl
blksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAg
aW50IG1vdmVtZW50WCwgaW50IG1vdmVtZW50WSwKICNlbmRpZgogICAgIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQg
YnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdl
dCwgZG91YmxlIGZvcmNlLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIERhdGFU
cmFuc2ZlciogZGF0YVRyYW5zZmVyLCBib29sIGlzU2ltdWxhdGVkKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1l
c3RhbXAsIHZpZXcsCisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudCh0eXBlLCBj
YW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgV1RGTW92ZSh2aWV3KSwKICAgICAgICAg
ZGV0YWlsLCB7IHNjcmVlblgsIHNjcmVlblkgfSwgeyBwYWdlWCwgcGFnZVkgfSwKICNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQogICAgICAgICB7IG1vdmVtZW50WCwgbW92ZW1lbnRZIH0sCkBAIC03
MywxOSArNzMsMTkgQEAgUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib28KICAgICAgICAgY3RybEtleSwg
YWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSwgYnV0dG9uLCBidXR0b25zLCByZWxhdGVkVGFyZ2V0
LCBmb3JjZSwgc3ludGhldGljQ2xpY2tUeXBlLCBkYXRhVHJhbnNmZXIsIGlzU2ltdWxhdGVkKSk7
CiB9CiAKLVJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRv
dyogdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50
WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXks
IGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0
b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxh
dGVkVGFyZ2V0KQorUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2Ny
ZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5
LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5z
aWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBF
dmVudFRhcmdldCogcmVsYXRlZFRhcmdldCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBN
b3VzZUV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkZXRhaWws
IHsgc2NyZWVuWCwgc2NyZWVuWSB9LCB7IGNsaWVudFgsIGNsaWVudFkgfSwgY3RybEtleSwgYWx0
S2V5LCBzaGlmdEtleSwgbWV0YUtleSwgYnV0dG9uLCBidXR0b25zLCBzeW50aGV0aWNDbGlja1R5
cGUsIHJlbGF0ZWRUYXJnZXQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb3VzZUV2ZW50
KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWws
IHsgc2NyZWVuWCwgc2NyZWVuWSB9LCB7IGNsaWVudFgsIGNsaWVudFkgfSwgY3RybEtleSwgYWx0
S2V5LCBzaGlmdEtleSwgbWV0YUtleSwgYnV0dG9uLCBidXR0b25zLCBzeW50aGV0aWNDbGlja1R5
cGUsIHJlbGF0ZWRUYXJnZXQpKTsKIH0KIAogTW91c2VFdmVudDo6TW91c2VFdmVudCgpID0gZGVm
YXVsdDsKIAotTW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1l
c3RhbXAsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVl
bkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93TG9jYXRpb24sCitNb3VzZUV2ZW50OjpN
b3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1By
b3h5PiYmIHZpZXcsIGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwg
Y29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CiAgICAgICAgIGNvbnN0IEludFBvaW50JiBtb3ZlbWVudERlbHRhLAogI2VuZGlmCiAgICAgICAg
IGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwg
dW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBFdmVudFRhcmdl
dCogcmVsYXRlZFRhcmdldCwgZG91YmxlIGZvcmNlLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWND
bGlja1R5cGUsIERhdGFUcmFuc2ZlciogZGF0YVRyYW5zZmVyLCBib29sIGlzU2ltdWxhdGVkKQot
ICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUs
IHRpbWVzdGFtcCwgdmlldywgZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwgd2luZG93TG9jYXRpb24s
CisgICAgOiBNb3VzZVJlbGF0ZWRFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJs
ZSwgdGltZXN0YW1wLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB3aW5k
b3dMb2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBtb3ZlbWVudERl
bHRhLAogI2VuZGlmCkBAIC0xMDAsOCArMTAwLDggQEAgTW91c2VFdmVudDo6TW91c2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2UK
IHsKIH0KIAotTW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBp
bnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IEludFBvaW50
JiBjbGllbnRMb2NhdGlvbiwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtl
eSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1
dHRvbnMsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJl
bGF0ZWRUYXJnZXQpCi0gICAgOiBNb3VzZVJlbGF0ZWRFdmVudChldmVudFR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZTo6bm93KCksIHZpZXcsIGRldGFpbCwgc2NyZWVu
TG9jYXRpb24sIHsgfSwKK01vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5k
b3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRp
b24sIGNvbnN0IEludFBvaW50JiBjbGllbnRMb2NhdGlvbiwgYm9vbCBjdHJsS2V5LCBib29sIGFs
dEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24s
IHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlw
ZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCisgICAgOiBNb3VzZVJlbGF0ZWRFdmVudChl
dmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZTo6bm93KCksIFdU
Rk1vdmUodmlldyksIGRldGFpbCwgc2NyZWVuTG9jYXRpb24sIHsgfSwKICNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQogICAgICAgICB7IH0sCiAjZW5kaWYKQEAgLTEyNywxMiArMTI3LDEyIEBAIE1v
dXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0
IE1vdXNlRXZlbnRJbml0JiBpbml0CiAKIE1vdXNlRXZlbnQ6On5Nb3VzZUV2ZW50KCkgPSBkZWZh
dWx0OwogCi12b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3
LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQg
Y2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBt
ZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0
KQordm9pZCBNb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4m
JiB2aWV3LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRY
LCBpbnQgY2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwg
Ym9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIEV2ZW50VGFyZ2V0KiByZWxhdGVk
VGFyZ2V0KQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRl
dGFpbCk7CisgICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZN
b3ZlKHZpZXcpLCBkZXRhaWwpOwogCiAgICAgbV9zY3JlZW5Mb2NhdGlvbiA9IEludFBvaW50KHNj
cmVlblgsIHNjcmVlblkpOwogICAgIG1fY3RybEtleSA9IGN0cmxLZXk7CkBAIC0xNTIsNyArMTUy
LDcgQEAgdm9pZCBNb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGMKIAogLy8gRklYTUU6IFdlIG5lZWQgdGhpcyBx
dWlyayBiZWNhdXNlIGlBZCBQcm9kdWNlciBpcyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gd2l0aCBh
IHJlbGF0ZWRUYXJnZXQgdGhhdCBpcyBub3QgYW4gRXZlbnRUYXJnZXQgKHJkYXI6Ly9wcm9ibGVt
LzMwNjQwMTAxKS4KIC8vIFdlIHNob3VsZCByZW1vdmUgdGhpcyBxdWlyayB3aGVuIHBvc3NpYmxl
Lgotdm9pZCBNb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudFF1aXJrKEV4ZWNTdGF0ZSYgc3RhdGUs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2lu
ZG93KiB2aWV3LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGll
bnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtl
eSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIEpTVmFsdWUgcmVsYXRlZFRh
cmdldFZhbHVlKQordm9pZCBNb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudFF1aXJrKEV4ZWNTdGF0
ZSYgc3RhdGUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBp
bnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wg
YWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRv
biwgSlNWYWx1ZSByZWxhdGVkVGFyZ2V0VmFsdWUpCiB7CiAgICAgRXZlbnRUYXJnZXQqIHJlbGF0
ZWRUYXJnZXQgPSBudWxscHRyOwogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTE3Niw3ICsxNzYsNyBA
QCB2b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmsoRXhlY1N0YXRlJiBzdGF0ZSwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgcwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB9CiAjZW5k
aWYKLSAgICBpbml0TW91c2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcs
IGRldGFpbCwgc2NyZWVuWCwgc2NyZWVuWSwgY2xpZW50WCwgY2xpZW50WSwgY3RybEtleSwgYWx0
S2V5LCBzaGlmdEtleSwgbWV0YUtleSwgYnV0dG9uLCByZWxhdGVkVGFyZ2V0KTsKKyAgICBpbml0
TW91c2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRl
dGFpbCwgc2NyZWVuWCwgc2NyZWVuWSwgY2xpZW50WCwgY2xpZW50WSwgY3RybEtleSwgYWx0S2V5
LCBzaGlmdEtleSwgbWV0YUtleSwgYnV0dG9uLCByZWxhdGVkVGFyZ2V0KTsKIH0KIAogRXZlbnRJ
bnRlcmZhY2UgTW91c2VFdmVudDo6ZXZlbnRJbnRlcmZhY2UoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3Vz
ZUV2ZW50LmgKaW5kZXggMjZjYWY4ZjZiMTkuLjRiMjgwNzk5NTViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3Vz
ZUV2ZW50LmgKQEAgLTI5LDE5ICsyOSwyMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBEYXRhVHJhbnNmZXI7CitjbGFzcyBOb2RlOwogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50Owog
CiBjbGFzcyBNb3VzZUV2ZW50IDogcHVibGljIE1vdXNlUmVsYXRlZEV2ZW50IHsKIHB1YmxpYzoK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90
b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqLCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwg
aW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5Z
LCBpbnQgcGFnZVgsIGludCBwYWdlWSwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAg
ICBpbnQgbW92ZW1lbnRYLCBpbnQgbW92ZW1lbnRZLAogI2VuZGlmCiAgICAgICAgIGJvb2wgY3Ry
bEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQg
c2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBFdmVudFRhcmdldCogcmVsYXRl
ZFRhcmdldCwgZG91YmxlIGZvcmNlLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUs
IERhdGFUcmFuc2ZlciogPSBudWxscHRyLCBib29sIGlzU2ltdWxhdGVkID0gZmFsc2UpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYsIGludCBkZXRhaWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGlu
dCBkZXRhaWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQpOwogCi0gICAgc3RhdGljIFJlZjxNb3VzZUV2
ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBp
bnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wg
YWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRv
biwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tU
eXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCk7CisgICAgc3RhdGljIFJlZjxNb3VzZUV2
ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50
IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3Ry
bEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQg
c2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50
aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KTsKIAogICAgIHN0YXRp
YyBSZWY8TW91c2VFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IE1vdXNlRXZlbnQpOyB9CiAKQEAgLTQ5LDggKzUwLDggQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB+TW91c2VFdmVudCgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0TW91c2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwg
aW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29s
IHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJn
ZXQqIHJlbGF0ZWRUYXJnZXQpOwotICAgIHZvaWQgaW5pdE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4
ZWNTdGF0ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRh
aWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBi
b29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVu
c2lnbmVkIHNob3J0IGJ1dHRvbiwgSlNDOjpKU1ZhbHVlIHJlbGF0ZWRUYXJnZXQpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYs
IGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBj
bGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1l
dGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQp
OworICAgIHZvaWQgaW5pdE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4ZWNTdGF0ZSYsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50
IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3Ry
bEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQg
c2hvcnQgYnV0dG9uLCBKU0M6OkpTVmFsdWUgcmVsYXRlZFRhcmdldCk7CiAKICAgICB1bnNpZ25l
ZCBzaG9ydCBidXR0b24oKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbjsgfQogICAgIHVuc2lnbmVk
IHNob3J0IGJ1dHRvbnMoKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbnM7IH0KQEAgLTcwLDcgKzcx
LDcgQEAgcHVibGljOgogICAgIGludCB3aGljaCgpIGNvbnN0IGZpbmFsOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqLAor
ICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1By
b3h5PiYmLAogICAgICAgICBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRp
b24sIGNvbnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRFUl9M
T0NLKQogICAgICAgICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKQEAgLTc4LDcgKzc5
LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29s
IHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQg
c2hvcnQgYnV0dG9ucywKICAgICAgICAgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJs
ZSBmb3JjZSwgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIq
LCBib29sIGlzU2ltdWxhdGVkKTsKIAotICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLAorICAg
IE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGludCBkZXRhaWws
IGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExv
Y2F0aW9uLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXksCiAgICAgICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQg
c2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRh
cmdldCogcmVsYXRlZFRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91
c2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwKaW5kZXggMGJl
MGY4OGRkMzUuLjYwYzQ0NjY2NzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91
c2VFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaWRsCkBAIC00
Myw3ICs0Myw3IEBACiAgICAgLy8gRklYTUU6IHJlbGF0ZWRUYXJnZXQgc2hvdWxkIGJlIG9mIHR5
cGUgRXZlbnRUYXJnZXQ/IGJ1dCB3ZSBuZWVkIHRvIHVzZSBhbnkgdG8gc3VwcG9ydCBhIHF1aXJr
IGZvciBpQWQgUHJvZHVjZXIgKHJkYXI6Ly9wcm9ibGVtLzMwNjQwMTAxKS4KICAgICBbQ2FsbFdp
dGg9U2NyaXB0U3RhdGUmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1wbGVtZW50ZWRBcz1pbml0
TW91c2VFdmVudFF1aXJrXSB2b2lkIGluaXRNb3VzZUV2ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0
eXBlID0gInVuZGVmaW5lZCIsCiAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlID0g
ZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZhbHNlLAotICAgICAgICBvcHRp
b25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBsb25nIGRldGFpbCA9IDAsCisg
ICAgICAgIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwgb3B0aW9uYWwgbG9uZyBk
ZXRhaWwgPSAwLAogICAgICAgICBvcHRpb25hbCBsb25nIHNjcmVlblggPSAwLCBvcHRpb25hbCBs
b25nIHNjcmVlblkgPSAwLCBvcHRpb25hbCBsb25nIGNsaWVudFggPSAwLCBvcHRpb25hbCBsb25n
IGNsaWVudFkgPSAwLAogICAgICAgICBvcHRpb25hbCBib29sZWFuIGN0cmxLZXkgPSBmYWxzZSwg
b3B0aW9uYWwgYm9vbGVhbiBhbHRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBzaGlmdEtl
eSA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIG1ldGFLZXkgPSBmYWxzZSwKICAgICAgICAgb3B0
aW9uYWwgdW5zaWduZWQgc2hvcnQgYnV0dG9uID0gMCwgb3B0aW9uYWwgYW55IHJlbGF0ZWRUYXJn
ZXQgPSBudWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRF
dmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCmluZGV4
IDg1MzcxNGQ2YWIxLi44MGE4MjY3ZGMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L01vdXNlUmVsYXRlZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxh
dGVkRXZlbnQuY3BwCkBAIC0zMiwxMyArMzIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1Nb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1Rp
bWUgdGltZXN0YW1wLCBET01XaW5kb3cqIERPTVdpbmRvdywKK01vdXNlUmVsYXRlZEV2ZW50OjpN
b3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiB2aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9p
bnQmIHdpbmRvd0xvY2F0aW9uLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UG9pbnQmIG1vdmVtZW50RGVsdGEs
CiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGN0cmxL
ZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIGJvb2wgaXNTaW11
bGF0ZWQpCi0gICAgOiBVSUV2ZW50V2l0aEtleVN0YXRlKGV2ZW50VHlwZSwgY2FuQnViYmxlLCBj
YW5jZWxhYmxlLCB0aW1lc3RhbXAsIERPTVdpbmRvdywgZGV0YWlsLCBjdHJsS2V5LCBhbHRLZXks
IHNoaWZ0S2V5LCBtZXRhS2V5LCBmYWxzZSwgZmFsc2UpCisgICAgOiBVSUV2ZW50V2l0aEtleVN0
YXRlKGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIFdURk1vdmUo
dmlldyksIGRldGFpbCwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSwgZmFsc2Us
IGZhbHNlKQogICAgICwgbV9zY3JlZW5Mb2NhdGlvbihzY3JlZW5Mb2NhdGlvbikKICNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQogICAgICwgbV9tb3ZlbWVudERlbHRhKG1vdmVtZW50RGVsdGEpCkBA
IC02MSw3ICs2MSw3IEBAIE1vdXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgTW91c2VSCiB2b2lkIE1vdXNlUmVsYXRl
ZEV2ZW50Ojppbml0KGJvb2wgaXNTaW11bGF0ZWQsIGNvbnN0IEludFBvaW50JiB3aW5kb3dMb2Nh
dGlvbikKIHsKICAgICBpZiAoIWlzU2ltdWxhdGVkKSB7Ci0gICAgICAgIGlmIChhdXRvKiBmcmFt
ZVZpZXcgPSBmcmFtZVZpZXdGcm9tRE9NV2luZG93KHZpZXcoKSkpIHsKKyAgICAgICAgaWYgKGF1
dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21XaW5kb3dQcm94eSh2aWV3KCkpKSB7CiAgICAg
ICAgICAgICBGbG9hdFBvaW50IGFic29sdXRlUG9pbnQgPSBmcmFtZVZpZXctPndpbmRvd1RvQ29u
dGVudHMod2luZG93TG9jYXRpb24pOwogICAgICAgICAgICAgRmxvYXRQb2ludCBkb2N1bWVudFBv
aW50ID0gZnJhbWVWaWV3LT5hYnNvbHV0ZVRvRG9jdW1lbnRQb2ludChhYnNvbHV0ZVBvaW50KTsK
ICAgICAgICAgICAgIG1fcGFnZUxvY2F0aW9uID0gZmxvb3JlZExheW91dFBvaW50KGRvY3VtZW50
UG9pbnQpOwpAQCAtODMsMTMgKzgzLDEzIEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXRD
b29yZGluYXRlcygpCiAgICAgbV9oYXNDYWNoZWRSZWxhdGl2ZVBvc2l0aW9uID0gZmFsc2U7CiB9
CiAKLUZyYW1lVmlldyogTW91c2VSZWxhdGVkRXZlbnQ6OmZyYW1lVmlld0Zyb21ET01XaW5kb3co
RE9NV2luZG93KiB3aW5kb3cpCitGcmFtZVZpZXcqIE1vdXNlUmVsYXRlZEV2ZW50OjpmcmFtZVZp
ZXdGcm9tV2luZG93UHJveHkoV2luZG93UHJveHkqIHdpbmRvd1Byb3h5KQogewotICAgIGF1dG8q
IGZyYW1lID0gd2luZG93ID8gd2luZG93LT5mcmFtZSgpIDogbnVsbHB0cjsKLSAgICBpZiAoIWZy
YW1lKQorICAgIGlmICghd2luZG93UHJveHkgfHwgIWlzPERPTVdpbmRvdz4od2luZG93UHJveHkt
PndpbmRvdygpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gZnJhbWUt
PnZpZXcoKTsKKyAgICBhdXRvKiBmcmFtZSA9IGRvd25jYXN0PERPTVdpbmRvdz4oKndpbmRvd1By
b3h5LT53aW5kb3coKSkuZnJhbWUoKTsKKyAgICByZXR1cm4gZnJhbWUgPyBmcmFtZS0+dmlldygp
IDogbnVsbHB0cjsKIH0KIAogTGF5b3V0UG9pbnQgTW91c2VSZWxhdGVkRXZlbnQ6OnBhZ2VQb2lu
dFRvQ2xpZW50UG9pbnQoTGF5b3V0UG9pbnQgcGFnZVBvaW50LCBGcmFtZVZpZXcqIGZyYW1lVmll
dykKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojppbml0Q29vcmRp
bmF0ZXMoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudExvY2F0aW9uKQogICAgIC8vIFNldCB1cCBp
bml0aWFsIHZhbHVlcyBmb3IgY29vcmRpbmF0ZXMuCiAgICAgLy8gQ29ycmVjdCB2YWx1ZXMgYXJl
IGNvbXB1dGVkIGxhemlseSwgc2VlIGNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uLgogICAgIEZsb2F0
U2l6ZSBkb2N1bWVudFRvQ2xpZW50T2Zmc2V0OwotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBm
cmFtZVZpZXdGcm9tRE9NV2luZG93KHZpZXcoKSkpCisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9
IGZyYW1lVmlld0Zyb21XaW5kb3dQcm94eSh2aWV3KCkpKQogICAgICAgICBkb2N1bWVudFRvQ2xp
ZW50T2Zmc2V0ID0gZnJhbWVWaWV3LT5kb2N1bWVudFRvQ2xpZW50T2Zmc2V0KCk7CiAKICAgICBt
X2NsaWVudExvY2F0aW9uID0gY2xpZW50TG9jYXRpb247CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9p
ZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVzKGNvbnN0IExheW91dFBvaW50JiBj
bGllbnRMb2NhdGlvbikKIAogZmxvYXQgTW91c2VSZWxhdGVkRXZlbnQ6OmRvY3VtZW50VG9BYnNv
bHV0ZVNjYWxlRmFjdG9yKCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJh
bWVWaWV3RnJvbURPTVdpbmRvdyh2aWV3KCkpKQorICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBm
cmFtZVZpZXdGcm9tV2luZG93UHJveHkodmlldygpKSkKICAgICAgICAgcmV0dXJuIGZyYW1lVmll
dy0+ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3IoKTsKIAogICAgIHJldHVybiAxOwpAQCAt
MTM2LDcgKzEzNiw3IEBAIGZsb2F0IE1vdXNlUmVsYXRlZEV2ZW50Ojpkb2N1bWVudFRvQWJzb2x1
dGVTY2FsZUZhY3RvcigpIGNvbnN0CiAKIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmNvbXB1dGVQ
YWdlTG9jYXRpb24oKQogewotICAgIG1fYWJzb2x1dGVMb2NhdGlvbiA9IHBhZ2VQb2ludFRvQWJz
b2x1dGVQb2ludChtX3BhZ2VMb2NhdGlvbiwgZnJhbWVWaWV3RnJvbURPTVdpbmRvdyh2aWV3KCkp
KTsKKyAgICBtX2Fic29sdXRlTG9jYXRpb24gPSBwYWdlUG9pbnRUb0Fic29sdXRlUG9pbnQobV9w
YWdlTG9jYXRpb24sIGZyYW1lVmlld0Zyb21XaW5kb3dQcm94eSh2aWV3KCkpKTsKIH0KIAogdm9p
ZCBNb3VzZVJlbGF0ZWRFdmVudDo6cmVjZWl2ZWRUYXJnZXQoKQpAQCAtMTg1LDcgKzE4NSw3IEBA
IHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKCkKICAgICAK
IEZsb2F0UG9pbnQgTW91c2VSZWxhdGVkRXZlbnQ6OmxvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5h
dGVzKCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJvbURP
TVdpbmRvdyh2aWV3KCkpKQorICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9t
V2luZG93UHJveHkodmlldygpKSkKICAgICAgICAgcmV0dXJuIGZyYW1lVmlldy0+Y29udGVudHNU
b1Jvb3RWaWV3KHJvdW5kZWRJbnRQb2ludChtX2Fic29sdXRlTG9jYXRpb24pKTsKIAogICAgIHJl
dHVybiBtX2Fic29sdXRlTG9jYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TW91c2VSZWxhdGVkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVu
dC5oCmluZGV4IDBkODNjMzYwOWY3Li5hZDRlNWQwYzM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01v
dXNlUmVsYXRlZEV2ZW50LmgKQEAgLTY3LDE0ICs2NywxNCBAQCBwdWJsaWM6CiAgICAgLy8gdXNh
YmxlIHdpdGggUmVuZGVyT2JqZWN0OjphYnNvbHV0ZVRvTG9jYWwpLgogICAgIGNvbnN0IExheW91
dFBvaW50JiBhYnNvbHV0ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZUxvY2F0
aW9uOyB9CiAgICAgCi0gICAgc3RhdGljIEZyYW1lVmlldyogZnJhbWVWaWV3RnJvbURPTVdpbmRv
dyhET01XaW5kb3cqKTsKKyAgICBzdGF0aWMgRnJhbWVWaWV3KiBmcmFtZVZpZXdGcm9tV2luZG93
UHJveHkoV2luZG93UHJveHkqKTsKIAogICAgIHN0YXRpYyBMYXlvdXRQb2ludCBwYWdlUG9pbnRU
b0NsaWVudFBvaW50KExheW91dFBvaW50IHBhZ2VQb2ludCwgRnJhbWVWaWV3Kik7CiAgICAgc3Rh
dGljIExheW91dFBvaW50IHBhZ2VQb2ludFRvQWJzb2x1dGVQb2ludChMYXlvdXRQb2ludCBwYWdl
UG9pbnQsIEZyYW1lVmlldyopOwogCiBwcm90ZWN0ZWQ6CiAgICAgTW91c2VSZWxhdGVkRXZlbnQo
KSA9IGRlZmF1bHQ7Ci0gICAgTW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVz
dGFtcCwgRE9NV2luZG93KiwKKyAgICBNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUg
dGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNv
bnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0
aW9uLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIGNvbnN0IEludFBvaW50JiBt
b3ZlbWVudERlbHRhLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDRiMWU4NzI1Nzk1Li40OTg4MjRhOGU4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkNvbnRhaW5l
ck5vZGVBbGdvcml0aG1zLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiRGF0YVRyYW5zZmVyLmgiCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRUeXBlLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiRWxlbWVudFJhcmVEYXRhLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2lt
dWxhdGVkQ2xpY2suY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRlZENsaWNrLmNwcApp
bmRleCBlMGY0ZTM1MmVjYS4uNDE3ZTkwN2JmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaW11bGF0ZWRDbGljay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRl
ZENsaWNrLmNwcApAQCAtMzcsMTQgKzM3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgU2ltdWxhdGVkTW91c2VFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWV3LCBSZWZQdHI8RXZlbnQ+JiYgdW5k
ZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQsIFNpbXVsYXRlZENsaWNrU291cmNlIHNvdXJj
ZSkKKyAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIFJlZlB0cjxF
dmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVkQ2xpY2tT
b3VyY2Ugc291cmNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2ltdWxh
dGVkTW91c2VFdmVudChldmVudFR5cGUsIHZpZXcsIFdURk1vdmUodW5kZXJseWluZ0V2ZW50KSwg
dGFyZ2V0LCBzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2ltdWxhdGVk
TW91c2VFdmVudChldmVudFR5cGUsIFdURk1vdmUodmlldyksIFdURk1vdmUodW5kZXJseWluZ0V2
ZW50KSwgdGFyZ2V0LCBzb3VyY2UpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU2ltdWxhdGVk
TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWV3
LCBSZWZQdHI8RXZlbnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQsIFNpbXVs
YXRlZENsaWNrU291cmNlIHNvdXJjZSkKLSAgICAgICAgOiBNb3VzZUV2ZW50KGV2ZW50VHlwZSwg
dHJ1ZSwgdHJ1ZSwgdW5kZXJseWluZ0V2ZW50ID8gdW5kZXJseWluZ0V2ZW50LT50aW1lU3RhbXAo
KSA6IE1vbm90b25pY1RpbWU6Om5vdygpLCB2aWV3LCAwLCB7IH0sIHsgfSwKKyAgICBTaW11bGF0
ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlldywgUmVmUHRyPEV2ZW50PiYmIHVuZGVybHlpbmdFdmVudCwgRWxlbWVudCYg
dGFyZ2V0LCBTaW11bGF0ZWRDbGlja1NvdXJjZSBzb3VyY2UpCisgICAgICAgIDogTW91c2VFdmVu
dChldmVudFR5cGUsIHRydWUsIHRydWUsIHVuZGVybHlpbmdFdmVudCA/IHVuZGVybHlpbmdFdmVu
dC0+dGltZVN0YW1wKCkgOiBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwgMCwg
eyB9LCB7IH0sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgICAgIHsgfSwKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAppbmRleCBiZDAyNGVhNTVmNi4uYjA5NDQ5M2Mx
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCkBAIC0zOCwyOSArMzgsMjkgQEAgUmVmPFRl
eHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGVGb3JCaW5kaW5ncygpCiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVGV4dEV2ZW50KTsKIH0KIAotUmVmPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVh
dGUoRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlw
ZSBpbnB1dFR5cGUpCitSZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZShSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUg
aW5wdXRUeXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudCh2aWV3LCBk
YXRhLCBpbnB1dFR5cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RG
TW92ZSh2aWV3KSwgZGF0YSwgaW5wdXRUeXBlKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRF
dmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJp
bmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKQorUmVmPFRleHRFdmVudD4gVGV4dEV2
ZW50OjpjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywg
Y29uc3QgU3RyaW5nJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQodmlldywgZGF0YSwgMCwgc2hvdWxkU21hcnRSZXBs
YWNlLCBmYWxzZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZGF0YSwg
MCwgc2hvdWxkU21hcnRSZXBsYWNlLCBmYWxzZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6UmVz
cGVjdEJsb2NrcXVvdGUpKTsKIH0KIAotUmVmPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGVG
b3JGcmFnbWVudFBhc3RlKERPTVdpbmRvdyogdmlldywgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwg
TWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQorUmVmPFRleHRF
dmVudD4gVGV4dEV2ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKFJlZlB0cjxXaW5kb3dQcm94
eT4mJiB2aWV3LCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBkYXRhLCBib29sIHNob3VsZFNt
YXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5n
IG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4
dEV2ZW50KHZpZXcsIGVtcHR5U3RyaW5nKCksIFdURk1vdmUoZGF0YSksIHNob3VsZFNtYXJ0UmVw
bGFjZSwgc2hvdWxkTWF0Y2hTdHlsZSwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudChXVEZNb3ZlKHZpZXcpLCBlbXB0eVN0cmluZygp
LCBXVEZNb3ZlKGRhdGEpLCBzaG91bGRTbWFydFJlcGxhY2UsIHNob3VsZE1hdGNoU3R5bGUsIG1h
aWxCbG9ja3F1b3RlSGFuZGxpbmcpKTsKIH0KIAotUmVmPFRleHRFdmVudD4gVGV4dEV2ZW50Ojpj
cmVhdGVGb3JEcm9wKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmPFRl
eHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGVGb3JEcm9wKFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4
dEV2ZW50KHZpZXcsIGRhdGEsIFRleHRFdmVudElucHV0RHJvcCkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFRleHRFdmVudChXVEZNb3ZlKHZpZXcpLCBkYXRhLCBUZXh0RXZlbnRJbnB1dERy
b3ApKTsKIH0KIAotUmVmPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24o
RE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRp
b25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcykKK1JlZjxUZXh0RXZlbnQ+IFRl
eHRFdmVudDo6Y3JlYXRlRm9yRGljdGF0aW9uKFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBj
b25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRp
Y3RhdGlvbkFsdGVybmF0aXZlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZl
bnQodmlldywgZGF0YSwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVGV4dEV2ZW50KFdURk1vdmUodmlldyksIGRhdGEsIGRpY3RhdGlvbkFsdGVybmF0
aXZlcykpOwogfQogCiBUZXh0RXZlbnQ6OlRleHRFdmVudCgpCkBAIC03MSw4ICs3MSw4IEBAIFRl
eHRFdmVudDo6VGV4dEV2ZW50KCkKIHsKIH0KIAotVGV4dEV2ZW50OjpUZXh0RXZlbnQoRE9NV2lu
ZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSBpbnB1dFR5
cGUpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwgdHJ1
ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSBpbnB1dFR5cGUpCisg
ICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwgdHJ1ZSwgV1RG
TW92ZSh2aWV3KSwgMCkKICAgICAsIG1faW5wdXRUeXBlKGlucHV0VHlwZSkKICAgICAsIG1fZGF0
YShkYXRhKQogICAgICwgbV9zaG91bGRTbWFydFJlcGxhY2UoZmFsc2UpCkBAIC04MSw4ICs4MSw4
IEBAIFRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBk
YXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50
KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4mJiBwYXN0aW5nRnJhZ21lbnQsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNo
b3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5k
bGluZykKLSAgICA6IFVJRXZlbnQoZXZlbnROYW1lcygpLnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0
cnVlLCB2aWV3LCAwKQorVGV4dEV2ZW50OjpUZXh0RXZlbnQoUmVmUHRyPFdpbmRvd1Byb3h5PiYm
IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgcGFz
dGluZ0ZyYWdtZW50LCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0
eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpCisgICAg
OiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwgdHJ1ZSwgV1RGTW92
ZSh2aWV3KSwgMCkKICAgICAsIG1faW5wdXRUeXBlKFRleHRFdmVudElucHV0UGFzdGUpCiAgICAg
LCBtX2RhdGEoZGF0YSkKICAgICAsIG1fcGFzdGluZ0ZyYWdtZW50KFdURk1vdmUocGFzdGluZ0Zy
YWdtZW50KSkKQEAgLTkyLDggKzkyLDggQEAgVGV4dEV2ZW50OjpUZXh0RXZlbnQoRE9NV2luZG93
KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW4KIHsKIH0K
IAotVGV4dEV2ZW50OjpUZXh0RXZlbnQoRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRh
dGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0
aXZlcykKLSAgICA6IFVJRXZlbnQoZXZlbnROYW1lcygpLnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0
cnVlLCB2aWV3LCAwKQorVGV4dEV2ZW50OjpUZXh0RXZlbnQoUmVmUHRyPFdpbmRvd1Byb3h5PiYm
IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0
aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKQorICAgIDogVUlFdmVudChldmVudE5hbWVzKCku
dGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2lu
cHV0VHlwZShUZXh0RXZlbnRJbnB1dERpY3RhdGlvbikKICAgICAsIG1fZGF0YShkYXRhKQogICAg
ICwgbV9zaG91bGRTbWFydFJlcGxhY2UoZmFsc2UpCkBAIC0xMDUsMTIgKzEwNSwxMiBAQCBUZXh0
RXZlbnQ6OlRleHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29u
c3QgVmVjdG9yPERpY3RhdGlvbgogCiBUZXh0RXZlbnQ6On5UZXh0RXZlbnQoKSA9IGRlZmF1bHQ7
CiAKLXZvaWQgVGV4dEV2ZW50Ojppbml0VGV4dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBjb25z
dCBTdHJpbmcmIGRhdGEpCit2b2lkIFRleHRFdmVudDo6aW5pdFRleHRFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7CiAgICAgaWYgKGlzQmVp
bmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgMCk7CisgICAgaW5pdFVJRXZlbnQodHlwZSwg
Y2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCAwKTsKIAogICAgIG1faW5wdXRU
eXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1RleHRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oCmluZGV4
IDI5ZWIyNmQwZTA3Li4wYWUyYWM4NjNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1RleHRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaApAQCAtMzgs
MTYgKzM4LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFRleHRFdmVudCBm
aW5hbCA6IHB1YmxpYyBVSUV2ZW50IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8
VGV4dEV2ZW50PiBjcmVhdGUoRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZl
bnRJbnB1dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJkKTsKKyAgICAgICAgc3RhdGljIFJl
ZjxUZXh0RXZlbnQ+IGNyZWF0ZShSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYg
ZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7CiAgICAg
ICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpOwotICAgICAgICBz
dGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoRE9NV2luZG93Kiwg
Y29uc3QgU3RyaW5nJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSk7Ci0gICAgICAgIHN0
YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JGcmFnbWVudFBhc3RlKERPTVdpbmRvdyosIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBi
b29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOwotICAgICAgICBz
dGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yRHJvcChET01XaW5kb3cqLCBjb25zdCBTdHJp
bmcmIGRhdGEpOwotICAgICAgICBzdGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yRGljdGF0
aW9uKERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgVmVjdG9yPERpY3RhdGlv
bkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICAgICAgc3RhdGljIFJl
ZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKFJlZlB0cjxXaW5kb3dQcm94eT4m
JiwgY29uc3QgU3RyaW5nJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSk7CisgICAgICAg
IHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JGcmFnbWVudFBhc3RlKFJlZlB0cjxXaW5k
b3dQcm94eT4mJiwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRT
bWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGlu
Zyk7CisgICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEcm9wKFJlZlB0cjxX
aW5kb3dQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBkYXRhKTsKKyAgICAgICAgc3RhdGljIFJlZjxU
ZXh0RXZlbnQ+IGNyZWF0ZUZvckRpY3RhdGlvbihSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0
IFN0cmluZyYgZGF0YSwgY29uc3QgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiYgZGljdGF0
aW9uQWx0ZXJuYXRpdmVzKTsKIAogICAgICAgICB2aXJ0dWFsIH5UZXh0RXZlbnQoKTsKICAgICAK
LSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0VGV4dEV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93Kiwg
Y29uc3QgU3RyaW5nJiBkYXRhKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0VGV4
dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAg
IAogICAgICAgICBTdHJpbmcgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC03
MSw5ICs3MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICBU
ZXh0RXZlbnQoKTsKIAotICAgICAgICBUZXh0RXZlbnQoRE9NV2luZG93KiwgY29uc3QgU3RyaW5n
JiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJkKTsKLSAg
ICAgICAgVGV4dEV2ZW50KERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+JiYsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1h
dGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOwotICAgICAgICBUZXh0RXZlbnQoRE9N
V2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJu
YXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgICAgICBUZXh0RXZlbnQoUmVmUHRy
PFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSA9
IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOworICAgICAgICBUZXh0RXZlbnQoUmVmUHRyPFdpbmRv
d1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYm
LCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxv
Y2txdW90ZUhhbmRsaW5nKTsKKyAgICAgICAgVGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQcm94eT4m
JiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+
JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogCiAgICAgICAgIGJvb2wgaXNUZXh0RXZlbnQoKSBj
b25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVu
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmlkbAppbmRleCAzNjQwNjVmYTgy
ZC4uY2U4YjMwYWNiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCkBAIC0zMiw3ICszMiw3
IEBAIGludGVyZmFjZSBUZXh0RXZlbnQgOiBVSUV2ZW50IHsKICAgICB2b2lkIGluaXRUZXh0RXZl
bnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZpbmVkIiwKICAgICAgICAgICAg
ICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGVBcmcgPSBmYWxzZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlQXJnID0gZmFsc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlld0FyZyA9IG51
bGwsCisgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3QXJn
ID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3RyaW5nIGRhdGFB
cmcgPSAidW5kZWZpbmVkIik7CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VG91Y2hFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5pZGwKaW5kZXgg
ODEwNTgzNTdlZDMuLjU0ZTk5ZGI0ODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VG91Y2hFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaWRsCkBA
IC00MCw3ICs0MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBUb3VjaExp
c3Q/IHRhcmdldFRvdWNoZXMgPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9u
YWwgVG91Y2hMaXN0PyBjaGFuZ2VkVG91Y2hlcyA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBvcHRpb25hbCBET01TdHJpbmcgdHlwZSA9ICJ1bmRlZmluZWQiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgb3B0aW9uYWwgRE9NV2luZG93PyB2aWV3ID0gbnVsbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbmFsIGxvbmcgc2NyZWVuWCA9IDAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBvcHRpb25hbCBsb25nIHNjcmVlblkgPSAwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9uYWwgbG9uZyBjbGllbnRYID0gMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmNwcAppbmRl
eCBhYjIwZWVjYjljNS4uMGE2ZjgxYWY1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9VSUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAKQEAgLTMy
LDE2ICszMiwxNiBAQCBVSUV2ZW50OjpVSUV2ZW50KCkKIHsKIH0KIAotVUlFdmVudDo6VUlFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wg
Y2FuY2VsYWJsZUFyZywgRE9NV2luZG93KiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQorVUlFdmVu
dDo6VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGVB
cmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXdBcmcsIGlu
dCBkZXRhaWxBcmcpCiAgICAgOiBFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZUFyZywgY2FuY2Vs
YWJsZUFyZykKLSAgICAsIG1fdmlldyh2aWV3QXJnKQorICAgICwgbV92aWV3KFdURk1vdmUodmll
d0FyZykpCiAgICAgLCBtX2RldGFpbChkZXRhaWxBcmcpCiB7CiB9CiAKLVVJRXZlbnQ6OlVJRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlQXJnLCBib29s
IGNhbmNlbGFibGVBcmcsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqIHZpZXdB
cmcsIGludCBkZXRhaWxBcmcpCitVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBNb25vdG9u
aWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXdBcmcsIGludCBkZXRh
aWxBcmcpCiAgICAgOiBFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFy
ZywgdGltZXN0YW1wKQotICAgICwgbV92aWV3KHZpZXdBcmcpCisgICAgLCBtX3ZpZXcoV1RGTW92
ZSh2aWV3QXJnKSkKICAgICAsIG1fZGV0YWlsKGRldGFpbEFyZykKIHsKIH0KQEAgLTU1LDcgKzU1
LDcgQEAgVUlFdmVudDo6VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29u
c3QgVUlFdmVudEluaXQmIGluaXRpYWxpemVyLAogCiBVSUV2ZW50Ojp+VUlFdmVudCgpID0gZGVm
YXVsdDsKIAotdm9pZCBVSUV2ZW50Ojppbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGVBcmcsIGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVBcmcsIERPTVdpbmRvdyog
dmlld0FyZywgaW50IGRldGFpbEFyZykKK3ZvaWQgVUlFdmVudDo6aW5pdFVJRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlQXJnLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxl
QXJnLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKIHsKICAg
ICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50
LmgKaW5kZXggYmFhNzMxZmNmODEuLjUwZjJkMTc3MTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVUlFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmgKQEAg
LTIzLDIwICsyMywyMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkRPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiVUlFdmVudEluaXQuaCIKKyNpbmNsdWRl
ICJXaW5kb3dQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBSZW1v
dmUgdGhpcyB3aGVuIG5vIG9uZSBpcyBkZXBlbmRpbmcgb24gaXQgYW55bW9yZS4KLXR5cGVkZWYg
RE9NV2luZG93IEFic3RyYWN0VmlldzsKK3R5cGVkZWYgV2luZG93UHJveHkgQWJzdHJhY3RWaWV3
OwogCiBjbGFzcyBVSUV2ZW50IDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCkKKyAgICBz
dGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBp
bnQgZGV0YWlsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVUlFdmVudCh0
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RG
TW92ZSh2aWV3KSwgZGV0YWlsKSk7CiAgICAgfQogICAgIHN0YXRpYyBSZWY8VUlFdmVudD4gY3Jl
YXRlRm9yQmluZGluZ3MoKQogICAgIHsKQEAgLTQ4LDkgKzQ4LDkgQEAgcHVibGljOgogICAgIH0K
ICAgICB2aXJ0dWFsIH5VSUV2ZW50KCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRV
SUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCk7CiAKLSAg
ICBET01XaW5kb3cqIHZpZXcoKSBjb25zdCB7IHJldHVybiBtX3ZpZXcuZ2V0KCk7IH0KKyAgICBX
aW5kb3dQcm94eSogdmlldygpIGNvbnN0IHsgcmV0dXJuIG1fdmlldy5nZXQoKTsgfQogICAgIGlu
dCBkZXRhaWwoKSBjb25zdCB7IHJldHVybiBtX2RldGFpbDsgfQogCiAgICAgRXZlbnRJbnRlcmZh
Y2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKQEAgLTY1LDE0ICs2NSwxNCBAQCBw
dWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVSUV2ZW50KCk7Ci0gICAgVUlFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdp
bmRvdyosIGludCBkZXRhaWwpOwotICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFt
cCwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7CisgICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiwgaW50IGRldGFpbCk7CisgICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0
YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRhaWwpOwogICAgIFVJRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVUlFdmVudEluaXQmLCBJc1RydXN0ZWQpOwogCiBwcml2
YXRlOgogICAgIGJvb2wgaXNVSUV2ZW50KCkgY29uc3QgZmluYWw7CiAKLSAgICBSZWZQdHI8RE9N
V2luZG93PiBtX3ZpZXc7CisgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiBtX3ZpZXc7CiAgICAgaW50
IG1fZGV0YWlsOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQu
aWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRsCmluZGV4IDg3YjM5MTUyODMwLi42
YTM1YzU3YTM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmlkbApAQCAtMjAsMTEgKzIwLDExIEBACiBb
CiAgICAgQ29uc3RydWN0b3IoRE9NU3RyaW5nIHR5cGUsIG9wdGlvbmFsIFVJRXZlbnRJbml0IGV2
ZW50SW5pdERpY3QpCiBdIGludGVyZmFjZSBVSUV2ZW50IDogRXZlbnQgewotICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01XaW5kb3cgdmlldzsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93
UHJveHkgdmlldzsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBkZXRhaWw7CiAgICAgCiAg
ICAgLy8gRklYTUU6IFVzaW5nICJ1bmRlZmluZWQiIGFzIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVl
IGlzIHdyb25nLgotICAgIHZvaWQgaW5pdFVJRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUg
PSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGUgPSBmYWxzZSwgb3B0aW9u
YWwgYm9vbGVhbiBjYW5jZWxhYmxlID0gZmFsc2UsIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlldyA9
IG51bGwsIG9wdGlvbmFsIGxvbmcgZGV0YWlsID0gMCk7CisgICAgdm9pZCBpbml0VUlFdmVudChv
cHRpb25hbCBET01TdHJpbmcgdHlwZSA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBib29sZWFuIGNh
bkJ1YmJsZSA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIGNhbmNlbGFibGUgPSBmYWxzZSwgb3B0
aW9uYWwgV2luZG93UHJveHk/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBsb25nIGRldGFpbCA9IDAp
OwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbGF5ZXJYOwogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBsb25nIGxheWVyWTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2
ZW50SW5pdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRJbml0LmgKaW5kZXggMDMxNmJj
MDZmNTYuLmUxMTI4YTc2ZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVu
dEluaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaApAQCAtMjUsMTQg
KzI1LDE0IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5j
bHVkZSAiRXZlbnRJbml0LmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFVJRXZlbnRJbml0
IDogcHVibGljIEV2ZW50SW5pdCB7Ci0gICAgUmVmUHRyPERPTVdpbmRvdz4gdmlldzsKKyAgICBS
ZWZQdHI8V2luZG93UHJveHk+IHZpZXc7CiAgICAgaW50IGRldGFpbCB7IDAgfTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVUlFdmVudEluaXQuaWRsCmluZGV4IDBkN2ViOGVmYzFjLi4zY2NiYmVkNjA3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRJbml0LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaWRsCkBAIC0yNCw2ICsyNCw2IEBACiAgKi8KIAog
ZGljdGlvbmFyeSBVSUV2ZW50SW5pdCA6IEV2ZW50SW5pdCB7Ci0gICAgRE9NV2luZG93PyB2aWV3
ID0gbnVsbDsKKyAgICBXaW5kb3dQcm94eT8gdmlldyA9IG51bGw7CiAgICAgbG9uZyBkZXRhaWwg
PSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5oCmluZGV4IDBh
OGU0MDMxMjQ4Li4wODVhMDMxN2VjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VJ
RXZlbnRXaXRoS2V5U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudFdpdGhL
ZXlTdGF0ZS5oCkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBVSUV2
ZW50V2l0aEtleVN0YXRlKCkgPSBkZWZhdWx0OwogCi0gICAgVUlFdmVudFdpdGhLZXlTdGF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwg
Ym9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQotICAgICAgICA6IFVJRXZlbnQodHlwZSwgY2Fu
QnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkZXRhaWwpCisgICAgVUlFdmVudFdpdGhLZXlTdGF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCisgICAgICAgIDogVUlF
dmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRldGFpbCkK
ICAgICAgICAgLCBtX2N0cmxLZXkoY3RybEtleSkKICAgICAgICAgLCBtX2FsdEtleShhbHRLZXkp
CiAgICAgICAgICwgbV9zaGlmdEtleShzaGlmdEtleSkKQEAgLTQ5LDkgKzQ5LDkgQEAgcHJvdGVj
dGVkOgogICAgIHsKICAgICB9CiAKLSAgICBVSUV2ZW50V2l0aEtleVN0YXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3Rvbmlj
VGltZSB0aW1lc3RhbXAsIERPTVdpbmRvdyogdmlldywKKyAgICBVSUV2ZW50V2l0aEtleVN0YXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LAog
ICAgICAgICBpbnQgZGV0YWlsLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0
S2V5LCBib29sIG1ldGFLZXksIGJvb2wgYWx0R3JhcGhLZXksIGJvb2wgY2Fwc0xvY2tLZXkpCi0g
ICAgICAgICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3Rh
bXAsIHZpZXcsIGRldGFpbCkKKyAgICAgICAgICAgIDogVUlFdmVudCh0eXBlLCBjYW5CdWJibGUs
IGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKQogICAgICAgICAg
ICAgLCBtX2N0cmxLZXkoY3RybEtleSkKICAgICAgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQog
ICAgICAgICAgICAgLCBtX3NoaWZ0S2V5KHNoaWZ0S2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQu
Y3BwCmluZGV4IGQyYjhmYjcyZDkxLi41MzdjYjE5M2M4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2
ZW50LmNwcApAQCAtNDcsOCArNDcsOCBAQCBpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLAogewogfQog
Ci1pbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IGV2ZW50LCBET01XaW5kb3cqIHZpZXcpCi0gICAgOiBNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS53
aGVlbEV2ZW50LCB0cnVlLCB0cnVlLCBldmVudC50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90
b25pY1RpbWUoKSwgdmlldywgMCwgZXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgZXZlbnQucG9zaXRp
b24oKQoraW5saW5lIFdoZWVsRXZlbnQ6OldoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiBldmVudCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcpCisgICAgOiBNb3VzZUV2ZW50
KGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50LCB0cnVlLCB0cnVlLCBldmVudC50aW1lc3RhbXAoKS5h
cHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgV1RGTW92ZSh2aWV3KSwgMCwgZXZlbnQuZ2xvYmFs
UG9zaXRpb24oKSwgZXZlbnQucG9zaXRpb24oKQogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAg
ICAgICAgICwgeyB9CiAjZW5kaWYKQEAgLTYxLDkgKzYxLDkgQEAgaW5saW5lIFdoZWVsRXZlbnQ6
OldoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB2
aWV3KQogewogfQogCi1SZWY8V2hlZWxFdmVudD4gV2hlZWxFdmVudDo6Y3JlYXRlKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogdmlldykKK1JlZjxXaGVlbEV2ZW50
PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2hl
ZWxFdmVudChldmVudCwgdmlldykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdoZWVsRXZl
bnQoZXZlbnQsIFdURk1vdmUodmlldykpKTsKIH0KIAogUmVmPFdoZWVsRXZlbnQ+IFdoZWVsRXZl
bnQ6OmNyZWF0ZUZvckJpbmRpbmdzKCkKQEAgLTc2LDEyICs3NiwxMiBAQCBSZWY8V2hlZWxFdmVu
dD4gV2hlZWxFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5p
dCYgaW5pdGlhbAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdoZWVsRXZlbnQodHlwZSwgaW5p
dGlhbGl6ZXIsIGlzVHJ1c3RlZCkpOwogfQogCi12b2lkIFdoZWVsRXZlbnQ6OmluaXRXZWJLaXRX
aGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIERPTVdpbmRvdyogdmlldywg
aW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgYm9vbCBjdHJs
S2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQordm9pZCBXaGVl
bEV2ZW50Ojppbml0V2ViS2l0V2hlZWxFdmVudChpbnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZ
LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBp
bnQgcGFnZVgsIGludCBwYWdlWSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlm
dEtleSwgYm9vbCBtZXRhS2V5KQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgaW5pdE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVs
RXZlbnQsIHRydWUsIHRydWUsIHZpZXcsIDAsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VYLCBwYWdl
WSwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSwgMCwgbnVsbHB0cik7CisgICAg
aW5pdE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUsIFdURk1v
dmUodmlldyksIDAsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VYLCBwYWdlWSwgY3RybEtleSwgYWx0
S2V5LCBzaGlmdEtleSwgbWV0YUtleSwgMCwgbnVsbHB0cik7CiAKICAgICAvLyBOb3JtYWxpemUg
dG8gMTIwIG11bHRpcGxlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggSUUuCiAgICAgbV93aGVlbERl
bHRhID0geyByYXdEZWx0YVggKiBUaWNrTXVsdGlwbGllciwgcmF3RGVsdGFZICogVGlja011bHRp
cGxpZXIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCmluZGV4IDRkMzRiMzBkNmRlLi4xMGI2MmUw
NWM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgRE9NX0RFTFRBX1BBR0UKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxXaGVlbEV2
ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAg
c3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jiwg
UmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAgICBzdGF0aWMgUmVmPFdoZWVsRXZlbnQ+IGNyZWF0
ZUZvckJpbmRpbmdzKCk7CiAKICAgICBzdHJ1Y3QgSW5pdCA6IE1vdXNlRXZlbnRJbml0IHsKQEAg
LTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkID0gSXNU
cnVzdGVkOjpObyk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRXZWJLaXRXaGVlbEV2
ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIERPTVdpbmRvdyosIGludCBzY3JlZW5Y
LCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChpbnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VY
LCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJv
b2wgbWV0YUtleSk7CiAKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtV2hlZWxFdmVu
dD4mIHVuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5n
UGxhdGZvcm1FdmVudDsgfQogCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgV2hlZWxFdmVudCgpOwogICAgIFdoZWVsRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29u
c3QgSW5pdCYsIElzVHJ1c3RlZCk7Ci0gICAgV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmLCBET01XaW5kb3cqKTsKKyAgICBXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYsIFJlZlB0cjxXaW5kb3dQcm94eT4mJik7CiAKICAgICBFdmVudEludGVyZmFjZSBldmVu
dEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vV2hlZWxFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwKaW5k
ZXggOTNjNTNhNGJmYjIuLmIyODFkYTFjNjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vV2hlZWxFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaWRs
CkBAIC0zOSw3ICszOSw3IEBACiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJr
aXREaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2U7CiAKLSAgICB2b2lkIGluaXRXZWJLaXRXaGVl
bEV2ZW50KG9wdGlvbmFsIGxvbmcgd2hlZWxEZWx0YVggPSAwLCBvcHRpb25hbCBsb25nIHdoZWVs
RGVsdGFZID0gMCwgb3B0aW9uYWwgRE9NV2luZG93PyB2aWV3ID0gbnVsbCwKKyAgICB2b2lkIGlu
aXRXZWJLaXRXaGVlbEV2ZW50KG9wdGlvbmFsIGxvbmcgd2hlZWxEZWx0YVggPSAwLCBvcHRpb25h
bCBsb25nIHdoZWVsRGVsdGFZID0gMCwgb3B0aW9uYWwgV2luZG93UHJveHk/IHZpZXcgPSBudWxs
LAogICAgICAgICBvcHRpb25hbCBsb25nIHNjcmVlblggPSAwLCBvcHRpb25hbCBsb25nIHNjcmVl
blkgPSAwLCBvcHRpb25hbCBsb25nIGNsaWVudFggPSAwLCBvcHRpb25hbCBsb25nIGNsaWVudFkg
PSAwLAogICAgICAgICBvcHRpb25hbCBib29sZWFuIGN0cmxLZXkgPSBmYWxzZSwgb3B0aW9uYWwg
Ym9vbGVhbiBhbHRLZXkgPSBmYWxzZSwKICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBzaGlmdEtl
eSA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIG1ldGFLZXkgPSBmYWxzZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRl
eCBkMTQ3MjQyNzcyMy4uZDczYTcxYjBlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtNjMyLDcgKzYzMiw3IEBA
IGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0
IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjCiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJh
bWUudmlldygpKQogICAgICAgICB2aWV3LT5kaXNhYmxlTGF5ZXJGbHVzaFRocm90dGxpbmdUZW1w
b3JhcmlseUZvckludGVyYWN0aW9uKCk7CiAKLSAgICBSZWY8VGV4dEV2ZW50PiBldmVudCA9IFRl
eHRFdmVudDo6Y3JlYXRlRm9yRGljdGF0aW9uKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93
KCksIHRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgUmVmPFRleHRFdmVudD4gZXZl
bnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3RhdGlvbihtX2ZyYW1lLmRvY3VtZW50KCktPmRl
ZmF1bHRWaWV3KCksIHRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAgICAgZXZlbnQtPnNl
dFVuZGVybHlpbmdFdmVudCh0cmlnZ2VyaW5nRXZlbnQpOwogCiAgICAgdGFyZ2V0LT5kaXNwYXRj
aEV2ZW50KGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBjYjhiNmI4YmJh
Yy4uNGUzNjhiZmQ4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTU2OSw3ICs1
NjksNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmIHBhc3Rp
bmdUZXh0LCBib29sIHNtYXJ0UmVwbGFjZSkKICAgICBFbGVtZW50KiB0YXJnZXQgPSBmaW5kRXZl
bnRUYXJnZXRGcm9tU2VsZWN0aW9uKCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVy
bjsKLSAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JQbGFpblRl
eHRQYXN0ZShkb2N1bWVudCgpLmRvbVdpbmRvdygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNl
KSk7CisgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5U
ZXh0UGFzdGUoZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBs
YWNlKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQoUmVmPERvY3VtZW50RnJh
Z21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0
eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUpCkBAIC01
NzcsNyArNTc3LDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlQXNGcmFnbWVudChSZWY8RG9jdW1lbnRG
cmFnbWVudD4mJiBwYXN0aW5nRnJhZ21lbnQsIGJvb2wgc21hcnQKICAgICBFbGVtZW50KiB0YXJn
ZXQgPSBmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCk7CiAgICAgaWYgKCF0YXJnZXQpCiAg
ICAgICAgIHJldHVybjsKLSAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVh
dGVGb3JGcmFnbWVudFBhc3RlKGRvY3VtZW50KCkuZG9tV2luZG93KCksIFdURk1vdmUocGFzdGlu
Z0ZyYWdtZW50KSwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlLCByZXNwZWN0c01haWxCbG9ja3F1
b3RlKSk7CisgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRnJh
Z21lbnRQYXN0ZShkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIFdURk1vdmUocGFzdGluZ0ZyYWdt
ZW50KSwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlLCByZXNwZWN0c01haWxCbG9ja3F1b3RlKSk7
CiB9CiAKIHZvaWQgRWRpdG9yOjpwYXN0ZUFzUGxhaW5UZXh0QnlwYXNzaW5nREhUTUwoKQpAQCAt
MTg0OCw3ICsxODQ4LDcgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmlu
ZyYgdGV4dCwgU2V0Q29tcG9zaXRpb25Nb2RlIG1vZGUpCiAgICAgaW5zZXJ0VGV4dEZvckNvbmZp
cm1lZENvbXBvc2l0aW9uKHRleHQpOwogCiAgICAgaWYgKGF1dG8qIHRhcmdldCA9IGRvY3VtZW50
KCkuZm9jdXNlZEVsZW1lbnQoKSkKLSAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBv
c2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9j
dW1lbnQoKS5kb21XaW5kb3coKSwgdGV4dCkpOworICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZl
bnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2
ZW50LCBkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIHRleHQpKTsKIAogICAgIGlmIChtb2RlID09
IENhbmNlbENvbXBvc2l0aW9uKSB7CiAgICAgICAgIC8vIEFuIG9wZW4gdHlwaW5nIGNvbW1hbmQg
dGhhdCBkaXNhZ3JlZXMgYWJvdXQgY3VycmVudCBzZWxlY3Rpb24gd291bGQgY2F1c2UgaXNzdWVz
IHdpdGggdHlwaW5nIGxhdGVyIG9uLgpAQCAtMTkwOCwxMSArMTkwOCwxMSBAQCB2b2lkIEVkaXRv
cjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9z
aXRpb25VbmRlcmxpbgogICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIHNlbmQgYSBjb21wb3NpdGlv
bnN0YXJ0IGV2ZW50IG9ubHkgd2hlbiB0aGUgZ2l2ZW4gdGV4dCBpcyBub3QgZW1wdHkgYmVjYXVz
ZSB0aGlzCiAgICAgICAgICAgICAvLyBmdW5jdGlvbiBkb2Vzbid0IGNyZWF0ZSBhIGNvbXBvc2l0
aW9uIG5vZGUgd2hlbiB0aGUgdGV4dCBpcyBlbXB0eS4KICAgICAgICAgICAgIGlmICghdGV4dC5p
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9z
aXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0RXZlbnQsIGRv
Y3VtZW50KCkuZG9tV2luZG93KCksIG9yaWdpbmFsVGV4dCkpOwotICAgICAgICAgICAgICAgIGV2
ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnVw
ZGF0ZUV2ZW50LCBkb2N1bWVudCgpLmRvbVdpbmRvdygpLCB0ZXh0KTsKKyAgICAgICAgICAgICAg
ICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5jb21wb3NpdGlvbnN0YXJ0RXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgb3Jp
Z2luYWxUZXh0KSk7CisgICAgICAgICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZGVm
YXVsdFZpZXcoKSwgdGV4dCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoIXRl
eHQuaXNFbXB0eSgpKQotICAgICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZG9tV2lu
ZG93KCksIHRleHQpOworICAgICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZGVmYXVs
dFZpZXcoKSwgdGV4dCk7CiAKICAgICAgICAgaWYgKGV2ZW50KQogICAgICAgICAgICAgdGFyZ2V0
LT5kaXNwYXRjaEV2ZW50KCpldmVudCk7CkBAIC0xOTIzLDcgKzE5MjMsNyBAQCB2b2lkIEVkaXRv
cjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9z
aXRpb25VbmRlcmxpbgogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkgewogICAgICAgICBUeXBpbmdD
b21tYW5kOjpkZWxldGVTZWxlY3Rpb24oZG9jdW1lbnQoKSwgVHlwaW5nQ29tbWFuZDo6UHJldmVu
dFNwZWxsQ2hlY2tpbmcsIFR5cGluZ0NvbW1hbmQ6OlRleHRDb21wb3NpdGlvblBlbmRpbmcpOwog
ICAgICAgICBpZiAodGFyZ2V0KQotICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENv
bXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwg
ZG9jdW1lbnQoKS5kb21XaW5kb3coKSwgdGV4dCkpOworICAgICAgICAgICAgdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRp
b25lbmRFdmVudCwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCB0ZXh0KSk7CiAgICAgfQogCiAg
ICAgbV9jb21wb3NpdGlvbk5vZGUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1l
bnQuY3BwCmluZGV4IGEzZDdkOTc3MGNlLi45ZDU4MWNlZGZhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERvY3VtZW50LmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIFJlZjxEb2N1bWVudFBhcnNlcj4g
SFRNTERvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogfQogCiAvLyBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS9kb20uaHRtbCNkb20tZG9jdW1lbnQtbmFtZWRpdGVtCi1zdGQ6
Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVm
UHRyPEhUTUxDb2xsZWN0aW9uPj4+IEhUTUxEb2N1bWVudDo6bmFtZWRJdGVtKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSkKK3N0ZDo6b3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+
LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+PiBIVE1MRG9jdW1lbnQ6
Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKG5hbWUuaXNO
dWxsKCkgfHwgIWhhc0RvY3VtZW50TmFtZWRJdGVtKCpuYW1lLmltcGwoKSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMjIsMTYgKzEyMiwxNiBAQCBzdGQ6Om9wdGlvbmFsPFZh
cmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xs
ZWN0aW9uPgogICAgIGlmIChVTkxJS0VMWShkb2N1bWVudE5hbWVkSXRlbUNvbnRhaW5zTXVsdGlw
bGVFbGVtZW50cygqbmFtZS5pbXBsKCkpKSkgewogICAgICAgICBhdXRvIGNvbGxlY3Rpb24gPSBk
b2N1bWVudE5hbWVkSXRlbXMobmFtZSk7CiAgICAgICAgIEFTU0VSVChjb2xsZWN0aW9uLT5sZW5n
dGgoKSA+IDEpOwotICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8RE9NV2luZG93PiwgUmVm
UHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7IFJlZlB0cjxIVE1MQ29sbGVj
dGlvbj4geyBXVEZNb3ZlKGNvbGxlY3Rpb24pIH0gfTsKKyAgICAgICAgcmV0dXJuIFZhcmlhbnQ8
UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rp
b24+PiB7IFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4geyBXVEZNb3ZlKGNvbGxlY3Rpb24pIH0gfTsK
ICAgICB9CiAKICAgICBhdXRvJiBlbGVtZW50ID0gKmRvY3VtZW50TmFtZWRJdGVtKCpuYW1lLmlt
cGwoKSk7CiAgICAgaWYgKFVOTElLRUxZKGlzPEhUTUxJRnJhbWVFbGVtZW50PihlbGVtZW50KSkp
IHsKICAgICAgICAgaWYgKGF1dG8gZG9tV2luZG93ID0gbWFrZVJlZlB0cihkb3duY2FzdDxIVE1M
SUZyYW1lRWxlbWVudD4oZWxlbWVudCkuY29udGVudFdpbmRvdygpKSkKLSAgICAgICAgICAgIHJl
dHVybiBWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxI
VE1MQ29sbGVjdGlvbj4+IHsgV1RGTW92ZShkb21XaW5kb3cpIH07CisgICAgICAgICAgICByZXR1
cm4gVmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxI
VE1MQ29sbGVjdGlvbj4+IHsgV1RGTW92ZShkb21XaW5kb3cpIH07CiAgICAgfQogCi0gICAgcmV0
dXJuIFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhU
TUxDb2xsZWN0aW9uPj4geyBSZWZQdHI8RWxlbWVudD4geyAmZWxlbWVudCB9IH07CisgICAgcmV0
dXJuIFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8
SFRNTENvbGxlY3Rpb24+PiB7IFJlZlB0cjxFbGVtZW50PiB7ICZlbGVtZW50IH0gfTsKIH0KIAog
VmVjdG9yPEF0b21pY1N0cmluZz4gSFRNTERvY3VtZW50OjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVz
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCmluZGV4IGEzNjM5NzQwNmQzLi4w
YjNkMzQxNGE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCkBAIC00NCw3ICs0NCw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgd2lkdGgoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBpbnQgaGVpZ2h0KCk7CiAgICAgCi0gICAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJl
ZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+
PiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgc3RkOjpvcHRpb25hbDxWYXJp
YW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xs
ZWN0aW9uPj4+IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICBWZWN0b3I8QXRv
bWljU3RyaW5nPiBzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3Q7CiAKICAgICBFbGVtZW50
KiBkb2N1bWVudE5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBuYW1lKSBjb25zdCB7
IHJldHVybiBtX2RvY3VtZW50TmFtZWRJdGVtLmdldEVsZW1lbnRCeURvY3VtZW50TmFtZWRJdGVt
KG5hbWUsICp0aGlzKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9j
dW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsCmluZGV4IDEy
N2YyNjQ1ZTAzLi5hOTk5YjAzZjYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50Lmlk
bApAQCAtMjMsNSArMjMsNSBAQAogICAgIE5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50
cywKICAgICBPdmVycmlkZUJ1aWx0aW5zLAogXSBpbnRlcmZhY2UgSFRNTERvY3VtZW50IDogRG9j
dW1lbnQgeyAgICAKLSAgICBnZXR0ZXIgKERPTVdpbmRvdyBvciBFbGVtZW50IG9yIEhUTUxDb2xs
ZWN0aW9uKSAoRE9NU3RyaW5nIG5hbWUpOworICAgIGdldHRlciAoV2luZG93UHJveHkgb3IgRWxl
bWVudCBvciBIVE1MQ29sbGVjdGlvbikgKERPTVN0cmluZyBuYW1lKTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbAppbmRleCBjZDYzYTIxMmFkNC4uZWQ3YzBiNmUy
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbApAQCAtMjYsNyAr
MjYsNyBAQCBpbnRlcmZhY2UgSFRNTEZyYW1lRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICBb
UmVmbGVjdCwgVVJMXSBhdHRyaWJ1dGUgVVNWU3RyaW5nIGxvbmdEZXNjOwogICAgIFtSZWZsZWN0
XSBhdHRyaWJ1dGUgYm9vbGVhbiBub1Jlc2l6ZTsKICAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBEb2N1bWVudCBjb250ZW50RG9jdW1lbnQ7Ci0gICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVdpbmRvdyBjb250ZW50V2luZG93OworICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBXaW5kb3dQcm94eSBjb250ZW50V2luZG93OwogCiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0
ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBtYXJnaW5IZWlnaHQ7CiAgICAg
W1JlZmxlY3RdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBt
YXJnaW5XaWR0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50
LmNwcAppbmRleCA1ODg3Mzk4NDdjYi4uYjliZWYxNzYzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKQEAgLTk5LDkgKzk5LDkgQEAgRG9jdW1l
bnQqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVudERvY3VtZW50KCkgY29uc3QKICAgICBy
ZXR1cm4gbV9jb250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxw
dHI7CiB9CiAKLURPTVdpbmRvdyogSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50V2luZG93
KCkgY29uc3QKK1dpbmRvd1Byb3h5KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRXaW5k
b3coKSBjb25zdAogewotICAgIHJldHVybiBtX2NvbnRlbnRGcmFtZSA/IG1fY29udGVudEZyYW1l
LT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIG1fY29udGVu
dEZyYW1lID8gJm1fY29udGVudEZyYW1lLT53aW5kb3dQcm94eSgpIDogbnVsbHB0cjsKIH0KIAog
dm9pZCBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnNldFNhbmRib3hGbGFncyhTYW5kYm94RmxhZ3Mg
ZmxhZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAppbmRl
eCA4NjVlZGRiOTFmNS4uODBmMTgyMDBkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVPd25lckVsZW1lbnQuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+SFRNTEZyYW1lT3duZXJFbGVtZW50KCk7CiAKICAgICBGcmFtZSogY29udGVudEZyYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZW50RnJhbWU7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBET01X
aW5kb3cqIGNvbnRlbnRXaW5kb3coKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXaW5kb3dQ
cm94eSogY29udGVudFdpbmRvdygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50
KiBjb250ZW50RG9jdW1lbnQoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Q29udGVudEZyYW1lKEZy
YW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAppbmRl
eCAyODU2NDI0OTUwYS4uNWQyMzdkNDgyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmNwcApAQCAtMjMxLDE1ICsyMzEsMTMgQEAgdm9pZCBIVE1MRnJhbWVT
ZXRFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBD
b250YWluZXIKICAgICB9CiB9CiAKLURPTVdpbmRvdyogSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFt
ZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK1dpbmRvd1Byb3h5KiBIVE1MRnJhbWVT
ZXRFbGVtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewogICAgIGF1
dG8gZnJhbWVFbGVtZW50ID0gbWFrZVJlZlB0cihjaGlsZHJlbigpLT5uYW1lZEl0ZW0obmFtZSkp
OwogICAgIGlmICghaXM8SFRNTEZyYW1lRWxlbWVudD4oZnJhbWVFbGVtZW50KSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIoZG93
bmNhc3Q8SFRNTEZyYW1lRWxlbWVudD4oZnJhbWVFbGVtZW50LmdldCgpKS0+Y29udGVudERvY3Vt
ZW50KCkpKQotICAgICAgICByZXR1cm4gZG9jdW1lbnQtPmRvbVdpbmRvdygpOwotICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBkb3duY2FzdDxIVE1MRnJhbWVFbGVtZW50PigqZnJhbWVF
bGVtZW50KS5jb250ZW50V2luZG93KCk7CiB9CiAKIFZlY3RvcjxBdG9taWNTdHJpbmc+IEhUTUxG
cmFtZVNldEVsZW1lbnQ6OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAppbmRleCBkMWYzNzliNzM1Yy4uYzNjNjhi
NTdiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCkBAIC00
OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEhUTUxGcmFtZVNldEVsZW1l
bnQ+IGZpbmRDb250YWluaW5nKEVsZW1lbnQqIGRlc2NlbmRhbnQpOwogICAgIAogICAgIFZlY3Rv
cjxBdG9taWNTdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdDsKLSAgICBET01X
aW5kb3cqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBXaW5kb3dQcm94eSog
bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiBwcml2YXRlOgogICAgIEhUTUxGcmFt
ZVNldEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbAppbmRleCAzMjUwYjk0OTBlZC4uNjk0
MjE3M2U3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxl
bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50Lmlk
bApAQCAtMzMsNyArMzMsNyBAQCBpbnRlcmZhY2UgSFRNTEZyYW1lU2V0RWxlbWVudCA6IEhUTUxF
bGVtZW50IHsKIAogICAgIC8vIE5vbi1zdGFuZGFyZCBuYW1lZCBnZXR0ZXIKICAgICAvLyBGSVhN
RTogVGhpcyBpcyBub3QgaW4gdGhlIHN0YW5kYXJkLCBjYW4gd2UgcmVtb3ZlIHRoaXM/Ci0gICAg
Z2V0dGVyIERPTVdpbmRvdyAoRE9NU3RyaW5nIG5hbWUpOworICAgIGdldHRlciBXaW5kb3dQcm94
eSAoRE9NU3RyaW5nIG5hbWUpOwogfTsKIAogSFRNTEZyYW1lU2V0RWxlbWVudCBpbXBsZW1lbnRz
IFdpbmRvd0V2ZW50SGFuZGxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJRnJhbWVFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1l
bnQuaWRsCmluZGV4IDNlM2JkY2MxMTA0Li5jMTYzOTIyZWU0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwKQEAgLTM4LDcgKzM4LDcgQEAgaW50ZXJmYWNlIEhU
TUxJRnJhbWVFbGVtZW50IDogSFRNTEVsZW1lbnQgewogCiAgICAgW0NoZWNrU2VjdXJpdHlGb3JO
b2RlXSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgY29udGVudERvY3VtZW50OwogCi0gICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVdpbmRvdyBjb250ZW50V2luZG93OworICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSBjb250ZW50V2luZG93OwogCiAgICAgW0NoZWNrU2VjdXJp
dHlGb3JOb2RlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCBkMTUxMjczYTM1OS4u
ODVjMTNmZjdmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtMjgs
NiArMjgsNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgi
CiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGIwMjNh
NGUyZWYyLi4zZTJhOTE2NmYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTQ4
LDcgKzE0OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIGNsYXNzIFBvc3RNZXNz
YWdlVGltZXIgOiBwdWJsaWMgVGltZXJCYXNlIHsKIHB1YmxpYzoKLSAgICBQb3N0TWVzc2FnZVRp
bWVyKERPTVdpbmRvdyYgd2luZG93LCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBET01XaW5kb3cmIHNvdXJjZSwgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiYmIHRhcmdldE9yaWdpbiwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBz
dGFja1RyYWNlKQorICAgIFBvc3RNZXNzYWdlVGltZXIoRE9NV2luZG93JiB3aW5kb3csIE1lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4s
IFJlZlB0cjxXaW5kb3dQcm94eT4mJiBzb3VyY2UsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0
YXJnZXRPcmlnaW4sIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3RhY2tUcmFjZSkKICAgICAg
ICAgOiBtX3dpbmRvdyh3aW5kb3cpCiAgICAgICAgICwgbV9tZXNzYWdlKFdURk1vdmUobWVzc2Fn
ZSkpCiAgICAgICAgICwgbV9vcmlnaW4oc291cmNlT3JpZ2luKQpAQCAtMTYxLDcgKzE2MSw3IEBA
IHB1YmxpYzoKIAogICAgIFJlZjxNZXNzYWdlRXZlbnQ+IGV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpCiAgICAgewotICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVh
dGUoTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoY29udGV4dCwgV1RGTW92ZShtX21lc3NhZ2Uu
dHJhbnNmZXJyZWRQb3J0cykpLCBtX21lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBt
X29yaWdpbiwgeyB9LCBNZXNzYWdlRXZlbnRTb3VyY2UoUmVmUHRyPERPTVdpbmRvdz4oV1RGTW92
ZShtX3NvdXJjZSkpKSk7CisgICAgICAgIHJldHVybiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShNZXNz
YWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhjb250ZXh0LCBXVEZNb3ZlKG1fbWVzc2FnZS50cmFuc2Zl
cnJlZFBvcnRzKSksIG1fbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCksIG1fb3JpZ2lu
LCB7IH0sIG1fc291cmNlID8gc3RkOjptYWtlX29wdGlvbmFsKE1lc3NhZ2VFdmVudFNvdXJjZShX
VEZNb3ZlKG1fc291cmNlKSkpIDogc3RkOjpudWxsb3B0KTsKICAgICB9CiAKICAgICBTZWN1cml0
eU9yaWdpbiogdGFyZ2V0T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRPcmlnaW4uZ2V0
KCk7IH0KQEAgLTE4MCw3ICsxODAsNyBAQCBwcml2YXRlOgogICAgIFJlZjxET01XaW5kb3c+IG1f
d2luZG93OwogICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1fbWVzc2FnZTsKICAgICBTdHJp
bmcgbV9vcmlnaW47Ci0gICAgUmVmPERPTVdpbmRvdz4gbV9zb3VyY2U7CisgICAgUmVmUHRyPFdp
bmRvd1Byb3h5PiBtX3NvdXJjZTsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fdGFyZ2V0
T3JpZ2luOwogICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IG1fc3RhY2tUcmFjZTsKICAgICBS
ZWZQdHI8VXNlckdlc3R1cmVUb2tlbj4gbV91c2VyR2VzdHVyZVRvRm9yd2FyZDsKQEAgLTk2MCw3
ICs5NjAsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgRE9NV2luZG93JiBpbmN1bQogICAgIE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzIG1lc3NhZ2UgeyBtZXNzYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZGlzZW50
YW5nbGVkUG9ydHMucmVsZWFzZVJldHVyblZhbHVlKCkgfTsKIAogICAgIC8vIFNjaGVkdWxlIHRo
ZSBtZXNzYWdlLgotICAgIGF1dG8qIHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGltZXIoKnRoaXMs
IFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgaW5jdW1iZW50V2luZG93LCBXVEZNb3Zl
KHRhcmdldCksIFdURk1vdmUoc3RhY2tUcmFjZSkpOworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4g
aW5jdW1iZW50V2luZG93UHJveHkgPSBpbmN1bWJlbnRXaW5kb3cuZnJhbWUoKSA/ICZpbmN1bWJl
bnRXaW5kb3cuZnJhbWUoKS0+d2luZG93UHJveHkoKSA6IG51bGxwdHI7CisgICAgYXV0byogdGlt
ZXIgPSBuZXcgUG9zdE1lc3NhZ2VUaW1lcigqdGhpcywgV1RGTW92ZShtZXNzYWdlKSwgc291cmNl
T3JpZ2luLCBXVEZNb3ZlKGluY3VtYmVudFdpbmRvd1Byb3h5KSwgV1RGTW92ZSh0YXJnZXQpLCBX
VEZNb3ZlKHN0YWNrVHJhY2UpKTsKICAgICB0aW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CiAKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBvc3RNZXNzYWdlKCptX2ZyYW1lLCAqdGlt
ZXIsIHN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggOTE3
NGFmZDUzMjEuLjdjNDlhMjE3ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcApAQCAtNTA4LDcgKzUwOCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4
dElucHV0RXZlbnRGb3IoRnJhbWUqIGlubmVyRnJhbWUsIGNvbnN0IERyYWdEYXRhCiAgICAgU3Ry
aW5nIHRleHQgPSBtX3BhZ2UuZHJhZ0NhcmV0Q29udHJvbGxlcigpLmlzQ29udGVudFJpY2hseUVk
aXRhYmxlKCkgPyBlbXB0eVN0cmluZygpIDogZHJhZ0RhdGEuYXNQbGFpblRleHQoKTsKICAgICBF
bGVtZW50KiB0YXJnZXQgPSBpbm5lckZyYW1lLT5lZGl0b3IoKS5maW5kRXZlbnRUYXJnZXRGcm9t
KG1fcGFnZS5kcmFnQ2FyZXRDb250cm9sbGVyKCkuY2FyZXRQb3NpdGlvbigpKTsKICAgICAvLyBG
SVhNRTogV2hhdCBndWFyYW50ZWVzIHRhcmdldCBpcyBub3QgbnVsbD8KLSAgICBhdXRvIGV2ZW50
ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEcm9wKGlubmVyRnJhbWUtPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpLCB0ZXh0KTsKKyAgICBhdXRvIGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEcm9w
KGlubmVyRnJhbWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksIHRleHQpOwogICAgIHRhcmdl
dC0+ZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgcmV0dXJuICFldmVudC0+ZGVmYXVsdFByZXZl
bnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDg3ZDEyNzc0
Y2M2Li43ZDJjOTNhM2MwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAt
MzgwMiw3ICszODAyLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRleHRJbnB1dEV2ZW50
KGNvbnN0IFN0cmluZyYgdGV4dCwgRXZlbnQqIHVuZGVybHlpbmdFdmUKICAgICBpZiAoRnJhbWVW
aWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpCiAgICAgICAgIHZpZXctPmRpc2FibGVMYXllckZs
dXNoVGhyb3R0bGluZ1RlbXBvcmFyaWx5Rm9ySW50ZXJhY3Rpb24oKTsKIAotICAgIFJlZjxUZXh0
RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5kb21X
aW5kb3coKSwgdGV4dCwgaW5wdXRUeXBlKTsKKyAgICBSZWY8VGV4dEV2ZW50PiBldmVudCA9IFRl
eHRFdmVudDo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgdGV4dCwg
aW5wdXRUeXBlKTsKICAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KHVuZGVybHlpbmdFdmVu
dCk7CiAKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cAppbmRleCBhODQyNjVhYTc5My4uZmQ2OTA0M2JmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBA
IC0yMTIsNiArMjEyLDcgQEAgUmVmPEZyYW1lPiBGcmFtZTo6Y3JlYXRlKFBhZ2UqIHBhZ2UsIEhU
TUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFtZUwKIAogRnJhbWU6On5GcmFt
ZSgpCiB7CisgICAgd2luZG93UHJveHkoKS5jbGVhcigpOwogICAgIHNldFZpZXcobnVsbHB0cik7
CiAgICAgbG9hZGVyKCkuY2FuY2VsQW5kQ2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXcubW0KaW5kZXggMWE0YzI5YjFiMGQuLjE2OWU0YWU1
ZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXcu
bW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9XaW5kb3dQcm94eS5oPgogCiAjZGVmaW5lIElN
UEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpGcmFtZSo+KF9pbnRlcm5hbCkKIApAQCAtMTAw
LDMgKzEwMSwxOSBAQCBET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpBYnN0cmFjdERPTVdp
bmRvdyogdmFsdWUpCiAKICAgICByZXR1cm4ga2l0KGRvd25jYXN0PFdlYkNvcmU6OkRPTVdpbmRv
dz4odmFsdWUpKTsKIH0KKworRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6V2luZG93UHJv
eHkqIHdpbmRvd1Byb3h5KQoreworICAgIGlmICghd2luZG93UHJveHkpCisgICAgICAgIHJldHVy
biBuaWw7CisKKyAgICByZXR1cm4ga2l0KHdpbmRvd1Byb3h5LT53aW5kb3coKSk7Cit9CisKK1dl
YkNvcmU6OldpbmRvd1Byb3h5KiB0b1dpbmRvd1Byb3h5KERPTUFic3RyYWN0VmlldyAqdmlldykK
K3sKKyAgICBhdXRvKiB3aW5kb3cgPSBjb3JlKHZpZXcpOworICAgIGlmICghd2luZG93IHx8ICF3
aW5kb3ctPmZyYW1lKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuICZ3aW5kb3ct
PmZyYW1lKCktPndpbmRvd1Byb3h5KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oCmluZGV4IGM0ZDczMjVjN2YyLi4z
NTlmMDVlYjRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFi
c3RyYWN0Vmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUFic3RyYWN0Vmlld0ludGVybmFsLmgKQEAgLTI4LDExICsyOCwxNCBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQWJzdHJhY3RET01XaW5kb3c7CiBjbGFzcyBET01XaW5kb3c7CitjbGFz
cyBXaW5kb3dQcm94eTsKIH0KIAogV2ViQ29yZTo6RE9NV2luZG93KiBjb3JlKERPTUFic3RyYWN0
VmlldyAqKTsKIERPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OkRPTVdpbmRvdyopOwogRE9N
QWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6QWJzdHJhY3RET01XaW5kb3cqKTsKK0RPTUFic3Ry
YWN0VmlldyAqa2l0KFdlYkNvcmU6OldpbmRvd1Byb3h5Kik7CitXZWJDb3JlOjpXaW5kb3dQcm94
eSogdG9XaW5kb3dQcm94eShET01BYnN0cmFjdFZpZXcgKik7CiAKIEBpbnRlcmZhY2UgRE9NQWJz
dHJhY3RWaWV3IChXZWJLaXRMZWdhY3lJbnRlcm5hbCkKIC0gKHZvaWQpX2Rpc2Nvbm5lY3RGcmFt
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQppbmRleCA2YzJm
MzZkODI0YS4uYTdiODEzNDAwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
RG9jdW1lbnQubW0KQEAgLTg0LDYgKzg0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVHJlZVdhbGtl
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9XaW5kb3dQcm94eS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9YUGF0aEV4cHJlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvWFBhdGhOU1Jl
c29sdmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1hQYXRoUmVzdWx0Lmg+CkBAIC0xNjIsNyArMTYz
LDEwIEBAIC0gKHZvaWQpc2V0RG9jdW1lbnRVUkk6KE5TU3RyaW5nICopbmV3RG9jdW1lbnRVUkkK
IC0gKERPTUFic3RyYWN0VmlldyAqKWRlZmF1bHRWaWV3CiB7CiAgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+
ZGVmYXVsdFZpZXcoKSkpOworICAgIGF1dG8qIGRlZmF1bHRWaWV3ID0gSU1QTC0+ZGVmYXVsdFZp
ZXcoKTsKKyAgICBpZiAoIWRlZmF1bHRWaWV3KQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJl
dHVybiBraXQoZGVmYXVsdFZpZXctPndpbmRvdygpKTsKIH0KIAogLSAoRE9NU3R5bGVTaGVldExp
c3QgKilzdHlsZVNoZWV0cwpAQCAtNjg0LDcgKzY4OCw3IEBAIC0gKERPTUNTU1N0eWxlRGVjbGFy
YXRpb24gKilnZXRDb21wdXRlZFN0eWxlOihET01FbGVtZW50ICopZWxlbWVudCBwc2V1ZG9FbGVt
ZW50CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIGlmICgh
ZWxlbWVudCkKICAgICAgICAgcmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKLSAgICBXZWJDb3Jl
OjpET01XaW5kb3cqIGR2ID0gSU1QTC0+ZGVmYXVsdFZpZXcoKTsKKyAgICBXZWJDb3JlOjpET01X
aW5kb3cqIGR2ID0gSU1QTC0+ZG9tV2luZG93KCk7CiAgICAgaWYgKCFkdikKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKGR2LT5nZXRDb21wdXRlZFN0eWxl
KCpjb3JlKGVsZW1lbnQpLCBwc2V1ZG9FbGVtZW50KSkpOwpAQCAtNjk4LDcgKzcwMiw3IEBAIC0g
KERPTUNTU1J1bGVMaXN0ICopZ2V0TWF0Y2hlZENTU1J1bGVzOihET01FbGVtZW50ICopZWxlbWVu
dCBwc2V1ZG9FbGVtZW50OihOU1N0CiAtIChET01DU1NSdWxlTGlzdCAqKWdldE1hdGNoZWRDU1NS
dWxlczooRE9NRWxlbWVudCAqKWVsZW1lbnQgcHNldWRvRWxlbWVudDooTlNTdHJpbmcgKilwc2V1
ZG9FbGVtZW50IGF1dGhvck9ubHk6KEJPT0wpYXV0aG9yT25seQogewogICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpET01XaW5kb3cqIGR2ID0g
SU1QTC0+ZGVmYXVsdFZpZXcoKTsKKyAgICBXZWJDb3JlOjpET01XaW5kb3cqIGR2ID0gSU1QTC0+
ZG9tV2luZG93KCk7CiAgICAgaWYgKCFkdikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1
cm4ga2l0KFdURjo6Z2V0UHRyKGR2LT5nZXRNYXRjaGVkQ1NTUnVsZXMoY29yZShlbGVtZW50KSwg
cHNldWRvRWxlbWVudCwgYXV0aG9yT25seSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW0KaW5kZXggOTc3ZWI0YTZiODIuLmQ1YWIw
MTFmOGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZy
YW1lRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZy
YW1lRWxlbWVudC5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRD
aGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9XaW5kb3dQcm94eS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
SFRNTEZyYW1lRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRl
cm5hbCkpCkBAIC0xNDgsNyArMTQ5LDEwIEBAIC0gKERPTURvY3VtZW50ICopY29udGVudERvY3Vt
ZW50CiAtIChET01BYnN0cmFjdFZpZXcgKiljb250ZW50V2luZG93CiB7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIo
SU1QTC0+Y29udGVudFdpbmRvdygpKSk7CisgICAgYXV0byogY29udGVudFdpbmRvdyA9IElNUEwt
PmNvbnRlbnRXaW5kb3coKTsKKyAgICBpZiAoIWNvbnRlbnRXaW5kb3cpCisgICAgICAgIHJldHVy
biBuaWw7CisgICAgcmV0dXJuIGtpdChjb250ZW50V2luZG93LT53aW5kb3coKSk7CiB9CiAKIC0g
KE5TU3RyaW5nICopbG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbQppbmRleCBiMWIyYzAzMThiMi4uNmVhMzczYWMzMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSUZyYW1lRWxl
bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTElGcmFtZUVs
ZW1lbnQubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KICNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2luZG93UHJveHkuaD4KICNpbXBvcnQg
PHd0Zi9HZXRQdHIuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxJ
RnJhbWVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFs
KSkKQEAgLTE5Niw3ICsxOTcsMTAgQEAgLSAoRE9NRG9jdW1lbnQgKiljb250ZW50RG9jdW1lbnQK
IC0gKERPTUFic3RyYWN0VmlldyAqKWNvbnRlbnRXaW5kb3cKIHsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBM
LT5jb250ZW50V2luZG93KCkpKTsKKyAgICBhdXRvKiBjb250ZW50V2luZG93ID0gSU1QTC0+Y29u
dGVudFdpbmRvdygpOworICAgIGlmICghY29udGVudFdpbmRvdykKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICByZXR1cm4ga2l0KGNvbnRlbnRXaW5kb3ctPndpbmRvdygpKTsKIH0KIAogQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQppbmRl
eCBlOWFiMWZlZmU3NC4uYmEyZmJlNGUxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01LZXlib2FyZEV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01LZXlib2FyZEV2ZW50Lm1tCkBAIC0xMTAsMjUgKzExMCwyNSBAQCAtIChCT09M
KWdldE1vZGlmaWVyU3RhdGU6KE5TU3RyaW5nICopa2V5SWRlbnRpZmllckFyZwogLSAodm9pZClp
bml0S2V5Ym9hcmRFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJi
bGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKXZp
ZXcga2V5SWRlbnRpZmllcjooTlNTdHJpbmcgKilpbktleUlkZW50aWZpZXIgbG9jYXRpb246KHVu
c2lnbmVkKWluTG9jYXRpb24gY3RybEtleTooQk9PTClpbkN0cmxLZXkgYWx0S2V5OihCT09MKWlu
QWx0S2V5IHNoaWZ0S2V5OihCT09MKWluU2hpZnRLZXkgbWV0YUtleTooQk9PTClpbk1ldGFLZXkg
YWx0R3JhcGhLZXk6KEJPT0wpaW5BbHRHcmFwaEtleQogewogICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBj
YW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5Mb2Nh
dGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkFsdEdy
YXBoS2V5KTsKKyAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIHRvV2luZG93UHJveHkodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5Mb2NhdGlv
biwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkFsdEdyYXBo
S2V5KTsKIH0KIAogLSAodm9pZClpbml0S2V5Ym9hcmRFdmVudDooTlNTdHJpbmcgKil0eXBlIGNh
bkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6
KERPTUFic3RyYWN0VmlldyAqKXZpZXcga2V5SWRlbnRpZmllcjooTlNTdHJpbmcgKilpbktleUlk
ZW50aWZpZXIgbG9jYXRpb246KHVuc2lnbmVkKWluTG9jYXRpb24gY3RybEtleTooQk9PTClpbkN0
cmxLZXkgYWx0S2V5OihCT09MKWluQWx0S2V5IHNoaWZ0S2V5OihCT09MKWluU2hpZnRLZXkgbWV0
YUtleTooQk9PTClpbk1ldGFLZXkKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBj
YW5jZWxhYmxlLCBjb3JlKHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluTG9jYXRpb24sIGluQ3Ry
bEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSk7CisgICAgSU1QTC0+aW5pdEtl
eWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRvd1Byb3h5KHZp
ZXcpLCBpbktleUlkZW50aWZpZXIsIGluTG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGlu
U2hpZnRLZXksIGluTWV0YUtleSk7CiB9CiAKIC0gKHZvaWQpaW5pdEtleWJvYXJkRXZlbnQ6KE5T
U3RyaW5nICopdHlwZSBjYW5CdWJibGU6KEJPT0wpY2FuQnViYmxlIGNhbmNlbGFibGU6KEJPT0wp
Y2FuY2VsYWJsZSB2aWV3OihET01BYnN0cmFjdFZpZXcgKil2aWV3IGtleUlkZW50aWZpZXI6KE5T
U3RyaW5nICopaW5LZXlJZGVudGlmaWVyIGtleUxvY2F0aW9uOih1bnNpZ25lZClpbktleUxvY2F0
aW9uIGN0cmxLZXk6KEJPT0wpaW5DdHJsS2V5IGFsdEtleTooQk9PTClpbkFsdEtleSBzaGlmdEtl
eTooQk9PTClpblNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wpaW5NZXRhS2V5IGFsdEdyYXBoS2V5OihC
T09MKWluQWx0R3JhcGhLZXkKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCBjb3JlKHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluS2V5TG9jYXRpb24sIGluQ3Ry
bEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwgaW5BbHRHcmFwaEtleSk7Cisg
ICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0
b1dpbmRvd1Byb3h5KHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluS2V5TG9jYXRpb24sIGluQ3Ry
bEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwgaW5BbHRHcmFwaEtleSk7CiB9
CiAKIC0gKHZvaWQpaW5pdEtleWJvYXJkRXZlbnQ6KE5TU3RyaW5nICopdHlwZSBjYW5CdWJibGU6
KEJPT0wpY2FuQnViYmxlIGNhbmNlbGFibGU6KEJPT0wpY2FuY2VsYWJsZSB2aWV3OihET01BYnN0
cmFjdFZpZXcgKil2aWV3IGtleUlkZW50aWZpZXI6KE5TU3RyaW5nICopaW5LZXlJZGVudGlmaWVy
IGtleUxvY2F0aW9uOih1bnNpZ25lZClpbktleUxvY2F0aW9uIGN0cmxLZXk6KEJPT0wpaW5DdHJs
S2V5IGFsdEtleTooQk9PTClpbkFsdEtleSBzaGlmdEtleTooQk9PTClpblNoaWZ0S2V5IG1ldGFL
ZXk6KEJPT0wpaW5NZXRhS2V5CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2Fu
Y2VsYWJsZSwgY29yZSh2aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBpbktleUxvY2F0aW9uLCBpbkN0
cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXkpOworICAgIElNUEwtPmluaXRL
ZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2
aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBpbktleUxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5
LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTW91c2VFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tCmluZGV4IDdjN2UwZGRmZjE0Li5lNTE1ZDg5MzVj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KQEAg
LTE0NSw3ICsxNDUsNyBAQCAtICh2b2lkKWluaXRNb3VzZUV2ZW50OihOU1N0cmluZyAqKXR5cGUg
Y2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihCTwogICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBET01Ob2RlKiBpblJlbGF0ZWRUYXJnZXRP
YmpDID0gaW5SZWxhdGVkVGFyZ2V0OwogICAgIFdlYkNvcmU6Ok5vZGUqIGluUmVsYXRlZFRhcmdl
dE5vZGUgPSBjb3JlKGluUmVsYXRlZFRhcmdldE9iakMpOwotICAgIElNUEwtPmluaXRNb3VzZUV2
ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29yZSh2aWV3KSwgZGV0YWlsLCBpblNj
cmVlblgsIGluU2NyZWVuWSwgaW5DbGllbnRYLCBpbkNsaWVudFksIGluQ3RybEtleSwgaW5BbHRL
ZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwgaW5CdXR0b24sIGluUmVsYXRlZFRhcmdldE5vZGUp
OworICAgIElNUEwtPmluaXRNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwg
dG9XaW5kb3dQcm94eSh2aWV3KSwgZGV0YWlsLCBpblNjcmVlblgsIGluU2NyZWVuWSwgaW5DbGll
bnRYLCBpbkNsaWVudFksIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtl
eSwgaW5CdXR0b24sIGluUmVsYXRlZFRhcmdldE5vZGUpOwogfQogCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbQppbmRleCAyODY3YmM4MDIzOS4uZGZh
NzYyMDI0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0
RXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5t
bQpAQCAtNTAsNyArNTAsNyBAQCAtIChOU1N0cmluZyAqKWRhdGEKIC0gKHZvaWQpaW5pdFRleHRF
dmVudDooTlNTdHJpbmcgKil0eXBlQXJnIGNhbkJ1YmJsZUFyZzooQk9PTCljYW5CdWJibGVBcmcg
Y2FuY2VsYWJsZUFyZzooQk9PTCljYW5jZWxhYmxlQXJnIHZpZXdBcmc6KERPTUFic3RyYWN0Vmll
dyAqKXZpZXdBcmcgZGF0YUFyZzooTlNTdHJpbmcgKilkYXRhQXJnCiB7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmluaXRUZXh0RXZlbnQodHlw
ZUFyZywgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCBjb3JlKHZpZXdBcmcpLCBkYXRhQXJn
KTsKKyAgICBJTVBMLT5pbml0VGV4dEV2ZW50KHR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2Vs
YWJsZUFyZywgdG9XaW5kb3dQcm94eSh2aWV3QXJnKSwgZGF0YUFyZyk7CiB9CiAKIEBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJRXZlbnQubW0KaW5kZXggYTQ2NGRhY2ZiZjUu
LjkxMDM3OWU2NTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
VUlFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5t
bQpAQCAtNDUsNyArNDUsOSBAQCBAaW1wbGVtZW50YXRpb24gRE9NVUlFdmVudAogLSAoRE9NQWJz
dHJhY3RWaWV3ICopdmlldwogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPnZpZXcoKSkpOworICAgIGlm
ICghSU1QTC0+dmlldygpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBraXQoSU1Q
TC0+dmlldygpLT53aW5kb3coKSk7CiB9CiAKIC0gKGludClkZXRhaWwKQEAgLTEwMyw3ICsxMDUs
NyBAQCAtIChpbnQpd2hpY2gKIC0gKHZvaWQpaW5pdFVJRXZlbnQ6KE5TU3RyaW5nICopdHlwZSBj
YW5CdWJibGU6KEJPT0wpY2FuQnViYmxlIGNhbmNlbGFibGU6KEJPT0wpY2FuY2VsYWJsZSB2aWV3
OihET01BYnN0cmFjdFZpZXcgKilpblZpZXcgZGV0YWlsOihpbnQpaW5EZXRhaWwKIHsKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+aW5pdFVJRXZl
bnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBjb3JlKGluVmlldyksIGluRGV0YWlsKTsK
KyAgICBJTVBMLT5pbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRvV2lu
ZG93UHJveHkoaW5WaWV3KSwgaW5EZXRhaWwpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NV2hlZWxFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01XaGVlbEV2ZW50Lm1tCmluZGV4IDhmMDU2OWNhNmEzLi5kZDRhNTdi
MGYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZl
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQubW0K
QEAgLTk2LDcgKzk2LDcgQEAgLSAoQk9PTClpc0hvcml6b250YWwKIC0gKHZvaWQpaW5pdFdoZWVs
RXZlbnQ6KGludClpbldoZWVsRGVsdGFYIHdoZWVsRGVsdGFZOihpbnQpaW5XaGVlbERlbHRhWSB2
aWV3OihET01BYnN0cmFjdFZpZXcgKil2aWV3IHNjcmVlblg6KGludClzY3JlZW5YIHNjcmVlblk6
KGludClzY3JlZW5ZIGNsaWVudFg6KGludCljbGllbnRYIGNsaWVudFk6KGludCljbGllbnRZIGN0
cmxLZXk6KEJPT0wpY3RybEtleSBhbHRLZXk6KEJPT0wpYWx0S2V5IHNoaWZ0S2V5OihCT09MKXNo
aWZ0S2V5IG1ldGFLZXk6KEJPT0wpbWV0YUtleQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0V2ViS2l0V2hlZWxFdmVudChpbldoZWVs
RGVsdGFYLCBpbldoZWVsRGVsdGFZLCBjb3JlKHZpZXcpLCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGll
bnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KTsKKyAgICBJ
TVBMLT5pbml0V2ViS2l0V2hlZWxFdmVudChpbldoZWVsRGVsdGFYLCBpbldoZWVsRGVsdGFZLCB0
b1dpbmRvd1Byb3h5KHZpZXcpLCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBj
dHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmluZGV4IDFiNDNkZDlmNGNhLi5iMjUy
NjFmN2RmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNz
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2VzLmNwcApA
QCAtODAyLDcgKzgwMiw3IEBAIEhSRVNVTFQgRE9NRG9jdW1lbnQ6OmdldENvbXB1dGVkU3R5bGUo
X0luX29wdF8gSURPTUVsZW1lbnQqIGVsdCwgX0luXyBCU1RSIHBzZXVkCiAgICAgaWYgKCFlbGVt
ZW50KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgV2ViQ29yZTo6RE9NV2luZG93KiBk
diA9IG1fZG9jdW1lbnQtPmRlZmF1bHRWaWV3KCk7CisgICAgYXV0byogZHYgPSBtX2RvY3VtZW50
LT5kb21XaW5kb3coKTsKICAgICBTdHJpbmcgcHNldWRvRWx0U3RyaW5nKHBzZXVkb0VsdCk7CiAg
ICAgCiAgICAgaWYgKCFkdikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338877</attachid>
            <date>2018-04-26 09:15:59 -0700</date>
            <delta_ts>2018-04-26 09:19:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185022-20180426091558.patch</filename>
            <type>text/plain</type>
            <size>129046</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNmYmU3ZTk5YzEwNmQx
NzM1Nzc3MGZmMTQxMzkwZjdlODNmNmU2My4uZjJiZThiZDIxY2I2ZGVhOTg4MGI2NDFlMGI0ZTZl
MGY3OGFjOGMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NCBAQAorMjAxOC0wNC0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94eSBp
bnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHVzaW5nIERPTVdpbmRvdyBpbiBhbGwgb2Ygb3Vy
IElETCBmaWxlcyBhbmQgdXNlIFdpbmRvd1Byb3h5IGFzCisgICAgICAgIHBlciB0aGVpciByZXNw
ZWN0aXZlIHNwZWNpZmljYXRpb25zLiBBcyBhIHJlc3VsdCwgdGhlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGFzIGFsc28gdXBkYXRlZCB0byB1c2UgV2luZG93UHJveHkgdHlwZSBpbnN0ZWFkIG9m
IERPTVdpbmRvdy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9JRExUeXBlcy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQ29udmVydFdpbmRvd1Byb3h5Lmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNXaW5kb3dQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dpbmRvd1Byb3h5Ojp3
aW5kb3dQcm94eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dpbmRvd1Byb3h5Ojp0b1dy
YXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5Ojp+V2luZG93UHJveHkpOgorICAgICAgICAo
V2ViQ29yZTo6V2luZG93UHJveHk6OmRlc3Ryb3lBbGxKU1dpbmRvd1Byb3hpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2luZG93UHJveHk6Omdsb2JhbE9iamVjdCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvV2luZG93UHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpmcmFt
ZSBjb25zdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtOgor
ICAgICAgICAoSXNCdWlsdGluVHlwZSk6CisgICAgICAgIChDb21wdXRlSXNDYWxsYmFja0ludGVy
ZmFjZSk6CisgICAgICAgIChDb21wdXRlSXNDYWxsYmFja0Z1bmN0aW9uKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEFkZFRvSW5jbHVk
ZXNGb3JJRExUeXBlKToKKyAgICAgICAgKEdldEJhc2VJRExUeXBlKToKKyAgICAgICAgKE5hdGl2
ZVRvSlNWYWx1ZURPTUNvbnZlcnROZWVkc1N0YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDlCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZE92ZXJsb2FkRGlzcGF0
Y2hlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAg
ICAgICAqIGRvbS9Db21wb3NpdGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBv
c2l0aW9uRXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9z
aXRpb25FdmVudDo6aW5pdENvbXBvc2l0aW9uRXZlbnQpOgorICAgICAgICAqIGRvbS9Db21wb3Np
dGlvbkV2ZW50Lmg6CisgICAgICAgICogZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGVmYXVs
dFZpZXcgY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5pZGw6CisgICAgICAgICogZG9tL0RvY3VtZW50VG91Y2guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUb3VjaDo6Y3JlYXRlVG91Y2gpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudFRvdWNoLmg6CisgICAgICAgICogZG9tL0RvY3VtZW50VG91Y2guaWRsOgorICAgICAgICAq
IGRvbS9Gb2N1c0V2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzRXZlbnQ6OkZvY3Vz
RXZlbnQpOgorICAgICAgICAqIGRvbS9Gb2N1c0V2ZW50Lmg6CisgICAgICAgICogZG9tL0lucHV0
RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFdmVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklucHV0RXZlbnQ6OklucHV0RXZlbnQpOgorICAgICAgICAqIGRvbS9JbnB1
dEV2ZW50Lmg6CisgICAgICAgICogZG9tL0tleWJvYXJkRXZlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6S2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpL
ZXlib2FyZEV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudDo6
aW5pdEtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudDo6Y2hh
ckNvZGUgY29uc3QpOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50Lmg6CisgICAgICAgICog
ZG9tL0tleWJvYXJkRXZlbnQuaWRsOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAg
ICAgICAgKiBkb20vTWVzc2FnZUV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TW91c2VFdmVudDo6TW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2
ZW50Ojppbml0TW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50Ojppbml0
TW91c2VFdmVudFF1aXJrKToKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5oOgorICAgICAgICAq
IGRvbS9Nb3VzZUV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vTW91c2VSZWxhdGVkRXZlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojppbml0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpmcmFtZVZpZXdGcm9tV2luZG93UHJveHkpOgor
ICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGluYXRlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6ZG9jdW1lbnRUb0Fic29sdXRlU2Nh
bGVGYWN0b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6OmNv
bXB1dGVQYWdlTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6
OmxvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzIGNvbnN0KToKKyAgICAgICAgKiBkb20vTW91
c2VSZWxhdGVkRXZlbnQuaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgICogZG9t
L1NpbXVsYXRlZENsaWNrLmNwcDoKKyAgICAgICAgKiBkb20vVGV4dEV2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRF
dmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2
ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVu
dDo6Y3JlYXRlRm9yRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZv
ckRpY3RhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OlRleHRFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmluaXRUZXh0RXZlbnQpOgorICAgICAgICAqIGRv
bS9UZXh0RXZlbnQuaDoKKyAgICAgICAgKiBkb20vVGV4dEV2ZW50LmlkbDoKKyAgICAgICAgKiBk
b20vVG91Y2hFdmVudC5pZGw6CisgICAgICAgICogZG9tL1VJRXZlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VUlFdmVudDo6VUlFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpVSUV2ZW50Ojpp
bml0VUlFdmVudCk6CisgICAgICAgICogZG9tL1VJRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlVJRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpVSUV2ZW50Ojp2aWV3IGNvbnN0
KToKKyAgICAgICAgKiBkb20vVUlFdmVudC5pZGw6CisgICAgICAgICogZG9tL1VJRXZlbnRJbml0
Lmg6CisgICAgICAgICogZG9tL1VJRXZlbnRJbml0LmlkbDoKKyAgICAgICAgKiBkb20vVUlFdmVu
dFdpdGhLZXlTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VUlFdmVudFdpdGhLZXlTdGF0ZTo6
VUlFdmVudFdpdGhLZXlTdGF0ZSk6CisgICAgICAgICogZG9tL1doZWVsRXZlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6V2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpXaGVlbEV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6aW5p
dFdlYktpdFdoZWVsRXZlbnQpOgorICAgICAgICAqIGRvbS9XaGVlbEV2ZW50Lmg6CisgICAgICAg
ICogZG9tL1doZWVsRXZlbnQuaWRsOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyOjppbnNlcnREaWN0YXRlZFRleHQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OnBhc3RlQXNGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6Om5hbWVkSXRlbSk6CisgICAgICAgICogaHRt
bC9IVE1MRG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudC5pZGw6CisgICAg
ICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFt
ZU93bmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1l
bnQ6OmNvbnRlbnRXaW5kb3cgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lT3duZXJF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVkSXRlbSk6CisgICAgICAgICog
aHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVTZXRF
bGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbDoKKyAgICAg
ICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc3RNZXNzYWdlVGltZXI6OlBvc3RNZXNzYWdlVGltZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UG9zdE1lc3NhZ2VUaW1lcjo6ZXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZGlzcGF0Y2hU
ZXh0SW5wdXRFdmVudEZvcik6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVudCk6CisKKyAg
ICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp+RnJhbWUp
OgorICAgICAgICBVcGRhdGUgRnJhbWUgZGVzdHJ1Y3RvciB0byBkZXN0cm95IGFsbCBpdHMgSlNX
aW5kb3dQcm94aWVzIGJlZm9yZSBkb2luZyBhbnl0aGluZyBlbHNlLgorICAgICAgICBCZWNhdXNl
IHJlZmluZyBhIFdpbmRvd1Byb3h5IGFjdHVhbGx5IHJlZnMgaXRzIGZyYW1lLCBpdCBpcyBwb3Nz
aWJsZSB0aGF0IHdoZW4gYSBKUworICAgICAgICBvYmplY3QgaXMgc3dlcHQsIGl0cyBkZXN0cm95
cyBhIFdpbmRvd1Byb3h5LCB3aGljaCBkZXN0cm95cyBhIEZyYW1lLiBUaGUgRnJhbWUgZGVzdHJ1
Y3RvcgorICAgICAgICB3b3VsZCB0aGVuIGNhbGwgRnJhbWVMb2FkZXI6OmNhbmNlbEFuZENsZWFy
KCkgd2hpY2ggd291bGQgZW5kIHVwIGNhbGxpbmcgU2NyaXB0Q29udHJvbGxlcjo6ZW5hYmxlRXZh
bCgpCisgICAgICAgIGFuZCBhY2Nlc3NpbmcgSlNXaW5kb3dQcm94eTo6d2luZG93KCkuIFRoaXMg
d291bGQgaGl0IGFuIGFzc2VydGlvbiB3aGVuIGRvaW5nIHRoZSBqc0Nhc3QoKSBpbgorICAgICAg
ICBKU0NlbGw6OmNsYXNzSW5mbyhKU0M6OlZNJik6CisgICAgICAgIEFTU0VSVCh2bS5oZWFwLm11
dGF0b3JTdGF0ZSgpICE9IE11dGF0b3JTdGF0ZTo6U3dlZXBpbmcgfHwgIXZtLmN1cnJlbnRUaHJl
YWRJc0hvbGRpbmdBUElMb2NrKCkpOworCiAyMDE4LTA0LTIzICBNaWNoYWVsIENhdGFuemFybyAg
PG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtHVEtdIFJlbW92ZSBXbFVu
aXF1ZVB0cjx3bF9kaXNwbGF5PiBmb290Z3VuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5k
ZXggZjMwODk1YWJhZjY3MDAyMDc0MmQ0ZWZjMDM5MDE4ZGEyNzdlNzZhZi4uNmFkNTI1ZTk4MTBl
YTAyNjcyZmUxZTA5Mzc1NjExYjhmMzg2NDAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM3IEBACisyMDE4LTA0LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXNlIFdpbmRvd1Byb3h5IGluc3RlYWQgb2YgRE9NV2luZG93IGlu
IG91ciBJREwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NTAyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogRE9NL0RPTUFic3RyYWN0Vmlldy5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICh0b1dp
bmRvd1Byb3h5KToKKyAgICAgICAgKiBET00vRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaDoKKyAg
ICAgICAgKiBET00vRE9NRG9jdW1lbnQubW06CisgICAgICAgICgtW0RPTURvY3VtZW50IGRlZmF1
bHRWaWV3XSk6CisgICAgICAgICgtW0RPTURvY3VtZW50IGdldENvbXB1dGVkU3R5bGU6cHNldWRv
RWxlbWVudDpdKToKKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgZ2V0TWF0Y2hlZENTU1J1bGVzOnBz
ZXVkb0VsZW1lbnQ6YXV0aG9yT25seTpdKToKKyAgICAgICAgKiBET00vRE9NSFRNTEZyYW1lRWxl
bWVudC5tbToKKyAgICAgICAgKC1bRE9NSFRNTEZyYW1lRWxlbWVudCBjb250ZW50V2luZG93XSk6
CisgICAgICAgICogRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tOgorICAgICAgICAoLVtET01I
VE1MSUZyYW1lRWxlbWVudCBjb250ZW50V2luZG93XSk6CisgICAgICAgICogRE9NL0RPTUtleWJv
YXJkRXZlbnQubW06CisgICAgICAgICgtW0RPTUtleWJvYXJkRXZlbnQgaW5pdEtleWJvYXJkRXZl
bnQ6Y2FuQnViYmxlOmNhbmNlbGFibGU6dmlldzprZXlJZGVudGlmaWVyOmxvY2F0aW9uOmN0cmxL
ZXk6YWx0S2V5OnNoaWZ0S2V5Om1ldGFLZXk6YWx0R3JhcGhLZXk6XSk6CisgICAgICAgICgtW0RP
TUtleWJvYXJkRXZlbnQgaW5pdEtleWJvYXJkRXZlbnQ6Y2FuQnViYmxlOmNhbmNlbGFibGU6dmll
dzprZXlJZGVudGlmaWVyOmxvY2F0aW9uOmN0cmxLZXk6YWx0S2V5OnNoaWZ0S2V5Om1ldGFLZXk6
XSk6CisgICAgICAgICgtW0RPTUtleWJvYXJkRXZlbnQgaW5pdEtleWJvYXJkRXZlbnQ6Y2FuQnVi
YmxlOmNhbmNlbGFibGU6dmlldzprZXlJZGVudGlmaWVyOmtleUxvY2F0aW9uOmN0cmxLZXk6YWx0
S2V5OnNoaWZ0S2V5Om1ldGFLZXk6YWx0R3JhcGhLZXk6XSk6CisgICAgICAgICgtW0RPTUtleWJv
YXJkRXZlbnQgaW5pdEtleWJvYXJkRXZlbnQ6Y2FuQnViYmxlOmNhbmNlbGFibGU6dmlldzprZXlJ
ZGVudGlmaWVyOmtleUxvY2F0aW9uOmN0cmxLZXk6YWx0S2V5OnNoaWZ0S2V5Om1ldGFLZXk6XSk6
CisgICAgICAgICogRE9NL0RPTU1vdXNlRXZlbnQubW06CisgICAgICAgICgtW0RPTU1vdXNlRXZl
bnQgaW5pdE1vdXNlRXZlbnQ6Y2FuQnViYmxlOmNhbmNlbGFibGU6dmlldzpkZXRhaWw6c2NyZWVu
WDpzY3JlZW5ZOmNsaWVudFg6Y2xpZW50WTpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5
OmJ1dHRvbjpyZWxhdGVkVGFyZ2V0Ol0pOgorICAgICAgICAqIERPTS9ET01UZXh0RXZlbnQubW06
CisgICAgICAgICgtW0RPTVRleHRFdmVudCBpbml0VGV4dEV2ZW50OmNhbkJ1YmJsZUFyZzpjYW5j
ZWxhYmxlQXJnOnZpZXdBcmc6ZGF0YUFyZzpdKToKKyAgICAgICAgKiBET00vRE9NVUlFdmVudC5t
bToKKyAgICAgICAgKC1bRE9NVUlFdmVudCB2aWV3XSk6CisgICAgICAgICgtW0RPTVVJRXZlbnQg
aW5pdFVJRXZlbnQ6Y2FuQnViYmxlOmNhbmNlbGFibGU6dmlldzpkZXRhaWw6XSk6CisgICAgICAg
ICogRE9NL0RPTVdoZWVsRXZlbnQubW06CisgICAgICAgICgtW0RPTVdoZWVsRXZlbnQgaW5pdFdo
ZWVsRXZlbnQ6d2hlZWxEZWx0YVk6dmlldzpzY3JlZW5YOnNjcmVlblk6Y2xpZW50WDpjbGllbnRZ
OmN0cmxLZXk6YWx0S2V5OnNoaWZ0S2V5Om1ldGFLZXk6XSk6CisKIDIwMTgtMDQtMjMgIENvbW1p
dCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIyMzA5MjEsIHIyMzA5MjMsIHIyMzA5MjQsIHIyMzA5MzIsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggZGRlODAwOGRjMTg3ZjMwMjQ5OTViMmE0YmM3ZDljZDBj
YTllZmM0Yi4uZjliNTkwMGYxOTllNTdjNzRhYmQ0MjNhOTMzMWFkZDhmNDQ3YzhkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE4LTA0LTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFdpbmRvd1Byb3h5IGlu
c3RlYWQgb2YgRE9NV2luZG93IGluIG91ciBJREwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTAyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogRE9NQ29yZUNsYXNzZXMuY3BwOgorICAgICAgICAoRE9N
RG9jdW1lbnQ6OmdldENvbXB1dGVkU3R5bGUpOgorCiAyMDE4LTA0LTIzICBDb21taXQgUXVldWUg
IDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMjMwOTIxLCByMjMwOTIzLCByMjMwOTI0LCByMjMwOTMyLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMwZjY0NmVjNzg4
NjAwOWQwODBiN2ZjZTg3MmY5MGMzN2MwYmM2NmYuLjAxMTRmMjA1OGZhYmE5YTJkZTAxMjg1OTcw
YTY2MGFkNzQ5NDlkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTIzNjUsNyArMjM2NSw2IEBACiAJCTgzQjJEMTc1MUI4QkNE
NkEwMEEwMkU0NyAvKiBOYXRpdmVOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0U5NTlFMTFCOEJDMjJCMDA0RDkzODUgLyogTmF0aXZl
Tm9kZUZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTgzQjc0RUY2MUYzRTBCRjIwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCNzRF
RjMxRjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNCOTY4N0IxOUY4QUI4
MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCOTY4NzkxOUY4QUI4MzAwNEVGN0FGIC8qIFN0
eWxlQnVpbGRlckNvbnZlcnRlci5oICovOyB9OwotCQk4M0I5RTcwQjIwODZCQTQzMDBFNUQ3NTYg
LyogSlNET01Db252ZXJ0V2luZG93UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjlFNzA5MjA4NkJBMjcwMEU1RDc1NiAvKiBKU0RPTUNvbnZl
cnRXaW5kb3dQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTgzQkI1Qzg4MUQ1RDZGNDUwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50c0NvbGxl
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
QkI1Qzg3MUQ1RDZGM0EwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCAqLzsg
fTsKIAkJODNDMDVBNUIxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRG
dW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rp
b25zLmggKi87IH07CiAJCTgzQzFENDI1MTc4RDVBQjQwMDE0MUU2OCAvKiBTVkdQYXRoU2VnQXJj
QWJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0Mx
RDQxMzE3OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0FyY0Ficy5oICovOyB9OwpAQCAtOTg3
Nyw3ICs5ODc2LDYgQEAKIAkJODNCNzRFRjIxRjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJl
cXVlc3RUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtl
ZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNCNzRFRjMxRjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAv
KiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3R5bGVCdWlsZGVyQ29udmVydGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTgzQjlFNzA5MjA4NkJBMjcwMEU1RDc1NiAvKiBKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQg
LyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4M0MwNUE1ODFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHls
ZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODNDMDVBNTkxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRG
dW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk4
MzUsNyArMTk4MzMsNiBAQAogCQkJCTdDOEUzNEFBMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNv
bnZlcnRWYXJpYWRpYy5oICovLAogCQkJCTdDQkE1QkE2MUYwQjRCREUwMDM0RDc0NSAvKiBKU0RP
TUNvbnZlcnRXZWJHTC5jcHAgKi8sCiAJCQkJN0M4RTM0QUIxRTRBMzM4RTAwNTRDRTIzIC8qIEpT
RE9NQ29udmVydFdlYkdMLmggKi8sCi0JCQkJODNCOUU3MDkyMDg2QkEyNzAwRTVENzU2IC8qIEpT
RE9NQ29udmVydFdpbmRvd1Byb3h5LmggKi8sCiAJCQkJN0M4RTM0QUMxRTRBMzM4RTAwNTRDRTIz
IC8qIEpTRE9NQ29udmVydFhQYXRoTlNSZXNvbHZlci5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBD
b252ZXJzaW9uczsKQEAgLTI4NDE2LDcgKzI4NDEzLDYgQEAKIAkJCQk3QzhFMzRDNDFFNEEzM0Iw
MDA1NENFMjMgLyogSlNET01Db252ZXJ0VW5pb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUz
NEM1MUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRWYXJpYWRpYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0M4RTM0QzYxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFdlYkdMLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk4M0I5RTcwQjIwODZCQTQzMDBFNUQ3NTYgLyogSlNET01Db252
ZXJ0V2luZG93UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEM3MUU0QTMzQjAwMDU0
Q0UyMyAvKiBKU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZDOUUwRTREMTY0MTlDMUUwMDM5MkJFMyAvKiBKU0RPTUNTU05hbWVzcGFjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM2MEQ3QzEwRDI5QTQ2MzAwQjk5MThGIC8qIEpTRE9NRXhjZXB0aW9uLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5
cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCmluZGV4IDVmZTc3ZTgz
ZjIzZGEyYjFiNDIwZDFlMzkyZGVhOWRjMDdmYjFjODAuLmViZjNkMzRjODAxMDZkYTVkNjBiYzUx
Mzg4NzBiYmE2MzYwMjBhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lE
TFR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaApAQCAtNTQs
NiArNTQsNyBAQCBjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIEpTV2luZG93UHJveHk7CiBjbGFzcyBE
T01Qcm9taXNlOwogY2xhc3MgU2NoZWR1bGVkQWN0aW9uOworY2xhc3MgV2luZG93UHJveHk7CiAK
ICNpZiBFTkFCTEUoV0VCR0wpCiBjbGFzcyBXZWJHTEV4dGVuc2lvbjsKQEAgLTI3NCw3ICsyNzUs
NiBAQCBzdHJ1Y3QgSURMU2NoZWR1bGVkQWN0aW9uIDogSURMVHlwZTxzdGQ6OnVuaXF1ZV9wdHI8
U2NoZWR1bGVkQWN0aW9uPj4geyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IElETFdyYXBwZXI8VD4geyB9OwogdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IElETEV2ZW50TGlzdGVuZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExYUGF0aE5TUmVzb2x2ZXIgOiBJRExXcmFwcGVyPFQ+
IHsgfTsKLXN0cnVjdCBJRExXaW5kb3dQcm94eSA6IElETFdyYXBwZXI8SlNXaW5kb3dQcm94eT4g
eyB9OwogCiBzdHJ1Y3QgSURMSURCS2V5IDogSURMV3JhcHBlcjxJREJLZXk+IHsgfTsKIHN0cnVj
dCBJRExJREJLZXlEYXRhIDogSURMV3JhcHBlcjxJREJLZXlEYXRhPiB7IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2luZG93UHJveHkuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJjMWZmNDgxOTJkZTVjMjA4MmRiN2IzZGUwYWMz
YmFhNGIzNGM3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCi0j
aW5jbHVkZSAiSlNXaW5kb3dQcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBs
YXRlPD4gc3RydWN0IEpTQ29udmVydGVyPElETFdpbmRvd1Byb3h5PiB7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIG5lZWRzU3RhdGUgPSB0cnVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBuZWVkc0dsb2JhbE9iamVjdCA9IGZhbHNlOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+
Ci0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
VSYmIHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBzdGQ6OmZvcndh
cmQ8VT4odmFsdWUpKTsKLSAgICB9Ci19OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV2luZG93UHJveHkuY3BwCmluZGV4IDE4ODY3MWU0OWIxZjE0MzE1Yzk4Njc3MWQwN2Jh
NmY4M2UxYWJkMjcuLmE0YjE4MDVjNjUyZTIzMjBiZmQ3OWEwOTc5Mjc5YWNjMDg3YjY5NDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCkBAIC0xMTks
NiArMTE5LDEyIEBAIHZvaWQgSlNXaW5kb3dQcm94eTo6c2V0V2luZG93KEFic3RyYWN0RE9NV2lu
ZG93JiBkb21XaW5kb3cpCiAgICAgQVNTRVJUKHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkgPT0g
d2luZG93KTsKIH0KIAorV2luZG93UHJveHkqIEpTV2luZG93UHJveHk6OndpbmRvd1Byb3h5KCkg
Y29uc3QKK3sKKyAgICBhdXRvJiB3aW5kb3cgPSB3cmFwcGVkKCk7CisgICAgcmV0dXJuIHdpbmRv
dy5mcmFtZSgpID8gJndpbmRvdy5mcmFtZSgpLT53aW5kb3dQcm94eSgpIDogbnVsbHB0cjsKK30K
Kwogdm9pZCBKU1dpbmRvd1Byb3h5OjphdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1
Z2dlcikKIHsKICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB3aW5kb3coKTsKQEAgLTEzOCwxMiAr
MTQ0LDYgQEAgQWJzdHJhY3RET01XaW5kb3cmIEpTV2luZG93UHJveHk6OndyYXBwZWQoKSBjb25z
dAogICAgIHJldHVybiBqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4od2luZG93KS0+d3JhcHBlZCgp
OwogfQogCi1BYnN0cmFjdERPTVdpbmRvdyogSlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKFZNJiB2
bSwgSlNPYmplY3QqIHZhbHVlKQotewotICAgIGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0
PEpTV2luZG93UHJveHkqPih2bSwgdmFsdWUpOwotICAgIHJldHVybiB3cmFwcGVyID8gJndyYXBw
ZXItPndyYXBwZWQoKSA6IG51bGxwdHI7Ci19Ci0KIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0
YXRlLCBXaW5kb3dQcm94eSYgd2luZG93UHJveHkpCiB7CiAgICAgcmV0dXJuICZ3aW5kb3dQcm94
eS5qc1dpbmRvd1Byb3h5KGN1cnJlbnRXb3JsZCgqc3RhdGUpKTsKQEAgLTE1NCw0ICsxNTQsMTQg
QEAgSlNXaW5kb3dQcm94eSYgdG9KU1dpbmRvd1Byb3h5KFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94
eSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKICAgICByZXR1cm4gd2luZG93UHJveHkuanNXaW5k
b3dQcm94eSh3b3JsZCk7CiB9CiAKK1dpbmRvd1Byb3h5KiBKU1dpbmRvd1Byb3h5Ojp0b1dyYXBw
ZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0
KHZhbHVlKTsKKyAgICBpZiAob2JqZWN0LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCisg
ICAgICAgIHJldHVybiBqc0Nhc3Q8SlNXaW5kb3dQcm94eSo+KG9iamVjdCktPndpbmRvd1Byb3h5
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaAppbmRleCAxODVhNTQ1Nzhi
ZjgxNzdjZmNhMTc1YzZlNGIxMWY0NzQ4YTQwOTQ4Li4zNjI0MGQ4NjZlOGYxMGRhZDYyMWRiZGQ5
OWVmYjE3ZTE4MWJkZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dpbmRvd1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQ
cm94eS5oCkBAIC0yOCw3ICsyOCw5IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiSlNE
T01Db252ZXJ0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRl
ICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUHJveHkuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC0zOSw3ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQWJzdHJhY3RET01XaW5kb3c7CiBjbGFzcyBBYnN0cmFjdEZyYW1lOwotY2xhc3MgV2lu
ZG93UHJveHk7CiAKIGNsYXNzIEpTV2luZG93UHJveHkgZmluYWwgOiBwdWJsaWMgSlNDOjpKU1By
b3h5IHsKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU1Byb3h5OwpAQCAtNTMsOCArNTQsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0V2luZG93KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYp
OwogICAgIHZvaWQgc2V0V2luZG93KEFic3RyYWN0RE9NV2luZG93Jik7CiAKKyAgICBXaW5kb3dQ
cm94eSogd2luZG93UHJveHkoKSBjb25zdDsKKwogICAgIEFic3RyYWN0RE9NV2luZG93JiB3cmFw
cGVkKCkgY29uc3Q7Ci0gICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIEFic3RyYWN0RE9NV2luZG93
KiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNPYmplY3QqKTsKKyAgICBzdGF0aWMgV0VCQ09S
RV9FWFBPUlQgV2luZG93UHJveHkqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsK
IAogICAgIERPTVdyYXBwZXJXb3JsZCYgd29ybGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CiAKQEAg
LTcxLDEwICs3NCwxNiBAQCBwcml2YXRlOgogLy8gSXQgaXMsIGhvd2V2ZXIsIHN0cm9uZ2x5IG93
bmVkIGJ5IEFic3RyYWN0RnJhbWUgdmlhIGl0cyBXaW5kb3dQcm94eSwgc28gd2UgY2FuIGdldCBv
bmUgZnJvbSBhIFdpbmRvd1Byb3h5LgogV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqLCBXaW5kb3dQcm94eSYpOwogaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgV2luZG93UHJveHkqIHdpbmRvd1Byb3h5KSB7IHJldHVy
biB3aW5kb3dQcm94eSA/IHRvSlMoc3RhdGUsICp3aW5kb3dQcm94eSkgOiBKU0M6OmpzTnVsbCgp
OyB9Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBjb25z
dCBSZWZQdHI8V2luZG93UHJveHk+JiB3aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwg
d2luZG93UHJveHkuZ2V0KCkpOyB9CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCosIFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94
eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwgd2luZG93UHJveHkpOyB9CitpbmxpbmUgSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBXaW5kb3dQcm94eSogd2luZG93UHJveHkpIHsgcmV0dXJuIHdpbmRvd1Byb3h5ID8g
dG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0LCAqd2luZG93UHJveHkpIDogSlNDOjpqc051bGwoKTsg
fQogCiBKU1dpbmRvd1Byb3h5JiB0b0pTV2luZG93UHJveHkoV2luZG93UHJveHkmLCBET01XcmFw
cGVyV29ybGQmKTsKIGlubGluZSBKU1dpbmRvd1Byb3h5KiB0b0pTV2luZG93UHJveHkoV2luZG93
UHJveHkqIHdpbmRvd1Byb3h5LCBET01XcmFwcGVyV29ybGQmIHdvcmxkKSB7IHJldHVybiB3aW5k
b3dQcm94eSA/ICZ0b0pTV2luZG93UHJveHkoKndpbmRvd1Byb3h5LCB3b3JsZCkgOiBudWxscHRy
OyB9CiAKIAordGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFdp
bmRvd1Byb3h5PiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNXaW5kb3dQcm94eTsKKyAg
ICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gV2luZG93UHJveHkqOworfTsKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V2luZG93UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHku
Y3BwCmluZGV4IDhlOGY1MTM1M2VkMWY3YTBiNWIzZjkzMDRjZjgxYzhhYWNiNzViNWUuLmFiMjQ1
YjI0Nzg0YWQ3NzczODZlYzUzNDhmM2EyNjkyNDdlODAxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XaW5kb3dQcm94eS5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJD
b21tb25WTS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgi
CisjaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtNTMsMTIg
KzU0LDE2IEBAIFdpbmRvd1Byb3h5OjpXaW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJiBmcmFtZSkK
IH0KIAogV2luZG93UHJveHk6On5XaW5kb3dQcm94eSgpCit7CisgICAgZGVzdHJveUFsbEpTV2lu
ZG93UHJveGllcygpOworfQorCit2b2lkIFdpbmRvd1Byb3h5OjpkZXN0cm95QWxsSlNXaW5kb3dQ
cm94aWVzKCkKIHsKICAgICAvLyBJdCdzIGxpa2VseSB0aGF0IGRlc3Ryb3lpbmcgd2luZG93UHJv
eGllcyB3aWxsIGNyZWF0ZSBhIGxvdCBvZiBnYXJiYWdlLgogICAgIGlmICghbV9qc1dpbmRvd1By
b3hpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIHdoaWxlICghbV9qc1dpbmRvd1Byb3hpZXMuaXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICBhdXRvIGl0ID0gbV9qc1dpbmRvd1Byb3hpZXMuYmVnaW4o
KTsKLSAgICAgICAgICAgIGl0LT52YWx1ZS0+d2luZG93KCktPnNldENvbnNvbGVDbGllbnQobnVs
bHB0cik7CiAgICAgICAgICAgICBkZXN0cm95SlNXaW5kb3dQcm94eSgqaXQtPmtleSk7CiAgICAg
ICAgIH0KICAgICAgICAgY29sbGVjdEdhcmJhZ2VBZnRlcldpbmRvd1Byb3h5RGVzdHJ1Y3Rpb24o
KTsKQEAgLTkxLDYgKzk2LDExIEBAIFZlY3RvcjxKU0M6OlN0cm9uZzxKU1dpbmRvd1Byb3h5Pj4g
V2luZG93UHJveHk6OmpzV2luZG93UHJveGllc0FzVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4g
Y29weVRvVmVjdG9yKG1fanNXaW5kb3dQcm94aWVzLnZhbHVlcygpKTsKIH0KIAorSlNET01HbG9i
YWxPYmplY3QqIFdpbmRvd1Byb3h5OjpnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKK3sKKyAgICByZXR1cm4ganNXaW5kb3dQcm94eSh3b3JsZCkud2luZG93KCk7Cit9CisKIEpT
V2luZG93UHJveHkmIFdpbmRvd1Byb3h5OjpjcmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxp
emVkU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sod29ybGQudm0oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
aW5kb3dQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaApp
bmRleCA3NzcyMjk4M2IwYTMyMmNkMDY3ZGZiNTA2MmRhMDc3N2E2OGU2NWY4Li44NDY3MDIwOTA3
NWY3MzJmNWVlMTUxMTgyN2Q2ZDhiMDgyZWY4ODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dpbmRvd1Byb3h5LmgKQEAgLTIwLDcgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJKU1dpbmRvd1Byb3h5LmgiCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KIApAQCAtMzAsNyArMzAsMTAgQEAgY2xhc3MgRGVidWdnZXI7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQWJzdHJhY3RET01XaW5kb3c7CiBjbGFzcyBBYnN0cmFjdEZyYW1lOwor
Y2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CitjbGFzcyBKU1dpbmRvd1Byb3h5OwogCiBjbGFzcyBX
aW5kb3dQcm94eSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00MCw2ICs0Myw4
IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBXaW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJik7CiAg
ICAgfldpbmRvd1Byb3h5KCk7CiAKKyAgICBBYnN0cmFjdEZyYW1lJiBmcmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZnJhbWU7IH0KKwogICAgIHZvaWQgZGVzdHJveUpTV2luZG93UHJveHkoRE9NV3Jh
cHBlcldvcmxkJik7CiAKICAgICBQcm94eU1hcDo6VmFsdWVzQ29uc3RJdGVyYXRvclJhbmdlIGpz
V2luZG93UHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1fanNXaW5kb3dQcm94aWVzLnZhbHVlcygp
OyB9CkBAIC02MywxMCArNjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAoaXQgIT0gbV9q
c1dpbmRvd1Byb3hpZXMuZW5kKCkpID8gaXQtPnZhbHVlLmdldCgpIDogbnVsbHB0cjsKICAgICB9
CiAKLSAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3JsZCYg
d29ybGQpCi0gICAgewotICAgICAgICByZXR1cm4ganNXaW5kb3dQcm94eSh3b3JsZCkud2luZG93
KCk7Ci0gICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QoRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICB2b2lkIGNsZWFySlNXaW5kb3dQcm94aWVz
Tm90TWF0Y2hpbmdET01XaW5kb3coQWJzdHJhY3RET01XaW5kb3cqLCBib29sIGdvaW5nSW50b1Bh
Z2VDYWNoZSk7CiAKQEAgLTgwLDYgKzgyLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVmKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZXJlZigpOwogCisgICAgdm9p
ZCBkZXN0cm95QWxsSlNXaW5kb3dQcm94aWVzKCk7CisKIHByaXZhdGU6CiAgICAgSlNXaW5kb3dQ
cm94eSYgY3JlYXRlSlNXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBKU1dpbmRvd1Byb3h5JiBjcmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVk
U2NyaXB0KERPTVdyYXBwZXJXb3JsZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IDk1MjQyOWEwZTQ5Nzc0YmFkMjJjMWU1OGVi
YjJlNGVkZGJhZDNiNjMuLjJmY2ZlZTNhN2FhOGYyMmYyNmViZGRiNmE0ZTI4ZmEwMzhiMmY0YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3Iu
cG0KQEAgLTg5MSw3ICs4OTEsNiBAQCBzdWIgSXNCdWlsdGluVHlwZQogICAgIHJldHVybiAxIGlm
ICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwogICAgIHJldHVybiAxIGlmICR0eXBl
LT5uYW1lIGVxICJhbnkiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJvYmplY3Qi
OwotICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAKICAgICBy
ZXR1cm4gMDsKIH0KQEAgLTEwMDEsNiArMTAwMCw3IEBAIHN1YiBDb21wdXRlSXNDYWxsYmFja0lu
dGVyZmFjZQogICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5
cGUiOwogCiAgICAgcmV0dXJuIDAgdW5sZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlwZSgkdHlw
ZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsKIAogICAg
IG15ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+
SURMRmlsZUZvckludGVyZmFjZSgkdHlwZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQg
SURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlTmFtZVwiIVxuIik7CkBAIC0xMDM4LDYgKzEw
MzgsNyBAQCBzdWIgQ29tcHV0ZUlzQ2FsbGJhY2tGdW5jdGlvbgogICAgIGFzc2VydCgiTm90IGEg
dHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5sZXNz
ICRvYmplY3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUt
Pm5hbWUgZXEgIldpbmRvd1Byb3h5IjsKIAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1l
OwogICAgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlwZU5h
bWUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0
eXBlTmFtZVwiIVxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDYyNmE5ZjBiMmQ2ZjA0M2NmOTJiZGYzMmYyOTYyODky
NjExNmU1ZTQuLjMwYTM3NGMyODI0ZmEyNjA4MjQyYWEzODcxMDk4NDIwMmI1ZDBlYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CkBAIC00MjEsMTMgKzQyMSw2IEBAIHN1YiBBZGRUb0luY2x1ZGVzRm9ySURMVHlwZQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSIp
IHsKLSAgICAgICAgQWRkVG9JbmNsdWRlcygiV2luZG93UHJveHkuaCIsICRpbmNsdWRlc1JlZiwg
JGNvbmRpdGlvbmFsKTsKLSAgICAgICAgQWRkVG9JbmNsdWRlcygiSlNXaW5kb3dQcm94eS5oIiwg
JGluY2x1ZGVzUmVmLCAkY29uZGl0aW9uYWwpOwotICAgICAgICBBZGRUb0luY2x1ZGVzKCJKU0RP
TUNvbnZlcnRXaW5kb3dQcm94eS5oIiwgJGluY2x1ZGVzUmVmLCAkY29uZGl0aW9uYWwpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5
cGUoJHR5cGUpKSB7CiAgICAgICAgIEFkZFRvSW5jbHVkZXMoIkpTRE9NQ29udmVydFN0cmluZ3Mu
aCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjM5
Myw3ICs2Mzg2LDYgQEAgc3ViIEdldEJhc2VJRExUeXBlCiAgICAgICAgICJKU09OIiA9PiAiSURM
SlNPTiIsCiAgICAgICAgICJTY2hlZHVsZWRBY3Rpb24iID0+ICJJRExTY2hlZHVsZWRBY3Rpb24i
LAogICAgICAgICAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIiA9PiAiSURMU2VyaWFsaXplZFNjcmlw
dFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4iLAotICAgICAgICAiV2luZG93UHJveHkiID0+
ICJJRExXaW5kb3dQcm94eSIsCiAgICAgICAgICJYUGF0aE5TUmVzb2x2ZXIiID0+ICJJRExYUGF0
aE5TUmVzb2x2ZXI8WFBhdGhOU1Jlc29sdmVyPiIsCiAgICAgKTsKIApAQCAtNjU1NCw3ICs2NTQ2
LDYgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZURPTUNvbnZlcnROZWVkc1N0YXRlCiAgICAgcmV0dXJu
IDEgaWYgJHR5cGUtPm5hbWUgZXEgIkpTT04iOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1l
IGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1l
IGVxICJYUGF0aE5TUmVzb2x2ZXIiOwotICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJX
aW5kb3dQcm94eSI7CiAgICAgCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGJhNDVi
Yjk4ZjIxYTYzMzkwOWQyYmU4ZTBhMWZlMmRjNzI2YTM0NWYuLmMwNDY2YzI2NmI3MzdmNmM4ODVk
MmFhZmQwNWI1ZjE2ZjY4MmQ1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC01NSw3ICs1NSw2IEBACiAjaW5j
bHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvblJldHVybmlu
Z1Byb21pc2UuaCIKICNpbmNsdWRlICJKU0RPTVN0cmluZ0xpc3QuaCIKLSNpbmNsdWRlICJKU0RP
TVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgogI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgpAQCAtNjk1Nyw3ICs2OTU2
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDlCb2QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwotICAgIGF1dG8gd2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8RE9N
V2luZG93Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlw
ZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgIndpbmRvdyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2Fk
ZWRNZXRob2QiLCAiRE9NV2luZG93Iik7IH0pOworICAgIGF1dG8gd2luZG93ID0gY29udmVydDxJ
RExJbnRlcmZhY2U8V2luZG93UHJveHk+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7
IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAid2luZG93IiwgIlRlc3RP
YmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJXaW5kb3dQcm94eSIpOyB9KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwu
b3ZlcmxvYWRlZE1ldGhvZCgqd2luZG93KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtNzAyOSw3ICs3MDI4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZE92
ZXIKICAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2Q2Qm9keShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CiAgICAgICAgIGlm
IChkaXN0aW5ndWlzaGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5n
QXJnKS0+aW5oZXJpdHM8SlNUZXN0T2JqPih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOEJvZHkoc3RhdGUsIGNhc3RlZFRo
aXMsIHRocm93U2NvcGUpOwotICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3Qo
KSAmJiAoYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU1dpbmRvd1Byb3h5
Pih2bSkgfHwgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU0RPTVdpbmRv
dz4odm0pKSkKKyAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCiAg
ICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kOUJvZHkoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwogICAgICAgICBpZiAoZGlz
dGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0FyZykt
PmluaGVyaXRzPEpTQmxvYj4odm0pKQogICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEzQm9keShzdGF0ZSwgY2FzdGVkVGhpcywgdGhy
b3dTY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGwKaW5kZXggYzgzZWVlZWRiZjQxNjNmODMyYmNkMjUzZWMwNTc1Njg0NmVlZDY4NC4u
NzFkZGZjNDg5ZWQyZDVkYTI1NmZiNWM0MzBiOTMyZWJkYzRmODcwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMjg2LDcgKzI4
Niw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3ciIH07CiAgICAg
dm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmluZ0xpc3Q/IGxpc3RBcmcpOwogICAgIHZv
aWQgICAgb3ZlcmxvYWRlZE1ldGhvZChzZXF1ZW5jZTxET01TdHJpbmc+PyBhcnJheUFyZyk7CiAg
ICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFRlc3RPYmogb2JqQXJnKTsKLSAgICB2b2lkICAg
IG92ZXJsb2FkZWRNZXRob2QoRE9NV2luZG93IHdpbmRvdyk7CisgICAgdm9pZCAgICBvdmVybG9h
ZGVkTWV0aG9kKFdpbmRvd1Byb3h5IHdpbmRvdyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0
aG9kKHNlcXVlbmNlPERPTVN0cmluZz4gYXJyYXlBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRl
ZE1ldGhvZChzZXF1ZW5jZTx1bnNpZ25lZCBsb25nPiBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBv
dmVybG9hZGVkTWV0aG9kKERPTVN0cmluZyBzdHJBcmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBv
c2l0aW9uRXZlbnQuY3BwCmluZGV4IDBlMzhhNjcxOGNkMWRhZDJlNzkwMjhiODkwMDU2YTZmY2I2
NDJjOTAuLjAwN2FmN2Q3MjRmNWMzZTRhMGEzNjExMjU2NmM0ODJlZDZmZDU5MjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAKQEAgLTMxLDggKzMxLDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KCkgPSBk
ZWZhdWx0OwogCi1Db21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAg
OiBVSUV2ZW50KHR5cGUsIHRydWUsIHRydWUsIHZpZXcsIDApCitDb21wb3NpdGlvbkV2ZW50OjpD
b21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1By
b3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKKyAgICA6IFVJRXZlbnQodHlwZSwgdHJ1
ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCkKICAgICAsIG1fZGF0YShkYXRhKQogewogfQpAQCAt
NDUsMTIgKzQ1LDEyIEBAIENvbXBvc2l0aW9uRXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsCiAKIENvbXBvc2l0aW9uRXZl
bnQ6On5Db21wb3NpdGlvbkV2ZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIENvbXBvc2l0aW9uRXZl
bnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcm
IGRhdGEpCit2b2lkIENvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICBpZiAo
aXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW5pdFVJRXZlbnQo
dHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCAwKTsKKyAgICBpbml0VUlFdmVudCh0
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIDApOwogCiAgICAgbV9k
YXRhID0gZGF0YTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlv
bkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCmluZGV4IDhm
ZjAyZWM5Njk3NzhiODg1YTYzMTcwMjRjOTU3NDc2ZTAyMWIyYTYuLjNiMWM0NmQ2MzVlY2FmNmNk
MDkxOTA5OGY1MDhmYzQxZTY0Y2ViY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NpdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZl
bnQuaApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbXBv
c2l0aW9uRXZlbnQgZmluYWwgOiBwdWJsaWMgVUlFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBE
T01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKKyAgICBzdGF0aWMgUmVmPENvbXBv
c2l0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZlB0cjxXaW5k
b3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDb21wb3NpdGlvbkV2ZW50KHR5cGUsIHZpZXcsIGRhdGEpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29tcG9zaXRpb25FdmVudCh0eXBlLCBXVEZNb3Zl
KHZpZXcpLCBkYXRhKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50
PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgfkNvbXBvc2l0aW9uRXZlbnQoKTsKIAotICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgIHZvaWQgaW5pdENvbXBv
c2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7
CiAKICAgICBTdHJpbmcgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC02MSw3
ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBDb21wb3NpdGlvbkV2ZW50KCk7Ci0g
ICAgQ29tcG9zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIERPTVdpbmRvdyos
IGNvbnN0IFN0cmluZyYpOworICAgIENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYpOwogICAgIENvbXBv
c2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVz
dGVkKTsKIAogICAgIGJvb2wgaXNDb21wb3NpdGlvbkV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5pZGwKaW5kZXggZDg3MjQwODgzZTI3ZDNi
MzQ1ODUzOWViOTIwZjRkM2YyODcxNjZjNC4uMjBhYWM3ZWE0NzcwZDU2NTllZDQwOTEwZDdhYTc5
NTA4ZTY2MTgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZl
bnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbApAQCAt
MzMsNyArMzMsNyBAQAogICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQob3B0aW9uYWwgRE9N
U3RyaW5nIHR5cGVBcmcgPSAidW5kZWZpbmVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wdGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlQXJnID0gZmFsc2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25hbCBib29sZWFuIGNhbmNlbGFibGVBcmcgPSBmYWxzZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlld0Fy
ZyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQ
cm94eT8gdmlld0FyZyA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRp
b25hbCBET01TdHJpbmcgZGF0YUFyZyA9ICJ1bmRlZmluZWQiKTsKIAogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IDg2ZjgzZTcyNjQyM2FjNDU0MzVkMzJiZWYwNDk0ZTk5NDllMDU0OTku
Ljc4ZjhiZTI3ZTk0MGU0OWE2MDM0OTAxOTcyOWUzNTJkNTI5NmE2MmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNDI4MCw2ICs0MjgwLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnRha2VET01X
aW5kb3dGcm9tKERvY3VtZW50KiBkb2N1bWVudCkKICAgICBBU1NFUlQobV9kb21XaW5kb3ctPmZy
YW1lKCkgPT0gbV9mcmFtZSk7CiB9CiAKK1dpbmRvd1Byb3h5KiBEb2N1bWVudDo6ZGVmYXVsdFZp
ZXcoKSBjb25zdAoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuICZtX2ZyYW1lLT53aW5kb3dQcm94eSgpOworfQorCiBEb2N1bWVudCYgRG9j
dW1lbnQ6OmNvbnRleHREb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fY29udGV4dERvY3Vt
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBhNGZiMDJmOWUxYmNiZDQwMGIwY2M4NjUyYWJk
NDA0ZjAxYzQ1OTVmLi44NWEyNTY1MjFiN2NiNzgxNjRjYTQ4ZjYwMDFjYjY4NWIwNTdhNzFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtNzk5LDcgKzc5OSw3IEBAIHB1YmxpYzoKIAogICAgIERP
TVdpbmRvdyogZG9tV2luZG93KCkgY29uc3QgeyByZXR1cm4gbV9kb21XaW5kb3cuZ2V0KCk7IH0K
ICAgICAvLyBJbiBET00gTGV2ZWwgMiwgdGhlIERvY3VtZW50J3MgRE9NV2luZG93IGlzIGNhbGxl
ZCB0aGUgZGVmYXVsdFZpZXcuCi0gICAgRE9NV2luZG93KiBkZWZhdWx0VmlldygpIGNvbnN0IHsg
cmV0dXJuIGRvbVdpbmRvdygpOyB9IAorICAgIFdFQkNPUkVfRVhQT1JUIFdpbmRvd1Byb3h5KiBk
ZWZhdWx0VmlldygpIGNvbnN0OwogCiAgICAgRG9jdW1lbnQmIGNvbnRleHREb2N1bWVudCgpIGNv
bnN0OwogICAgIHZvaWQgc2V0Q29udGV4dERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkgeyBt
X2NvbnRleHREb2N1bWVudCA9IGRvY3VtZW50LmNyZWF0ZVdlYWtQdHIoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5pZGwKaW5kZXggMmQ1YmFhZDhjNjA2NDRkYTg5ZDEwN2ZkZGUxODI4Y2Q4YTQ5ZDgy
Yi4uMDhmNzJhOTIwMDBkM2FjMjBhNjQ0YzBlNWJjMzQ4MmI0NzVlZGE4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaWRsCkBAIC0xMTMsNyArMTEzLDcgQEAgdHlwZWRlZiAoCiAgICAgW0NFUmVhY3Rp
b25zLCBDYWxsV2l0aD1SZXNwb25zaWJsZURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9p
ZCB3cml0ZWxuKERPTVN0cmluZy4uLiB0ZXh0KTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24u
Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVdpbmRvdz8gZGVmYXVsdFZpZXc7CisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyBkZWZhdWx0VmlldzsKICAgICBib29sZWFuIGhh
c0ZvY3VzKCk7CiAgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlc2lnbk1v
ZGU7CiAgICAgW0NFUmVhY3Rpb25zXSBib29sZWFuIGV4ZWNDb21tYW5kKERPTVN0cmluZyBjb21t
YW5kSWQsIG9wdGlvbmFsIGJvb2xlYW4gc2hvd1VJID0gZmFsc2UsIG9wdGlvbmFsIERPTVN0cmlu
Zz8gdmFsdWUgPSBudWxsKTsgLy8gRklYTUU6IHZhbHVlIHNob3VsZCBub3QgYmUgbnVsbGFibGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5jcHAKaW5kZXggM2Q5MTIzZDhmNzUzMmNiNGRi
NzlhNGExMzM1ZDVmMTcyOGNjNTA5YS4uYmRkYWVhNzUzOWYxMDgyMDFmZDk2M2NiZmNmZDFkMDQ3
ODM5ZDcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmNwcApAQCAtMzUsMTMgKzM1
LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFRvdWNoPiBEb2N1bWVudFRvdWNo
OjpjcmVhdGVUb3VjaChEb2N1bWVudCYgZG9jdW1lbnQsIERPTVdpbmRvdyogd2luZG93LCBFdmVu
dFRhcmdldCogdGFyZ2V0LCBpbnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGlu
dCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCBy
b3RhdGlvbkFuZ2xlLCBmbG9hdCBmb3JjZSkKK1JlZjxUb3VjaD4gRG9jdW1lbnRUb3VjaDo6Y3Jl
YXRlVG91Y2goRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgd2luZG93
LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFn
ZVksIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBm
bG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9hdCBmb3JjZSkKIHsKKyAgICBGcmFtZSogZnJhbWU7Cisg
ICAgaWYgKHdpbmRvdyAmJiBpczxGcmFtZT4od2luZG93LT5mcmFtZSgpKSkKKyAgICAgICAgZnJh
bWUgPSBkb3duY2FzdDxGcmFtZT4od2luZG93LT5mcmFtZSgpKTsKKyAgICBlbHNlCisgICAgICAg
IGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKKwogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVh
ciBmcm9tIHRoZSBkb2N1bWVudGF0aW9uIGF0CiAgICAgLy8gaHR0cDovL2RldmVsb3Blci5hcHBs
ZS5jb20vbGlicmFyeS9zYWZhcmkvI2RvY3VtZW50YXRpb24vVXNlckV4cGVyaWVuY2UvUmVmZXJl
bmNlL0RvY3VtZW50QWRkaXRpb25zUmVmZXJlbmNlL0RvY3VtZW50QWRkaXRpb25zL0RvY3VtZW50
QWRkaXRpb25zLmh0bWwKICAgICAvLyB3aGVuIHRoaXMgbWV0aG9kIHNob3VsZCB0aHJvdyBhbmQg
bm9yIGlzIGl0IGJ5IGluc3BlY3Rpb24gb2YgaU9TIGJlaGF2aW9yLiBJdCB3b3VsZCBiZSBuaWNl
IHRvIHZlcmlmeSBhbnkgY2FzZXMgd2hlcmUgaXQgdGhyb3dzIHVuZGVyIGlPUwogICAgIC8vIGFu
ZCBpbXBsZW1lbnQgdGhlbSBoZXJlLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ3ODE5Ci0gICAgcmV0dXJuIFRvdWNoOjpjcmVhdGUod2luZG93ID8gd2luZG93
LT5mcmFtZSgpIDogZG9jdW1lbnQuZnJhbWUoKSwgdGFyZ2V0LCBpZGVudGlmaWVyLCBzY3JlZW5Y
LCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksIHJhZGl1c1gsIHJhZGl1c1ksIHJvdGF0aW9uQW5nbGUs
IGZvcmNlKTsKKyAgICByZXR1cm4gVG91Y2g6OmNyZWF0ZShmcmFtZSwgdGFyZ2V0LCBpZGVudGlm
aWVyLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksIHJhZGl1c1gsIHJhZGl1c1ksIHJv
dGF0aW9uQW5nbGUsIGZvcmNlKTsKIH0KIAogUmVmPFRvdWNoTGlzdD4gRG9jdW1lbnRUb3VjaDo6
Y3JlYXRlVG91Y2hMaXN0KERvY3VtZW50JiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
VG91Y2g+PiYmIHRvdWNoZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRUb3VjaC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guaAppbmRleCBlMGRh
ZjUwNTJjYzk3ODUyYzhhMDRiYmE3M2U1ZjZhMTE2ZjEwZTUxLi43MmM0ODg4YjQ1YWI0MDBlMjli
YzhhZWQ4NmRlNGM1OTAzZWFjMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRUb3VjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmgKQEAg
LTM0LDE1ICszNCwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTVdpbmRv
dzsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRXZlbnRUYXJnZXQ7CiBjbGFzcyBUb3VjaDsKIGNs
YXNzIFRvdWNoTGlzdDsKK2NsYXNzIFdpbmRvd1Byb3h5OwogCiBjbGFzcyBEb2N1bWVudFRvdWNo
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFRvdWNoPiBjcmVhdGVUb3VjaChEb2N1bWVudCYs
IERPTVdpbmRvdyosIEV2ZW50VGFyZ2V0KiwgaW50IGlkZW50aWZpZXIsIGludCBwYWdlWCwgaW50
IHBhZ2VZLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCByYWRpdXNYLCBpbnQgcmFkaXVz
WSwgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2UpOworICAgIHN0YXRpYyBSZWY8VG91
Y2g+IGNyZWF0ZVRvdWNoKERvY3VtZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBFdmVudFRh
cmdldCosIGludCBpZGVudGlmaWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgs
IGludCBzY3JlZW5ZLCBpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5n
bGUsIGZsb2F0IGZvcmNlKTsKICAgICBzdGF0aWMgUmVmPFRvdWNoTGlzdD4gY3JlYXRlVG91Y2hM
aXN0KERvY3VtZW50JiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmKTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmlkbAppbmRleCA3YTI3Mzc0NTg2NTQ5
OTFiMTFiNTU2MzA4OWUyMTk1N2NjNGM0ZTRhLi4wNDg5YTM2YWQ2YjEyNTAzY2RiNDZhZjE0OGNi
NTljZmFmZDY3NWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3Vj
aC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guaWRsCkBAIC0yMiw3
ICsyMiw3IEBACiAgICAgQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTCiBdIHBhcnRpYWwgaW50ZXJm
YWNlIERvY3VtZW50IHsKICAgICAvLyBGSVhNRTogVGhpcyBoYXMgYmVlbiBkcm9wcGVkIGZyb20g
dGhlIHN0YW5kYXJkIG5vdyB0aGF0IFRvdWNoIGhhcyBhIGNvbnN0cnVjdG9yLgotICAgIFtOZXdP
YmplY3RdIFRvdWNoIGNyZWF0ZVRvdWNoKG9wdGlvbmFsIERPTVdpbmRvdz8gd2luZG93ID0gbnVs
bCwgb3B0aW9uYWwgRXZlbnRUYXJnZXQ/IHRhcmdldCA9IG51bGwsCisgICAgW05ld09iamVjdF0g
VG91Y2ggY3JlYXRlVG91Y2gob3B0aW9uYWwgV2luZG93UHJveHk/IHdpbmRvdyA9IG51bGwsIG9w
dGlvbmFsIEV2ZW50VGFyZ2V0PyB0YXJnZXQgPSBudWxsLAogICAgICAgICBvcHRpb25hbCBsb25n
IGlkZW50aWZpZXIgPSAwLAogICAgICAgICBvcHRpb25hbCBsb25nIHBhZ2VYID0gMCwgb3B0aW9u
YWwgbG9uZyBwYWdlWSA9IDAsIG9wdGlvbmFsIGxvbmcgc2NyZWVuWCA9IDAsIG9wdGlvbmFsIGxv
bmcgc2NyZWVuWSA9IDAsCiAgICAgICAgIG9wdGlvbmFsIGxvbmcgd2Via2l0UmFkaXVzWCA9IDAs
IG9wdGlvbmFsIGxvbmcgd2Via2l0UmFkaXVzWSA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRm9jdXNFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5j
cHAKaW5kZXggMTZkOGIzZmYwNzhkMDVhZDkxZTJkNjkxNDY3MTkxMjg1NWQ3YzQ4NC4uOTg2ODc3
MzI2Y2UzZmFlNGJiMDU5ZTdjMTY0ZDdiYzE4YWE5ZGZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2
ZW50LmNwcApAQCAtNDAsOCArNDAsOCBAQCBib29sIEZvY3VzRXZlbnQ6OmlzRm9jdXNFdmVudCgp
IGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUZvY3VzRXZlbnQ6OkZvY3VzRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBE
T01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIFJlZlB0cjxFdmVudFRhcmdldD4mJiByZWxhdGVk
VGFyZ2V0KQotICAgIDogVUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcs
IGRldGFpbCkKK0ZvY3VzRXZlbnQ6OkZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpCisg
ICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwg
ZGV0YWlsKQogICAgICwgbV9yZWxhdGVkVGFyZ2V0KFdURk1vdmUocmVsYXRlZFRhcmdldCkpCiB7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuaAppbmRleCAwNjcyNTU3NGMwNmI5MWYyOWZiNGY5NmEw
YjFiNTYxMzRmMTk2ODU0Li5jN2E0ZGY4ZTc3NDMyY2ZlMzY0YTEzNGY4ZGU1MTUxNmEwNTdiODll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmgKQEAgLTM1LDkgKzM1LDkgQEAgY2xhc3MgTm9kZTsK
IAogY2xhc3MgRm9jdXNFdmVudCBmaW5hbCA6IHB1YmxpYyBVSUV2ZW50IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPEZvY3VzRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRl
dGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpCisgICAgc3RhdGljIFJl
ZjxGb2N1c0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRl
dGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb2N1c0V2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2Vs
YWJsZSwgdmlldywgZGV0YWlsLCBXVEZNb3ZlKHJlbGF0ZWRUYXJnZXQpKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZvY3VzRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIFdURk1vdmUocmVsYXRlZFRhcmdldCkpKTsKICAgICB9
CiAKICAgICBzdGF0aWMgUmVmPEZvY3VzRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCkKQEAgLTU4
LDcgKzU4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEZvY3VzRXZlbnQoKSA9IGRlZmF1
bHQ7Ci0gICAgRm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCwgUmVmUHRyPEV2ZW50VGFyZ2V0
PiYmKTsKKyAgICBGb2N1c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQsIFJlZlB0
cjxFdmVudFRhcmdldD4mJik7CiAgICAgRm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJ
bnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9J
bnB1dEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmNwcAppbmRleCBk
NDQ5Mjk0ZmVjNmJjNzk3MGQ2YzQyYzRiOTdhYjE2MWM0ZjViMWYwLi5jMTdiZjE4ZDg4YTY3NjQ3
MmExODcxNjNlN2I0NTE0Zjg0NDAwYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5wdXRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuY3BwCkBA
IC0yNiwyMCArMjYsMjAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnB1dEV2
ZW50LmgiCiAKLSNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIu
aCIKICNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPElucHV0RXZlbnQ+
IElucHV0RXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFdlYkNv
cmU6OkRPTVdpbmRvdyAqdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5z
ZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0
YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCitSZWY8SW5wdXRFdmVudD4gSW5wdXRFdmVudDo6Y3Jl
YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYm
IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiBkYXRhVHJh
bnNmZXIsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBp
bnQgZGV0YWlsKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQoZXZlbnRU
eXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGF0YSwgV1RGTW92
ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRSYW5nZXMsIGRldGFpbCkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IElucHV0RXZlbnQoZXZlbnRUeXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJsZSwgY2Fu
Y2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJn
ZXRSYW5nZXMsIGRldGFpbCkpOwogfQogCi1JbnB1dEV2ZW50OjpJbnB1dEV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRh
dGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYgZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0b3I8UmVm
UHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJhbmdlcywgaW50IGRldGFpbCkKLSAgICA6IFVJRXZl
bnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCkKK0lucHV0
RXZlbnQ6OklucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0
cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5z
ZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0
YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCisgICAgOiBVSUV2ZW50KGV2ZW50VHlwZSwgY2FuQnVi
YmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAgLCBtX2lucHV0VHlw
ZShpbnB1dFR5cGUpCiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fZGF0YVRyYW5zZmVyKGRh
dGFUcmFuc2ZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5oCmluZGV4IGNhZDhkY2U3YjM2MjZkOWEy
Mjc2MzRiMzU4OTI2YzFmMTI1NDY4MWIuLmQwNTA3NjM5YzZjODljOTlkNGQzMGExY2U5MzZmOTE2
MWI5YzRlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuaApAQCAtMzAsOCArMzAsOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIERhdGFUcmFuc2Zl
cjsKK2NsYXNzIFdpbmRvd1Byb3h5OwogCiBjbGFzcyBJbnB1dEV2ZW50IGZpbmFsIDogcHVibGlj
IFVJRXZlbnQgewogcHVibGljOgpAQCAtMzksMTMgKzM5LDEzIEBAIHB1YmxpYzoKICAgICAgICAg
U3RyaW5nIGRhdGE7CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8SW5wdXRFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBT
dHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKKyAgICBzdGF0aWMgUmVm
PElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJh
bnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2Vz
LCBpbnQgZGV0YWlsKTsKICAgICBzdGF0aWMgUmVmPElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNU
cnVzdGVkID0gSXNUcnVzdGVkOjpObykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IElucHV0RXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkpOwogICAgIH0KIAot
ICAgIElucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cq
LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKKyAgICBJ
bnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlu
cHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1By
b3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsK
ICAgICBJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBJbml0
JiwgSXNUcnVzdGVkKTsKIAogICAgIGJvb2wgaXNJbnB1dEV2ZW50KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJk
RXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCmluZGV4IDRk
YTEwMTc3MjVmZTg5MmNmYThkYWNmMGY1YjcwODFkY2M2Y2ZiZTkuLjRhY2I1ZjRjZWI3NjBlMTcw
ZjEwN2NlYTM4NjA5ODlmNjcyNjRlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9L
ZXlib2FyZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5j
cHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJLZXli
b2FyZEV2ZW50LmgiCiAKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgpAQCAt
OTIsOCArOTMsOCBAQCBzdGF0aWMgaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleUxvY2F0aW9uQ29k
ZSBrZXlMb2NhdGlvbkNvZGUoY29uc3QgUGxhdGZvcm1LZXlibwogCiBpbmxpbmUgS2V5Ym9hcmRF
dmVudDo6S2V5Ym9hcmRFdmVudCgpID0gZGVmYXVsdDsKIAotaW5saW5lIEtleWJvYXJkRXZlbnQ6
OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIERPTVdpbmRv
dyogdmlldykKLSAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRUeXBlRm9yS2V5Ym9hcmRF
dmVudFR5cGUoa2V5LnR5cGUoKSksIHRydWUsIHRydWUsIGtleS50aW1lc3RhbXAoKS5hcHByb3hp
bWF0ZU1vbm90b25pY1RpbWUoKSwgdmlldywgMCwga2V5LmN0cmxLZXkoKSwga2V5LmFsdEtleSgp
LCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1ldGFLZXkoKSwgZmFsc2UsIGtleS5tb2RpZmllcnMoKS5j
b250YWlucyhQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tLZXkpKQoraW5saW5lIEtl
eWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBr
ZXksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3KQorICAgIDogVUlFdmVudFdpdGhLZXlTdGF0
ZShldmVudFR5cGVGb3JLZXlib2FyZEV2ZW50VHlwZShrZXkudHlwZSgpKSwgdHJ1ZSwgdHJ1ZSwg
a2V5LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LmNvcHlSZWYo
KSwgMCwga2V5LmN0cmxLZXkoKSwga2V5LmFsdEtleSgpLCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1l
dGFLZXkoKSwgZmFsc2UsIGtleS5tb2RpZmllcnMoKS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpN
b2RpZmllcjo6Q2Fwc0xvY2tLZXkpKQogICAgICwgbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudChz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4oa2V5KSkKICNpZiBFTkFCTEUo
S0VZQk9BUkRfS0VZX0FUVFJJQlVURSkKICAgICAsIG1fa2V5KGtleS5rZXkoKSkKQEAgLTEwNCw3
ICsxMDUsNyBAQCBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwgRE9NV2luZG93KgogICAgICwgbV9rZXlJZGVudGlmaWVy
KGtleS5rZXlJZGVudGlmaWVyKCkpCiAgICAgLCBtX2xvY2F0aW9uKGtleUxvY2F0aW9uQ29kZShr
ZXkpKQogICAgICwgbV9yZXBlYXQoa2V5LmlzQXV0b1JlcGVhdCgpKQotICAgICwgbV9pc0NvbXBv
c2luZyh2aWV3ICYmIHZpZXctPmZyYW1lKCkgJiYgdmlldy0+ZnJhbWUoKS0+ZWRpdG9yKCkuaGFz
Q29tcG9zaXRpb24oKSkKKyAgICAsIG1faXNDb21wb3NpbmcodmlldyAmJiBpczxET01XaW5kb3c+
KHZpZXctPndpbmRvdygpKSAmJiBkb3duY2FzdDxET01XaW5kb3c+KCp2aWV3LT53aW5kb3coKSku
ZnJhbWUoKSAmJiBkb3duY2FzdDxET01XaW5kb3c+KCp2aWV3LT53aW5kb3coKSkuZnJhbWUoKS0+
ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkKICNpZiBVU0UoQVBQS0lUKQogICAgICwgbV9oYW5k
bGVkQnlJbnB1dE1ldGhvZChrZXkuaGFuZGxlZEJ5SW5wdXRNZXRob2QoKSkKICAgICAsIG1fa2V5
cHJlc3NDb21tYW5kcyhrZXkuY29tbWFuZHMoKSkKQEAgLTEzMiw5ICsxMzMsOSBAQCBpbmxpbmUg
S2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgY29uc3QgSW5pdCYgaQogCiBLZXlib2FyZEV2ZW50Ojp+S2V5Ym9hcmRFdmVudCgpID0gZGVm
YXVsdDsKIAotUmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShjb25zdCBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQmIHBsYXRmb3JtRXZlbnQsIERPTVdpbmRvdyogdmlldykKK1Jl
ZjxLZXlib2FyZEV2ZW50PiBLZXlib2FyZEV2ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1LZXli
b2FyZEV2ZW50JiBwbGF0Zm9ybUV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBLZXlib2FyZEV2ZW50KHBsYXRmb3JtRXZlbnQsIHZp
ZXcpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBLZXlib2FyZEV2ZW50KHBsYXRmb3JtRXZl
bnQsIFdURk1vdmUodmlldykpKTsKIH0KIAogUmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZl
bnQ6OmNyZWF0ZUZvckJpbmRpbmdzKCkKQEAgLTE0NywxMyArMTQ4LDEzIEBAIFJlZjxLZXlib2Fy
ZEV2ZW50PiBLZXlib2FyZEV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBj
b25zdCBJbml0JiBpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgS2V5Ym9hcmRFdmVudCh0eXBl
LCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiB9CiAKLXZvaWQgS2V5Ym9hcmRFdmVudDo6aW5p
dEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsCit2b2lkIEtleWJvYXJkRXZlbnQ6Omlu
aXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgY29uc3Qg
U3RyaW5nJiBrZXlJZGVudGlmaWVyLCB1bnNpZ25lZCBsb2NhdGlvbiwgYm9vbCBjdHJsS2V5LCBi
b29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBib29sIGFsdEdyYXBoS2V5
KQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworICAg
IGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwg
MCk7CiAKICAgICBtX2tleUlkZW50aWZpZXIgPSBrZXlJZGVudGlmaWVyOwogICAgIG1fbG9jYXRp
b24gPSBsb2NhdGlvbjsKQEAgLTIyNyw4ICsyMjgsOSBAQCBpbnQgS2V5Ym9hcmRFdmVudDo6Y2hh
ckNvZGUoKSBjb25zdAogICAgIC8vIEZpcmVmb3g6IDAgZm9yIGtleWRvd24va2V5dXAgZXZlbnRz
LCBjaGFyYWN0ZXIgY29kZSBmb3Iga2V5cHJlc3MKICAgICAvLyBXZSBtYXRjaCBGaXJlZm94LCB1
bmxlc3MgaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eSBtb2RlLCB3aGVyZSB3ZSBhbHdheXMgcmV0
dXJuIHRoZSBjaGFyYWN0ZXIgY29kZS4KICAgICBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1v
ZGUgPSBmYWxzZTsKLSAgICBpZiAodmlldygpICYmIHZpZXcoKS0+ZnJhbWUoKSkKLSAgICAgICAg
YmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9IHZpZXcoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCkubmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25RdWlya3MoKTsKKyAgICBhdXRvKiB3
aW5kb3cgPSB2aWV3KCkgPyB2aWV3KCktPndpbmRvdygpIDogbnVsbHB0cjsKKyAgICBpZiAoaXM8
RE9NV2luZG93Pih3aW5kb3cpICYmIGRvd25jYXN0PERPTVdpbmRvdz4oKndpbmRvdykuZnJhbWUo
KSkKKyAgICAgICAgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9IGRvd25jYXN0PERPTVdpbmRv
dz4oKndpbmRvdykuZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkubmVlZHNLZXlib2FyZEV2ZW50RGlz
YW1iaWd1YXRpb25RdWlya3MoKTsKIAogICAgIGlmICghbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVu
dCB8fCAodHlwZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50ICYmICFiYWNrd2FyZENv
bXBhdGliaWxpdHlNb2RlKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJk
RXZlbnQuaAppbmRleCA4MjEwMzMwZWFiMDM0MWY0Y2E1NGNkMjVjNThiOTk1NDZmMGIxNWE5Li4x
ZDNjYzI0Mzc5OWIxOWE3NDRlZTk3OGExODdlYWVhZWM4ODA1ZmIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9L
ZXlib2FyZEV2ZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgICAgICBET01fS0VZ
X0xPQ0FUSU9OX05VTVBBRCA9IDB4MDMKICAgICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxLZXlib2FyZEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50
JiwgRE9NV2luZG93Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxLZXlib2FyZEV2
ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgUmVmUHRyPFdpbmRvd1By
b3h5PiYmKTsKICAgICBzdGF0aWMgUmVmPEtleWJvYXJkRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdz
KCk7CiAKICAgICBzdHJ1Y3QgSW5pdCA6IHB1YmxpYyBFdmVudE1vZGlmaWVySW5pdCB7CkBAIC02
NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfktleWJvYXJkRXZlbnQoKTsKICAg
ICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93
KiwKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdp
bmRvd1Byb3h5PiYmLAogICAgICAgICBjb25zdCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIHVuc2ln
bmVkIGxvY2F0aW9uLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXksIGJvb2wgYWx0R3JhcGhLZXkgPSBmYWxzZSk7CiAgICAgCkBA
IC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEtleWJvYXJkRXZlbnQo
KTsKLSAgICBLZXlib2FyZEV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYsIERPTVdp
bmRvdyopOworICAgIEtleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50Jiwg
UmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAgICBLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBs
YXRmb3JtS2V5Ym9hcmRFdmVudD4gbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9LZXlib2FyZEV2ZW50LmlkbAppbmRleCA3NTdjMDc3OTNmNWU1ZjFlMTg0MzhmNzhkZDQ0
N2U5YTNhMWQ1MTA5Li5jZGU0NTBjMzQzNTMzNTA5MmExNzdkNmRmNjM2OGJmNjM1MWQ3MTAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaWRsCkBAIC01Miw3ICs1Miw3IEBACiAgICAg
Ly8gRklYTUU6IHRoaXMgZG9lcyBub3QgbWF0Y2ggdGhlIHZlcnNpb24gaW4gdGhlIERPTSBzcGVj
LgogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2
YWx1ZSBpcyB3cm9uZy4KICAgICB2b2lkIGluaXRLZXlib2FyZEV2ZW50KG9wdGlvbmFsIERPTVN0
cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlID0gZmFs
c2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZhbHNlLAotICAgICAgICBvcHRpb25h
bCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBET01TdHJpbmcga2V5SWRlbnRpZmll
ciA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGxvY2F0aW9uID0gMCwKKyAg
ICAgICAgb3B0aW9uYWwgV2luZG93UHJveHk/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBET01TdHJp
bmcga2V5SWRlbnRpZmllciA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGxv
Y2F0aW9uID0gMCwKICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9w
dGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkg
PSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBtZXRhS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xl
YW4gYWx0R3JhcGhLZXkgPSBmYWxzZSk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgK
aW5kZXggNTE5N2Q1YmFlMWFlMzVhYWIwNGYwY2I1MGU3NmU5ZDhmYWExOGI3OS4uMzMwOTI3ODdk
MTRhZTY1NzNlYTFiOWQxZmQ5YTdkMGVlZTBmNDAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuaApAQCAtMjcsMTIgKzI3LDEyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRE9N
V2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJKU1ZhbHVlSW5XcmFwcGVk
T2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCisjaW5jbHVkZSAiV2lu
ZG93UHJveHkuaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC00MCw5ICs0MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2I7CiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi11c2luZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBW
YXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8TWVzc2FnZVBvcnQ+LCBSZWZQdHI8U2Vy
dmljZVdvcmtlcj4+OwordXNpbmcgTWVzc2FnZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8
V2luZG93UHJveHk+LCBSZWZQdHI8TWVzc2FnZVBvcnQ+LCBSZWZQdHI8U2VydmljZVdvcmtlcj4+
OwogI2Vsc2UKLXVzaW5nIE1lc3NhZ2VFdmVudFNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRyPERPTVdp
bmRvdz4sIFJlZlB0cjxNZXNzYWdlUG9ydD4+OwordXNpbmcgTWVzc2FnZUV2ZW50U291cmNlID0g
VmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8TWVzc2FnZVBvcnQ+PjsKICNlbmRp
ZgogCiBjbGFzcyBNZXNzYWdlRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZUV2ZW50LmlkbAppbmRleCAwMjQzOGZkNGM0N2MzZmMyOTJlYWJmNDdlNWM1ZTgz
Zjg2OTUwODIyLi5mYTQ4YzhmYTVkYTVmZGMzZTBmMmMyZjdlZmJmYTc1Y2Q4ZjU0MGE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbApAQCAtMjcsOSArMjcsOSBAQAogICovCiAKICNp
ZiBkZWZpbmVkKEVOQUJMRV9TRVJWSUNFX1dPUktFUikgJiYgRU5BQkxFX1NFUlZJQ0VfV09SS0VS
Ci10eXBlZGVmIChET01XaW5kb3cgb3IgTWVzc2FnZVBvcnQgb3IgU2VydmljZVdvcmtlcikgTWVz
c2FnZUV2ZW50U291cmNlOwordHlwZWRlZiAoV2luZG93UHJveHkgb3IgTWVzc2FnZVBvcnQgb3Ig
U2VydmljZVdvcmtlcikgTWVzc2FnZUV2ZW50U291cmNlOwogI2Vsc2UKLXR5cGVkZWYgKERPTVdp
bmRvdyBvciBNZXNzYWdlUG9ydCkgTWVzc2FnZUV2ZW50U291cmNlOwordHlwZWRlZiAoV2luZG93
UHJveHkgb3IgTWVzc2FnZVBvcnQpIE1lc3NhZ2VFdmVudFNvdXJjZTsKICNlbmRpZgogCiBbCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VFdmVudC5jcHAKaW5kZXggYTE0N2UxMjE4YmI2ZTI0ZjJhZDc2NDcwNzQ2
MGM2NjcwMjFmNmM1OS4uYzg5NmY4NjMxYTNkMmJiZGExOTMwNjIxMGZlZGRiODk4NmU0Y2E2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcApAQCAtNDQsMTMgKzQ0LDEzIEBAIFJlZjxNb3Vz
ZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25z
dCBNb3VzZUV2ZW50SW5pCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudCh0eXBl
LCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiB9CiAKLVJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2
ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERPTVdpbmRvdyogdmll
dywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgaW50IGRldGFpbCwgTm9kZSogcmVs
YXRlZFRhcmdldCkKK1JlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBpbnQgZGV0YWlsLCBOb2RlKiByZWxhdGVkVGFyZ2V0
KQogewogICAgIGJvb2wgaXNNb3VzZUVudGVyT3JMZWF2ZSA9IGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzKCkubW91c2VlbnRlckV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2Vs
ZWF2ZUV2ZW50OwogICAgIGJvb2wgaXNDYW5jZWxhYmxlID0gZXZlbnRUeXBlICE9IGV2ZW50TmFt
ZXMoKS5tb3VzZW1vdmVFdmVudCAmJiAhaXNNb3VzZUVudGVyT3JMZWF2ZTsKICAgICBib29sIGNh
bkJ1YmJsZSA9ICFpc01vdXNlRW50ZXJPckxlYXZlOwogCi0gICAgcmV0dXJuIE1vdXNlRXZlbnQ6
OmNyZWF0ZShldmVudFR5cGUsIGNhbkJ1YmJsZSwgaXNDYW5jZWxhYmxlLCBldmVudC50aW1lc3Rh
bXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgdmlldywKKyAgICByZXR1cm4gTW91c2VF
dmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgY2FuQnViYmxlLCBpc0NhbmNlbGFibGUsIGV2ZW50LnRp
bWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCBXVEZNb3ZlKHZpZXcpLAogICAg
ICAgICBkZXRhaWwsIGV2ZW50Lmdsb2JhbFBvc2l0aW9uKCkueCgpLCBldmVudC5nbG9iYWxQb3Np
dGlvbigpLnkoKSwgZXZlbnQucG9zaXRpb24oKS54KCksIGV2ZW50LnBvc2l0aW9uKCkueSgpLAog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS54
KCksIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS55KCksCkBAIC01OSwxMyArNTksMTMgQEAgUmVmPE1v
dXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgRE9NV2luZG93KiB2aWUKICAgICAgICAgcmVsYXRlZFRhcmdldCwgZXZlbnQuZm9yY2UoKSwg
ZXZlbnQuc3ludGhldGljQ2xpY2tUeXBlKCkpOwogfQogCi1SZWY8TW91c2VFdmVudD4gTW91c2VF
dmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIERPTVdpbmRvdyogdmlldywg
aW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdl
WSwKK1JlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRp
bWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3Jl
ZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCiAjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKICAgICBpbnQgbW92ZW1lbnRYLCBpbnQgbW92ZW1lbnRZLAogI2VuZGlmCiAgICAg
Ym9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1
bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIEV2ZW50VGFyZ2V0
KiByZWxhdGVkVGFyZ2V0LCBkb3VibGUgZm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0Ns
aWNrVHlwZSwgRGF0YVRyYW5zZmVyKiBkYXRhVHJhbnNmZXIsIGJvb2wgaXNTaW11bGF0ZWQpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIHRpbWVzdGFtcCwgdmlldywKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb3Vz
ZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCBXVEZNb3ZlKHZp
ZXcpLAogICAgICAgICBkZXRhaWwsIHsgc2NyZWVuWCwgc2NyZWVuWSB9LCB7IHBhZ2VYLCBwYWdl
WSB9LAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIHsgbW92ZW1lbnRYLCBtb3Zl
bWVudFkgfSwKQEAgLTczLDE5ICs3MywxOSBAQCBSZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6
Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvbwogICAg
ICAgICBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMs
IHJlbGF0ZWRUYXJnZXQsIGZvcmNlLCBzeW50aGV0aWNDbGlja1R5cGUsIGRhdGFUcmFuc2Zlciwg
aXNTaW11bGF0ZWQpKTsKIH0KIAotUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgRE9NV2luZG93KiB2aWV3LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVl
blksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwg
Ym9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRXZl
bnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCitSZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3Jl
YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBj
YW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNj
cmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtl
eSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hv
cnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0
aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUs
IHZpZXcsIGRldGFpbCwgeyBzY3JlZW5YLCBzY3JlZW5ZIH0sIHsgY2xpZW50WCwgY2xpZW50WSB9
LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHN5
bnRoZXRpY0NsaWNrVHlwZSwgcmVsYXRlZFRhcmdldCkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1vdXNlRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUo
dmlldyksIGRldGFpbCwgeyBzY3JlZW5YLCBzY3JlZW5ZIH0sIHsgY2xpZW50WCwgY2xpZW50WSB9
LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHN5
bnRoZXRpY0NsaWNrVHlwZSwgcmVsYXRlZFRhcmdldCkpOwogfQogCiBNb3VzZUV2ZW50OjpNb3Vz
ZUV2ZW50KCkgPSBkZWZhdWx0OwogCi1Nb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25v
dG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiB2aWV3LCBpbnQgZGV0YWlsLCBjb25zdCBJ
bnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwK
K01vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNj
cmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKICAgICAgICAgY29uc3QgSW50UG9pbnQmIG1vdmVtZW50RGVsdGEsCiAj
ZW5kaWYKICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwg
Ym9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRv
bnMsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0LCBkb3VibGUgZm9yY2UsIHVuc2lnbmVkIHNo
b3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRGF0YVRyYW5zZmVyKiBkYXRhVHJhbnNmZXIsIGJvb2wg
aXNTaW11bGF0ZWQpCi0gICAgOiBNb3VzZVJlbGF0ZWRFdmVudChldmVudFR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2aWV3LCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB3
aW5kb3dMb2NhdGlvbiwKKyAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnVi
YmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIFdURk1vdmUodmlldyksIGRldGFpbCwgc2NyZWVu
TG9jYXRpb24sIHdpbmRvd0xvY2F0aW9uLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAg
ICAgIG1vdmVtZW50RGVsdGEsCiAjZW5kaWYKQEAgLTEwMCw4ICsxMDAsOCBAQCBNb3VzZUV2ZW50
OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZQogewogfQogCi1Nb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01X
aW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwg
Y29uc3QgSW50UG9pbnQmIGNsaWVudExvY2F0aW9uLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5
LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5z
aWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBF
dmVudFRhcmdldCogcmVsYXRlZFRhcmdldCkKLSAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50
VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgdmlldywg
ZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwgeyB9LAorTW91c2VFdmVudDo6TW91c2VFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50
JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExvY2F0aW9uLCBib29sIGN0
cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVk
IHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3lu
dGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCkKKyAgICA6IE1vdXNl
UmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBNb25vdG9uaWNU
aW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwgeyB9LAog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIHsgfSwKICNlbmRpZgpAQCAtMTI3LDEy
ICsxMjcsMTIgQEAgTW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgY29uc3QgTW91c2VFdmVudEluaXQmIGluaXQKIAogTW91c2VFdmVudDo6fk1vdXNl
RXZlbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBE
T01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50
IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQq
IHJlbGF0ZWRUYXJnZXQpCit2b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRy
PFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVu
WSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBi
b29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRU
YXJnZXQqIHJlbGF0ZWRUYXJnZXQpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2Vs
YWJsZSwgdmlldywgZGV0YWlsKTsKKyAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIFdURk1vdmUodmlldyksIGRldGFpbCk7CiAKICAgICBtX3NjcmVlbkxvY2F0aW9u
ID0gSW50UG9pbnQoc2NyZWVuWCwgc2NyZWVuWSk7CiAgICAgbV9jdHJsS2V5ID0gY3RybEtleTsK
QEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgYwogCiAvLyBGSVhNRTog
V2UgbmVlZCB0aGlzIHF1aXJrIGJlY2F1c2UgaUFkIFByb2R1Y2VyIGlzIGNhbGxpbmcgdGhpcyBm
dW5jdGlvbiB3aXRoIGEgcmVsYXRlZFRhcmdldCB0aGF0IGlzIG5vdCBhbiBFdmVudFRhcmdldCAo
cmRhcjovL3Byb2JsZW0vMzA2NDAxMDEpLgogLy8gV2Ugc2hvdWxkIHJlbW92ZSB0aGlzIHF1aXJr
IHdoZW4gcG9zc2libGUuCi12b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmsoRXhl
Y1N0YXRlJiBzdGF0ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2Ny
ZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5
LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgSlNW
YWx1ZSByZWxhdGVkVGFyZ2V0VmFsdWUpCit2b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50
UXVpcmsoRXhlY1N0YXRlJiBzdGF0ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwg
aW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wg
Y3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWdu
ZWQgc2hvcnQgYnV0dG9uLCBKU1ZhbHVlIHJlbGF0ZWRUYXJnZXRWYWx1ZSkKIHsKICAgICBFdmVu
dFRhcmdldCogcmVsYXRlZFRhcmdldCA9IG51bGxwdHI7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAt
MTc2LDcgKzE3Niw3IEBAIHZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayhFeGVj
U3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIH0KICNlbmRpZgotICAgIGluaXRNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2Fu
Y2VsYWJsZSwgdmlldywgZGV0YWlsLCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZ
LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBidXR0b24sIHJlbGF0ZWRUYXJn
ZXQpOworICAgIGluaXRNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RG
TW92ZSh2aWV3KSwgZGV0YWlsLCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBj
dHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBidXR0b24sIHJlbGF0ZWRUYXJnZXQp
OwogfQogCiBFdmVudEludGVyZmFjZSBNb3VzZUV2ZW50OjpldmVudEludGVyZmFjZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlRXZlbnQuaAppbmRleCAyNmNhZjhmNmIxOTE1MTY2OGI2ODAzNTU0YTBi
MDAxNjRkM2UxZmNmLi40YjI4MDc5OTU1YjRjYjczYTJjZTE2OGViNWExMzlkNzMxNTZhOWY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKQEAgLTI5LDE5ICsyOSwyMCBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBEYXRhVHJhbnNmZXI7CitjbGFzcyBOb2RlOwogY2xhc3MgUGxhdGZv
cm1Nb3VzZUV2ZW50OwogCiBjbGFzcyBNb3VzZUV2ZW50IDogcHVibGljIE1vdXNlUmVsYXRlZEV2
ZW50IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+
IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqLCBpbnQgZGV0YWls
LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAorICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGlt
ZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVl
blgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKICNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQogICAgICAgICBpbnQgbW92ZW1lbnRYLCBpbnQgbW92ZW1lbnRZLAogI2VuZGlmCiAg
ICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0
YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBFdmVu
dFRhcmdldCogcmVsYXRlZFRhcmdldCwgZG91YmxlIGZvcmNlLCB1bnNpZ25lZCBzaG9ydCBzeW50
aGV0aWNDbGlja1R5cGUsIERhdGFUcmFuc2ZlciogPSBudWxscHRyLCBib29sIGlzU2ltdWxhdGVk
ID0gZmFsc2UpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYsIGludCBkZXRhaWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYsIGludCBkZXRhaWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQpOwogCi0gICAgc3Rh
dGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWws
IGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQg
c3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCk7CisgICAgc3Rh
dGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwg
aW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNs
aWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0
YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNp
Z25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0
KTsKIAogICAgIHN0YXRpYyBSZWY8TW91c2VFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQpOyB9CiAKQEAgLTQ5LDggKzUwLDggQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB+TW91c2VFdmVudCgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBpbml0TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5Y
LCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJv
b2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1
dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpOwotICAgIHZvaWQgaW5pdE1vdXNlRXZl
bnRRdWlyayhKU0M6OkV4ZWNTdGF0ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdp
bmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgs
IGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBi
b29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgSlNDOjpKU1ZhbHVlIHJlbGF0ZWRU
YXJnZXQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdE1vdXNlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50
IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQq
IHJlbGF0ZWRUYXJnZXQpOworICAgIHZvaWQgaW5pdE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4ZWNT
dGF0ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwg
aW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNs
aWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0
YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBKU0M6OkpTVmFsdWUgcmVsYXRlZFRhcmdldCk7
CiAKICAgICB1bnNpZ25lZCBzaG9ydCBidXR0b24oKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbjsg
fQogICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMoKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbnM7
IH0KQEAgLTcwLDcgKzcxLDcgQEAgcHVibGljOgogICAgIGludCB3aGljaCgpIGNvbnN0IGZpbmFs
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1w
LCBET01XaW5kb3cqLAorICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwg
UmVmUHRyPFdpbmRvd1Byb3h5PiYmLAogICAgICAgICBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2lu
dCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0
YSwKQEAgLTc4LDcgKzc5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBib29sIGN0cmxLZXksIGJv
b2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1
dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywKICAgICAgICAgRXZlbnRUYXJnZXQqIHJlbGF0
ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBl
LCBEYXRhVHJhbnNmZXIqLCBib29sIGlzU2ltdWxhdGVkKTsKIAotICAgIE1vdXNlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBE
T01XaW5kb3cqLAorICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAg
ICAgIGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50
UG9pbnQmIGNsaWVudExvY2F0aW9uLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5
LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksCiAgICAgICAgIHVuc2lnbmVkIHNob3J0IGJ1
dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xp
Y2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVu
dC5pZGwKaW5kZXggMGJlMGY4OGRkMzVkN2NkZmI4ZDM1NDJkYWRlMTZlMzI5NGZkYzgzYS4uNjBj
NDQ2NjY3MWYwNjE5ZmVlMDlkMGYwMTkzZjlhNDFmNmIzZTgxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3Vz
ZUV2ZW50LmlkbApAQCAtNDMsNyArNDMsNyBAQAogICAgIC8vIEZJWE1FOiByZWxhdGVkVGFyZ2V0
IHNob3VsZCBiZSBvZiB0eXBlIEV2ZW50VGFyZ2V0PyBidXQgd2UgbmVlZCB0byB1c2UgYW55IHRv
IHN1cHBvcnQgYSBxdWlyayBmb3IgaUFkIFByb2R1Y2VyIChyZGFyOi8vcHJvYmxlbS8zMDY0MDEw
MSkuCiAgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlJlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIElt
cGxlbWVudGVkQXM9aW5pdE1vdXNlRXZlbnRRdWlya10gdm9pZCBpbml0TW91c2VFdmVudChvcHRp
b25hbCBET01TdHJpbmcgdHlwZSA9ICJ1bmRlZmluZWQiLAogICAgICAgICBvcHRpb25hbCBib29s
ZWFuIGNhbkJ1YmJsZSA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIGNhbmNlbGFibGUgPSBmYWxz
ZSwKLSAgICAgICAgb3B0aW9uYWwgRE9NV2luZG93PyB2aWV3ID0gbnVsbCwgb3B0aW9uYWwgbG9u
ZyBkZXRhaWwgPSAwLAorICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlldyA9IG51bGws
IG9wdGlvbmFsIGxvbmcgZGV0YWlsID0gMCwKICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5Y
ID0gMCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRYID0g
MCwgb3B0aW9uYWwgbG9uZyBjbGllbnRZID0gMCwKICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBj
dHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFsc2UsIG9wdGlvbmFs
IGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBtZXRhS2V5ID0gZmFs
c2UsCiAgICAgICAgIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiA9IDAsIG9wdGlvbmFs
IGFueSByZWxhdGVkVGFyZ2V0ID0gbnVsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VSZWxhdGVkRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRl
ZEV2ZW50LmNwcAppbmRleCA4NTM3MTRkNmFiMWYwMWU4YTVlYWNlMGQwZTQzOTc1ZWIzZDU4NDlm
Li44MGE4MjY3ZGMyMWJkOGIzYmY1MTgzMGZlNGIzMGE0MmE2MTIwMTU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKQEAgLTMyLDEzICszMiwxMyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLU1vdXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIERPTVdpbmRvdyogRE9NV2luZG93LAorTW91
c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRp
bWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0
aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRQb2lu
dCYgbW92ZW1lbnREZWx0YSwKICNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0
YUtleSwgYm9vbCBpc1NpbXVsYXRlZCkKLSAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRU
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgRE9NV2luZG93LCBkZXRhaWws
IGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGZhbHNlLCBmYWxzZSkKKyAgICA6
IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRp
bWVzdGFtcCwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX3NjcmVlbkxvY2F0aW9uKHNjcmVlbkxv
Y2F0aW9uKQogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgLCBtX21vdmVtZW50RGVsdGEo
bW92ZW1lbnREZWx0YSkKQEAgLTYxLDcgKzYxLDcgQEAgTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNl
UmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBNb3VzZVIK
IHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXQoYm9vbCBpc1NpbXVsYXRlZCwgY29uc3QgSW50
UG9pbnQmIHdpbmRvd0xvY2F0aW9uKQogewogICAgIGlmICghaXNTaW11bGF0ZWQpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSkg
eworICAgICAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5
KHZpZXcoKSkpIHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgYWJzb2x1dGVQb2ludCA9IGZyYW1l
Vmlldy0+d2luZG93VG9Db250ZW50cyh3aW5kb3dMb2NhdGlvbik7CiAgICAgICAgICAgICBGbG9h
dFBvaW50IGRvY3VtZW50UG9pbnQgPSBmcmFtZVZpZXctPmFic29sdXRlVG9Eb2N1bWVudFBvaW50
KGFic29sdXRlUG9pbnQpOwogICAgICAgICAgICAgbV9wYWdlTG9jYXRpb24gPSBmbG9vcmVkTGF5
b3V0UG9pbnQoZG9jdW1lbnRQb2ludCk7CkBAIC04MywxMyArODMsMTMgQEAgdm9pZCBNb3VzZVJl
bGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVzKCkKICAgICBtX2hhc0NhY2hlZFJlbGF0aXZlUG9z
aXRpb24gPSBmYWxzZTsKIH0KIAotRnJhbWVWaWV3KiBNb3VzZVJlbGF0ZWRFdmVudDo6ZnJhbWVW
aWV3RnJvbURPTVdpbmRvdyhET01XaW5kb3cqIHdpbmRvdykKK0ZyYW1lVmlldyogTW91c2VSZWxh
dGVkRXZlbnQ6OmZyYW1lVmlld0Zyb21XaW5kb3dQcm94eShXaW5kb3dQcm94eSogd2luZG93UHJv
eHkpCiB7Ci0gICAgYXV0byogZnJhbWUgPSB3aW5kb3cgPyB3aW5kb3ctPmZyYW1lKCkgOiBudWxs
cHRyOwotICAgIGlmICghZnJhbWUpCisgICAgaWYgKCF3aW5kb3dQcm94eSB8fCAhaXM8RE9NV2lu
ZG93Pih3aW5kb3dQcm94eS0+d2luZG93KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBmcmFtZS0+dmlldygpOworICAgIGF1dG8qIGZyYW1lID0gZG93bmNhc3Q8RE9N
V2luZG93Pigqd2luZG93UHJveHktPndpbmRvdygpKS5mcmFtZSgpOworICAgIHJldHVybiBmcmFt
ZSA/IGZyYW1lLT52aWV3KCkgOiBudWxscHRyOwogfQogCiBMYXlvdXRQb2ludCBNb3VzZVJlbGF0
ZWRFdmVudDo6cGFnZVBvaW50VG9DbGllbnRQb2ludChMYXlvdXRQb2ludCBwYWdlUG9pbnQsIEZy
YW1lVmlldyogZnJhbWVWaWV3KQpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgTW91c2VSZWxhdGVk
RXZlbnQ6OmluaXRDb29yZGluYXRlcyhjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50TG9jYXRpb24p
CiAgICAgLy8gU2V0IHVwIGluaXRpYWwgdmFsdWVzIGZvciBjb29yZGluYXRlcy4KICAgICAvLyBD
b3JyZWN0IHZhbHVlcyBhcmUgY29tcHV0ZWQgbGF6aWx5LCBzZWUgY29tcHV0ZVJlbGF0aXZlUG9z
aXRpb24uCiAgICAgRmxvYXRTaXplIGRvY3VtZW50VG9DbGllbnRPZmZzZXQ7Ci0gICAgaWYgKGF1
dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSkKKyAgICBpZiAo
YXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpCiAgICAg
ICAgIGRvY3VtZW50VG9DbGllbnRPZmZzZXQgPSBmcmFtZVZpZXctPmRvY3VtZW50VG9DbGllbnRP
ZmZzZXQoKTsKIAogICAgIG1fY2xpZW50TG9jYXRpb24gPSBjbGllbnRMb2NhdGlvbjsKQEAgLTEy
OCw3ICsxMjgsNyBAQCB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojppbml0Q29vcmRpbmF0ZXMoY29u
c3QgTGF5b3V0UG9pbnQmIGNsaWVudExvY2F0aW9uKQogCiBmbG9hdCBNb3VzZVJlbGF0ZWRFdmVu
dDo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3IoKSBjb25zdAogewotICAgIGlmIChhdXRv
KiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9tRE9NV2luZG93KHZpZXcoKSkpCisgICAgaWYgKGF1
dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21XaW5kb3dQcm94eSh2aWV3KCkpKQogICAgICAg
ICByZXR1cm4gZnJhbWVWaWV3LT5kb2N1bWVudFRvQWJzb2x1dGVTY2FsZUZhY3RvcigpOwogCiAg
ICAgcmV0dXJuIDE7CkBAIC0xMzYsNyArMTM2LDcgQEAgZmxvYXQgTW91c2VSZWxhdGVkRXZlbnQ6
OmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFjdG9yKCkgY29uc3QKIAogdm9pZCBNb3VzZVJlbGF0
ZWRFdmVudDo6Y29tcHV0ZVBhZ2VMb2NhdGlvbigpCiB7Ci0gICAgbV9hYnNvbHV0ZUxvY2F0aW9u
ID0gcGFnZVBvaW50VG9BYnNvbHV0ZVBvaW50KG1fcGFnZUxvY2F0aW9uLCBmcmFtZVZpZXdGcm9t
RE9NV2luZG93KHZpZXcoKSkpOworICAgIG1fYWJzb2x1dGVMb2NhdGlvbiA9IHBhZ2VQb2ludFRv
QWJzb2x1dGVQb2ludChtX3BhZ2VMb2NhdGlvbiwgZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZp
ZXcoKSkpOwogfQogCiB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50OjpyZWNlaXZlZFRhcmdldCgpCkBA
IC0xODUsNyArMTg1LDcgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVJlbGF0aXZl
UG9zaXRpb24oKQogICAgIAogRmxvYXRQb2ludCBNb3VzZVJlbGF0ZWRFdmVudDo6bG9jYXRpb25J
blJvb3RWaWV3Q29vcmRpbmF0ZXMoKSBjb25zdAogewotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcg
PSBmcmFtZVZpZXdGcm9tRE9NV2luZG93KHZpZXcoKSkpCisgICAgaWYgKGF1dG8qIGZyYW1lVmll
dyA9IGZyYW1lVmlld0Zyb21XaW5kb3dQcm94eSh2aWV3KCkpKQogICAgICAgICByZXR1cm4gZnJh
bWVWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocm91bmRlZEludFBvaW50KG1fYWJzb2x1dGVMb2Nh
dGlvbikpOwogCiAgICAgcmV0dXJuIG1fYWJzb2x1dGVMb2NhdGlvbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L01vdXNlUmVsYXRlZEV2ZW50LmgKaW5kZXggMGQ4M2MzNjA5ZjcxZWFmZWYyMTcxYTljZDBkNDMx
YWU2ZDg1NGY4Yi4uYWQ0ZTVkMGMzNTZmNTQxZTA4MmUxMWEyNmEyZDBjYzExNWZkNTljNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKQEAgLTY3LDE0ICs2NywxNCBAQCBw
dWJsaWM6CiAgICAgLy8gdXNhYmxlIHdpdGggUmVuZGVyT2JqZWN0OjphYnNvbHV0ZVRvTG9jYWwp
LgogICAgIGNvbnN0IExheW91dFBvaW50JiBhYnNvbHV0ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9hYnNvbHV0ZUxvY2F0aW9uOyB9CiAgICAgCi0gICAgc3RhdGljIEZyYW1lVmlldyogZnJh
bWVWaWV3RnJvbURPTVdpbmRvdyhET01XaW5kb3cqKTsKKyAgICBzdGF0aWMgRnJhbWVWaWV3KiBm
cmFtZVZpZXdGcm9tV2luZG93UHJveHkoV2luZG93UHJveHkqKTsKIAogICAgIHN0YXRpYyBMYXlv
dXRQb2ludCBwYWdlUG9pbnRUb0NsaWVudFBvaW50KExheW91dFBvaW50IHBhZ2VQb2ludCwgRnJh
bWVWaWV3Kik7CiAgICAgc3RhdGljIExheW91dFBvaW50IHBhZ2VQb2ludFRvQWJzb2x1dGVQb2lu
dChMYXlvdXRQb2ludCBwYWdlUG9pbnQsIEZyYW1lVmlldyopOwogCiBwcm90ZWN0ZWQ6CiAgICAg
TW91c2VSZWxhdGVkRXZlbnQoKSA9IGRlZmF1bHQ7Ci0gICAgTW91c2VSZWxhdGVkRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBN
b25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiwKKyAgICBNb3VzZVJlbGF0ZWRFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAg
ICAgIGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50
UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAg
IGNvbnN0IEludFBvaW50JiBtb3ZlbWVudERlbHRhLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDRiMWU4
NzI1Nzk1MzNmYmY3ODcxMmZkNmQyM2QyYzgxNWIwM2ViMzguLmM5MTkwN2NkZDRhNDhiMTcyZWEz
YTJkZWUxZTg4MDc4MGJlNWRlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJDb21wb3NlZFRyZWVBbmNlc3Rvckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29u
dGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNp
bmNsdWRlICJEb2N1bWVudFR5cGUuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2ltdWxhdGVkQ2xpY2suY3BwCmluZGV4IGUwZjRlMzUyZWNhMThkY2RjODU5
MjQ5MmVjNTA4NDI5MjhhYjY1NzQuLjQxN2U5MDdiZjI4ODFiNmE4N2Y2MWQ2MDkxNmI2N2U2OGVi
OWMxMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRlZENsaWNrLmNwcApAQCAtMzcsMTQgKzM3
LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2ltdWxhdGVkTW91c2VFdmVudCBm
aW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNpbXVs
YXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9N
V2luZG93KiB2aWV3LCBSZWZQdHI8RXZlbnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0
YXJnZXQsIFNpbXVsYXRlZENsaWNrU291cmNlIHNvdXJjZSkKKyAgICBzdGF0aWMgUmVmPFNpbXVs
YXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIFJlZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZlbnQs
IEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVkQ2xpY2tTb3VyY2Ugc291cmNlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2ltdWxhdGVkTW91c2VFdmVudChldmVudFR5cGUs
IHZpZXcsIFdURk1vdmUodW5kZXJseWluZ0V2ZW50KSwgdGFyZ2V0LCBzb3VyY2UpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2ltdWxhdGVkTW91c2VFdmVudChldmVudFR5cGUsIFdU
Rk1vdmUodmlldyksIFdURk1vdmUodW5kZXJseWluZ0V2ZW50KSwgdGFyZ2V0LCBzb3VyY2UpKTsK
ICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU2ltdWxhdGVkTW91c2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWV3LCBSZWZQdHI8RXZlbnQ+JiYgdW5kZXJs
eWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQsIFNpbXVsYXRlZENsaWNrU291cmNlIHNvdXJjZSkK
LSAgICAgICAgOiBNb3VzZUV2ZW50KGV2ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwgdW5kZXJseWluZ0V2
ZW50ID8gdW5kZXJseWluZ0V2ZW50LT50aW1lU3RhbXAoKSA6IE1vbm90b25pY1RpbWU6Om5vdygp
LCB2aWV3LCAwLCB7IH0sIHsgfSwKKyAgICBTaW11bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgUmVmUHRyPEV2
ZW50PiYmIHVuZGVybHlpbmdFdmVudCwgRWxlbWVudCYgdGFyZ2V0LCBTaW11bGF0ZWRDbGlja1Nv
dXJjZSBzb3VyY2UpCisgICAgICAgIDogTW91c2VFdmVudChldmVudFR5cGUsIHRydWUsIHRydWUs
IHVuZGVybHlpbmdFdmVudCA/IHVuZGVybHlpbmdFdmVudC0+dGltZVN0YW1wKCkgOiBNb25vdG9u
aWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwgMCwgeyB9LCB7IH0sCiAjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKICAgICAgICAgICAgIHsgfSwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50
LmNwcAppbmRleCBiZDAyNGVhNTVmNmJhODRlMzJjOTA0NDZmY2JmODI4MjA0ZDJjMzBjLi5iMDk0
NDkzYzFmODU1ODQ5ODg5M2MyY2I3YzBkMDc0NmI2YWI1YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2
ZW50LmNwcApAQCAtMzgsMjkgKzM4LDI5IEBAIFJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3Jl
YXRlRm9yQmluZGluZ3MoKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudCk7CiB9
CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlKERPTVdpbmRvdyogdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRUeXBlKQorUmVmPFRleHRF
dmVudD4gVGV4dEV2ZW50OjpjcmVhdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0
IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlIGlucHV0VHlwZSkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQodmlldywgZGF0YSwgaW5wdXRUeXBlKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdURk1vdmUodmlldyksIGRhdGEsIGlucHV0
VHlwZSkpOwogfQogCi1SZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4
dFBhc3RlKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBib29sIHNob3VsZFNt
YXJ0UmVwbGFjZSkKK1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0
UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgYm9v
bCBzaG91bGRTbWFydFJlcGxhY2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2
ZW50KHZpZXcsIGRhdGEsIDAsIHNob3VsZFNtYXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1
b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgVGV4dEV2ZW50KFdURk1vdmUodmlldyksIGRhdGEsIDAsIHNob3VsZFNtYXJ0UmVwbGFjZSwg
ZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKSk7CiB9CiAK
LVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShET01XaW5k
b3cqIHZpZXcsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIGRhdGEsIGJvb2wgc2hvdWxkU21h
cnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcg
bWFpbEJsb2NrcXVvdGVIYW5kbGluZykKK1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRl
Rm9yRnJhZ21lbnRQYXN0ZShSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxk
TWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5n
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudCh2aWV3LCBlbXB0eVN0cmlu
ZygpLCBXVEZNb3ZlKGRhdGEpLCBzaG91bGRTbWFydFJlcGxhY2UsIHNob3VsZE1hdGNoU3R5bGUs
IG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0
RXZlbnQoV1RGTW92ZSh2aWV3KSwgZW1wdHlTdHJpbmcoKSwgV1RGTW92ZShkYXRhKSwgc2hvdWxk
U21hcnRSZXBsYWNlLCBzaG91bGRNYXRjaFN0eWxlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKSk7
CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChET01XaW5kb3cq
IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3Jl
YXRlRm9yRHJvcChSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRh
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudCh2aWV3LCBkYXRhLCBUZXh0
RXZlbnRJbnB1dERyb3ApKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RG
TW92ZSh2aWV3KSwgZGF0YSwgVGV4dEV2ZW50SW5wdXREcm9wKSk7CiB9CiAKLVJlZjxUZXh0RXZl
bnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRGljdGF0aW9uKERPTVdpbmRvdyogdmlldywgY29uc3Qg
U3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRp
b25BbHRlcm5hdGl2ZXMpCitSZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3Rh
dGlvbihSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25z
dCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KHZpZXcsIGRhdGEsIGRpY3RhdGlv
bkFsdGVybmF0aXZlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudChXVEZN
b3ZlKHZpZXcpLCBkYXRhLCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpKTsKIH0KIAogVGV4dEV2ZW50
OjpUZXh0RXZlbnQoKQpAQCAtNzEsOCArNzEsOCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudCgpCiB7
CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5n
JiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRUeXBlKQotICAgIDogVUlFdmVudChldmVu
dE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIHZpZXcsIDApCitUZXh0RXZlbnQ6
OlRleHRFdmVudChSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRh
LCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRUeXBlKQorICAgIDogVUlFdmVudChldmVudE5hbWVz
KCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIFdURk1vdmUodmlldyksIDApCiAgICAgLCBt
X2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fc2hvdWxk
U21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtODEsOCArODEsOCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVu
dChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBl
IGlucAogewogfQogCi1UZXh0RXZlbnQ6OlRleHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0
IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50
LCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxv
Y2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpCi0gICAgOiBVSUV2ZW50KGV2
ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCkKK1RleHRFdmVu
dDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRh
dGEsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzaG91
bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5k
bGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQorICAgIDogVUlFdmVudChldmVudE5hbWVzKCku
dGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2lu
cHV0VHlwZShUZXh0RXZlbnRJbnB1dFBhc3RlKQogICAgICwgbV9kYXRhKGRhdGEpCiAgICAgLCBt
X3Bhc3RpbmdGcmFnbWVudChXVEZNb3ZlKHBhc3RpbmdGcmFnbWVudCkpCkBAIC05Miw4ICs5Miw4
IEBAIFRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBk
YXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVuCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50
KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0
aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCi0gICAgOiBVSUV2ZW50KGV2
ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCkKK1RleHRFdmVu
dDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRh
dGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0
aXZlcykKKyAgICA6IFVJRXZlbnQoZXZlbnROYW1lcygpLnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0
cnVlLCBXVEZNb3ZlKHZpZXcpLCAwKQogICAgICwgbV9pbnB1dFR5cGUoVGV4dEV2ZW50SW5wdXRE
aWN0YXRpb24pCiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNl
KGZhbHNlKQpAQCAtMTA1LDEyICsxMDUsMTIgQEAgVGV4dEV2ZW50OjpUZXh0RXZlbnQoRE9NV2lu
ZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb24KIAog
VGV4dEV2ZW50Ojp+VGV4dEV2ZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFRleHRFdmVudDo6aW5p
dFRleHRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQordm9pZCBU
ZXh0RXZlbnQ6OmluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUs
IHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwg
V1RGTW92ZSh2aWV3KSwgMCk7CiAKICAgICBtX2lucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5
Ym9hcmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaAppbmRleCAyOWViMjZkMGUwNzRiNTRkMzQ2MzU2
MDQyODBkMTJhNjk4OGFmOGRhLi4wYWUyYWM4NjNmYjgxYmJiMjg2Mzg1MTY1YjZiMTI1MWQyZGZi
MWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oCkBAIC0zOCwxNiArMzgsMTYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgY2xhc3MgVGV4dEV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZShET01X
aW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVu
dElucHV0S2V5Ym9hcmQpOworICAgICAgICBzdGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlKFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5
cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJkKTsKICAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZl
bnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBj
cmVhdGVGb3JQbGFpblRleHRQYXN0ZShET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJv
b2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKLSAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNy
ZWF0ZUZvckZyYWdtZW50UGFzdGUoRE9NV2luZG93KiwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwg
TWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBj
cmVhdGVGb3JEcm9wKERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYgZGF0YSk7Ci0gICAgICAgIHN0
YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEaWN0YXRpb24oRE9NV2luZG93KiwgY29uc3Qg
U3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRp
b25BbHRlcm5hdGl2ZXMpOworICAgICAgICBzdGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9y
UGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEs
IGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKKyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+
IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4mJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91
bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKKyAgICAgICAgc3RhdGljIFJl
ZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRyb3AoUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBT
dHJpbmcmIGRhdGEpOworICAgICAgICBzdGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yRGlj
dGF0aW9uKFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBW
ZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogCiAg
ICAgICAgIHZpcnR1YWwgflRleHRFdmVudCgpOwogICAgIAotICAgICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEpOwor
ICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93
UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAgICAgCiAgICAgICAgIFN0cmluZyBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKQEAgLTcxLDkgKzcxLDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIFRleHRFdmVudCgpOwogCi0gICAgICAg
IFRleHRFdmVudChET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0
VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOwotICAgICAgICBUZXh0RXZlbnQoRE9NV2lu
ZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiwgYm9v
bCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVv
dGVIYW5kbGluZyk7Ci0gICAgICAgIFRleHRFdmVudChET01XaW5kb3cqLCBjb25zdCBTdHJpbmcm
IGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVy
bmF0aXZlcyk7CisgICAgICAgIFRleHRFdmVudChSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0
IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2Fy
ZCk7CisgICAgICAgIFRleHRFdmVudChSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmlu
ZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYsIGJvb2wgc2hvdWxkU21hcnRSZXBs
YWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOworICAg
ICAgICBUZXh0RXZlbnQoUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEs
IGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZl
cyk7CiAKICAgICAgICAgYm9vbCBpc1RleHRFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0RXZlbnQuaWRsCmluZGV4IDM2NDA2NWZhODJkNDE4OTljMGM1MjMyNTBjMmYyNzk5
NzcwZDNlMGUuLmNlOGIzMGFjYjNjNzFmZmRmODI4YjIxODEwNjVhYWExZjhhMTI2MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0RXZlbnQuaWRsCkBAIC0zMiw3ICszMiw3IEBAIGludGVyZmFjZSBUZXh0RXZl
bnQgOiBVSUV2ZW50IHsKICAgICB2b2lkIGluaXRUZXh0RXZlbnQob3B0aW9uYWwgRE9NU3RyaW5n
IHR5cGVBcmcgPSAidW5kZWZpbmVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwg
Ym9vbGVhbiBjYW5CdWJibGVBcmcgPSBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0
aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlQXJnID0gZmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlld0FyZyA9IG51bGwsCisgICAgICAgICAgICAgICAg
ICAgICAgIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3QXJnID0gbnVsbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3RyaW5nIGRhdGFBcmcgPSAidW5kZWZpbmVkIik7CiAK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5pZGwKaW5kZXggODEwNTgzNTdlZDNhYTc3NzRkMjZm
YWZhZTE2MDNiMTVkZGUwZDYwYi4uNTRlOTlkYjQ4MzBmMzBkNDYyNjQyZTMzZDQzOTU2OTNiMTNm
MmIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmlkbApAQCAtNDAsNyArNDAsNyBAQAogICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgVG91Y2hMaXN0PyB0YXJnZXRUb3VjaGVzID0g
bnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFRvdWNoTGlzdD8gY2hhbmdl
ZFRvdWNoZXMgPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3Ry
aW5nIHR5cGUgPSAidW5kZWZpbmVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFs
IERPTVdpbmRvdz8gdmlldyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25h
bCBXaW5kb3dQcm94eT8gdmlldyA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICBvcHRp
b25hbCBsb25nIHNjcmVlblggPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwg
bG9uZyBzY3JlZW5ZID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGxvbmcg
Y2xpZW50WCA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAKaW5kZXggYWIyMGVlY2I5YzU4MzFkZWYw
Mjc5Y2E3OGEwZTdjYzVmYTg1NjIxNy4uMGE2ZjgxYWY1MjM3MTZmNzU4MTc4ZjBmOTUzNDRjZGM2
NTViODAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmNwcApAQCAtMzIsMTYgKzMyLDE2IEBAIFVJRXZl
bnQ6OlVJRXZlbnQoKQogewogfQogCi1VSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBET01X
aW5kb3cqIHZpZXdBcmcsIGludCBkZXRhaWxBcmcpCitVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxl
QXJnLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6
IEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnKQotICAgICwgbV92
aWV3KHZpZXdBcmcpCisgICAgLCBtX3ZpZXcoV1RGTW92ZSh2aWV3QXJnKSkKICAgICAsIG1fZGV0
YWlsKGRldGFpbEFyZykKIHsKIH0KIAotVUlFdmVudDo6VUlFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgTW9u
b3RvbmljVGltZSB0aW1lc3RhbXAsIERPTVdpbmRvdyogdmlld0FyZywgaW50IGRldGFpbEFyZykK
K1VJRXZlbnQ6OlVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2Fu
QnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVBcmcsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50
KGV2ZW50VHlwZSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCB0aW1lc3RhbXApCi0gICAg
LCBtX3ZpZXcodmlld0FyZykKKyAgICAsIG1fdmlldyhXVEZNb3ZlKHZpZXdBcmcpKQogICAgICwg
bV9kZXRhaWwoZGV0YWlsQXJnKQogewogfQpAQCAtNTUsNyArNTUsNyBAQCBVSUV2ZW50OjpVSUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBVSUV2ZW50SW5pdCYgaW5p
dGlhbGl6ZXIsCiAKIFVJRXZlbnQ6On5VSUV2ZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFVJRXZl
bnQ6OmluaXRVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZUFyZywgYm9vbCBjYW5CdWJi
bGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgRE9NV2luZG93KiB2aWV3QXJnLCBpbnQgZGV0YWls
QXJnKQordm9pZCBVSUV2ZW50Ojppbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVB
cmcsIGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVBcmcsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0
Y2hlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VUlFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaAppbmRleCBiYWE3MzFmY2Y4
MWVlYmFmMjMxNTNkYTUxYmEwYWVhZmQyNDU1ZmFjLi41MGYyZDE3NzE5OTQyZTQ3M2ZkZWM5YjFh
ODg0ODYwNTkzY2QxOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmgKQEAgLTIzLDIwICsyMywyMCBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50
LmgiCiAjaW5jbHVkZSAiVUlFdmVudEluaXQuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIG5vIG9u
ZSBpcyBkZXBlbmRpbmcgb24gaXQgYW55bW9yZS4KLXR5cGVkZWYgRE9NV2luZG93IEFic3RyYWN0
VmlldzsKK3R5cGVkZWYgV2luZG93UHJveHkgQWJzdHJhY3RWaWV3OwogCiBjbGFzcyBVSUV2ZW50
IDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCkKKyAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+
IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIHZpZXcsIGRldGFpbCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBV
SUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWls
KSk7CiAgICAgfQogICAgIHN0YXRpYyBSZWY8VUlFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKQog
ICAgIHsKQEAgLTQ4LDkgKzQ4LDkgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5VSUV2
ZW50KCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRVSUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93
KiwgaW50IGRldGFpbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0VUlFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCk7CiAKLSAgICBET01XaW5kb3cqIHZpZXco
KSBjb25zdCB7IHJldHVybiBtX3ZpZXcuZ2V0KCk7IH0KKyAgICBXaW5kb3dQcm94eSogdmlldygp
IGNvbnN0IHsgcmV0dXJuIG1fdmlldy5nZXQoKTsgfQogICAgIGludCBkZXRhaWwoKSBjb25zdCB7
IHJldHVybiBtX2RldGFpbDsgfQogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2Uo
KSBjb25zdCBvdmVycmlkZTsKQEAgLTY1LDE0ICs2NSwxNCBAQCBwdWJsaWM6CiAKIHByb3RlY3Rl
ZDoKICAgICBVSUV2ZW50KCk7Ci0gICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwp
OwotICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiwgaW50
IGRldGFpbCk7CisgICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFp
bCk7CisgICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93
UHJveHk+JiYsIGludCBkZXRhaWwpOwogICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwg
Y29uc3QgVUlFdmVudEluaXQmLCBJc1RydXN0ZWQpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNV
SUV2ZW50KCkgY29uc3QgZmluYWw7CiAKLSAgICBSZWZQdHI8RE9NV2luZG93PiBtX3ZpZXc7Cisg
ICAgUmVmUHRyPFdpbmRvd1Byb3h5PiBtX3ZpZXc7CiAgICAgaW50IG1fZGV0YWlsOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRsIGIvU291cmNlL1dlYkNv
cmUvZG9tL1VJRXZlbnQuaWRsCmluZGV4IDg3YjM5MTUyODMwMzE5N2UzNmM2NGMxZTcwOGZmYjYw
Y2JhZDk1MDMuLjZhMzVjNTdhMzg3NGJjOGVjNjNkNmQ5MjRkNDI4YjJiNTgxMDBmNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVUlFdmVudC5pZGwKQEAgLTIwLDExICsyMCwxMSBAQAogWwogICAgIENvbnN0cnVjdG9y
KERPTVN0cmluZyB0eXBlLCBvcHRpb25hbCBVSUV2ZW50SW5pdCBldmVudEluaXREaWN0KQogXSBp
bnRlcmZhY2UgVUlFdmVudCA6IEV2ZW50IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2lu
ZG93IHZpZXc7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHZpZXc7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgZGV0YWlsOwogICAgIAogICAgIC8vIEZJWE1FOiBVc2lu
ZyAidW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICB2
b2lkIGluaXRVSUV2ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9w
dGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2Vs
YWJsZSA9IGZhbHNlLCBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBs
b25nIGRldGFpbCA9IDApOworICAgIHZvaWQgaW5pdFVJRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5n
IHR5cGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGUgPSBmYWxzZSwg
b3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlID0gZmFsc2UsIG9wdGlvbmFsIFdpbmRvd1Byb3h5
PyB2aWV3ID0gbnVsbCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAwKTsKIAogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBsb25nIGxheWVyWDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsYXll
clk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5oCmluZGV4IDAzMTZiYzA2ZjU2OGU1MzkxNmRmNjk2
ZjQxNDQ1YmE5ZmMzMWZmMzYuLmUxMTI4YTc2ZGU1ODYwMTYyZmE5NzZkY2RjODI3MTcwZDhmMmYz
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5oCkBAIC0yNSwxNCArMjUsMTQgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudEluaXQu
aCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgVUlFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJ
bml0IHsKLSAgICBSZWZQdHI8RE9NV2luZG93PiB2aWV3OworICAgIFJlZlB0cjxXaW5kb3dQcm94
eT4gdmlldzsKICAgICBpbnQgZGV0YWlsIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnRJbml0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50
SW5pdC5pZGwKaW5kZXggMGQ3ZWI4ZWZjMWM1MzdhOTA1MTE3YjYxMjExMWFkMDFlYjFlMGFhMi4u
M2NjYmJlZDYwNzU1ZjZmMjE2NTJmNWJhNjFlNmYzODI0MGMxN2ZmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRJbml0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VUlFdmVudEluaXQuaWRsCkBAIC0yNCw2ICsyNCw2IEBACiAgKi8KIAogZGljdGlvbmFyeSBVSUV2
ZW50SW5pdCA6IEV2ZW50SW5pdCB7Ci0gICAgRE9NV2luZG93PyB2aWV3ID0gbnVsbDsKKyAgICBX
aW5kb3dQcm94eT8gdmlldyA9IG51bGw7CiAgICAgbG9uZyBkZXRhaWwgPSAwOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5oCmluZGV4IDBhOGU0MDMxMjQ4ZDZmNzI2
NTQ0MmU1YmY4MDAxMmJhMzBjY2NkZWIuLjA4NWEwMzE3ZWM4ZGNlM2E2MGZlMjZhZmE1YTE2MmVh
MmE5YTA1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaApAQCAt
NDAsOCArNDAsOCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgVUlFdmVudFdpdGhLZXlTdGF0
ZSgpID0gZGVmYXVsdDsKIAotICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZp
ZXcsIGludCBkZXRhaWwsIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXks
IGJvb2wgbWV0YUtleSkKLSAgICAgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2Vs
YWJsZSwgdmlldywgZGV0YWlsKQorICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwg
Ym9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQorICAgICAgICA6IFVJRXZlbnQodHlwZSwgY2Fu
QnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAgICAgICwgbV9j
dHJsS2V5KGN0cmxLZXkpCiAgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQogICAgICAgICAsIG1f
c2hpZnRLZXkoc2hpZnRLZXkpCkBAIC00OSw5ICs0OSw5IEBAIHByb3RlY3RlZDoKICAgICB7CiAg
ICAgfQogCi0gICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1w
LCBET01XaW5kb3cqIHZpZXcsCisgICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1Rp
bWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICAgICAgaW50IGRl
dGFpbCwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRh
S2V5LCBib29sIGFsdEdyYXBoS2V5LCBib29sIGNhcHNMb2NrS2V5KQotICAgICAgICAgICAgOiBV
SUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2aWV3LCBkZXRh
aWwpCisgICAgICAgICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0
aW1lc3RhbXAsIFdURk1vdmUodmlldyksIGRldGFpbCkKICAgICAgICAgICAgICwgbV9jdHJsS2V5
KGN0cmxLZXkpCiAgICAgICAgICAgICAsIG1fYWx0S2V5KGFsdEtleSkKICAgICAgICAgICAgICwg
bV9zaGlmdEtleShzaGlmdEtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVl
bEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAppbmRleCBkMmI4
ZmI3MmQ5MTk4ZTE0YmY3NThjYTNhZmJjMWVjMjQ3ZjcxY2JkLi41MzdjYjE5M2M4MTNmNTI3YWM1
MzNjOTMwODkwODdiZGIzNjhiZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hl
ZWxFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCkBAIC00
Nyw4ICs0Nyw4IEBAIGlubGluZSBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsCiB7CiB9CiAKLWlubGluZSBXaGVl
bEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIERPTVdp
bmRvdyogdmlldykKLSAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRy
dWUsIHRydWUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2
aWV3LCAwLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCitpbmxpbmUg
V2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKKyAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1lcygp
LndoZWVsRXZlbnQsIHRydWUsIHRydWUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9u
b3RvbmljVGltZSgpLCBXVEZNb3ZlKHZpZXcpLCAwLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBl
dmVudC5wb3NpdGlvbigpCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgLCB7IH0K
ICNlbmRpZgpAQCAtNjEsOSArNjEsOSBAQCBpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxFdmVudChj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHZpZXcpCiB7CiB9CiAK
LVJlZjxXaGVlbEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiBldmVudCwgRE9NV2luZG93KiB2aWV3KQorUmVmPFdoZWVsRXZlbnQ+IFdoZWVsRXZlbnQ6
OmNyZWF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXaGVlbEV2ZW50KGV2ZW50
LCB2aWV3KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2hlZWxFdmVudChldmVudCwgV1RG
TW92ZSh2aWV3KSkpOwogfQogCiBSZWY8V2hlZWxFdmVudD4gV2hlZWxFdmVudDo6Y3JlYXRlRm9y
QmluZGluZ3MoKQpAQCAtNzYsMTIgKzc2LDEyIEBAIFJlZjxXaGVlbEV2ZW50PiBXaGVlbEV2ZW50
OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2hlZWxFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNU
cnVzdGVkKSk7CiB9CiAKLXZvaWQgV2hlZWxFdmVudDo6aW5pdFdlYktpdFdoZWVsRXZlbnQoaW50
IHJhd0RlbHRhWCwgaW50IHJhd0RlbHRhWSwgRE9NV2luZG93KiB2aWV3LCBpbnQgc2NyZWVuWCwg
aW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0
S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCit2b2lkIFdoZWVsRXZlbnQ6OmluaXRX
ZWJLaXRXaGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIFJlZlB0cjxXaW5k
b3dQcm94eT4mJiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50
IHBhZ2VZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1l
dGFLZXkpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKLSAgICBpbml0TW91c2VFdmVudChldmVudE5hbWVzKCkud2hlZWxFdmVudCwgdHJ1ZSwg
dHJ1ZSwgdmlldywgMCwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBh
bHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCAwLCBudWxscHRyKTsKKyAgICBpbml0TW91c2VFdmVu
dChldmVudE5hbWVzKCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCwg
c2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCAwLCBudWxscHRyKTsKIAogICAgIC8vIE5vcm1hbGl6ZSB0byAxMjAgbXVsdGlw
bGUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBJRS4KICAgICBtX3doZWVsRGVsdGEgPSB7IHJhd0Rl
bHRhWCAqIFRpY2tNdWx0aXBsaWVyLCByYXdEZWx0YVkgKiBUaWNrTXVsdGlwbGllciB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9XaGVlbEV2ZW50LmgKaW5kZXggNGQzNGIzMGQ2ZGVkNWVmMjgxNWE4MTM3ZTRjMjk3ZTY0
MWFkZTZkYS4uMTBiNjJlMDVjNzAxNTYwNzZmZmU1Y2YxMjczOTdlYzEzMjNkZDJkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vV2hlZWxFdmVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAgICAgRE9N
X0RFTFRBX1BBR0UKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgc3RhdGljIFJlZjxX
aGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPFdpbmRv
d1Byb3h5PiYmKTsKICAgICBzdGF0aWMgUmVmPFdoZWVsRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdz
KCk7CiAKICAgICBzdHJ1Y3QgSW5pdCA6IE1vdXNlRXZlbnRJbml0IHsKQEAgLTUzLDcgKzUzLDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRXZWJLaXRXaGVlbEV2ZW50KGludCByYXdE
ZWx0YVgsIGludCByYXdEZWx0YVksIERPTVdpbmRvdyosIGludCBzY3JlZW5YLCBpbnQgc2NyZWVu
WSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0V2Vi
S2l0V2hlZWxFdmVudChpbnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBSZWZQdHI8V2luZG93
UHJveHk+JiYsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVks
IGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7
CiAKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtV2hlZWxFdmVudD4mIHVuZGVybHlp
bmdQbGF0Zm9ybUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVu
dDsgfQogCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2hlZWxFdmVu
dCgpOwogICAgIFdoZWVsRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElz
VHJ1c3RlZCk7Ci0gICAgV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBET01X
aW5kb3cqKTsKKyAgICBXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFJlZlB0
cjxXaW5kb3dQcm94eT4mJik7CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgp
IGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVu
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwKaW5kZXggOTNjNTNhNGJm
YjJkYWY0YmQ0NDI3Mzg2NmE5MmNlZDRhMWMxYzM4Ni4uYjI4MWRhMWM2NjA0NGE4YTkzZDYwZDkw
ZWRkZjUxZDE0YzZjOTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZl
bnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmlkbApAQCAtMzksNyAr
MzksNyBAQAogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0RGlyZWN0aW9u
SW52ZXJ0ZWRGcm9tRGV2aWNlOwogCi0gICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRp
b25hbCBsb25nIHdoZWVsRGVsdGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAs
IG9wdGlvbmFsIERPTVdpbmRvdz8gdmlldyA9IG51bGwsCisgICAgdm9pZCBpbml0V2ViS2l0V2hl
ZWxFdmVudChvcHRpb25hbCBsb25nIHdoZWVsRGVsdGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVl
bERlbHRhWSA9IDAsIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwKICAgICAgICAg
b3B0aW9uYWwgbG9uZyBzY3JlZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwgb3B0
aW9uYWwgbG9uZyBjbGllbnRYID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRZID0gMCwKICAgICAg
ICAgb3B0aW9uYWwgYm9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0
S2V5ID0gZmFsc2UsCiAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwg
b3B0aW9uYWwgYm9vbGVhbiBtZXRhS2V5ID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZDE0NzI0Mjc3
MjM3NDY4ZDRmNjFmZmUzM2M3NWZlNDZhODE5MjNkYy4uZDczYTcxYjBlMTVkZDgxOWYxNzBlZmE1
ZjU2MmVmNzVjOTQyYjk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Fs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCkBAIC02MzIsNyArNjMyLDcgQEAgYm9vbCBBbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyOjppbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBWZWMKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkp
CiAgICAgICAgIHZpZXctPmRpc2FibGVMYXllckZsdXNoVGhyb3R0bGluZ1RlbXBvcmFyaWx5Rm9y
SW50ZXJhY3Rpb24oKTsKIAotICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50Ojpj
cmVhdGVGb3JEaWN0YXRpb24obV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCwg
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICBSZWY8VGV4dEV2ZW50PiBldmVudCA9IFRleHRF
dmVudDo6Y3JlYXRlRm9yRGljdGF0aW9uKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXco
KSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICBldmVudC0+c2V0VW5kZXJseWlu
Z0V2ZW50KHRyaWdnZXJpbmdFdmVudCk7CiAKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZl
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGNiOGI2YjhiYmFjODViYzBlMzJk
ZWQyZWYzMzljMjQxMDI5MGQzMTkuLjRlMzY4YmZkODAzYzUzNjg1MmVkY2U2MDEwNDY5NDQ4NjMx
NDkxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTU2OSw3ICs1NjksNyBAQCB2
b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBi
b29sIHNtYXJ0UmVwbGFjZSkKICAgICBFbGVtZW50KiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJnZXRG
cm9tU2VsZWN0aW9uKCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKLSAgICB0
YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShk
b2N1bWVudCgpLmRvbVdpbmRvdygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSk7CisgICAg
dGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUo
ZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSk7CiB9
CiAKIHZvaWQgRWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYg
cGFzdGluZ0ZyYWdtZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0eWxlLCBNYWls
QmxvY2txdW90ZUhhbmRsaW5nIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUpCkBAIC01NzcsNyArNTc3
LDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlQXNGcmFnbWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4m
JiBwYXN0aW5nRnJhZ21lbnQsIGJvb2wgc21hcnQKICAgICBFbGVtZW50KiB0YXJnZXQgPSBmaW5k
RXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJl
dHVybjsKLSAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JGcmFn
bWVudFBhc3RlKGRvY3VtZW50KCkuZG9tV2luZG93KCksIFdURk1vdmUocGFzdGluZ0ZyYWdtZW50
KSwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlLCByZXNwZWN0c01haWxCbG9ja3F1b3RlKSk7Cisg
ICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0
ZShkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIFdURk1vdmUocGFzdGluZ0ZyYWdtZW50KSwgc21h
cnRSZXBsYWNlLCBtYXRjaFN0eWxlLCByZXNwZWN0c01haWxCbG9ja3F1b3RlKSk7CiB9CiAKIHZv
aWQgRWRpdG9yOjpwYXN0ZUFzUGxhaW5UZXh0QnlwYXNzaW5nREhUTUwoKQpAQCAtMTg0OCw3ICsx
ODQ4LDcgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwg
U2V0Q29tcG9zaXRpb25Nb2RlIG1vZGUpCiAgICAgaW5zZXJ0VGV4dEZvckNvbmZpcm1lZENvbXBv
c2l0aW9uKHRleHQpOwogCiAgICAgaWYgKGF1dG8qIHRhcmdldCA9IGRvY3VtZW50KCkuZm9jdXNl
ZEVsZW1lbnQoKSkKLSAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQoKS5k
b21XaW5kb3coKSwgdGV4dCkpOworICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9z
aXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50LCBkb2N1
bWVudCgpLmRlZmF1bHRWaWV3KCksIHRleHQpKTsKIAogICAgIGlmIChtb2RlID09IENhbmNlbENv
bXBvc2l0aW9uKSB7CiAgICAgICAgIC8vIEFuIG9wZW4gdHlwaW5nIGNvbW1hbmQgdGhhdCBkaXNh
Z3JlZXMgYWJvdXQgY3VycmVudCBzZWxlY3Rpb24gd291bGQgY2F1c2UgaXNzdWVzIHdpdGggdHlw
aW5nIGxhdGVyIG9uLgpAQCAtMTkwOCwxMSArMTkwOCwxMSBAQCB2b2lkIEVkaXRvcjo6c2V0Q29t
cG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRl
cmxpbgogICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIHNlbmQgYSBjb21wb3NpdGlvbnN0YXJ0IGV2
ZW50IG9ubHkgd2hlbiB0aGUgZ2l2ZW4gdGV4dCBpcyBub3QgZW1wdHkgYmVjYXVzZSB0aGlzCiAg
ICAgICAgICAgICAvLyBmdW5jdGlvbiBkb2Vzbid0IGNyZWF0ZSBhIGNvbXBvc2l0aW9uIG5vZGUg
d2hlbiB0aGUgdGV4dCBpcyBlbXB0eS4KICAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0RXZlbnQsIGRvY3VtZW50KCku
ZG9tV2luZG93KCksIG9yaWdpbmFsVGV4dCkpOwotICAgICAgICAgICAgICAgIGV2ZW50ID0gQ29t
cG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50
LCBkb2N1bWVudCgpLmRvbVdpbmRvdygpLCB0ZXh0KTsKKyAgICAgICAgICAgICAgICB0YXJnZXQt
PmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21w
b3NpdGlvbnN0YXJ0RXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgb3JpZ2luYWxUZXh0
KSk7CisgICAgICAgICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmNvbXBvc2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXco
KSwgdGV4dCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoIXRleHQuaXNFbXB0
eSgpKQotICAgICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmNvbXBvc2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZG9tV2luZG93KCksIHRl
eHQpOworICAgICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmNvbXBvc2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwg
dGV4dCk7CiAKICAgICAgICAgaWYgKGV2ZW50KQogICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRj
aEV2ZW50KCpldmVudCk7CkBAIC0xOTIzLDcgKzE5MjMsNyBAQCB2b2lkIEVkaXRvcjo6c2V0Q29t
cG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRl
cmxpbgogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkgewogICAgICAgICBUeXBpbmdDb21tYW5kOjpk
ZWxldGVTZWxlY3Rpb24oZG9jdW1lbnQoKSwgVHlwaW5nQ29tbWFuZDo6UHJldmVudFNwZWxsQ2hl
Y2tpbmcsIFR5cGluZ0NvbW1hbmQ6OlRleHRDb21wb3NpdGlvblBlbmRpbmcpOwogICAgICAgICBp
ZiAodGFyZ2V0KQotICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9u
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQo
KS5kb21XaW5kb3coKSwgdGV4dCkpOworICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50
KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVu
dCwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCB0ZXh0KSk7CiAgICAgfQogCiAgICAgbV9jb21w
b3NpdGlvbk5vZGUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCmlu
ZGV4IGEzZDdkOTc3MGNlYmQwNjI4Y2E3YmVjMjRjZmE2NzVkM2I5N2JiNTQuLjlkNTgxY2VkZmE4
NDFlMGFkZjFhYWM0MzI1OTFjOGI2ZjJmNzY1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1
bWVudC5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBSZWY8RG9jdW1lbnRQYXJzZXI+IEhUTUxEb2N1
bWVudDo6Y3JlYXRlUGFyc2VyKCkKIH0KIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2UvZG9tLmh0bWwjZG9tLWRvY3VtZW50LW5hbWVkaXRlbQotc3RkOjpvcHRpb25h
bDxWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1M
Q29sbGVjdGlvbj4+PiBIVE1MRG9jdW1lbnQ6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpCitzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRy
PEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gSFRNTERvY3VtZW50OjpuYW1lZEl0
ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewogICAgIGlmIChuYW1lLmlzTnVsbCgpIHx8
ICFoYXNEb2N1bWVudE5hbWVkSXRlbSgqbmFtZS5pbXBsKCkpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtMTIyLDE2ICsxMjIsMTYgQEAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJl
ZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4K
ICAgICBpZiAoVU5MSUtFTFkoZG9jdW1lbnROYW1lZEl0ZW1Db250YWluc011bHRpcGxlRWxlbWVu
dHMoKm5hbWUuaW1wbCgpKSkpIHsKICAgICAgICAgYXV0byBjb2xsZWN0aW9uID0gZG9jdW1lbnRO
YW1lZEl0ZW1zKG5hbWUpOwogICAgICAgICBBU1NFUlQoY29sbGVjdGlvbi0+bGVuZ3RoKCkgPiAx
KTsKLSAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVt
ZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHsg
V1RGTW92ZShjb2xsZWN0aW9uKSB9IH07CisgICAgICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxX
aW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+IHsgV1RGTW92ZShjb2xsZWN0aW9uKSB9IH07CiAgICAgfQog
CiAgICAgYXV0byYgZWxlbWVudCA9ICpkb2N1bWVudE5hbWVkSXRlbSgqbmFtZS5pbXBsKCkpOwog
ICAgIGlmIChVTkxJS0VMWShpczxIVE1MSUZyYW1lRWxlbWVudD4oZWxlbWVudCkpKSB7CiAgICAg
ICAgIGlmIChhdXRvIGRvbVdpbmRvdyA9IG1ha2VSZWZQdHIoZG93bmNhc3Q8SFRNTElGcmFtZUVs
ZW1lbnQ+KGVsZW1lbnQpLmNvbnRlbnRXaW5kb3coKSkpCi0gICAgICAgICAgICByZXR1cm4gVmFy
aWFudDxSZWZQdHI8RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxl
Y3Rpb24+PiB7IFdURk1vdmUoZG9tV2luZG93KSB9OworICAgICAgICAgICAgcmV0dXJuIFZhcmlh
bnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxl
Y3Rpb24+PiB7IFdURk1vdmUoZG9tV2luZG93KSB9OwogICAgIH0KIAotICAgIHJldHVybiBWYXJp
YW50PFJlZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVj
dGlvbj4+IHsgUmVmUHRyPEVsZW1lbnQ+IHsgJmVsZW1lbnQgfSB9OworICAgIHJldHVybiBWYXJp
YW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xs
ZWN0aW9uPj4geyBSZWZQdHI8RWxlbWVudD4geyAmZWxlbWVudCB9IH07CiB9CiAKIFZlY3RvcjxB
dG9taWNTdHJpbmc+IEhUTUxEb2N1bWVudDo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaAppbmRleCBhMzYzOTc0MDZkMzQ5ZjU3NmY0ODlk
M2ExZjYwMGFkYTFiZGRjZmUxLi4wYjNkMzQxNGE0YmVmYTAzMzVjNGUyMjlhNTk1ODVlYjA1ZWJk
NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGludCB3aWR0aCgpOwogICAgIFdFQkNPUkVfRVhQT1JU
IGludCBoZWlnaHQoKTsKICAgICAKLSAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPERP
TVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IG5hbWVk
SXRlbShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVm
UHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+
Pj4gbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIFZlY3RvcjxBdG9taWNTdHJp
bmc+IHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdDsKIAogICAgIEVsZW1lbnQqIGRvY3Vt
ZW50TmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIG5hbWUpIGNvbnN0IHsgcmV0dXJu
IG1fZG9jdW1lbnROYW1lZEl0ZW0uZ2V0RWxlbWVudEJ5RG9jdW1lbnROYW1lZEl0ZW0obmFtZSwg
KnRoaXMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwKaW5kZXggMTI3ZjI2NDVl
MDMyMmRjNzk4ODEyODA0ZmY1ZDc5NWRhYzhhNTgwZi4uYTk5OWIwM2Y2MjI4YjI1ZWJkMWI3Yjk0
Mzg2Yjk5ZTM5NWI4NWY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9j
dW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmlkbApAQCAt
MjMsNSArMjMsNSBAQAogICAgIE5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cywKICAg
ICBPdmVycmlkZUJ1aWx0aW5zLAogXSBpbnRlcmZhY2UgSFRNTERvY3VtZW50IDogRG9jdW1lbnQg
eyAgICAKLSAgICBnZXR0ZXIgKERPTVdpbmRvdyBvciBFbGVtZW50IG9yIEhUTUxDb2xsZWN0aW9u
KSAoRE9NU3RyaW5nIG5hbWUpOworICAgIGdldHRlciAoV2luZG93UHJveHkgb3IgRWxlbWVudCBv
ciBIVE1MQ29sbGVjdGlvbikgKERPTVN0cmluZyBuYW1lKTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVFbGVtZW50LmlkbAppbmRleCBjZDYzYTIxMmFkNDMzMTRjNWJlMjMwNGRkZTcw
MDk3YzdiZjg4MzUzLi5lZDdjMGI2ZTI3NzI5OWI2NWNhMjE4ZjIxZTE4MjYxZTUxM2RmYzBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwKQEAgLTI2LDcgKzI2LDcg
QEAgaW50ZXJmYWNlIEhUTUxGcmFtZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW1JlZmxl
Y3QsIFVSTF0gYXR0cmlidXRlIFVTVlN0cmluZyBsb25nRGVzYzsKICAgICBbUmVmbGVjdF0gYXR0
cmlidXRlIGJvb2xlYW4gbm9SZXNpemU7CiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSByZWFk
b25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgY29udGVudERvY3VtZW50OwotICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01XaW5kb3cgY29udGVudFdpbmRvdzsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
V2luZG93UHJveHkgY29udGVudFdpbmRvdzsKIAogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgW1Ry
ZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luSGVpZ2h0OwogICAgIFtSZWZs
ZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2lu
V2lkdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAK
aW5kZXggNTg4NzM5ODQ3Y2JiMDhjMzcxN2MxM2JlYmQzYWE5MWQ5OWJiNGNjNS4uYjliZWYxNzYz
ZTI2MWQ3Yzk4MmUxZjA1NTUwOWMxNjlkZjg0MDYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcApAQCAtOTksOSArOTksOSBAQCBEb2N1bWVudCog
SFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50RG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVy
biBtX2NvbnRlbnRGcmFtZSA/IG1fY29udGVudEZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsK
IH0KIAotRE9NV2luZG93KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRXaW5kb3coKSBj
b25zdAorV2luZG93UHJveHkqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVudFdpbmRvdygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8gbV9jb250ZW50RnJhbWUtPmRv
Y3VtZW50KCktPmRvbVdpbmRvdygpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZW50RnJh
bWUgPyAmbV9jb250ZW50RnJhbWUtPndpbmRvd1Byb3h5KCkgOiBudWxscHRyOwogfQogCiB2b2lk
IEhUTUxGcmFtZU93bmVyRWxlbWVudDo6c2V0U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFn
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCmluZGV4IDg2
NWVkZGI5MWY1N2UzNDViNGI2ODdmNzYwZTgzMzI1NDI1YzRmYzEuLjgwZjE4MjAwZGYwZDRhNzRk
N2YwZTNkYmNhMTUyNDU2MDIyNGFiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lT3duZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVPd25lckVsZW1lbnQuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
SFRNTEZyYW1lT3duZXJFbGVtZW50KCk7CiAKICAgICBGcmFtZSogY29udGVudEZyYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9jb250ZW50RnJhbWU7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBET01XaW5k
b3cqIGNvbnRlbnRXaW5kb3coKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXaW5kb3dQcm94
eSogY29udGVudFdpbmRvdygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KiBj
b250ZW50RG9jdW1lbnQoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Q29udGVudEZyYW1lKEZyYW1l
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAppbmRleCAy
ODU2NDI0OTUwYTM0OWM5YjcyOTUwM2M1ZjRmMTIxYThlYzRiMmI3Li41ZDIzN2Q0ODI2YzcyZjg4
N2I3ZGIyZmI1MWQ2ZTk3ODY1Njc5YTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lU2V0RWxlbWVudC5jcHAKQEAgLTIzMSwxNSArMjMxLDEzIEBAIHZvaWQgSFRNTEZyYW1lU2V0
RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29u
dGFpbmVyCiAgICAgfQogfQogCi1ET01XaW5kb3cqIEhUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVk
SXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitXaW5kb3dQcm94eSogSFRNTEZyYW1lU2V0
RWxlbWVudDo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKICAgICBhdXRv
IGZyYW1lRWxlbWVudCA9IG1ha2VSZWZQdHIoY2hpbGRyZW4oKS0+bmFtZWRJdGVtKG5hbWUpKTsK
ICAgICBpZiAoIWlzPEhUTUxGcmFtZUVsZW1lbnQ+KGZyYW1lRWxlbWVudCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgaWYgKGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGRvd25j
YXN0PEhUTUxGcmFtZUVsZW1lbnQ+KGZyYW1lRWxlbWVudC5nZXQoKSktPmNvbnRlbnREb2N1bWVu
dCgpKSkKLSAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5kb21XaW5kb3coKTsKLSAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEZyYW1lRWxlbWVudD4oKmZyYW1lRWxl
bWVudCkuY29udGVudFdpbmRvdygpOwogfQogCiBWZWN0b3I8QXRvbWljU3RyaW5nPiBIVE1MRnJh
bWVTZXRFbGVtZW50OjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKaW5kZXggZDFmMzc5YjczNWNiNzdmNWU1YWQy
ZGVjNGViZjE0NDBjN2VlYTMzMi4uYzNjNjhiNTdiZjk3N2U3YWNlYTkyZmYzYWVjMDk2NDk2Zjcx
MjJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKQEAgLTQ4
LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8SFRNTEZyYW1lU2V0RWxlbWVu
dD4gZmluZENvbnRhaW5pbmcoRWxlbWVudCogZGVzY2VuZGFudCk7CiAgICAgCiAgICAgVmVjdG9y
PEF0b21pY1N0cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0OwotICAgIERPTVdp
bmRvdyogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFdpbmRvd1Byb3h5KiBu
YW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJik7CiAKIHByaXZhdGU6CiAgICAgSFRNTEZyYW1l
U2V0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsCmluZGV4IDMyNTBiOTQ5MGVkYjhiYjE4
ZjQ3Yjk4MmNiYjdmNmI0NDA4ZDMxMjUuLjY5NDIxNzNlNzQ0MDkyNDljMjA1YjBiM2M1MjYyOWUy
YWNjNDY5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxl
bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50Lmlk
bApAQCAtMzMsNyArMzMsNyBAQCBpbnRlcmZhY2UgSFRNTEZyYW1lU2V0RWxlbWVudCA6IEhUTUxF
bGVtZW50IHsKIAogICAgIC8vIE5vbi1zdGFuZGFyZCBuYW1lZCBnZXR0ZXIKICAgICAvLyBGSVhN
RTogVGhpcyBpcyBub3QgaW4gdGhlIHN0YW5kYXJkLCBjYW4gd2UgcmVtb3ZlIHRoaXM/Ci0gICAg
Z2V0dGVyIERPTVdpbmRvdyAoRE9NU3RyaW5nIG5hbWUpOworICAgIGdldHRlciBXaW5kb3dQcm94
eSAoRE9NU3RyaW5nIG5hbWUpOwogfTsKIAogSFRNTEZyYW1lU2V0RWxlbWVudCBpbXBsZW1lbnRz
IFdpbmRvd0V2ZW50SGFuZGxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJRnJhbWVFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1l
bnQuaWRsCmluZGV4IDNlM2JkY2MxMTA0MTg4YTc4ZGRiYThlMjc2NDM0ZTRlNjZlNjkwYmMuLmMx
NjM5MjJlZTQyMGU3NWMwNGRkMTI4MTk0YjUzNWYzODNjOTVkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCkBAIC0zOCw3ICszOCw3IEBAIGludGVyZmFjZSBI
VE1MSUZyYW1lRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9y
Tm9kZV0gcmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50IGNvbnRlbnREb2N1bWVudDsKIAotICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01XaW5kb3cgY29udGVudFdpbmRvdzsKKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgV2luZG93UHJveHkgY29udGVudFdpbmRvdzsKIAogICAgIFtDaGVja1NlY3Vy
aXR5Rm9yTm9kZSwgTWF5VGhyb3dFeGNlcHRpb25dIERvY3VtZW50IGdldFNWR0RvY3VtZW50KCk7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggZDE1MTI3M2EzNTk0
OTNlMWI2YzUzOGYwZjNkOTMxNjg4MDM2NGExNy4uODVjMTNmZjdmMDIwYWE5YWMyYzZlNGRmMTcy
NDZkNDQxMTljNWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDaHJvbWUu
aCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNp
bmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggYjAy
M2E0ZTJlZjI4NDMwMzdiZTVkMDhiZjJhNGZlMzgzMWQ1ZmQ4Zi4uM2UyYTkxNjZmMmM4MDFhZTU1
NjYzYmNjYjFiNDkwYWUwOWZhZjFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAt
MTQ4LDcgKzE0OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIGNsYXNzIFBvc3RN
ZXNzYWdlVGltZXIgOiBwdWJsaWMgVGltZXJCYXNlIHsKIHB1YmxpYzoKLSAgICBQb3N0TWVzc2Fn
ZVRpbWVyKERPTVdpbmRvdyYgd2luZG93LCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBET01XaW5kb3cmIHNvdXJjZSwgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiYmIHRhcmdldE9yaWdpbiwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4m
JiBzdGFja1RyYWNlKQorICAgIFBvc3RNZXNzYWdlVGltZXIoRE9NV2luZG93JiB3aW5kb3csIE1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmln
aW4sIFJlZlB0cjxXaW5kb3dQcm94eT4mJiBzb3VyY2UsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4m
JiB0YXJnZXRPcmlnaW4sIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3RhY2tUcmFjZSkKICAg
ICAgICAgOiBtX3dpbmRvdyh3aW5kb3cpCiAgICAgICAgICwgbV9tZXNzYWdlKFdURk1vdmUobWVz
c2FnZSkpCiAgICAgICAgICwgbV9vcmlnaW4oc291cmNlT3JpZ2luKQpAQCAtMTYxLDcgKzE2MSw3
IEBAIHB1YmxpYzoKIAogICAgIFJlZjxNZXNzYWdlRXZlbnQ+IGV2ZW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpCiAgICAgewotICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50Ojpj
cmVhdGUoTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoY29udGV4dCwgV1RGTW92ZShtX21lc3Nh
Z2UudHJhbnNmZXJyZWRQb3J0cykpLCBtX21lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgp
LCBtX29yaWdpbiwgeyB9LCBNZXNzYWdlRXZlbnRTb3VyY2UoUmVmUHRyPERPTVdpbmRvdz4oV1RG
TW92ZShtX3NvdXJjZSkpKSk7CisgICAgICAgIHJldHVybiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShN
ZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhjb250ZXh0LCBXVEZNb3ZlKG1fbWVzc2FnZS50cmFu
c2ZlcnJlZFBvcnRzKSksIG1fbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCksIG1fb3Jp
Z2luLCB7IH0sIG1fc291cmNlID8gc3RkOjptYWtlX29wdGlvbmFsKE1lc3NhZ2VFdmVudFNvdXJj
ZShXVEZNb3ZlKG1fc291cmNlKSkpIDogc3RkOjpudWxsb3B0KTsKICAgICB9CiAKICAgICBTZWN1
cml0eU9yaWdpbiogdGFyZ2V0T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRPcmlnaW4u
Z2V0KCk7IH0KQEAgLTE4MCw3ICsxODAsNyBAQCBwcml2YXRlOgogICAgIFJlZjxET01XaW5kb3c+
IG1fd2luZG93OwogICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1fbWVzc2FnZTsKICAgICBT
dHJpbmcgbV9vcmlnaW47Ci0gICAgUmVmPERPTVdpbmRvdz4gbV9zb3VyY2U7CisgICAgUmVmUHRy
PFdpbmRvd1Byb3h5PiBtX3NvdXJjZTsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fdGFy
Z2V0T3JpZ2luOwogICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IG1fc3RhY2tUcmFjZTsKICAg
ICBSZWZQdHI8VXNlckdlc3R1cmVUb2tlbj4gbV91c2VyR2VzdHVyZVRvRm9yd2FyZDsKQEAgLTk2
MCw3ICs5NjAsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgRE9NV2luZG93JiBpbmN1bQogICAgIE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzIG1lc3NhZ2UgeyBtZXNzYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZGlz
ZW50YW5nbGVkUG9ydHMucmVsZWFzZVJldHVyblZhbHVlKCkgfTsKIAogICAgIC8vIFNjaGVkdWxl
IHRoZSBtZXNzYWdlLgotICAgIGF1dG8qIHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGltZXIoKnRo
aXMsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgaW5jdW1iZW50V2luZG93LCBXVEZN
b3ZlKHRhcmdldCksIFdURk1vdmUoc3RhY2tUcmFjZSkpOworICAgIFJlZlB0cjxXaW5kb3dQcm94
eT4gaW5jdW1iZW50V2luZG93UHJveHkgPSBpbmN1bWJlbnRXaW5kb3cuZnJhbWUoKSA/ICZpbmN1
bWJlbnRXaW5kb3cuZnJhbWUoKS0+d2luZG93UHJveHkoKSA6IG51bGxwdHI7CisgICAgYXV0byog
dGltZXIgPSBuZXcgUG9zdE1lc3NhZ2VUaW1lcigqdGhpcywgV1RGTW92ZShtZXNzYWdlKSwgc291
cmNlT3JpZ2luLCBXVEZNb3ZlKGluY3VtYmVudFdpbmRvd1Byb3h5KSwgV1RGTW92ZSh0YXJnZXQp
LCBXVEZNb3ZlKHN0YWNrVHJhY2UpKTsKICAgICB0aW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CiAK
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBvc3RNZXNzYWdlKCptX2ZyYW1lLCAq
dGltZXIsIHN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXgg
OTE3NGFmZDUzMjE2YzExMmM0YjVlMGQ1NzU4N2M4NmQxZmM5YzVhMS4uN2M0OWEyMTdmMDJhNjg1
NTQ3MGRiMzE3N2I4ZjU5MzU0MzhmNTY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKQEAgLTUwOCw3ICs1MDgsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpkaXNwYXRj
aFRleHRJbnB1dEV2ZW50Rm9yKEZyYW1lKiBpbm5lckZyYW1lLCBjb25zdCBEcmFnRGF0YQogICAg
IFN0cmluZyB0ZXh0ID0gbV9wYWdlLmRyYWdDYXJldENvbnRyb2xsZXIoKS5pc0NvbnRlbnRSaWNo
bHlFZGl0YWJsZSgpID8gZW1wdHlTdHJpbmcoKSA6IGRyYWdEYXRhLmFzUGxhaW5UZXh0KCk7CiAg
ICAgRWxlbWVudCogdGFyZ2V0ID0gaW5uZXJGcmFtZS0+ZWRpdG9yKCkuZmluZEV2ZW50VGFyZ2V0
RnJvbShtX3BhZ2UuZHJhZ0NhcmV0Q29udHJvbGxlcigpLmNhcmV0UG9zaXRpb24oKSk7CiAgICAg
Ly8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyB0YXJnZXQgaXMgbm90IG51bGw/Ci0gICAgYXV0byBl
dmVudCA9IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgpLT5k
b21XaW5kb3coKSwgdGV4dCk7CisgICAgYXV0byBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlRm9y
RHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCB0ZXh0KTsKICAgICB0
YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogICAgIHJldHVybiAhZXZlbnQtPmRlZmF1bHRQ
cmV2ZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA4N2Qx
Mjc3NGNjNmYzNGFlMDcwMTAwZDE5ZWViNzY1NjVmMjUwNzlkLi43ZDJjOTNhM2MwZjk4MWY4MDU5
ZWE4YjdmMzg2YmZhNmZlMGMwMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CkBAIC0zODAyLDcgKzM4MDIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVGV4dElucHV0
RXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFdmVudCogdW5kZXJseWluZ0V2ZQogICAgIGlmIChG
cmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkKICAgICAgICAgdmlldy0+ZGlzYWJsZUxh
eWVyRmx1c2hUaHJvdHRsaW5nVGVtcG9yYXJpbHlGb3JJbnRlcmFjdGlvbigpOwogCi0gICAgUmVm
PFRleHRFdmVudD4gZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCkt
PmRvbVdpbmRvdygpLCB0ZXh0LCBpbnB1dFR5cGUpOworICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50
ID0gVGV4dEV2ZW50OjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCB0
ZXh0LCBpbnB1dFR5cGUpOwogICAgIGV2ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQodW5kZXJseWlu
Z0V2ZW50KTsKIAogICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCmluZGV4IGE4NDI2NWFhNzkzNmMzNDg5MmNjOWUwNzFhOTkwYjlhZDFlNTExNjguLjgy
ODRhNjUzMWRhM2FhMDFkMGZmYmNlZGIwODU4MTE3MjBiNjZiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCkBAIC0yMTIsNiArMjEyLDcgQEAgUmVmPEZyYW1lPiBGcmFtZTo6Y3JlYXRlKFBhZ2UqIHBh
Z2UsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFtZUwKIAogRnJhbWU6
On5GcmFtZSgpCiB7CisgICAgd2luZG93UHJveHkoKS5kZXN0cm95QWxsSlNXaW5kb3dQcm94aWVz
KCk7CiAgICAgc2V0VmlldyhudWxscHRyKTsKICAgICBsb2FkZXIoKS5jYW5jZWxBbmRDbGVhcigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RW
aWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlldy5tbQpp
bmRleCAxYTRjMjliMWIwZGRhYzgyMjU3YmQ2ZjRiYTZkYzQ0ZmYzOTEyZTg5Li4xNjllNGFlNWZl
Nzc1Yjk4ZDI0Y2Q0ODA2YTVhOWM1MDc4ZTEwZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXcubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9X
aW5kb3dQcm94eS5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpG
cmFtZSo+KF9pbnRlcm5hbCkKIApAQCAtMTAwLDMgKzEwMSwxOSBAQCBET01BYnN0cmFjdFZpZXcg
KmtpdChXZWJDb3JlOjpBYnN0cmFjdERPTVdpbmRvdyogdmFsdWUpCiAKICAgICByZXR1cm4ga2l0
KGRvd25jYXN0PFdlYkNvcmU6OkRPTVdpbmRvdz4odmFsdWUpKTsKIH0KKworRE9NQWJzdHJhY3RW
aWV3ICpraXQoV2ViQ29yZTo6V2luZG93UHJveHkqIHdpbmRvd1Byb3h5KQoreworICAgIGlmICgh
d2luZG93UHJveHkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4ga2l0KHdpbmRv
d1Byb3h5LT53aW5kb3coKSk7Cit9CisKK1dlYkNvcmU6OldpbmRvd1Byb3h5KiB0b1dpbmRvd1By
b3h5KERPTUFic3RyYWN0VmlldyAqdmlldykKK3sKKyAgICBhdXRvKiB3aW5kb3cgPSBjb3JlKHZp
ZXcpOworICAgIGlmICghd2luZG93IHx8ICF3aW5kb3ctPmZyYW1lKCkpCisgICAgICAgIHJldHVy
biBuaWw7CisgICAgcmV0dXJuICZ3aW5kb3ctPmZyYW1lKCktPndpbmRvd1Byb3h5KCk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3SW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXdJbnRl
cm5hbC5oCmluZGV4IGM0ZDczMjVjN2YyNWJiNWI4NjEyNzQxNmUzZDkwZDI4MjE0YzExOTcuLjM1
OWYwNWViNGQ0YTQzYWE1MjQyMzNlNGJiZjY2MjhkYjM2ODg2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oCkBAIC0y
OCwxMSArMjgsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFic3RyYWN0RE9NV2lu
ZG93OwogY2xhc3MgRE9NV2luZG93OworY2xhc3MgV2luZG93UHJveHk7CiB9CiAKIFdlYkNvcmU6
OkRPTVdpbmRvdyogY29yZShET01BYnN0cmFjdFZpZXcgKik7CiBET01BYnN0cmFjdFZpZXcgKmtp
dChXZWJDb3JlOjpET01XaW5kb3cqKTsKIERPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OkFi
c3RyYWN0RE9NV2luZG93Kik7CitET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpXaW5kb3dQ
cm94eSopOworV2ViQ29yZTo6V2luZG93UHJveHkqIHRvV2luZG93UHJveHkoRE9NQWJzdHJhY3RW
aWV3ICopOwogCiBAaW50ZXJmYWNlIERPTUFic3RyYWN0VmlldyAoV2ViS2l0TGVnYWN5SW50ZXJu
YWwpCiAtICh2b2lkKV9kaXNjb25uZWN0RnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NRG9jdW1lbnQubW0KaW5kZXggNmMyZjM2ZDgyNGE5NGE2ODIzYmYyYTgxYzliZWQyMjM0
ZTdhNjhmNC4uYTdiODEzNDAwOTVmNjYzODE2NTQyZWJmODY0YWJjYzU5YmY4ZjNhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQpAQCAtODQsNiArODQsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9UcmVlV2Fsa2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1dpbmRvd1Byb3h5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1hQYXRoRXhwcmVzc2lvbi5o
PgogI2ltcG9ydCA8V2ViQ29yZS9YUGF0aE5TUmVzb2x2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
WFBhdGhSZXN1bHQuaD4KQEAgLTE2Miw3ICsxNjMsMTAgQEAgLSAodm9pZClzZXREb2N1bWVudFVS
STooTlNTdHJpbmcgKiluZXdEb2N1bWVudFVSSQogLSAoRE9NQWJzdHJhY3RWaWV3ICopZGVmYXVs
dFZpZXcKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
cmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5kZWZhdWx0VmlldygpKSk7CisgICAgYXV0byog
ZGVmYXVsdFZpZXcgPSBJTVBMLT5kZWZhdWx0VmlldygpOworICAgIGlmICghZGVmYXVsdFZpZXcp
CisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIGtpdChkZWZhdWx0Vmlldy0+d2luZG93
KCkpOwogfQogCiAtIChET01TdHlsZVNoZWV0TGlzdCAqKXN0eWxlU2hlZXRzCkBAIC02ODQsNyAr
Njg4LDcgQEAgLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKWdldENvbXB1dGVkU3R5bGU6KERP
TUVsZW1lbnQgKillbGVtZW50IHBzZXVkb0VsZW1lbnQKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByYWlzZVR5cGVF
cnJvckV4Y2VwdGlvbigpOwotICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogZHYgPSBJTVBMLT5kZWZh
dWx0VmlldygpOworICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogZHYgPSBJTVBMLT5kb21XaW5kb3co
KTsKICAgICBpZiAoIWR2KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBraXQoV1RG
OjpnZXRQdHIoZHYtPmdldENvbXB1dGVkU3R5bGUoKmNvcmUoZWxlbWVudCksIHBzZXVkb0VsZW1l
bnQpKSk7CkBAIC02OTgsNyArNzAyLDcgQEAgLSAoRE9NQ1NTUnVsZUxpc3QgKilnZXRNYXRjaGVk
Q1NTUnVsZXM6KERPTUVsZW1lbnQgKillbGVtZW50IHBzZXVkb0VsZW1lbnQ6KE5TU3QKIC0gKERP
TUNTU1J1bGVMaXN0ICopZ2V0TWF0Y2hlZENTU1J1bGVzOihET01FbGVtZW50ICopZWxlbWVudCBw
c2V1ZG9FbGVtZW50OihOU1N0cmluZyAqKXBzZXVkb0VsZW1lbnQgYXV0aG9yT25seTooQk9PTClh
dXRob3JPbmx5CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogZHYgPSBJTVBMLT5kZWZhdWx0VmlldygpOworICAgIFdl
YkNvcmU6OkRPTVdpbmRvdyogZHYgPSBJTVBMLT5kb21XaW5kb3coKTsKICAgICBpZiAoIWR2KQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoZHYtPmdldE1h
dGNoZWRDU1NSdWxlcyhjb3JlKGVsZW1lbnQpLCBwc2V1ZG9FbGVtZW50LCBhdXRob3JPbmx5KSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGcmFtZUVs
ZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVu
dC5tbQppbmRleCA5NzdlYjRhNmI4Mjk2N2Q0ZDhiZGQ4YmVmYjNiMDE5N2Q1NDllNjg2Li5kNWFi
MDExZjhmZjMxZTYyMGY5NzA0YzA3ZGM1Njg0OTAzNWM2ZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQpAQCAtMzcsNiArMzcs
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgorI2ltcG9y
dCA8V2ViQ29yZS9XaW5kb3dQcm94eS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgogCiAjZGVm
aW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCkBAIC0xNDgsNyArMTQ5LDEwIEBA
IC0gKERPTURvY3VtZW50ICopY29udGVudERvY3VtZW50CiAtIChET01BYnN0cmFjdFZpZXcgKilj
b250ZW50V2luZG93CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y29udGVudFdpbmRvdygpKSk7Cisg
ICAgYXV0byogY29udGVudFdpbmRvdyA9IElNUEwtPmNvbnRlbnRXaW5kb3coKTsKKyAgICBpZiAo
IWNvbnRlbnRXaW5kb3cpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIGtpdChjb250
ZW50V2luZG93LT53aW5kb3coKSk7CiB9CiAKIC0gKE5TU3RyaW5nICopbG9jYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbQpp
bmRleCBiMWIyYzAzMThiMjBiNzI4YmU1MTc3NjEyYzRhYzdhMzlkNzIxYTZkLi42ZWEzNzNhYzMy
MjY3ZjAwYzQzNWI2NmZlY2M0OTBjYTY2ZTQyOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTElGcmFtZUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1dpbmRvd1Byb3h5Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CiAKICNkZWZpbmUg
SU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCkBAIC0xOTYsNyArMTk3LDEwIEBAIC0g
KERPTURvY3VtZW50ICopY29udGVudERvY3VtZW50CiAtIChET01BYnN0cmFjdFZpZXcgKiljb250
ZW50V2luZG93CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y29udGVudFdpbmRvdygpKSk7CisgICAg
YXV0byogY29udGVudFdpbmRvdyA9IElNUEwtPmNvbnRlbnRXaW5kb3coKTsKKyAgICBpZiAoIWNv
bnRlbnRXaW5kb3cpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIGtpdChjb250ZW50
V2luZG93LT53aW5kb3coKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01LZXlib2FyZEV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0KaW5kZXggZTlhYjFmZWZlNzRkOTczNGVhYzI4NDE2
YjA5ZWYyMzEwZmNmYzcxYi4uYmEyZmJlNGUxODlkNjEzNmVlZDczNWVmZmZlNzEyMGI3Zjk2OTU4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZl
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQu
bW0KQEAgLTExMCwyNSArMTEwLDI1IEBAIC0gKEJPT0wpZ2V0TW9kaWZpZXJTdGF0ZTooTlNTdHJp
bmcgKilrZXlJZGVudGlmaWVyQXJnCiAtICh2b2lkKWluaXRLZXlib2FyZEV2ZW50OihOU1N0cmlu
ZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihCT09MKWNhbmNl
bGFibGUgdmlldzooRE9NQWJzdHJhY3RWaWV3ICopdmlldyBrZXlJZGVudGlmaWVyOihOU1N0cmlu
ZyAqKWluS2V5SWRlbnRpZmllciBsb2NhdGlvbjoodW5zaWduZWQpaW5Mb2NhdGlvbiBjdHJsS2V5
OihCT09MKWluQ3RybEtleSBhbHRLZXk6KEJPT0wpaW5BbHRLZXkgc2hpZnRLZXk6KEJPT0wpaW5T
aGlmdEtleSBtZXRhS2V5OihCT09MKWluTWV0YUtleSBhbHRHcmFwaEtleTooQk9PTClpbkFsdEdy
YXBoS2V5CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IElNUEwtPmluaXRLZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29y
ZSh2aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBpbkxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5
LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXksIGluQWx0R3JhcGhLZXkpOworICAgIElNUEwtPmluaXRL
ZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2
aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBpbkxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBp
blNoaWZ0S2V5LCBpbk1ldGFLZXksIGluQWx0R3JhcGhLZXkpOwogfQogCiAtICh2b2lkKWluaXRL
ZXlib2FyZEV2ZW50OihOU1N0cmluZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBj
YW5jZWxhYmxlOihCT09MKWNhbmNlbGFibGUgdmlldzooRE9NQWJzdHJhY3RWaWV3ICopdmlldyBr
ZXlJZGVudGlmaWVyOihOU1N0cmluZyAqKWluS2V5SWRlbnRpZmllciBsb2NhdGlvbjoodW5zaWdu
ZWQpaW5Mb2NhdGlvbiBjdHJsS2V5OihCT09MKWluQ3RybEtleSBhbHRLZXk6KEJPT0wpaW5BbHRL
ZXkgc2hpZnRLZXk6KEJPT0wpaW5TaGlmdEtleSBtZXRhS2V5OihCT09MKWluTWV0YUtleQogewog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0
S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUodmlldyksIGlu
S2V5SWRlbnRpZmllciwgaW5Mb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtl
eSwgaW5NZXRhS2V5KTsKKyAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJi
bGUsIGNhbmNlbGFibGUsIHRvV2luZG93UHJveHkodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5M
b2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5KTsKIH0K
IAogLSAodm9pZClpbml0S2V5Ym9hcmRFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZToo
Qk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3Ry
YWN0VmlldyAqKXZpZXcga2V5SWRlbnRpZmllcjooTlNTdHJpbmcgKilpbktleUlkZW50aWZpZXIg
a2V5TG9jYXRpb246KHVuc2lnbmVkKWluS2V5TG9jYXRpb24gY3RybEtleTooQk9PTClpbkN0cmxL
ZXkgYWx0S2V5OihCT09MKWluQWx0S2V5IHNoaWZ0S2V5OihCT09MKWluU2hpZnRLZXkgbWV0YUtl
eTooQk9PTClpbk1ldGFLZXkgYWx0R3JhcGhLZXk6KEJPT0wpaW5BbHRHcmFwaEtleQogewogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0S2V5
Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUodmlldyksIGluS2V5
SWRlbnRpZmllciwgaW5LZXlMb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtl
eSwgaW5NZXRhS2V5LCBpbkFsdEdyYXBoS2V5KTsKKyAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVu
dCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRvV2luZG93UHJveHkodmlldyksIGluS2V5
SWRlbnRpZmllciwgaW5LZXlMb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtl
eSwgaW5NZXRhS2V5LCBpbkFsdEdyYXBoS2V5KTsKIH0KIAogLSAodm9pZClpbml0S2V5Ym9hcmRF
dmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJs
ZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKXZpZXcga2V5SWRlbnRp
ZmllcjooTlNTdHJpbmcgKilpbktleUlkZW50aWZpZXIga2V5TG9jYXRpb246KHVuc2lnbmVkKWlu
S2V5TG9jYXRpb24gY3RybEtleTooQk9PTClpbkN0cmxLZXkgYWx0S2V5OihCT09MKWluQWx0S2V5
IHNoaWZ0S2V5OihCT09MKWluU2hpZnRLZXkgbWV0YUtleTooQk9PTClpbk1ldGFLZXkKIHsKICAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+aW5pdEtl
eWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBjb3JlKHZpZXcpLCBpbktl
eUlkZW50aWZpZXIsIGluS2V5TG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRL
ZXksIGluTWV0YUtleSk7CisgICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnVi
YmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGlu
S2V5TG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSk7
CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01N
b3VzZUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQu
bW0KaW5kZXggN2M3ZTBkZGZmMTQyMTYxZWU0OGU2Nzc3MDI1ZTdmNzBlODUzYTgxMy4uZTUxNWQ4
OTM1YzE3N2Q0NzEwOTRhODRjNWNmYjhkNjRkYjI5NDM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KQEAgLTE0NSw3ICsxNDUsNyBAQCAtICh2b2lk
KWluaXRNb3VzZUV2ZW50OihOU1N0cmluZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJs
ZSBjYW5jZWxhYmxlOihCTwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKICAgICBET01Ob2RlKiBpblJlbGF0ZWRUYXJnZXRPYmpDID0gaW5SZWxhdGVkVGFyZ2V0Owog
ICAgIFdlYkNvcmU6Ok5vZGUqIGluUmVsYXRlZFRhcmdldE5vZGUgPSBjb3JlKGluUmVsYXRlZFRh
cmdldE9iakMpOwotICAgIElNUEwtPmluaXRNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2Fu
Y2VsYWJsZSwgY29yZSh2aWV3KSwgZGV0YWlsLCBpblNjcmVlblgsIGluU2NyZWVuWSwgaW5DbGll
bnRYLCBpbkNsaWVudFksIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtl
eSwgaW5CdXR0b24sIGluUmVsYXRlZFRhcmdldE5vZGUpOworICAgIElNUEwtPmluaXRNb3VzZUV2
ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2aWV3KSwgZGV0
YWlsLCBpblNjcmVlblgsIGluU2NyZWVuWSwgaW5DbGllbnRYLCBpbkNsaWVudFksIGluQ3RybEtl
eSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwgaW5CdXR0b24sIGluUmVsYXRlZFRh
cmdldE5vZGUpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NVGV4dEV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRl
eHRFdmVudC5tbQppbmRleCAyODY3YmM4MDIzOTE2YTdlNjc4MGZhM2ViNzEyMGM5YzkxYWQyYTQy
Li5kZmE3NjIwMjRiNTY2MjJjZTViMjk5MWRmMzEyZGZkNTM4NzBkMGUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0KQEAgLTUwLDcgKzUwLDcgQEAgLSAo
TlNTdHJpbmcgKilkYXRhCiAtICh2b2lkKWluaXRUZXh0RXZlbnQ6KE5TU3RyaW5nICopdHlwZUFy
ZyBjYW5CdWJibGVBcmc6KEJPT0wpY2FuQnViYmxlQXJnIGNhbmNlbGFibGVBcmc6KEJPT0wpY2Fu
Y2VsYWJsZUFyZyB2aWV3QXJnOihET01BYnN0cmFjdFZpZXcgKil2aWV3QXJnIGRhdGFBcmc6KE5T
U3RyaW5nICopZGF0YUFyZwogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICBJTVBMLT5pbml0VGV4dEV2ZW50KHR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2Fu
Y2VsYWJsZUFyZywgY29yZSh2aWV3QXJnKSwgZGF0YUFyZyk7CisgICAgSU1QTC0+aW5pdFRleHRF
dmVudCh0eXBlQXJnLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsIHRvV2luZG93UHJveHko
dmlld0FyZyksIGRhdGFBcmcpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01VSUV2ZW50Lm1tCmluZGV4IGE0NjRkYWNmYmY1MTI2NmJhOTJlNTk3NzE5MjlkODYzMWYy
ZjE2NDAuLjkxMDM3OWU2NTlmZGM5MjVjYjNjM2MyMDQ0ZmI0N2Q2ODg3ZTA0ZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCkBAIC00NSw3ICs0NSw5IEBAIEBp
bXBsZW1lbnRhdGlvbiBET01VSUV2ZW50CiAtIChET01BYnN0cmFjdFZpZXcgKil2aWV3CiB7CiAg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQo
V1RGOjpnZXRQdHIoSU1QTC0+dmlldygpKSk7CisgICAgaWYgKCFJTVBMLT52aWV3KCkpCisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIGtpdChJTVBMLT52aWV3KCktPndpbmRvdygpKTsK
IH0KIAogLSAoaW50KWRldGFpbApAQCAtMTAzLDcgKzEwNSw3IEBAIC0gKGludCl3aGljaAogLSAo
dm9pZClpbml0VUlFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJi
bGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKWlu
VmlldyBkZXRhaWw6KGludClpbkRldGFpbAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIGNvcmUoaW5WaWV3KSwgaW5EZXRhaWwpOworICAgIElNUEwtPmluaXRVSUV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eShpblZpZXcpLCBpbkRl
dGFpbCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01XaGVlbEV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVs
RXZlbnQubW0KaW5kZXggOGYwNTY5Y2E2YTNmOTU4Yzc0MWY2ZDg4MzU4ZmZmZDE2MGIxOGFjOC4u
ZGQ0YTU3YjBmMzJiNzdiNDMwYjZkZDljZDViMTUyMzRlNWE0MzRiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQubW0KQEAgLTk2LDcgKzk2LDcgQEAgLSAo
Qk9PTClpc0hvcml6b250YWwKIC0gKHZvaWQpaW5pdFdoZWVsRXZlbnQ6KGludClpbldoZWVsRGVs
dGFYIHdoZWVsRGVsdGFZOihpbnQpaW5XaGVlbERlbHRhWSB2aWV3OihET01BYnN0cmFjdFZpZXcg
Kil2aWV3IHNjcmVlblg6KGludClzY3JlZW5YIHNjcmVlblk6KGludClzY3JlZW5ZIGNsaWVudFg6
KGludCljbGllbnRYIGNsaWVudFk6KGludCljbGllbnRZIGN0cmxLZXk6KEJPT0wpY3RybEtleSBh
bHRLZXk6KEJPT0wpYWx0S2V5IHNoaWZ0S2V5OihCT09MKXNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wp
bWV0YUtleQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBJTVBMLT5pbml0V2ViS2l0V2hlZWxFdmVudChpbldoZWVsRGVsdGFYLCBpbldoZWVsRGVsdGFZ
LCBjb3JlKHZpZXcpLCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5
LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KTsKKyAgICBJTVBMLT5pbml0V2ViS2l0V2hlZWxF
dmVudChpbldoZWVsRGVsdGFYLCBpbldoZWVsRGVsdGFZLCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBz
Y3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29y
ZUNsYXNzZXMuY3BwCmluZGV4IDFiNDNkZDlmNGNhMTM1YjJkMWM0ZDRjNDY5Zjg2ODU1NWM0N2U5
NjYuLmIyNTI2MWY3ZGZjZTFiN2NmNDcxYTlkMWYyM2NiMDg3YjI1NzdhMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKQEAgLTgwMiw3ICs4MDIsNyBAQCBI
UkVTVUxUIERPTURvY3VtZW50OjpnZXRDb21wdXRlZFN0eWxlKF9Jbl9vcHRfIElET01FbGVtZW50
KiBlbHQsIF9Jbl8gQlNUUiBwc2V1ZAogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJu
IEVfRkFJTDsKIAotICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogZHYgPSBtX2RvY3VtZW50LT5kZWZh
dWx0VmlldygpOworICAgIGF1dG8qIGR2ID0gbV9kb2N1bWVudC0+ZG9tV2luZG93KCk7CiAgICAg
U3RyaW5nIHBzZXVkb0VsdFN0cmluZyhwc2V1ZG9FbHQpOwogICAgIAogICAgIGlmICghZHYpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338879</attachid>
            <date>2018-04-26 09:19:19 -0700</date>
            <delta_ts>2018-04-26 09:40:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185022-20180426091918.patch</filename>
            <type>text/plain</type>
            <size>128851</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNmYmU3ZTk5YzEwNmQx
NzM1Nzc3MGZmMTQxMzkwZjdlODNmNmU2My4uYWM4MDhlYTIzNDlkYzE2MzM0MWFkMmRkY2ZiOTIz
OWJkMjQ0MjQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxOC0wNC0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94eSBp
bnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHVzaW5nIERPTVdpbmRvdyBpbiBhbGwgb2Ygb3Vy
IElETCBmaWxlcyBhbmQgdXNlIFdpbmRvd1Byb3h5IGFzCisgICAgICAgIHBlciB0aGVpciByZXNw
ZWN0aXZlIHNwZWNpZmljYXRpb25zLiBBcyBhIHJlc3VsdCwgdGhlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGFzIGFsc28gdXBkYXRlZCB0byB1c2UgV2luZG93UHJveHkgdHlwZSBpbnN0ZWFkIG9m
IERPTVdpbmRvdy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXaW5kb3dQcm94eTo6d2luZG93UHJveHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9XaW5kb3dQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eTo6
fldpbmRvd1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpkZXN0cm95QWxs
SlNXaW5kb3dQcm94aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpnbG9iYWxP
YmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpXaW5kb3dQcm94eTo6ZnJhbWUgY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKElzQnVpbHRpblR5cGUpOgorICAgICAg
ICAoQ29tcHV0ZUlzQ2FsbGJhY2tJbnRlcmZhY2UpOgorICAgICAgICAoQ29tcHV0ZUlzQ2FsbGJh
Y2tGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChBZGRUb0luY2x1ZGVzRm9ySURMVHlwZSk6CisgICAgICAgIChHZXRCYXNl
SURMVHlwZSk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWVET01Db252ZXJ0TmVlZHNTdGF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RPdmVybG9hZERpc3BhdGNoZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50
KToKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5oOgorICAgICAgICAqIGRvbS9Db21w
b3NpdGlvbkV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmRlZmF1bHRWaWV3IGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudFRvdWNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VG91Y2g6OmNyZWF0ZVRv
dWNoKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRUb3VjaC5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudFRvdWNoLmlkbDoKKyAgICAgICAgKiBkb20vRm9jdXNFdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb2N1c0V2ZW50OjpGb2N1c0V2ZW50KToKKyAgICAgICAgKiBkb20vRm9jdXNFdmVu
dC5oOgorICAgICAgICAqIGRvbS9JbnB1dEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0RXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEV2ZW50OjpJbnB1dEV2
ZW50KToKKyAgICAgICAgKiBkb20vSW5wdXRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2Fy
ZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OktleWJvYXJkRXZlbnQ6OmNoYXJDb2RlIGNvbnN0KToKKyAgICAgICAgKiBkb20vS2V5
Ym9hcmRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmlkbDoKKyAgICAgICAg
KiBkb20vTWVzc2FnZUV2ZW50Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5pZGw6Cisg
ICAgICAgICogZG9tL01vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayk6CisgICAgICAgICogZG9t
L01vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5pZGw6CisgICAgICAgICog
ZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRl
ZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0
ZWRFdmVudDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6ZnJh
bWVWaWV3RnJvbVdpbmRvd1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2
ZW50Ojppbml0Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZl
bnQ6OmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUGFnZUxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpsb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyBj
b25zdCk6CisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50Lmg6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAqIGRvbS9TaW11bGF0ZWRDbGljay5jcHA6CisgICAgICAgICog
ZG9tL1RleHRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3ApOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEV2ZW50OjpUZXh0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50Ojppbml0
VGV4dEV2ZW50KToKKyAgICAgICAgKiBkb20vVGV4dEV2ZW50Lmg6CisgICAgICAgICogZG9tL1Rl
eHRFdmVudC5pZGw6CisgICAgICAgICogZG9tL1RvdWNoRXZlbnQuaWRsOgorICAgICAgICAqIGRv
bS9VSUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVJRXZlbnQ6OlVJRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VUlFdmVudDo6aW5pdFVJRXZlbnQpOgorICAgICAgICAqIGRvbS9VSUV2
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpVSUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VUlFdmVudDo6dmlldyBjb25zdCk6CisgICAgICAgICogZG9tL1VJRXZlbnQuaWRsOgor
ICAgICAgICAqIGRvbS9VSUV2ZW50SW5pdC5oOgorICAgICAgICAqIGRvbS9VSUV2ZW50SW5pdC5p
ZGw6CisgICAgICAgICogZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlVJRXZlbnRXaXRoS2V5U3RhdGU6OlVJRXZlbnRXaXRoS2V5U3RhdGUpOgorICAgICAgICAq
IGRvbS9XaGVlbEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OldoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2ZW50KToKKyAgICAgICAgKiBk
b20vV2hlZWxFdmVudC5oOgorICAgICAgICAqIGRvbS9XaGVlbEV2ZW50LmlkbDoKKyAgICAgICAg
KiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3Rl
QXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRDb21wb3NpdGlvbik6CisgICAgICAgICog
aHRtbC9IVE1MRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50Ojpu
YW1lZEl0ZW0pOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGw6
CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50V2luZG93IGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50
OjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3N0TWVzc2Fn
ZVRpbWVyOjpQb3N0TWVzc2FnZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc3RNZXNzYWdl
VGltZXI6OmV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2Up
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlVGV4dElucHV0RXZlbnQpOgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6fkZyYW1lKToKKyAgICAgICAgVXBkYXRlIEZyYW1lIGRlc3RydWN0
b3IgdG8gZGVzdHJveSBhbGwgaXRzIEpTV2luZG93UHJveGllcyBiZWZvcmUgZG9pbmcgYW55dGhp
bmcgZWxzZS4KKyAgICAgICAgQmVjYXVzZSByZWZpbmcgYSBXaW5kb3dQcm94eSBhY3R1YWxseSBy
ZWZzIGl0cyBmcmFtZSwgaXQgaXMgcG9zc2libGUgdGhhdCB3aGVuIGEgSlMKKyAgICAgICAgb2Jq
ZWN0IGlzIHN3ZXB0LCBpdHMgZGVzdHJveXMgYSBXaW5kb3dQcm94eSwgd2hpY2ggZGVzdHJveXMg
YSBGcmFtZS4gVGhlIEZyYW1lIGRlc3RydWN0b3IKKyAgICAgICAgd291bGQgdGhlbiBjYWxsIEZy
YW1lTG9hZGVyOjpjYW5jZWxBbmRDbGVhcigpIHdoaWNoIHdvdWxkIGVuZCB1cCBjYWxsaW5nIFNj
cmlwdENvbnRyb2xsZXI6OmVuYWJsZUV2YWwoKQorICAgICAgICBhbmQgYWNjZXNzaW5nIEpTV2lu
ZG93UHJveHk6OndpbmRvdygpLiBUaGlzIHdvdWxkIGhpdCBhbiBhc3NlcnRpb24gd2hlbiBkb2lu
ZyB0aGUganNDYXN0KCkgaW4KKyAgICAgICAgSlNDZWxsOjpjbGFzc0luZm8oSlNDOjpWTSYpOgor
ICAgICAgICBBU1NFUlQodm0uaGVhcC5tdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OlN3
ZWVwaW5nIHx8ICF2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKwogMjAxOC0w
NC0yMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1dQRV1bR1RLXSBSZW1vdmUgV2xVbmlxdWVQdHI8d2xfZGlzcGxheT4gZm9vdGd1bgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGYzMDg5NWFiYWY2NzAwMjA3NDJkNGVmYzAzOTAx
OGRhMjc3ZTc2YWYuLjZhZDUyNWU5ODEwZWEwMjY3MmZlMWUwOTM3NTYxMWI4ZjM4NjQwMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0wNC0yNiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94
eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01BYnN0cmFjdFZpZXcubW06CisgICAg
ICAgIChraXQpOgorICAgICAgICAodG9XaW5kb3dQcm94eSk6CisgICAgICAgICogRE9NL0RPTUFi
c3RyYWN0Vmlld0ludGVybmFsLmg6CisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOgorICAg
ICAgICAoLVtET01Eb2N1bWVudCBkZWZhdWx0Vmlld10pOgorICAgICAgICAoLVtET01Eb2N1bWVu
dCBnZXRDb21wdXRlZFN0eWxlOnBzZXVkb0VsZW1lbnQ6XSk6CisgICAgICAgICgtW0RPTURvY3Vt
ZW50IGdldE1hdGNoZWRDU1NSdWxlczpwc2V1ZG9FbGVtZW50OmF1dGhvck9ubHk6XSk6CisgICAg
ICAgICogRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUhUTUxGcmFt
ZUVsZW1lbnQgY29udGVudFdpbmRvd10pOgorICAgICAgICAqIERPTS9ET01IVE1MSUZyYW1lRWxl
bWVudC5tbToKKyAgICAgICAgKC1bRE9NSFRNTElGcmFtZUVsZW1lbnQgY29udGVudFdpbmRvd10p
OgorICAgICAgICAqIERPTS9ET01LZXlib2FyZEV2ZW50Lm1tOgorICAgICAgICAoLVtET01LZXli
b2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5
SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdy
YXBoS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50
OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5
OmFsdEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50
IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmll
cjprZXlMb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdyYXBoS2V5
Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1
YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjprZXlMb2NhdGlvbjpjdHJsS2V5OmFs
dEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAqIERPTS9ET01Nb3VzZUV2ZW50Lm1t
OgorICAgICAgICAoLVtET01Nb3VzZUV2ZW50IGluaXRNb3VzZUV2ZW50OmNhbkJ1YmJsZTpjYW5j
ZWxhYmxlOnZpZXc6ZGV0YWlsOnNjcmVlblg6c2NyZWVuWTpjbGllbnRYOmNsaWVudFk6Y3RybEtl
eTphbHRLZXk6c2hpZnRLZXk6bWV0YUtleTpidXR0b246cmVsYXRlZFRhcmdldDpdKToKKyAgICAg
ICAgKiBET00vRE9NVGV4dEV2ZW50Lm1tOgorICAgICAgICAoLVtET01UZXh0RXZlbnQgaW5pdFRl
eHRFdmVudDpjYW5CdWJibGVBcmc6Y2FuY2VsYWJsZUFyZzp2aWV3QXJnOmRhdGFBcmc6XSk6Cisg
ICAgICAgICogRE9NL0RPTVVJRXZlbnQubW06CisgICAgICAgICgtW0RPTVVJRXZlbnQgdmlld10p
OgorICAgICAgICAoLVtET01VSUV2ZW50IGluaXRVSUV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxl
OnZpZXc6ZGV0YWlsOl0pOgorICAgICAgICAqIERPTS9ET01XaGVlbEV2ZW50Lm1tOgorICAgICAg
ICAoLVtET01XaGVlbEV2ZW50IGluaXRXaGVlbEV2ZW50OndoZWVsRGVsdGFZOnZpZXc6c2NyZWVu
WDpzY3JlZW5ZOmNsaWVudFg6Y2xpZW50WTpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5
Ol0pOgorCiAyMDE4LTA0LTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjMwOTIxLCByMjMwOTIzLCBy
MjMwOTI0LCByMjMwOTMyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGRkZTgwMDhk
YzE4N2YzMDI0OTk1YjJhNGJjN2Q5Y2QwY2E5ZWZjNGIuLmY5YjU5MDBmMTk5ZTU3Yzc0YWJkNDIz
YTkzMzFhZGQ4ZjQ0N2M4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxOC0wNC0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBXaW5kb3dQcm94eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVD
bGFzc2VzLmNwcDoKKyAgICAgICAgKERPTURvY3VtZW50OjpnZXRDb21wdXRlZFN0eWxlKToKKwog
MjAxOC0wNC0yMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzMDkyMSwgcjIzMDkyMywgcjIzMDkyNCwg
cjIzMDkzMiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAzMGY2NDZlYzc4ODYwMDlkMDgwYjdmY2U4NzJmOTBjMzdjMGJjNjZmLi4w
MTE0ZjIwNThmYWJhOWEyZGUwMTI4NTk3MGE2NjBhZDc0OTQ5ZGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzY1LDcgKzIz
NjUsNiBAQAogCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOTU5RTEx
QjhCQzIyQjAwNEQ5Mzg1IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcg
LyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVS
ZXF1ZXN0VHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTgzQjk2ODdCMTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk2
ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLzsgfTsKLQkJ
ODNCOUU3MEIyMDg2QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I5RTcwOTIwODZC
QTI3MDBFNUQ3NTYgLyogSlNET01Db252ZXJ0V2luZG93UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0JCNUM4ODFENUQ2RjQ1MDA1QTcx
RjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVz
Y2VuZGFudHNDb2xsZWN0aW9uLmggKi87IH07CiAJCTgzQzA1QTVCMUE2ODYyMTIwMDdFNURFQSAv
KiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9OwogCQk4M0MxRDQyNTE3OEQ1QUI0
MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0FyY0Ficy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNDMUQ0MTMxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhT
ZWdBcmNBYnMuaCAqLzsgfTsKQEAgLTk4NzcsNyArOTg3Niw2IEBACiAJCTgzQjc0RUYyMUYzRTBC
RDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVw
YWxpdmVSZXF1ZXN0VHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBL
ZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
M0I5Njg3OTE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0I5RTcwOTIwODZCQTI3MDBFNUQ3NTYgLyogSlNE
T01Db252ZXJ0V2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNET01Db252ZXJ0V2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNDMDVBNTgxQTY4NjIxMjAwN0U1REVB
IC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAv
KiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5ODM1LDcgKzE5ODMzLDYgQEAKIAkJCQk3QzhFMzRBQTFF
NEEzMzhFMDA1NENFMjMgLyogSlNET01Db252ZXJ0VmFyaWFkaWMuaCAqLywKIAkJCQk3Q0JBNUJB
NjFGMEI0QkRFMDAzNEQ3NDUgLyogSlNET01Db252ZXJ0V2ViR0wuY3BwICovLAogCQkJCTdDOEUz
NEFCMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5oICovLAotCQkJCTgzQjlF
NzA5MjA4NkJBMjcwMEU1RDc1NiAvKiBKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oICovLAogCQkJ
CTdDOEUzNEFDMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIu
aCAqLywKIAkJCSk7CiAJCQluYW1lID0gQ29udmVyc2lvbnM7CkBAIC0yODQxNiw3ICsyODQxMyw2
IEBACiAJCQkJN0M4RTM0QzQxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFVuaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRDNTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252
ZXJ0VmFyaWFkaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEM2MUU0QTMzQjAwMDU0Q0Uy
MyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODNCOUU3MEIyMDg2
QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QzhFMzRDNzFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0WFBhdGhOU1Jlc29s
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQzlFMEU0RDE2NDE5QzFFMDAzOTJCRTMgLyogSlNE
T01DU1NOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEN0MxMEQyOUE0NjMwMEI5
OTE4RiAvKiBKU0RPTUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
SURMVHlwZXMuaAppbmRleCA1ZmU3N2U4M2YyM2RhMmIxYjQyMGQxZTM5MmRlYTlkYzA3ZmIxYzgw
Li44MDU3ZGZhMTE1ODg4ZDNkYjRhMGYwYmUyNmI0YzY2MmI2OWM3ODdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL0lETFR5cGVzLmgKQEAgLTI3NCw3ICsyNzQsNiBAQCBzdHJ1Y3QgSURMU2NoZWR1bGVk
QWN0aW9uIDogSURMVHlwZTxzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPj4geyB9Owog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IElE
TFdyYXBwZXI8VD4geyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETEV2ZW50TGlz
dGVuZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJ
RExYUGF0aE5TUmVzb2x2ZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKLXN0cnVjdCBJRExXaW5kb3dQ
cm94eSA6IElETFdyYXBwZXI8SlNXaW5kb3dQcm94eT4geyB9OwogCiBzdHJ1Y3QgSURMSURCS2V5
IDogSURMV3JhcHBlcjxJREJLZXk+IHsgfTsKIHN0cnVjdCBJRExJREJLZXlEYXRhIDogSURMV3Jh
cHBlcjxJREJLZXlEYXRhPiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0V2luZG93UHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODJjMWZmNDgxOTJkZTVjMjA4MmRiN2IzZGUwYWMzYmFhNGIzNGM3Yy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIK
LSNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCi0jaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTQ29udmVydGVy
PElETFdpbmRvd1Byb3h5PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUg
PSB0cnVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9IGZh
bHNlOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgVSYmIHZhbHVlKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsKLSAgICB9Ci19
OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCmlu
ZGV4IDE4ODY3MWU0OWIxZjE0MzE1Yzk4Njc3MWQwN2JhNmY4M2UxYWJkMjcuLmE0YjE4MDVjNjUy
ZTIzMjBiZmQ3OWEwOTc5Mjc5YWNjMDg3YjY5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2luZG93UHJveHkuY3BwCkBAIC0xMTksNiArMTE5LDEyIEBAIHZvaWQgSlNXaW5k
b3dQcm94eTo6c2V0V2luZG93KEFic3RyYWN0RE9NV2luZG93JiBkb21XaW5kb3cpCiAgICAgQVNT
RVJUKHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkgPT0gd2luZG93KTsKIH0KIAorV2luZG93UHJv
eHkqIEpTV2luZG93UHJveHk6OndpbmRvd1Byb3h5KCkgY29uc3QKK3sKKyAgICBhdXRvJiB3aW5k
b3cgPSB3cmFwcGVkKCk7CisgICAgcmV0dXJuIHdpbmRvdy5mcmFtZSgpID8gJndpbmRvdy5mcmFt
ZSgpLT53aW5kb3dQcm94eSgpIDogbnVsbHB0cjsKK30KKwogdm9pZCBKU1dpbmRvd1Byb3h5Ojph
dHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKIHsKICAgICBhdXRvKiBnbG9i
YWxPYmplY3QgPSB3aW5kb3coKTsKQEAgLTEzOCwxMiArMTQ0LDYgQEAgQWJzdHJhY3RET01XaW5k
b3cmIEpTV2luZG93UHJveHk6OndyYXBwZWQoKSBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8SlNE
T01XaW5kb3dCYXNlKj4od2luZG93KS0+d3JhcHBlZCgpOwogfQogCi1BYnN0cmFjdERPTVdpbmRv
dyogSlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKFZNJiB2bSwgSlNPYmplY3QqIHZhbHVlKQotewot
ICAgIGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTV2luZG93UHJveHkqPih2bSwgdmFs
dWUpOwotICAgIHJldHVybiB3cmFwcGVyID8gJndyYXBwZXItPndyYXBwZWQoKSA6IG51bGxwdHI7
Ci19Ci0KIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBXaW5kb3dQcm94eSYgd2luZG93
UHJveHkpCiB7CiAgICAgcmV0dXJuICZ3aW5kb3dQcm94eS5qc1dpbmRvd1Byb3h5KGN1cnJlbnRX
b3JsZCgqc3RhdGUpKTsKQEAgLTE1NCw0ICsxNTQsMTQgQEAgSlNXaW5kb3dQcm94eSYgdG9KU1dp
bmRvd1Byb3h5KFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKICAgICByZXR1cm4gd2luZG93UHJveHkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiB9CiAKK1dp
bmRvd1Byb3h5KiBKU1dpbmRvd1Byb3h5Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVl
KQoreworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBpZiAob2JqZWN0
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNX
aW5kb3dQcm94eSo+KG9iamVjdCktPndpbmRvd1Byb3h5KCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2luZG93UHJveHkuaAppbmRleCAxODVhNTQ1NzhiZjgxNzdjZmNhMTc1YzZlNGIxMWY0NzQ4
YTQwOTQ4Li4zNjI0MGQ4NjZlOGYxMGRhZDYyMWRiZGQ5OWVmYjE3ZTE4MWJkZDk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oCkBAIC0yOCw3ICsyOCw5IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTUHJveHkuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zOSw3
ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJhY3RET01XaW5kb3c7
CiBjbGFzcyBBYnN0cmFjdEZyYW1lOwotY2xhc3MgV2luZG93UHJveHk7CiAKIGNsYXNzIEpTV2lu
ZG93UHJveHkgZmluYWwgOiBwdWJsaWMgSlNDOjpKU1Byb3h5IHsKICAgICB1c2luZyBCYXNlID0g
SlNDOjpKU1Byb3h5OwpAQCAtNTMsOCArNTQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2lu
ZG93KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgc2V0V2luZG93KEFi
c3RyYWN0RE9NV2luZG93Jik7CiAKKyAgICBXaW5kb3dQcm94eSogd2luZG93UHJveHkoKSBjb25z
dDsKKwogICAgIEFic3RyYWN0RE9NV2luZG93JiB3cmFwcGVkKCkgY29uc3Q7Ci0gICAgc3RhdGlj
IFdFQkNPUkVfRVhQT1JUIEFic3RyYWN0RE9NV2luZG93KiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpT
Qzo6SlNPYmplY3QqKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgV2luZG93UHJveHkqIHRv
V3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKIAogICAgIERPTVdyYXBwZXJXb3JsZCYg
d29ybGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CiAKQEAgLTcxLDEwICs3NCwxNiBAQCBwcml2YXRl
OgogLy8gSXQgaXMsIGhvd2V2ZXIsIHN0cm9uZ2x5IG93bmVkIGJ5IEFic3RyYWN0RnJhbWUgdmlh
IGl0cyBXaW5kb3dQcm94eSwgc28gd2UgY2FuIGdldCBvbmUgZnJvbSBhIFdpbmRvd1Byb3h5Lgog
V0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBXaW5kb3dQ
cm94eSYpOwogaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
V2luZG93UHJveHkqIHdpbmRvd1Byb3h5KSB7IHJldHVybiB3aW5kb3dQcm94eSA/IHRvSlMoc3Rh
dGUsICp3aW5kb3dQcm94eSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1pbmxpbmUgSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBSZWZQdHI8V2luZG93UHJveHk+JiB3
aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwgd2luZG93UHJveHkuZ2V0KCkpOyB9Citp
bmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamVjdCosIFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwg
d2luZG93UHJveHkpOyB9CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXaW5kb3dQcm94eSogd2lu
ZG93UHJveHkpIHsgcmV0dXJuIHdpbmRvd1Byb3h5ID8gdG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0
LCAqd2luZG93UHJveHkpIDogSlNDOjpqc051bGwoKTsgfQogCiBKU1dpbmRvd1Byb3h5JiB0b0pT
V2luZG93UHJveHkoV2luZG93UHJveHkmLCBET01XcmFwcGVyV29ybGQmKTsKIGlubGluZSBKU1dp
bmRvd1Byb3h5KiB0b0pTV2luZG93UHJveHkoV2luZG93UHJveHkqIHdpbmRvd1Byb3h5LCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKSB7IHJldHVybiB3aW5kb3dQcm94eSA/ICZ0b0pTV2luZG93UHJv
eHkoKndpbmRvd1Byb3h5LCB3b3JsZCkgOiBudWxscHRyOyB9CiAKIAordGVtcGxhdGU8PiBzdHJ1
Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFdpbmRvd1Byb3h5PiB7CisgICAgdXNpbmcg
V3JhcHBlckNsYXNzID0gSlNXaW5kb3dQcm94eTsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5U
eXBlID0gV2luZG93UHJveHkqOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwCmluZGV4IDhlOGY1MTM1M2VkMWY3
YTBiNWIzZjkzMDRjZjgxYzhhYWNiNzViNWUuLmFiMjQ1YjI0Nzg0YWQ3NzczODZlYzUzNDhmM2Ey
NjkyNDdlODAxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRv
d1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5j
cHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSlNXaW5kb3dQcm94
eS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgog
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtNTMsMTIgKzU0LDE2IEBAIFdpbmRvd1Byb3h5OjpX
aW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJiBmcmFtZSkKIH0KIAogV2luZG93UHJveHk6On5XaW5k
b3dQcm94eSgpCit7CisgICAgZGVzdHJveUFsbEpTV2luZG93UHJveGllcygpOworfQorCit2b2lk
IFdpbmRvd1Byb3h5OjpkZXN0cm95QWxsSlNXaW5kb3dQcm94aWVzKCkKIHsKICAgICAvLyBJdCdz
IGxpa2VseSB0aGF0IGRlc3Ryb3lpbmcgd2luZG93UHJveGllcyB3aWxsIGNyZWF0ZSBhIGxvdCBv
ZiBnYXJiYWdlLgogICAgIGlmICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIHdoaWxlICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBh
dXRvIGl0ID0gbV9qc1dpbmRvd1Byb3hpZXMuYmVnaW4oKTsKLSAgICAgICAgICAgIGl0LT52YWx1
ZS0+d2luZG93KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CiAgICAgICAgICAgICBkZXN0
cm95SlNXaW5kb3dQcm94eSgqaXQtPmtleSk7CiAgICAgICAgIH0KICAgICAgICAgY29sbGVjdEdh
cmJhZ2VBZnRlcldpbmRvd1Byb3h5RGVzdHJ1Y3Rpb24oKTsKQEAgLTkxLDYgKzk2LDExIEBAIFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU1dpbmRvd1Byb3h5Pj4gV2luZG93UHJveHk6OmpzV2luZG93UHJv
eGllc0FzVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fanNXaW5kb3dQ
cm94aWVzLnZhbHVlcygpKTsKIH0KIAorSlNET01HbG9iYWxPYmplY3QqIFdpbmRvd1Byb3h5Ojpn
bG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICByZXR1cm4ganNXaW5k
b3dQcm94eSh3b3JsZCkud2luZG93KCk7Cit9CisKIEpTV2luZG93UHJveHkmIFdpbmRvd1Byb3h5
OjpjcmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaAppbmRleCA3NzcyMjk4M2IwYTMyMmNkMDY3
ZGZiNTA2MmRhMDc3N2E2OGU2NWY4Li44NDY3MDIwOTA3NWY3MzJmNWVlMTUxMTgyN2Q2ZDhiMDgy
ZWY4ODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmgKQEAgLTIw
LDcgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU1dpbmRvd1Byb3h5Lmgi
CisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApAQCAtMzAsNyArMzAsMTAgQEAg
Y2xhc3MgRGVidWdnZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWJzdHJhY3RE
T01XaW5kb3c7CiBjbGFzcyBBYnN0cmFjdEZyYW1lOworY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7
CitjbGFzcyBKU1dpbmRvd1Byb3h5OwogCiBjbGFzcyBXaW5kb3dQcm94eSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00MCw2ICs0Myw4IEBAIHB1YmxpYzoKICAgICBleHBsaWNp
dCBXaW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJik7CiAgICAgfldpbmRvd1Byb3h5KCk7CiAKKyAg
ICBBYnN0cmFjdEZyYW1lJiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KKwogICAg
IHZvaWQgZGVzdHJveUpTV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICBQcm94
eU1hcDo6VmFsdWVzQ29uc3RJdGVyYXRvclJhbmdlIGpzV2luZG93UHJveGllcygpIGNvbnN0IHsg
cmV0dXJuIG1fanNXaW5kb3dQcm94aWVzLnZhbHVlcygpOyB9CkBAIC02MywxMCArNjgsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAoaXQgIT0gbV9qc1dpbmRvd1Byb3hpZXMuZW5kKCkpID8g
aXQtPnZhbHVlLmdldCgpIDogbnVsbHB0cjsKICAgICB9CiAKLSAgICBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCi0gICAgewotICAgICAgICBy
ZXR1cm4ganNXaW5kb3dQcm94eSh3b3JsZCkud2luZG93KCk7Ci0gICAgfQorICAgIFdFQkNPUkVf
RVhQT1JUIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJik7
CiAKICAgICB2b2lkIGNsZWFySlNXaW5kb3dQcm94aWVzTm90TWF0Y2hpbmdET01XaW5kb3coQWJz
dHJhY3RET01XaW5kb3cqLCBib29sIGdvaW5nSW50b1BhZ2VDYWNoZSk7CiAKQEAgLTgwLDYgKzgy
LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVmKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkZXJlZigpOwogCisgICAgdm9pZCBkZXN0cm95QWxsSlNXaW5kb3dQcm94
aWVzKCk7CisKIHByaXZhdGU6CiAgICAgSlNXaW5kb3dQcm94eSYgY3JlYXRlSlNXaW5kb3dQcm94
eShET01XcmFwcGVyV29ybGQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBKU1dpbmRvd1Byb3h5JiBj
cmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBt
CmluZGV4IDk1MjQyOWEwZTQ5Nzc0YmFkMjJjMWU1OGViYjJlNGVkZGJhZDNiNjMuLjJmY2ZlZTNh
N2FhOGYyMmYyNmViZGRiNmE0ZTI4ZmEwMzhiMmY0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTg5MSw3ICs4OTEsNiBAQCBz
dWIgSXNCdWlsdGluVHlwZQogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5T
UmVzb2x2ZXIiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJhbnkiOwogICAgIHJl
dHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJvYmplY3QiOwotICAgIHJldHVybiAxIGlmICR0eXBl
LT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTEwMDEsNiAr
MTAwMCw3IEBAIHN1YiBDb21wdXRlSXNDYWxsYmFja0ludGVyZmFjZQogICAgIGFzc2VydCgiTm90
IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5s
ZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5
cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsKIAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5u
YW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlw
ZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBc
IiR0eXBlTmFtZVwiIVxuIik7CkBAIC0xMDM4LDYgKzEwMzgsNyBAQCBzdWIgQ29tcHV0ZUlzQ2Fs
bGJhY2tGdW5jdGlvbgogICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUg
IklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5sZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlw
ZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsK
IAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9i
amVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlwZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9U
IGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlTmFtZVwiIVxuIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4
IDYyNmE5ZjBiMmQ2ZjA0M2NmOTJiZGYzMmYyOTYyODkyNjExNmU1ZTQuLjMwYTM3NGMyODI0ZmEy
NjA4MjQyYWEzODcxMDk4NDIwMmI1ZDBlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00MjEsMTMgKzQyMSw2IEBAIHN1
YiBBZGRUb0luY2x1ZGVzRm9ySURMVHlwZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKCR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSIpIHsKLSAgICAgICAgQWRkVG9JbmNsdWRl
cygiV2luZG93UHJveHkuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAg
QWRkVG9JbmNsdWRlcygiSlNXaW5kb3dQcm94eS5oIiwgJGluY2x1ZGVzUmVmLCAkY29uZGl0aW9u
YWwpOwotICAgICAgICBBZGRUb0luY2x1ZGVzKCJKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIiwg
JGluY2x1ZGVzUmVmLCAkY29uZGl0aW9uYWwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7CiAgICAgICAgIEFk
ZFRvSW5jbHVkZXMoIkpTRE9NQ29udmVydFN0cmluZ3MuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRp
dGlvbmFsKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjM5Myw3ICs2Mzg2LDYgQEAgc3ViIEdldEJh
c2VJRExUeXBlCiAgICAgICAgICJKU09OIiA9PiAiSURMSlNPTiIsCiAgICAgICAgICJTY2hlZHVs
ZWRBY3Rpb24iID0+ICJJRExTY2hlZHVsZWRBY3Rpb24iLAogICAgICAgICAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlIiA9PiAiSURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4iLAotICAgICAgICAiV2luZG93UHJveHkiID0+ICJJRExXaW5kb3dQcm94eSIsCiAgICAg
ICAgICJYUGF0aE5TUmVzb2x2ZXIiID0+ICJJRExYUGF0aE5TUmVzb2x2ZXI8WFBhdGhOU1Jlc29s
dmVyPiIsCiAgICAgKTsKIApAQCAtNjU1NCw3ICs2NTQ2LDYgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1
ZURPTUNvbnZlcnROZWVkc1N0YXRlCiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIkpT
T04iOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwot
ICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAgICAgCiAgICAg
cmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGJhNDViYjk4ZjIxYTYzMzkwOWQyYmU4ZTBhMWZl
MmRjNzI2YTM0NWYuLmMwNDY2YzI2NmI3MzdmNmM4ODVkMmFhZmQwNWI1ZjE2ZjY4MmQ1MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCkBAIC01NSw3ICs1NSw2IEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIK
ICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCIKICNpbmNsdWRlICJK
U0RPTVN0cmluZ0xpc3QuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpT
RE9NV2luZG93QmFzZS5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiSlNEb2N1bWVudC5oIgpAQCAtNjk1Nyw3ICs2OTU2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDlCb2QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8g
d2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8RE9NV2luZG93Pj4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwg
IndpbmRvdyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiRE9NV2luZG93Iik7
IH0pOworICAgIGF1dG8gd2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8V2luZG93UHJveHk+
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAwLCAid2luZG93IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhv
ZCIsICJXaW5kb3dQcm94eSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqd2luZG93
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNzAyOSw3
ICs3MDI4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZE92ZXIKICAgICAgICAgICAgIHJldHVybiBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2Qm9keShzdGF0ZSwgY2Fz
dGVkVGhpcywgdGhyb3dTY29wZSk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09i
amVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNUZXN0T2Jq
Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kOEJvZHkoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwotICAgICAg
ICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiAoYXNPYmplY3QoZGlzdGluZ3Vp
c2hpbmdBcmcpLT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkgfHwgYXNPYmplY3QoZGlzdGlu
Z3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU0RPTVdpbmRvdz4odm0pKSkKKyAgICAgICAgaWYgKGRp
c3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcp
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOUJvZHkoc3RhdGUsIGNhc3RlZFRo
aXMsIHRocm93U2NvcGUpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzPEpTQmxvYj4odm0pKQog
ICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDEzQm9keShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggYzgzZWVlZWRi
ZjQxNjNmODMyYmNkMjUzZWMwNTc1Njg0NmVlZDY4NC4uNzFkZGZjNDg5ZWQyZDVkYTI1NmZiNWM0
MzBiOTMyZWJkYzRmODcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMjg2LDcgKzI4Niw3IEBAIGVudW0gVGVzdENvbmZpZGVu
Y2UgeyAiaGlnaCIsICJraW5kYS1sb3ciIH07CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9k
KERPTVN0cmluZ0xpc3Q/IGxpc3RBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChz
ZXF1ZW5jZTxET01TdHJpbmc+PyBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0
aG9kKFRlc3RPYmogb2JqQXJnKTsKLSAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoRE9NV2lu
ZG93IHdpbmRvdyk7CisgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFdpbmRvd1Byb3h5IHdp
bmRvdyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKHNlcXVlbmNlPERPTVN0cmluZz4g
YXJyYXlBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChzZXF1ZW5jZTx1bnNpZ25l
ZCBsb25nPiBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmlu
ZyBzdHJBcmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCmluZGV4IDBl
MzhhNjcxOGNkMWRhZDJlNzkwMjhiODkwMDU2YTZmY2I2NDJjOTAuLjAwN2FmN2Q3MjRmNWMzZTRh
MGEzNjExMjU2NmM0ODJlZDZmZDU5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NpdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25F
dmVudC5jcHAKQEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb21wb3Np
dGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KCkgPSBkZWZhdWx0OwogCi1Db21wb3NpdGlvbkV2
ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRE9NV2luZG93
KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgOiBVSUV2ZW50KHR5cGUsIHRydWUsIHRy
dWUsIHZpZXcsIDApCitDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKKyAgICA6IFVJRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwg
MCkKICAgICAsIG1fZGF0YShkYXRhKQogewogfQpAQCAtNDUsMTIgKzQ1LDEyIEBAIENvbXBvc2l0
aW9uRXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25z
dCBJbml0JiBpbml0aWFsCiAKIENvbXBvc2l0aW9uRXZlbnQ6On5Db21wb3NpdGlvbkV2ZW50KCkg
PSBkZWZhdWx0OwogCi12b2lkIENvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCit2b2lkIENvbXBvc2l0aW9u
RXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcs
IGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxh
YmxlLCB2aWV3LCAwKTsKKyAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIFdURk1vdmUodmlldyksIDApOwogCiAgICAgbV9kYXRhID0gZGF0YTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCmluZGV4IDhmZjAyZWM5Njk3NzhiODg1YTYzMTcwMjRj
OTU3NDc2ZTAyMWIyYTYuLjNiMWM0NmQ2MzVlY2FmNmNkMDkxOTA5OGY1MDhmYzQxZTY0Y2ViY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaApAQCAtMzIsOSArMzIsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbXBvc2l0aW9uRXZlbnQgZmluYWwgOiBwdWJs
aWMgVUlFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0
cmluZyYgZGF0YSkKKyAgICBzdGF0aWMgUmVmPENvbXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBT
dHJpbmcmIGRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21wb3Np
dGlvbkV2ZW50KHR5cGUsIHZpZXcsIGRhdGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ29tcG9zaXRpb25FdmVudCh0eXBlLCBXVEZNb3ZlKHZpZXcpLCBkYXRhKSk7CiAgICAgfQog
CiAgICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbXBvc2l0aW9uRXZlbnQo
KTsKIAotICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBT
dHJpbmcmIGRhdGEpOworICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAKICAgICBTdHJpbmcgZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBDb21wb3NpdGlvbkV2ZW50KCk7Ci0gICAgQ29tcG9zaXRpb25FdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYpOworICAgIENv
bXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8V2luZG93UHJv
eHk+JiYsIGNvbnN0IFN0cmluZyYpOwogICAgIENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJvb2wgaXNDb21w
b3NpdGlvbkV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zaXRpb25FdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRp
b25FdmVudC5pZGwKaW5kZXggZDg3MjQwODgzZTI3ZDNiMzQ1ODUzOWViOTIwZjRkM2YyODcxNjZj
NC4uMjBhYWM3ZWE0NzcwZDU2NTllZDQwOTEwZDdhYTc5NTA4ZTY2MTgzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIHZvaWQg
aW5pdENvbXBvc2l0aW9uRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZp
bmVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY2Fu
QnViYmxlQXJnID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25h
bCBib29sZWFuIGNhbmNlbGFibGVBcmcgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlld0FyZyA9IG51bGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlld0FyZyA9IG51bGwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBET01TdHJpbmcgZGF0YUFyZyA9
ICJ1bmRlZmluZWQiKTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDg2ZjgzZTcy
NjQyM2FjNDU0MzVkMzJiZWYwNDk0ZTk5NDllMDU0OTkuLjc4ZjhiZTI3ZTk0MGU0OWE2MDM0OTAx
OTcyOWUzNTJkNTI5NmE2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDI4MCw2ICs0
MjgwLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnRha2VET01XaW5kb3dGcm9tKERvY3VtZW50KiBkb2N1
bWVudCkKICAgICBBU1NFUlQobV9kb21XaW5kb3ctPmZyYW1lKCkgPT0gbV9mcmFtZSk7CiB9CiAK
K1dpbmRvd1Byb3h5KiBEb2N1bWVudDo6ZGVmYXVsdFZpZXcoKSBjb25zdAoreworICAgIGlmICgh
bV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZtX2ZyYW1lLT53
aW5kb3dQcm94eSgpOworfQorCiBEb2N1bWVudCYgRG9jdW1lbnQ6OmNvbnRleHREb2N1bWVudCgp
IGNvbnN0CiB7CiAgICAgaWYgKG1fY29udGV4dERvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCBhNGZiMDJmOWUxYmNiZDQwMGIwY2M4NjUyYWJkNDA0ZjAxYzQ1OTVmLi44NWEyNTY1MjFi
N2NiNzgxNjRjYTQ4ZjYwMDFjYjY4NWIwNTdhNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
Nzk5LDcgKzc5OSw3IEBAIHB1YmxpYzoKIAogICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29u
c3QgeyByZXR1cm4gbV9kb21XaW5kb3cuZ2V0KCk7IH0KICAgICAvLyBJbiBET00gTGV2ZWwgMiwg
dGhlIERvY3VtZW50J3MgRE9NV2luZG93IGlzIGNhbGxlZCB0aGUgZGVmYXVsdFZpZXcuCi0gICAg
RE9NV2luZG93KiBkZWZhdWx0VmlldygpIGNvbnN0IHsgcmV0dXJuIGRvbVdpbmRvdygpOyB9IAor
ICAgIFdFQkNPUkVfRVhQT1JUIFdpbmRvd1Byb3h5KiBkZWZhdWx0VmlldygpIGNvbnN0OwogCiAg
ICAgRG9jdW1lbnQmIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4
dERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkgeyBtX2NvbnRleHREb2N1bWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZVdlYWtQdHIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXggMmQ1YmFh
ZDhjNjA2NDRkYTg5ZDEwN2ZkZGUxODI4Y2Q4YTQ5ZDgyYi4uMDhmNzJhOTIwMDBkM2FjMjBhNjQ0
YzBlNWJjMzQ4MmI0NzVlZGE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0xMTMsNyAr
MTEzLDcgQEAgdHlwZWRlZiAoCiAgICAgW0NFUmVhY3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJs
ZURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB3cml0ZWxuKERPTVN0cmluZy4uLiB0
ZXh0KTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24uCi0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVdpbmRvdz8gZGVmYXVsdFZpZXc7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1By
b3h5PyBkZWZhdWx0VmlldzsKICAgICBib29sZWFuIGhhc0ZvY3VzKCk7CiAgICAgW0NFUmVhY3Rp
b25zXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlc2lnbk1vZGU7CiAgICAgW0NFUmVhY3Rpb25zXSBi
b29sZWFuIGV4ZWNDb21tYW5kKERPTVN0cmluZyBjb21tYW5kSWQsIG9wdGlvbmFsIGJvb2xlYW4g
c2hvd1VJID0gZmFsc2UsIG9wdGlvbmFsIERPTVN0cmluZz8gdmFsdWUgPSBudWxsKTsgLy8gRklY
TUU6IHZhbHVlIHNob3VsZCBub3QgYmUgbnVsbGFibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRUb3VjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRU
b3VjaC5jcHAKaW5kZXggM2Q5MTIzZDhmNzUzMmNiNGRiNzlhNGExMzM1ZDVmMTcyOGNjNTA5YS4u
YmRkYWVhNzUzOWYxMDgyMDFmZDk2M2NiZmNmZDFkMDQ3ODM5ZDcxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFRvdWNoLmNwcApAQCAtMzUsMTMgKzM1LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmPFRvdWNoPiBEb2N1bWVudFRvdWNoOjpjcmVhdGVUb3VjaChEb2N1bWVudCYg
ZG9jdW1lbnQsIERPTVdpbmRvdyogd2luZG93LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgaWRl
bnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwg
aW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9hdCBmb3Jj
ZSkKK1JlZjxUb3VjaD4gRG9jdW1lbnRUb3VjaDo6Y3JlYXRlVG91Y2goRG9jdW1lbnQmIGRvY3Vt
ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgd2luZG93LCBFdmVudFRhcmdldCogdGFyZ2V0LCBp
bnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBzY3JlZW5YLCBpbnQgc2Ny
ZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9h
dCBmb3JjZSkKIHsKKyAgICBGcmFtZSogZnJhbWU7CisgICAgaWYgKHdpbmRvdyAmJiBpczxGcmFt
ZT4od2luZG93LT5mcmFtZSgpKSkKKyAgICAgICAgZnJhbWUgPSBkb3duY2FzdDxGcmFtZT4od2lu
ZG93LT5mcmFtZSgpKTsKKyAgICBlbHNlCisgICAgICAgIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUo
KTsKKwogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciBmcm9tIHRoZSBkb2N1bWVudGF0aW9u
IGF0CiAgICAgLy8gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9zYWZhcmkvI2Rv
Y3VtZW50YXRpb24vVXNlckV4cGVyaWVuY2UvUmVmZXJlbmNlL0RvY3VtZW50QWRkaXRpb25zUmVm
ZXJlbmNlL0RvY3VtZW50QWRkaXRpb25zL0RvY3VtZW50QWRkaXRpb25zLmh0bWwKICAgICAvLyB3
aGVuIHRoaXMgbWV0aG9kIHNob3VsZCB0aHJvdyBhbmQgbm9yIGlzIGl0IGJ5IGluc3BlY3Rpb24g
b2YgaU9TIGJlaGF2aW9yLiBJdCB3b3VsZCBiZSBuaWNlIHRvIHZlcmlmeSBhbnkgY2FzZXMgd2hl
cmUgaXQgdGhyb3dzIHVuZGVyIGlPUwogICAgIC8vIGFuZCBpbXBsZW1lbnQgdGhlbSBoZXJlLiBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3ODE5Ci0gICAgcmV0
dXJuIFRvdWNoOjpjcmVhdGUod2luZG93ID8gd2luZG93LT5mcmFtZSgpIDogZG9jdW1lbnQuZnJh
bWUoKSwgdGFyZ2V0LCBpZGVudGlmaWVyLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVks
IHJhZGl1c1gsIHJhZGl1c1ksIHJvdGF0aW9uQW5nbGUsIGZvcmNlKTsKKyAgICByZXR1cm4gVG91
Y2g6OmNyZWF0ZShmcmFtZSwgdGFyZ2V0LCBpZGVudGlmaWVyLCBzY3JlZW5YLCBzY3JlZW5ZLCBw
YWdlWCwgcGFnZVksIHJhZGl1c1gsIHJhZGl1c1ksIHJvdGF0aW9uQW5nbGUsIGZvcmNlKTsKIH0K
IAogUmVmPFRvdWNoTGlzdD4gRG9jdW1lbnRUb3VjaDo6Y3JlYXRlVG91Y2hMaXN0KERvY3VtZW50
JiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmIHRvdWNoZXMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50VG91Y2guaAppbmRleCBlMGRhZjUwNTJjYzk3ODUyYzhhMDRiYmE3M2U1
ZjZhMTE2ZjEwZTUxLi43MmM0ODg4YjQ1YWI0MDBlMjliYzhhZWQ4NmRlNGM1OTAzZWFjMjIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmgKQEAgLTM0LDE1ICszNCwxNSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIERvY3VtZW50OwogY2xh
c3MgRXZlbnRUYXJnZXQ7CiBjbGFzcyBUb3VjaDsKIGNsYXNzIFRvdWNoTGlzdDsKK2NsYXNzIFdp
bmRvd1Byb3h5OwogCiBjbGFzcyBEb2N1bWVudFRvdWNoIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFRvdWNoPiBjcmVhdGVUb3VjaChEb2N1bWVudCYsIERPTVdpbmRvdyosIEV2ZW50VGFyZ2V0
KiwgaW50IGlkZW50aWZpZXIsIGludCBwYWdlWCwgaW50IHBhZ2VZLCBpbnQgc2NyZWVuWCwgaW50
IHNjcmVlblksIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSwgZmxvYXQgcm90YXRpb25BbmdsZSwg
ZmxvYXQgZm9yY2UpOworICAgIHN0YXRpYyBSZWY8VG91Y2g+IGNyZWF0ZVRvdWNoKERvY3VtZW50
JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBFdmVudFRhcmdldCosIGludCBpZGVudGlmaWVyLCBp
bnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcmFkaXVz
WCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKTsKICAgICBz
dGF0aWMgUmVmPFRvdWNoTGlzdD4gY3JlYXRlVG91Y2hMaXN0KERvY3VtZW50JiwgVmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFRvdWNoLmlkbAppbmRleCA3YTI3Mzc0NTg2NTQ5OTFiMTFiNTU2MzA4OWUyMTk1N2NjNGM0
ZTRhLi4wNDg5YTM2YWQ2YjEyNTAzY2RiNDZhZjE0OGNiNTljZmFmZDY3NWJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50VG91Y2guaWRsCkBAIC0yMiw3ICsyMiw3IEBACiAgICAgQ29uZGl0aW9u
YWw9VE9VQ0hfRVZFTlRTCiBdIHBhcnRpYWwgaW50ZXJmYWNlIERvY3VtZW50IHsKICAgICAvLyBG
SVhNRTogVGhpcyBoYXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlIHN0YW5kYXJkIG5vdyB0aGF0IFRv
dWNoIGhhcyBhIGNvbnN0cnVjdG9yLgotICAgIFtOZXdPYmplY3RdIFRvdWNoIGNyZWF0ZVRvdWNo
KG9wdGlvbmFsIERPTVdpbmRvdz8gd2luZG93ID0gbnVsbCwgb3B0aW9uYWwgRXZlbnRUYXJnZXQ/
IHRhcmdldCA9IG51bGwsCisgICAgW05ld09iamVjdF0gVG91Y2ggY3JlYXRlVG91Y2gob3B0aW9u
YWwgV2luZG93UHJveHk/IHdpbmRvdyA9IG51bGwsIG9wdGlvbmFsIEV2ZW50VGFyZ2V0PyB0YXJn
ZXQgPSBudWxsLAogICAgICAgICBvcHRpb25hbCBsb25nIGlkZW50aWZpZXIgPSAwLAogICAgICAg
ICBvcHRpb25hbCBsb25nIHBhZ2VYID0gMCwgb3B0aW9uYWwgbG9uZyBwYWdlWSA9IDAsIG9wdGlv
bmFsIGxvbmcgc2NyZWVuWCA9IDAsIG9wdGlvbmFsIGxvbmcgc2NyZWVuWSA9IDAsCiAgICAgICAg
IG9wdGlvbmFsIGxvbmcgd2Via2l0UmFkaXVzWCA9IDAsIG9wdGlvbmFsIGxvbmcgd2Via2l0UmFk
aXVzWSA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAKaW5kZXggMTZkOGIzZmYwNzhkMDVh
ZDkxZTJkNjkxNDY3MTkxMjg1NWQ3YzQ4NC4uOTg2ODc3MzI2Y2UzZmFlNGJiMDU5ZTdjMTY0ZDdi
YzE4YWE5ZGZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcApAQCAtNDAsOCArNDAsOCBA
QCBib29sIEZvY3VzRXZlbnQ6OmlzRm9jdXNFdmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLUZvY3VzRXZlbnQ6OkZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRh
aWwsIFJlZlB0cjxFdmVudFRhcmdldD4mJiByZWxhdGVkVGFyZ2V0KQotICAgIDogVUlFdmVudCh0
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCkKK0ZvY3VzRXZlbnQ6OkZv
Y3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBj
YW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgUmVmUHRy
PEV2ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpCisgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKQogICAgICwgbV9yZWxhdGVk
VGFyZ2V0KFdURk1vdmUocmVsYXRlZFRhcmdldCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRm9jdXNFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQu
aAppbmRleCAwNjcyNTU3NGMwNmI5MWYyOWZiNGY5NmEwYjFiNTYxMzRmMTk2ODU0Li5jN2E0ZGY4
ZTc3NDMyY2ZlMzY0YTEzNGY4ZGU1MTUxNmEwNTdiODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRm9jdXNFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50
LmgKQEAgLTM1LDkgKzM1LDkgQEAgY2xhc3MgTm9kZTsKIAogY2xhc3MgRm9jdXNFdmVudCBmaW5h
bCA6IHB1YmxpYyBVSUV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZvY3VzRXZlbnQ+
IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0
PiYmIHJlbGF0ZWRUYXJnZXQpCisgICAgc3RhdGljIFJlZjxGb2N1c0V2ZW50PiBjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0
PiYmIHJlbGF0ZWRUYXJnZXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
b2N1c0V2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCBXVEZN
b3ZlKHJlbGF0ZWRUYXJnZXQpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvY3Vz
RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWws
IFdURk1vdmUocmVsYXRlZFRhcmdldCkpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPEZvY3Vz
RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIEZvY3VzRXZlbnQoKSA9IGRlZmF1bHQ7Ci0gICAgRm9jdXNFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERP
TVdpbmRvdyosIGludCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmKTsKKyAgICBGb2N1c0V2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
UmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQsIFJlZlB0cjxFdmVudFRhcmdldD4mJik7CiAgICAg
Rm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmLCBJc1RydXN0
ZWQpOwogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmNwcAppbmRleCBkNDQ5Mjk0ZmVjNmJjNzk3MGQ2YzQyYzRi
OTdhYjE2MWM0ZjViMWYwLi5jMTdiZjE4ZDg4YTY3NjQ3MmExODcxNjNlN2I0NTE0Zjg0NDAwYTBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuY3BwCkBAIC0yNiwyMCArMjYsMjAgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnB1dEV2ZW50LmgiCiAKLSNpbmNsdWRlICJET01X
aW5kb3cuaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJOb2RlLmgiCisj
aW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVmPElucHV0RXZlbnQ+IElucHV0RXZlbnQ6OmNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFdlYkNvcmU6OkRPTVdpbmRvdyAqdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29u
c3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwp
CitSZWY8SW5wdXRFdmVudD4gSW5wdXRFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0
YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiBkYXRhVHJhbnNmZXIsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQoZXZlbnRUeXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgdmlldywgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRS
YW5nZXMsIGRldGFpbCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQoZXZl
bnRUeXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwg
ZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRSYW5nZXMsIGRldGFpbCkpOwogfQog
Ci1JbnB1dEV2ZW50OjpJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBj
b25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
RE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+
JiYgZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdl
dFJhbmdlcywgaW50IGRldGFpbCkKLSAgICA6IFVJRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUs
IGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCkKK0lucHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29u
c3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwp
CisgICAgOiBVSUV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3Zl
KHZpZXcpLCBkZXRhaWwpCiAgICAgLCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAgLCBtX2Rh
dGEoZGF0YSkKICAgICAsIG1fZGF0YVRyYW5zZmVyKGRhdGFUcmFuc2ZlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5w
dXRFdmVudC5oCmluZGV4IGNhZDhkY2U3YjM2MjZkOWEyMjc2MzRiMzU4OTI2YzFmMTI1NDY4MWIu
LmQwNTA3NjM5YzZjODljOTlkNGQzMGExY2U5MzZmOTE2MWI5YzRlZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lu
cHV0RXZlbnQuaApAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIERPTVdpbmRvdzsKIGNsYXNzIERhdGFUcmFuc2ZlcjsKK2NsYXNzIFdpbmRvd1Byb3h5Owog
CiBjbGFzcyBJbnB1dEV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogcHVibGljOgpAQCAt
MzksMTMgKzM5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIGRhdGE7CiAgICAgfTsKIAot
ICAgIHN0YXRpYyBSZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRh
VHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFu
Z2VzLCBpbnQgZGV0YWlsKTsKKyAgICBzdGF0aWMgUmVmPElucHV0RXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBj
b25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKICAgICBzdGF0
aWMgUmVmPElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0
IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQodHlwZSwgaW5p
dGlhbGl6ZXIsIGlzVHJ1c3RlZCkpOwogICAgIH0KIAotICAgIElucHV0RXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFJl
ZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYg
dGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKKyAgICBJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRh
dGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFu
Z2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKICAgICBJbnB1dEV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJv
b2wgaXNJbnB1dEV2ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCmluZGV4IDRkYTEwMTc3MjVmZTg5MmNmYThkYWNmMGY1
YjcwODFkY2M2Y2ZiZTkuLjRhY2I1ZjRjZWI3NjBlMTcwZjEwN2NlYTM4NjA5ODlmNjcyNjRlYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAKKyNpbmNsdWRl
ICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVkaXRvci5o
IgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgpAQCAtOTIsOCArOTMsOCBAQCBzdGF0aWMgaW5s
aW5lIEtleWJvYXJkRXZlbnQ6OktleUxvY2F0aW9uQ29kZSBrZXlMb2NhdGlvbkNvZGUoY29uc3Qg
UGxhdGZvcm1LZXlibwogCiBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudCgpID0g
ZGVmYXVsdDsKIAotaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxh
dGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIERPTVdpbmRvdyogdmlldykKLSAgICA6IFVJRXZlbnRX
aXRoS2V5U3RhdGUoZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUoa2V5LnR5cGUoKSksIHRy
dWUsIHRydWUsIGtleS50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgdmll
dywgMCwga2V5LmN0cmxLZXkoKSwga2V5LmFsdEtleSgpLCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1l
dGFLZXkoKSwgZmFsc2UsIGtleS5tb2RpZmllcnMoKS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpN
b2RpZmllcjo6Q2Fwc0xvY2tLZXkpKQoraW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZl
bnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIFJlZlB0cjxXaW5kb3dQcm94eT4m
JiB2aWV3KQorICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGVGb3JLZXlib2FyZEV2
ZW50VHlwZShrZXkudHlwZSgpKSwgdHJ1ZSwgdHJ1ZSwga2V5LnRpbWVzdGFtcCgpLmFwcHJveGlt
YXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LmNvcHlSZWYoKSwgMCwga2V5LmN0cmxLZXkoKSwga2V5
LmFsdEtleSgpLCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1ldGFLZXkoKSwgZmFsc2UsIGtleS5tb2Rp
ZmllcnMoKS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tLZXkpKQog
ICAgICwgbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudD4oa2V5KSkKICNpZiBFTkFCTEUoS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkK
ICAgICAsIG1fa2V5KGtleS5rZXkoKSkKQEAgLTEwNCw3ICsxMDUsNyBAQCBpbmxpbmUgS2V5Ym9h
cmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwg
RE9NV2luZG93KgogICAgICwgbV9rZXlJZGVudGlmaWVyKGtleS5rZXlJZGVudGlmaWVyKCkpCiAg
ICAgLCBtX2xvY2F0aW9uKGtleUxvY2F0aW9uQ29kZShrZXkpKQogICAgICwgbV9yZXBlYXQoa2V5
LmlzQXV0b1JlcGVhdCgpKQotICAgICwgbV9pc0NvbXBvc2luZyh2aWV3ICYmIHZpZXctPmZyYW1l
KCkgJiYgdmlldy0+ZnJhbWUoKS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkKKyAgICAsIG1f
aXNDb21wb3NpbmcodmlldyAmJiBpczxET01XaW5kb3c+KHZpZXctPndpbmRvdygpKSAmJiBkb3du
Y2FzdDxET01XaW5kb3c+KCp2aWV3LT53aW5kb3coKSkuZnJhbWUoKSAmJiBkb3duY2FzdDxET01X
aW5kb3c+KCp2aWV3LT53aW5kb3coKSkuZnJhbWUoKS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24o
KSkKICNpZiBVU0UoQVBQS0lUKQogICAgICwgbV9oYW5kbGVkQnlJbnB1dE1ldGhvZChrZXkuaGFu
ZGxlZEJ5SW5wdXRNZXRob2QoKSkKICAgICAsIG1fa2V5cHJlc3NDb21tYW5kcyhrZXkuY29tbWFu
ZHMoKSkKQEAgLTEzMiw5ICsxMzMsOSBAQCBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgSW5pdCYgaQogCiBLZXli
b2FyZEV2ZW50Ojp+S2V5Ym9hcmRFdmVudCgpID0gZGVmYXVsdDsKIAotUmVmPEtleWJvYXJkRXZl
bnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIHBs
YXRmb3JtRXZlbnQsIERPTVdpbmRvdyogdmlldykKK1JlZjxLZXlib2FyZEV2ZW50PiBLZXlib2Fy
ZEV2ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBwbGF0Zm9ybUV2ZW50
LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBLZXlib2FyZEV2ZW50KHBsYXRmb3JtRXZlbnQsIHZpZXcpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBLZXlib2FyZEV2ZW50KHBsYXRmb3JtRXZlbnQsIFdURk1vdmUodmlldykpKTsKIH0K
IAogUmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzKCkK
QEAgLTE0NywxMyArMTQ4LDEzIEBAIFJlZjxLZXlib2FyZEV2ZW50PiBLZXlib2FyZEV2ZW50Ojpj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpCiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgS2V5Ym9hcmRFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVk
KSk7CiB9CiAKLXZvaWQgS2V5Ym9hcmRFdmVudDo6aW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5k
b3cqIHZpZXcsCit2b2lkIEtleWJvYXJkRXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRy
PFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCB1
bnNpZ25lZCBsb2NhdGlvbiwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtl
eSwgYm9vbCBtZXRhS2V5LCBib29sIGFsdEdyYXBoS2V5KQogewogICAgIGlmIChpc0JlaW5nRGlz
cGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAgICBtX2tleUlkZW50aWZp
ZXIgPSBrZXlJZGVudGlmaWVyOwogICAgIG1fbG9jYXRpb24gPSBsb2NhdGlvbjsKQEAgLTIyNyw4
ICsyMjgsOSBAQCBpbnQgS2V5Ym9hcmRFdmVudDo6Y2hhckNvZGUoKSBjb25zdAogICAgIC8vIEZp
cmVmb3g6IDAgZm9yIGtleWRvd24va2V5dXAgZXZlbnRzLCBjaGFyYWN0ZXIgY29kZSBmb3Iga2V5
cHJlc3MKICAgICAvLyBXZSBtYXRjaCBGaXJlZm94LCB1bmxlc3MgaW4gYmFja3dhcmQgY29tcGF0
aWJpbGl0eSBtb2RlLCB3aGVyZSB3ZSBhbHdheXMgcmV0dXJuIHRoZSBjaGFyYWN0ZXIgY29kZS4K
ICAgICBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUgPSBmYWxzZTsKLSAgICBpZiAodmll
dygpICYmIHZpZXcoKS0+ZnJhbWUoKSkKLSAgICAgICAgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9k
ZSA9IHZpZXcoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkubmVlZHNLZXlib2FyZEV2ZW50RGlz
YW1iaWd1YXRpb25RdWlya3MoKTsKKyAgICBhdXRvKiB3aW5kb3cgPSB2aWV3KCkgPyB2aWV3KCkt
PndpbmRvdygpIDogbnVsbHB0cjsKKyAgICBpZiAoaXM8RE9NV2luZG93Pih3aW5kb3cpICYmIGRv
d25jYXN0PERPTVdpbmRvdz4oKndpbmRvdykuZnJhbWUoKSkKKyAgICAgICAgYmFja3dhcmRDb21w
YXRpYmlsaXR5TW9kZSA9IGRvd25jYXN0PERPTVdpbmRvdz4oKndpbmRvdykuZnJhbWUoKS0+ZXZl
bnRIYW5kbGVyKCkubmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25RdWlya3MoKTsKIAog
ICAgIGlmICghbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudCB8fCAodHlwZSgpICE9IGV2ZW50TmFt
ZXMoKS5rZXlwcmVzc0V2ZW50ICYmICFiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKSkKICAgICAg
ICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaAppbmRleCA4MjEwMzMwZWFi
MDM0MWY0Y2E1NGNkMjVjNThiOTk1NDZmMGIxNWE5Li4xZDNjYzI0Mzc5OWIxOWE3NDRlZTk3OGEx
ODdlYWVhZWM4ODA1ZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRF
dmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogICAgICAgICBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCA9IDB4MDMK
ICAgICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxLZXlib2FyZEV2ZW50PiBj
cmVhdGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxLZXlib2FyZEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZv
cm1LZXlib2FyZEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAgICBzdGF0aWMgUmVm
PEtleWJvYXJkRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBzdHJ1Y3QgSW5pdCA6
IHB1YmxpYyBFdmVudE1vZGlmaWVySW5pdCB7CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgfktleWJvYXJkRXZlbnQoKTsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAogICAgICAgICBj
b25zdCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIHVuc2lnbmVkIGxvY2F0aW9uLAogICAgICAgICBi
b29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIGJv
b2wgYWx0R3JhcGhLZXkgPSBmYWxzZSk7CiAgICAgCkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIEtleWJvYXJkRXZlbnQoKTsKLSAgICBLZXlib2FyZEV2ZW50KGNv
bnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYsIERPTVdpbmRvdyopOworICAgIEtleWJvYXJkRXZl
bnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsK
ICAgICBLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEluaXQmLCBJc1Ry
dXN0ZWQpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4gbV91
bmRlcmx5aW5nUGxhdGZvcm1FdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9L
ZXlib2FyZEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmlkbApp
bmRleCA3NTdjMDc3OTNmNWU1ZjFlMTg0MzhmNzhkZDQ0N2U5YTNhMWQ1MTA5Li5jZGU0NTBjMzQz
NTMzNTA5MmExNzdkNmRmNjM2OGJmNjM1MWQ3MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vS2V5Ym9hcmRFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJk
RXZlbnQuaWRsCkBAIC01Miw3ICs1Miw3IEBACiAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBub3Qg
bWF0Y2ggdGhlIHZlcnNpb24gaW4gdGhlIERPTSBzcGVjLgogICAgIC8vIEZJWE1FOiBVc2luZyAi
dW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KICAgICB2b2lk
IGluaXRLZXlib2FyZEV2ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIs
IG9wdGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2Fu
Y2VsYWJsZSA9IGZhbHNlLAotICAgICAgICBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxs
LCBvcHRpb25hbCBET01TdHJpbmcga2V5SWRlbnRpZmllciA9ICJ1bmRlZmluZWQiLCBvcHRpb25h
bCB1bnNpZ25lZCBsb25nIGxvY2F0aW9uID0gMCwKKyAgICAgICAgb3B0aW9uYWwgV2luZG93UHJv
eHk/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBET01TdHJpbmcga2V5SWRlbnRpZmllciA9ICJ1bmRl
ZmluZWQiLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGxvY2F0aW9uID0gMCwKICAgICAgICAgb3B0
aW9uYWwgYm9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0g
ZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVh
biBtZXRhS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0R3JhcGhLZXkgPSBmYWxzZSk7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggNTE5N2Q1YmFlMWFlMzVhYWIw
NGYwY2I1MGU3NmU5ZDhmYWExOGI3OS4uMzMwOTI3ODdkMTRhZTY1NzNlYTFiOWQxZmQ5YTdkMGVl
ZTBmNDAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMjcsMTIgKzI3LDEyIEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZl
bnQuaCIKICNpbmNsdWRlICJKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVBvcnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyLmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCw5ICs0MCw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2I7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi11c2luZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+
LCBSZWZQdHI8TWVzc2FnZVBvcnQ+LCBSZWZQdHI8U2VydmljZVdvcmtlcj4+OwordXNpbmcgTWVz
c2FnZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8TWVz
c2FnZVBvcnQ+LCBSZWZQdHI8U2VydmljZVdvcmtlcj4+OwogI2Vsc2UKLXVzaW5nIE1lc3NhZ2VF
dmVudFNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxNZXNzYWdlUG9y
dD4+OwordXNpbmcgTWVzc2FnZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8V2luZG93UHJv
eHk+LCBSZWZQdHI8TWVzc2FnZVBvcnQ+PjsKICNlbmRpZgogCiBjbGFzcyBNZXNzYWdlRXZlbnQg
ZmluYWwgOiBwdWJsaWMgRXZlbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAppbmRl
eCAwMjQzOGZkNGM0N2MzZmMyOTJlYWJmNDdlNWM1ZTgzZjg2OTUwODIyLi5mYTQ4YzhmYTVkYTVm
ZGMzZTBmMmMyZjdlZmJmYTc1Y2Q4ZjU0MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50
LmlkbApAQCAtMjcsOSArMjcsOSBAQAogICovCiAKICNpZiBkZWZpbmVkKEVOQUJMRV9TRVJWSUNF
X1dPUktFUikgJiYgRU5BQkxFX1NFUlZJQ0VfV09SS0VSCi10eXBlZGVmIChET01XaW5kb3cgb3Ig
TWVzc2FnZVBvcnQgb3IgU2VydmljZVdvcmtlcikgTWVzc2FnZUV2ZW50U291cmNlOwordHlwZWRl
ZiAoV2luZG93UHJveHkgb3IgTWVzc2FnZVBvcnQgb3IgU2VydmljZVdvcmtlcikgTWVzc2FnZUV2
ZW50U291cmNlOwogI2Vsc2UKLXR5cGVkZWYgKERPTVdpbmRvdyBvciBNZXNzYWdlUG9ydCkgTWVz
c2FnZUV2ZW50U291cmNlOwordHlwZWRlZiAoV2luZG93UHJveHkgb3IgTWVzc2FnZVBvcnQpIE1l
c3NhZ2VFdmVudFNvdXJjZTsKICNlbmRpZgogCiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTW91c2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAK
aW5kZXggYTE0N2UxMjE4YmI2ZTI0ZjJhZDc2NDcwNzQ2MGM2NjcwMjFmNmM1OS4uYzg5NmY4NjMx
YTNkMmJiZGExOTMwNjIxMGZlZGRiODk4NmU0Y2E2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL01vdXNlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50
LmNwcApAQCAtNDQsMTMgKzQ0LDEzIEBAIFJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNb3VzZUV2ZW50SW5pCiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVk
KSk7CiB9CiAKLVJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIERPTVdpbmRvdyogdmlldywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBldmVudCwgaW50IGRldGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCkKK1JlZjxNb3VzZUV2
ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50
LCBpbnQgZGV0YWlsLCBOb2RlKiByZWxhdGVkVGFyZ2V0KQogewogICAgIGJvb2wgaXNNb3VzZUVu
dGVyT3JMZWF2ZSA9IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2VlbnRlckV2ZW50IHx8
IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2VsZWF2ZUV2ZW50OwogICAgIGJvb2wgaXND
YW5jZWxhYmxlID0gZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCAmJiAh
aXNNb3VzZUVudGVyT3JMZWF2ZTsKICAgICBib29sIGNhbkJ1YmJsZSA9ICFpc01vdXNlRW50ZXJP
ckxlYXZlOwogCi0gICAgcmV0dXJuIE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGNhbkJ1
YmJsZSwgaXNDYW5jZWxhYmxlLCBldmVudC50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25p
Y1RpbWUoKSwgdmlldywKKyAgICByZXR1cm4gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwg
Y2FuQnViYmxlLCBpc0NhbmNlbGFibGUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9u
b3RvbmljVGltZSgpLCBXVEZNb3ZlKHZpZXcpLAogICAgICAgICBkZXRhaWwsIGV2ZW50Lmdsb2Jh
bFBvc2l0aW9uKCkueCgpLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLnkoKSwgZXZlbnQucG9zaXRp
b24oKS54KCksIGV2ZW50LnBvc2l0aW9uKCkueSgpLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CiAgICAgICAgIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS54KCksIGV2ZW50Lm1vdmVtZW50RGVsdGEo
KS55KCksCkBAIC01OSwxMyArNTksMTMgQEAgUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWUKICAgICAg
ICAgcmVsYXRlZFRhcmdldCwgZXZlbnQuZm9yY2UoKSwgZXZlbnQuc3ludGhldGljQ2xpY2tUeXBl
KCkpOwogfQogCi1SZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3Rvbmlj
VGltZSB0aW1lc3RhbXAsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgs
IGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKK1JlZjxNb3VzZUV2ZW50PiBNb3Vz
ZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1By
b3h5PiYmIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBh
Z2VYLCBpbnQgcGFnZVksCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBpbnQgbW92ZW1l
bnRYLCBpbnQgbW92ZW1lbnRZLAogI2VuZGlmCiAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtl
eSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVu
c2lnbmVkIHNob3J0IGJ1dHRvbnMsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0LCBkb3VibGUg
Zm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRGF0YVRyYW5zZmVyKiBk
YXRhVHJhbnNmZXIsIGJvb2wgaXNTaW11bGF0ZWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTW91c2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgdmll
dywKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwg
Y2FuY2VsYWJsZSwgdGltZXN0YW1wLCBXVEZNb3ZlKHZpZXcpLAogICAgICAgICBkZXRhaWwsIHsg
c2NyZWVuWCwgc2NyZWVuWSB9LCB7IHBhZ2VYLCBwYWdlWSB9LAogI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCiAgICAgICAgIHsgbW92ZW1lbnRYLCBtb3ZlbWVudFkgfSwKQEAgLTczLDE5ICs3Mywx
OSBAQCBSZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvbwogICAgICAgICBjdHJsS2V5LCBhbHRLZXksIHNo
aWZ0S2V5LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHJlbGF0ZWRUYXJnZXQsIGZvcmNlLCBz
eW50aGV0aWNDbGlja1R5cGUsIGRhdGFUcmFuc2ZlciwgaXNTaW11bGF0ZWQpKTsKIH0KIAotUmVm
PE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBp
bnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xp
ZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRh
S2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2ln
bmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQp
CitSZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQg
Y2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hp
ZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9y
dCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0
KiByZWxhdGVkVGFyZ2V0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQo
ZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCwgeyBzY3JlZW5Y
LCBzY3JlZW5ZIH0sIHsgY2xpZW50WCwgY2xpZW50WSB9LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHN5bnRoZXRpY0NsaWNrVHlwZSwgcmVsYXRl
ZFRhcmdldCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQoZXZlbnRUeXBl
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRldGFpbCwgeyBzY3JlZW5Y
LCBzY3JlZW5ZIH0sIHsgY2xpZW50WCwgY2xpZW50WSB9LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHN5bnRoZXRpY0NsaWNrVHlwZSwgcmVsYXRl
ZFRhcmdldCkpOwogfQogCiBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KCkgPSBkZWZhdWx0OwogCi1N
b3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9N
V2luZG93KiB2aWV3LCBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24s
IGNvbnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKK01vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmll
dywgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQ
b2ludCYgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAg
Y29uc3QgSW50UG9pbnQmIG1vdmVtZW50RGVsdGEsCiAjZW5kaWYKICAgICAgICAgYm9vbCBjdHJs
S2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBz
aG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIEV2ZW50VGFyZ2V0KiByZWxhdGVk
VGFyZ2V0LCBkb3VibGUgZm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwg
RGF0YVRyYW5zZmVyKiBkYXRhVHJhbnNmZXIsIGJvb2wgaXNTaW11bGF0ZWQpCi0gICAgOiBNb3Vz
ZVJlbGF0ZWRFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1w
LCB2aWV3LCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB3aW5kb3dMb2NhdGlvbiwKKyAgICA6IE1v
dXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3Rh
bXAsIFdURk1vdmUodmlldyksIGRldGFpbCwgc2NyZWVuTG9jYXRpb24sIHdpbmRvd0xvY2F0aW9u
LAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIG1vdmVtZW50RGVsdGEsCiAjZW5k
aWYKQEAgLTEwMCw4ICsxMDAsOCBAQCBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZQogewogfQogCi1N
b3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWws
IGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExv
Y2F0aW9uLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1l
dGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgdW5z
aWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdl
dCkKLSAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxh
YmxlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgdmlldywgZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwg
eyB9LAorTW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYm
IHZpZXcsIGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudExvY2F0aW9uLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29s
IHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQg
c2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRh
cmdldCogcmVsYXRlZFRhcmdldCkKKyAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwg
Y2FuQnViYmxlLCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3
KSwgZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwgeyB9LAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CiAgICAgICAgIHsgfSwKICNlbmRpZgpAQCAtMTI3LDEyICsxMjcsMTIgQEAgTW91c2VFdmVudDo6
TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgTW91c2VFdmVu
dEluaXQmIGluaXQKIAogTW91c2VFdmVudDo6fk1vdXNlRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLXZv
aWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRh
aWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBi
b29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVu
c2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCit2b2lkIE1v
dXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGlu
dCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGll
bnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCiB7
CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlu
aXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKTsKKyAg
ICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyks
IGRldGFpbCk7CiAKICAgICBtX3NjcmVlbkxvY2F0aW9uID0gSW50UG9pbnQoc2NyZWVuWCwgc2Ny
ZWVuWSk7CiAgICAgbV9jdHJsS2V5ID0gY3RybEtleTsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lk
IE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgYwogCiAvLyBGSVhNRTogV2UgbmVlZCB0aGlzIHF1aXJrIGJlY2F1
c2UgaUFkIFByb2R1Y2VyIGlzIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aXRoIGEgcmVsYXRlZFRh
cmdldCB0aGF0IGlzIG5vdCBhbiBFdmVudFRhcmdldCAocmRhcjovL3Byb2JsZW0vMzA2NDAxMDEp
LgogLy8gV2Ugc2hvdWxkIHJlbW92ZSB0aGlzIHF1aXJrIHdoZW4gcG9zc2libGUuCi12b2lkIE1v
dXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmsoRXhlY1N0YXRlJiBzdGF0ZSwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcs
IGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBj
bGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1l
dGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgSlNWYWx1ZSByZWxhdGVkVGFyZ2V0VmFsdWUp
Cit2b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmsoRXhlY1N0YXRlJiBzdGF0ZSwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5Z
LCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJv
b2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBKU1ZhbHVl
IHJlbGF0ZWRUYXJnZXRWYWx1ZSkKIHsKICAgICBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCA9
IG51bGxwdHI7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTW91
c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayhFeGVjU3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBzCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIH0KICNlbmRpZgotICAgIGlu
aXRNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCBz
Y3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5LCBidXR0b24sIHJlbGF0ZWRUYXJnZXQpOworICAgIGluaXRNb3VzZUV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCBzY3Jl
ZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBidXR0b24sIHJlbGF0ZWRUYXJnZXQpOwogfQogCiBFdmVudEludGVyZmFjZSBN
b3VzZUV2ZW50OjpldmVudEludGVyZmFjZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaApp
bmRleCAyNmNhZjhmNmIxOTE1MTY2OGI2ODAzNTU0YTBiMDAxNjRkM2UxZmNmLi40YjI4MDc5OTU1
YjRjYjczYTJjZTE2OGViNWExMzlkNzMxNTZhOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTW91c2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgK
QEAgLTI5LDE5ICsyOSwyMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhVHJh
bnNmZXI7CitjbGFzcyBOb2RlOwogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogCiBjbGFzcyBN
b3VzZUV2ZW50IDogcHVibGljIE1vdXNlUmVsYXRlZEV2ZW50IHsKIHB1YmxpYzoKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUg
dGltZXN0YW1wLCBET01XaW5kb3cqLCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVl
blksIGludCBwYWdlWCwgaW50IHBhZ2VZLAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5k
b3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFn
ZVgsIGludCBwYWdlWSwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBpbnQgbW92
ZW1lbnRYLCBpbnQgbW92ZW1lbnRZLAogI2VuZGlmCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9v
bCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0
dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCwg
ZG91YmxlIGZvcmNlLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIERhdGFUcmFu
c2ZlciogPSBudWxscHRyLCBib29sIGlzU2ltdWxhdGVkID0gZmFsc2UpOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGludCBk
ZXRhaWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGludCBkZXRhaWws
IE5vZGUqIHJlbGF0ZWRUYXJnZXQpOwogCi0gICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVu
WSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBi
b29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWdu
ZWQgc2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVu
dFRhcmdldCogcmVsYXRlZFRhcmdldCk7CisgICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgs
IGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9v
bCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0
dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlj
a1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KTsKIAogICAgIHN0YXRpYyBSZWY8TW91
c2VFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNl
RXZlbnQpOyB9CiAKQEAgLTQ5LDggKzUwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+TW91
c2VFdmVudCgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0TW91c2VFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERP
TVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVu
dFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0
ZWRUYXJnZXQpOwotICAgIHZvaWQgaW5pdE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4ZWNTdGF0ZSYs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBz
Y3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxL
ZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNo
b3J0IGJ1dHRvbiwgSlNDOjpKU1ZhbHVlIHJlbGF0ZWRUYXJnZXQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgaW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRh
aWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBi
b29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVu
c2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpOworICAgIHZv
aWQgaW5pdE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4ZWNTdGF0ZSYsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgs
IGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9v
bCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0
dG9uLCBKU0M6OkpTVmFsdWUgcmVsYXRlZFRhcmdldCk7CiAKICAgICB1bnNpZ25lZCBzaG9ydCBi
dXR0b24oKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbjsgfQogICAgIHVuc2lnbmVkIHNob3J0IGJ1
dHRvbnMoKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbnM7IH0KQEAgLTcwLDcgKzcxLDcgQEAgcHVi
bGljOgogICAgIGludCB3aGljaCgpIGNvbnN0IGZpbmFsOwogCiBwcm90ZWN0ZWQ6Ci0gICAgTW91
c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqLAorICAgIE1vdXNl
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAog
ICAgICAgICBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0
IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAg
ICAgICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKQEAgLTc4LDcgKzc5LDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0
dG9ucywKICAgICAgICAgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwg
dW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIqLCBib29sIGlz
U2ltdWxhdGVkKTsKIAotICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLAorICAgIE1vdXNlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IElu
dFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExvY2F0aW9uLAog
ICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1l
dGFLZXksCiAgICAgICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0
dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVs
YXRlZFRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwKaW5kZXggMGJlMGY4OGRkMzVk
N2NkZmI4ZDM1NDJkYWRlMTZlMzI5NGZkYzgzYS4uNjBjNDQ2NjY3MWYwNjE5ZmVlMDlkMGYwMTkz
ZjlhNDFmNmIzZTgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmlkbApAQCAtNDMsNyArNDMs
NyBAQAogICAgIC8vIEZJWE1FOiByZWxhdGVkVGFyZ2V0IHNob3VsZCBiZSBvZiB0eXBlIEV2ZW50
VGFyZ2V0PyBidXQgd2UgbmVlZCB0byB1c2UgYW55IHRvIHN1cHBvcnQgYSBxdWlyayBmb3IgaUFk
IFByb2R1Y2VyIChyZGFyOi8vcHJvYmxlbS8zMDY0MDEwMSkuCiAgICAgW0NhbGxXaXRoPVNjcmlw
dFN0YXRlJlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9aW5pdE1vdXNlRXZl
bnRRdWlya10gdm9pZCBpbml0TW91c2VFdmVudChvcHRpb25hbCBET01TdHJpbmcgdHlwZSA9ICJ1
bmRlZmluZWQiLAogICAgICAgICBvcHRpb25hbCBib29sZWFuIGNhbkJ1YmJsZSA9IGZhbHNlLCBv
cHRpb25hbCBib29sZWFuIGNhbmNlbGFibGUgPSBmYWxzZSwKLSAgICAgICAgb3B0aW9uYWwgRE9N
V2luZG93PyB2aWV3ID0gbnVsbCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAwLAorICAgICAgICBv
cHRpb25hbCBXaW5kb3dQcm94eT8gdmlldyA9IG51bGwsIG9wdGlvbmFsIGxvbmcgZGV0YWlsID0g
MCwKICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBzY3Jl
ZW5ZID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRYID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRZ
ID0gMCwKICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFs
IGJvb2xlYW4gYWx0S2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxz
ZSwgb3B0aW9uYWwgYm9vbGVhbiBtZXRhS2V5ID0gZmFsc2UsCiAgICAgICAgIG9wdGlvbmFsIHVu
c2lnbmVkIHNob3J0IGJ1dHRvbiA9IDAsIG9wdGlvbmFsIGFueSByZWxhdGVkVGFyZ2V0ID0gbnVs
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAppbmRleCA4NTM3MTRk
NmFiMWYwMWU4YTVlYWNlMGQwZTQzOTc1ZWIzZDU4NDlmLi44MGE4MjY3ZGMyMWJkOGIzYmY1MTgz
MGZlNGIzMGE0MmE2MTIwMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VS
ZWxhdGVkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVu
dC5jcHAKQEAgLTMyLDEzICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1vdXNl
UmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1l
c3RhbXAsIERPTVdpbmRvdyogRE9NV2luZG93LAorTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVs
YXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1By
b3h5PiYmIHZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRl
dGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2lu
ZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKICNlbmRp
ZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9v
bCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgYm9vbCBpc1NpbXVsYXRlZCkK
LSAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIHRpbWVzdGFtcCwgRE9NV2luZG93LCBkZXRhaWwsIGN0cmxLZXksIGFsdEtleSwgc2hpZnRL
ZXksIG1ldGFLZXksIGZhbHNlLCBmYWxzZSkKKyAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZl
bnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgV1RGTW92ZSh2aWV3KSwg
ZGV0YWlsLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBmYWxzZSwgZmFsc2Up
CiAgICAgLCBtX3NjcmVlbkxvY2F0aW9uKHNjcmVlbkxvY2F0aW9uKQogI2lmIEVOQUJMRShQT0lO
VEVSX0xPQ0spCiAgICAgLCBtX21vdmVtZW50RGVsdGEobW92ZW1lbnREZWx0YSkKQEAgLTYxLDcg
KzYxLDcgQEAgTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBNb3VzZVIKIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6
OmluaXQoYm9vbCBpc1NpbXVsYXRlZCwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uKQog
ewogICAgIGlmICghaXNTaW11bGF0ZWQpIHsKLSAgICAgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9
IGZyYW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSkgeworICAgICAgICBpZiAoYXV0byogZnJh
bWVWaWV3ID0gZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpIHsKICAgICAgICAgICAg
IEZsb2F0UG9pbnQgYWJzb2x1dGVQb2ludCA9IGZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyh3
aW5kb3dMb2NhdGlvbik7CiAgICAgICAgICAgICBGbG9hdFBvaW50IGRvY3VtZW50UG9pbnQgPSBm
cmFtZVZpZXctPmFic29sdXRlVG9Eb2N1bWVudFBvaW50KGFic29sdXRlUG9pbnQpOwogICAgICAg
ICAgICAgbV9wYWdlTG9jYXRpb24gPSBmbG9vcmVkTGF5b3V0UG9pbnQoZG9jdW1lbnRQb2ludCk7
CkBAIC04MywxMyArODMsMTMgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3JkaW5h
dGVzKCkKICAgICBtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb24gPSBmYWxzZTsKIH0KIAotRnJh
bWVWaWV3KiBNb3VzZVJlbGF0ZWRFdmVudDo6ZnJhbWVWaWV3RnJvbURPTVdpbmRvdyhET01XaW5k
b3cqIHdpbmRvdykKK0ZyYW1lVmlldyogTW91c2VSZWxhdGVkRXZlbnQ6OmZyYW1lVmlld0Zyb21X
aW5kb3dQcm94eShXaW5kb3dQcm94eSogd2luZG93UHJveHkpCiB7Ci0gICAgYXV0byogZnJhbWUg
PSB3aW5kb3cgPyB3aW5kb3ctPmZyYW1lKCkgOiBudWxscHRyOwotICAgIGlmICghZnJhbWUpCisg
ICAgaWYgKCF3aW5kb3dQcm94eSB8fCAhaXM8RE9NV2luZG93Pih3aW5kb3dQcm94eS0+d2luZG93
KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBmcmFtZS0+dmlldygp
OworICAgIGF1dG8qIGZyYW1lID0gZG93bmNhc3Q8RE9NV2luZG93Pigqd2luZG93UHJveHktPndp
bmRvdygpKS5mcmFtZSgpOworICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT52aWV3KCkgOiBudWxs
cHRyOwogfQogCiBMYXlvdXRQb2ludCBNb3VzZVJlbGF0ZWRFdmVudDo6cGFnZVBvaW50VG9DbGll
bnRQb2ludChMYXlvdXRQb2ludCBwYWdlUG9pbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQpAQCAt
MTEzLDcgKzExMyw3IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGluYXRlcyhj
b25zdCBMYXlvdXRQb2ludCYgY2xpZW50TG9jYXRpb24pCiAgICAgLy8gU2V0IHVwIGluaXRpYWwg
dmFsdWVzIGZvciBjb29yZGluYXRlcy4KICAgICAvLyBDb3JyZWN0IHZhbHVlcyBhcmUgY29tcHV0
ZWQgbGF6aWx5LCBzZWUgY29tcHV0ZVJlbGF0aXZlUG9zaXRpb24uCiAgICAgRmxvYXRTaXplIGRv
Y3VtZW50VG9DbGllbnRPZmZzZXQ7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmll
d0Zyb21ET01XaW5kb3codmlldygpKSkKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJhbWVW
aWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpCiAgICAgICAgIGRvY3VtZW50VG9DbGllbnRPZmZz
ZXQgPSBmcmFtZVZpZXctPmRvY3VtZW50VG9DbGllbnRPZmZzZXQoKTsKIAogICAgIG1fY2xpZW50
TG9jYXRpb24gPSBjbGllbnRMb2NhdGlvbjsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIE1vdXNl
UmVsYXRlZEV2ZW50Ojppbml0Q29vcmRpbmF0ZXMoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudExv
Y2F0aW9uKQogCiBmbG9hdCBNb3VzZVJlbGF0ZWRFdmVudDo6ZG9jdW1lbnRUb0Fic29sdXRlU2Nh
bGVGYWN0b3IoKSBjb25zdAogewotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdG
cm9tRE9NV2luZG93KHZpZXcoKSkpCisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmll
d0Zyb21XaW5kb3dQcm94eSh2aWV3KCkpKQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5kb2N1
bWVudFRvQWJzb2x1dGVTY2FsZUZhY3RvcigpOwogCiAgICAgcmV0dXJuIDE7CkBAIC0xMzYsNyAr
MTM2LDcgQEAgZmxvYXQgTW91c2VSZWxhdGVkRXZlbnQ6OmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxl
RmFjdG9yKCkgY29uc3QKIAogdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVBhZ2VMb2Nh
dGlvbigpCiB7Ci0gICAgbV9hYnNvbHV0ZUxvY2F0aW9uID0gcGFnZVBvaW50VG9BYnNvbHV0ZVBv
aW50KG1fcGFnZUxvY2F0aW9uLCBmcmFtZVZpZXdGcm9tRE9NV2luZG93KHZpZXcoKSkpOworICAg
IG1fYWJzb2x1dGVMb2NhdGlvbiA9IHBhZ2VQb2ludFRvQWJzb2x1dGVQb2ludChtX3BhZ2VMb2Nh
dGlvbiwgZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpOwogfQogCiB2b2lkIE1vdXNl
UmVsYXRlZEV2ZW50OjpyZWNlaXZlZFRhcmdldCgpCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBN
b3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVJlbGF0aXZlUG9zaXRpb24oKQogICAgIAogRmxvYXRQ
b2ludCBNb3VzZVJlbGF0ZWRFdmVudDo6bG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSBj
b25zdAogewotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9tRE9NV2luZG93
KHZpZXcoKSkpCisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21XaW5kb3dQ
cm94eSh2aWV3KCkpKQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5jb250ZW50c1RvUm9vdFZp
ZXcocm91bmRlZEludFBvaW50KG1fYWJzb2x1dGVMb2NhdGlvbikpOwogCiAgICAgcmV0dXJuIG1f
YWJzb2x1dGVMb2NhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJl
bGF0ZWRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKaW5k
ZXggMGQ4M2MzNjA5ZjcxZWFmZWYyMTcxYTljZDBkNDMxYWU2ZDg1NGY4Yi4uYWQ0ZTVkMGMzNTZm
NTQxZTA4MmUxMWEyNmEyZDBjYzExNWZkNTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVs
YXRlZEV2ZW50LmgKQEAgLTY3LDE0ICs2NywxNCBAQCBwdWJsaWM6CiAgICAgLy8gdXNhYmxlIHdp
dGggUmVuZGVyT2JqZWN0OjphYnNvbHV0ZVRvTG9jYWwpLgogICAgIGNvbnN0IExheW91dFBvaW50
JiBhYnNvbHV0ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZUxvY2F0aW9uOyB9
CiAgICAgCi0gICAgc3RhdGljIEZyYW1lVmlldyogZnJhbWVWaWV3RnJvbURPTVdpbmRvdyhET01X
aW5kb3cqKTsKKyAgICBzdGF0aWMgRnJhbWVWaWV3KiBmcmFtZVZpZXdGcm9tV2luZG93UHJveHko
V2luZG93UHJveHkqKTsKIAogICAgIHN0YXRpYyBMYXlvdXRQb2ludCBwYWdlUG9pbnRUb0NsaWVu
dFBvaW50KExheW91dFBvaW50IHBhZ2VQb2ludCwgRnJhbWVWaWV3Kik7CiAgICAgc3RhdGljIExh
eW91dFBvaW50IHBhZ2VQb2ludFRvQWJzb2x1dGVQb2ludChMYXlvdXRQb2ludCBwYWdlUG9pbnQs
IEZyYW1lVmlldyopOwogCiBwcm90ZWN0ZWQ6CiAgICAgTW91c2VSZWxhdGVkRXZlbnQoKSA9IGRl
ZmF1bHQ7Ci0gICAgTW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwg
RE9NV2luZG93KiwKKyAgICBNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0
YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IElu
dFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIGNvbnN0IEludFBvaW50JiBtb3ZlbWVu
dERlbHRhLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDRiMWU4NzI1Nzk1MzNmYmY3ODcxMmZkNmQyM2Qy
YzgxNWIwM2ViMzguLmM5MTkwN2NkZDRhNDhiMTcyZWEzYTJkZWUxZTg4MDc4MGJlNWRlMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDb21wb3NlZFRyZWVB
bmNlc3Rvckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIK
ICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJET01XaW5kb3cu
aCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIK
ICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaW11bGF0ZWRDbGljay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltdWxhdGVkQ2xp
Y2suY3BwCmluZGV4IGUwZjRlMzUyZWNhMThkY2RjODU5MjQ5MmVjNTA4NDI5MjhhYjY1NzQuLjQx
N2U5MDdiZjI4ODFiNmE4N2Y2MWQ2MDkxNmI2N2U2OGViOWMxMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NpbXVsYXRlZENsaWNrLmNwcApAQCAtMzcsMTQgKzM3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgU2ltdWxhdGVkTW91c2VFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWV3LCBSZWZQdHI8RXZl
bnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQsIFNpbXVsYXRlZENsaWNrU291
cmNlIHNvdXJjZSkKKyAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcs
IFJlZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxh
dGVkQ2xpY2tTb3VyY2Ugc291cmNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2ltdWxhdGVkTW91c2VFdmVudChldmVudFR5cGUsIHZpZXcsIFdURk1vdmUodW5kZXJseWlu
Z0V2ZW50KSwgdGFyZ2V0LCBzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2ltdWxhdGVkTW91c2VFdmVudChldmVudFR5cGUsIFdURk1vdmUodmlldyksIFdURk1vdmUodW5k
ZXJseWluZ0V2ZW50KSwgdGFyZ2V0LCBzb3VyY2UpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
U2ltdWxhdGVkTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2lu
ZG93KiB2aWV3LCBSZWZQdHI8RXZlbnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJn
ZXQsIFNpbXVsYXRlZENsaWNrU291cmNlIHNvdXJjZSkKLSAgICAgICAgOiBNb3VzZUV2ZW50KGV2
ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwgdW5kZXJseWluZ0V2ZW50ID8gdW5kZXJseWluZ0V2ZW50LT50
aW1lU3RhbXAoKSA6IE1vbm90b25pY1RpbWU6Om5vdygpLCB2aWV3LCAwLCB7IH0sIHsgfSwKKyAg
ICBTaW11bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYgdmlldywgUmVmUHRyPEV2ZW50PiYmIHVuZGVybHlpbmdFdmVudCwg
RWxlbWVudCYgdGFyZ2V0LCBTaW11bGF0ZWRDbGlja1NvdXJjZSBzb3VyY2UpCisgICAgICAgIDog
TW91c2VFdmVudChldmVudFR5cGUsIHRydWUsIHRydWUsIHVuZGVybHlpbmdFdmVudCA/IHVuZGVy
bHlpbmdFdmVudC0+dGltZVN0YW1wKCkgOiBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2
aWV3KSwgMCwgeyB9LCB7IH0sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgICAg
IHsgfSwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAppbmRleCBiZDAyNGVhNTVmNmJh
ODRlMzJjOTA0NDZmY2JmODI4MjA0ZDJjMzBjLi5iMDk0NDkzYzFmODU1ODQ5ODg5M2MyY2I3YzBk
MDc0NmI2YWI1YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcApAQCAtMzgsMjkgKzM4LDI5
IEBAIFJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudCk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRF
dmVudDo6Y3JlYXRlKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZl
bnRJbnB1dFR5cGUgaW5wdXRUeXBlKQorUmVmPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGUo
UmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50
SW5wdXRUeXBlIGlucHV0VHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZl
bnQodmlldywgZGF0YSwgaW5wdXRUeXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4
dEV2ZW50KFdURk1vdmUodmlldyksIGRhdGEsIGlucHV0VHlwZSkpOwogfQogCi1SZWY8VGV4dEV2
ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKERPTVdpbmRvdyogdmlldywg
Y29uc3QgU3RyaW5nJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSkKK1JlZjxUZXh0RXZl
bnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KHZpZXcsIGRhdGEsIDAsIHNob3Vs
ZFNtYXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9j
a3F1b3RlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdURk1vdmUodmll
dyksIGRhdGEsIDAsIHNob3VsZFNtYXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFu
ZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVu
dDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiYmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1h
dGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykK
K1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9v
bCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVv
dGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRleHRFdmVudCh2aWV3LCBlbXB0eVN0cmluZygpLCBXVEZNb3ZlKGRhdGEpLCBzaG91
bGRTbWFydFJlcGxhY2UsIHNob3VsZE1hdGNoU3R5bGUsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZW1w
dHlTdHJpbmcoKSwgV1RGTW92ZShkYXRhKSwgc2hvdWxkU21hcnRSZXBsYWNlLCBzaG91bGRNYXRj
aFN0eWxlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRl
eHRFdmVudDo6Y3JlYXRlRm9yRHJvcChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0
YSkKK1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRleHRFdmVudCh2aWV3LCBkYXRhLCBUZXh0RXZlbnRJbnB1dERyb3ApKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZGF0YSwgVGV4dEV2
ZW50SW5wdXREcm9wKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9y
RGljdGF0aW9uKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0
b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCitSZWY8VGV4
dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3RhdGlvbihSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJu
YXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgVGV4dEV2ZW50KHZpZXcsIGRhdGEsIGRpY3RhdGlvbkFsdGVybmF0aXZlcykpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudChXVEZNb3ZlKHZpZXcpLCBkYXRhLCBkaWN0YXRp
b25BbHRlcm5hdGl2ZXMpKTsKIH0KIAogVGV4dEV2ZW50OjpUZXh0RXZlbnQoKQpAQCAtNzEsOCAr
NzEsOCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudCgpCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2
ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5
cGUgaW5wdXRUeXBlKQotICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQs
IHRydWUsIHRydWUsIHZpZXcsIDApCitUZXh0RXZlbnQ6OlRleHRFdmVudChSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5w
dXRUeXBlKQorICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUs
IHRydWUsIFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAg
ICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAt
ODEsOCArODEsOCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0
IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlIGlucAogewogfQogCi1UZXh0RXZlbnQ6
OlRleHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNob3VsZFNtYXJ0UmVwbGFj
ZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9j
a3F1b3RlSGFuZGxpbmcpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVu
dCwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5k
b3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hv
dWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRs
aW5nKQorICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRy
dWUsIFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShUZXh0RXZlbnRJbnB1dFBh
c3RlKQogICAgICwgbV9kYXRhKGRhdGEpCiAgICAgLCBtX3Bhc3RpbmdGcmFnbWVudChXVEZNb3Zl
KHBhc3RpbmdGcmFnbWVudCkpCkBAIC05Miw4ICs5Miw4IEBAIFRleHRFdmVudDo6VGV4dEV2ZW50
KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVuCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3Qg
U3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRp
b25BbHRlcm5hdGl2ZXMpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVu
dCwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5k
b3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRp
b25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcykKKyAgICA6IFVJRXZlbnQoZXZl
bnROYW1lcygpLnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0cnVlLCBXVEZNb3ZlKHZpZXcpLCAwKQog
ICAgICwgbV9pbnB1dFR5cGUoVGV4dEV2ZW50SW5wdXREaWN0YXRpb24pCiAgICAgLCBtX2RhdGEo
ZGF0YSkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtMTA1LDEyICsxMDUs
MTIgQEAgVGV4dEV2ZW50OjpUZXh0RXZlbnQoRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcm
IGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb24KIAogVGV4dEV2ZW50Ojp+VGV4dEV2ZW50KCkg
PSBkZWZhdWx0OwogCi12b2lkIFRleHRFdmVudDo6aW5pdFRleHRFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyog
dmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQordm9pZCBUZXh0RXZlbnQ6OmluaXRUZXh0RXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxl
LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAg
IGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbml0VUlF
dmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2
ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAg
ICBtX2lucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZl
bnQuaAppbmRleCAyOWViMjZkMGUwNzRiNTRkMzQ2MzU2MDQyODBkMTJhNjk4OGFmOGRhLi4wYWUy
YWM4NjNmYjgxYmJiMjg2Mzg1MTY1YjZiMTI1MWQyZGZiMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVu
dC5oCkBAIC0zOCwxNiArMzgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3Mg
VGV4dEV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAg
c3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZShET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRh
dGEsIFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOworICAgICAg
ICBzdGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlKFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29u
c3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJv
YXJkKTsKICAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7
Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShE
T01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsK
LSAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoRE9N
V2luZG93KiwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFy
dFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7
Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEcm9wKERPTVdpbmRvdyos
IGNvbnN0IFN0cmluZyYgZGF0YSk7Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVh
dGVGb3JEaWN0YXRpb24oRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0
b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgICAg
ICBzdGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdp
bmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNl
KTsKKyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUo
UmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBkYXRhLCBi
b29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2tx
dW90ZUhhbmRsaW5nKTsKKyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRy
b3AoUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBz
dGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yRGljdGF0aW9uKFJlZlB0cjxXaW5kb3dQcm94
eT4mJiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRp
dmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogCiAgICAgICAgIHZpcnR1YWwgflRleHRFdmVu
dCgpOwogICAgIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRUZXh0RXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBE
T01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYg
ZGF0YSk7CiAgICAgCiAgICAgICAgIFN0cmluZyBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
OyB9CiAKQEAgLTcxLDkgKzcxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6
CiAgICAgICAgIFRleHRFdmVudCgpOwogCi0gICAgICAgIFRleHRFdmVudChET01XaW5kb3cqLCBj
b25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5
Ym9hcmQpOwotICAgICAgICBUZXh0RXZlbnQoRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRh
LCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJv
b2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0gICAgICAgIFRl
eHRFdmVudChET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0
YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgICAgIFRleHRF
dmVudChSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50
SW5wdXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7CisgICAgICAgIFRleHRFdmVudChS
ZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+JiYsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5
bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBUZXh0RXZlbnQoUmVmUHRyPFdp
bmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25B
bHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAKICAgICAgICAgYm9vbCBpc1Rl
eHRFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCmluZGV4
IDM2NDA2NWZhODJkNDE4OTljMGM1MjMyNTBjMmYyNzk5NzcwZDNlMGUuLmNlOGIzMGFjYjNjNzFm
ZmRmODI4YjIxODEwNjVhYWExZjhhMTI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0RXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCkBA
IC0zMiw3ICszMiw3IEBAIGludGVyZmFjZSBUZXh0RXZlbnQgOiBVSUV2ZW50IHsKICAgICB2b2lk
IGluaXRUZXh0RXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZpbmVkIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGVBcmcgPSBm
YWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxl
QXJnID0gZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8g
dmlld0FyZyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFdpbmRvd1By
b3h5PyB2aWV3QXJnID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9N
U3RyaW5nIGRhdGFBcmcgPSAidW5kZWZpbmVkIik7CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVG91Y2hFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVu
dC5pZGwKaW5kZXggODEwNTgzNTdlZDNhYTc3NzRkMjZmYWZhZTE2MDNiMTVkZGUwZDYwYi4uNTRl
OTlkYjQ4MzBmMzBkNDYyNjQyZTMzZDQzOTU2OTNiMTNmMmIwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3Vj
aEV2ZW50LmlkbApAQCAtNDAsNyArNDAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0
aW9uYWwgVG91Y2hMaXN0PyB0YXJnZXRUb3VjaGVzID0gbnVsbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wdGlvbmFsIFRvdWNoTGlzdD8gY2hhbmdlZFRvdWNoZXMgPSBudWxsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5kZWZpbmVkIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlldyA9IG51bGws
CisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlldyA9IG51
bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBsb25nIHNjcmVlblggPSAwLAog
ICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGxvbmcgY2xpZW50WCA9IDAsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlF
dmVudC5jcHAKaW5kZXggYWIyMGVlY2I5YzU4MzFkZWYwMjc5Y2E3OGEwZTdjYzVmYTg1NjIxNy4u
MGE2ZjgxYWY1MjM3MTZmNzU4MTc4ZjBmOTUzNDRjZGM2NTViODAwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2
ZW50LmNwcApAQCAtMzIsMTYgKzMyLDE2IEBAIFVJRXZlbnQ6OlVJRXZlbnQoKQogewogfQogCi1V
SUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1
YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBET01XaW5kb3cqIHZpZXdBcmcsIGludCBkZXRh
aWxBcmcpCitVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBi
b29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgY2FuQnVi
YmxlQXJnLCBjYW5jZWxhYmxlQXJnKQotICAgICwgbV92aWV3KHZpZXdBcmcpCisgICAgLCBtX3Zp
ZXcoV1RGTW92ZSh2aWV3QXJnKSkKICAgICAsIG1fZGV0YWlsKGRldGFpbEFyZykKIHsKIH0KIAot
VUlFdmVudDo6VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5C
dWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIERP
TVdpbmRvdyogdmlld0FyZywgaW50IGRldGFpbEFyZykKK1VJRXZlbnQ6OlVJRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNhbmNlbGFi
bGVBcmcsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmll
d0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlQXJn
LCBjYW5jZWxhYmxlQXJnLCB0aW1lc3RhbXApCi0gICAgLCBtX3ZpZXcodmlld0FyZykKKyAgICAs
IG1fdmlldyhXVEZNb3ZlKHZpZXdBcmcpKQogICAgICwgbV9kZXRhaWwoZGV0YWlsQXJnKQogewog
fQpAQCAtNTUsNyArNTUsNyBAQCBVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBjb25zdCBVSUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIsCiAKIFVJRXZlbnQ6On5V
SUV2ZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFVJRXZlbnQ6OmluaXRVSUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZUFyZywgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFy
ZywgRE9NV2luZG93KiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQordm9pZCBVSUV2ZW50Ojppbml0
VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVBcmcsIGJvb2wgY2FuQnViYmxlQXJnLCBi
b29sIGNhbmNlbGFibGVBcmcsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3QXJnLCBpbnQgZGV0
YWlsQXJnKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1VJRXZlbnQuaAppbmRleCBiYWE3MzFmY2Y4MWVlYmFmMjMxNTNkYTUxYmEwYWVhZmQy
NDU1ZmFjLi41MGYyZDE3NzE5OTQyZTQ3M2ZkZWM5YjFhODg0ODYwNTkzY2QxOWE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9VSUV2ZW50LmgKQEAgLTIzLDIwICsyMywyMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiVUlFdmVudElu
aXQuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIG5vIG9uZSBpcyBkZXBlbmRpbmcgb24gaXQgYW55
bW9yZS4KLXR5cGVkZWYgRE9NV2luZG93IEFic3RyYWN0VmlldzsKK3R5cGVkZWYgV2luZG93UHJv
eHkgQWJzdHJhY3RWaWV3OwogCiBjbGFzcyBVSUV2ZW50IDogcHVibGljIEV2ZW50IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50
IGRldGFpbCkKKyAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwg
Y2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKSk7CiAgICAgfQogICAgIHN0YXRpYyBS
ZWY8VUlFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHsKQEAgLTQ4LDkgKzQ4LDkgQEAg
cHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5VSUV2ZW50KCk7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGluaXRVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBpbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50
IGRldGFpbCk7CiAKLSAgICBET01XaW5kb3cqIHZpZXcoKSBjb25zdCB7IHJldHVybiBtX3ZpZXcu
Z2V0KCk7IH0KKyAgICBXaW5kb3dQcm94eSogdmlldygpIGNvbnN0IHsgcmV0dXJuIG1fdmlldy5n
ZXQoKTsgfQogICAgIGludCBkZXRhaWwoKSBjb25zdCB7IHJldHVybiBtX2RldGFpbDsgfQogCiAg
ICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKQEAgLTY1
LDE0ICs2NSwxNCBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVSUV2ZW50KCk7Ci0gICAg
VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwpOwotICAgIFVJRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9u
aWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7CisgICAgVUlFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCk7CisgICAgVUlFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90
b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRhaWwpOwog
ICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVUlFdmVudEluaXQmLCBJc1Ry
dXN0ZWQpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNVSUV2ZW50KCkgY29uc3QgZmluYWw7CiAK
LSAgICBSZWZQdHI8RE9NV2luZG93PiBtX3ZpZXc7CisgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiBt
X3ZpZXc7CiAgICAgaW50IG1fZGV0YWlsOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1VJRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRsCmluZGV4
IDg3YjM5MTUyODMwMzE5N2UzNmM2NGMxZTcwOGZmYjYwY2JhZDk1MDMuLjZhMzVjNTdhMzg3NGJj
OGVjNjNkNmQ5MjRkNDI4YjJiNTgxMDBmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9VSUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5pZGwKQEAgLTIw
LDExICsyMCwxMSBAQAogWwogICAgIENvbnN0cnVjdG9yKERPTVN0cmluZyB0eXBlLCBvcHRpb25h
bCBVSUV2ZW50SW5pdCBldmVudEluaXREaWN0KQogXSBpbnRlcmZhY2UgVUlFdmVudCA6IEV2ZW50
IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IHZpZXc7CisgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFdpbmRvd1Byb3h5IHZpZXc7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcg
ZGV0YWlsOwogICAgIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZhdWx0
IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICB2b2lkIGluaXRVSUV2ZW50KG9wdGlvbmFs
IERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIGJvb2xlYW4gY2FuQnViYmxl
ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZhbHNlLCBvcHRpb25hbCBE
T01XaW5kb3c/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBsb25nIGRldGFpbCA9IDApOworICAgIHZv
aWQgaW5pdFVJRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5kZWZpbmVkIiwgb3B0
aW9uYWwgYm9vbGVhbiBjYW5CdWJibGUgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxh
YmxlID0gZmFsc2UsIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwgb3B0aW9uYWwg
bG9uZyBkZXRhaWwgPSAwKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxheWVyWDsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsYXllclk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVUlFdmVudEluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5p
dC5oCmluZGV4IDAzMTZiYzA2ZjU2OGU1MzkxNmRmNjk2ZjQxNDQ1YmE5ZmMzMWZmMzYuLmUxMTI4
YTc2ZGU1ODYwMTYyZmE5NzZkY2RjODI3MTcwZDhmMmYzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50
SW5pdC5oCkBAIC0yNSwxNCArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudEluaXQuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94
eS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dHJ1Y3QgVUlFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKLSAgICBSZWZQdHI8RE9NV2lu
ZG93PiB2aWV3OworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gdmlldzsKICAgICBpbnQgZGV0YWls
IHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRJbml0
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5pZGwKaW5kZXggMGQ3ZWI4ZWZj
MWM1MzdhOTA1MTE3YjYxMjExMWFkMDFlYjFlMGFhMi4uM2NjYmJlZDYwNzU1ZjZmMjE2NTJmNWJh
NjFlNmYzODI0MGMxN2ZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRJ
bml0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaWRsCkBAIC0yNCw2
ICsyNCw2IEBACiAgKi8KIAogZGljdGlvbmFyeSBVSUV2ZW50SW5pdCA6IEV2ZW50SW5pdCB7Ci0g
ICAgRE9NV2luZG93PyB2aWV3ID0gbnVsbDsKKyAgICBXaW5kb3dQcm94eT8gdmlldyA9IG51bGw7
CiAgICAgbG9uZyBkZXRhaWwgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9VSUV2ZW50V2l0aEtleVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudFdpdGhL
ZXlTdGF0ZS5oCmluZGV4IDBhOGU0MDMxMjQ4ZDZmNzI2NTQ0MmU1YmY4MDAxMmJhMzBjY2NkZWIu
LjA4NWEwMzE3ZWM4ZGNlM2E2MGZlMjZhZmE1YTE2MmVhMmE5YTA1MWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaApAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiBw
cm90ZWN0ZWQ6CiAgICAgVUlFdmVudFdpdGhLZXlTdGF0ZSgpID0gZGVmYXVsdDsKIAotICAgIFVJ
RXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGJvb2wgY3Ry
bEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSkKLSAgICAgICAg
OiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKQorICAg
IFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRl
dGFpbCwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRh
S2V5KQorICAgICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZN
b3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCiAgICAgICAg
ICwgbV9hbHRLZXkoYWx0S2V5KQogICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkpCkBAIC00
OSw5ICs0OSw5IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQogCi0gICAgVUlFdmVudFdpdGhL
ZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqIHZpZXcsCisgICAg
VUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywKICAgICAgICAgaW50IGRldGFpbCwgYm9vbCBjdHJsS2V5LCBib29s
IGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBib29sIGFsdEdyYXBoS2V5LCBi
b29sIGNhcHNMb2NrS2V5KQotICAgICAgICAgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwg
Y2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2aWV3LCBkZXRhaWwpCisgICAgICAgICAgICA6IFVJRXZl
bnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIFdURk1vdmUodmlldyks
IGRldGFpbCkKICAgICAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCiAgICAgICAgICAgICAs
IG1fYWx0S2V5KGFsdEtleSkKICAgICAgICAgICAgICwgbV9zaGlmdEtleShzaGlmdEtleSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9XaGVlbEV2ZW50LmNwcAppbmRleCBkMmI4ZmI3MmQ5MTk4ZTE0YmY3NThjYTNhZmJj
MWVjMjQ3ZjcxY2JkLi41MzdjYjE5M2M4MTNmNTI3YWM1MzNjOTMwODkwODdiZGIzNjhiZTljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCkBAIC00Nyw4ICs0Nyw4IEBAIGlubGluZSBXaGVl
bEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYg
aW5pdGlhbGl6ZXIsCiB7CiB9CiAKLWlubGluZSBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogdmlldykKLSAgICA6IE1vdXNl
RXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUsIGV2ZW50LnRpbWVzdGFt
cCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LCAwLCBldmVudC5nbG9iYWxQb3Np
dGlvbigpLCBldmVudC5wb3NpdGlvbigpCitpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxFdmVudChj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmll
dykKKyAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUs
IGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCBXVEZNb3ZlKHZp
ZXcpLCAwLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCiAjaWYgRU5B
QkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgLCB7IH0KICNlbmRpZgpAQCAtNjEsOSArNjEsOSBA
QCBpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IGV2ZW50LCBET01XaW5kb3cqIHZpZXcpCiB7CiB9CiAKLVJlZjxXaGVlbEV2ZW50PiBXaGVlbEV2
ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB2
aWV3KQorUmVmPFdoZWVsRXZlbnQ+IFdoZWVsRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXaGVlbEV2ZW50KGV2ZW50LCB2aWV3KSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2hlZWxFdmVudChldmVudCwgV1RGTW92ZSh2aWV3KSkpOwogfQogCiBSZWY8
V2hlZWxFdmVudD4gV2hlZWxFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQpAQCAtNzYsMTIgKzc2
LDEyIEBAIFJlZjxXaGVlbEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2hlZWxFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiB9CiAKLXZvaWQgV2hl
ZWxFdmVudDo6aW5pdFdlYktpdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwgaW50IHJhd0RlbHRh
WSwgRE9NV2luZG93KiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwg
aW50IHBhZ2VZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29s
IG1ldGFLZXkpCit2b2lkIFdoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2ZW50KGludCByYXdE
ZWx0YVgsIGludCByYXdEZWx0YVksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgc2Ny
ZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29sIGN0cmxLZXksIGJv
b2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAgICAgaWYgKGlzQmVp
bmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpbml0TW91c2VFdmVu
dChldmVudE5hbWVzKCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCwgc2NyZWVuWCwg
c2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5
LCAwLCBudWxscHRyKTsKKyAgICBpbml0TW91c2VFdmVudChldmVudE5hbWVzKCkud2hlZWxFdmVu
dCwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgs
IHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCAwLCBudWxscHRyKTsK
IAogICAgIC8vIE5vcm1hbGl6ZSB0byAxMjAgbXVsdGlwbGUgZm9yIGNvbXBhdGliaWxpdHkgd2l0
aCBJRS4KICAgICBtX3doZWVsRGVsdGEgPSB7IHJhd0RlbHRhWCAqIFRpY2tNdWx0aXBsaWVyLCBy
YXdEZWx0YVkgKiBUaWNrTXVsdGlwbGllciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1doZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgKaW5kZXgg
NGQzNGIzMGQ2ZGVkNWVmMjgxNWE4MTM3ZTRjMjk3ZTY0MWFkZTZkYS4uMTBiNjJlMDVjNzAxNTYw
NzZmZmU1Y2YxMjczOTdlYzEzMjNkZDJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1doZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCkBAIC0z
OSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAgICAgRE9NX0RFTFRBX1BBR0UKICAgICB9OwogCi0g
ICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiwgRE9NV2luZG93Kik7CisgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAgICBzdGF0aWMg
UmVmPFdoZWVsRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBzdHJ1Y3QgSW5pdCA6
IE1vdXNlRXZlbnRJbml0IHsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJ
bml0JiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGluaXRXZWJLaXRXaGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIERP
TVdpbmRvdyosIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVks
IGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChpbnQgcmF3RGVs
dGFYLCBpbnQgcmF3RGVsdGFZLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBzY3JlZW5YLCBp
bnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRL
ZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CiAKICAgICBjb25zdCBzdGQ6Om9wdGlv
bmFsPFBsYXRmb3JtV2hlZWxFdmVudD4mIHVuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KCkgY29uc3Qg
eyByZXR1cm4gbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudDsgfQogCkBAIC03NSw3ICs3NSw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2hlZWxFdmVudCgpOwogICAgIFdoZWVsRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7Ci0gICAgV2hlZWxFdmVu
dChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBET01XaW5kb3cqKTsKKyAgICBXaGVlbEV2ZW50
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFJlZlB0cjxXaW5kb3dQcm94eT4mJik7CiAKICAg
ICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vV2hlZWxFdmVudC5pZGwKaW5kZXggOTNjNTNhNGJmYjJkYWY0YmQ0NDI3Mzg2NmE5MmNlZDRh
MWMxYzM4Ni4uYjI4MWRhMWM2NjA0NGE4YTkzZDYwZDkwZWRkZjUxZDE0YzZjOTM0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9XaGVlbEV2ZW50LmlkbApAQCAtMzksNyArMzksNyBAQAogCiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gd2Via2l0RGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlOwogCi0g
ICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRpb25hbCBsb25nIHdoZWVsRGVsdGFYID0g
MCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAsIG9wdGlvbmFsIERPTVdpbmRvdz8gdmll
dyA9IG51bGwsCisgICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRpb25hbCBsb25nIHdo
ZWVsRGVsdGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAsIG9wdGlvbmFsIFdp
bmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwKICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5YID0g
MCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRYID0gMCwg
b3B0aW9uYWwgbG9uZyBjbGllbnRZID0gMCwKICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjdHJs
S2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFsc2UsCiAgICAgICAgIG9w
dGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBtZXRhS2V5
ID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZDE0NzI0Mjc3MjM3NDY4ZDRmNjFmZmUzM2M3NWZlNDZh
ODE5MjNkYy4uZDczYTcxYjBlMTVkZDgxOWYxNzBlZmE1ZjU2MmVmNzVjOTQyYjk1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIu
Y3BwCkBAIC02MzIsNyArNjMyLDcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpp
bnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWMKICAgICBpZiAo
RnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpCiAgICAgICAgIHZpZXctPmRpc2FibGVM
YXllckZsdXNoVGhyb3R0bGluZ1RlbXBvcmFyaWx5Rm9ySW50ZXJhY3Rpb24oKTsKIAotICAgIFJl
ZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24obV9mcmFt
ZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsK
KyAgICBSZWY8VGV4dEV2ZW50PiBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlRm9yRGljdGF0aW9u
KG1fZnJhbWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJu
YXRpdmVzKTsKICAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KHRyaWdnZXJpbmdFdmVudCk7
CiAKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCmluZGV4IGNiOGI2YjhiYmFjODViYzBlMzJkZWQyZWYzMzljMjQxMDI5MGQzMTkuLjRl
MzY4YmZkODAzYzUzNjg1MmVkY2U2MDEwNDY5NDQ4NjMxNDkxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWlu
VGV4dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBib29sIHNtYXJ0UmVwbGFjZSkKICAgICBF
bGVtZW50KiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCk7CiAgICAgaWYg
KCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKLSAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4
dEV2ZW50OjpjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShkb2N1bWVudCgpLmRvbVdpbmRvdygpLCBw
YXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSk7CisgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRl
eHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoZG9jdW1lbnQoKS5kZWZhdWx0Vmlldygp
LCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpwYXN0ZUFz
RnJhZ21lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNt
YXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIHJlc3Bl
Y3RzTWFpbEJsb2NrcXVvdGUpCkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBFZGl0b3I6OnBhc3Rl
QXNGcmFnbWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBwYXN0aW5nRnJhZ21lbnQsIGJvb2wg
c21hcnQKICAgICBFbGVtZW50KiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9u
KCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKLSAgICB0YXJnZXQtPmRpc3Bh
dGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKGRvY3VtZW50KCkuZG9t
V2luZG93KCksIFdURk1vdmUocGFzdGluZ0ZyYWdtZW50KSwgc21hcnRSZXBsYWNlLCBtYXRjaFN0
eWxlLCByZXNwZWN0c01haWxCbG9ja3F1b3RlKSk7CisgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50
KFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShkb2N1bWVudCgpLmRlZmF1bHRWaWV3
KCksIFdURk1vdmUocGFzdGluZ0ZyYWdtZW50KSwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlLCBy
ZXNwZWN0c01haWxCbG9ja3F1b3RlKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpwYXN0ZUFzUGxhaW5U
ZXh0QnlwYXNzaW5nREhUTUwoKQpAQCAtMTg0OCw3ICsxODQ4LDcgQEAgdm9pZCBFZGl0b3I6OnNl
dENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgU2V0Q29tcG9zaXRpb25Nb2RlIG1vZGUp
CiAgICAgaW5zZXJ0VGV4dEZvckNvbmZpcm1lZENvbXBvc2l0aW9uKHRleHQpOwogCiAgICAgaWYg
KGF1dG8qIHRhcmdldCA9IGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSkKLSAgICAgICAgdGFy
Z2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQoKS5kb21XaW5kb3coKSwgdGV4dCkpOworICAg
ICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50LCBkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIHRl
eHQpKTsKIAogICAgIGlmIChtb2RlID09IENhbmNlbENvbXBvc2l0aW9uKSB7CiAgICAgICAgIC8v
IEFuIG9wZW4gdHlwaW5nIGNvbW1hbmQgdGhhdCBkaXNhZ3JlZXMgYWJvdXQgY3VycmVudCBzZWxl
Y3Rpb24gd291bGQgY2F1c2UgaXNzdWVzIHdpdGggdHlwaW5nIGxhdGVyIG9uLgpAQCAtMTkwOCwx
MSArMTkwOCwxMSBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgICAgICAgICAgLy8gV2Ug
c2hvdWxkIHNlbmQgYSBjb21wb3NpdGlvbnN0YXJ0IGV2ZW50IG9ubHkgd2hlbiB0aGUgZ2l2ZW4g
dGV4dCBpcyBub3QgZW1wdHkgYmVjYXVzZSB0aGlzCiAgICAgICAgICAgICAvLyBmdW5jdGlvbiBk
b2Vzbid0IGNyZWF0ZSBhIGNvbXBvc2l0aW9uIG5vZGUgd2hlbiB0aGUgdGV4dCBpcyBlbXB0eS4K
ICAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICB0YXJn
ZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5j
b21wb3NpdGlvbnN0YXJ0RXZlbnQsIGRvY3VtZW50KCkuZG9tV2luZG93KCksIG9yaWdpbmFsVGV4
dCkpOwotICAgICAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBkb2N1bWVudCgpLmRvbVdpbmRvdygp
LCB0ZXh0KTsKKyAgICAgICAgICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRp
b25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0RXZlbnQsIGRvY3Vt
ZW50KCkuZGVmYXVsdFZpZXcoKSwgb3JpZ2luYWxUZXh0KSk7CisgICAgICAgICAgICAgICAgZXZl
bnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9udXBk
YXRlRXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdGV4dCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSBpZiAoIXRleHQuaXNFbXB0eSgpKQotICAgICAgICAgICAgZXZlbnQg
PSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9udXBkYXRl
RXZlbnQsIGRvY3VtZW50KCkuZG9tV2luZG93KCksIHRleHQpOworICAgICAgICAgICAgZXZlbnQg
PSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9udXBkYXRl
RXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdGV4dCk7CiAKICAgICAgICAgaWYgKGV2
ZW50KQogICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KCpldmVudCk7CkBAIC0xOTIz
LDcgKzE5MjMsNyBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgIGlmICh0ZXh0LmlzRW1w
dHkoKSkgewogICAgICAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24oZG9jdW1lbnQo
KSwgVHlwaW5nQ29tbWFuZDo6UHJldmVudFNwZWxsQ2hlY2tpbmcsIFR5cGluZ0NvbW1hbmQ6OlRl
eHRDb21wb3NpdGlvblBlbmRpbmcpOwogICAgICAgICBpZiAodGFyZ2V0KQotICAgICAgICAgICAg
dGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQoKS5kb21XaW5kb3coKSwgdGV4dCkpOwor
ICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQoKS5kZWZhdWx0Vmll
dygpLCB0ZXh0KSk7CiAgICAgfQogCiAgICAgbV9jb21wb3NpdGlvbk5vZGUgPSBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCmluZGV4IGEzZDdkOTc3MGNlYmQwNjI4Y2E3
YmVjMjRjZmE2NzVkM2I5N2JiNTQuLjlkNTgxY2VkZmE4NDFlMGFkZjFhYWM0MzI1OTFjOGI2ZjJm
NzY1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKQEAgLTExNCw3ICsxMTQs
NyBAQCBSZWY8RG9jdW1lbnRQYXJzZXI+IEhUTUxEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKIH0K
IAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9tLmh0bWwjZG9t
LWRvY3VtZW50LW5hbWVkaXRlbQotc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxET01XaW5k
b3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+PiBIVE1MRG9jdW1l
bnQ6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitzdGQ6Om9wdGlvbmFsPFZh
cmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENv
bGxlY3Rpb24+Pj4gSFRNTERvY3VtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lKQogewogICAgIGlmIChuYW1lLmlzTnVsbCgpIHx8ICFoYXNEb2N1bWVudE5hbWVkSXRlbSgq
bmFtZS5pbXBsKCkpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTIyLDE2ICsx
MjIsMTYgQEAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8
RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4KICAgICBpZiAoVU5MSUtFTFkoZG9jdW1l
bnROYW1lZEl0ZW1Db250YWluc011bHRpcGxlRWxlbWVudHMoKm5hbWUuaW1wbCgpKSkpIHsKICAg
ICAgICAgYXV0byBjb2xsZWN0aW9uID0gZG9jdW1lbnROYW1lZEl0ZW1zKG5hbWUpOwogICAgICAg
ICBBU1NFUlQoY29sbGVjdGlvbi0+bGVuZ3RoKCkgPiAxKTsKLSAgICAgICAgcmV0dXJuIFZhcmlh
bnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0
aW9uPj4geyBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHsgV1RGTW92ZShjb2xsZWN0aW9uKSB9IH07
CisgICAgICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVt
ZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHsg
V1RGTW92ZShjb2xsZWN0aW9uKSB9IH07CiAgICAgfQogCiAgICAgYXV0byYgZWxlbWVudCA9ICpk
b2N1bWVudE5hbWVkSXRlbSgqbmFtZS5pbXBsKCkpOwogICAgIGlmIChVTkxJS0VMWShpczxIVE1M
SUZyYW1lRWxlbWVudD4oZWxlbWVudCkpKSB7CiAgICAgICAgIGlmIChhdXRvIGRvbVdpbmRvdyA9
IG1ha2VSZWZQdHIoZG93bmNhc3Q8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQpLmNvbnRlbnRX
aW5kb3coKSkpCi0gICAgICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8RE9NV2luZG93Piwg
UmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7IFdURk1vdmUoZG9tV2lu
ZG93KSB9OworICAgICAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5Piwg
UmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7IFdURk1vdmUoZG9tV2lu
ZG93KSB9OwogICAgIH0KIAotICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBS
ZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgUmVmUHRyPEVsZW1lbnQ+
IHsgJmVsZW1lbnQgfSB9OworICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4s
IFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBSZWZQdHI8RWxlbWVu
dD4geyAmZWxlbWVudCB9IH07CiB9CiAKIFZlY3RvcjxBdG9taWNTdHJpbmc+IEhUTUxEb2N1bWVu
dDo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1l
bnQuaAppbmRleCBhMzYzOTc0MDZkMzQ5ZjU3NmY0ODlkM2ExZjYwMGFkYTFiZGRjZmUxLi4wYjNk
MzQxNGE0YmVmYTAzMzVjNGUyMjlhNTk1ODVlYjA1ZWJkNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERvY3VtZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IGludCB3aWR0aCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBoZWlnaHQoKTsKICAgICAKLSAg
ICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50
PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcm
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRy
PEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gbmFtZWRJdGVtKGNvbnN0IEF0b21p
Y1N0cmluZyYpOwogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5TmFt
ZXMoKSBjb25zdDsKIAogICAgIEVsZW1lbnQqIGRvY3VtZW50TmFtZWRJdGVtKGNvbnN0IEF0b21p
Y1N0cmluZ0ltcGwmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnROYW1lZEl0ZW0uZ2V0
RWxlbWVudEJ5RG9jdW1lbnROYW1lZEl0ZW0obmFtZSwgKnRoaXMpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEb2N1bWVudC5pZGwKaW5kZXggMTI3ZjI2NDVlMDMyMmRjNzk4ODEyODA0ZmY1ZDc5NWRh
YzhhNTgwZi4uYTk5OWIwM2Y2MjI4YjI1ZWJkMWI3Yjk0Mzg2Yjk5ZTM5NWI4NWY4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmlkbApAQCAtMjMsNSArMjMsNSBAQAogICAgIE5ld0lt
cHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cywKICAgICBPdmVycmlkZUJ1aWx0aW5zLAogXSBp
bnRlcmZhY2UgSFRNTERvY3VtZW50IDogRG9jdW1lbnQgeyAgICAKLSAgICBnZXR0ZXIgKERPTVdp
bmRvdyBvciBFbGVtZW50IG9yIEhUTUxDb2xsZWN0aW9uKSAoRE9NU3RyaW5nIG5hbWUpOworICAg
IGdldHRlciAoV2luZG93UHJveHkgb3IgRWxlbWVudCBvciBIVE1MQ29sbGVjdGlvbikgKERPTVN0
cmluZyBuYW1lKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbApp
bmRleCBjZDYzYTIxMmFkNDMzMTRjNWJlMjMwNGRkZTcwMDk3YzdiZjg4MzUzLi5lZDdjMGI2ZTI3
NzI5OWI2NWNhMjE4ZjIxZTE4MjYxZTUxM2RmYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudC5pZGwKQEAgLTI2LDcgKzI2LDcgQEAgaW50ZXJmYWNlIEhUTUxGcmFtZUVs
ZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW1JlZmxlY3QsIFVSTF0gYXR0cmlidXRlIFVTVlN0
cmluZyBsb25nRGVzYzsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIGJvb2xlYW4gbm9SZXNpemU7
CiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQg
Y29udGVudERvY3VtZW50OwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01XaW5kb3cgY29udGVu
dFdpbmRvdzsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgY29udGVudFdpbmRv
dzsKIAogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBE
T01TdHJpbmcgbWFyZ2luSGVpZ2h0OwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVs
bEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luV2lkdGg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKaW5kZXggNTg4NzM5ODQ3Y2JiMDhjMzcx
N2MxM2JlYmQzYWE5MWQ5OWJiNGNjNS4uYjliZWYxNzYzZTI2MWQ3Yzk4MmUxZjA1NTUwOWMxNjlk
Zjg0MDYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50
LmNwcApAQCAtOTksOSArOTksOSBAQCBEb2N1bWVudCogSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpj
b250ZW50RG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRGcmFtZSA/IG1fY29u
dGVudEZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKIH0KIAotRE9NV2luZG93KiBIVE1MRnJh
bWVPd25lckVsZW1lbnQ6OmNvbnRlbnRXaW5kb3coKSBjb25zdAorV2luZG93UHJveHkqIEhUTUxG
cmFtZU93bmVyRWxlbWVudDo6Y29udGVudFdpbmRvdygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
Y29udGVudEZyYW1lID8gbV9jb250ZW50RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpIDog
bnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyAmbV9jb250ZW50RnJhbWUtPndp
bmRvd1Byb3h5KCkgOiBudWxscHRyOwogfQogCiB2b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6
c2V0U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCmluZGV4IDg2NWVkZGI5MWY1N2UzNDViNGI2ODdmNzYw
ZTgzMzI1NDI1YzRmYzEuLjgwZjE4MjAwZGYwZDRhNzRkN2YwZTNkYmNhMTUyNDU2MDIyNGFiMzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaApAQCAtMzcs
NyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SFRNTEZyYW1lT3duZXJFbGVtZW50KCk7
CiAKICAgICBGcmFtZSogY29udGVudEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50RnJh
bWU7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBET01XaW5kb3cqIGNvbnRlbnRXaW5kb3coKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXaW5kb3dQcm94eSogY29udGVudFdpbmRvdygpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KiBjb250ZW50RG9jdW1lbnQoKSBjb25zdDsK
IAogICAgIHZvaWQgc2V0Q29udGVudEZyYW1lKEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAppbmRleCAyODU2NDI0OTUwYTM0OWM5YjcyOTUwM2M1
ZjRmMTIxYThlYzRiMmI3Li41ZDIzN2Q0ODI2YzcyZjg4N2I3ZGIyZmI1MWQ2ZTk3ODY1Njc5YTk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKQEAgLTIz
MSwxNSArMjMxLDEzIEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNl
c3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyCiAgICAgfQogfQogCi1ET01X
aW5kb3cqIEhUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpCitXaW5kb3dQcm94eSogSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZWRJdGVtKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKICAgICBhdXRvIGZyYW1lRWxlbWVudCA9IG1ha2VSZWZQ
dHIoY2hpbGRyZW4oKS0+bmFtZWRJdGVtKG5hbWUpKTsKICAgICBpZiAoIWlzPEhUTUxGcmFtZUVs
ZW1lbnQ+KGZyYW1lRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYg
KGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGRvd25jYXN0PEhUTUxGcmFtZUVsZW1lbnQ+KGZy
YW1lRWxlbWVudC5nZXQoKSktPmNvbnRlbnREb2N1bWVudCgpKSkKLSAgICAgICAgcmV0dXJuIGRv
Y3VtZW50LT5kb21XaW5kb3coKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZG93
bmNhc3Q8SFRNTEZyYW1lRWxlbWVudD4oKmZyYW1lRWxlbWVudCkuY29udGVudFdpbmRvdygpOwog
fQogCiBWZWN0b3I8QXRvbWljU3RyaW5nPiBIVE1MRnJhbWVTZXRFbGVtZW50OjpzdXBwb3J0ZWRQ
cm9wZXJ0eU5hbWVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lU2V0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVt
ZW50LmgKaW5kZXggZDFmMzc5YjczNWNiNzdmNWU1YWQyZGVjNGViZjE0NDBjN2VlYTMzMi4uYzNj
NjhiNTdiZjk3N2U3YWNlYTkyZmYzYWVjMDk2NDk2ZjcxMjJiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBSZWZQdHI8SFRNTEZyYW1lU2V0RWxlbWVudD4gZmluZENvbnRhaW5pbmcoRWxlbWVu
dCogZGVzY2VuZGFudCk7CiAgICAgCiAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gc3VwcG9ydGVk
UHJvcGVydHlOYW1lcygpIGNvbnN0OwotICAgIERPTVdpbmRvdyogbmFtZWRJdGVtKGNvbnN0IEF0
b21pY1N0cmluZyYpOworICAgIFdpbmRvd1Byb3h5KiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3Ry
aW5nJik7CiAKIHByaXZhdGU6CiAgICAgSFRNTEZyYW1lU2V0RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lU2V0RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVs
ZW1lbnQuaWRsCmluZGV4IDMyNTBiOTQ5MGVkYjhiYjE4ZjQ3Yjk4MmNiYjdmNmI0NDA4ZDMxMjUu
LjY5NDIxNzNlNzQ0MDkyNDljMjA1YjBiM2M1MjYyOWUyYWNjNDY5NGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbApAQCAtMzMsNyArMzMsNyBAQCBpbnRl
cmZhY2UgSFRNTEZyYW1lU2V0RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKIAogICAgIC8vIE5vbi1z
dGFuZGFyZCBuYW1lZCBnZXR0ZXIKICAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgaW4gdGhlIHN0
YW5kYXJkLCBjYW4gd2UgcmVtb3ZlIHRoaXM/Ci0gICAgZ2V0dGVyIERPTVdpbmRvdyAoRE9NU3Ry
aW5nIG5hbWUpOworICAgIGdldHRlciBXaW5kb3dQcm94eSAoRE9NU3RyaW5nIG5hbWUpOwogfTsK
IAogSFRNTEZyYW1lU2V0RWxlbWVudCBpbXBsZW1lbnRzIFdpbmRvd0V2ZW50SGFuZGxlcnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCmluZGV4IDNlM2JkY2MxMTA0
MTg4YTc4ZGRiYThlMjc2NDM0ZTRlNjZlNjkwYmMuLmMxNjM5MjJlZTQyMGU3NWMwNGRkMTI4MTk0
YjUzNWYzODNjOTVkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFt
ZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQu
aWRsCkBAIC0zOCw3ICszOCw3IEBAIGludGVyZmFjZSBIVE1MSUZyYW1lRWxlbWVudCA6IEhUTUxF
bGVtZW50IHsKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9ubHkgYXR0cmlidXRl
IERvY3VtZW50IGNvbnRlbnREb2N1bWVudDsKIAotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01X
aW5kb3cgY29udGVudFdpbmRvdzsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkg
Y29udGVudFdpbmRvdzsKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZSwgTWF5VGhyb3dFeGNl
cHRpb25dIERvY3VtZW50IGdldFNWR0RvY3VtZW50KCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEb2N1bWVudC5jcHAKaW5kZXggZDE1MTI3M2EzNTk0OTNlMWI2YzUzOGYwZjNkOTMxNjg4MDM2
NGExNy4uODVjMTNmZjdmMDIwYWE5YWMyYzZlNGRmMTcyNDZkNDQxMTljNWE1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
Q2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGll
bnQuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5o
IgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggYjAyM2E0ZTJlZjI4NDMwMzdiZTVkMDhiZjJh
NGZlMzgzMWQ1ZmQ4Zi4uM2UyYTkxNjZmMmM4MDFhZTU1NjYzYmNjYjFiNDkwYWUwOWZhZjFiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKIGNsYXNzIFBvc3RNZXNzYWdlVGltZXIgOiBwdWJsaWMgVGlt
ZXJCYXNlIHsKIHB1YmxpYzoKLSAgICBQb3N0TWVzc2FnZVRpbWVyKERPTVdpbmRvdyYgd2luZG93
LCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luLCBET01XaW5kb3cmIHNvdXJjZSwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmIHRhcmdl
dE9yaWdpbiwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFja1RyYWNlKQorICAgIFBvc3RN
ZXNzYWdlVGltZXIoRE9NV2luZG93JiB3aW5kb3csIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFJlZlB0cjxXaW5kb3dQcm94eT4m
JiBzb3VyY2UsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0YXJnZXRPcmlnaW4sIFJlZlB0cjxT
Y3JpcHRDYWxsU3RhY2s+JiYgc3RhY2tUcmFjZSkKICAgICAgICAgOiBtX3dpbmRvdyh3aW5kb3cp
CiAgICAgICAgICwgbV9tZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpCiAgICAgICAgICwgbV9vcmln
aW4oc291cmNlT3JpZ2luKQpAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoKIAogICAgIFJlZjxN
ZXNzYWdlRXZlbnQ+IGV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAg
ewotICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoTWVzc2FnZVBvcnQ6OmVudGFu
Z2xlUG9ydHMoY29udGV4dCwgV1RGTW92ZShtX21lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpLCBt
X21lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBtX29yaWdpbiwgeyB9LCBNZXNzYWdl
RXZlbnRTb3VyY2UoUmVmUHRyPERPTVdpbmRvdz4oV1RGTW92ZShtX3NvdXJjZSkpKSk7CisgICAg
ICAgIHJldHVybiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0
cyhjb250ZXh0LCBXVEZNb3ZlKG1fbWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSksIG1fbWVzc2Fn
ZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCksIG1fb3JpZ2luLCB7IH0sIG1fc291cmNlID8gc3Rk
OjptYWtlX29wdGlvbmFsKE1lc3NhZ2VFdmVudFNvdXJjZShXVEZNb3ZlKG1fc291cmNlKSkpIDog
c3RkOjpudWxsb3B0KTsKICAgICB9CiAKICAgICBTZWN1cml0eU9yaWdpbiogdGFyZ2V0T3JpZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRPcmlnaW4uZ2V0KCk7IH0KQEAgLTE4MCw3ICsxODAs
NyBAQCBwcml2YXRlOgogICAgIFJlZjxET01XaW5kb3c+IG1fd2luZG93OwogICAgIE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzIG1fbWVzc2FnZTsKICAgICBTdHJpbmcgbV9vcmlnaW47Ci0gICAgUmVm
PERPTVdpbmRvdz4gbV9zb3VyY2U7CisgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiBtX3NvdXJjZTsK
ICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fdGFyZ2V0T3JpZ2luOwogICAgIFJlZlB0cjxT
Y3JpcHRDYWxsU3RhY2s+IG1fc3RhY2tUcmFjZTsKICAgICBSZWZQdHI8VXNlckdlc3R1cmVUb2tl
bj4gbV91c2VyR2VzdHVyZVRvRm9yd2FyZDsKQEAgLTk2MCw3ICs5NjAsOCBAQCBFeGNlcHRpb25P
cjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgRE9N
V2luZG93JiBpbmN1bQogICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UgeyBtZXNz
YWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZGlzZW50YW5nbGVkUG9ydHMucmVsZWFzZVJl
dHVyblZhbHVlKCkgfTsKIAogICAgIC8vIFNjaGVkdWxlIHRoZSBtZXNzYWdlLgotICAgIGF1dG8q
IHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGltZXIoKnRoaXMsIFdURk1vdmUobWVzc2FnZSksIHNv
dXJjZU9yaWdpbiwgaW5jdW1iZW50V2luZG93LCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUoc3Rh
Y2tUcmFjZSkpOworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gaW5jdW1iZW50V2luZG93UHJveHkg
PSBpbmN1bWJlbnRXaW5kb3cuZnJhbWUoKSA/ICZpbmN1bWJlbnRXaW5kb3cuZnJhbWUoKS0+d2lu
ZG93UHJveHkoKSA6IG51bGxwdHI7CisgICAgYXV0byogdGltZXIgPSBuZXcgUG9zdE1lc3NhZ2VU
aW1lcigqdGhpcywgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luLCBXVEZNb3ZlKGluY3Vt
YmVudFdpbmRvd1Byb3h5KSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHN0YWNrVHJhY2UpKTsK
ICAgICB0aW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFBvc3RNZXNzYWdlKCptX2ZyYW1lLCAqdGltZXIsIHN0YXRlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggOTE3NGFmZDUzMjE2YzExMmM0YjVlMGQ1
NzU4N2M4NmQxZmM5YzVhMS4uN2M0OWEyMTdmMDJhNjg1NTQ3MGRiMzE3N2I4ZjU5MzU0MzhmNTY4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTUwOCw3ICs1MDgs
NyBAQCBib29sIERyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1dEV2ZW50Rm9yKEZyYW1l
KiBpbm5lckZyYW1lLCBjb25zdCBEcmFnRGF0YQogICAgIFN0cmluZyB0ZXh0ID0gbV9wYWdlLmRy
YWdDYXJldENvbnRyb2xsZXIoKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpID8gZW1wdHlTdHJp
bmcoKSA6IGRyYWdEYXRhLmFzUGxhaW5UZXh0KCk7CiAgICAgRWxlbWVudCogdGFyZ2V0ID0gaW5u
ZXJGcmFtZS0+ZWRpdG9yKCkuZmluZEV2ZW50VGFyZ2V0RnJvbShtX3BhZ2UuZHJhZ0NhcmV0Q29u
dHJvbGxlcigpLmNhcmV0UG9zaXRpb24oKSk7CiAgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVl
cyB0YXJnZXQgaXMgbm90IG51bGw/Ci0gICAgYXV0byBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRl
Rm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCk7CisgICAg
YXV0byBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVu
dCgpLT5kZWZhdWx0VmlldygpLCB0ZXh0KTsKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZl
bnQpOwogICAgIHJldHVybiAhZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA4N2QxMjc3NGNjNmYzNGFlMDcwMTAwZDE5ZWVi
NzY1NjVmMjUwNzlkLi43ZDJjOTNhM2MwZjk4MWY4MDU5ZWE4YjdmMzg2YmZhNmZlMGMwMDRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zODAyLDcgKzM4MDIsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVGV4dElucHV0RXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0
LCBFdmVudCogdW5kZXJseWluZ0V2ZQogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1l
LnZpZXcoKSkKICAgICAgICAgdmlldy0+ZGlzYWJsZUxheWVyRmx1c2hUaHJvdHRsaW5nVGVtcG9y
YXJpbHlGb3JJbnRlcmFjdGlvbigpOwogCi0gICAgUmVmPFRleHRFdmVudD4gZXZlbnQgPSBUZXh0
RXZlbnQ6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0LCBpbnB1
dFR5cGUpOworICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGUobV9m
cmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCB0ZXh0LCBpbnB1dFR5cGUpOwogICAgIGV2
ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQodW5kZXJseWluZ0V2ZW50KTsKIAogICAgIHRhcmdldC0+
ZGlzcGF0Y2hFdmVudChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGE4NDI2NWFhNzkz
NmMzNDg5MmNjOWUwNzFhOTkwYjlhZDFlNTExNjguLjgyODRhNjUzMWRhM2FhMDFkMGZmYmNlZGIw
ODU4MTE3MjBiNjZiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0yMTIsNiArMjEyLDcgQEAg
UmVmPEZyYW1lPiBGcmFtZTo6Y3JlYXRlKFBhZ2UqIHBhZ2UsIEhUTUxGcmFtZU93bmVyRWxlbWVu
dCogb3duZXJFbGVtZW50LCBGcmFtZUwKIAogRnJhbWU6On5GcmFtZSgpCiB7CisgICAgd2luZG93
UHJveHkoKS5kZXN0cm95QWxsSlNXaW5kb3dQcm94aWVzKCk7CiAgICAgc2V0VmlldyhudWxscHRy
KTsKICAgICBsb2FkZXIoKS5jYW5jZWxBbmRDbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlldy5tbQppbmRleCAxYTRjMjliMWIwZGRhYzgyMjU3
YmQ2ZjRiYTZkYzQ0ZmYzOTEyZTg5Li4xNjllNGFlNWZlNzc1Yjk4ZDI0Y2Q0ODA2YTVhOWM1MDc4
ZTEwZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJh
Y3RWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZp
ZXcubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9XaW5kb3dQcm94eS5oPgogCiAjZGVmaW5l
IElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpGcmFtZSo+KF9pbnRlcm5hbCkKIApAQCAt
MTAwLDMgKzEwMSwxOSBAQCBET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpBYnN0cmFjdERP
TVdpbmRvdyogdmFsdWUpCiAKICAgICByZXR1cm4ga2l0KGRvd25jYXN0PFdlYkNvcmU6OkRPTVdp
bmRvdz4odmFsdWUpKTsKIH0KKworRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6V2luZG93
UHJveHkqIHdpbmRvd1Byb3h5KQoreworICAgIGlmICghd2luZG93UHJveHkpCisgICAgICAgIHJl
dHVybiBuaWw7CisKKyAgICByZXR1cm4ga2l0KHdpbmRvd1Byb3h5LT53aW5kb3coKSk7Cit9CisK
K1dlYkNvcmU6OldpbmRvd1Byb3h5KiB0b1dpbmRvd1Byb3h5KERPTUFic3RyYWN0VmlldyAqdmll
dykKK3sKKyAgICBhdXRvKiB3aW5kb3cgPSBjb3JlKHZpZXcpOworICAgIGlmICghd2luZG93IHx8
ICF3aW5kb3ctPmZyYW1lKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuICZ3aW5k
b3ctPmZyYW1lKCktPndpbmRvd1Byb3h5KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oCmluZGV4IGM0ZDczMjVjN2Yy
NWJiNWI4NjEyNzQxNmUzZDkwZDI4MjE0YzExOTcuLjM1OWYwNWViNGQ0YTQzYWE1MjQyMzNlNGJi
ZjY2MjhkYjM2ODg2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oCkBAIC0yOCwxMSArMjgsMTQgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEFic3RyYWN0RE9NV2luZG93OwogY2xhc3MgRE9NV2luZG93Owor
Y2xhc3MgV2luZG93UHJveHk7CiB9CiAKIFdlYkNvcmU6OkRPTVdpbmRvdyogY29yZShET01BYnN0
cmFjdFZpZXcgKik7CiBET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpET01XaW5kb3cqKTsK
IERPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OkFic3RyYWN0RE9NV2luZG93Kik7CitET01B
YnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpXaW5kb3dQcm94eSopOworV2ViQ29yZTo6V2luZG93
UHJveHkqIHRvV2luZG93UHJveHkoRE9NQWJzdHJhY3RWaWV3ICopOwogCiBAaW50ZXJmYWNlIERP
TUFic3RyYWN0VmlldyAoV2ViS2l0TGVnYWN5SW50ZXJuYWwpCiAtICh2b2lkKV9kaXNjb25uZWN0
RnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KaW5kZXgg
NmMyZjM2ZDgyNGE5NGE2ODIzYmYyYTgxYzliZWQyMjM0ZTdhNjhmNC4uYTdiODEzNDAwOTVmNjYz
ODE2NTQyZWJmODY0YWJjYzU5YmY4ZjNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01Eb2N1bWVudC5tbQpAQCAtODQsNiArODQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9UcmVl
V2Fsa2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dpbmRvd1Byb3h5Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1hQYXRoRXhwcmVzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9YUGF0
aE5TUmVzb2x2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvWFBhdGhSZXN1bHQuaD4KQEAgLTE2Miw3
ICsxNjMsMTAgQEAgLSAodm9pZClzZXREb2N1bWVudFVSSTooTlNTdHJpbmcgKiluZXdEb2N1bWVu
dFVSSQogLSAoRE9NQWJzdHJhY3RWaWV3ICopZGVmYXVsdFZpZXcKIHsKICAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJ
TVBMLT5kZWZhdWx0VmlldygpKSk7CisgICAgYXV0byogZGVmYXVsdFZpZXcgPSBJTVBMLT5kZWZh
dWx0VmlldygpOworICAgIGlmICghZGVmYXVsdFZpZXcpCisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgcmV0dXJuIGtpdChkZWZhdWx0Vmlldy0+d2luZG93KCkpOwogfQogCiAtIChET01TdHlsZVNo
ZWV0TGlzdCAqKXN0eWxlU2hlZXRzCkBAIC02ODQsNyArNjg4LDcgQEAgLSAoRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbiAqKWdldENvbXB1dGVkU3R5bGU6KERPTUVsZW1lbnQgKillbGVtZW50IHBzZXVk
b0VsZW1lbnQKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAg
aWYgKCFlbGVtZW50KQogICAgICAgICByYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOwotICAgIFdl
YkNvcmU6OkRPTVdpbmRvdyogZHYgPSBJTVBMLT5kZWZhdWx0VmlldygpOworICAgIFdlYkNvcmU6
OkRPTVdpbmRvdyogZHYgPSBJTVBMLT5kb21XaW5kb3coKTsKICAgICBpZiAoIWR2KQogICAgICAg
ICByZXR1cm4gbmlsOwogICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoZHYtPmdldENvbXB1dGVk
U3R5bGUoKmNvcmUoZWxlbWVudCksIHBzZXVkb0VsZW1lbnQpKSk7CkBAIC02OTgsNyArNzAyLDcg
QEAgLSAoRE9NQ1NTUnVsZUxpc3QgKilnZXRNYXRjaGVkQ1NTUnVsZXM6KERPTUVsZW1lbnQgKill
bGVtZW50IHBzZXVkb0VsZW1lbnQ6KE5TU3QKIC0gKERPTUNTU1J1bGVMaXN0ICopZ2V0TWF0Y2hl
ZENTU1J1bGVzOihET01FbGVtZW50ICopZWxlbWVudCBwc2V1ZG9FbGVtZW50OihOU1N0cmluZyAq
KXBzZXVkb0VsZW1lbnQgYXV0aG9yT25seTooQk9PTClhdXRob3JPbmx5CiB7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkRPTVdpbmRvdyog
ZHYgPSBJTVBMLT5kZWZhdWx0VmlldygpOworICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogZHYgPSBJ
TVBMLT5kb21XaW5kb3coKTsKICAgICBpZiAoIWR2KQogICAgICAgICByZXR1cm4gbmlsOwogICAg
IHJldHVybiBraXQoV1RGOjpnZXRQdHIoZHYtPmdldE1hdGNoZWRDU1NSdWxlcyhjb3JlKGVsZW1l
bnQpLCBwc2V1ZG9FbGVtZW50LCBhdXRob3JPbmx5KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQppbmRleCA5NzdlYjRhNmI4Mjk2
N2Q0ZDhiZGQ4YmVmYjNiMDE5N2Q1NDllNjg2Li5kNWFiMDExZjhmZjMxZTYyMGY5NzA0YzA3ZGM1
Njg0OTAzNWM2ZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEZyYW1lRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEZyYW1lRWxlbWVudC5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9U
aHJlYWRDaGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9XaW5kb3dQcm94eS5o
PgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SFRNTEZyYW1lRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+
KF9pbnRlcm5hbCkpCkBAIC0xNDgsNyArMTQ5LDEwIEBAIC0gKERPTURvY3VtZW50ICopY29udGVu
dERvY3VtZW50CiAtIChET01BYnN0cmFjdFZpZXcgKiljb250ZW50V2luZG93CiB7CiAgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpn
ZXRQdHIoSU1QTC0+Y29udGVudFdpbmRvdygpKSk7CisgICAgYXV0byogY29udGVudFdpbmRvdyA9
IElNUEwtPmNvbnRlbnRXaW5kb3coKTsKKyAgICBpZiAoIWNvbnRlbnRXaW5kb3cpCisgICAgICAg
IHJldHVybiBuaWw7CisgICAgcmV0dXJuIGtpdChjb250ZW50V2luZG93LT53aW5kb3coKSk7CiB9
CiAKIC0gKE5TU3RyaW5nICopbG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbQppbmRleCBiMWIyYzAzMThiMjBiNzI4YmU1
MTc3NjEyYzRhYzdhMzlkNzIxYTZkLi42ZWEzNzNhYzMyMjY3ZjAwYzQzNWI2NmZlY2M0OTBjYTY2
ZTQyOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTElG
cmFtZUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJ
RnJhbWVFbGVtZW50Lm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dpbmRvd1Byb3h5Lmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpIVE1MSUZyYW1lRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9p
bnRlcm5hbCkpCkBAIC0xOTYsNyArMTk3LDEwIEBAIC0gKERPTURvY3VtZW50ICopY29udGVudERv
Y3VtZW50CiAtIChET01BYnN0cmFjdFZpZXcgKiljb250ZW50V2luZG93CiB7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQ
dHIoSU1QTC0+Y29udGVudFdpbmRvdygpKSk7CisgICAgYXV0byogY29udGVudFdpbmRvdyA9IElN
UEwtPmNvbnRlbnRXaW5kb3coKTsKKyAgICBpZiAoIWNvbnRlbnRXaW5kb3cpCisgICAgICAgIHJl
dHVybiBuaWw7CisgICAgcmV0dXJuIGtpdChjb250ZW50V2luZG93LT53aW5kb3coKSk7CiB9CiAK
IEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01LZXlib2Fy
ZEV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQu
bW0KaW5kZXggZTlhYjFmZWZlNzRkOTczNGVhYzI4NDE2YjA5ZWYyMzEwZmNmYzcxYi4uYmEyZmJl
NGUxODlkNjEzNmVlZDczNWVmZmZlNzEyMGI3Zjk2OTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0KQEAgLTExMCwyNSArMTEwLDI1IEBA
IC0gKEJPT0wpZ2V0TW9kaWZpZXJTdGF0ZTooTlNTdHJpbmcgKilrZXlJZGVudGlmaWVyQXJnCiAt
ICh2b2lkKWluaXRLZXlib2FyZEV2ZW50OihOU1N0cmluZyAqKXR5cGUgY2FuQnViYmxlOihCT09M
KWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihCT09MKWNhbmNlbGFibGUgdmlldzooRE9NQWJzdHJhY3RW
aWV3ICopdmlldyBrZXlJZGVudGlmaWVyOihOU1N0cmluZyAqKWluS2V5SWRlbnRpZmllciBsb2Nh
dGlvbjoodW5zaWduZWQpaW5Mb2NhdGlvbiBjdHJsS2V5OihCT09MKWluQ3RybEtleSBhbHRLZXk6
KEJPT0wpaW5BbHRLZXkgc2hpZnRLZXk6KEJPT0wpaW5TaGlmdEtleSBtZXRhS2V5OihCT09MKWlu
TWV0YUtleSBhbHRHcmFwaEtleTooQk9PTClpbkFsdEdyYXBoS2V5CiB7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29yZSh2aWV3KSwgaW5LZXlJZGVudGlmaWVy
LCBpbkxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXks
IGluQWx0R3JhcGhLZXkpOworICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBp
bkxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXksIGlu
QWx0R3JhcGhLZXkpOwogfQogCiAtICh2b2lkKWluaXRLZXlib2FyZEV2ZW50OihOU1N0cmluZyAq
KXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihCT09MKWNhbmNlbGFi
bGUgdmlldzooRE9NQWJzdHJhY3RWaWV3ICopdmlldyBrZXlJZGVudGlmaWVyOihOU1N0cmluZyAq
KWluS2V5SWRlbnRpZmllciBsb2NhdGlvbjoodW5zaWduZWQpaW5Mb2NhdGlvbiBjdHJsS2V5OihC
T09MKWluQ3RybEtleSBhbHRLZXk6KEJPT0wpaW5BbHRLZXkgc2hpZnRLZXk6KEJPT0wpaW5TaGlm
dEtleSBtZXRhS2V5OihCT09MKWluTWV0YUtleQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIGNvcmUodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5Mb2NhdGlv
biwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5KTsKKyAgICBJTVBM
LT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRvV2luZG93
UHJveHkodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5Mb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFs
dEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5KTsKIH0KIAogLSAodm9pZClpbml0S2V5Ym9hcmRF
dmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJs
ZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKXZpZXcga2V5SWRlbnRp
ZmllcjooTlNTdHJpbmcgKilpbktleUlkZW50aWZpZXIga2V5TG9jYXRpb246KHVuc2lnbmVkKWlu
S2V5TG9jYXRpb24gY3RybEtleTooQk9PTClpbkN0cmxLZXkgYWx0S2V5OihCT09MKWluQWx0S2V5
IHNoaWZ0S2V5OihCT09MKWluU2hpZnRLZXkgbWV0YUtleTooQk9PTClpbk1ldGFLZXkgYWx0R3Jh
cGhLZXk6KEJPT0wpaW5BbHRHcmFwaEtleQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJi
bGUsIGNhbmNlbGFibGUsIGNvcmUodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5LZXlMb2NhdGlv
biwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkFsdEdyYXBo
S2V5KTsKKyAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNl
bGFibGUsIHRvV2luZG93UHJveHkodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5LZXlMb2NhdGlv
biwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkFsdEdyYXBo
S2V5KTsKIH0KIAogLSAodm9pZClpbml0S2V5Ym9hcmRFdmVudDooTlNTdHJpbmcgKil0eXBlIGNh
bkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6
KERPTUFic3RyYWN0VmlldyAqKXZpZXcga2V5SWRlbnRpZmllcjooTlNTdHJpbmcgKilpbktleUlk
ZW50aWZpZXIga2V5TG9jYXRpb246KHVuc2lnbmVkKWluS2V5TG9jYXRpb24gY3RybEtleTooQk9P
TClpbkN0cmxLZXkgYWx0S2V5OihCT09MKWluQWx0S2V5IHNoaWZ0S2V5OihCT09MKWluU2hpZnRL
ZXkgbWV0YUtleTooQk9PTClpbk1ldGFLZXkKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnVi
YmxlLCBjYW5jZWxhYmxlLCBjb3JlKHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluS2V5TG9jYXRp
b24sIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSk7CisgICAgSU1Q
TC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRv
d1Byb3h5KHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluS2V5TG9jYXRpb24sIGluQ3RybEtleSwg
aW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KaW5kZXggN2M3ZTBkZGZmMTQyMTYx
ZWU0OGU2Nzc3MDI1ZTdmNzBlODUzYTgxMy4uZTUxNWQ4OTM1YzE3N2Q0NzEwOTRhODRjNWNmYjhk
NjRkYjI5NDM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1v
dXNlRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZl
bnQubW0KQEAgLTE0NSw3ICsxNDUsNyBAQCAtICh2b2lkKWluaXRNb3VzZUV2ZW50OihOU1N0cmlu
ZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihCTwogICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBET01Ob2RlKiBpblJlbGF0
ZWRUYXJnZXRPYmpDID0gaW5SZWxhdGVkVGFyZ2V0OwogICAgIFdlYkNvcmU6Ok5vZGUqIGluUmVs
YXRlZFRhcmdldE5vZGUgPSBjb3JlKGluUmVsYXRlZFRhcmdldE9iakMpOwotICAgIElNUEwtPmlu
aXRNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29yZSh2aWV3KSwgZGV0
YWlsLCBpblNjcmVlblgsIGluU2NyZWVuWSwgaW5DbGllbnRYLCBpbkNsaWVudFksIGluQ3RybEtl
eSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwgaW5CdXR0b24sIGluUmVsYXRlZFRh
cmdldE5vZGUpOworICAgIElNUEwtPmluaXRNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2Fu
Y2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2aWV3KSwgZGV0YWlsLCBpblNjcmVlblgsIGluU2NyZWVu
WSwgaW5DbGllbnRYLCBpbkNsaWVudFksIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXks
IGluTWV0YUtleSwgaW5CdXR0b24sIGluUmVsYXRlZFRhcmdldE5vZGUpOwogfQogCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbQppbmRleCAyODY3YmM4
MDIzOTE2YTdlNjc4MGZhM2ViNzEyMGM5YzkxYWQyYTQyLi5kZmE3NjIwMjRiNTY2MjJjZTViMjk5
MWRmMzEyZGZkNTM4NzBkMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NVGV4dEV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01U
ZXh0RXZlbnQubW0KQEAgLTUwLDcgKzUwLDcgQEAgLSAoTlNTdHJpbmcgKilkYXRhCiAtICh2b2lk
KWluaXRUZXh0RXZlbnQ6KE5TU3RyaW5nICopdHlwZUFyZyBjYW5CdWJibGVBcmc6KEJPT0wpY2Fu
QnViYmxlQXJnIGNhbmNlbGFibGVBcmc6KEJPT0wpY2FuY2VsYWJsZUFyZyB2aWV3QXJnOihET01B
YnN0cmFjdFZpZXcgKil2aWV3QXJnIGRhdGFBcmc6KE5TU3RyaW5nICopZGF0YUFyZwogewogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0VGV4
dEV2ZW50KHR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywgY29yZSh2aWV3QXJn
KSwgZGF0YUFyZyk7CisgICAgSU1QTC0+aW5pdFRleHRFdmVudCh0eXBlQXJnLCBjYW5CdWJibGVB
cmcsIGNhbmNlbGFibGVBcmcsIHRvV2luZG93UHJveHkodmlld0FyZyksIGRhdGFBcmcpOwogfQog
CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCmluZGV4IGE0
NjRkYWNmYmY1MTI2NmJhOTJlNTk3NzE5MjlkODYzMWYyZjE2NDAuLjkxMDM3OWU2NTlmZGM5MjVj
YjNjM2MyMDQ0ZmI0N2Q2ODg3ZTA0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01VSUV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01VSUV2ZW50Lm1tCkBAIC00NSw3ICs0NSw5IEBAIEBpbXBsZW1lbnRhdGlvbiBET01VSUV2ZW50
CiAtIChET01BYnN0cmFjdFZpZXcgKil2aWV3CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+dmlldygp
KSk7CisgICAgaWYgKCFJTVBMLT52aWV3KCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0
dXJuIGtpdChJTVBMLT52aWV3KCktPndpbmRvdygpKTsKIH0KIAogLSAoaW50KWRldGFpbApAQCAt
MTAzLDcgKzEwNSw3IEBAIC0gKGludCl3aGljaAogLSAodm9pZClpbml0VUlFdmVudDooTlNTdHJp
bmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5j
ZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKWluVmlldyBkZXRhaWw6KGludClpbkRldGFp
bAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBM
LT5pbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUoaW5WaWV3KSwg
aW5EZXRhaWwpOworICAgIElNUEwtPmluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2Vs
YWJsZSwgdG9XaW5kb3dQcm94eShpblZpZXcpLCBpbkRldGFpbCk7CiB9CiAKIEBlbmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01XaGVlbEV2ZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQubW0KaW5kZXggOGYwNTY5Y2E2
YTNmOTU4Yzc0MWY2ZDg4MzU4ZmZmZDE2MGIxOGFjOC4uZGQ0YTU3YjBmMzJiNzdiNDMwYjZkZDlj
ZDViMTUyMzRlNWE0MzRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTVdoZWVsRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdo
ZWVsRXZlbnQubW0KQEAgLTk2LDcgKzk2LDcgQEAgLSAoQk9PTClpc0hvcml6b250YWwKIC0gKHZv
aWQpaW5pdFdoZWVsRXZlbnQ6KGludClpbldoZWVsRGVsdGFYIHdoZWVsRGVsdGFZOihpbnQpaW5X
aGVlbERlbHRhWSB2aWV3OihET01BYnN0cmFjdFZpZXcgKil2aWV3IHNjcmVlblg6KGludClzY3Jl
ZW5YIHNjcmVlblk6KGludClzY3JlZW5ZIGNsaWVudFg6KGludCljbGllbnRYIGNsaWVudFk6KGlu
dCljbGllbnRZIGN0cmxLZXk6KEJPT0wpY3RybEtleSBhbHRLZXk6KEJPT0wpYWx0S2V5IHNoaWZ0
S2V5OihCT09MKXNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wpbWV0YUtleQogewogICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0V2ViS2l0V2hlZWxF
dmVudChpbldoZWVsRGVsdGFYLCBpbldoZWVsRGVsdGFZLCBjb3JlKHZpZXcpLCBzY3JlZW5YLCBz
Y3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRh
S2V5KTsKKyAgICBJTVBMLT5pbml0V2ViS2l0V2hlZWxFdmVudChpbldoZWVsRGVsdGFYLCBpbldo
ZWVsRGVsdGFZLCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRY
LCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KTsKIH0KIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmluZGV4IDFiNDNk
ZDlmNGNhMTM1YjJkMWM0ZDRjNDY5Zjg2ODU1NWM0N2U5NjYuLmIyNTI2MWY3ZGZjZTFiN2NmNDcx
YTlkMWYyM2NiMDg3YjI1NzdhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3Jl
Q2xhc3Nlcy5jcHAKQEAgLTgwMiw3ICs4MDIsNyBAQCBIUkVTVUxUIERPTURvY3VtZW50OjpnZXRD
b21wdXRlZFN0eWxlKF9Jbl9vcHRfIElET01FbGVtZW50KiBlbHQsIF9Jbl8gQlNUUiBwc2V1ZAog
ICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIFdlYkNvcmU6
OkRPTVdpbmRvdyogZHYgPSBtX2RvY3VtZW50LT5kZWZhdWx0VmlldygpOworICAgIGF1dG8qIGR2
ID0gbV9kb2N1bWVudC0+ZG9tV2luZG93KCk7CiAgICAgU3RyaW5nIHBzZXVkb0VsdFN0cmluZyhw
c2V1ZG9FbHQpOwogICAgIAogICAgIGlmICghZHYpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338880</attachid>
            <date>2018-04-26 09:40:36 -0700</date>
            <delta_ts>2018-04-26 10:06:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185022-20180426094035.patch</filename>
            <type>text/plain</type>
            <size>132343</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNmYmU3ZTk5YzEwNmQx
NzM1Nzc3MGZmMTQxMzkwZjdlODNmNmU2My4uYWM4MDhlYTIzNDlkYzE2MzM0MWFkMmRkY2ZiOTIz
OWJkMjQ0MjQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxOC0wNC0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94eSBp
bnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHVzaW5nIERPTVdpbmRvdyBpbiBhbGwgb2Ygb3Vy
IElETCBmaWxlcyBhbmQgdXNlIFdpbmRvd1Byb3h5IGFzCisgICAgICAgIHBlciB0aGVpciByZXNw
ZWN0aXZlIHNwZWNpZmljYXRpb25zLiBBcyBhIHJlc3VsdCwgdGhlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGFzIGFsc28gdXBkYXRlZCB0byB1c2UgV2luZG93UHJveHkgdHlwZSBpbnN0ZWFkIG9m
IERPTVdpbmRvdy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXaW5kb3dQcm94eTo6d2luZG93UHJveHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9XaW5kb3dQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eTo6
fldpbmRvd1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpkZXN0cm95QWxs
SlNXaW5kb3dQcm94aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpnbG9iYWxP
YmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpXaW5kb3dQcm94eTo6ZnJhbWUgY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKElzQnVpbHRpblR5cGUpOgorICAgICAg
ICAoQ29tcHV0ZUlzQ2FsbGJhY2tJbnRlcmZhY2UpOgorICAgICAgICAoQ29tcHV0ZUlzQ2FsbGJh
Y2tGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChBZGRUb0luY2x1ZGVzRm9ySURMVHlwZSk6CisgICAgICAgIChHZXRCYXNl
SURMVHlwZSk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWVET01Db252ZXJ0TmVlZHNTdGF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RPdmVybG9hZERpc3BhdGNoZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50
KToKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5oOgorICAgICAgICAqIGRvbS9Db21w
b3NpdGlvbkV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmRlZmF1bHRWaWV3IGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudFRvdWNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VG91Y2g6OmNyZWF0ZVRv
dWNoKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRUb3VjaC5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudFRvdWNoLmlkbDoKKyAgICAgICAgKiBkb20vRm9jdXNFdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb2N1c0V2ZW50OjpGb2N1c0V2ZW50KToKKyAgICAgICAgKiBkb20vRm9jdXNFdmVu
dC5oOgorICAgICAgICAqIGRvbS9JbnB1dEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0RXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEV2ZW50OjpJbnB1dEV2
ZW50KToKKyAgICAgICAgKiBkb20vSW5wdXRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2Fy
ZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OktleWJvYXJkRXZlbnQ6OmNoYXJDb2RlIGNvbnN0KToKKyAgICAgICAgKiBkb20vS2V5
Ym9hcmRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmlkbDoKKyAgICAgICAg
KiBkb20vTWVzc2FnZUV2ZW50Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5pZGw6Cisg
ICAgICAgICogZG9tL01vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayk6CisgICAgICAgICogZG9t
L01vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5pZGw6CisgICAgICAgICog
ZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRl
ZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0
ZWRFdmVudDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6ZnJh
bWVWaWV3RnJvbVdpbmRvd1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2
ZW50Ojppbml0Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZl
bnQ6OmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUGFnZUxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpsb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyBj
b25zdCk6CisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50Lmg6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAqIGRvbS9TaW11bGF0ZWRDbGljay5jcHA6CisgICAgICAgICog
ZG9tL1RleHRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3ApOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEV2ZW50OjpUZXh0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50Ojppbml0
VGV4dEV2ZW50KToKKyAgICAgICAgKiBkb20vVGV4dEV2ZW50Lmg6CisgICAgICAgICogZG9tL1Rl
eHRFdmVudC5pZGw6CisgICAgICAgICogZG9tL1RvdWNoRXZlbnQuaWRsOgorICAgICAgICAqIGRv
bS9VSUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVJRXZlbnQ6OlVJRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VUlFdmVudDo6aW5pdFVJRXZlbnQpOgorICAgICAgICAqIGRvbS9VSUV2
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpVSUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VUlFdmVudDo6dmlldyBjb25zdCk6CisgICAgICAgICogZG9tL1VJRXZlbnQuaWRsOgor
ICAgICAgICAqIGRvbS9VSUV2ZW50SW5pdC5oOgorICAgICAgICAqIGRvbS9VSUV2ZW50SW5pdC5p
ZGw6CisgICAgICAgICogZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlVJRXZlbnRXaXRoS2V5U3RhdGU6OlVJRXZlbnRXaXRoS2V5U3RhdGUpOgorICAgICAgICAq
IGRvbS9XaGVlbEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OldoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2ZW50KToKKyAgICAgICAgKiBk
b20vV2hlZWxFdmVudC5oOgorICAgICAgICAqIGRvbS9XaGVlbEV2ZW50LmlkbDoKKyAgICAgICAg
KiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3Rl
QXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRDb21wb3NpdGlvbik6CisgICAgICAgICog
aHRtbC9IVE1MRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50Ojpu
YW1lZEl0ZW0pOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGw6
CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50V2luZG93IGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50
OjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3N0TWVzc2Fn
ZVRpbWVyOjpQb3N0TWVzc2FnZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc3RNZXNzYWdl
VGltZXI6OmV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2Up
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlVGV4dElucHV0RXZlbnQpOgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6fkZyYW1lKToKKyAgICAgICAgVXBkYXRlIEZyYW1lIGRlc3RydWN0
b3IgdG8gZGVzdHJveSBhbGwgaXRzIEpTV2luZG93UHJveGllcyBiZWZvcmUgZG9pbmcgYW55dGhp
bmcgZWxzZS4KKyAgICAgICAgQmVjYXVzZSByZWZpbmcgYSBXaW5kb3dQcm94eSBhY3R1YWxseSBy
ZWZzIGl0cyBmcmFtZSwgaXQgaXMgcG9zc2libGUgdGhhdCB3aGVuIGEgSlMKKyAgICAgICAgb2Jq
ZWN0IGlzIHN3ZXB0LCBpdHMgZGVzdHJveXMgYSBXaW5kb3dQcm94eSwgd2hpY2ggZGVzdHJveXMg
YSBGcmFtZS4gVGhlIEZyYW1lIGRlc3RydWN0b3IKKyAgICAgICAgd291bGQgdGhlbiBjYWxsIEZy
YW1lTG9hZGVyOjpjYW5jZWxBbmRDbGVhcigpIHdoaWNoIHdvdWxkIGVuZCB1cCBjYWxsaW5nIFNj
cmlwdENvbnRyb2xsZXI6OmVuYWJsZUV2YWwoKQorICAgICAgICBhbmQgYWNjZXNzaW5nIEpTV2lu
ZG93UHJveHk6OndpbmRvdygpLiBUaGlzIHdvdWxkIGhpdCBhbiBhc3NlcnRpb24gd2hlbiBkb2lu
ZyB0aGUganNDYXN0KCkgaW4KKyAgICAgICAgSlNDZWxsOjpjbGFzc0luZm8oSlNDOjpWTSYpOgor
ICAgICAgICBBU1NFUlQodm0uaGVhcC5tdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OlN3
ZWVwaW5nIHx8ICF2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKwogMjAxOC0w
NC0yMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1dQRV1bR1RLXSBSZW1vdmUgV2xVbmlxdWVQdHI8d2xfZGlzcGxheT4gZm9vdGd1bgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGYzMDg5NWFiYWY2NzAwMjA3NDJkNGVmYzAzOTAx
OGRhMjc3ZTc2YWYuLjZhZDUyNWU5ODEwZWEwMjY3MmZlMWUwOTM3NTYxMWI4ZjM4NjQwMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0wNC0yNiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94
eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01BYnN0cmFjdFZpZXcubW06CisgICAg
ICAgIChraXQpOgorICAgICAgICAodG9XaW5kb3dQcm94eSk6CisgICAgICAgICogRE9NL0RPTUFi
c3RyYWN0Vmlld0ludGVybmFsLmg6CisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOgorICAg
ICAgICAoLVtET01Eb2N1bWVudCBkZWZhdWx0Vmlld10pOgorICAgICAgICAoLVtET01Eb2N1bWVu
dCBnZXRDb21wdXRlZFN0eWxlOnBzZXVkb0VsZW1lbnQ6XSk6CisgICAgICAgICgtW0RPTURvY3Vt
ZW50IGdldE1hdGNoZWRDU1NSdWxlczpwc2V1ZG9FbGVtZW50OmF1dGhvck9ubHk6XSk6CisgICAg
ICAgICogRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUhUTUxGcmFt
ZUVsZW1lbnQgY29udGVudFdpbmRvd10pOgorICAgICAgICAqIERPTS9ET01IVE1MSUZyYW1lRWxl
bWVudC5tbToKKyAgICAgICAgKC1bRE9NSFRNTElGcmFtZUVsZW1lbnQgY29udGVudFdpbmRvd10p
OgorICAgICAgICAqIERPTS9ET01LZXlib2FyZEV2ZW50Lm1tOgorICAgICAgICAoLVtET01LZXli
b2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5
SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdy
YXBoS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50
OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5
OmFsdEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50
IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmll
cjprZXlMb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdyYXBoS2V5
Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1
YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjprZXlMb2NhdGlvbjpjdHJsS2V5OmFs
dEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAqIERPTS9ET01Nb3VzZUV2ZW50Lm1t
OgorICAgICAgICAoLVtET01Nb3VzZUV2ZW50IGluaXRNb3VzZUV2ZW50OmNhbkJ1YmJsZTpjYW5j
ZWxhYmxlOnZpZXc6ZGV0YWlsOnNjcmVlblg6c2NyZWVuWTpjbGllbnRYOmNsaWVudFk6Y3RybEtl
eTphbHRLZXk6c2hpZnRLZXk6bWV0YUtleTpidXR0b246cmVsYXRlZFRhcmdldDpdKToKKyAgICAg
ICAgKiBET00vRE9NVGV4dEV2ZW50Lm1tOgorICAgICAgICAoLVtET01UZXh0RXZlbnQgaW5pdFRl
eHRFdmVudDpjYW5CdWJibGVBcmc6Y2FuY2VsYWJsZUFyZzp2aWV3QXJnOmRhdGFBcmc6XSk6Cisg
ICAgICAgICogRE9NL0RPTVVJRXZlbnQubW06CisgICAgICAgICgtW0RPTVVJRXZlbnQgdmlld10p
OgorICAgICAgICAoLVtET01VSUV2ZW50IGluaXRVSUV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxl
OnZpZXc6ZGV0YWlsOl0pOgorICAgICAgICAqIERPTS9ET01XaGVlbEV2ZW50Lm1tOgorICAgICAg
ICAoLVtET01XaGVlbEV2ZW50IGluaXRXaGVlbEV2ZW50OndoZWVsRGVsdGFZOnZpZXc6c2NyZWVu
WDpzY3JlZW5ZOmNsaWVudFg6Y2xpZW50WTpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5
Ol0pOgorCiAyMDE4LTA0LTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjMwOTIxLCByMjMwOTIzLCBy
MjMwOTI0LCByMjMwOTMyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGRkZTgwMDhk
YzE4N2YzMDI0OTk1YjJhNGJjN2Q5Y2QwY2E5ZWZjNGIuLmY5YjU5MDBmMTk5ZTU3Yzc0YWJkNDIz
YTkzMzFhZGQ4ZjQ0N2M4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxOC0wNC0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBXaW5kb3dQcm94eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVD
bGFzc2VzLmNwcDoKKyAgICAgICAgKERPTURvY3VtZW50OjpnZXRDb21wdXRlZFN0eWxlKToKKwog
MjAxOC0wNC0yMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzMDkyMSwgcjIzMDkyMywgcjIzMDkyNCwg
cjIzMDkzMiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAzMGY2NDZlYzc4ODYwMDlkMDgwYjdmY2U4NzJmOTBjMzdjMGJjNjZmLi4w
MTE0ZjIwNThmYWJhOWEyZGUwMTI4NTk3MGE2NjBhZDc0OTQ5ZGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzY1LDcgKzIz
NjUsNiBAQAogCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOTU5RTEx
QjhCQzIyQjAwNEQ5Mzg1IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcg
LyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVS
ZXF1ZXN0VHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTgzQjk2ODdCMTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk2
ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLzsgfTsKLQkJ
ODNCOUU3MEIyMDg2QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I5RTcwOTIwODZC
QTI3MDBFNUQ3NTYgLyogSlNET01Db252ZXJ0V2luZG93UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0JCNUM4ODFENUQ2RjQ1MDA1QTcx
RjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVz
Y2VuZGFudHNDb2xsZWN0aW9uLmggKi87IH07CiAJCTgzQzA1QTVCMUE2ODYyMTIwMDdFNURFQSAv
KiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9OwogCQk4M0MxRDQyNTE3OEQ1QUI0
MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0FyY0Ficy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNDMUQ0MTMxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhT
ZWdBcmNBYnMuaCAqLzsgfTsKQEAgLTk4NzcsNyArOTg3Niw2IEBACiAJCTgzQjc0RUYyMUYzRTBC
RDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVw
YWxpdmVSZXF1ZXN0VHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBL
ZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
M0I5Njg3OTE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0I5RTcwOTIwODZCQTI3MDBFNUQ3NTYgLyogSlNE
T01Db252ZXJ0V2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNET01Db252ZXJ0V2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNDMDVBNTgxQTY4NjIxMjAwN0U1REVB
IC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAv
KiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5ODM1LDcgKzE5ODMzLDYgQEAKIAkJCQk3QzhFMzRBQTFF
NEEzMzhFMDA1NENFMjMgLyogSlNET01Db252ZXJ0VmFyaWFkaWMuaCAqLywKIAkJCQk3Q0JBNUJB
NjFGMEI0QkRFMDAzNEQ3NDUgLyogSlNET01Db252ZXJ0V2ViR0wuY3BwICovLAogCQkJCTdDOEUz
NEFCMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5oICovLAotCQkJCTgzQjlF
NzA5MjA4NkJBMjcwMEU1RDc1NiAvKiBKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oICovLAogCQkJ
CTdDOEUzNEFDMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIu
aCAqLywKIAkJCSk7CiAJCQluYW1lID0gQ29udmVyc2lvbnM7CkBAIC0yODQxNiw3ICsyODQxMyw2
IEBACiAJCQkJN0M4RTM0QzQxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFVuaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRDNTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252
ZXJ0VmFyaWFkaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEM2MUU0QTMzQjAwMDU0Q0Uy
MyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODNCOUU3MEIyMDg2
QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QzhFMzRDNzFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0WFBhdGhOU1Jlc29s
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQzlFMEU0RDE2NDE5QzFFMDAzOTJCRTMgLyogSlNE
T01DU1NOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEN0MxMEQyOUE0NjMwMEI5
OTE4RiAvKiBKU0RPTUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
SURMVHlwZXMuaAppbmRleCA1ZmU3N2U4M2YyM2RhMmIxYjQyMGQxZTM5MmRlYTlkYzA3ZmIxYzgw
Li44MDU3ZGZhMTE1ODg4ZDNkYjRhMGYwYmUyNmI0YzY2MmI2OWM3ODdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL0lETFR5cGVzLmgKQEAgLTI3NCw3ICsyNzQsNiBAQCBzdHJ1Y3QgSURMU2NoZWR1bGVk
QWN0aW9uIDogSURMVHlwZTxzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPj4geyB9Owog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IElE
TFdyYXBwZXI8VD4geyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETEV2ZW50TGlz
dGVuZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJ
RExYUGF0aE5TUmVzb2x2ZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKLXN0cnVjdCBJRExXaW5kb3dQ
cm94eSA6IElETFdyYXBwZXI8SlNXaW5kb3dQcm94eT4geyB9OwogCiBzdHJ1Y3QgSURMSURCS2V5
IDogSURMV3JhcHBlcjxJREJLZXk+IHsgfTsKIHN0cnVjdCBJRExJREJLZXlEYXRhIDogSURMV3Jh
cHBlcjxJREJLZXlEYXRhPiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0V2luZG93UHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODJjMWZmNDgxOTJkZTVjMjA4MmRiN2IzZGUwYWMzYmFhNGIzNGM3Yy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIK
LSNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCi0jaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTQ29udmVydGVy
PElETFdpbmRvd1Byb3h5PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUg
PSB0cnVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9IGZh
bHNlOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgVSYmIHZhbHVlKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsKLSAgICB9Ci19
OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCmlu
ZGV4IDE4ODY3MWU0OWIxZjE0MzE1Yzk4Njc3MWQwN2JhNmY4M2UxYWJkMjcuLmE0YjE4MDVjNjUy
ZTIzMjBiZmQ3OWEwOTc5Mjc5YWNjMDg3YjY5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2luZG93UHJveHkuY3BwCkBAIC0xMTksNiArMTE5LDEyIEBAIHZvaWQgSlNXaW5k
b3dQcm94eTo6c2V0V2luZG93KEFic3RyYWN0RE9NV2luZG93JiBkb21XaW5kb3cpCiAgICAgQVNT
RVJUKHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkgPT0gd2luZG93KTsKIH0KIAorV2luZG93UHJv
eHkqIEpTV2luZG93UHJveHk6OndpbmRvd1Byb3h5KCkgY29uc3QKK3sKKyAgICBhdXRvJiB3aW5k
b3cgPSB3cmFwcGVkKCk7CisgICAgcmV0dXJuIHdpbmRvdy5mcmFtZSgpID8gJndpbmRvdy5mcmFt
ZSgpLT53aW5kb3dQcm94eSgpIDogbnVsbHB0cjsKK30KKwogdm9pZCBKU1dpbmRvd1Byb3h5Ojph
dHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKIHsKICAgICBhdXRvKiBnbG9i
YWxPYmplY3QgPSB3aW5kb3coKTsKQEAgLTEzOCwxMiArMTQ0LDYgQEAgQWJzdHJhY3RET01XaW5k
b3cmIEpTV2luZG93UHJveHk6OndyYXBwZWQoKSBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8SlNE
T01XaW5kb3dCYXNlKj4od2luZG93KS0+d3JhcHBlZCgpOwogfQogCi1BYnN0cmFjdERPTVdpbmRv
dyogSlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKFZNJiB2bSwgSlNPYmplY3QqIHZhbHVlKQotewot
ICAgIGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTV2luZG93UHJveHkqPih2bSwgdmFs
dWUpOwotICAgIHJldHVybiB3cmFwcGVyID8gJndyYXBwZXItPndyYXBwZWQoKSA6IG51bGxwdHI7
Ci19Ci0KIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBXaW5kb3dQcm94eSYgd2luZG93
UHJveHkpCiB7CiAgICAgcmV0dXJuICZ3aW5kb3dQcm94eS5qc1dpbmRvd1Byb3h5KGN1cnJlbnRX
b3JsZCgqc3RhdGUpKTsKQEAgLTE1NCw0ICsxNTQsMTQgQEAgSlNXaW5kb3dQcm94eSYgdG9KU1dp
bmRvd1Byb3h5KFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKICAgICByZXR1cm4gd2luZG93UHJveHkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiB9CiAKK1dp
bmRvd1Byb3h5KiBKU1dpbmRvd1Byb3h5Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVl
KQoreworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBpZiAob2JqZWN0
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNX
aW5kb3dQcm94eSo+KG9iamVjdCktPndpbmRvd1Byb3h5KCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2luZG93UHJveHkuaAppbmRleCAxODVhNTQ1NzhiZjgxNzdjZmNhMTc1YzZlNGIxMWY0NzQ4
YTQwOTQ4Li4zNjI0MGQ4NjZlOGYxMGRhZDYyMWRiZGQ5OWVmYjE3ZTE4MWJkZDk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oCkBAIC0yOCw3ICsyOCw5IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTUHJveHkuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zOSw3
ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJhY3RET01XaW5kb3c7
CiBjbGFzcyBBYnN0cmFjdEZyYW1lOwotY2xhc3MgV2luZG93UHJveHk7CiAKIGNsYXNzIEpTV2lu
ZG93UHJveHkgZmluYWwgOiBwdWJsaWMgSlNDOjpKU1Byb3h5IHsKICAgICB1c2luZyBCYXNlID0g
SlNDOjpKU1Byb3h5OwpAQCAtNTMsOCArNTQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2lu
ZG93KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgc2V0V2luZG93KEFi
c3RyYWN0RE9NV2luZG93Jik7CiAKKyAgICBXaW5kb3dQcm94eSogd2luZG93UHJveHkoKSBjb25z
dDsKKwogICAgIEFic3RyYWN0RE9NV2luZG93JiB3cmFwcGVkKCkgY29uc3Q7Ci0gICAgc3RhdGlj
IFdFQkNPUkVfRVhQT1JUIEFic3RyYWN0RE9NV2luZG93KiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpT
Qzo6SlNPYmplY3QqKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgV2luZG93UHJveHkqIHRv
V3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKIAogICAgIERPTVdyYXBwZXJXb3JsZCYg
d29ybGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CiAKQEAgLTcxLDEwICs3NCwxNiBAQCBwcml2YXRl
OgogLy8gSXQgaXMsIGhvd2V2ZXIsIHN0cm9uZ2x5IG93bmVkIGJ5IEFic3RyYWN0RnJhbWUgdmlh
IGl0cyBXaW5kb3dQcm94eSwgc28gd2UgY2FuIGdldCBvbmUgZnJvbSBhIFdpbmRvd1Byb3h5Lgog
V0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBXaW5kb3dQ
cm94eSYpOwogaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
V2luZG93UHJveHkqIHdpbmRvd1Byb3h5KSB7IHJldHVybiB3aW5kb3dQcm94eSA/IHRvSlMoc3Rh
dGUsICp3aW5kb3dQcm94eSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1pbmxpbmUgSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBSZWZQdHI8V2luZG93UHJveHk+JiB3
aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwgd2luZG93UHJveHkuZ2V0KCkpOyB9Citp
bmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamVjdCosIFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwg
d2luZG93UHJveHkpOyB9CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXaW5kb3dQcm94eSogd2lu
ZG93UHJveHkpIHsgcmV0dXJuIHdpbmRvd1Byb3h5ID8gdG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0
LCAqd2luZG93UHJveHkpIDogSlNDOjpqc051bGwoKTsgfQogCiBKU1dpbmRvd1Byb3h5JiB0b0pT
V2luZG93UHJveHkoV2luZG93UHJveHkmLCBET01XcmFwcGVyV29ybGQmKTsKIGlubGluZSBKU1dp
bmRvd1Byb3h5KiB0b0pTV2luZG93UHJveHkoV2luZG93UHJveHkqIHdpbmRvd1Byb3h5LCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKSB7IHJldHVybiB3aW5kb3dQcm94eSA/ICZ0b0pTV2luZG93UHJv
eHkoKndpbmRvd1Byb3h5LCB3b3JsZCkgOiBudWxscHRyOyB9CiAKIAordGVtcGxhdGU8PiBzdHJ1
Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFdpbmRvd1Byb3h5PiB7CisgICAgdXNpbmcg
V3JhcHBlckNsYXNzID0gSlNXaW5kb3dQcm94eTsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5U
eXBlID0gV2luZG93UHJveHkqOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwCmluZGV4IDhlOGY1MTM1M2VkMWY3
YTBiNWIzZjkzMDRjZjgxYzhhYWNiNzViNWUuLmFiMjQ1YjI0Nzg0YWQ3NzczODZlYzUzNDhmM2Ey
NjkyNDdlODAxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRv
d1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5j
cHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSlNXaW5kb3dQcm94
eS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgog
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtNTMsMTIgKzU0LDE2IEBAIFdpbmRvd1Byb3h5OjpX
aW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJiBmcmFtZSkKIH0KIAogV2luZG93UHJveHk6On5XaW5k
b3dQcm94eSgpCit7CisgICAgZGVzdHJveUFsbEpTV2luZG93UHJveGllcygpOworfQorCit2b2lk
IFdpbmRvd1Byb3h5OjpkZXN0cm95QWxsSlNXaW5kb3dQcm94aWVzKCkKIHsKICAgICAvLyBJdCdz
IGxpa2VseSB0aGF0IGRlc3Ryb3lpbmcgd2luZG93UHJveGllcyB3aWxsIGNyZWF0ZSBhIGxvdCBv
ZiBnYXJiYWdlLgogICAgIGlmICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIHdoaWxlICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBh
dXRvIGl0ID0gbV9qc1dpbmRvd1Byb3hpZXMuYmVnaW4oKTsKLSAgICAgICAgICAgIGl0LT52YWx1
ZS0+d2luZG93KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CiAgICAgICAgICAgICBkZXN0
cm95SlNXaW5kb3dQcm94eSgqaXQtPmtleSk7CiAgICAgICAgIH0KICAgICAgICAgY29sbGVjdEdh
cmJhZ2VBZnRlcldpbmRvd1Byb3h5RGVzdHJ1Y3Rpb24oKTsKQEAgLTkxLDYgKzk2LDExIEBAIFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU1dpbmRvd1Byb3h5Pj4gV2luZG93UHJveHk6OmpzV2luZG93UHJv
eGllc0FzVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fanNXaW5kb3dQ
cm94aWVzLnZhbHVlcygpKTsKIH0KIAorSlNET01HbG9iYWxPYmplY3QqIFdpbmRvd1Byb3h5Ojpn
bG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICByZXR1cm4ganNXaW5k
b3dQcm94eSh3b3JsZCkud2luZG93KCk7Cit9CisKIEpTV2luZG93UHJveHkmIFdpbmRvd1Byb3h5
OjpjcmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaAppbmRleCA3NzcyMjk4M2IwYTMyMmNkMDY3
ZGZiNTA2MmRhMDc3N2E2OGU2NWY4Li44NDY3MDIwOTA3NWY3MzJmNWVlMTUxMTgyN2Q2ZDhiMDgy
ZWY4ODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmgKQEAgLTIw
LDcgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU1dpbmRvd1Byb3h5Lmgi
CisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApAQCAtMzAsNyArMzAsMTAgQEAg
Y2xhc3MgRGVidWdnZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWJzdHJhY3RE
T01XaW5kb3c7CiBjbGFzcyBBYnN0cmFjdEZyYW1lOworY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7
CitjbGFzcyBKU1dpbmRvd1Byb3h5OwogCiBjbGFzcyBXaW5kb3dQcm94eSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00MCw2ICs0Myw4IEBAIHB1YmxpYzoKICAgICBleHBsaWNp
dCBXaW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJik7CiAgICAgfldpbmRvd1Byb3h5KCk7CiAKKyAg
ICBBYnN0cmFjdEZyYW1lJiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KKwogICAg
IHZvaWQgZGVzdHJveUpTV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICBQcm94
eU1hcDo6VmFsdWVzQ29uc3RJdGVyYXRvclJhbmdlIGpzV2luZG93UHJveGllcygpIGNvbnN0IHsg
cmV0dXJuIG1fanNXaW5kb3dQcm94aWVzLnZhbHVlcygpOyB9CkBAIC02MywxMCArNjgsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAoaXQgIT0gbV9qc1dpbmRvd1Byb3hpZXMuZW5kKCkpID8g
aXQtPnZhbHVlLmdldCgpIDogbnVsbHB0cjsKICAgICB9CiAKLSAgICBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCi0gICAgewotICAgICAgICBy
ZXR1cm4ganNXaW5kb3dQcm94eSh3b3JsZCkud2luZG93KCk7Ci0gICAgfQorICAgIFdFQkNPUkVf
RVhQT1JUIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJik7
CiAKICAgICB2b2lkIGNsZWFySlNXaW5kb3dQcm94aWVzTm90TWF0Y2hpbmdET01XaW5kb3coQWJz
dHJhY3RET01XaW5kb3cqLCBib29sIGdvaW5nSW50b1BhZ2VDYWNoZSk7CiAKQEAgLTgwLDYgKzgy
LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVmKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkZXJlZigpOwogCisgICAgdm9pZCBkZXN0cm95QWxsSlNXaW5kb3dQcm94
aWVzKCk7CisKIHByaXZhdGU6CiAgICAgSlNXaW5kb3dQcm94eSYgY3JlYXRlSlNXaW5kb3dQcm94
eShET01XcmFwcGVyV29ybGQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBKU1dpbmRvd1Byb3h5JiBj
cmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBt
CmluZGV4IDk1MjQyOWEwZTQ5Nzc0YmFkMjJjMWU1OGViYjJlNGVkZGJhZDNiNjMuLjJmY2ZlZTNh
N2FhOGYyMmYyNmViZGRiNmE0ZTI4ZmEwMzhiMmY0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTg5MSw3ICs4OTEsNiBAQCBz
dWIgSXNCdWlsdGluVHlwZQogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5T
UmVzb2x2ZXIiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJhbnkiOwogICAgIHJl
dHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJvYmplY3QiOwotICAgIHJldHVybiAxIGlmICR0eXBl
LT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTEwMDEsNiAr
MTAwMCw3IEBAIHN1YiBDb21wdXRlSXNDYWxsYmFja0ludGVyZmFjZQogICAgIGFzc2VydCgiTm90
IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5s
ZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5
cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsKIAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5u
YW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlw
ZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBc
IiR0eXBlTmFtZVwiIVxuIik7CkBAIC0xMDM4LDYgKzEwMzgsNyBAQCBzdWIgQ29tcHV0ZUlzQ2Fs
bGJhY2tGdW5jdGlvbgogICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUg
IklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5sZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlw
ZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsK
IAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9i
amVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlwZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9U
IGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlTmFtZVwiIVxuIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4
IDYyNmE5ZjBiMmQ2ZjA0M2NmOTJiZGYzMmYyOTYyODkyNjExNmU1ZTQuLjMwYTM3NGMyODI0ZmEy
NjA4MjQyYWEzODcxMDk4NDIwMmI1ZDBlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00MjEsMTMgKzQyMSw2IEBAIHN1
YiBBZGRUb0luY2x1ZGVzRm9ySURMVHlwZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKCR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSIpIHsKLSAgICAgICAgQWRkVG9JbmNsdWRl
cygiV2luZG93UHJveHkuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAg
QWRkVG9JbmNsdWRlcygiSlNXaW5kb3dQcm94eS5oIiwgJGluY2x1ZGVzUmVmLCAkY29uZGl0aW9u
YWwpOwotICAgICAgICBBZGRUb0luY2x1ZGVzKCJKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIiwg
JGluY2x1ZGVzUmVmLCAkY29uZGl0aW9uYWwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7CiAgICAgICAgIEFk
ZFRvSW5jbHVkZXMoIkpTRE9NQ29udmVydFN0cmluZ3MuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRp
dGlvbmFsKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjM5Myw3ICs2Mzg2LDYgQEAgc3ViIEdldEJh
c2VJRExUeXBlCiAgICAgICAgICJKU09OIiA9PiAiSURMSlNPTiIsCiAgICAgICAgICJTY2hlZHVs
ZWRBY3Rpb24iID0+ICJJRExTY2hlZHVsZWRBY3Rpb24iLAogICAgICAgICAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlIiA9PiAiSURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4iLAotICAgICAgICAiV2luZG93UHJveHkiID0+ICJJRExXaW5kb3dQcm94eSIsCiAgICAg
ICAgICJYUGF0aE5TUmVzb2x2ZXIiID0+ICJJRExYUGF0aE5TUmVzb2x2ZXI8WFBhdGhOU1Jlc29s
dmVyPiIsCiAgICAgKTsKIApAQCAtNjU1NCw3ICs2NTQ2LDYgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1
ZURPTUNvbnZlcnROZWVkc1N0YXRlCiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIkpT
T04iOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwot
ICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAgICAgCiAgICAg
cmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGJhNDViYjk4ZjIxYTYzMzkwOWQyYmU4ZTBhMWZl
MmRjNzI2YTM0NWYuLmMwNDY2YzI2NmI3MzdmNmM4ODVkMmFhZmQwNWI1ZjE2ZjY4MmQ1MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCkBAIC01NSw3ICs1NSw2IEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIK
ICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCIKICNpbmNsdWRlICJK
U0RPTVN0cmluZ0xpc3QuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpT
RE9NV2luZG93QmFzZS5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiSlNEb2N1bWVudC5oIgpAQCAtNjk1Nyw3ICs2OTU2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDlCb2QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8g
d2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8RE9NV2luZG93Pj4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwg
IndpbmRvdyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiRE9NV2luZG93Iik7
IH0pOworICAgIGF1dG8gd2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8V2luZG93UHJveHk+
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAwLCAid2luZG93IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhv
ZCIsICJXaW5kb3dQcm94eSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqd2luZG93
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNzAyOSw3
ICs3MDI4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZE92ZXIKICAgICAgICAgICAgIHJldHVybiBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2Qm9keShzdGF0ZSwgY2Fz
dGVkVGhpcywgdGhyb3dTY29wZSk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09i
amVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNUZXN0T2Jq
Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kOEJvZHkoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwotICAgICAg
ICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiAoYXNPYmplY3QoZGlzdGluZ3Vp
c2hpbmdBcmcpLT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkgfHwgYXNPYmplY3QoZGlzdGlu
Z3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU0RPTVdpbmRvdz4odm0pKSkKKyAgICAgICAgaWYgKGRp
c3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcp
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOUJvZHkoc3RhdGUsIGNhc3RlZFRo
aXMsIHRocm93U2NvcGUpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzPEpTQmxvYj4odm0pKQog
ICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDEzQm9keShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggYzgzZWVlZWRi
ZjQxNjNmODMyYmNkMjUzZWMwNTc1Njg0NmVlZDY4NC4uNzFkZGZjNDg5ZWQyZDVkYTI1NmZiNWM0
MzBiOTMyZWJkYzRmODcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMjg2LDcgKzI4Niw3IEBAIGVudW0gVGVzdENvbmZpZGVu
Y2UgeyAiaGlnaCIsICJraW5kYS1sb3ciIH07CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9k
KERPTVN0cmluZ0xpc3Q/IGxpc3RBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChz
ZXF1ZW5jZTxET01TdHJpbmc+PyBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0
aG9kKFRlc3RPYmogb2JqQXJnKTsKLSAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoRE9NV2lu
ZG93IHdpbmRvdyk7CisgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFdpbmRvd1Byb3h5IHdp
bmRvdyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKHNlcXVlbmNlPERPTVN0cmluZz4g
YXJyYXlBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChzZXF1ZW5jZTx1bnNpZ25l
ZCBsb25nPiBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmlu
ZyBzdHJBcmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCmluZGV4IDBl
MzhhNjcxOGNkMWRhZDJlNzkwMjhiODkwMDU2YTZmY2I2NDJjOTAuLjAwN2FmN2Q3MjRmNWMzZTRh
MGEzNjExMjU2NmM0ODJlZDZmZDU5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NpdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25F
dmVudC5jcHAKQEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb21wb3Np
dGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KCkgPSBkZWZhdWx0OwogCi1Db21wb3NpdGlvbkV2
ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRE9NV2luZG93
KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgOiBVSUV2ZW50KHR5cGUsIHRydWUsIHRy
dWUsIHZpZXcsIDApCitDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKKyAgICA6IFVJRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwg
MCkKICAgICAsIG1fZGF0YShkYXRhKQogewogfQpAQCAtNDUsMTIgKzQ1LDEyIEBAIENvbXBvc2l0
aW9uRXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25z
dCBJbml0JiBpbml0aWFsCiAKIENvbXBvc2l0aW9uRXZlbnQ6On5Db21wb3NpdGlvbkV2ZW50KCkg
PSBkZWZhdWx0OwogCi12b2lkIENvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCit2b2lkIENvbXBvc2l0aW9u
RXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcs
IGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxh
YmxlLCB2aWV3LCAwKTsKKyAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIFdURk1vdmUodmlldyksIDApOwogCiAgICAgbV9kYXRhID0gZGF0YTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCmluZGV4IDhmZjAyZWM5Njk3NzhiODg1YTYzMTcwMjRj
OTU3NDc2ZTAyMWIyYTYuLjNiMWM0NmQ2MzVlY2FmNmNkMDkxOTA5OGY1MDhmYzQxZTY0Y2ViY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaApAQCAtMzIsOSArMzIsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbXBvc2l0aW9uRXZlbnQgZmluYWwgOiBwdWJs
aWMgVUlFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0
cmluZyYgZGF0YSkKKyAgICBzdGF0aWMgUmVmPENvbXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBT
dHJpbmcmIGRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21wb3Np
dGlvbkV2ZW50KHR5cGUsIHZpZXcsIGRhdGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ29tcG9zaXRpb25FdmVudCh0eXBlLCBXVEZNb3ZlKHZpZXcpLCBkYXRhKSk7CiAgICAgfQog
CiAgICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbXBvc2l0aW9uRXZlbnQo
KTsKIAotICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBT
dHJpbmcmIGRhdGEpOworICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAKICAgICBTdHJpbmcgZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBDb21wb3NpdGlvbkV2ZW50KCk7Ci0gICAgQ29tcG9zaXRpb25FdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYpOworICAgIENv
bXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8V2luZG93UHJv
eHk+JiYsIGNvbnN0IFN0cmluZyYpOwogICAgIENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJvb2wgaXNDb21w
b3NpdGlvbkV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zaXRpb25FdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRp
b25FdmVudC5pZGwKaW5kZXggZDg3MjQwODgzZTI3ZDNiMzQ1ODUzOWViOTIwZjRkM2YyODcxNjZj
NC4uMjBhYWM3ZWE0NzcwZDU2NTllZDQwOTEwZDdhYTc5NTA4ZTY2MTgzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIHZvaWQg
aW5pdENvbXBvc2l0aW9uRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZp
bmVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY2Fu
QnViYmxlQXJnID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25h
bCBib29sZWFuIGNhbmNlbGFibGVBcmcgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlld0FyZyA9IG51bGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlld0FyZyA9IG51bGwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBET01TdHJpbmcgZGF0YUFyZyA9
ICJ1bmRlZmluZWQiKTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDg2ZjgzZTcy
NjQyM2FjNDU0MzVkMzJiZWYwNDk0ZTk5NDllMDU0OTkuLjc4ZjhiZTI3ZTk0MGU0OWE2MDM0OTAx
OTcyOWUzNTJkNTI5NmE2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDI4MCw2ICs0
MjgwLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnRha2VET01XaW5kb3dGcm9tKERvY3VtZW50KiBkb2N1
bWVudCkKICAgICBBU1NFUlQobV9kb21XaW5kb3ctPmZyYW1lKCkgPT0gbV9mcmFtZSk7CiB9CiAK
K1dpbmRvd1Byb3h5KiBEb2N1bWVudDo6ZGVmYXVsdFZpZXcoKSBjb25zdAoreworICAgIGlmICgh
bV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZtX2ZyYW1lLT53
aW5kb3dQcm94eSgpOworfQorCiBEb2N1bWVudCYgRG9jdW1lbnQ6OmNvbnRleHREb2N1bWVudCgp
IGNvbnN0CiB7CiAgICAgaWYgKG1fY29udGV4dERvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCBhNGZiMDJmOWUxYmNiZDQwMGIwY2M4NjUyYWJkNDA0ZjAxYzQ1OTVmLi44NWEyNTY1MjFi
N2NiNzgxNjRjYTQ4ZjYwMDFjYjY4NWIwNTdhNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
Nzk5LDcgKzc5OSw3IEBAIHB1YmxpYzoKIAogICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29u
c3QgeyByZXR1cm4gbV9kb21XaW5kb3cuZ2V0KCk7IH0KICAgICAvLyBJbiBET00gTGV2ZWwgMiwg
dGhlIERvY3VtZW50J3MgRE9NV2luZG93IGlzIGNhbGxlZCB0aGUgZGVmYXVsdFZpZXcuCi0gICAg
RE9NV2luZG93KiBkZWZhdWx0VmlldygpIGNvbnN0IHsgcmV0dXJuIGRvbVdpbmRvdygpOyB9IAor
ICAgIFdFQkNPUkVfRVhQT1JUIFdpbmRvd1Byb3h5KiBkZWZhdWx0VmlldygpIGNvbnN0OwogCiAg
ICAgRG9jdW1lbnQmIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4
dERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkgeyBtX2NvbnRleHREb2N1bWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZVdlYWtQdHIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXggMmQ1YmFh
ZDhjNjA2NDRkYTg5ZDEwN2ZkZGUxODI4Y2Q4YTQ5ZDgyYi4uMDhmNzJhOTIwMDBkM2FjMjBhNjQ0
YzBlNWJjMzQ4MmI0NzVlZGE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0xMTMsNyAr
MTEzLDcgQEAgdHlwZWRlZiAoCiAgICAgW0NFUmVhY3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJs
ZURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB3cml0ZWxuKERPTVN0cmluZy4uLiB0
ZXh0KTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24uCi0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVdpbmRvdz8gZGVmYXVsdFZpZXc7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1By
b3h5PyBkZWZhdWx0VmlldzsKICAgICBib29sZWFuIGhhc0ZvY3VzKCk7CiAgICAgW0NFUmVhY3Rp
b25zXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlc2lnbk1vZGU7CiAgICAgW0NFUmVhY3Rpb25zXSBi
b29sZWFuIGV4ZWNDb21tYW5kKERPTVN0cmluZyBjb21tYW5kSWQsIG9wdGlvbmFsIGJvb2xlYW4g
c2hvd1VJID0gZmFsc2UsIG9wdGlvbmFsIERPTVN0cmluZz8gdmFsdWUgPSBudWxsKTsgLy8gRklY
TUU6IHZhbHVlIHNob3VsZCBub3QgYmUgbnVsbGFibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRUb3VjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRU
b3VjaC5jcHAKaW5kZXggM2Q5MTIzZDhmNzUzMmNiNGRiNzlhNGExMzM1ZDVmMTcyOGNjNTA5YS4u
YmRkYWVhNzUzOWYxMDgyMDFmZDk2M2NiZmNmZDFkMDQ3ODM5ZDcxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFRvdWNoLmNwcApAQCAtMzUsMTMgKzM1LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmPFRvdWNoPiBEb2N1bWVudFRvdWNoOjpjcmVhdGVUb3VjaChEb2N1bWVudCYg
ZG9jdW1lbnQsIERPTVdpbmRvdyogd2luZG93LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgaWRl
bnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwg
aW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9hdCBmb3Jj
ZSkKK1JlZjxUb3VjaD4gRG9jdW1lbnRUb3VjaDo6Y3JlYXRlVG91Y2goRG9jdW1lbnQmIGRvY3Vt
ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgd2luZG93LCBFdmVudFRhcmdldCogdGFyZ2V0LCBp
bnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBzY3JlZW5YLCBpbnQgc2Ny
ZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9h
dCBmb3JjZSkKIHsKKyAgICBGcmFtZSogZnJhbWU7CisgICAgaWYgKHdpbmRvdyAmJiBpczxGcmFt
ZT4od2luZG93LT5mcmFtZSgpKSkKKyAgICAgICAgZnJhbWUgPSBkb3duY2FzdDxGcmFtZT4od2lu
ZG93LT5mcmFtZSgpKTsKKyAgICBlbHNlCisgICAgICAgIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUo
KTsKKwogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciBmcm9tIHRoZSBkb2N1bWVudGF0aW9u
IGF0CiAgICAgLy8gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9zYWZhcmkvI2Rv
Y3VtZW50YXRpb24vVXNlckV4cGVyaWVuY2UvUmVmZXJlbmNlL0RvY3VtZW50QWRkaXRpb25zUmVm
ZXJlbmNlL0RvY3VtZW50QWRkaXRpb25zL0RvY3VtZW50QWRkaXRpb25zLmh0bWwKICAgICAvLyB3
aGVuIHRoaXMgbWV0aG9kIHNob3VsZCB0aHJvdyBhbmQgbm9yIGlzIGl0IGJ5IGluc3BlY3Rpb24g
b2YgaU9TIGJlaGF2aW9yLiBJdCB3b3VsZCBiZSBuaWNlIHRvIHZlcmlmeSBhbnkgY2FzZXMgd2hl
cmUgaXQgdGhyb3dzIHVuZGVyIGlPUwogICAgIC8vIGFuZCBpbXBsZW1lbnQgdGhlbSBoZXJlLiBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3ODE5Ci0gICAgcmV0
dXJuIFRvdWNoOjpjcmVhdGUod2luZG93ID8gd2luZG93LT5mcmFtZSgpIDogZG9jdW1lbnQuZnJh
bWUoKSwgdGFyZ2V0LCBpZGVudGlmaWVyLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVks
IHJhZGl1c1gsIHJhZGl1c1ksIHJvdGF0aW9uQW5nbGUsIGZvcmNlKTsKKyAgICByZXR1cm4gVG91
Y2g6OmNyZWF0ZShmcmFtZSwgdGFyZ2V0LCBpZGVudGlmaWVyLCBzY3JlZW5YLCBzY3JlZW5ZLCBw
YWdlWCwgcGFnZVksIHJhZGl1c1gsIHJhZGl1c1ksIHJvdGF0aW9uQW5nbGUsIGZvcmNlKTsKIH0K
IAogUmVmPFRvdWNoTGlzdD4gRG9jdW1lbnRUb3VjaDo6Y3JlYXRlVG91Y2hMaXN0KERvY3VtZW50
JiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmIHRvdWNoZXMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50VG91Y2guaAppbmRleCBlMGRhZjUwNTJjYzk3ODUyYzhhMDRiYmE3M2U1
ZjZhMTE2ZjEwZTUxLi43MmM0ODg4YjQ1YWI0MDBlMjliYzhhZWQ4NmRlNGM1OTAzZWFjMjIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmgKQEAgLTM0LDE1ICszNCwxNSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIERvY3VtZW50OwogY2xh
c3MgRXZlbnRUYXJnZXQ7CiBjbGFzcyBUb3VjaDsKIGNsYXNzIFRvdWNoTGlzdDsKK2NsYXNzIFdp
bmRvd1Byb3h5OwogCiBjbGFzcyBEb2N1bWVudFRvdWNoIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFRvdWNoPiBjcmVhdGVUb3VjaChEb2N1bWVudCYsIERPTVdpbmRvdyosIEV2ZW50VGFyZ2V0
KiwgaW50IGlkZW50aWZpZXIsIGludCBwYWdlWCwgaW50IHBhZ2VZLCBpbnQgc2NyZWVuWCwgaW50
IHNjcmVlblksIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSwgZmxvYXQgcm90YXRpb25BbmdsZSwg
ZmxvYXQgZm9yY2UpOworICAgIHN0YXRpYyBSZWY8VG91Y2g+IGNyZWF0ZVRvdWNoKERvY3VtZW50
JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBFdmVudFRhcmdldCosIGludCBpZGVudGlmaWVyLCBp
bnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcmFkaXVz
WCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKTsKICAgICBz
dGF0aWMgUmVmPFRvdWNoTGlzdD4gY3JlYXRlVG91Y2hMaXN0KERvY3VtZW50JiwgVmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFRvdWNoLmlkbAppbmRleCA3YTI3Mzc0NTg2NTQ5OTFiMTFiNTU2MzA4OWUyMTk1N2NjNGM0
ZTRhLi4wNDg5YTM2YWQ2YjEyNTAzY2RiNDZhZjE0OGNiNTljZmFmZDY3NWJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50VG91Y2guaWRsCkBAIC0yMiw3ICsyMiw3IEBACiAgICAgQ29uZGl0aW9u
YWw9VE9VQ0hfRVZFTlRTCiBdIHBhcnRpYWwgaW50ZXJmYWNlIERvY3VtZW50IHsKICAgICAvLyBG
SVhNRTogVGhpcyBoYXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlIHN0YW5kYXJkIG5vdyB0aGF0IFRv
dWNoIGhhcyBhIGNvbnN0cnVjdG9yLgotICAgIFtOZXdPYmplY3RdIFRvdWNoIGNyZWF0ZVRvdWNo
KG9wdGlvbmFsIERPTVdpbmRvdz8gd2luZG93ID0gbnVsbCwgb3B0aW9uYWwgRXZlbnRUYXJnZXQ/
IHRhcmdldCA9IG51bGwsCisgICAgW05ld09iamVjdF0gVG91Y2ggY3JlYXRlVG91Y2gob3B0aW9u
YWwgV2luZG93UHJveHk/IHdpbmRvdyA9IG51bGwsIG9wdGlvbmFsIEV2ZW50VGFyZ2V0PyB0YXJn
ZXQgPSBudWxsLAogICAgICAgICBvcHRpb25hbCBsb25nIGlkZW50aWZpZXIgPSAwLAogICAgICAg
ICBvcHRpb25hbCBsb25nIHBhZ2VYID0gMCwgb3B0aW9uYWwgbG9uZyBwYWdlWSA9IDAsIG9wdGlv
bmFsIGxvbmcgc2NyZWVuWCA9IDAsIG9wdGlvbmFsIGxvbmcgc2NyZWVuWSA9IDAsCiAgICAgICAg
IG9wdGlvbmFsIGxvbmcgd2Via2l0UmFkaXVzWCA9IDAsIG9wdGlvbmFsIGxvbmcgd2Via2l0UmFk
aXVzWSA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAKaW5kZXggMTZkOGIzZmYwNzhkMDVh
ZDkxZTJkNjkxNDY3MTkxMjg1NWQ3YzQ4NC4uOTg2ODc3MzI2Y2UzZmFlNGJiMDU5ZTdjMTY0ZDdi
YzE4YWE5ZGZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcApAQCAtNDAsOCArNDAsOCBA
QCBib29sIEZvY3VzRXZlbnQ6OmlzRm9jdXNFdmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLUZvY3VzRXZlbnQ6OkZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRh
aWwsIFJlZlB0cjxFdmVudFRhcmdldD4mJiByZWxhdGVkVGFyZ2V0KQotICAgIDogVUlFdmVudCh0
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCkKK0ZvY3VzRXZlbnQ6OkZv
Y3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBj
YW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgUmVmUHRy
PEV2ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpCisgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKQogICAgICwgbV9yZWxhdGVk
VGFyZ2V0KFdURk1vdmUocmVsYXRlZFRhcmdldCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRm9jdXNFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQu
aAppbmRleCAwNjcyNTU3NGMwNmI5MWYyOWZiNGY5NmEwYjFiNTYxMzRmMTk2ODU0Li5jN2E0ZGY4
ZTc3NDMyY2ZlMzY0YTEzNGY4ZGU1MTUxNmEwNTdiODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRm9jdXNFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50
LmgKQEAgLTM1LDkgKzM1LDkgQEAgY2xhc3MgTm9kZTsKIAogY2xhc3MgRm9jdXNFdmVudCBmaW5h
bCA6IHB1YmxpYyBVSUV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZvY3VzRXZlbnQ+
IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0
PiYmIHJlbGF0ZWRUYXJnZXQpCisgICAgc3RhdGljIFJlZjxGb2N1c0V2ZW50PiBjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0
PiYmIHJlbGF0ZWRUYXJnZXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
b2N1c0V2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCBXVEZN
b3ZlKHJlbGF0ZWRUYXJnZXQpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvY3Vz
RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWws
IFdURk1vdmUocmVsYXRlZFRhcmdldCkpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPEZvY3Vz
RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIEZvY3VzRXZlbnQoKSA9IGRlZmF1bHQ7Ci0gICAgRm9jdXNFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERP
TVdpbmRvdyosIGludCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmKTsKKyAgICBGb2N1c0V2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
UmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQsIFJlZlB0cjxFdmVudFRhcmdldD4mJik7CiAgICAg
Rm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmLCBJc1RydXN0
ZWQpOwogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmNwcAppbmRleCBkNDQ5Mjk0ZmVjNmJjNzk3MGQ2YzQyYzRi
OTdhYjE2MWM0ZjViMWYwLi5jMTdiZjE4ZDg4YTY3NjQ3MmExODcxNjNlN2I0NTE0Zjg0NDAwYTBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuY3BwCkBAIC0yNiwyMCArMjYsMjAgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnB1dEV2ZW50LmgiCiAKLSNpbmNsdWRlICJET01X
aW5kb3cuaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJOb2RlLmgiCisj
aW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVmPElucHV0RXZlbnQ+IElucHV0RXZlbnQ6OmNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFdlYkNvcmU6OkRPTVdpbmRvdyAqdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29u
c3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwp
CitSZWY8SW5wdXRFdmVudD4gSW5wdXRFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0
YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiBkYXRhVHJhbnNmZXIsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQoZXZlbnRUeXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgdmlldywgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRS
YW5nZXMsIGRldGFpbCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQoZXZl
bnRUeXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwg
ZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRSYW5nZXMsIGRldGFpbCkpOwogfQog
Ci1JbnB1dEV2ZW50OjpJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBj
b25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
RE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+
JiYgZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdl
dFJhbmdlcywgaW50IGRldGFpbCkKLSAgICA6IFVJRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUs
IGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCkKK0lucHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29u
c3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwp
CisgICAgOiBVSUV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3Zl
KHZpZXcpLCBkZXRhaWwpCiAgICAgLCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAgLCBtX2Rh
dGEoZGF0YSkKICAgICAsIG1fZGF0YVRyYW5zZmVyKGRhdGFUcmFuc2ZlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5w
dXRFdmVudC5oCmluZGV4IGNhZDhkY2U3YjM2MjZkOWEyMjc2MzRiMzU4OTI2YzFmMTI1NDY4MWIu
LmQwNTA3NjM5YzZjODljOTlkNGQzMGExY2U5MzZmOTE2MWI5YzRlZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lu
cHV0RXZlbnQuaApAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIERPTVdpbmRvdzsKIGNsYXNzIERhdGFUcmFuc2ZlcjsKK2NsYXNzIFdpbmRvd1Byb3h5Owog
CiBjbGFzcyBJbnB1dEV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogcHVibGljOgpAQCAt
MzksMTMgKzM5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIGRhdGE7CiAgICAgfTsKIAot
ICAgIHN0YXRpYyBSZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRh
VHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFu
Z2VzLCBpbnQgZGV0YWlsKTsKKyAgICBzdGF0aWMgUmVmPElucHV0RXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBj
b25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKICAgICBzdGF0
aWMgUmVmPElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0
IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQodHlwZSwgaW5p
dGlhbGl6ZXIsIGlzVHJ1c3RlZCkpOwogICAgIH0KIAotICAgIElucHV0RXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFJl
ZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYg
dGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKKyAgICBJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRh
dGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFu
Z2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKICAgICBJbnB1dEV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJv
b2wgaXNJbnB1dEV2ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCmluZGV4IDRkYTEwMTc3MjVmZTg5MmNmYThkYWNmMGY1
YjcwODFkY2M2Y2ZiZTkuLjRhY2I1ZjRjZWI3NjBlMTcwZjEwN2NlYTM4NjA5ODlmNjcyNjRlYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAKKyNpbmNsdWRl
ICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVkaXRvci5o
IgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgpAQCAtOTIsOCArOTMsOCBAQCBzdGF0aWMgaW5s
aW5lIEtleWJvYXJkRXZlbnQ6OktleUxvY2F0aW9uQ29kZSBrZXlMb2NhdGlvbkNvZGUoY29uc3Qg
UGxhdGZvcm1LZXlibwogCiBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudCgpID0g
ZGVmYXVsdDsKIAotaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxh
dGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIERPTVdpbmRvdyogdmlldykKLSAgICA6IFVJRXZlbnRX
aXRoS2V5U3RhdGUoZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUoa2V5LnR5cGUoKSksIHRy
dWUsIHRydWUsIGtleS50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgdmll
dywgMCwga2V5LmN0cmxLZXkoKSwga2V5LmFsdEtleSgpLCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1l
dGFLZXkoKSwgZmFsc2UsIGtleS5tb2RpZmllcnMoKS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpN
b2RpZmllcjo6Q2Fwc0xvY2tLZXkpKQoraW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZl
bnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIFJlZlB0cjxXaW5kb3dQcm94eT4m
JiB2aWV3KQorICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGVGb3JLZXlib2FyZEV2
ZW50VHlwZShrZXkudHlwZSgpKSwgdHJ1ZSwgdHJ1ZSwga2V5LnRpbWVzdGFtcCgpLmFwcHJveGlt
YXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LmNvcHlSZWYoKSwgMCwga2V5LmN0cmxLZXkoKSwga2V5
LmFsdEtleSgpLCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1ldGFLZXkoKSwgZmFsc2UsIGtleS5tb2Rp
ZmllcnMoKS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tLZXkpKQog
ICAgICwgbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudD4oa2V5KSkKICNpZiBFTkFCTEUoS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkK
ICAgICAsIG1fa2V5KGtleS5rZXkoKSkKQEAgLTEwNCw3ICsxMDUsNyBAQCBpbmxpbmUgS2V5Ym9h
cmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwg
RE9NV2luZG93KgogICAgICwgbV9rZXlJZGVudGlmaWVyKGtleS5rZXlJZGVudGlmaWVyKCkpCiAg
ICAgLCBtX2xvY2F0aW9uKGtleUxvY2F0aW9uQ29kZShrZXkpKQogICAgICwgbV9yZXBlYXQoa2V5
LmlzQXV0b1JlcGVhdCgpKQotICAgICwgbV9pc0NvbXBvc2luZyh2aWV3ICYmIHZpZXctPmZyYW1l
KCkgJiYgdmlldy0+ZnJhbWUoKS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkKKyAgICAsIG1f
aXNDb21wb3NpbmcodmlldyAmJiBpczxET01XaW5kb3c+KHZpZXctPndpbmRvdygpKSAmJiBkb3du
Y2FzdDxET01XaW5kb3c+KCp2aWV3LT53aW5kb3coKSkuZnJhbWUoKSAmJiBkb3duY2FzdDxET01X
aW5kb3c+KCp2aWV3LT53aW5kb3coKSkuZnJhbWUoKS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24o
KSkKICNpZiBVU0UoQVBQS0lUKQogICAgICwgbV9oYW5kbGVkQnlJbnB1dE1ldGhvZChrZXkuaGFu
ZGxlZEJ5SW5wdXRNZXRob2QoKSkKICAgICAsIG1fa2V5cHJlc3NDb21tYW5kcyhrZXkuY29tbWFu
ZHMoKSkKQEAgLTEzMiw5ICsxMzMsOSBAQCBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgSW5pdCYgaQogCiBLZXli
b2FyZEV2ZW50Ojp+S2V5Ym9hcmRFdmVudCgpID0gZGVmYXVsdDsKIAotUmVmPEtleWJvYXJkRXZl
bnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIHBs
YXRmb3JtRXZlbnQsIERPTVdpbmRvdyogdmlldykKK1JlZjxLZXlib2FyZEV2ZW50PiBLZXlib2Fy
ZEV2ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBwbGF0Zm9ybUV2ZW50
LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBLZXlib2FyZEV2ZW50KHBsYXRmb3JtRXZlbnQsIHZpZXcpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBLZXlib2FyZEV2ZW50KHBsYXRmb3JtRXZlbnQsIFdURk1vdmUodmlldykpKTsKIH0K
IAogUmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzKCkK
QEAgLTE0NywxMyArMTQ4LDEzIEBAIFJlZjxLZXlib2FyZEV2ZW50PiBLZXlib2FyZEV2ZW50Ojpj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpCiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgS2V5Ym9hcmRFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVk
KSk7CiB9CiAKLXZvaWQgS2V5Ym9hcmRFdmVudDo6aW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5k
b3cqIHZpZXcsCit2b2lkIEtleWJvYXJkRXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRy
PFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCB1
bnNpZ25lZCBsb2NhdGlvbiwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtl
eSwgYm9vbCBtZXRhS2V5LCBib29sIGFsdEdyYXBoS2V5KQogewogICAgIGlmIChpc0JlaW5nRGlz
cGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAgICBtX2tleUlkZW50aWZp
ZXIgPSBrZXlJZGVudGlmaWVyOwogICAgIG1fbG9jYXRpb24gPSBsb2NhdGlvbjsKQEAgLTIyNyw4
ICsyMjgsOSBAQCBpbnQgS2V5Ym9hcmRFdmVudDo6Y2hhckNvZGUoKSBjb25zdAogICAgIC8vIEZp
cmVmb3g6IDAgZm9yIGtleWRvd24va2V5dXAgZXZlbnRzLCBjaGFyYWN0ZXIgY29kZSBmb3Iga2V5
cHJlc3MKICAgICAvLyBXZSBtYXRjaCBGaXJlZm94LCB1bmxlc3MgaW4gYmFja3dhcmQgY29tcGF0
aWJpbGl0eSBtb2RlLCB3aGVyZSB3ZSBhbHdheXMgcmV0dXJuIHRoZSBjaGFyYWN0ZXIgY29kZS4K
ICAgICBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUgPSBmYWxzZTsKLSAgICBpZiAodmll
dygpICYmIHZpZXcoKS0+ZnJhbWUoKSkKLSAgICAgICAgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9k
ZSA9IHZpZXcoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkubmVlZHNLZXlib2FyZEV2ZW50RGlz
YW1iaWd1YXRpb25RdWlya3MoKTsKKyAgICBhdXRvKiB3aW5kb3cgPSB2aWV3KCkgPyB2aWV3KCkt
PndpbmRvdygpIDogbnVsbHB0cjsKKyAgICBpZiAoaXM8RE9NV2luZG93Pih3aW5kb3cpICYmIGRv
d25jYXN0PERPTVdpbmRvdz4oKndpbmRvdykuZnJhbWUoKSkKKyAgICAgICAgYmFja3dhcmRDb21w
YXRpYmlsaXR5TW9kZSA9IGRvd25jYXN0PERPTVdpbmRvdz4oKndpbmRvdykuZnJhbWUoKS0+ZXZl
bnRIYW5kbGVyKCkubmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25RdWlya3MoKTsKIAog
ICAgIGlmICghbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudCB8fCAodHlwZSgpICE9IGV2ZW50TmFt
ZXMoKS5rZXlwcmVzc0V2ZW50ICYmICFiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKSkKICAgICAg
ICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaAppbmRleCA4MjEwMzMwZWFi
MDM0MWY0Y2E1NGNkMjVjNThiOTk1NDZmMGIxNWE5Li4xZDNjYzI0Mzc5OWIxOWE3NDRlZTk3OGEx
ODdlYWVhZWM4ODA1ZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRF
dmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogICAgICAgICBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCA9IDB4MDMK
ICAgICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxLZXlib2FyZEV2ZW50PiBj
cmVhdGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxLZXlib2FyZEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZv
cm1LZXlib2FyZEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAgICBzdGF0aWMgUmVm
PEtleWJvYXJkRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBzdHJ1Y3QgSW5pdCA6
IHB1YmxpYyBFdmVudE1vZGlmaWVySW5pdCB7CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgfktleWJvYXJkRXZlbnQoKTsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAogICAgICAgICBj
b25zdCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIHVuc2lnbmVkIGxvY2F0aW9uLAogICAgICAgICBi
b29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIGJv
b2wgYWx0R3JhcGhLZXkgPSBmYWxzZSk7CiAgICAgCkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIEtleWJvYXJkRXZlbnQoKTsKLSAgICBLZXlib2FyZEV2ZW50KGNv
bnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYsIERPTVdpbmRvdyopOworICAgIEtleWJvYXJkRXZl
bnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsK
ICAgICBLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEluaXQmLCBJc1Ry
dXN0ZWQpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4gbV91
bmRlcmx5aW5nUGxhdGZvcm1FdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9L
ZXlib2FyZEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmlkbApp
bmRleCA3NTdjMDc3OTNmNWU1ZjFlMTg0MzhmNzhkZDQ0N2U5YTNhMWQ1MTA5Li5jZGU0NTBjMzQz
NTMzNTA5MmExNzdkNmRmNjM2OGJmNjM1MWQ3MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vS2V5Ym9hcmRFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJk
RXZlbnQuaWRsCkBAIC01Miw3ICs1Miw3IEBACiAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBub3Qg
bWF0Y2ggdGhlIHZlcnNpb24gaW4gdGhlIERPTSBzcGVjLgogICAgIC8vIEZJWE1FOiBVc2luZyAi
dW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KICAgICB2b2lk
IGluaXRLZXlib2FyZEV2ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIs
IG9wdGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2Fu
Y2VsYWJsZSA9IGZhbHNlLAotICAgICAgICBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxs
LCBvcHRpb25hbCBET01TdHJpbmcga2V5SWRlbnRpZmllciA9ICJ1bmRlZmluZWQiLCBvcHRpb25h
bCB1bnNpZ25lZCBsb25nIGxvY2F0aW9uID0gMCwKKyAgICAgICAgb3B0aW9uYWwgV2luZG93UHJv
eHk/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBET01TdHJpbmcga2V5SWRlbnRpZmllciA9ICJ1bmRl
ZmluZWQiLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGxvY2F0aW9uID0gMCwKICAgICAgICAgb3B0
aW9uYWwgYm9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0g
ZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVh
biBtZXRhS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0R3JhcGhLZXkgPSBmYWxzZSk7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggNTE5N2Q1YmFlMWFlMzVhYWIw
NGYwY2I1MGU3NmU5ZDhmYWExOGI3OS4uMzMwOTI3ODdkMTRhZTY1NzNlYTFiOWQxZmQ5YTdkMGVl
ZTBmNDAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMjcsMTIgKzI3LDEyIEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZl
bnQuaCIKICNpbmNsdWRlICJKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVBvcnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyLmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCw5ICs0MCw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2I7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi11c2luZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+
LCBSZWZQdHI8TWVzc2FnZVBvcnQ+LCBSZWZQdHI8U2VydmljZVdvcmtlcj4+OwordXNpbmcgTWVz
c2FnZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8TWVz
c2FnZVBvcnQ+LCBSZWZQdHI8U2VydmljZVdvcmtlcj4+OwogI2Vsc2UKLXVzaW5nIE1lc3NhZ2VF
dmVudFNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxNZXNzYWdlUG9y
dD4+OwordXNpbmcgTWVzc2FnZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8V2luZG93UHJv
eHk+LCBSZWZQdHI8TWVzc2FnZVBvcnQ+PjsKICNlbmRpZgogCiBjbGFzcyBNZXNzYWdlRXZlbnQg
ZmluYWwgOiBwdWJsaWMgRXZlbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAppbmRl
eCAwMjQzOGZkNGM0N2MzZmMyOTJlYWJmNDdlNWM1ZTgzZjg2OTUwODIyLi5mYTQ4YzhmYTVkYTVm
ZGMzZTBmMmMyZjdlZmJmYTc1Y2Q4ZjU0MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50
LmlkbApAQCAtMjcsOSArMjcsOSBAQAogICovCiAKICNpZiBkZWZpbmVkKEVOQUJMRV9TRVJWSUNF
X1dPUktFUikgJiYgRU5BQkxFX1NFUlZJQ0VfV09SS0VSCi10eXBlZGVmIChET01XaW5kb3cgb3Ig
TWVzc2FnZVBvcnQgb3IgU2VydmljZVdvcmtlcikgTWVzc2FnZUV2ZW50U291cmNlOwordHlwZWRl
ZiAoV2luZG93UHJveHkgb3IgTWVzc2FnZVBvcnQgb3IgU2VydmljZVdvcmtlcikgTWVzc2FnZUV2
ZW50U291cmNlOwogI2Vsc2UKLXR5cGVkZWYgKERPTVdpbmRvdyBvciBNZXNzYWdlUG9ydCkgTWVz
c2FnZUV2ZW50U291cmNlOwordHlwZWRlZiAoV2luZG93UHJveHkgb3IgTWVzc2FnZVBvcnQpIE1l
c3NhZ2VFdmVudFNvdXJjZTsKICNlbmRpZgogCiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTW91c2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAK
aW5kZXggYTE0N2UxMjE4YmI2ZTI0ZjJhZDc2NDcwNzQ2MGM2NjcwMjFmNmM1OS4uYzg5NmY4NjMx
YTNkMmJiZGExOTMwNjIxMGZlZGRiODk4NmU0Y2E2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL01vdXNlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50
LmNwcApAQCAtNDQsMTMgKzQ0LDEzIEBAIFJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNb3VzZUV2ZW50SW5pCiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVk
KSk7CiB9CiAKLVJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIERPTVdpbmRvdyogdmlldywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBldmVudCwgaW50IGRldGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCkKK1JlZjxNb3VzZUV2
ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50
LCBpbnQgZGV0YWlsLCBOb2RlKiByZWxhdGVkVGFyZ2V0KQogewogICAgIGJvb2wgaXNNb3VzZUVu
dGVyT3JMZWF2ZSA9IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2VlbnRlckV2ZW50IHx8
IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2VsZWF2ZUV2ZW50OwogICAgIGJvb2wgaXND
YW5jZWxhYmxlID0gZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCAmJiAh
aXNNb3VzZUVudGVyT3JMZWF2ZTsKICAgICBib29sIGNhbkJ1YmJsZSA9ICFpc01vdXNlRW50ZXJP
ckxlYXZlOwogCi0gICAgcmV0dXJuIE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGNhbkJ1
YmJsZSwgaXNDYW5jZWxhYmxlLCBldmVudC50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25p
Y1RpbWUoKSwgdmlldywKKyAgICByZXR1cm4gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwg
Y2FuQnViYmxlLCBpc0NhbmNlbGFibGUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9u
b3RvbmljVGltZSgpLCBXVEZNb3ZlKHZpZXcpLAogICAgICAgICBkZXRhaWwsIGV2ZW50Lmdsb2Jh
bFBvc2l0aW9uKCkueCgpLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLnkoKSwgZXZlbnQucG9zaXRp
b24oKS54KCksIGV2ZW50LnBvc2l0aW9uKCkueSgpLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CiAgICAgICAgIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS54KCksIGV2ZW50Lm1vdmVtZW50RGVsdGEo
KS55KCksCkBAIC01OSwxMyArNTksMTMgQEAgUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWUKICAgICAg
ICAgcmVsYXRlZFRhcmdldCwgZXZlbnQuZm9yY2UoKSwgZXZlbnQuc3ludGhldGljQ2xpY2tUeXBl
KCkpOwogfQogCi1SZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3Rvbmlj
VGltZSB0aW1lc3RhbXAsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgs
IGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKK1JlZjxNb3VzZUV2ZW50PiBNb3Vz
ZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1By
b3h5PiYmIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBh
Z2VYLCBpbnQgcGFnZVksCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBpbnQgbW92ZW1l
bnRYLCBpbnQgbW92ZW1lbnRZLAogI2VuZGlmCiAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtl
eSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVu
c2lnbmVkIHNob3J0IGJ1dHRvbnMsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0LCBkb3VibGUg
Zm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRGF0YVRyYW5zZmVyKiBk
YXRhVHJhbnNmZXIsIGJvb2wgaXNTaW11bGF0ZWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTW91c2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgdmll
dywKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwg
Y2FuY2VsYWJsZSwgdGltZXN0YW1wLCBXVEZNb3ZlKHZpZXcpLAogICAgICAgICBkZXRhaWwsIHsg
c2NyZWVuWCwgc2NyZWVuWSB9LCB7IHBhZ2VYLCBwYWdlWSB9LAogI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCiAgICAgICAgIHsgbW92ZW1lbnRYLCBtb3ZlbWVudFkgfSwKQEAgLTczLDE5ICs3Mywx
OSBAQCBSZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvbwogICAgICAgICBjdHJsS2V5LCBhbHRLZXksIHNo
aWZ0S2V5LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHJlbGF0ZWRUYXJnZXQsIGZvcmNlLCBz
eW50aGV0aWNDbGlja1R5cGUsIGRhdGFUcmFuc2ZlciwgaXNTaW11bGF0ZWQpKTsKIH0KIAotUmVm
PE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBp
bnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xp
ZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRh
S2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2ln
bmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQp
CitSZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQg
Y2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hp
ZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9y
dCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0
KiByZWxhdGVkVGFyZ2V0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQo
ZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCwgeyBzY3JlZW5Y
LCBzY3JlZW5ZIH0sIHsgY2xpZW50WCwgY2xpZW50WSB9LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHN5bnRoZXRpY0NsaWNrVHlwZSwgcmVsYXRl
ZFRhcmdldCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQoZXZlbnRUeXBl
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRldGFpbCwgeyBzY3JlZW5Y
LCBzY3JlZW5ZIH0sIHsgY2xpZW50WCwgY2xpZW50WSB9LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHN5bnRoZXRpY0NsaWNrVHlwZSwgcmVsYXRl
ZFRhcmdldCkpOwogfQogCiBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KCkgPSBkZWZhdWx0OwogCi1N
b3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9N
V2luZG93KiB2aWV3LCBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24s
IGNvbnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKK01vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmll
dywgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQ
b2ludCYgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAg
Y29uc3QgSW50UG9pbnQmIG1vdmVtZW50RGVsdGEsCiAjZW5kaWYKICAgICAgICAgYm9vbCBjdHJs
S2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBz
aG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIEV2ZW50VGFyZ2V0KiByZWxhdGVk
VGFyZ2V0LCBkb3VibGUgZm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwg
RGF0YVRyYW5zZmVyKiBkYXRhVHJhbnNmZXIsIGJvb2wgaXNTaW11bGF0ZWQpCi0gICAgOiBNb3Vz
ZVJlbGF0ZWRFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1w
LCB2aWV3LCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB3aW5kb3dMb2NhdGlvbiwKKyAgICA6IE1v
dXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3Rh
bXAsIFdURk1vdmUodmlldyksIGRldGFpbCwgc2NyZWVuTG9jYXRpb24sIHdpbmRvd0xvY2F0aW9u
LAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIG1vdmVtZW50RGVsdGEsCiAjZW5k
aWYKQEAgLTEwMCw4ICsxMDAsOCBAQCBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZQogewogfQogCi1N
b3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWws
IGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExv
Y2F0aW9uLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1l
dGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgdW5z
aWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdl
dCkKLSAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxh
YmxlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgdmlldywgZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwg
eyB9LAorTW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYm
IHZpZXcsIGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudExvY2F0aW9uLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29s
IHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQg
c2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRh
cmdldCogcmVsYXRlZFRhcmdldCkKKyAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwg
Y2FuQnViYmxlLCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3
KSwgZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwgeyB9LAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CiAgICAgICAgIHsgfSwKICNlbmRpZgpAQCAtMTI3LDEyICsxMjcsMTIgQEAgTW91c2VFdmVudDo6
TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgTW91c2VFdmVu
dEluaXQmIGluaXQKIAogTW91c2VFdmVudDo6fk1vdXNlRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLXZv
aWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRh
aWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBi
b29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVu
c2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCit2b2lkIE1v
dXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGlu
dCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGll
bnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCiB7
CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlu
aXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKTsKKyAg
ICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyks
IGRldGFpbCk7CiAKICAgICBtX3NjcmVlbkxvY2F0aW9uID0gSW50UG9pbnQoc2NyZWVuWCwgc2Ny
ZWVuWSk7CiAgICAgbV9jdHJsS2V5ID0gY3RybEtleTsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lk
IE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgYwogCiAvLyBGSVhNRTogV2UgbmVlZCB0aGlzIHF1aXJrIGJlY2F1
c2UgaUFkIFByb2R1Y2VyIGlzIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aXRoIGEgcmVsYXRlZFRh
cmdldCB0aGF0IGlzIG5vdCBhbiBFdmVudFRhcmdldCAocmRhcjovL3Byb2JsZW0vMzA2NDAxMDEp
LgogLy8gV2Ugc2hvdWxkIHJlbW92ZSB0aGlzIHF1aXJrIHdoZW4gcG9zc2libGUuCi12b2lkIE1v
dXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmsoRXhlY1N0YXRlJiBzdGF0ZSwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcs
IGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBj
bGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1l
dGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgSlNWYWx1ZSByZWxhdGVkVGFyZ2V0VmFsdWUp
Cit2b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmsoRXhlY1N0YXRlJiBzdGF0ZSwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5Z
LCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJv
b2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBKU1ZhbHVl
IHJlbGF0ZWRUYXJnZXRWYWx1ZSkKIHsKICAgICBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCA9
IG51bGxwdHI7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTW91
c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayhFeGVjU3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBzCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIH0KICNlbmRpZgotICAgIGlu
aXRNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCBz
Y3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5LCBidXR0b24sIHJlbGF0ZWRUYXJnZXQpOworICAgIGluaXRNb3VzZUV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCBzY3Jl
ZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBidXR0b24sIHJlbGF0ZWRUYXJnZXQpOwogfQogCiBFdmVudEludGVyZmFjZSBN
b3VzZUV2ZW50OjpldmVudEludGVyZmFjZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaApp
bmRleCAyNmNhZjhmNmIxOTE1MTY2OGI2ODAzNTU0YTBiMDAxNjRkM2UxZmNmLi40YjI4MDc5OTU1
YjRjYjczYTJjZTE2OGViNWExMzlkNzMxNTZhOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTW91c2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgK
QEAgLTI5LDE5ICsyOSwyMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhVHJh
bnNmZXI7CitjbGFzcyBOb2RlOwogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogCiBjbGFzcyBN
b3VzZUV2ZW50IDogcHVibGljIE1vdXNlUmVsYXRlZEV2ZW50IHsKIHB1YmxpYzoKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUg
dGltZXN0YW1wLCBET01XaW5kb3cqLCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVl
blksIGludCBwYWdlWCwgaW50IHBhZ2VZLAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5k
b3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFn
ZVgsIGludCBwYWdlWSwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBpbnQgbW92
ZW1lbnRYLCBpbnQgbW92ZW1lbnRZLAogI2VuZGlmCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9v
bCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0
dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCwg
ZG91YmxlIGZvcmNlLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIERhdGFUcmFu
c2ZlciogPSBudWxscHRyLCBib29sIGlzU2ltdWxhdGVkID0gZmFsc2UpOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGludCBk
ZXRhaWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGludCBkZXRhaWws
IE5vZGUqIHJlbGF0ZWRUYXJnZXQpOwogCi0gICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVu
WSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBi
b29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWdu
ZWQgc2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVu
dFRhcmdldCogcmVsYXRlZFRhcmdldCk7CisgICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgs
IGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9v
bCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0
dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlj
a1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KTsKIAogICAgIHN0YXRpYyBSZWY8TW91
c2VFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNl
RXZlbnQpOyB9CiAKQEAgLTQ5LDggKzUwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+TW91
c2VFdmVudCgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0TW91c2VFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERP
TVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVu
dFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0
ZWRUYXJnZXQpOwotICAgIHZvaWQgaW5pdE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4ZWNTdGF0ZSYs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBz
Y3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxL
ZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNo
b3J0IGJ1dHRvbiwgSlNDOjpKU1ZhbHVlIHJlbGF0ZWRUYXJnZXQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgaW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRh
aWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBi
b29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVu
c2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpOworICAgIHZv
aWQgaW5pdE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4ZWNTdGF0ZSYsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgs
IGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9v
bCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0
dG9uLCBKU0M6OkpTVmFsdWUgcmVsYXRlZFRhcmdldCk7CiAKICAgICB1bnNpZ25lZCBzaG9ydCBi
dXR0b24oKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbjsgfQogICAgIHVuc2lnbmVkIHNob3J0IGJ1
dHRvbnMoKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbnM7IH0KQEAgLTcwLDcgKzcxLDcgQEAgcHVi
bGljOgogICAgIGludCB3aGljaCgpIGNvbnN0IGZpbmFsOwogCiBwcm90ZWN0ZWQ6Ci0gICAgTW91
c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqLAorICAgIE1vdXNl
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAog
ICAgICAgICBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0
IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAg
ICAgICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKQEAgLTc4LDcgKzc5LDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0
dG9ucywKICAgICAgICAgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwg
dW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIqLCBib29sIGlz
U2ltdWxhdGVkKTsKIAotICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLAorICAgIE1vdXNlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IElu
dFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExvY2F0aW9uLAog
ICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1l
dGFLZXksCiAgICAgICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0
dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVs
YXRlZFRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwKaW5kZXggMGJlMGY4OGRkMzVk
N2NkZmI4ZDM1NDJkYWRlMTZlMzI5NGZkYzgzYS4uNjBjNDQ2NjY3MWYwNjE5ZmVlMDlkMGYwMTkz
ZjlhNDFmNmIzZTgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmlkbApAQCAtNDMsNyArNDMs
NyBAQAogICAgIC8vIEZJWE1FOiByZWxhdGVkVGFyZ2V0IHNob3VsZCBiZSBvZiB0eXBlIEV2ZW50
VGFyZ2V0PyBidXQgd2UgbmVlZCB0byB1c2UgYW55IHRvIHN1cHBvcnQgYSBxdWlyayBmb3IgaUFk
IFByb2R1Y2VyIChyZGFyOi8vcHJvYmxlbS8zMDY0MDEwMSkuCiAgICAgW0NhbGxXaXRoPVNjcmlw
dFN0YXRlJlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9aW5pdE1vdXNlRXZl
bnRRdWlya10gdm9pZCBpbml0TW91c2VFdmVudChvcHRpb25hbCBET01TdHJpbmcgdHlwZSA9ICJ1
bmRlZmluZWQiLAogICAgICAgICBvcHRpb25hbCBib29sZWFuIGNhbkJ1YmJsZSA9IGZhbHNlLCBv
cHRpb25hbCBib29sZWFuIGNhbmNlbGFibGUgPSBmYWxzZSwKLSAgICAgICAgb3B0aW9uYWwgRE9N
V2luZG93PyB2aWV3ID0gbnVsbCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAwLAorICAgICAgICBv
cHRpb25hbCBXaW5kb3dQcm94eT8gdmlldyA9IG51bGwsIG9wdGlvbmFsIGxvbmcgZGV0YWlsID0g
MCwKICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBzY3Jl
ZW5ZID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRYID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRZ
ID0gMCwKICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFs
IGJvb2xlYW4gYWx0S2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxz
ZSwgb3B0aW9uYWwgYm9vbGVhbiBtZXRhS2V5ID0gZmFsc2UsCiAgICAgICAgIG9wdGlvbmFsIHVu
c2lnbmVkIHNob3J0IGJ1dHRvbiA9IDAsIG9wdGlvbmFsIGFueSByZWxhdGVkVGFyZ2V0ID0gbnVs
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAppbmRleCA4NTM3MTRk
NmFiMWYwMWU4YTVlYWNlMGQwZTQzOTc1ZWIzZDU4NDlmLi44MGE4MjY3ZGMyMWJkOGIzYmY1MTgz
MGZlNGIzMGE0MmE2MTIwMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VS
ZWxhdGVkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVu
dC5jcHAKQEAgLTMyLDEzICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1vdXNl
UmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1l
c3RhbXAsIERPTVdpbmRvdyogRE9NV2luZG93LAorTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVs
YXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1By
b3h5PiYmIHZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRl
dGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2lu
ZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKICNlbmRp
ZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9v
bCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgYm9vbCBpc1NpbXVsYXRlZCkK
LSAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIHRpbWVzdGFtcCwgRE9NV2luZG93LCBkZXRhaWwsIGN0cmxLZXksIGFsdEtleSwgc2hpZnRL
ZXksIG1ldGFLZXksIGZhbHNlLCBmYWxzZSkKKyAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZl
bnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgV1RGTW92ZSh2aWV3KSwg
ZGV0YWlsLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBmYWxzZSwgZmFsc2Up
CiAgICAgLCBtX3NjcmVlbkxvY2F0aW9uKHNjcmVlbkxvY2F0aW9uKQogI2lmIEVOQUJMRShQT0lO
VEVSX0xPQ0spCiAgICAgLCBtX21vdmVtZW50RGVsdGEobW92ZW1lbnREZWx0YSkKQEAgLTYxLDcg
KzYxLDcgQEAgTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBNb3VzZVIKIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6
OmluaXQoYm9vbCBpc1NpbXVsYXRlZCwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uKQog
ewogICAgIGlmICghaXNTaW11bGF0ZWQpIHsKLSAgICAgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9
IGZyYW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSkgeworICAgICAgICBpZiAoYXV0byogZnJh
bWVWaWV3ID0gZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpIHsKICAgICAgICAgICAg
IEZsb2F0UG9pbnQgYWJzb2x1dGVQb2ludCA9IGZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyh3
aW5kb3dMb2NhdGlvbik7CiAgICAgICAgICAgICBGbG9hdFBvaW50IGRvY3VtZW50UG9pbnQgPSBm
cmFtZVZpZXctPmFic29sdXRlVG9Eb2N1bWVudFBvaW50KGFic29sdXRlUG9pbnQpOwogICAgICAg
ICAgICAgbV9wYWdlTG9jYXRpb24gPSBmbG9vcmVkTGF5b3V0UG9pbnQoZG9jdW1lbnRQb2ludCk7
CkBAIC04MywxMyArODMsMTMgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3JkaW5h
dGVzKCkKICAgICBtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb24gPSBmYWxzZTsKIH0KIAotRnJh
bWVWaWV3KiBNb3VzZVJlbGF0ZWRFdmVudDo6ZnJhbWVWaWV3RnJvbURPTVdpbmRvdyhET01XaW5k
b3cqIHdpbmRvdykKK0ZyYW1lVmlldyogTW91c2VSZWxhdGVkRXZlbnQ6OmZyYW1lVmlld0Zyb21X
aW5kb3dQcm94eShXaW5kb3dQcm94eSogd2luZG93UHJveHkpCiB7Ci0gICAgYXV0byogZnJhbWUg
PSB3aW5kb3cgPyB3aW5kb3ctPmZyYW1lKCkgOiBudWxscHRyOwotICAgIGlmICghZnJhbWUpCisg
ICAgaWYgKCF3aW5kb3dQcm94eSB8fCAhaXM8RE9NV2luZG93Pih3aW5kb3dQcm94eS0+d2luZG93
KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBmcmFtZS0+dmlldygp
OworICAgIGF1dG8qIGZyYW1lID0gZG93bmNhc3Q8RE9NV2luZG93Pigqd2luZG93UHJveHktPndp
bmRvdygpKS5mcmFtZSgpOworICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT52aWV3KCkgOiBudWxs
cHRyOwogfQogCiBMYXlvdXRQb2ludCBNb3VzZVJlbGF0ZWRFdmVudDo6cGFnZVBvaW50VG9DbGll
bnRQb2ludChMYXlvdXRQb2ludCBwYWdlUG9pbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQpAQCAt
MTEzLDcgKzExMyw3IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGluYXRlcyhj
b25zdCBMYXlvdXRQb2ludCYgY2xpZW50TG9jYXRpb24pCiAgICAgLy8gU2V0IHVwIGluaXRpYWwg
dmFsdWVzIGZvciBjb29yZGluYXRlcy4KICAgICAvLyBDb3JyZWN0IHZhbHVlcyBhcmUgY29tcHV0
ZWQgbGF6aWx5LCBzZWUgY29tcHV0ZVJlbGF0aXZlUG9zaXRpb24uCiAgICAgRmxvYXRTaXplIGRv
Y3VtZW50VG9DbGllbnRPZmZzZXQ7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmll
d0Zyb21ET01XaW5kb3codmlldygpKSkKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJhbWVW
aWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpCiAgICAgICAgIGRvY3VtZW50VG9DbGllbnRPZmZz
ZXQgPSBmcmFtZVZpZXctPmRvY3VtZW50VG9DbGllbnRPZmZzZXQoKTsKIAogICAgIG1fY2xpZW50
TG9jYXRpb24gPSBjbGllbnRMb2NhdGlvbjsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIE1vdXNl
UmVsYXRlZEV2ZW50Ojppbml0Q29vcmRpbmF0ZXMoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudExv
Y2F0aW9uKQogCiBmbG9hdCBNb3VzZVJlbGF0ZWRFdmVudDo6ZG9jdW1lbnRUb0Fic29sdXRlU2Nh
bGVGYWN0b3IoKSBjb25zdAogewotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdG
cm9tRE9NV2luZG93KHZpZXcoKSkpCisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmll
d0Zyb21XaW5kb3dQcm94eSh2aWV3KCkpKQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5kb2N1
bWVudFRvQWJzb2x1dGVTY2FsZUZhY3RvcigpOwogCiAgICAgcmV0dXJuIDE7CkBAIC0xMzYsNyAr
MTM2LDcgQEAgZmxvYXQgTW91c2VSZWxhdGVkRXZlbnQ6OmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxl
RmFjdG9yKCkgY29uc3QKIAogdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVBhZ2VMb2Nh
dGlvbigpCiB7Ci0gICAgbV9hYnNvbHV0ZUxvY2F0aW9uID0gcGFnZVBvaW50VG9BYnNvbHV0ZVBv
aW50KG1fcGFnZUxvY2F0aW9uLCBmcmFtZVZpZXdGcm9tRE9NV2luZG93KHZpZXcoKSkpOworICAg
IG1fYWJzb2x1dGVMb2NhdGlvbiA9IHBhZ2VQb2ludFRvQWJzb2x1dGVQb2ludChtX3BhZ2VMb2Nh
dGlvbiwgZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpOwogfQogCiB2b2lkIE1vdXNl
UmVsYXRlZEV2ZW50OjpyZWNlaXZlZFRhcmdldCgpCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBN
b3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVJlbGF0aXZlUG9zaXRpb24oKQogICAgIAogRmxvYXRQ
b2ludCBNb3VzZVJlbGF0ZWRFdmVudDo6bG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSBj
b25zdAogewotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9tRE9NV2luZG93
KHZpZXcoKSkpCisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21XaW5kb3dQ
cm94eSh2aWV3KCkpKQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5jb250ZW50c1RvUm9vdFZp
ZXcocm91bmRlZEludFBvaW50KG1fYWJzb2x1dGVMb2NhdGlvbikpOwogCiAgICAgcmV0dXJuIG1f
YWJzb2x1dGVMb2NhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJl
bGF0ZWRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKaW5k
ZXggMGQ4M2MzNjA5ZjcxZWFmZWYyMTcxYTljZDBkNDMxYWU2ZDg1NGY4Yi4uYWQ0ZTVkMGMzNTZm
NTQxZTA4MmUxMWEyNmEyZDBjYzExNWZkNTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVs
YXRlZEV2ZW50LmgKQEAgLTY3LDE0ICs2NywxNCBAQCBwdWJsaWM6CiAgICAgLy8gdXNhYmxlIHdp
dGggUmVuZGVyT2JqZWN0OjphYnNvbHV0ZVRvTG9jYWwpLgogICAgIGNvbnN0IExheW91dFBvaW50
JiBhYnNvbHV0ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZUxvY2F0aW9uOyB9
CiAgICAgCi0gICAgc3RhdGljIEZyYW1lVmlldyogZnJhbWVWaWV3RnJvbURPTVdpbmRvdyhET01X
aW5kb3cqKTsKKyAgICBzdGF0aWMgRnJhbWVWaWV3KiBmcmFtZVZpZXdGcm9tV2luZG93UHJveHko
V2luZG93UHJveHkqKTsKIAogICAgIHN0YXRpYyBMYXlvdXRQb2ludCBwYWdlUG9pbnRUb0NsaWVu
dFBvaW50KExheW91dFBvaW50IHBhZ2VQb2ludCwgRnJhbWVWaWV3Kik7CiAgICAgc3RhdGljIExh
eW91dFBvaW50IHBhZ2VQb2ludFRvQWJzb2x1dGVQb2ludChMYXlvdXRQb2ludCBwYWdlUG9pbnQs
IEZyYW1lVmlldyopOwogCiBwcm90ZWN0ZWQ6CiAgICAgTW91c2VSZWxhdGVkRXZlbnQoKSA9IGRl
ZmF1bHQ7Ci0gICAgTW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwg
RE9NV2luZG93KiwKKyAgICBNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0
YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IElu
dFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIGNvbnN0IEludFBvaW50JiBtb3ZlbWVu
dERlbHRhLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDRiMWU4NzI1Nzk1MzNmYmY3ODcxMmZkNmQyM2Qy
YzgxNWIwM2ViMzguLmM5MTkwN2NkZDRhNDhiMTcyZWEzYTJkZWUxZTg4MDc4MGJlNWRlMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDb21wb3NlZFRyZWVB
bmNlc3Rvckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIK
ICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJET01XaW5kb3cu
aCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIK
ICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaW11bGF0ZWRDbGljay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltdWxhdGVkQ2xp
Y2suY3BwCmluZGV4IGUwZjRlMzUyZWNhMThkY2RjODU5MjQ5MmVjNTA4NDI5MjhhYjY1NzQuLjQx
N2U5MDdiZjI4ODFiNmE4N2Y2MWQ2MDkxNmI2N2U2OGViOWMxMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NpbXVsYXRlZENsaWNrLmNwcApAQCAtMzcsMTQgKzM3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgU2ltdWxhdGVkTW91c2VFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWV3LCBSZWZQdHI8RXZl
bnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQsIFNpbXVsYXRlZENsaWNrU291
cmNlIHNvdXJjZSkKKyAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcs
IFJlZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxh
dGVkQ2xpY2tTb3VyY2Ugc291cmNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2ltdWxhdGVkTW91c2VFdmVudChldmVudFR5cGUsIHZpZXcsIFdURk1vdmUodW5kZXJseWlu
Z0V2ZW50KSwgdGFyZ2V0LCBzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2ltdWxhdGVkTW91c2VFdmVudChldmVudFR5cGUsIFdURk1vdmUodmlldyksIFdURk1vdmUodW5k
ZXJseWluZ0V2ZW50KSwgdGFyZ2V0LCBzb3VyY2UpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
U2ltdWxhdGVkTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2lu
ZG93KiB2aWV3LCBSZWZQdHI8RXZlbnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJn
ZXQsIFNpbXVsYXRlZENsaWNrU291cmNlIHNvdXJjZSkKLSAgICAgICAgOiBNb3VzZUV2ZW50KGV2
ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwgdW5kZXJseWluZ0V2ZW50ID8gdW5kZXJseWluZ0V2ZW50LT50
aW1lU3RhbXAoKSA6IE1vbm90b25pY1RpbWU6Om5vdygpLCB2aWV3LCAwLCB7IH0sIHsgfSwKKyAg
ICBTaW11bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYgdmlldywgUmVmUHRyPEV2ZW50PiYmIHVuZGVybHlpbmdFdmVudCwg
RWxlbWVudCYgdGFyZ2V0LCBTaW11bGF0ZWRDbGlja1NvdXJjZSBzb3VyY2UpCisgICAgICAgIDog
TW91c2VFdmVudChldmVudFR5cGUsIHRydWUsIHRydWUsIHVuZGVybHlpbmdFdmVudCA/IHVuZGVy
bHlpbmdFdmVudC0+dGltZVN0YW1wKCkgOiBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2
aWV3KSwgMCwgeyB9LCB7IH0sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgICAg
IHsgfSwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAppbmRleCBiZDAyNGVhNTVmNmJh
ODRlMzJjOTA0NDZmY2JmODI4MjA0ZDJjMzBjLi5iMDk0NDkzYzFmODU1ODQ5ODg5M2MyY2I3YzBk
MDc0NmI2YWI1YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcApAQCAtMzgsMjkgKzM4LDI5
IEBAIFJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudCk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRF
dmVudDo6Y3JlYXRlKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZl
bnRJbnB1dFR5cGUgaW5wdXRUeXBlKQorUmVmPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGUo
UmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50
SW5wdXRUeXBlIGlucHV0VHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZl
bnQodmlldywgZGF0YSwgaW5wdXRUeXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4
dEV2ZW50KFdURk1vdmUodmlldyksIGRhdGEsIGlucHV0VHlwZSkpOwogfQogCi1SZWY8VGV4dEV2
ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKERPTVdpbmRvdyogdmlldywg
Y29uc3QgU3RyaW5nJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSkKK1JlZjxUZXh0RXZl
bnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KHZpZXcsIGRhdGEsIDAsIHNob3Vs
ZFNtYXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9j
a3F1b3RlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdURk1vdmUodmll
dyksIGRhdGEsIDAsIHNob3VsZFNtYXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFu
ZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVu
dDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiYmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1h
dGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykK
K1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9v
bCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVv
dGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRleHRFdmVudCh2aWV3LCBlbXB0eVN0cmluZygpLCBXVEZNb3ZlKGRhdGEpLCBzaG91
bGRTbWFydFJlcGxhY2UsIHNob3VsZE1hdGNoU3R5bGUsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZW1w
dHlTdHJpbmcoKSwgV1RGTW92ZShkYXRhKSwgc2hvdWxkU21hcnRSZXBsYWNlLCBzaG91bGRNYXRj
aFN0eWxlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRl
eHRFdmVudDo6Y3JlYXRlRm9yRHJvcChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0
YSkKK1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRleHRFdmVudCh2aWV3LCBkYXRhLCBUZXh0RXZlbnRJbnB1dERyb3ApKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZGF0YSwgVGV4dEV2
ZW50SW5wdXREcm9wKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9y
RGljdGF0aW9uKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0
b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCitSZWY8VGV4
dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3RhdGlvbihSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJu
YXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgVGV4dEV2ZW50KHZpZXcsIGRhdGEsIGRpY3RhdGlvbkFsdGVybmF0aXZlcykpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudChXVEZNb3ZlKHZpZXcpLCBkYXRhLCBkaWN0YXRp
b25BbHRlcm5hdGl2ZXMpKTsKIH0KIAogVGV4dEV2ZW50OjpUZXh0RXZlbnQoKQpAQCAtNzEsOCAr
NzEsOCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudCgpCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2
ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5
cGUgaW5wdXRUeXBlKQotICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQs
IHRydWUsIHRydWUsIHZpZXcsIDApCitUZXh0RXZlbnQ6OlRleHRFdmVudChSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5w
dXRUeXBlKQorICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUs
IHRydWUsIFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAg
ICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAt
ODEsOCArODEsOCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0
IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlIGlucAogewogfQogCi1UZXh0RXZlbnQ6
OlRleHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNob3VsZFNtYXJ0UmVwbGFj
ZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9j
a3F1b3RlSGFuZGxpbmcpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVu
dCwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5k
b3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hv
dWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRs
aW5nKQorICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRy
dWUsIFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShUZXh0RXZlbnRJbnB1dFBh
c3RlKQogICAgICwgbV9kYXRhKGRhdGEpCiAgICAgLCBtX3Bhc3RpbmdGcmFnbWVudChXVEZNb3Zl
KHBhc3RpbmdGcmFnbWVudCkpCkBAIC05Miw4ICs5Miw4IEBAIFRleHRFdmVudDo6VGV4dEV2ZW50
KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVuCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3Qg
U3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRp
b25BbHRlcm5hdGl2ZXMpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVu
dCwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5k
b3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRp
b25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcykKKyAgICA6IFVJRXZlbnQoZXZl
bnROYW1lcygpLnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0cnVlLCBXVEZNb3ZlKHZpZXcpLCAwKQog
ICAgICwgbV9pbnB1dFR5cGUoVGV4dEV2ZW50SW5wdXREaWN0YXRpb24pCiAgICAgLCBtX2RhdGEo
ZGF0YSkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtMTA1LDEyICsxMDUs
MTIgQEAgVGV4dEV2ZW50OjpUZXh0RXZlbnQoRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcm
IGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb24KIAogVGV4dEV2ZW50Ojp+VGV4dEV2ZW50KCkg
PSBkZWZhdWx0OwogCi12b2lkIFRleHRFdmVudDo6aW5pdFRleHRFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyog
dmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQordm9pZCBUZXh0RXZlbnQ6OmluaXRUZXh0RXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxl
LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAg
IGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbml0VUlF
dmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2
ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAg
ICBtX2lucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZl
bnQuaAppbmRleCAyOWViMjZkMGUwNzRiNTRkMzQ2MzU2MDQyODBkMTJhNjk4OGFmOGRhLi4wYWUy
YWM4NjNmYjgxYmJiMjg2Mzg1MTY1YjZiMTI1MWQyZGZiMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVu
dC5oCkBAIC0zOCwxNiArMzgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3Mg
VGV4dEV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAg
c3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZShET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRh
dGEsIFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOworICAgICAg
ICBzdGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlKFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29u
c3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJv
YXJkKTsKICAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7
Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShE
T01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsK
LSAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoRE9N
V2luZG93KiwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFy
dFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7
Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEcm9wKERPTVdpbmRvdyos
IGNvbnN0IFN0cmluZyYgZGF0YSk7Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVh
dGVGb3JEaWN0YXRpb24oRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0
b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgICAg
ICBzdGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdp
bmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNl
KTsKKyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUo
UmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBkYXRhLCBi
b29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2tx
dW90ZUhhbmRsaW5nKTsKKyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRy
b3AoUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBz
dGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yRGljdGF0aW9uKFJlZlB0cjxXaW5kb3dQcm94
eT4mJiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRp
dmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogCiAgICAgICAgIHZpcnR1YWwgflRleHRFdmVu
dCgpOwogICAgIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRUZXh0RXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBE
T01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYg
ZGF0YSk7CiAgICAgCiAgICAgICAgIFN0cmluZyBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
OyB9CiAKQEAgLTcxLDkgKzcxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6
CiAgICAgICAgIFRleHRFdmVudCgpOwogCi0gICAgICAgIFRleHRFdmVudChET01XaW5kb3cqLCBj
b25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5
Ym9hcmQpOwotICAgICAgICBUZXh0RXZlbnQoRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRh
LCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJv
b2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0gICAgICAgIFRl
eHRFdmVudChET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0
YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgICAgIFRleHRF
dmVudChSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50
SW5wdXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7CisgICAgICAgIFRleHRFdmVudChS
ZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+JiYsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5
bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBUZXh0RXZlbnQoUmVmUHRyPFdp
bmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25B
bHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAKICAgICAgICAgYm9vbCBpc1Rl
eHRFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCmluZGV4
IDM2NDA2NWZhODJkNDE4OTljMGM1MjMyNTBjMmYyNzk5NzcwZDNlMGUuLmNlOGIzMGFjYjNjNzFm
ZmRmODI4YjIxODEwNjVhYWExZjhhMTI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0RXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCkBA
IC0zMiw3ICszMiw3IEBAIGludGVyZmFjZSBUZXh0RXZlbnQgOiBVSUV2ZW50IHsKICAgICB2b2lk
IGluaXRUZXh0RXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZpbmVkIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGVBcmcgPSBm
YWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxl
QXJnID0gZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8g
dmlld0FyZyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFdpbmRvd1By
b3h5PyB2aWV3QXJnID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9N
U3RyaW5nIGRhdGFBcmcgPSAidW5kZWZpbmVkIik7CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVu
dC5jcHAKaW5kZXggNjFjMDhmMjFkYTM4YmFhN2ExMTBmMjJkY2E2YTU3YmU5M2I2ODNlNy4uMDAy
MzdjZGFkNTY4Mzc5NTJkOTNhOTdkZTI2YTk5ZTllYWZjMzkxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3Vj
aEV2ZW50LmNwcApAQCAtMzgsOSArMzgsOSBAQCBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KCkgPSBk
ZWZhdWx0OwogCiBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91
Y2hMaXN0KiB0YXJnZXRUb3VjaGVzLAogICAgICAgICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVz
LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICBET01XaW5kb3cqIHZpZXcsIGlu
dCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAgICAgIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBw
YWdlWCwgaW50IHBhZ2VZLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29s
IHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCi0gICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0
cnVlLCB0cnVlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgdmlldywgMCwgSW50UG9pbnQoc2NyZWVu
WCwgc2NyZWVuWSksCisgICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCBN
b25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwgMCwgSW50UG9pbnQoc2NyZWVuWCwg
c2NyZWVuWSksCiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChwYWdlWCwgcGFnZVkp
LAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQ
b2ludCgwLCAwKSwKQEAgLTY0LDEzICs2NCwxMyBAQCBUb3VjaEV2ZW50Ojp+VG91Y2hFdmVudCgp
ID0gZGVmYXVsdDsKIAogdm9pZCBUb3VjaEV2ZW50Ojppbml0VG91Y2hFdmVudChUb3VjaExpc3Qq
IHRvdWNoZXMsIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywKICAgICAgICAgVG91Y2hMaXN0KiBj
aGFuZ2VkVG91Y2hlcywgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAKLSAgICAgICAgRE9NV2lu
ZG93KiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xp
ZW50WSwKKyAgICAgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBzY3JlZW5YLCBp
bnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLAogICAgICAgICBib29sIGN0cmxL
ZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAgICAgaWYg
KGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRVSUV2ZW50
KHR5cGUsIHRydWUsIHRydWUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIHRydWUs
IHRydWUsIFdURk1vdmUodmlldyksIDApOwogCiAgICAgbV90b3VjaGVzID0gdG91Y2hlczsKICAg
ICBtX3RhcmdldFRvdWNoZXMgPSB0YXJnZXRUb3VjaGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1RvdWNoRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgK
aW5kZXggZDMzOWMwYjcyYjEzZDQ1NWE1ZTAzODY2ZTU1NzIwY2NmNmJmMWVkYi4uODVmYTE2MWYy
MTk2ZDNmMmEwNWQ5YTMxYTExN2IwYTFhZjg2NmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1RvdWNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5o
CkBAIC00MSwxMiArNDEsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxUb3VjaEV2ZW50
PiBjcmVhdGUoVG91Y2hMaXN0KiB0b3VjaGVzLCAKICAgICAgICAgICAgIFRvdWNoTGlzdCogdGFy
Z2V0VG91Y2hlcywgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgCi0gICAgICAgICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIERPTVdpbmRvdyogdmlldywKKyAgICAgICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgICAg
ICAgICBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogICAg
ICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBt
ZXRhS2V5KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVG91Y2hFdmVudCh0
b3VjaGVzLCB0YXJnZXRUb3VjaGVzLCBjaGFuZ2VkVG91Y2hlcywKLSAgICAgICAgICAgICAgICB0
eXBlLCB2aWV3LCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksCisgICAgICAgICAgICAg
ICAgdHlwZSwgV1RGTW92ZSh2aWV3KSwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLAog
ICAgICAgICAgICAgICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpKTsKICAg
ICB9CiAgICAgc3RhdGljIFJlZjxUb3VjaEV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBAIC02
Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdFRvdWNoRXZlbnQoVG91Y2hMaXN0
KiB0b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExp
c3QqIGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICAg
ICAgRE9NV2luZG93KiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLAorICAgICAgICAgICAgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksCiAgICAgICAgICAg
ICBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksCiAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJv
b2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogCkBAIC04Nyw3ICs4Nyw3
IEBAIHByaXZhdGU6CiAgICAgVG91Y2hFdmVudCgpOwogICAgIFRvdWNoRXZlbnQoVG91Y2hMaXN0
KiB0b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExp
c3QqIGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsCi0gICAgICAgICAg
ICBET01XaW5kb3cqLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwKKyAgICAg
ICAgICAgIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBp
bnQgcGFnZVgsCiAgICAgICAgICAgICBpbnQgcGFnZVksCiAgICAgICAgICAgICBib29sIGN0cmxL
ZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogICAgIFRvdWNo
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVG91Y2hFdmVudC5pZGwKaW5kZXggODEwNTgzNTdlZDNhYTc3NzRkMjZmYWZhZTE2MDNi
MTVkZGUwZDYwYi4uNTRlOTlkYjQ4MzBmMzBkNDYyNjQyZTMzZDQzOTU2OTNiMTNmMmIwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmlkbApAQCAtNDAsNyArNDAsNyBAQAogICAgICAgICAgICAg
ICAgICAgICAgICAgb3B0aW9uYWwgVG91Y2hMaXN0PyB0YXJnZXRUb3VjaGVzID0gbnVsbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFRvdWNoTGlzdD8gY2hhbmdlZFRvdWNoZXMg
PSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUg
PSAidW5kZWZpbmVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRv
dz8gdmlldyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQ
cm94eT8gdmlldyA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBsb25n
IHNjcmVlblggPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3Jl
ZW5ZID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGxvbmcgY2xpZW50WCA9
IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVUlFdmVudC5jcHAKaW5kZXggYWIyMGVlY2I5YzU4MzFkZWYwMjc5Y2E3OGEw
ZTdjYzVmYTg1NjIxNy4uMGE2ZjgxYWY1MjM3MTZmNzU4MTc4ZjBmOTUzNDRjZGM2NTViODAwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9VSUV2ZW50LmNwcApAQCAtMzIsMTYgKzMyLDE2IEBAIFVJRXZlbnQ6OlVJRXZl
bnQoKQogewogfQogCi1VSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBET01XaW5kb3cqIHZp
ZXdBcmcsIGludCBkZXRhaWxBcmcpCitVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2
ZW50VHlwZSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnKQotICAgICwgbV92aWV3KHZpZXdB
cmcpCisgICAgLCBtX3ZpZXcoV1RGTW92ZSh2aWV3QXJnKSkKICAgICAsIG1fZGV0YWlsKGRldGFp
bEFyZykKIHsKIH0KIAotVUlFdmVudDo6VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgTW9ub3RvbmljVGlt
ZSB0aW1lc3RhbXAsIERPTVdpbmRvdyogdmlld0FyZywgaW50IGRldGFpbEFyZykKK1VJRXZlbnQ6
OlVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlQXJn
LCBib29sIGNhbmNlbGFibGVBcmcsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlw
ZSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCB0aW1lc3RhbXApCi0gICAgLCBtX3ZpZXco
dmlld0FyZykKKyAgICAsIG1fdmlldyhXVEZNb3ZlKHZpZXdBcmcpKQogICAgICwgbV9kZXRhaWwo
ZGV0YWlsQXJnKQogewogfQpAQCAtNTUsNyArNTUsNyBAQCBVSUV2ZW50OjpVSUV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBVSUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIs
CiAKIFVJRXZlbnQ6On5VSUV2ZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFVJRXZlbnQ6OmluaXRV
SUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZUFyZywgYm9vbCBjYW5CdWJibGVBcmcsIGJv
b2wgY2FuY2VsYWJsZUFyZywgRE9NV2luZG93KiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQordm9p
ZCBVSUV2ZW50Ojppbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVBcmcsIGJvb2wg
Y2FuQnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVBcmcsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaAppbmRleCBiYWE3MzFmY2Y4MWVlYmFmMjMx
NTNkYTUxYmEwYWVhZmQyNDU1ZmFjLi41MGYyZDE3NzE5OTQyZTQ3M2ZkZWM5YjFhODg0ODYwNTkz
Y2QxOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmgKQEAgLTIzLDIwICsyMywyMCBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5j
bHVkZSAiVUlFdmVudEluaXQuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIG5vIG9uZSBpcyBkZXBl
bmRpbmcgb24gaXQgYW55bW9yZS4KLXR5cGVkZWYgRE9NV2luZG93IEFic3RyYWN0VmlldzsKK3R5
cGVkZWYgV2luZG93UHJveHkgQWJzdHJhY3RWaWV3OwogCiBjbGFzcyBVSUV2ZW50IDogcHVibGlj
IEV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdp
bmRvdyogdmlldywgaW50IGRldGFpbCkKKyAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgVUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUs
IHZpZXcsIGRldGFpbCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVSUV2ZW50KHR5
cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKSk7CiAgICAg
fQogICAgIHN0YXRpYyBSZWY8VUlFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHsKQEAg
LTQ4LDkgKzQ4LDkgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5VSUV2ZW50KCk7CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRl
dGFpbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0VUlFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5k
b3dQcm94eT4mJiwgaW50IGRldGFpbCk7CiAKLSAgICBET01XaW5kb3cqIHZpZXcoKSBjb25zdCB7
IHJldHVybiBtX3ZpZXcuZ2V0KCk7IH0KKyAgICBXaW5kb3dQcm94eSogdmlldygpIGNvbnN0IHsg
cmV0dXJuIG1fdmlldy5nZXQoKTsgfQogICAgIGludCBkZXRhaWwoKSBjb25zdCB7IHJldHVybiBt
X2RldGFpbDsgfQogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBv
dmVycmlkZTsKQEAgLTY1LDE0ICs2NSwxNCBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBV
SUV2ZW50KCk7Ci0gICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwpOwotICAgIFVJ
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7
CisgICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCk7CisgICAg
VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYs
IGludCBkZXRhaWwpOwogICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVUlF
dmVudEluaXQmLCBJc1RydXN0ZWQpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNVSUV2ZW50KCkg
Y29uc3QgZmluYWw7CiAKLSAgICBSZWZQdHI8RE9NV2luZG93PiBtX3ZpZXc7CisgICAgUmVmUHRy
PFdpbmRvd1Byb3h5PiBtX3ZpZXc7CiAgICAgaW50IG1fZGV0YWlsOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJ
RXZlbnQuaWRsCmluZGV4IDg3YjM5MTUyODMwMzE5N2UzNmM2NGMxZTcwOGZmYjYwY2JhZDk1MDMu
LjZhMzVjNTdhMzg3NGJjOGVjNjNkNmQ5MjRkNDI4YjJiNTgxMDBmNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlF
dmVudC5pZGwKQEAgLTIwLDExICsyMCwxMSBAQAogWwogICAgIENvbnN0cnVjdG9yKERPTVN0cmlu
ZyB0eXBlLCBvcHRpb25hbCBVSUV2ZW50SW5pdCBldmVudEluaXREaWN0KQogXSBpbnRlcmZhY2Ug
VUlFdmVudCA6IEV2ZW50IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IHZpZXc7
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHZpZXc7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGxvbmcgZGV0YWlsOwogICAgIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZp
bmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICB2b2lkIGluaXRV
SUV2ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIGJv
b2xlYW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZh
bHNlLCBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBsb25nIGRldGFp
bCA9IDApOworICAgIHZvaWQgaW5pdFVJRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAi
dW5kZWZpbmVkIiwgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGUgPSBmYWxzZSwgb3B0aW9uYWwg
Ym9vbGVhbiBjYW5jZWxhYmxlID0gZmFsc2UsIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0g
bnVsbCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAwKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBsb25nIGxheWVyWDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsYXllclk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9VSUV2ZW50SW5pdC5oCmluZGV4IDAzMTZiYzA2ZjU2OGU1MzkxNmRmNjk2ZjQxNDQ1YmE5
ZmMzMWZmMzYuLmUxMTI4YTc2ZGU1ODYwMTYyZmE5NzZkY2RjODI3MTcwZDhmMmYzYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50SW5pdC5oCkBAIC0yNSwxNCArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudEluaXQuaCIKKyNpbmNs
dWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdHJ1Y3QgVUlFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKLSAg
ICBSZWZQdHI8RE9NV2luZG93PiB2aWV3OworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gdmlldzsK
ICAgICBpbnQgZGV0YWlsIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1VJRXZlbnRJbml0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5pZGwK
aW5kZXggMGQ3ZWI4ZWZjMWM1MzdhOTA1MTE3YjYxMjExMWFkMDFlYjFlMGFhMi4uM2NjYmJlZDYw
NzU1ZjZmMjE2NTJmNWJhNjFlNmYzODI0MGMxN2ZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1VJRXZlbnRJbml0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudElu
aXQuaWRsCkBAIC0yNCw2ICsyNCw2IEBACiAgKi8KIAogZGljdGlvbmFyeSBVSUV2ZW50SW5pdCA6
IEV2ZW50SW5pdCB7Ci0gICAgRE9NV2luZG93PyB2aWV3ID0gbnVsbDsKKyAgICBXaW5kb3dQcm94
eT8gdmlldyA9IG51bGw7CiAgICAgbG9uZyBkZXRhaWwgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVUlFdmVudFdpdGhLZXlTdGF0ZS5oCmluZGV4IDBhOGU0MDMxMjQ4ZDZmNzI2NTQ0MmU1YmY4
MDAxMmJhMzBjY2NkZWIuLjA4NWEwMzE3ZWM4ZGNlM2E2MGZlMjZhZmE1YTE2MmVhMmE5YTA1MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaApAQCAtNDAsOCArNDAs
OCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgVUlFdmVudFdpdGhLZXlTdGF0ZSgpID0gZGVm
YXVsdDsKIAotICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBk
ZXRhaWwsIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0
YUtleSkKLSAgICAgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmll
dywgZGV0YWlsKQorICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlldywgaW50IGRldGFpbCwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlm
dEtleSwgYm9vbCBtZXRhS2V5KQorICAgICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBj
YW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAgICAgICwgbV9jdHJsS2V5KGN0
cmxLZXkpCiAgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQogICAgICAgICAsIG1fc2hpZnRLZXko
c2hpZnRLZXkpCkBAIC00OSw5ICs0OSw5IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQogCi0g
ICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5k
b3cqIHZpZXcsCisgICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0
YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICAgICAgaW50IGRldGFpbCwgYm9v
bCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBib29s
IGFsdEdyYXBoS2V5LCBib29sIGNhcHNMb2NrS2V5KQotICAgICAgICAgICAgOiBVSUV2ZW50KHR5
cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2aWV3LCBkZXRhaWwpCisgICAg
ICAgICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAs
IFdURk1vdmUodmlldyksIGRldGFpbCkKICAgICAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkp
CiAgICAgICAgICAgICAsIG1fYWx0S2V5KGFsdEtleSkKICAgICAgICAgICAgICwgbV9zaGlmdEtl
eShzaGlmdEtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAppbmRleCBkMmI4ZmI3MmQ5MTk4
ZTE0YmY3NThjYTNhZmJjMWVjMjQ3ZjcxY2JkLi41MzdjYjE5M2M4MTNmNTI3YWM1MzNjOTMwODkw
ODdiZGIzNjhiZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCkBAIC00Nyw4ICs0Nyw4
IEBAIGlubGluZSBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsCiB7CiB9CiAKLWlubGluZSBXaGVlbEV2ZW50OjpX
aGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogdmll
dykKLSAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUs
IGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LCAwLCBl
dmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCitpbmxpbmUgV2hlZWxFdmVu
dDo6V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldykKKyAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZl
bnQsIHRydWUsIHRydWUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGlt
ZSgpLCBXVEZNb3ZlKHZpZXcpLCAwLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3Np
dGlvbigpCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgLCB7IH0KICNlbmRpZgpA
QCAtNjEsOSArNjEsOSBAQCBpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHZpZXcpCiB7CiB9CiAKLVJlZjxXaGVl
bEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVu
dCwgRE9NV2luZG93KiB2aWV3KQorUmVmPFdoZWVsRXZlbnQ+IFdoZWVsRXZlbnQ6OmNyZWF0ZShj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmll
dykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXaGVlbEV2ZW50KGV2ZW50LCB2aWV3KSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2hlZWxFdmVudChldmVudCwgV1RGTW92ZSh2aWV3
KSkpOwogfQogCiBSZWY8V2hlZWxFdmVudD4gV2hlZWxFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3Mo
KQpAQCAtNzYsMTIgKzc2LDEyIEBAIFJlZjxXaGVlbEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsCiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2hlZWxFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7
CiB9CiAKLXZvaWQgV2hlZWxFdmVudDo6aW5pdFdlYktpdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRh
WCwgaW50IHJhd0RlbHRhWSwgRE9NV2luZG93KiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVl
blksIGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29s
IHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCit2b2lkIFdoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVl
bEV2ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIFJlZlB0cjxXaW5kb3dQcm94eT4m
JiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLCBi
b29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7
CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBpbml0TW91c2VFdmVudChldmVudE5hbWVzKCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmll
dywgMCwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNo
aWZ0S2V5LCBtZXRhS2V5LCAwLCBudWxscHRyKTsKKyAgICBpbml0TW91c2VFdmVudChldmVudE5h
bWVzKCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCwgc2NyZWVuWCwg
c2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5
LCAwLCBudWxscHRyKTsKIAogICAgIC8vIE5vcm1hbGl6ZSB0byAxMjAgbXVsdGlwbGUgZm9yIGNv
bXBhdGliaWxpdHkgd2l0aCBJRS4KICAgICBtX3doZWVsRGVsdGEgPSB7IHJhd0RlbHRhWCAqIFRp
Y2tNdWx0aXBsaWVyLCByYXdEZWx0YVkgKiBUaWNrTXVsdGlwbGllciB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVl
bEV2ZW50LmgKaW5kZXggNGQzNGIzMGQ2ZGVkNWVmMjgxNWE4MTM3ZTRjMjk3ZTY0MWFkZTZkYS4u
MTBiNjJlMDVjNzAxNTYwNzZmZmU1Y2YxMjczOTdlYzEzMjNkZDJkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hl
ZWxFdmVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAgICAgRE9NX0RFTFRBX1BB
R0UKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50
PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYm
KTsKICAgICBzdGF0aWMgUmVmPFdoZWVsRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAg
ICBzdHJ1Y3QgSW5pdCA6IE1vdXNlRXZlbnRJbml0IHsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGluaXRXZWJLaXRXaGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGlu
dCByYXdEZWx0YVksIERPTVdpbmRvdyosIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBh
Z2VYLCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXks
IGJvb2wgbWV0YUtleSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0V2ViS2l0V2hlZWxF
dmVudChpbnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBSZWZQdHI8V2luZG93UHJveHk+JiYs
IGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wgY3Ry
bEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CiAKICAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtV2hlZWxFdmVudD4mIHVuZGVybHlpbmdQbGF0Zm9y
bUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudDsgfQogCkBA
IC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2hlZWxFdmVudCgpOwogICAg
IFdoZWVsRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7
Ci0gICAgV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBET01XaW5kb3cqKTsK
KyAgICBXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJik7CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwKaW5kZXggOTNjNTNhNGJmYjJkYWY0YmQ0
NDI3Mzg2NmE5MmNlZDRhMWMxYzM4Ni4uYjI4MWRhMWM2NjA0NGE4YTkzZDYwZDkwZWRkZjUxZDE0
YzZjOTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmlkbApAQCAtMzksNyArMzksNyBAQAog
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0RGlyZWN0aW9uSW52ZXJ0ZWRG
cm9tRGV2aWNlOwogCi0gICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRpb25hbCBsb25n
IHdoZWVsRGVsdGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAsIG9wdGlvbmFs
IERPTVdpbmRvdz8gdmlldyA9IG51bGwsCisgICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChv
cHRpb25hbCBsb25nIHdoZWVsRGVsdGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9
IDAsIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwKICAgICAgICAgb3B0aW9uYWwg
bG9uZyBzY3JlZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwgb3B0aW9uYWwgbG9u
ZyBjbGllbnRYID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRZID0gMCwKICAgICAgICAgb3B0aW9u
YWwgYm9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFs
c2UsCiAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwg
Ym9vbGVhbiBtZXRhS2V5ID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZDE0NzI0Mjc3MjM3NDY4ZDRm
NjFmZmUzM2M3NWZlNDZhODE5MjNkYy4uZDczYTcxYjBlMTVkZDgxOWYxNzBlZmE1ZjU2MmVmNzVj
OTQyYjk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwCkBAIC02MzIsNyArNjMyLDcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyOjppbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25z
dCBWZWMKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpCiAgICAgICAg
IHZpZXctPmRpc2FibGVMYXllckZsdXNoVGhyb3R0bGluZ1RlbXBvcmFyaWx5Rm9ySW50ZXJhY3Rp
b24oKTsKIAotICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JE
aWN0YXRpb24obV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCwgZGljdGF0aW9u
QWx0ZXJuYXRpdmVzKTsKKyAgICBSZWY8VGV4dEV2ZW50PiBldmVudCA9IFRleHRFdmVudDo6Y3Jl
YXRlRm9yRGljdGF0aW9uKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgdGV4dCwg
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KHRy
aWdnZXJpbmdFdmVudCk7CiAKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGNiOGI2YjhiYmFjODViYzBlMzJkZWQyZWYzMzlj
MjQxMDI5MGQzMTkuLjRlMzY4YmZkODAzYzUzNjg1MmVkY2U2MDEwNDY5NDQ4NjMxNDkxOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIEVkaXRv
cjo6cGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBib29sIHNtYXJ0
UmVwbGFjZSkKICAgICBFbGVtZW50KiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0
aW9uKCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKLSAgICB0YXJnZXQtPmRp
c3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShkb2N1bWVudCgp
LmRvbVdpbmRvdygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSk7CisgICAgdGFyZ2V0LT5k
aXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoZG9jdW1lbnQo
KS5kZWZhdWx0VmlldygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSk7CiB9CiAKIHZvaWQg
RWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0Zy
YWdtZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90
ZUhhbmRsaW5nIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUpCkBAIC01NzcsNyArNTc3LDcgQEAgdm9p
ZCBFZGl0b3I6OnBhc3RlQXNGcmFnbWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBwYXN0aW5n
RnJhZ21lbnQsIGJvb2wgc21hcnQKICAgICBFbGVtZW50KiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJn
ZXRGcm9tU2VsZWN0aW9uKCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKLSAg
ICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3Rl
KGRvY3VtZW50KCkuZG9tV2luZG93KCksIFdURk1vdmUocGFzdGluZ0ZyYWdtZW50KSwgc21hcnRS
ZXBsYWNlLCBtYXRjaFN0eWxlLCByZXNwZWN0c01haWxCbG9ja3F1b3RlKSk7CisgICAgdGFyZ2V0
LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShkb2N1bWVu
dCgpLmRlZmF1bHRWaWV3KCksIFdURk1vdmUocGFzdGluZ0ZyYWdtZW50KSwgc21hcnRSZXBsYWNl
LCBtYXRjaFN0eWxlLCByZXNwZWN0c01haWxCbG9ja3F1b3RlKSk7CiB9CiAKIHZvaWQgRWRpdG9y
OjpwYXN0ZUFzUGxhaW5UZXh0QnlwYXNzaW5nREhUTUwoKQpAQCAtMTg0OCw3ICsxODQ4LDcgQEAg
dm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgU2V0Q29tcG9z
aXRpb25Nb2RlIG1vZGUpCiAgICAgaW5zZXJ0VGV4dEZvckNvbmZpcm1lZENvbXBvc2l0aW9uKHRl
eHQpOwogCiAgICAgaWYgKGF1dG8qIHRhcmdldCA9IGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQo
KSkKLSAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQoKS5kb21XaW5kb3co
KSwgdGV4dCkpOworICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50LCBkb2N1bWVudCgpLmRl
ZmF1bHRWaWV3KCksIHRleHQpKTsKIAogICAgIGlmIChtb2RlID09IENhbmNlbENvbXBvc2l0aW9u
KSB7CiAgICAgICAgIC8vIEFuIG9wZW4gdHlwaW5nIGNvbW1hbmQgdGhhdCBkaXNhZ3JlZXMgYWJv
dXQgY3VycmVudCBzZWxlY3Rpb24gd291bGQgY2F1c2UgaXNzdWVzIHdpdGggdHlwaW5nIGxhdGVy
IG9uLgpAQCAtMTkwOCwxMSArMTkwOCwxMSBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24o
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAg
ICAgICAgICAgLy8gV2Ugc2hvdWxkIHNlbmQgYSBjb21wb3NpdGlvbnN0YXJ0IGV2ZW50IG9ubHkg
d2hlbiB0aGUgZ2l2ZW4gdGV4dCBpcyBub3QgZW1wdHkgYmVjYXVzZSB0aGlzCiAgICAgICAgICAg
ICAvLyBmdW5jdGlvbiBkb2Vzbid0IGNyZWF0ZSBhIGNvbXBvc2l0aW9uIG5vZGUgd2hlbiB0aGUg
dGV4dCBpcyBlbXB0eS4KICAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0RXZlbnQsIGRvY3VtZW50KCkuZG9tV2luZG93
KCksIG9yaWdpbmFsVGV4dCkpOwotICAgICAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25F
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBkb2N1bWVu
dCgpLmRvbVdpbmRvdygpLCB0ZXh0KTsKKyAgICAgICAgICAgICAgICB0YXJnZXQtPmRpc3BhdGNo
RXZlbnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0
YXJ0RXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgb3JpZ2luYWxUZXh0KSk7CisgICAg
ICAgICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmNvbXBvc2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdGV4dCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoIXRleHQuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNv
bXBvc2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZG9tV2luZG93KCksIHRleHQpOworICAg
ICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNv
bXBvc2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdGV4dCk7CiAK
ICAgICAgICAgaWYgKGV2ZW50KQogICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KCpl
dmVudCk7CkBAIC0xOTIzLDcgKzE5MjMsNyBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24o
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAg
IGlmICh0ZXh0LmlzRW1wdHkoKSkgewogICAgICAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxl
Y3Rpb24oZG9jdW1lbnQoKSwgVHlwaW5nQ29tbWFuZDo6UHJldmVudFNwZWxsQ2hlY2tpbmcsIFR5
cGluZ0NvbW1hbmQ6OlRleHRDb21wb3NpdGlvblBlbmRpbmcpOwogICAgICAgICBpZiAodGFyZ2V0
KQotICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQoKS5kb21XaW5k
b3coKSwgdGV4dCkpOworICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0
aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1l
bnQoKS5kZWZhdWx0VmlldygpLCB0ZXh0KSk7CiAgICAgfQogCiAgICAgbV9jb21wb3NpdGlvbk5v
ZGUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCmluZGV4IGEzZDdk
OTc3MGNlYmQwNjI4Y2E3YmVjMjRjZmE2NzVkM2I5N2JiNTQuLjlkNTgxY2VkZmE4NDFlMGFkZjFh
YWM0MzI1OTFjOGI2ZjJmNzY1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAK
QEAgLTExNCw3ICsxMTQsNyBAQCBSZWY8RG9jdW1lbnRQYXJzZXI+IEhUTUxEb2N1bWVudDo6Y3Jl
YXRlUGFyc2VyKCkKIH0KIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2UvZG9tLmh0bWwjZG9tLWRvY3VtZW50LW5hbWVkaXRlbQotc3RkOjpvcHRpb25hbDxWYXJpYW50
PFJlZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlv
bj4+PiBIVE1MRG9jdW1lbnQ6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitz
dGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+
LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gSFRNTERvY3VtZW50OjpuYW1lZEl0ZW0oY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKQogewogICAgIGlmIChuYW1lLmlzTnVsbCgpIHx8ICFoYXNEb2N1
bWVudE5hbWVkSXRlbSgqbmFtZS5pbXBsKCkpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtMTIyLDE2ICsxMjIsMTYgQEAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxET01X
aW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4KICAgICBpZiAo
VU5MSUtFTFkoZG9jdW1lbnROYW1lZEl0ZW1Db250YWluc011bHRpcGxlRWxlbWVudHMoKm5hbWUu
aW1wbCgpKSkpIHsKICAgICAgICAgYXV0byBjb2xsZWN0aW9uID0gZG9jdW1lbnROYW1lZEl0ZW1z
KG5hbWUpOwogICAgICAgICBBU1NFUlQoY29sbGVjdGlvbi0+bGVuZ3RoKCkgPiAxKTsKLSAgICAg
ICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVm
UHRyPEhUTUxDb2xsZWN0aW9uPj4geyBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHsgV1RGTW92ZShj
b2xsZWN0aW9uKSB9IH07CisgICAgICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94
eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBSZWZQdHI8SFRN
TENvbGxlY3Rpb24+IHsgV1RGTW92ZShjb2xsZWN0aW9uKSB9IH07CiAgICAgfQogCiAgICAgYXV0
byYgZWxlbWVudCA9ICpkb2N1bWVudE5hbWVkSXRlbSgqbmFtZS5pbXBsKCkpOwogICAgIGlmIChV
TkxJS0VMWShpczxIVE1MSUZyYW1lRWxlbWVudD4oZWxlbWVudCkpKSB7CiAgICAgICAgIGlmIChh
dXRvIGRvbVdpbmRvdyA9IG1ha2VSZWZQdHIoZG93bmNhc3Q8SFRNTElGcmFtZUVsZW1lbnQ+KGVs
ZW1lbnQpLmNvbnRlbnRXaW5kb3coKSkpCi0gICAgICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQ
dHI8RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7
IFdURk1vdmUoZG9tV2luZG93KSB9OworICAgICAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRy
PFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7
IFdURk1vdmUoZG9tV2luZG93KSB9OwogICAgIH0KIAotICAgIHJldHVybiBWYXJpYW50PFJlZlB0
cjxET01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsg
UmVmUHRyPEVsZW1lbnQ+IHsgJmVsZW1lbnQgfSB9OworICAgIHJldHVybiBWYXJpYW50PFJlZlB0
cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4g
eyBSZWZQdHI8RWxlbWVudD4geyAmZWxlbWVudCB9IH07CiB9CiAKIFZlY3RvcjxBdG9taWNTdHJp
bmc+IEhUTUxEb2N1bWVudDo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRG9jdW1lbnQuaAppbmRleCBhMzYzOTc0MDZkMzQ5ZjU3NmY0ODlkM2ExZjYwMGFk
YTFiZGRjZmUxLi4wYjNkMzQxNGE0YmVmYTAzMzVjNGUyMjlhNTk1ODVlYjA1ZWJkNjBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIGludCB3aWR0aCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBoZWln
aHQoKTsKICAgICAKLSAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4s
IFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IG5hbWVkSXRlbShjb25z
dCBBdG9taWNTdHJpbmcmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRv
d1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gbmFtZWRJ
dGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHN1cHBv
cnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdDsKIAogICAgIEVsZW1lbnQqIGRvY3VtZW50TmFtZWRJ
dGVtKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1l
bnROYW1lZEl0ZW0uZ2V0RWxlbWVudEJ5RG9jdW1lbnROYW1lZEl0ZW0obmFtZSwgKnRoaXMpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwKaW5kZXggMTI3ZjI2NDVlMDMyMmRjNzk4
ODEyODA0ZmY1ZDc5NWRhYzhhNTgwZi4uYTk5OWIwM2Y2MjI4YjI1ZWJkMWI3Yjk0Mzg2Yjk5ZTM5
NWI4NWY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmlkbApAQCAtMjMsNSArMjMs
NSBAQAogICAgIE5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cywKICAgICBPdmVycmlk
ZUJ1aWx0aW5zLAogXSBpbnRlcmZhY2UgSFRNTERvY3VtZW50IDogRG9jdW1lbnQgeyAgICAKLSAg
ICBnZXR0ZXIgKERPTVdpbmRvdyBvciBFbGVtZW50IG9yIEhUTUxDb2xsZWN0aW9uKSAoRE9NU3Ry
aW5nIG5hbWUpOworICAgIGdldHRlciAoV2luZG93UHJveHkgb3IgRWxlbWVudCBvciBIVE1MQ29s
bGVjdGlvbikgKERPTVN0cmluZyBuYW1lKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVFbGVtZW50LmlkbAppbmRleCBjZDYzYTIxMmFkNDMzMTRjNWJlMjMwNGRkZTcwMDk3YzdiZjg4
MzUzLi5lZDdjMGI2ZTI3NzI5OWI2NWNhMjE4ZjIxZTE4MjYxZTUxM2RmYzBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwKQEAgLTI2LDcgKzI2LDcgQEAgaW50ZXJm
YWNlIEhUTUxGcmFtZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW1JlZmxlY3QsIFVSTF0g
YXR0cmlidXRlIFVTVlN0cmluZyBsb25nRGVzYzsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIGJv
b2xlYW4gbm9SZXNpemU7CiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSByZWFkb25seSBhdHRy
aWJ1dGUgRG9jdW1lbnQgY29udGVudERvY3VtZW50OwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01XaW5kb3cgY29udGVudFdpbmRvdzsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJv
eHkgY29udGVudFdpbmRvdzsKIAogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFz
PUVtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luSGVpZ2h0OwogICAgIFtSZWZsZWN0XSBhdHRy
aWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luV2lkdGg7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKaW5kZXggNTg4
NzM5ODQ3Y2JiMDhjMzcxN2MxM2JlYmQzYWE5MWQ5OWJiNGNjNS4uYjliZWYxNzYzZTI2MWQ3Yzk4
MmUxZjA1NTUwOWMxNjlkZjg0MDYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lT3duZXJFbGVtZW50LmNwcApAQCAtOTksOSArOTksOSBAQCBEb2N1bWVudCogSFRNTEZyYW1l
T3duZXJFbGVtZW50Ojpjb250ZW50RG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRl
bnRGcmFtZSA/IG1fY29udGVudEZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKIH0KIAotRE9N
V2luZG93KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRXaW5kb3coKSBjb25zdAorV2lu
ZG93UHJveHkqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVudFdpbmRvdygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8gbV9jb250ZW50RnJhbWUtPmRvY3VtZW50KCkt
PmRvbVdpbmRvdygpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyAmbV9j
b250ZW50RnJhbWUtPndpbmRvd1Byb3h5KCkgOiBudWxscHRyOwogfQogCiB2b2lkIEhUTUxGcmFt
ZU93bmVyRWxlbWVudDo6c2V0U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCmluZGV4IDg2NWVkZGI5MWY1
N2UzNDViNGI2ODdmNzYwZTgzMzI1NDI1YzRmYzEuLjgwZjE4MjAwZGYwZDRhNzRkN2YwZTNkYmNh
MTUyNDU2MDIyNGFiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
T3duZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVs
ZW1lbnQuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SFRNTEZyYW1l
T3duZXJFbGVtZW50KCk7CiAKICAgICBGcmFtZSogY29udGVudEZyYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50RnJhbWU7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBET01XaW5kb3cqIGNvbnRl
bnRXaW5kb3coKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXaW5kb3dQcm94eSogY29udGVu
dFdpbmRvdygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KiBjb250ZW50RG9j
dW1lbnQoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Q29udGVudEZyYW1lKEZyYW1lKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAppbmRleCAyODU2NDI0OTUw
YTM0OWM5YjcyOTUwM2M1ZjRmMTIxYThlYzRiMmI3Li41ZDIzN2Q0ODI2YzcyZjg4N2I3ZGIyZmI1
MWQ2ZTk3ODY1Njc5YTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZVNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxl
bWVudC5jcHAKQEAgLTIzMSwxNSArMjMxLDEzIEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6
cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyCiAg
ICAgfQogfQogCi1ET01XaW5kb3cqIEhUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVkSXRlbShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpCitXaW5kb3dQcm94eSogSFRNTEZyYW1lU2V0RWxlbWVudDo6
bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKICAgICBhdXRvIGZyYW1lRWxl
bWVudCA9IG1ha2VSZWZQdHIoY2hpbGRyZW4oKS0+bmFtZWRJdGVtKG5hbWUpKTsKICAgICBpZiAo
IWlzPEhUTUxGcmFtZUVsZW1lbnQ+KGZyYW1lRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgaWYgKGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGRvd25jYXN0PEhUTUxG
cmFtZUVsZW1lbnQ+KGZyYW1lRWxlbWVudC5nZXQoKSktPmNvbnRlbnREb2N1bWVudCgpKSkKLSAg
ICAgICAgcmV0dXJuIGRvY3VtZW50LT5kb21XaW5kb3coKTsKLSAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEZyYW1lRWxlbWVudD4oKmZyYW1lRWxlbWVudCkuY29u
dGVudFdpbmRvdygpOwogfQogCiBWZWN0b3I8QXRvbWljU3RyaW5nPiBIVE1MRnJhbWVTZXRFbGVt
ZW50OjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVTZXRFbGVtZW50LmgKaW5kZXggZDFmMzc5YjczNWNiNzdmNWU1YWQyZGVjNGViZjE0
NDBjN2VlYTMzMi4uYzNjNjhiNTdiZjk3N2U3YWNlYTkyZmYzYWVjMDk2NDk2ZjcxMjJiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8SFRNTEZyYW1lU2V0RWxlbWVudD4gZmluZENv
bnRhaW5pbmcoRWxlbWVudCogZGVzY2VuZGFudCk7CiAgICAgCiAgICAgVmVjdG9yPEF0b21pY1N0
cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0OwotICAgIERPTVdpbmRvdyogbmFt
ZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFdpbmRvd1Byb3h5KiBuYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nJik7CiAKIHByaXZhdGU6CiAgICAgSFRNTEZyYW1lU2V0RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsCmluZGV4IDMyNTBiOTQ5MGVkYjhiYjE4ZjQ3Yjk4MmNi
YjdmNmI0NDA4ZDMxMjUuLjY5NDIxNzNlNzQ0MDkyNDljMjA1YjBiM2M1MjYyOWUyYWNjNDY5NGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbApAQCAtMzMs
NyArMzMsNyBAQCBpbnRlcmZhY2UgSFRNTEZyYW1lU2V0RWxlbWVudCA6IEhUTUxFbGVtZW50IHsK
IAogICAgIC8vIE5vbi1zdGFuZGFyZCBuYW1lZCBnZXR0ZXIKICAgICAvLyBGSVhNRTogVGhpcyBp
cyBub3QgaW4gdGhlIHN0YW5kYXJkLCBjYW4gd2UgcmVtb3ZlIHRoaXM/Ci0gICAgZ2V0dGVyIERP
TVdpbmRvdyAoRE9NU3RyaW5nIG5hbWUpOworICAgIGdldHRlciBXaW5kb3dQcm94eSAoRE9NU3Ry
aW5nIG5hbWUpOwogfTsKIAogSFRNTEZyYW1lU2V0RWxlbWVudCBpbXBsZW1lbnRzIFdpbmRvd0V2
ZW50SGFuZGxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCmlu
ZGV4IDNlM2JkY2MxMTA0MTg4YTc4ZGRiYThlMjc2NDM0ZTRlNjZlNjkwYmMuLmMxNjM5MjJlZTQy
MGU3NWMwNGRkMTI4MTk0YjUzNWYzODNjOTVkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElGcmFtZUVsZW1lbnQuaWRsCkBAIC0zOCw3ICszOCw3IEBAIGludGVyZmFjZSBIVE1MSUZyYW1l
RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVh
ZG9ubHkgYXR0cmlidXRlIERvY3VtZW50IGNvbnRlbnREb2N1bWVudDsKIAotICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01XaW5kb3cgY29udGVudFdpbmRvdzsKKyAgICByZWFkb25seSBhdHRyaWJ1
dGUgV2luZG93UHJveHkgY29udGVudFdpbmRvdzsKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9k
ZSwgTWF5VGhyb3dFeGNlcHRpb25dIERvY3VtZW50IGdldFNWR0RvY3VtZW50KCk7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggZDE1MTI3M2EzNTk0OTNlMWI2YzUz
OGYwZjNkOTMxNjg4MDM2NGExNy4uODVjMTNmZjdmMDIwYWE5YWMyYzZlNGRmMTcyNDZkNDQxMTlj
NWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNs
dWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJE
b2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggYjAyM2E0ZTJlZjI4
NDMwMzdiZTVkMDhiZjJhNGZlMzgzMWQ1ZmQ4Zi4uM2UyYTkxNjZmMmM4MDFhZTU1NjYzYmNjYjFi
NDkwYWUwOWZhZjFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTQ4LDcgKzE0
OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIGNsYXNzIFBvc3RNZXNzYWdlVGlt
ZXIgOiBwdWJsaWMgVGltZXJCYXNlIHsKIHB1YmxpYzoKLSAgICBQb3N0TWVzc2FnZVRpbWVyKERP
TVdpbmRvdyYgd2luZG93LCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgc291cmNlT3JpZ2luLCBET01XaW5kb3cmIHNvdXJjZSwgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiYmIHRhcmdldE9yaWdpbiwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFja1Ry
YWNlKQorICAgIFBvc3RNZXNzYWdlVGltZXIoRE9NV2luZG93JiB3aW5kb3csIE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiBzb3VyY2UsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0YXJnZXRP
cmlnaW4sIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3RhY2tUcmFjZSkKICAgICAgICAgOiBt
X3dpbmRvdyh3aW5kb3cpCiAgICAgICAgICwgbV9tZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpCiAg
ICAgICAgICwgbV9vcmlnaW4oc291cmNlT3JpZ2luKQpAQCAtMTYxLDcgKzE2MSw3IEBAIHB1Ymxp
YzoKIAogICAgIFJlZjxNZXNzYWdlRXZlbnQ+IGV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpCiAgICAgewotICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoTWVz
c2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoY29udGV4dCwgV1RGTW92ZShtX21lc3NhZ2UudHJhbnNm
ZXJyZWRQb3J0cykpLCBtX21lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBtX29yaWdp
biwgeyB9LCBNZXNzYWdlRXZlbnRTb3VyY2UoUmVmUHRyPERPTVdpbmRvdz4oV1RGTW92ZShtX3Nv
dXJjZSkpKSk7CisgICAgICAgIHJldHVybiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShNZXNzYWdlUG9y
dDo6ZW50YW5nbGVQb3J0cyhjb250ZXh0LCBXVEZNb3ZlKG1fbWVzc2FnZS50cmFuc2ZlcnJlZFBv
cnRzKSksIG1fbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCksIG1fb3JpZ2luLCB7IH0s
IG1fc291cmNlID8gc3RkOjptYWtlX29wdGlvbmFsKE1lc3NhZ2VFdmVudFNvdXJjZShXVEZNb3Zl
KG1fc291cmNlKSkpIDogc3RkOjpudWxsb3B0KTsKICAgICB9CiAKICAgICBTZWN1cml0eU9yaWdp
biogdGFyZ2V0T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRPcmlnaW4uZ2V0KCk7IH0K
QEAgLTE4MCw3ICsxODAsNyBAQCBwcml2YXRlOgogICAgIFJlZjxET01XaW5kb3c+IG1fd2luZG93
OwogICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1fbWVzc2FnZTsKICAgICBTdHJpbmcgbV9v
cmlnaW47Ci0gICAgUmVmPERPTVdpbmRvdz4gbV9zb3VyY2U7CisgICAgUmVmUHRyPFdpbmRvd1By
b3h5PiBtX3NvdXJjZTsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fdGFyZ2V0T3JpZ2lu
OwogICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IG1fc3RhY2tUcmFjZTsKICAgICBSZWZQdHI8
VXNlckdlc3R1cmVUb2tlbj4gbV91c2VyR2VzdHVyZVRvRm9yd2FyZDsKQEAgLTk2MCw3ICs5NjAs
OCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgRE9NV2luZG93JiBpbmN1bQogICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
IG1lc3NhZ2UgeyBtZXNzYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZGlzZW50YW5nbGVk
UG9ydHMucmVsZWFzZVJldHVyblZhbHVlKCkgfTsKIAogICAgIC8vIFNjaGVkdWxlIHRoZSBtZXNz
YWdlLgotICAgIGF1dG8qIHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGltZXIoKnRoaXMsIFdURk1v
dmUobWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgaW5jdW1iZW50V2luZG93LCBXVEZNb3ZlKHRhcmdl
dCksIFdURk1vdmUoc3RhY2tUcmFjZSkpOworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gaW5jdW1i
ZW50V2luZG93UHJveHkgPSBpbmN1bWJlbnRXaW5kb3cuZnJhbWUoKSA/ICZpbmN1bWJlbnRXaW5k
b3cuZnJhbWUoKS0+d2luZG93UHJveHkoKSA6IG51bGxwdHI7CisgICAgYXV0byogdGltZXIgPSBu
ZXcgUG9zdE1lc3NhZ2VUaW1lcigqdGhpcywgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2lu
LCBXVEZNb3ZlKGluY3VtYmVudFdpbmRvd1Byb3h5KSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3Zl
KHN0YWNrVHJhY2UpKTsKICAgICB0aW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CiAKICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBvc3RNZXNzYWdlKCptX2ZyYW1lLCAqdGltZXIsIHN0
YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggOTE3NGFmZDUz
MjE2YzExMmM0YjVlMGQ1NzU4N2M4NmQxZmM5YzVhMS4uN2M0OWEyMTdmMDJhNjg1NTQ3MGRiMzE3
N2I4ZjU5MzU0MzhmNTY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAK
QEAgLTUwOCw3ICs1MDgsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1
dEV2ZW50Rm9yKEZyYW1lKiBpbm5lckZyYW1lLCBjb25zdCBEcmFnRGF0YQogICAgIFN0cmluZyB0
ZXh0ID0gbV9wYWdlLmRyYWdDYXJldENvbnRyb2xsZXIoKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJs
ZSgpID8gZW1wdHlTdHJpbmcoKSA6IGRyYWdEYXRhLmFzUGxhaW5UZXh0KCk7CiAgICAgRWxlbWVu
dCogdGFyZ2V0ID0gaW5uZXJGcmFtZS0+ZWRpdG9yKCkuZmluZEV2ZW50VGFyZ2V0RnJvbShtX3Bh
Z2UuZHJhZ0NhcmV0Q29udHJvbGxlcigpLmNhcmV0UG9zaXRpb24oKSk7CiAgICAgLy8gRklYTUU6
IFdoYXQgZ3VhcmFudGVlcyB0YXJnZXQgaXMgbm90IG51bGw/Ci0gICAgYXV0byBldmVudCA9IFRl
eHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KSwgdGV4dCk7CisgICAgYXV0byBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5l
ckZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCB0ZXh0KTsKICAgICB0YXJnZXQtPmRp
c3BhdGNoRXZlbnQoZXZlbnQpOwogICAgIHJldHVybiAhZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA4N2QxMjc3NGNjNmYz
NGFlMDcwMTAwZDE5ZWViNzY1NjVmMjUwNzlkLi43ZDJjOTNhM2MwZjk4MWY4MDU5ZWE4YjdmMzg2
YmZhNmZlMGMwMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zODAy
LDcgKzM4MDIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVGV4dElucHV0RXZlbnQoY29u
c3QgU3RyaW5nJiB0ZXh0LCBFdmVudCogdW5kZXJseWluZ0V2ZQogICAgIGlmIChGcmFtZVZpZXcq
IHZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkKICAgICAgICAgdmlldy0+ZGlzYWJsZUxheWVyRmx1c2hU
aHJvdHRsaW5nVGVtcG9yYXJpbHlGb3JJbnRlcmFjdGlvbigpOwogCi0gICAgUmVmPFRleHRFdmVu
dD4gZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRv
dygpLCB0ZXh0LCBpbnB1dFR5cGUpOworICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2
ZW50OjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCB0ZXh0LCBpbnB1
dFR5cGUpOwogICAgIGV2ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQodW5kZXJseWluZ0V2ZW50KTsK
IAogICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmlu
ZGV4IGE4NDI2NWFhNzkzNmMzNDg5MmNjOWUwNzFhOTkwYjlhZDFlNTExNjguLjgyODRhNjUzMWRh
M2FhMDFkMGZmYmNlZGIwODU4MTE3MjBiNjZiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0y
MTIsNiArMjEyLDcgQEAgUmVmPEZyYW1lPiBGcmFtZTo6Y3JlYXRlKFBhZ2UqIHBhZ2UsIEhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFtZUwKIAogRnJhbWU6On5GcmFtZSgp
CiB7CisgICAgd2luZG93UHJveHkoKS5kZXN0cm95QWxsSlNXaW5kb3dQcm94aWVzKCk7CiAgICAg
c2V0VmlldyhudWxscHRyKTsKICAgICBsb2FkZXIoKS5jYW5jZWxBbmRDbGVhcigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlldy5tbQppbmRleCAxYTRj
MjliMWIwZGRhYzgyMjU3YmQ2ZjRiYTZkYzQ0ZmYzOTEyZTg5Li4xNjllNGFlNWZlNzc1Yjk4ZDI0
Y2Q0ODA2YTVhOWM1MDc4ZTEwZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NQWJzdHJhY3RWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01BYnN0cmFjdFZpZXcubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUv
RnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9XaW5kb3dQcm94
eS5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpGcmFtZSo+KF9p
bnRlcm5hbCkKIApAQCAtMTAwLDMgKzEwMSwxOSBAQCBET01BYnN0cmFjdFZpZXcgKmtpdChXZWJD
b3JlOjpBYnN0cmFjdERPTVdpbmRvdyogdmFsdWUpCiAKICAgICByZXR1cm4ga2l0KGRvd25jYXN0
PFdlYkNvcmU6OkRPTVdpbmRvdz4odmFsdWUpKTsKIH0KKworRE9NQWJzdHJhY3RWaWV3ICpraXQo
V2ViQ29yZTo6V2luZG93UHJveHkqIHdpbmRvd1Byb3h5KQoreworICAgIGlmICghd2luZG93UHJv
eHkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4ga2l0KHdpbmRvd1Byb3h5LT53
aW5kb3coKSk7Cit9CisKK1dlYkNvcmU6OldpbmRvd1Byb3h5KiB0b1dpbmRvd1Byb3h5KERPTUFi
c3RyYWN0VmlldyAqdmlldykKK3sKKyAgICBhdXRvKiB3aW5kb3cgPSBjb3JlKHZpZXcpOworICAg
IGlmICghd2luZG93IHx8ICF3aW5kb3ctPmZyYW1lKCkpCisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgcmV0dXJuICZ3aW5kb3ctPmZyYW1lKCktPndpbmRvd1Byb3h5KCk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oCmlu
ZGV4IGM0ZDczMjVjN2YyNWJiNWI4NjEyNzQxNmUzZDkwZDI4MjE0YzExOTcuLjM1OWYwNWViNGQ0
YTQzYWE1MjQyMzNlNGJiZjY2MjhkYjM2ODg2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oCkBAIC0yOCwxMSArMjgs
MTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFic3RyYWN0RE9NV2luZG93OwogY2xh
c3MgRE9NV2luZG93OworY2xhc3MgV2luZG93UHJveHk7CiB9CiAKIFdlYkNvcmU6OkRPTVdpbmRv
dyogY29yZShET01BYnN0cmFjdFZpZXcgKik7CiBET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3Jl
OjpET01XaW5kb3cqKTsKIERPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OkFic3RyYWN0RE9N
V2luZG93Kik7CitET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpXaW5kb3dQcm94eSopOwor
V2ViQ29yZTo6V2luZG93UHJveHkqIHRvV2luZG93UHJveHkoRE9NQWJzdHJhY3RWaWV3ICopOwog
CiBAaW50ZXJmYWNlIERPTUFic3RyYWN0VmlldyAoV2ViS2l0TGVnYWN5SW50ZXJuYWwpCiAtICh2
b2lkKV9kaXNjb25uZWN0RnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NRG9jdW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9j
dW1lbnQubW0KaW5kZXggNmMyZjM2ZDgyNGE5NGE2ODIzYmYyYTgxYzliZWQyMjM0ZTdhNjhmNC4u
YTdiODEzNDAwOTVmNjYzODE2NTQyZWJmODY0YWJjYzU5YmY4ZjNhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQpAQCAtODQsNiArODQsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9UcmVlV2Fsa2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dp
bmRvd1Byb3h5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1hQYXRoRXhwcmVzc2lvbi5oPgogI2ltcG9y
dCA8V2ViQ29yZS9YUGF0aE5TUmVzb2x2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvWFBhdGhSZXN1
bHQuaD4KQEAgLTE2Miw3ICsxNjMsMTAgQEAgLSAodm9pZClzZXREb2N1bWVudFVSSTooTlNTdHJp
bmcgKiluZXdEb2N1bWVudFVSSQogLSAoRE9NQWJzdHJhY3RWaWV3ICopZGVmYXVsdFZpZXcKIHsK
ICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtp
dChXVEY6OmdldFB0cihJTVBMLT5kZWZhdWx0VmlldygpKSk7CisgICAgYXV0byogZGVmYXVsdFZp
ZXcgPSBJTVBMLT5kZWZhdWx0VmlldygpOworICAgIGlmICghZGVmYXVsdFZpZXcpCisgICAgICAg
IHJldHVybiBuaWw7CisgICAgcmV0dXJuIGtpdChkZWZhdWx0Vmlldy0+d2luZG93KCkpOwogfQog
CiAtIChET01TdHlsZVNoZWV0TGlzdCAqKXN0eWxlU2hlZXRzCkBAIC02ODQsNyArNjg4LDcgQEAg
LSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKWdldENvbXB1dGVkU3R5bGU6KERPTUVsZW1lbnQg
KillbGVtZW50IHBzZXVkb0VsZW1lbnQKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByYWlzZVR5cGVFcnJvckV4Y2Vw
dGlvbigpOwotICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogZHYgPSBJTVBMLT5kZWZhdWx0Vmlldygp
OworICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogZHYgPSBJTVBMLT5kb21XaW5kb3coKTsKICAgICBp
ZiAoIWR2KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIo
ZHYtPmdldENvbXB1dGVkU3R5bGUoKmNvcmUoZWxlbWVudCksIHBzZXVkb0VsZW1lbnQpKSk7CkBA
IC02OTgsNyArNzAyLDcgQEAgLSAoRE9NQ1NTUnVsZUxpc3QgKilnZXRNYXRjaGVkQ1NTUnVsZXM6
KERPTUVsZW1lbnQgKillbGVtZW50IHBzZXVkb0VsZW1lbnQ6KE5TU3QKIC0gKERPTUNTU1J1bGVM
aXN0ICopZ2V0TWF0Y2hlZENTU1J1bGVzOihET01FbGVtZW50ICopZWxlbWVudCBwc2V1ZG9FbGVt
ZW50OihOU1N0cmluZyAqKXBzZXVkb0VsZW1lbnQgYXV0aG9yT25seTooQk9PTClhdXRob3JPbmx5
CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNv
cmU6OkRPTVdpbmRvdyogZHYgPSBJTVBMLT5kZWZhdWx0VmlldygpOworICAgIFdlYkNvcmU6OkRP
TVdpbmRvdyogZHYgPSBJTVBMLT5kb21XaW5kb3coKTsKICAgICBpZiAoIWR2KQogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoZHYtPmdldE1hdGNoZWRDU1NS
dWxlcyhjb3JlKGVsZW1lbnQpLCBwc2V1ZG9FbGVtZW50LCBhdXRob3JPbmx5KSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQppbmRl
eCA5NzdlYjRhNmI4Mjk2N2Q0ZDhiZGQ4YmVmYjNiMDE5N2Q1NDllNjg2Li5kNWFiMDExZjhmZjMx
ZTYyMGY5NzA0YzA3ZGM1Njg0OTAzNWM2ZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9XaW5kb3dQcm94eS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCkBAIC0xNDgsNyArMTQ5LDEwIEBAIC0gKERPTURv
Y3VtZW50ICopY29udGVudERvY3VtZW50CiAtIChET01BYnN0cmFjdFZpZXcgKiljb250ZW50V2lu
ZG93CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJl
dHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y29udGVudFdpbmRvdygpKSk7CisgICAgYXV0byog
Y29udGVudFdpbmRvdyA9IElNUEwtPmNvbnRlbnRXaW5kb3coKTsKKyAgICBpZiAoIWNvbnRlbnRX
aW5kb3cpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIGtpdChjb250ZW50V2luZG93
LT53aW5kb3coKSk7CiB9CiAKIC0gKE5TU3RyaW5nICopbG9jYXRpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbQppbmRleCBiMWIy
YzAzMThiMjBiNzI4YmU1MTc3NjEyYzRhYzdhMzlkNzIxYTZkLi42ZWEzNzNhYzMyMjY3ZjAwYzQz
NWI2NmZlY2M0OTBjYTY2ZTQyOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTElGcmFtZUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dp
bmRvd1Byb3h5Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
Q29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCkBAIC0xOTYsNyArMTk3LDEwIEBAIC0gKERPTURvY3Vt
ZW50ICopY29udGVudERvY3VtZW50CiAtIChET01BYnN0cmFjdFZpZXcgKiljb250ZW50V2luZG93
CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVy
biBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y29udGVudFdpbmRvdygpKSk7CisgICAgYXV0byogY29u
dGVudFdpbmRvdyA9IElNUEwtPmNvbnRlbnRXaW5kb3coKTsKKyAgICBpZiAoIWNvbnRlbnRXaW5k
b3cpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIGtpdChjb250ZW50V2luZG93LT53
aW5kb3coKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01LZXlib2FyZEV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUtleWJvYXJkRXZlbnQubW0KaW5kZXggZTlhYjFmZWZlNzRkOTczNGVhYzI4NDE2YjA5ZWYyMzEw
ZmNmYzcxYi4uYmEyZmJlNGUxODlkNjEzNmVlZDczNWVmZmZlNzEyMGI3Zjk2OTU4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0KQEAgLTEx
MCwyNSArMTEwLDI1IEBAIC0gKEJPT0wpZ2V0TW9kaWZpZXJTdGF0ZTooTlNTdHJpbmcgKilrZXlJ
ZGVudGlmaWVyQXJnCiAtICh2b2lkKWluaXRLZXlib2FyZEV2ZW50OihOU1N0cmluZyAqKXR5cGUg
Y2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihCT09MKWNhbmNlbGFibGUgdmll
dzooRE9NQWJzdHJhY3RWaWV3ICopdmlldyBrZXlJZGVudGlmaWVyOihOU1N0cmluZyAqKWluS2V5
SWRlbnRpZmllciBsb2NhdGlvbjoodW5zaWduZWQpaW5Mb2NhdGlvbiBjdHJsS2V5OihCT09MKWlu
Q3RybEtleSBhbHRLZXk6KEJPT0wpaW5BbHRLZXkgc2hpZnRLZXk6KEJPT0wpaW5TaGlmdEtleSBt
ZXRhS2V5OihCT09MKWluTWV0YUtleSBhbHRHcmFwaEtleTooQk9PTClpbkFsdEdyYXBoS2V5CiB7
CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmlu
aXRLZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29yZSh2aWV3KSwg
aW5LZXlJZGVudGlmaWVyLCBpbkxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0
S2V5LCBpbk1ldGFLZXksIGluQWx0R3JhcGhLZXkpOworICAgIElNUEwtPmluaXRLZXlib2FyZEV2
ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2aWV3KSwgaW5L
ZXlJZGVudGlmaWVyLCBpbkxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5
LCBpbk1ldGFLZXksIGluQWx0R3JhcGhLZXkpOwogfQogCiAtICh2b2lkKWluaXRLZXlib2FyZEV2
ZW50OihOU1N0cmluZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxl
OihCT09MKWNhbmNlbGFibGUgdmlldzooRE9NQWJzdHJhY3RWaWV3ICopdmlldyBrZXlJZGVudGlm
aWVyOihOU1N0cmluZyAqKWluS2V5SWRlbnRpZmllciBsb2NhdGlvbjoodW5zaWduZWQpaW5Mb2Nh
dGlvbiBjdHJsS2V5OihCT09MKWluQ3RybEtleSBhbHRLZXk6KEJPT0wpaW5BbHRLZXkgc2hpZnRL
ZXk6KEJPT0wpaW5TaGlmdEtleSBtZXRhS2V5OihCT09MKWluTWV0YUtleQogewogICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0S2V5Ym9hcmRF
dmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUodmlldyksIGluS2V5SWRlbnRp
ZmllciwgaW5Mb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRh
S2V5KTsKKyAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNl
bGFibGUsIHRvV2luZG93UHJveHkodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5Mb2NhdGlvbiwg
aW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5KTsKIH0KIAogLSAodm9p
ZClpbml0S2V5Ym9hcmRFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5C
dWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAq
KXZpZXcga2V5SWRlbnRpZmllcjooTlNTdHJpbmcgKilpbktleUlkZW50aWZpZXIga2V5TG9jYXRp
b246KHVuc2lnbmVkKWluS2V5TG9jYXRpb24gY3RybEtleTooQk9PTClpbkN0cmxLZXkgYWx0S2V5
OihCT09MKWluQWx0S2V5IHNoaWZ0S2V5OihCT09MKWluU2hpZnRLZXkgbWV0YUtleTooQk9PTClp
bk1ldGFLZXkgYWx0R3JhcGhLZXk6KEJPT0wpaW5BbHRHcmFwaEtleQogewogICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVu
dCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUodmlldyksIGluS2V5SWRlbnRpZmll
ciwgaW5LZXlMb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRh
S2V5LCBpbkFsdEdyYXBoS2V5KTsKKyAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBj
YW5CdWJibGUsIGNhbmNlbGFibGUsIHRvV2luZG93UHJveHkodmlldyksIGluS2V5SWRlbnRpZmll
ciwgaW5LZXlMb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRh
S2V5LCBpbkFsdEdyYXBoS2V5KTsKIH0KIAogLSAodm9pZClpbml0S2V5Ym9hcmRFdmVudDooTlNT
dHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTClj
YW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKXZpZXcga2V5SWRlbnRpZmllcjooTlNT
dHJpbmcgKilpbktleUlkZW50aWZpZXIga2V5TG9jYXRpb246KHVuc2lnbmVkKWluS2V5TG9jYXRp
b24gY3RybEtleTooQk9PTClpbkN0cmxLZXkgYWx0S2V5OihCT09MKWluQWx0S2V5IHNoaWZ0S2V5
OihCT09MKWluU2hpZnRLZXkgbWV0YUtleTooQk9PTClpbk1ldGFLZXkKIHsKICAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+aW5pdEtleWJvYXJkRXZl
bnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBjb3JlKHZpZXcpLCBpbktleUlkZW50aWZp
ZXIsIGluS2V5TG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0
YUtleSk7CisgICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluS2V5TG9jYXRp
b24sIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSk7CiB9CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KaW5kZXgg
N2M3ZTBkZGZmMTQyMTYxZWU0OGU2Nzc3MDI1ZTdmNzBlODUzYTgxMy4uZTUxNWQ4OTM1YzE3N2Q0
NzEwOTRhODRjNWNmYjhkNjRkYjI5NDM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTU1vdXNlRXZlbnQubW0KQEAgLTE0NSw3ICsxNDUsNyBAQCAtICh2b2lkKWluaXRNb3Vz
ZUV2ZW50OihOU1N0cmluZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxh
YmxlOihCTwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBE
T01Ob2RlKiBpblJlbGF0ZWRUYXJnZXRPYmpDID0gaW5SZWxhdGVkVGFyZ2V0OwogICAgIFdlYkNv
cmU6Ok5vZGUqIGluUmVsYXRlZFRhcmdldE5vZGUgPSBjb3JlKGluUmVsYXRlZFRhcmdldE9iakMp
OwotICAgIElNUEwtPmluaXRNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwg
Y29yZSh2aWV3KSwgZGV0YWlsLCBpblNjcmVlblgsIGluU2NyZWVuWSwgaW5DbGllbnRYLCBpbkNs
aWVudFksIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwgaW5CdXR0
b24sIGluUmVsYXRlZFRhcmdldE5vZGUpOworICAgIElNUEwtPmluaXRNb3VzZUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2aWV3KSwgZGV0YWlsLCBpblNj
cmVlblgsIGluU2NyZWVuWSwgaW5DbGllbnRYLCBpbkNsaWVudFksIGluQ3RybEtleSwgaW5BbHRL
ZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwgaW5CdXR0b24sIGluUmVsYXRlZFRhcmdldE5vZGUp
OwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
VGV4dEV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5t
bQppbmRleCAyODY3YmM4MDIzOTE2YTdlNjc4MGZhM2ViNzEyMGM5YzkxYWQyYTQyLi5kZmE3NjIw
MjRiNTY2MjJjZTViMjk5MWRmMzEyZGZkNTM4NzBkMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0KQEAgLTUwLDcgKzUwLDcgQEAgLSAoTlNTdHJpbmcg
KilkYXRhCiAtICh2b2lkKWluaXRUZXh0RXZlbnQ6KE5TU3RyaW5nICopdHlwZUFyZyBjYW5CdWJi
bGVBcmc6KEJPT0wpY2FuQnViYmxlQXJnIGNhbmNlbGFibGVBcmc6KEJPT0wpY2FuY2VsYWJsZUFy
ZyB2aWV3QXJnOihET01BYnN0cmFjdFZpZXcgKil2aWV3QXJnIGRhdGFBcmc6KE5TU3RyaW5nICop
ZGF0YUFyZwogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBJTVBMLT5pbml0VGV4dEV2ZW50KHR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFy
ZywgY29yZSh2aWV3QXJnKSwgZGF0YUFyZyk7CisgICAgSU1QTC0+aW5pdFRleHRFdmVudCh0eXBl
QXJnLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsIHRvV2luZG93UHJveHkodmlld0FyZyks
IGRhdGFBcmcpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NVUlFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2
ZW50Lm1tCmluZGV4IGE0NjRkYWNmYmY1MTI2NmJhOTJlNTk3NzE5MjlkODYzMWYyZjE2NDAuLjkx
MDM3OWU2NTlmZGM5MjVjYjNjM2MyMDQ0ZmI0N2Q2ODg3ZTA0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCkBAIC00NSw3ICs0NSw5IEBAIEBpbXBsZW1lbnRh
dGlvbiBET01VSUV2ZW50CiAtIChET01BYnN0cmFjdFZpZXcgKil2aWV3CiB7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQ
dHIoSU1QTC0+dmlldygpKSk7CisgICAgaWYgKCFJTVBMLT52aWV3KCkpCisgICAgICAgIHJldHVy
biBuaWw7CisgICAgcmV0dXJuIGtpdChJTVBMLT52aWV3KCktPndpbmRvdygpKTsKIH0KIAogLSAo
aW50KWRldGFpbApAQCAtMTAzLDcgKzEwNSw3IEBAIC0gKGludCl3aGljaAogLSAodm9pZClpbml0
VUlFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2Vs
YWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKWluVmlldyBkZXRh
aWw6KGludClpbkRldGFpbAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICBJTVBMLT5pbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUs
IGNvcmUoaW5WaWV3KSwgaW5EZXRhaWwpOworICAgIElNUEwtPmluaXRVSUV2ZW50KHR5cGUsIGNh
bkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eShpblZpZXcpLCBpbkRldGFpbCk7CiB9
CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01XaGVl
bEV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQubW0K
aW5kZXggOGYwNTY5Y2E2YTNmOTU4Yzc0MWY2ZDg4MzU4ZmZmZDE2MGIxOGFjOC4uZGQ0YTU3YjBm
MzJiNzdiNDMwYjZkZDljZDViMTUyMzRlNWE0MzRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQubW0KQEAgLTk2LDcgKzk2LDcgQEAgLSAoQk9PTClpc0hv
cml6b250YWwKIC0gKHZvaWQpaW5pdFdoZWVsRXZlbnQ6KGludClpbldoZWVsRGVsdGFYIHdoZWVs
RGVsdGFZOihpbnQpaW5XaGVlbERlbHRhWSB2aWV3OihET01BYnN0cmFjdFZpZXcgKil2aWV3IHNj
cmVlblg6KGludClzY3JlZW5YIHNjcmVlblk6KGludClzY3JlZW5ZIGNsaWVudFg6KGludCljbGll
bnRYIGNsaWVudFk6KGludCljbGllbnRZIGN0cmxLZXk6KEJPT0wpY3RybEtleSBhbHRLZXk6KEJP
T0wpYWx0S2V5IHNoaWZ0S2V5OihCT09MKXNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wpbWV0YUtleQog
ewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5p
bml0V2ViS2l0V2hlZWxFdmVudChpbldoZWVsRGVsdGFYLCBpbldoZWVsRGVsdGFZLCBjb3JlKHZp
ZXcpLCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXks
IHNoaWZ0S2V5LCBtZXRhS2V5KTsKKyAgICBJTVBMLT5pbml0V2ViS2l0V2hlZWxFdmVudChpbldo
ZWVsRGVsdGFYLCBpbldoZWVsRGVsdGFZLCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBzY3JlZW5YLCBz
Y3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRh
S2V5KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9N
Q29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMu
Y3BwCmluZGV4IDFiNDNkZDlmNGNhMTM1YjJkMWM0ZDRjNDY5Zjg2ODU1NWM0N2U5NjYuLmIyNTI2
MWY3ZGZjZTFiN2NmNDcxYTlkMWYyM2NiMDg3YjI1NzdhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKQEAgLTgwMiw3ICs4MDIsNyBAQCBIUkVTVUxUIERP
TURvY3VtZW50OjpnZXRDb21wdXRlZFN0eWxlKF9Jbl9vcHRfIElET01FbGVtZW50KiBlbHQsIF9J
bl8gQlNUUiBwc2V1ZAogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
IAotICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogZHYgPSBtX2RvY3VtZW50LT5kZWZhdWx0Vmlldygp
OworICAgIGF1dG8qIGR2ID0gbV9kb2N1bWVudC0+ZG9tV2luZG93KCk7CiAgICAgU3RyaW5nIHBz
ZXVkb0VsdFN0cmluZyhwc2V1ZG9FbHQpOwogICAgIAogICAgIGlmICghZHYpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338884</attachid>
            <date>2018-04-26 10:06:19 -0700</date>
            <delta_ts>2018-04-26 10:14:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185022-20180426100619.patch</filename>
            <type>text/plain</type>
            <size>132490</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNmYmU3ZTk5YzEwNmQx
NzM1Nzc3MGZmMTQxMzkwZjdlODNmNmU2My4uYWM4MDhlYTIzNDlkYzE2MzM0MWFkMmRkY2ZiOTIz
OWJkMjQ0MjQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxOC0wNC0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94eSBp
bnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHVzaW5nIERPTVdpbmRvdyBpbiBhbGwgb2Ygb3Vy
IElETCBmaWxlcyBhbmQgdXNlIFdpbmRvd1Byb3h5IGFzCisgICAgICAgIHBlciB0aGVpciByZXNw
ZWN0aXZlIHNwZWNpZmljYXRpb25zLiBBcyBhIHJlc3VsdCwgdGhlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGFzIGFsc28gdXBkYXRlZCB0byB1c2UgV2luZG93UHJveHkgdHlwZSBpbnN0ZWFkIG9m
IERPTVdpbmRvdy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXaW5kb3dQcm94eTo6d2luZG93UHJveHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9XaW5kb3dQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eTo6
fldpbmRvd1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpkZXN0cm95QWxs
SlNXaW5kb3dQcm94aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpnbG9iYWxP
YmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpXaW5kb3dQcm94eTo6ZnJhbWUgY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKElzQnVpbHRpblR5cGUpOgorICAgICAg
ICAoQ29tcHV0ZUlzQ2FsbGJhY2tJbnRlcmZhY2UpOgorICAgICAgICAoQ29tcHV0ZUlzQ2FsbGJh
Y2tGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChBZGRUb0luY2x1ZGVzRm9ySURMVHlwZSk6CisgICAgICAgIChHZXRCYXNl
SURMVHlwZSk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWVET01Db252ZXJ0TmVlZHNTdGF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RPdmVybG9hZERpc3BhdGNoZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50
KToKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5oOgorICAgICAgICAqIGRvbS9Db21w
b3NpdGlvbkV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmRlZmF1bHRWaWV3IGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudFRvdWNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VG91Y2g6OmNyZWF0ZVRv
dWNoKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRUb3VjaC5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudFRvdWNoLmlkbDoKKyAgICAgICAgKiBkb20vRm9jdXNFdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb2N1c0V2ZW50OjpGb2N1c0V2ZW50KToKKyAgICAgICAgKiBkb20vRm9jdXNFdmVu
dC5oOgorICAgICAgICAqIGRvbS9JbnB1dEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0RXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEV2ZW50OjpJbnB1dEV2
ZW50KToKKyAgICAgICAgKiBkb20vSW5wdXRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2Fy
ZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OktleWJvYXJkRXZlbnQ6OmNoYXJDb2RlIGNvbnN0KToKKyAgICAgICAgKiBkb20vS2V5
Ym9hcmRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmlkbDoKKyAgICAgICAg
KiBkb20vTWVzc2FnZUV2ZW50Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5pZGw6Cisg
ICAgICAgICogZG9tL01vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayk6CisgICAgICAgICogZG9t
L01vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5pZGw6CisgICAgICAgICog
ZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRl
ZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0
ZWRFdmVudDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6ZnJh
bWVWaWV3RnJvbVdpbmRvd1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2
ZW50Ojppbml0Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZl
bnQ6OmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUGFnZUxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpsb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyBj
b25zdCk6CisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50Lmg6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAqIGRvbS9TaW11bGF0ZWRDbGljay5jcHA6CisgICAgICAgICog
ZG9tL1RleHRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3ApOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEV2ZW50OjpUZXh0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50Ojppbml0
VGV4dEV2ZW50KToKKyAgICAgICAgKiBkb20vVGV4dEV2ZW50Lmg6CisgICAgICAgICogZG9tL1Rl
eHRFdmVudC5pZGw6CisgICAgICAgICogZG9tL1RvdWNoRXZlbnQuaWRsOgorICAgICAgICAqIGRv
bS9VSUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVJRXZlbnQ6OlVJRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VUlFdmVudDo6aW5pdFVJRXZlbnQpOgorICAgICAgICAqIGRvbS9VSUV2
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpVSUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VUlFdmVudDo6dmlldyBjb25zdCk6CisgICAgICAgICogZG9tL1VJRXZlbnQuaWRsOgor
ICAgICAgICAqIGRvbS9VSUV2ZW50SW5pdC5oOgorICAgICAgICAqIGRvbS9VSUV2ZW50SW5pdC5p
ZGw6CisgICAgICAgICogZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlVJRXZlbnRXaXRoS2V5U3RhdGU6OlVJRXZlbnRXaXRoS2V5U3RhdGUpOgorICAgICAgICAq
IGRvbS9XaGVlbEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OldoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2ZW50KToKKyAgICAgICAgKiBk
b20vV2hlZWxFdmVudC5oOgorICAgICAgICAqIGRvbS9XaGVlbEV2ZW50LmlkbDoKKyAgICAgICAg
KiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3Rl
QXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRDb21wb3NpdGlvbik6CisgICAgICAgICog
aHRtbC9IVE1MRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50Ojpu
YW1lZEl0ZW0pOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGw6
CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50V2luZG93IGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50
OjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3N0TWVzc2Fn
ZVRpbWVyOjpQb3N0TWVzc2FnZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc3RNZXNzYWdl
VGltZXI6OmV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2Up
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlVGV4dElucHV0RXZlbnQpOgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6fkZyYW1lKToKKyAgICAgICAgVXBkYXRlIEZyYW1lIGRlc3RydWN0
b3IgdG8gZGVzdHJveSBhbGwgaXRzIEpTV2luZG93UHJveGllcyBiZWZvcmUgZG9pbmcgYW55dGhp
bmcgZWxzZS4KKyAgICAgICAgQmVjYXVzZSByZWZpbmcgYSBXaW5kb3dQcm94eSBhY3R1YWxseSBy
ZWZzIGl0cyBmcmFtZSwgaXQgaXMgcG9zc2libGUgdGhhdCB3aGVuIGEgSlMKKyAgICAgICAgb2Jq
ZWN0IGlzIHN3ZXB0LCBpdHMgZGVzdHJveXMgYSBXaW5kb3dQcm94eSwgd2hpY2ggZGVzdHJveXMg
YSBGcmFtZS4gVGhlIEZyYW1lIGRlc3RydWN0b3IKKyAgICAgICAgd291bGQgdGhlbiBjYWxsIEZy
YW1lTG9hZGVyOjpjYW5jZWxBbmRDbGVhcigpIHdoaWNoIHdvdWxkIGVuZCB1cCBjYWxsaW5nIFNj
cmlwdENvbnRyb2xsZXI6OmVuYWJsZUV2YWwoKQorICAgICAgICBhbmQgYWNjZXNzaW5nIEpTV2lu
ZG93UHJveHk6OndpbmRvdygpLiBUaGlzIHdvdWxkIGhpdCBhbiBhc3NlcnRpb24gd2hlbiBkb2lu
ZyB0aGUganNDYXN0KCkgaW4KKyAgICAgICAgSlNDZWxsOjpjbGFzc0luZm8oSlNDOjpWTSYpOgor
ICAgICAgICBBU1NFUlQodm0uaGVhcC5tdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OlN3
ZWVwaW5nIHx8ICF2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKwogMjAxOC0w
NC0yMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1dQRV1bR1RLXSBSZW1vdmUgV2xVbmlxdWVQdHI8d2xfZGlzcGxheT4gZm9vdGd1bgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGYzMDg5NWFiYWY2NzAwMjA3NDJkNGVmYzAzOTAx
OGRhMjc3ZTc2YWYuLjZhZDUyNWU5ODEwZWEwMjY3MmZlMWUwOTM3NTYxMWI4ZjM4NjQwMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0wNC0yNiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94
eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01BYnN0cmFjdFZpZXcubW06CisgICAg
ICAgIChraXQpOgorICAgICAgICAodG9XaW5kb3dQcm94eSk6CisgICAgICAgICogRE9NL0RPTUFi
c3RyYWN0Vmlld0ludGVybmFsLmg6CisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOgorICAg
ICAgICAoLVtET01Eb2N1bWVudCBkZWZhdWx0Vmlld10pOgorICAgICAgICAoLVtET01Eb2N1bWVu
dCBnZXRDb21wdXRlZFN0eWxlOnBzZXVkb0VsZW1lbnQ6XSk6CisgICAgICAgICgtW0RPTURvY3Vt
ZW50IGdldE1hdGNoZWRDU1NSdWxlczpwc2V1ZG9FbGVtZW50OmF1dGhvck9ubHk6XSk6CisgICAg
ICAgICogRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUhUTUxGcmFt
ZUVsZW1lbnQgY29udGVudFdpbmRvd10pOgorICAgICAgICAqIERPTS9ET01IVE1MSUZyYW1lRWxl
bWVudC5tbToKKyAgICAgICAgKC1bRE9NSFRNTElGcmFtZUVsZW1lbnQgY29udGVudFdpbmRvd10p
OgorICAgICAgICAqIERPTS9ET01LZXlib2FyZEV2ZW50Lm1tOgorICAgICAgICAoLVtET01LZXli
b2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5
SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdy
YXBoS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50
OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5
OmFsdEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50
IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmll
cjprZXlMb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdyYXBoS2V5
Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1
YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjprZXlMb2NhdGlvbjpjdHJsS2V5OmFs
dEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAqIERPTS9ET01Nb3VzZUV2ZW50Lm1t
OgorICAgICAgICAoLVtET01Nb3VzZUV2ZW50IGluaXRNb3VzZUV2ZW50OmNhbkJ1YmJsZTpjYW5j
ZWxhYmxlOnZpZXc6ZGV0YWlsOnNjcmVlblg6c2NyZWVuWTpjbGllbnRYOmNsaWVudFk6Y3RybEtl
eTphbHRLZXk6c2hpZnRLZXk6bWV0YUtleTpidXR0b246cmVsYXRlZFRhcmdldDpdKToKKyAgICAg
ICAgKiBET00vRE9NVGV4dEV2ZW50Lm1tOgorICAgICAgICAoLVtET01UZXh0RXZlbnQgaW5pdFRl
eHRFdmVudDpjYW5CdWJibGVBcmc6Y2FuY2VsYWJsZUFyZzp2aWV3QXJnOmRhdGFBcmc6XSk6Cisg
ICAgICAgICogRE9NL0RPTVVJRXZlbnQubW06CisgICAgICAgICgtW0RPTVVJRXZlbnQgdmlld10p
OgorICAgICAgICAoLVtET01VSUV2ZW50IGluaXRVSUV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxl
OnZpZXc6ZGV0YWlsOl0pOgorICAgICAgICAqIERPTS9ET01XaGVlbEV2ZW50Lm1tOgorICAgICAg
ICAoLVtET01XaGVlbEV2ZW50IGluaXRXaGVlbEV2ZW50OndoZWVsRGVsdGFZOnZpZXc6c2NyZWVu
WDpzY3JlZW5ZOmNsaWVudFg6Y2xpZW50WTpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5
Ol0pOgorCiAyMDE4LTA0LTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjMwOTIxLCByMjMwOTIzLCBy
MjMwOTI0LCByMjMwOTMyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGRkZTgwMDhk
YzE4N2YzMDI0OTk1YjJhNGJjN2Q5Y2QwY2E5ZWZjNGIuLmY5YjU5MDBmMTk5ZTU3Yzc0YWJkNDIz
YTkzMzFhZGQ4ZjQ0N2M4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxOC0wNC0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBXaW5kb3dQcm94eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVD
bGFzc2VzLmNwcDoKKyAgICAgICAgKERPTURvY3VtZW50OjpnZXRDb21wdXRlZFN0eWxlKToKKwog
MjAxOC0wNC0yMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzMDkyMSwgcjIzMDkyMywgcjIzMDkyNCwg
cjIzMDkzMiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAzMGY2NDZlYzc4ODYwMDlkMDgwYjdmY2U4NzJmOTBjMzdjMGJjNjZmLi4w
MTE0ZjIwNThmYWJhOWEyZGUwMTI4NTk3MGE2NjBhZDc0OTQ5ZGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzY1LDcgKzIz
NjUsNiBAQAogCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOTU5RTEx
QjhCQzIyQjAwNEQ5Mzg1IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcg
LyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVS
ZXF1ZXN0VHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTgzQjk2ODdCMTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk2
ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLzsgfTsKLQkJ
ODNCOUU3MEIyMDg2QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I5RTcwOTIwODZC
QTI3MDBFNUQ3NTYgLyogSlNET01Db252ZXJ0V2luZG93UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0JCNUM4ODFENUQ2RjQ1MDA1QTcx
RjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVz
Y2VuZGFudHNDb2xsZWN0aW9uLmggKi87IH07CiAJCTgzQzA1QTVCMUE2ODYyMTIwMDdFNURFQSAv
KiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9OwogCQk4M0MxRDQyNTE3OEQ1QUI0
MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0FyY0Ficy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNDMUQ0MTMxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhT
ZWdBcmNBYnMuaCAqLzsgfTsKQEAgLTk4NzcsNyArOTg3Niw2IEBACiAJCTgzQjc0RUYyMUYzRTBC
RDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVw
YWxpdmVSZXF1ZXN0VHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBL
ZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
M0I5Njg3OTE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0I5RTcwOTIwODZCQTI3MDBFNUQ3NTYgLyogSlNE
T01Db252ZXJ0V2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNET01Db252ZXJ0V2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNDMDVBNTgxQTY4NjIxMjAwN0U1REVB
IC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAv
KiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5ODM1LDcgKzE5ODMzLDYgQEAKIAkJCQk3QzhFMzRBQTFF
NEEzMzhFMDA1NENFMjMgLyogSlNET01Db252ZXJ0VmFyaWFkaWMuaCAqLywKIAkJCQk3Q0JBNUJB
NjFGMEI0QkRFMDAzNEQ3NDUgLyogSlNET01Db252ZXJ0V2ViR0wuY3BwICovLAogCQkJCTdDOEUz
NEFCMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5oICovLAotCQkJCTgzQjlF
NzA5MjA4NkJBMjcwMEU1RDc1NiAvKiBKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oICovLAogCQkJ
CTdDOEUzNEFDMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIu
aCAqLywKIAkJCSk7CiAJCQluYW1lID0gQ29udmVyc2lvbnM7CkBAIC0yODQxNiw3ICsyODQxMyw2
IEBACiAJCQkJN0M4RTM0QzQxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFVuaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRDNTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252
ZXJ0VmFyaWFkaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEM2MUU0QTMzQjAwMDU0Q0Uy
MyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODNCOUU3MEIyMDg2
QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QzhFMzRDNzFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0WFBhdGhOU1Jlc29s
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQzlFMEU0RDE2NDE5QzFFMDAzOTJCRTMgLyogSlNE
T01DU1NOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEN0MxMEQyOUE0NjMwMEI5
OTE4RiAvKiBKU0RPTUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
SURMVHlwZXMuaAppbmRleCA1ZmU3N2U4M2YyM2RhMmIxYjQyMGQxZTM5MmRlYTlkYzA3ZmIxYzgw
Li44MDU3ZGZhMTE1ODg4ZDNkYjRhMGYwYmUyNmI0YzY2MmI2OWM3ODdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL0lETFR5cGVzLmgKQEAgLTI3NCw3ICsyNzQsNiBAQCBzdHJ1Y3QgSURMU2NoZWR1bGVk
QWN0aW9uIDogSURMVHlwZTxzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPj4geyB9Owog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IElE
TFdyYXBwZXI8VD4geyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETEV2ZW50TGlz
dGVuZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJ
RExYUGF0aE5TUmVzb2x2ZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKLXN0cnVjdCBJRExXaW5kb3dQ
cm94eSA6IElETFdyYXBwZXI8SlNXaW5kb3dQcm94eT4geyB9OwogCiBzdHJ1Y3QgSURMSURCS2V5
IDogSURMV3JhcHBlcjxJREJLZXk+IHsgfTsKIHN0cnVjdCBJRExJREJLZXlEYXRhIDogSURMV3Jh
cHBlcjxJREJLZXlEYXRhPiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0V2luZG93UHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODJjMWZmNDgxOTJkZTVjMjA4MmRiN2IzZGUwYWMzYmFhNGIzNGM3Yy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIK
LSNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCi0jaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTQ29udmVydGVy
PElETFdpbmRvd1Byb3h5PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUg
PSB0cnVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9IGZh
bHNlOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgVSYmIHZhbHVlKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsKLSAgICB9Ci19
OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCmlu
ZGV4IDE4ODY3MWU0OWIxZjE0MzE1Yzk4Njc3MWQwN2JhNmY4M2UxYWJkMjcuLmE0YjE4MDVjNjUy
ZTIzMjBiZmQ3OWEwOTc5Mjc5YWNjMDg3YjY5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2luZG93UHJveHkuY3BwCkBAIC0xMTksNiArMTE5LDEyIEBAIHZvaWQgSlNXaW5k
b3dQcm94eTo6c2V0V2luZG93KEFic3RyYWN0RE9NV2luZG93JiBkb21XaW5kb3cpCiAgICAgQVNT
RVJUKHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkgPT0gd2luZG93KTsKIH0KIAorV2luZG93UHJv
eHkqIEpTV2luZG93UHJveHk6OndpbmRvd1Byb3h5KCkgY29uc3QKK3sKKyAgICBhdXRvJiB3aW5k
b3cgPSB3cmFwcGVkKCk7CisgICAgcmV0dXJuIHdpbmRvdy5mcmFtZSgpID8gJndpbmRvdy5mcmFt
ZSgpLT53aW5kb3dQcm94eSgpIDogbnVsbHB0cjsKK30KKwogdm9pZCBKU1dpbmRvd1Byb3h5Ojph
dHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKIHsKICAgICBhdXRvKiBnbG9i
YWxPYmplY3QgPSB3aW5kb3coKTsKQEAgLTEzOCwxMiArMTQ0LDYgQEAgQWJzdHJhY3RET01XaW5k
b3cmIEpTV2luZG93UHJveHk6OndyYXBwZWQoKSBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8SlNE
T01XaW5kb3dCYXNlKj4od2luZG93KS0+d3JhcHBlZCgpOwogfQogCi1BYnN0cmFjdERPTVdpbmRv
dyogSlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKFZNJiB2bSwgSlNPYmplY3QqIHZhbHVlKQotewot
ICAgIGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTV2luZG93UHJveHkqPih2bSwgdmFs
dWUpOwotICAgIHJldHVybiB3cmFwcGVyID8gJndyYXBwZXItPndyYXBwZWQoKSA6IG51bGxwdHI7
Ci19Ci0KIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBXaW5kb3dQcm94eSYgd2luZG93
UHJveHkpCiB7CiAgICAgcmV0dXJuICZ3aW5kb3dQcm94eS5qc1dpbmRvd1Byb3h5KGN1cnJlbnRX
b3JsZCgqc3RhdGUpKTsKQEAgLTE1NCw0ICsxNTQsMTQgQEAgSlNXaW5kb3dQcm94eSYgdG9KU1dp
bmRvd1Byb3h5KFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKICAgICByZXR1cm4gd2luZG93UHJveHkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiB9CiAKK1dp
bmRvd1Byb3h5KiBKU1dpbmRvd1Byb3h5Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVl
KQoreworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBpZiAob2JqZWN0
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNX
aW5kb3dQcm94eSo+KG9iamVjdCktPndpbmRvd1Byb3h5KCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2luZG93UHJveHkuaAppbmRleCAxODVhNTQ1NzhiZjgxNzdjZmNhMTc1YzZlNGIxMWY0NzQ4
YTQwOTQ4Li4zNjI0MGQ4NjZlOGYxMGRhZDYyMWRiZGQ5OWVmYjE3ZTE4MWJkZDk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oCkBAIC0yOCw3ICsyOCw5IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTUHJveHkuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zOSw3
ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJhY3RET01XaW5kb3c7
CiBjbGFzcyBBYnN0cmFjdEZyYW1lOwotY2xhc3MgV2luZG93UHJveHk7CiAKIGNsYXNzIEpTV2lu
ZG93UHJveHkgZmluYWwgOiBwdWJsaWMgSlNDOjpKU1Byb3h5IHsKICAgICB1c2luZyBCYXNlID0g
SlNDOjpKU1Byb3h5OwpAQCAtNTMsOCArNTQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2lu
ZG93KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgc2V0V2luZG93KEFi
c3RyYWN0RE9NV2luZG93Jik7CiAKKyAgICBXaW5kb3dQcm94eSogd2luZG93UHJveHkoKSBjb25z
dDsKKwogICAgIEFic3RyYWN0RE9NV2luZG93JiB3cmFwcGVkKCkgY29uc3Q7Ci0gICAgc3RhdGlj
IFdFQkNPUkVfRVhQT1JUIEFic3RyYWN0RE9NV2luZG93KiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpT
Qzo6SlNPYmplY3QqKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgV2luZG93UHJveHkqIHRv
V3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKIAogICAgIERPTVdyYXBwZXJXb3JsZCYg
d29ybGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CiAKQEAgLTcxLDEwICs3NCwxNiBAQCBwcml2YXRl
OgogLy8gSXQgaXMsIGhvd2V2ZXIsIHN0cm9uZ2x5IG93bmVkIGJ5IEFic3RyYWN0RnJhbWUgdmlh
IGl0cyBXaW5kb3dQcm94eSwgc28gd2UgY2FuIGdldCBvbmUgZnJvbSBhIFdpbmRvd1Byb3h5Lgog
V0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBXaW5kb3dQ
cm94eSYpOwogaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
V2luZG93UHJveHkqIHdpbmRvd1Byb3h5KSB7IHJldHVybiB3aW5kb3dQcm94eSA/IHRvSlMoc3Rh
dGUsICp3aW5kb3dQcm94eSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1pbmxpbmUgSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBSZWZQdHI8V2luZG93UHJveHk+JiB3
aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwgd2luZG93UHJveHkuZ2V0KCkpOyB9Citp
bmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamVjdCosIFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwg
d2luZG93UHJveHkpOyB9CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXaW5kb3dQcm94eSogd2lu
ZG93UHJveHkpIHsgcmV0dXJuIHdpbmRvd1Byb3h5ID8gdG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0
LCAqd2luZG93UHJveHkpIDogSlNDOjpqc051bGwoKTsgfQogCiBKU1dpbmRvd1Byb3h5JiB0b0pT
V2luZG93UHJveHkoV2luZG93UHJveHkmLCBET01XcmFwcGVyV29ybGQmKTsKIGlubGluZSBKU1dp
bmRvd1Byb3h5KiB0b0pTV2luZG93UHJveHkoV2luZG93UHJveHkqIHdpbmRvd1Byb3h5LCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKSB7IHJldHVybiB3aW5kb3dQcm94eSA/ICZ0b0pTV2luZG93UHJv
eHkoKndpbmRvd1Byb3h5LCB3b3JsZCkgOiBudWxscHRyOyB9CiAKIAordGVtcGxhdGU8PiBzdHJ1
Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFdpbmRvd1Byb3h5PiB7CisgICAgdXNpbmcg
V3JhcHBlckNsYXNzID0gSlNXaW5kb3dQcm94eTsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5U
eXBlID0gV2luZG93UHJveHkqOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwCmluZGV4IDhlOGY1MTM1M2VkMWY3
YTBiNWIzZjkzMDRjZjgxYzhhYWNiNzViNWUuLmFiMjQ1YjI0Nzg0YWQ3NzczODZlYzUzNDhmM2Ey
NjkyNDdlODAxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRv
d1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5j
cHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSlNXaW5kb3dQcm94
eS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgog
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtNTMsMTIgKzU0LDE2IEBAIFdpbmRvd1Byb3h5OjpX
aW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJiBmcmFtZSkKIH0KIAogV2luZG93UHJveHk6On5XaW5k
b3dQcm94eSgpCit7CisgICAgZGVzdHJveUFsbEpTV2luZG93UHJveGllcygpOworfQorCit2b2lk
IFdpbmRvd1Byb3h5OjpkZXN0cm95QWxsSlNXaW5kb3dQcm94aWVzKCkKIHsKICAgICAvLyBJdCdz
IGxpa2VseSB0aGF0IGRlc3Ryb3lpbmcgd2luZG93UHJveGllcyB3aWxsIGNyZWF0ZSBhIGxvdCBv
ZiBnYXJiYWdlLgogICAgIGlmICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIHdoaWxlICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBh
dXRvIGl0ID0gbV9qc1dpbmRvd1Byb3hpZXMuYmVnaW4oKTsKLSAgICAgICAgICAgIGl0LT52YWx1
ZS0+d2luZG93KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CiAgICAgICAgICAgICBkZXN0
cm95SlNXaW5kb3dQcm94eSgqaXQtPmtleSk7CiAgICAgICAgIH0KICAgICAgICAgY29sbGVjdEdh
cmJhZ2VBZnRlcldpbmRvd1Byb3h5RGVzdHJ1Y3Rpb24oKTsKQEAgLTkxLDYgKzk2LDExIEBAIFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU1dpbmRvd1Byb3h5Pj4gV2luZG93UHJveHk6OmpzV2luZG93UHJv
eGllc0FzVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fanNXaW5kb3dQ
cm94aWVzLnZhbHVlcygpKTsKIH0KIAorSlNET01HbG9iYWxPYmplY3QqIFdpbmRvd1Byb3h5Ojpn
bG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICByZXR1cm4ganNXaW5k
b3dQcm94eSh3b3JsZCkud2luZG93KCk7Cit9CisKIEpTV2luZG93UHJveHkmIFdpbmRvd1Byb3h5
OjpjcmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaAppbmRleCA3NzcyMjk4M2IwYTMyMmNkMDY3
ZGZiNTA2MmRhMDc3N2E2OGU2NWY4Li44NDY3MDIwOTA3NWY3MzJmNWVlMTUxMTgyN2Q2ZDhiMDgy
ZWY4ODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmgKQEAgLTIw
LDcgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU1dpbmRvd1Byb3h5Lmgi
CisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApAQCAtMzAsNyArMzAsMTAgQEAg
Y2xhc3MgRGVidWdnZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWJzdHJhY3RE
T01XaW5kb3c7CiBjbGFzcyBBYnN0cmFjdEZyYW1lOworY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7
CitjbGFzcyBKU1dpbmRvd1Byb3h5OwogCiBjbGFzcyBXaW5kb3dQcm94eSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00MCw2ICs0Myw4IEBAIHB1YmxpYzoKICAgICBleHBsaWNp
dCBXaW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJik7CiAgICAgfldpbmRvd1Byb3h5KCk7CiAKKyAg
ICBBYnN0cmFjdEZyYW1lJiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KKwogICAg
IHZvaWQgZGVzdHJveUpTV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICBQcm94
eU1hcDo6VmFsdWVzQ29uc3RJdGVyYXRvclJhbmdlIGpzV2luZG93UHJveGllcygpIGNvbnN0IHsg
cmV0dXJuIG1fanNXaW5kb3dQcm94aWVzLnZhbHVlcygpOyB9CkBAIC02MywxMCArNjgsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAoaXQgIT0gbV9qc1dpbmRvd1Byb3hpZXMuZW5kKCkpID8g
aXQtPnZhbHVlLmdldCgpIDogbnVsbHB0cjsKICAgICB9CiAKLSAgICBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCi0gICAgewotICAgICAgICBy
ZXR1cm4ganNXaW5kb3dQcm94eSh3b3JsZCkud2luZG93KCk7Ci0gICAgfQorICAgIFdFQkNPUkVf
RVhQT1JUIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJik7
CiAKICAgICB2b2lkIGNsZWFySlNXaW5kb3dQcm94aWVzTm90TWF0Y2hpbmdET01XaW5kb3coQWJz
dHJhY3RET01XaW5kb3cqLCBib29sIGdvaW5nSW50b1BhZ2VDYWNoZSk7CiAKQEAgLTgwLDYgKzgy
LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVmKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkZXJlZigpOwogCisgICAgdm9pZCBkZXN0cm95QWxsSlNXaW5kb3dQcm94
aWVzKCk7CisKIHByaXZhdGU6CiAgICAgSlNXaW5kb3dQcm94eSYgY3JlYXRlSlNXaW5kb3dQcm94
eShET01XcmFwcGVyV29ybGQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBKU1dpbmRvd1Byb3h5JiBj
cmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBt
CmluZGV4IDk1MjQyOWEwZTQ5Nzc0YmFkMjJjMWU1OGViYjJlNGVkZGJhZDNiNjMuLjJmY2ZlZTNh
N2FhOGYyMmYyNmViZGRiNmE0ZTI4ZmEwMzhiMmY0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTg5MSw3ICs4OTEsNiBAQCBz
dWIgSXNCdWlsdGluVHlwZQogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5T
UmVzb2x2ZXIiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJhbnkiOwogICAgIHJl
dHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJvYmplY3QiOwotICAgIHJldHVybiAxIGlmICR0eXBl
LT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTEwMDEsNiAr
MTAwMCw3IEBAIHN1YiBDb21wdXRlSXNDYWxsYmFja0ludGVyZmFjZQogICAgIGFzc2VydCgiTm90
IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5s
ZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5
cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsKIAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5u
YW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlw
ZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBc
IiR0eXBlTmFtZVwiIVxuIik7CkBAIC0xMDM4LDYgKzEwMzgsNyBAQCBzdWIgQ29tcHV0ZUlzQ2Fs
bGJhY2tGdW5jdGlvbgogICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUg
IklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5sZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlw
ZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsK
IAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9i
amVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlwZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9U
IGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlTmFtZVwiIVxuIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4
IDYyNmE5ZjBiMmQ2ZjA0M2NmOTJiZGYzMmYyOTYyODkyNjExNmU1ZTQuLjMwYTM3NGMyODI0ZmEy
NjA4MjQyYWEzODcxMDk4NDIwMmI1ZDBlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00MjEsMTMgKzQyMSw2IEBAIHN1
YiBBZGRUb0luY2x1ZGVzRm9ySURMVHlwZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKCR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSIpIHsKLSAgICAgICAgQWRkVG9JbmNsdWRl
cygiV2luZG93UHJveHkuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAg
QWRkVG9JbmNsdWRlcygiSlNXaW5kb3dQcm94eS5oIiwgJGluY2x1ZGVzUmVmLCAkY29uZGl0aW9u
YWwpOwotICAgICAgICBBZGRUb0luY2x1ZGVzKCJKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIiwg
JGluY2x1ZGVzUmVmLCAkY29uZGl0aW9uYWwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7CiAgICAgICAgIEFk
ZFRvSW5jbHVkZXMoIkpTRE9NQ29udmVydFN0cmluZ3MuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRp
dGlvbmFsKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjM5Myw3ICs2Mzg2LDYgQEAgc3ViIEdldEJh
c2VJRExUeXBlCiAgICAgICAgICJKU09OIiA9PiAiSURMSlNPTiIsCiAgICAgICAgICJTY2hlZHVs
ZWRBY3Rpb24iID0+ICJJRExTY2hlZHVsZWRBY3Rpb24iLAogICAgICAgICAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlIiA9PiAiSURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4iLAotICAgICAgICAiV2luZG93UHJveHkiID0+ICJJRExXaW5kb3dQcm94eSIsCiAgICAg
ICAgICJYUGF0aE5TUmVzb2x2ZXIiID0+ICJJRExYUGF0aE5TUmVzb2x2ZXI8WFBhdGhOU1Jlc29s
dmVyPiIsCiAgICAgKTsKIApAQCAtNjU1NCw3ICs2NTQ2LDYgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1
ZURPTUNvbnZlcnROZWVkc1N0YXRlCiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIkpT
T04iOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwot
ICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAgICAgCiAgICAg
cmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGJhNDViYjk4ZjIxYTYzMzkwOWQyYmU4ZTBhMWZl
MmRjNzI2YTM0NWYuLmMwNDY2YzI2NmI3MzdmNmM4ODVkMmFhZmQwNWI1ZjE2ZjY4MmQ1MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCkBAIC01NSw3ICs1NSw2IEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIK
ICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCIKICNpbmNsdWRlICJK
U0RPTVN0cmluZ0xpc3QuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpT
RE9NV2luZG93QmFzZS5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiSlNEb2N1bWVudC5oIgpAQCAtNjk1Nyw3ICs2OTU2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDlCb2QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8g
d2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8RE9NV2luZG93Pj4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwg
IndpbmRvdyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiRE9NV2luZG93Iik7
IH0pOworICAgIGF1dG8gd2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8V2luZG93UHJveHk+
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAwLCAid2luZG93IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhv
ZCIsICJXaW5kb3dQcm94eSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqd2luZG93
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNzAyOSw3
ICs3MDI4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZE92ZXIKICAgICAgICAgICAgIHJldHVybiBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2Qm9keShzdGF0ZSwgY2Fz
dGVkVGhpcywgdGhyb3dTY29wZSk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09i
amVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNUZXN0T2Jq
Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kOEJvZHkoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwotICAgICAg
ICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiAoYXNPYmplY3QoZGlzdGluZ3Vp
c2hpbmdBcmcpLT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkgfHwgYXNPYmplY3QoZGlzdGlu
Z3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU0RPTVdpbmRvdz4odm0pKSkKKyAgICAgICAgaWYgKGRp
c3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcp
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOUJvZHkoc3RhdGUsIGNhc3RlZFRo
aXMsIHRocm93U2NvcGUpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzPEpTQmxvYj4odm0pKQog
ICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDEzQm9keShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggYzgzZWVlZWRi
ZjQxNjNmODMyYmNkMjUzZWMwNTc1Njg0NmVlZDY4NC4uNzFkZGZjNDg5ZWQyZDVkYTI1NmZiNWM0
MzBiOTMyZWJkYzRmODcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMjg2LDcgKzI4Niw3IEBAIGVudW0gVGVzdENvbmZpZGVu
Y2UgeyAiaGlnaCIsICJraW5kYS1sb3ciIH07CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9k
KERPTVN0cmluZ0xpc3Q/IGxpc3RBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChz
ZXF1ZW5jZTxET01TdHJpbmc+PyBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0
aG9kKFRlc3RPYmogb2JqQXJnKTsKLSAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoRE9NV2lu
ZG93IHdpbmRvdyk7CisgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFdpbmRvd1Byb3h5IHdp
bmRvdyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKHNlcXVlbmNlPERPTVN0cmluZz4g
YXJyYXlBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChzZXF1ZW5jZTx1bnNpZ25l
ZCBsb25nPiBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmlu
ZyBzdHJBcmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCmluZGV4IDBl
MzhhNjcxOGNkMWRhZDJlNzkwMjhiODkwMDU2YTZmY2I2NDJjOTAuLjAwN2FmN2Q3MjRmNWMzZTRh
MGEzNjExMjU2NmM0ODJlZDZmZDU5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NpdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25F
dmVudC5jcHAKQEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb21wb3Np
dGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KCkgPSBkZWZhdWx0OwogCi1Db21wb3NpdGlvbkV2
ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRE9NV2luZG93
KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgOiBVSUV2ZW50KHR5cGUsIHRydWUsIHRy
dWUsIHZpZXcsIDApCitDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKKyAgICA6IFVJRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwg
MCkKICAgICAsIG1fZGF0YShkYXRhKQogewogfQpAQCAtNDUsMTIgKzQ1LDEyIEBAIENvbXBvc2l0
aW9uRXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25z
dCBJbml0JiBpbml0aWFsCiAKIENvbXBvc2l0aW9uRXZlbnQ6On5Db21wb3NpdGlvbkV2ZW50KCkg
PSBkZWZhdWx0OwogCi12b2lkIENvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCit2b2lkIENvbXBvc2l0aW9u
RXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcs
IGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxh
YmxlLCB2aWV3LCAwKTsKKyAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIFdURk1vdmUodmlldyksIDApOwogCiAgICAgbV9kYXRhID0gZGF0YTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCmluZGV4IDhmZjAyZWM5Njk3NzhiODg1YTYzMTcwMjRj
OTU3NDc2ZTAyMWIyYTYuLjNiMWM0NmQ2MzVlY2FmNmNkMDkxOTA5OGY1MDhmYzQxZTY0Y2ViY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaApAQCAtMzIsOSArMzIsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbXBvc2l0aW9uRXZlbnQgZmluYWwgOiBwdWJs
aWMgVUlFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0
cmluZyYgZGF0YSkKKyAgICBzdGF0aWMgUmVmPENvbXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBT
dHJpbmcmIGRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21wb3Np
dGlvbkV2ZW50KHR5cGUsIHZpZXcsIGRhdGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ29tcG9zaXRpb25FdmVudCh0eXBlLCBXVEZNb3ZlKHZpZXcpLCBkYXRhKSk7CiAgICAgfQog
CiAgICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbXBvc2l0aW9uRXZlbnQo
KTsKIAotICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBT
dHJpbmcmIGRhdGEpOworICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAKICAgICBTdHJpbmcgZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBDb21wb3NpdGlvbkV2ZW50KCk7Ci0gICAgQ29tcG9zaXRpb25FdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYpOworICAgIENv
bXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8V2luZG93UHJv
eHk+JiYsIGNvbnN0IFN0cmluZyYpOwogICAgIENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJvb2wgaXNDb21w
b3NpdGlvbkV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zaXRpb25FdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRp
b25FdmVudC5pZGwKaW5kZXggZDg3MjQwODgzZTI3ZDNiMzQ1ODUzOWViOTIwZjRkM2YyODcxNjZj
NC4uMjBhYWM3ZWE0NzcwZDU2NTllZDQwOTEwZDdhYTc5NTA4ZTY2MTgzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIHZvaWQg
aW5pdENvbXBvc2l0aW9uRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZp
bmVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY2Fu
QnViYmxlQXJnID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25h
bCBib29sZWFuIGNhbmNlbGFibGVBcmcgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlld0FyZyA9IG51bGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlld0FyZyA9IG51bGwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBET01TdHJpbmcgZGF0YUFyZyA9
ICJ1bmRlZmluZWQiKTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDg2ZjgzZTcy
NjQyM2FjNDU0MzVkMzJiZWYwNDk0ZTk5NDllMDU0OTkuLjc4ZjhiZTI3ZTk0MGU0OWE2MDM0OTAx
OTcyOWUzNTJkNTI5NmE2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDI4MCw2ICs0
MjgwLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnRha2VET01XaW5kb3dGcm9tKERvY3VtZW50KiBkb2N1
bWVudCkKICAgICBBU1NFUlQobV9kb21XaW5kb3ctPmZyYW1lKCkgPT0gbV9mcmFtZSk7CiB9CiAK
K1dpbmRvd1Byb3h5KiBEb2N1bWVudDo6ZGVmYXVsdFZpZXcoKSBjb25zdAoreworICAgIGlmICgh
bV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZtX2ZyYW1lLT53
aW5kb3dQcm94eSgpOworfQorCiBEb2N1bWVudCYgRG9jdW1lbnQ6OmNvbnRleHREb2N1bWVudCgp
IGNvbnN0CiB7CiAgICAgaWYgKG1fY29udGV4dERvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCBhNGZiMDJmOWUxYmNiZDQwMGIwY2M4NjUyYWJkNDA0ZjAxYzQ1OTVmLi44NWEyNTY1MjFi
N2NiNzgxNjRjYTQ4ZjYwMDFjYjY4NWIwNTdhNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
Nzk5LDcgKzc5OSw3IEBAIHB1YmxpYzoKIAogICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29u
c3QgeyByZXR1cm4gbV9kb21XaW5kb3cuZ2V0KCk7IH0KICAgICAvLyBJbiBET00gTGV2ZWwgMiwg
dGhlIERvY3VtZW50J3MgRE9NV2luZG93IGlzIGNhbGxlZCB0aGUgZGVmYXVsdFZpZXcuCi0gICAg
RE9NV2luZG93KiBkZWZhdWx0VmlldygpIGNvbnN0IHsgcmV0dXJuIGRvbVdpbmRvdygpOyB9IAor
ICAgIFdFQkNPUkVfRVhQT1JUIFdpbmRvd1Byb3h5KiBkZWZhdWx0VmlldygpIGNvbnN0OwogCiAg
ICAgRG9jdW1lbnQmIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4
dERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkgeyBtX2NvbnRleHREb2N1bWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZVdlYWtQdHIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXggMmQ1YmFh
ZDhjNjA2NDRkYTg5ZDEwN2ZkZGUxODI4Y2Q4YTQ5ZDgyYi4uMDhmNzJhOTIwMDBkM2FjMjBhNjQ0
YzBlNWJjMzQ4MmI0NzVlZGE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0xMTMsNyAr
MTEzLDcgQEAgdHlwZWRlZiAoCiAgICAgW0NFUmVhY3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJs
ZURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB3cml0ZWxuKERPTVN0cmluZy4uLiB0
ZXh0KTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24uCi0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVdpbmRvdz8gZGVmYXVsdFZpZXc7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1By
b3h5PyBkZWZhdWx0VmlldzsKICAgICBib29sZWFuIGhhc0ZvY3VzKCk7CiAgICAgW0NFUmVhY3Rp
b25zXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlc2lnbk1vZGU7CiAgICAgW0NFUmVhY3Rpb25zXSBi
b29sZWFuIGV4ZWNDb21tYW5kKERPTVN0cmluZyBjb21tYW5kSWQsIG9wdGlvbmFsIGJvb2xlYW4g
c2hvd1VJID0gZmFsc2UsIG9wdGlvbmFsIERPTVN0cmluZz8gdmFsdWUgPSBudWxsKTsgLy8gRklY
TUU6IHZhbHVlIHNob3VsZCBub3QgYmUgbnVsbGFibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRUb3VjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRU
b3VjaC5jcHAKaW5kZXggM2Q5MTIzZDhmNzUzMmNiNGRiNzlhNGExMzM1ZDVmMTcyOGNjNTA5YS4u
N2UzZWMwZmEwNmY0M2M5Y2VkYzUxOGIxMDhmNzYyYWVkYWY4Y2QzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFRvdWNoLmNwcApAQCAtMjgsMjAgKzI4LDI2IEBACiAKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJUb3VjaC5oIgogI2luY2x1ZGUgIlRvdWNoTGlzdC5oIgorI2luY2x1ZGUg
IldpbmRvd1Byb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFRvdWNoPiBEb2N1
bWVudFRvdWNoOjpjcmVhdGVUb3VjaChEb2N1bWVudCYgZG9jdW1lbnQsIERPTVdpbmRvdyogd2lu
ZG93LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQg
cGFnZVksIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZ
LCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9hdCBmb3JjZSkKK1JlZjxUb3VjaD4gRG9jdW1lbnRU
b3VjaDo6Y3JlYXRlVG91Y2goRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8V2luZG93UHJveHk+
JiYgd2luZG93LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgaWRlbnRpZmllciwgaW50IHBhZ2VY
LCBpbnQgcGFnZVksIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHJhZGl1c1gsIGludCBy
YWRpdXNZLCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9hdCBmb3JjZSkKIHsKKyAgICBGcmFtZSog
ZnJhbWU7CisgICAgaWYgKHdpbmRvdyAmJiBpczxGcmFtZT4od2luZG93LT5mcmFtZSgpKSkKKyAg
ICAgICAgZnJhbWUgPSBkb3duY2FzdDxGcmFtZT4od2luZG93LT5mcmFtZSgpKTsKKyAgICBlbHNl
CisgICAgICAgIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKKwogICAgIC8vIEZJWE1FOiBJdCdz
IG5vdCBjbGVhciBmcm9tIHRoZSBkb2N1bWVudGF0aW9uIGF0CiAgICAgLy8gaHR0cDovL2RldmVs
b3Blci5hcHBsZS5jb20vbGlicmFyeS9zYWZhcmkvI2RvY3VtZW50YXRpb24vVXNlckV4cGVyaWVu
Y2UvUmVmZXJlbmNlL0RvY3VtZW50QWRkaXRpb25zUmVmZXJlbmNlL0RvY3VtZW50QWRkaXRpb25z
L0RvY3VtZW50QWRkaXRpb25zLmh0bWwKICAgICAvLyB3aGVuIHRoaXMgbWV0aG9kIHNob3VsZCB0
aHJvdyBhbmQgbm9yIGlzIGl0IGJ5IGluc3BlY3Rpb24gb2YgaU9TIGJlaGF2aW9yLiBJdCB3b3Vs
ZCBiZSBuaWNlIHRvIHZlcmlmeSBhbnkgY2FzZXMgd2hlcmUgaXQgdGhyb3dzIHVuZGVyIGlPUwog
ICAgIC8vIGFuZCBpbXBsZW1lbnQgdGhlbSBoZXJlLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ3ODE5Ci0gICAgcmV0dXJuIFRvdWNoOjpjcmVhdGUod2luZG93
ID8gd2luZG93LT5mcmFtZSgpIDogZG9jdW1lbnQuZnJhbWUoKSwgdGFyZ2V0LCBpZGVudGlmaWVy
LCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksIHJhZGl1c1gsIHJhZGl1c1ksIHJvdGF0
aW9uQW5nbGUsIGZvcmNlKTsKKyAgICByZXR1cm4gVG91Y2g6OmNyZWF0ZShmcmFtZSwgdGFyZ2V0
LCBpZGVudGlmaWVyLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksIHJhZGl1c1gsIHJh
ZGl1c1ksIHJvdGF0aW9uQW5nbGUsIGZvcmNlKTsKIH0KIAogUmVmPFRvdWNoTGlzdD4gRG9jdW1l
bnRUb3VjaDo6Y3JlYXRlVG91Y2hMaXN0KERvY3VtZW50JiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8VG91Y2g+PiYmIHRvdWNoZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRUb3VjaC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guaApp
bmRleCBlMGRhZjUwNTJjYzk3ODUyYzhhMDRiYmE3M2U1ZjZhMTE2ZjEwZTUxLi43MmM0ODg4YjQ1
YWI0MDBlMjliYzhhZWQ4NmRlNGM1OTAzZWFjMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRUb3VjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRv
dWNoLmgKQEAgLTM0LDE1ICszNCwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IERPTVdpbmRvdzsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRXZlbnRUYXJnZXQ7CiBjbGFzcyBU
b3VjaDsKIGNsYXNzIFRvdWNoTGlzdDsKK2NsYXNzIFdpbmRvd1Byb3h5OwogCiBjbGFzcyBEb2N1
bWVudFRvdWNoIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFRvdWNoPiBjcmVhdGVUb3VjaChE
b2N1bWVudCYsIERPTVdpbmRvdyosIEV2ZW50VGFyZ2V0KiwgaW50IGlkZW50aWZpZXIsIGludCBw
YWdlWCwgaW50IHBhZ2VZLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCByYWRpdXNYLCBp
bnQgcmFkaXVzWSwgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2UpOworICAgIHN0YXRp
YyBSZWY8VG91Y2g+IGNyZWF0ZVRvdWNoKERvY3VtZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYm
LCBFdmVudFRhcmdldCosIGludCBpZGVudGlmaWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50
IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0IHJv
dGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKTsKICAgICBzdGF0aWMgUmVmPFRvdWNoTGlzdD4gY3Jl
YXRlVG91Y2hMaXN0KERvY3VtZW50JiwgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91
Y2g+PiYmKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRv
dWNoLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmlkbAppbmRleCA3YTI3
Mzc0NTg2NTQ5OTFiMTFiNTU2MzA4OWUyMTk1N2NjNGM0ZTRhLi4wNDg5YTM2YWQ2YjEyNTAzY2Ri
NDZhZjE0OGNiNTljZmFmZDY3NWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRUb3VjaC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guaWRs
CkBAIC0yMiw3ICsyMiw3IEBACiAgICAgQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTCiBdIHBhcnRp
YWwgaW50ZXJmYWNlIERvY3VtZW50IHsKICAgICAvLyBGSVhNRTogVGhpcyBoYXMgYmVlbiBkcm9w
cGVkIGZyb20gdGhlIHN0YW5kYXJkIG5vdyB0aGF0IFRvdWNoIGhhcyBhIGNvbnN0cnVjdG9yLgot
ICAgIFtOZXdPYmplY3RdIFRvdWNoIGNyZWF0ZVRvdWNoKG9wdGlvbmFsIERPTVdpbmRvdz8gd2lu
ZG93ID0gbnVsbCwgb3B0aW9uYWwgRXZlbnRUYXJnZXQ/IHRhcmdldCA9IG51bGwsCisgICAgW05l
d09iamVjdF0gVG91Y2ggY3JlYXRlVG91Y2gob3B0aW9uYWwgV2luZG93UHJveHk/IHdpbmRvdyA9
IG51bGwsIG9wdGlvbmFsIEV2ZW50VGFyZ2V0PyB0YXJnZXQgPSBudWxsLAogICAgICAgICBvcHRp
b25hbCBsb25nIGlkZW50aWZpZXIgPSAwLAogICAgICAgICBvcHRpb25hbCBsb25nIHBhZ2VYID0g
MCwgb3B0aW9uYWwgbG9uZyBwYWdlWSA9IDAsIG9wdGlvbmFsIGxvbmcgc2NyZWVuWCA9IDAsIG9w
dGlvbmFsIGxvbmcgc2NyZWVuWSA9IDAsCiAgICAgICAgIG9wdGlvbmFsIGxvbmcgd2Via2l0UmFk
aXVzWCA9IDAsIG9wdGlvbmFsIGxvbmcgd2Via2l0UmFkaXVzWSA9IDAsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRm9j
dXNFdmVudC5jcHAKaW5kZXggMTZkOGIzZmYwNzhkMDVhZDkxZTJkNjkxNDY3MTkxMjg1NWQ3YzQ4
NC4uOTg2ODc3MzI2Y2UzZmFlNGJiMDU5ZTdjMTY0ZDdiYzE4YWE5ZGZkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Gb2N1c0V2ZW50LmNwcApAQCAtNDAsOCArNDAsOCBAQCBib29sIEZvY3VzRXZlbnQ6OmlzRm9j
dXNFdmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUZvY3VzRXZlbnQ6OkZvY3Vz
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIFJlZlB0cjxFdmVudFRhcmdldD4m
JiByZWxhdGVkVGFyZ2V0KQotICAgIDogVUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIHZpZXcsIGRldGFpbCkKK0ZvY3VzRXZlbnQ6OkZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmIHJlbGF0ZWRU
YXJnZXQpCisgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92
ZSh2aWV3KSwgZGV0YWlsKQogICAgICwgbV9yZWxhdGVkVGFyZ2V0KFdURk1vdmUocmVsYXRlZFRh
cmdldCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuaAppbmRleCAwNjcyNTU3NGMwNmI5MWYy
OWZiNGY5NmEwYjFiNTYxMzRmMTk2ODU0Li5jN2E0ZGY4ZTc3NDMyY2ZlMzY0YTEzNGY4ZGU1MTUx
NmEwNTdiODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmgKQEAgLTM1LDkgKzM1LDkgQEAgY2xh
c3MgTm9kZTsKIAogY2xhc3MgRm9jdXNFdmVudCBmaW5hbCA6IHB1YmxpYyBVSUV2ZW50IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZvY3VzRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmll
dywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpCisgICAg
c3RhdGljIFJlZjxGb2N1c0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmll
dywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb2N1c0V2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCBXVEZNb3ZlKHJlbGF0ZWRUYXJnZXQpKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvY3VzRXZlbnQodHlwZSwgY2FuQnViYmxlLCBj
YW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIFdURk1vdmUocmVsYXRlZFRhcmdldCkp
KTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPEZvY3VzRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdz
KCkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEZvY3VzRXZlbnQo
KSA9IGRlZmF1bHQ7Ci0gICAgRm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCwgUmVmUHRyPEV2
ZW50VGFyZ2V0PiYmKTsKKyAgICBGb2N1c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBp
bnQsIFJlZlB0cjxFdmVudFRhcmdldD4mJik7CiAgICAgRm9jdXNFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwogCiAgICAgRXZlbnRJbnRlcmZh
Y2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9JbnB1dEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmNw
cAppbmRleCBkNDQ5Mjk0ZmVjNmJjNzk3MGQ2YzQyYzRiOTdhYjE2MWM0ZjViMWYwLi5jMTdiZjE4
ZDg4YTY3NjQ3MmExODcxNjNlN2I0NTE0Zjg0NDAwYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vSW5wdXRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZl
bnQuY3BwCkBAIC0yNiwyMCArMjYsMjAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJJbnB1dEV2ZW50LmgiCiAKLSNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEYXRh
VHJhbnNmZXIuaCIKICNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIK
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPElu
cHV0RXZlbnQ+IElucHV0RXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIFdlYkNvcmU6OkRPTVdpbmRvdyAqdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8
RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNS
YW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCitSZWY8SW5wdXRFdmVudD4gSW5wdXRF
dmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcm
IGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRv
d1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4m
JiBkYXRhVHJhbnNmZXIsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0
UmFuZ2VzLCBpbnQgZGV0YWlsKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElucHV0RXZl
bnQoZXZlbnRUeXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGF0
YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRSYW5nZXMsIGRldGFpbCkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQoZXZlbnRUeXBlLCBpbnB1dFR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNm
ZXIpLCB0YXJnZXRSYW5nZXMsIGRldGFpbCkpOwogfQogCi1JbnB1dEV2ZW50OjpJbnB1dEV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBT
dHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYgZGF0YVRyYW5zZmVyLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJhbmdlcywgaW50IGRldGFpbCkKLSAg
ICA6IFVJRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFp
bCkKK0lucHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxl
LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8
RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNS
YW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCisgICAgOiBVSUV2ZW50KGV2ZW50VHlw
ZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAgLCBt
X2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fZGF0YVRy
YW5zZmVyKGRhdGFUcmFuc2ZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1
dEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5oCmluZGV4IGNhZDhkY2U3
YjM2MjZkOWEyMjc2MzRiMzU4OTI2YzFmMTI1NDY4MWIuLmQwNTA3NjM5YzZjODljOTlkNGQzMGEx
Y2U5MzZmOTE2MWI5YzRlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuaApAQCAtMzAsOCArMzAs
OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIERh
dGFUcmFuc2ZlcjsKK2NsYXNzIFdpbmRvd1Byb3h5OwogCiBjbGFzcyBJbnB1dEV2ZW50IGZpbmFs
IDogcHVibGljIFVJRXZlbnQgewogcHVibGljOgpAQCAtMzksMTMgKzM5LDEzIEBAIHB1YmxpYzoK
ICAgICAgICAgU3RyaW5nIGRhdGE7CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8SW5wdXRFdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlu
cHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3
LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKKyAgICBz
dGF0aWMgUmVmPElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0
cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFy
Z2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKICAgICBzdGF0aWMgUmVmPElucHV0RXZlbnQ+IGNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1Ry
dXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IElucHV0RXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkpOwog
ICAgIH0KIAotICAgIElucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNv
bnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBE
T01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNv
bnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWls
KTsKKyAgICBJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBT
dHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRy
PFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+
JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQg
ZGV0YWlsKTsKICAgICBJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBj
b25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJvb2wgaXNJbnB1dEV2ZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0tleWJvYXJkRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3Bw
CmluZGV4IDRkYTEwMTc3MjVmZTg5MmNmYThkYWNmMGY1YjcwODFkY2M2Y2ZiZTkuLjRhY2I1ZjRj
ZWI3NjBlMTcwZjEwN2NlYTM4NjA5ODlmNjcyNjRlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9h
cmRFdmVudC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJLZXlib2FyZEV2ZW50LmgiCiAKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxl
ci5oIgpAQCAtOTIsOCArOTMsOCBAQCBzdGF0aWMgaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleUxv
Y2F0aW9uQ29kZSBrZXlMb2NhdGlvbkNvZGUoY29uc3QgUGxhdGZvcm1LZXlibwogCiBpbmxpbmUg
S2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudCgpID0gZGVmYXVsdDsKIAotaW5saW5lIEtleWJv
YXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXks
IERPTVdpbmRvdyogdmlldykKLSAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRUeXBlRm9y
S2V5Ym9hcmRFdmVudFR5cGUoa2V5LnR5cGUoKSksIHRydWUsIHRydWUsIGtleS50aW1lc3RhbXAo
KS5hcHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgdmlldywgMCwga2V5LmN0cmxLZXkoKSwga2V5
LmFsdEtleSgpLCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1ldGFLZXkoKSwgZmFsc2UsIGtleS5tb2Rp
ZmllcnMoKS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tLZXkpKQor
aW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50JiBrZXksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3KQorICAgIDogVUlFdmVudFdp
dGhLZXlTdGF0ZShldmVudFR5cGVGb3JLZXlib2FyZEV2ZW50VHlwZShrZXkudHlwZSgpKSwgdHJ1
ZSwgdHJ1ZSwga2V5LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3
LmNvcHlSZWYoKSwgMCwga2V5LmN0cmxLZXkoKSwga2V5LmFsdEtleSgpLCBrZXkuc2hpZnRLZXko
KSwga2V5Lm1ldGFLZXkoKSwgZmFsc2UsIGtleS5tb2RpZmllcnMoKS5jb250YWlucyhQbGF0Zm9y
bUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tLZXkpKQogICAgICwgbV91bmRlcmx5aW5nUGxhdGZv
cm1FdmVudChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4oa2V5KSkKICNp
ZiBFTkFCTEUoS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkKICAgICAsIG1fa2V5KGtleS5rZXkoKSkK
QEAgLTEwNCw3ICsxMDUsNyBAQCBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChj
b25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwgRE9NV2luZG93KgogICAgICwgbV9rZXlJ
ZGVudGlmaWVyKGtleS5rZXlJZGVudGlmaWVyKCkpCiAgICAgLCBtX2xvY2F0aW9uKGtleUxvY2F0
aW9uQ29kZShrZXkpKQogICAgICwgbV9yZXBlYXQoa2V5LmlzQXV0b1JlcGVhdCgpKQotICAgICwg
bV9pc0NvbXBvc2luZyh2aWV3ICYmIHZpZXctPmZyYW1lKCkgJiYgdmlldy0+ZnJhbWUoKS0+ZWRp
dG9yKCkuaGFzQ29tcG9zaXRpb24oKSkKKyAgICAsIG1faXNDb21wb3NpbmcodmlldyAmJiBpczxE
T01XaW5kb3c+KHZpZXctPndpbmRvdygpKSAmJiBkb3duY2FzdDxET01XaW5kb3c+KCp2aWV3LT53
aW5kb3coKSkuZnJhbWUoKSAmJiBkb3duY2FzdDxET01XaW5kb3c+KCp2aWV3LT53aW5kb3coKSku
ZnJhbWUoKS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkKICNpZiBVU0UoQVBQS0lUKQogICAg
ICwgbV9oYW5kbGVkQnlJbnB1dE1ldGhvZChrZXkuaGFuZGxlZEJ5SW5wdXRNZXRob2QoKSkKICAg
ICAsIG1fa2V5cHJlc3NDb21tYW5kcyhrZXkuY29tbWFuZHMoKSkKQEAgLTEzMiw5ICsxMzMsOSBA
QCBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgY29uc3QgSW5pdCYgaQogCiBLZXlib2FyZEV2ZW50Ojp+S2V5Ym9hcmRFdmVu
dCgpID0gZGVmYXVsdDsKIAotUmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0
ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIHBsYXRmb3JtRXZlbnQsIERPTVdpbmRvdyog
dmlldykKK1JlZjxLZXlib2FyZEV2ZW50PiBLZXlib2FyZEV2ZW50OjpjcmVhdGUoY29uc3QgUGxh
dGZvcm1LZXlib2FyZEV2ZW50JiBwbGF0Zm9ybUV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBLZXlib2FyZEV2ZW50KHBsYXRmb3Jt
RXZlbnQsIHZpZXcpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBLZXlib2FyZEV2ZW50KHBs
YXRmb3JtRXZlbnQsIFdURk1vdmUodmlldykpKTsKIH0KIAogUmVmPEtleWJvYXJkRXZlbnQ+IEtl
eWJvYXJkRXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzKCkKQEAgLTE0NywxMyArMTQ4LDEzIEBAIFJl
ZjxLZXlib2FyZEV2ZW50PiBLZXlib2FyZEV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBjb25zdCBJbml0JiBpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgS2V5Ym9hcmRF
dmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiB9CiAKLXZvaWQgS2V5Ym9hcmRF
dmVudDo6aW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsCit2b2lkIEtleWJvYXJk
RXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAg
ICAgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCB1bnNpZ25lZCBsb2NhdGlvbiwgYm9vbCBj
dHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBib29sIGFs
dEdyYXBoS2V5KQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcs
IDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92
ZSh2aWV3KSwgMCk7CiAKICAgICBtX2tleUlkZW50aWZpZXIgPSBrZXlJZGVudGlmaWVyOwogICAg
IG1fbG9jYXRpb24gPSBsb2NhdGlvbjsKQEAgLTIyNyw4ICsyMjgsOSBAQCBpbnQgS2V5Ym9hcmRF
dmVudDo6Y2hhckNvZGUoKSBjb25zdAogICAgIC8vIEZpcmVmb3g6IDAgZm9yIGtleWRvd24va2V5
dXAgZXZlbnRzLCBjaGFyYWN0ZXIgY29kZSBmb3Iga2V5cHJlc3MKICAgICAvLyBXZSBtYXRjaCBG
aXJlZm94LCB1bmxlc3MgaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eSBtb2RlLCB3aGVyZSB3ZSBh
bHdheXMgcmV0dXJuIHRoZSBjaGFyYWN0ZXIgY29kZS4KICAgICBib29sIGJhY2t3YXJkQ29tcGF0
aWJpbGl0eU1vZGUgPSBmYWxzZTsKLSAgICBpZiAodmlldygpICYmIHZpZXcoKS0+ZnJhbWUoKSkK
LSAgICAgICAgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9IHZpZXcoKS0+ZnJhbWUoKS0+ZXZl
bnRIYW5kbGVyKCkubmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25RdWlya3MoKTsKKyAg
ICBhdXRvKiB3aW5kb3cgPSB2aWV3KCkgPyB2aWV3KCktPndpbmRvdygpIDogbnVsbHB0cjsKKyAg
ICBpZiAoaXM8RE9NV2luZG93Pih3aW5kb3cpICYmIGRvd25jYXN0PERPTVdpbmRvdz4oKndpbmRv
dykuZnJhbWUoKSkKKyAgICAgICAgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9IGRvd25jYXN0
PERPTVdpbmRvdz4oKndpbmRvdykuZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkubmVlZHNLZXlib2Fy
ZEV2ZW50RGlzYW1iaWd1YXRpb25RdWlya3MoKTsKIAogICAgIGlmICghbV91bmRlcmx5aW5nUGxh
dGZvcm1FdmVudCB8fCAodHlwZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50ICYmICFi
YWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0tleWJvYXJkRXZlbnQuaAppbmRleCA4MjEwMzMwZWFiMDM0MWY0Y2E1NGNkMjVjNThiOTk1NDZm
MGIxNWE5Li4xZDNjYzI0Mzc5OWIxOWE3NDRlZTk3OGExODdlYWVhZWM4ODA1ZmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgICAg
ICBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCA9IDB4MDMKICAgICB9OwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxLZXlib2FyZEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1LZXli
b2FyZEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxL
ZXlib2FyZEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgUmVmUHRy
PFdpbmRvd1Byb3h5PiYmKTsKICAgICBzdGF0aWMgUmVmPEtleWJvYXJkRXZlbnQ+IGNyZWF0ZUZv
ckJpbmRpbmdzKCk7CiAKICAgICBzdHJ1Y3QgSW5pdCA6IHB1YmxpYyBFdmVudE1vZGlmaWVySW5p
dCB7CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfktleWJvYXJkRXZl
bnQoKTsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRLZXlib2FyZEV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
RE9NV2luZG93KiwKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRLZXlib2FyZEV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
UmVmUHRyPFdpbmRvd1Byb3h5PiYmLAogICAgICAgICBjb25zdCBTdHJpbmcmIGtleUlkZW50aWZp
ZXIsIHVuc2lnbmVkIGxvY2F0aW9uLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5
LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIGJvb2wgYWx0R3JhcGhLZXkgPSBmYWxzZSk7
CiAgICAgCkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEtleWJv
YXJkRXZlbnQoKTsKLSAgICBLZXlib2FyZEV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dCYsIERPTVdpbmRvdyopOworICAgIEtleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAgICBLZXlib2FyZEV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4gbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmlkbAppbmRleCA3NTdjMDc3OTNmNWU1ZjFlMTg0
MzhmNzhkZDQ0N2U5YTNhMWQ1MTA5Li5jZGU0NTBjMzQzNTMzNTA5MmExNzdkNmRmNjM2OGJmNjM1
MWQ3MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaWRsCkBAIC01Miw3ICs1Miw3
IEBACiAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBub3QgbWF0Y2ggdGhlIHZlcnNpb24gaW4gdGhl
IERPTSBzcGVjLgogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBh
cmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KICAgICB2b2lkIGluaXRLZXlib2FyZEV2ZW50KG9wdGlv
bmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIGJvb2xlYW4gY2FuQnVi
YmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZhbHNlLAotICAgICAg
ICBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBET01TdHJpbmcga2V5
SWRlbnRpZmllciA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGxvY2F0aW9u
ID0gMCwKKyAgICAgICAgb3B0aW9uYWwgV2luZG93UHJveHk/IHZpZXcgPSBudWxsLCBvcHRpb25h
bCBET01TdHJpbmcga2V5SWRlbnRpZmllciA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCB1bnNpZ25l
ZCBsb25nIGxvY2F0aW9uID0gMCwKICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjdHJsS2V5ID0g
ZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4g
c2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBtZXRhS2V5ID0gZmFsc2UsIG9wdGlv
bmFsIGJvb2xlYW4gYWx0R3JhcGhLZXkgPSBmYWxzZSk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZUV2ZW50LmgKaW5kZXggNTE5N2Q1YmFlMWFlMzVhYWIwNGYwY2I1MGU3NmU5ZDhmYWExOGI3OS4u
MzMwOTI3ODdkMTRhZTY1NzNlYTFiOWQxZmQ5YTdkMGVlZTBmNDAyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuaApAQCAtMjcsMTIgKzI3LDEyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJKU1ZhbHVl
SW5XcmFwcGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCisjaW5j
bHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC00MCw5ICs0MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEJsb2I7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi11c2luZyBNZXNzYWdlRXZlbnRT
b3VyY2UgPSBWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8TWVzc2FnZVBvcnQ+LCBS
ZWZQdHI8U2VydmljZVdvcmtlcj4+OwordXNpbmcgTWVzc2FnZUV2ZW50U291cmNlID0gVmFyaWFu
dDxSZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8TWVzc2FnZVBvcnQ+LCBSZWZQdHI8U2Vydmlj
ZVdvcmtlcj4+OwogI2Vsc2UKLXVzaW5nIE1lc3NhZ2VFdmVudFNvdXJjZSA9IFZhcmlhbnQ8UmVm
UHRyPERPTVdpbmRvdz4sIFJlZlB0cjxNZXNzYWdlUG9ydD4+OwordXNpbmcgTWVzc2FnZUV2ZW50
U291cmNlID0gVmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8TWVzc2FnZVBvcnQ+
PjsKICNlbmRpZgogCiBjbGFzcyBNZXNzYWdlRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAppbmRleCAwMjQzOGZkNGM0N2MzZmMyOTJlYWJm
NDdlNWM1ZTgzZjg2OTUwODIyLi5mYTQ4YzhmYTVkYTVmZGMzZTBmMmMyZjdlZmJmYTc1Y2Q4ZjU0
MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbApAQCAtMjcsOSArMjcsOSBAQAog
ICovCiAKICNpZiBkZWZpbmVkKEVOQUJMRV9TRVJWSUNFX1dPUktFUikgJiYgRU5BQkxFX1NFUlZJ
Q0VfV09SS0VSCi10eXBlZGVmIChET01XaW5kb3cgb3IgTWVzc2FnZVBvcnQgb3IgU2VydmljZVdv
cmtlcikgTWVzc2FnZUV2ZW50U291cmNlOwordHlwZWRlZiAoV2luZG93UHJveHkgb3IgTWVzc2Fn
ZVBvcnQgb3IgU2VydmljZVdvcmtlcikgTWVzc2FnZUV2ZW50U291cmNlOwogI2Vsc2UKLXR5cGVk
ZWYgKERPTVdpbmRvdyBvciBNZXNzYWdlUG9ydCkgTWVzc2FnZUV2ZW50U291cmNlOwordHlwZWRl
ZiAoV2luZG93UHJveHkgb3IgTWVzc2FnZVBvcnQpIE1lc3NhZ2VFdmVudFNvdXJjZTsKICNlbmRp
ZgogCiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKaW5kZXggYTE0N2UxMjE4YmI2ZTI0ZjJh
ZDc2NDcwNzQ2MGM2NjcwMjFmNmM1OS4uYzg5NmY4NjMxYTNkMmJiZGExOTMwNjIxMGZlZGRiODk4
NmU0Y2E2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcApAQCAtNDQsMTMgKzQ0LDEzIEBA
IFJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBjb25zdCBNb3VzZUV2ZW50SW5pCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW91c2VF
dmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiB9CiAKLVJlZjxNb3VzZUV2ZW50
PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERPTVdp
bmRvdyogdmlldywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgaW50IGRldGFpbCwg
Tm9kZSogcmVsYXRlZFRhcmdldCkKK1JlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBpbnQgZGV0YWlsLCBOb2RlKiByZWxh
dGVkVGFyZ2V0KQogewogICAgIGJvb2wgaXNNb3VzZUVudGVyT3JMZWF2ZSA9IGV2ZW50VHlwZSA9
PSBldmVudE5hbWVzKCkubW91c2VlbnRlckV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVz
KCkubW91c2VsZWF2ZUV2ZW50OwogICAgIGJvb2wgaXNDYW5jZWxhYmxlID0gZXZlbnRUeXBlICE9
IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCAmJiAhaXNNb3VzZUVudGVyT3JMZWF2ZTsKICAg
ICBib29sIGNhbkJ1YmJsZSA9ICFpc01vdXNlRW50ZXJPckxlYXZlOwogCi0gICAgcmV0dXJuIE1v
dXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGNhbkJ1YmJsZSwgaXNDYW5jZWxhYmxlLCBldmVu
dC50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgdmlldywKKyAgICByZXR1
cm4gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgY2FuQnViYmxlLCBpc0NhbmNlbGFibGUs
IGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCBXVEZNb3ZlKHZp
ZXcpLAogICAgICAgICBkZXRhaWwsIGV2ZW50Lmdsb2JhbFBvc2l0aW9uKCkueCgpLCBldmVudC5n
bG9iYWxQb3NpdGlvbigpLnkoKSwgZXZlbnQucG9zaXRpb24oKS54KCksIGV2ZW50LnBvc2l0aW9u
KCkueSgpLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIGV2ZW50Lm1vdmVtZW50
RGVsdGEoKS54KCksIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS55KCksCkBAIC01OSwxMyArNTksMTMg
QEAgUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWUKICAgICAgICAgcmVsYXRlZFRhcmdldCwgZXZlbnQu
Zm9yY2UoKSwgZXZlbnQuc3ludGhldGljQ2xpY2tUeXBlKCkpOwogfQogCi1SZWY8TW91c2VFdmVu
dD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIERPTVdpbmRv
dyogdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgs
IGludCBwYWdlWSwKK1JlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9u
aWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBkZXRhaWws
IGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCiAjaWYgRU5B
QkxFKFBPSU5URVJfTE9DSykKICAgICBpbnQgbW92ZW1lbnRYLCBpbnQgbW92ZW1lbnRZLAogI2Vu
ZGlmCiAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBt
ZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIEV2
ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0LCBkb3VibGUgZm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5
bnRoZXRpY0NsaWNrVHlwZSwgRGF0YVRyYW5zZmVyKiBkYXRhVHJhbnNmZXIsIGJvb2wgaXNTaW11
bGF0ZWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudCh0eXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgdmlldywKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCBX
VEZNb3ZlKHZpZXcpLAogICAgICAgICBkZXRhaWwsIHsgc2NyZWVuWCwgc2NyZWVuWSB9LCB7IHBh
Z2VYLCBwYWdlWSB9LAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIHsgbW92ZW1l
bnRYLCBtb3ZlbWVudFkgfSwKQEAgLTczLDE5ICs3MywxOSBAQCBSZWY8TW91c2VFdmVudD4gTW91
c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvbwogICAgICAgICBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBidXR0b24s
IGJ1dHRvbnMsIHJlbGF0ZWRUYXJnZXQsIGZvcmNlLCBzeW50aGV0aWNDbGlja1R5cGUsIGRhdGFU
cmFuc2ZlciwgaXNTaW11bGF0ZWQpKTsKIH0KIAotUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6
OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwg
aW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29s
IGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0
b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNr
VHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCitSZWY8TW91c2VFdmVudD4gTW91c2VF
dmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFp
bCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJv
b2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5z
aWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9y
dCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KQogewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIHZpZXcsIGRldGFpbCwgeyBzY3JlZW5YLCBzY3JlZW5ZIH0sIHsgY2xpZW50WCwg
Y2xpZW50WSB9LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBidXR0b24sIGJ1
dHRvbnMsIHN5bnRoZXRpY0NsaWNrVHlwZSwgcmVsYXRlZFRhcmdldCkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUs
IFdURk1vdmUodmlldyksIGRldGFpbCwgeyBzY3JlZW5YLCBzY3JlZW5ZIH0sIHsgY2xpZW50WCwg
Y2xpZW50WSB9LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBidXR0b24sIGJ1
dHRvbnMsIHN5bnRoZXRpY0NsaWNrVHlwZSwgcmVsYXRlZFRhcmdldCkpOwogfQogCiBNb3VzZUV2
ZW50OjpNb3VzZUV2ZW50KCkgPSBkZWZhdWx0OwogCi1Nb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiB2aWV3LCBpbnQgZGV0YWls
LCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IEludFBvaW50JiB3aW5kb3dM
b2NhdGlvbiwKK01vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGlt
ZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgY29uc3QgSW50
UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93TG9jYXRpb24sCiAj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgY29uc3QgSW50UG9pbnQmIG1vdmVtZW50
RGVsdGEsCiAjZW5kaWYKICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBz
aGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNo
b3J0IGJ1dHRvbnMsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0LCBkb3VibGUgZm9yY2UsIHVu
c2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRGF0YVRyYW5zZmVyKiBkYXRhVHJhbnNm
ZXIsIGJvb2wgaXNTaW11bGF0ZWQpCi0gICAgOiBNb3VzZVJlbGF0ZWRFdmVudChldmVudFR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2aWV3LCBkZXRhaWwsIHNjcmVlbkxv
Y2F0aW9uLCB3aW5kb3dMb2NhdGlvbiwKKyAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlw
ZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIFdURk1vdmUodmlldyksIGRldGFp
bCwgc2NyZWVuTG9jYXRpb24sIHdpbmRvd0xvY2F0aW9uLAogI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCiAgICAgICAgIG1vdmVtZW50RGVsdGEsCiAjZW5kaWYKQEAgLTEwMCw4ICsxMDAsOCBAQCBN
b3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZQogewogfQogCi1Nb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50JiBzY3JlZW5M
b2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExvY2F0aW9uLCBib29sIGN0cmxLZXksIGJv
b2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1
dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xp
Y2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCkKLSAgICA6IE1vdXNlUmVsYXRlZEV2
ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lOjpub3co
KSwgdmlldywgZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwgeyB9LAorTW91c2VFdmVudDo6TW91c2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBkZXRhaWwsIGNvbnN0
IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExvY2F0aW9u
LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXks
IHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWduZWQg
c2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCkKKyAg
ICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBN
b25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCBzY3JlZW5Mb2NhdGlv
biwgeyB9LAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIHsgfSwKICNlbmRpZgpA
QCAtMTI3LDEyICsxMjcsMTIgQEAgTW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgTW91c2VFdmVudEluaXQmIGluaXQKIAogTW91c2VFdmVu
dDo6fk1vdXNlRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNl
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2Ny
ZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5
LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZl
bnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCit2b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBp
bnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wg
YWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRv
biwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRj
aGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKTsKKyAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRldGFpbCk7CiAKICAgICBtX3NjcmVl
bkxvY2F0aW9uID0gSW50UG9pbnQoc2NyZWVuWCwgc2NyZWVuWSk7CiAgICAgbV9jdHJsS2V5ID0g
Y3RybEtleTsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgYwogCiAv
LyBGSVhNRTogV2UgbmVlZCB0aGlzIHF1aXJrIGJlY2F1c2UgaUFkIFByb2R1Y2VyIGlzIGNhbGxp
bmcgdGhpcyBmdW5jdGlvbiB3aXRoIGEgcmVsYXRlZFRhcmdldCB0aGF0IGlzIG5vdCBhbiBFdmVu
dFRhcmdldCAocmRhcjovL3Byb2JsZW0vMzA2NDAxMDEpLgogLy8gV2Ugc2hvdWxkIHJlbW92ZSB0
aGlzIHF1aXJrIHdoZW4gcG9zc2libGUuCi12b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50
UXVpcmsoRXhlY1N0YXRlJiBzdGF0ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5Y
LCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJv
b2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1
dHRvbiwgSlNWYWx1ZSByZWxhdGVkVGFyZ2V0VmFsdWUpCit2b2lkIE1vdXNlRXZlbnQ6OmluaXRN
b3VzZUV2ZW50UXVpcmsoRXhlY1N0YXRlJiBzdGF0ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50
IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVu
dFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtl
eSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBKU1ZhbHVlIHJlbGF0ZWRUYXJnZXRWYWx1ZSkKIHsK
ICAgICBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCA9IG51bGxwdHI7CiAjaWYgUExBVEZPUk0o
TUFDKQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRR
dWlyayhFeGVjU3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIH0KICNlbmRpZgotICAgIGluaXRNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRY
LCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBidXR0b24sIHJl
bGF0ZWRUYXJnZXQpOworICAgIGluaXRNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2Vs
YWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBj
bGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBidXR0b24sIHJlbGF0
ZWRUYXJnZXQpOwogfQogCiBFdmVudEludGVyZmFjZSBNb3VzZUV2ZW50OjpldmVudEludGVyZmFj
ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaAppbmRleCAyNmNhZjhmNmIxOTE1MTY2OGI2
ODAzNTU0YTBiMDAxNjRkM2UxZmNmLi40YjI4MDc5OTU1YjRjYjczYTJjZTE2OGViNWExMzlkNzMx
NTZhOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKQEAgLTI5LDE5ICsyOSwyMCBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhVHJhbnNmZXI7CitjbGFzcyBOb2RlOwogY2xh
c3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogCiBjbGFzcyBNb3VzZUV2ZW50IDogcHVibGljIE1vdXNl
UmVsYXRlZEV2ZW50IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1v
dXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqLCBp
bnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZ
LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9u
b3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwg
aW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKICNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBpbnQgbW92ZW1lbnRYLCBpbnQgbW92ZW1lbnRZLAog
I2VuZGlmCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXks
IGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0
b25zLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCwgZG91YmxlIGZvcmNlLCB1bnNpZ25lZCBz
aG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIERhdGFUcmFuc2ZlciogPSBudWxscHRyLCBib29sIGlz
U2ltdWxhdGVkID0gZmFsc2UpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb3Vz
ZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERPTVdpbmRvdyos
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGludCBkZXRhaWwsIE5vZGUqIHJlbGF0ZWRUYXJn
ZXQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW91c2VFdmVudD4gY3JlYXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYsIGludCBkZXRhaWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQpOwog
Ci0gICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGlu
dCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGll
bnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWdu
ZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCk7
CisgICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50
WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXks
IGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0
b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxh
dGVkVGFyZ2V0KTsKIAogICAgIHN0YXRpYyBSZWY8TW91c2VFdmVudD4gY3JlYXRlRm9yQmluZGlu
Z3MoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQpOyB9CiAKQEAgLTQ5LDggKzUw
LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+TW91c2VFdmVudCgpOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbml0TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGlu
dCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0
cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVk
IHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpOwotICAgIHZvaWQgaW5p
dE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4ZWNTdGF0ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50
IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgSlNDOjpKU1ZhbHVl
IHJlbGF0ZWRUYXJnZXQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdE1vdXNlRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxl
LCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2Ny
ZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5
LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZl
bnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpOworICAgIHZvaWQgaW5pdE1vdXNlRXZlbnRRdWlyayhK
U0M6OkV4ZWNTdGF0ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50
WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXks
IGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBKU0M6OkpTVmFsdWUgcmVsYXRl
ZFRhcmdldCk7CiAKICAgICB1bnNpZ25lZCBzaG9ydCBidXR0b24oKSBjb25zdCB7IHJldHVybiBt
X2J1dHRvbjsgfQogICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMoKSBjb25zdCB7IHJldHVybiBt
X2J1dHRvbnM7IH0KQEAgLTcwLDcgKzcxLDcgQEAgcHVibGljOgogICAgIGludCB3aGljaCgpIGNv
bnN0IGZpbmFsOwogCiBwcm90ZWN0ZWQ6Ci0gICAgTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUg
dGltZXN0YW1wLCBET01XaW5kb3cqLAorICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRp
bWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAogICAgICAgICBpbnQgZGV0YWlsLCBjb25z
dCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlv
biwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBjb25zdCBJbnRQb2ludCYgbW92
ZW1lbnREZWx0YSwKQEAgLTc4LDcgKzc5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBib29sIGN0
cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVk
IHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywKICAgICAgICAgRXZlbnRUYXJn
ZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwgdW5zaWduZWQgc2hvcnQgc3ludGhldGlj
Q2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIqLCBib29sIGlzU2ltdWxhdGVkKTsKIAotICAgIE1vdXNl
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBET01XaW5kb3cqLAorICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+
JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwg
Y29uc3QgSW50UG9pbnQmIGNsaWVudExvY2F0aW9uLAogICAgICAgICBib29sIGN0cmxLZXksIGJv
b2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksCiAgICAgICAgIHVuc2lnbmVk
IHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3lu
dGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TW91c2VFdmVudC5pZGwKaW5kZXggMGJlMGY4OGRkMzVkN2NkZmI4ZDM1NDJkYWRlMTZlMzI5NGZk
YzgzYS4uNjBjNDQ2NjY3MWYwNjE5ZmVlMDlkMGYwMTkzZjlhNDFmNmIzZTgxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Nb3VzZUV2ZW50LmlkbApAQCAtNDMsNyArNDMsNyBAQAogICAgIC8vIEZJWE1FOiByZWxh
dGVkVGFyZ2V0IHNob3VsZCBiZSBvZiB0eXBlIEV2ZW50VGFyZ2V0PyBidXQgd2UgbmVlZCB0byB1
c2UgYW55IHRvIHN1cHBvcnQgYSBxdWlyayBmb3IgaUFkIFByb2R1Y2VyIChyZGFyOi8vcHJvYmxl
bS8zMDY0MDEwMSkuCiAgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlJlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIEltcGxlbWVudGVkQXM9aW5pdE1vdXNlRXZlbnRRdWlya10gdm9pZCBpbml0TW91c2VF
dmVudChvcHRpb25hbCBET01TdHJpbmcgdHlwZSA9ICJ1bmRlZmluZWQiLAogICAgICAgICBvcHRp
b25hbCBib29sZWFuIGNhbkJ1YmJsZSA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIGNhbmNlbGFi
bGUgPSBmYWxzZSwKLSAgICAgICAgb3B0aW9uYWwgRE9NV2luZG93PyB2aWV3ID0gbnVsbCwgb3B0
aW9uYWwgbG9uZyBkZXRhaWwgPSAwLAorICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmll
dyA9IG51bGwsIG9wdGlvbmFsIGxvbmcgZGV0YWlsID0gMCwKICAgICAgICAgb3B0aW9uYWwgbG9u
ZyBzY3JlZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwgb3B0aW9uYWwgbG9uZyBj
bGllbnRYID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRZID0gMCwKICAgICAgICAgb3B0aW9uYWwg
Ym9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFsc2Us
IG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBtZXRh
S2V5ID0gZmFsc2UsCiAgICAgICAgIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiA9IDAs
IG9wdGlvbmFsIGFueSByZWxhdGVkVGFyZ2V0ID0gbnVsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01v
dXNlUmVsYXRlZEV2ZW50LmNwcAppbmRleCA4NTM3MTRkNmFiMWYwMWU4YTVlYWNlMGQwZTQzOTc1
ZWIzZDU4NDlmLi44MGE4MjY3ZGMyMWJkOGIzYmY1MTgzMGZlNGIzMGE0MmE2MTIwMTU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKQEAgLTMyLDEzICszMiwxMyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1vdXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0
ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIERPTVdpbmRvdyogRE9NV2lu
ZG93LAorTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9u
aWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNj
cmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKICNlbmRpZgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXks
IGJvb2wgbWV0YUtleSwgYm9vbCBpc1NpbXVsYXRlZCkKLSAgICA6IFVJRXZlbnRXaXRoS2V5U3Rh
dGUoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgRE9NV2luZG93
LCBkZXRhaWwsIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGZhbHNlLCBmYWxz
ZSkKKyAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNl
bGFibGUsIHRpbWVzdGFtcCwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCBjdHJsS2V5LCBhbHRLZXks
IHNoaWZ0S2V5LCBtZXRhS2V5LCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX3NjcmVlbkxvY2F0aW9u
KHNjcmVlbkxvY2F0aW9uKQogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgLCBtX21vdmVt
ZW50RGVsdGEobW92ZW1lbnREZWx0YSkKQEAgLTYxLDcgKzYxLDcgQEAgTW91c2VSZWxhdGVkRXZl
bnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25z
dCBNb3VzZVIKIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXQoYm9vbCBpc1NpbXVsYXRlZCwg
Y29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uKQogewogICAgIGlmICghaXNTaW11bGF0ZWQp
IHsKLSAgICAgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21ET01XaW5kb3co
dmlldygpKSkgeworICAgICAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJvbVdp
bmRvd1Byb3h5KHZpZXcoKSkpIHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgYWJzb2x1dGVQb2lu
dCA9IGZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyh3aW5kb3dMb2NhdGlvbik7CiAgICAgICAg
ICAgICBGbG9hdFBvaW50IGRvY3VtZW50UG9pbnQgPSBmcmFtZVZpZXctPmFic29sdXRlVG9Eb2N1
bWVudFBvaW50KGFic29sdXRlUG9pbnQpOwogICAgICAgICAgICAgbV9wYWdlTG9jYXRpb24gPSBm
bG9vcmVkTGF5b3V0UG9pbnQoZG9jdW1lbnRQb2ludCk7CkBAIC04MywxMyArODMsMTMgQEAgdm9p
ZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVzKCkKICAgICBtX2hhc0NhY2hlZFJl
bGF0aXZlUG9zaXRpb24gPSBmYWxzZTsKIH0KIAotRnJhbWVWaWV3KiBNb3VzZVJlbGF0ZWRFdmVu
dDo6ZnJhbWVWaWV3RnJvbURPTVdpbmRvdyhET01XaW5kb3cqIHdpbmRvdykKK0ZyYW1lVmlldyog
TW91c2VSZWxhdGVkRXZlbnQ6OmZyYW1lVmlld0Zyb21XaW5kb3dQcm94eShXaW5kb3dQcm94eSog
d2luZG93UHJveHkpCiB7Ci0gICAgYXV0byogZnJhbWUgPSB3aW5kb3cgPyB3aW5kb3ctPmZyYW1l
KCkgOiBudWxscHRyOwotICAgIGlmICghZnJhbWUpCisgICAgaWYgKCF3aW5kb3dQcm94eSB8fCAh
aXM8RE9NV2luZG93Pih3aW5kb3dQcm94eS0+d2luZG93KCkpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiBmcmFtZS0+dmlldygpOworICAgIGF1dG8qIGZyYW1lID0gZG93
bmNhc3Q8RE9NV2luZG93Pigqd2luZG93UHJveHktPndpbmRvdygpKS5mcmFtZSgpOworICAgIHJl
dHVybiBmcmFtZSA/IGZyYW1lLT52aWV3KCkgOiBudWxscHRyOwogfQogCiBMYXlvdXRQb2ludCBN
b3VzZVJlbGF0ZWRFdmVudDo6cGFnZVBvaW50VG9DbGllbnRQb2ludChMYXlvdXRQb2ludCBwYWdl
UG9pbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgTW91
c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGluYXRlcyhjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50
TG9jYXRpb24pCiAgICAgLy8gU2V0IHVwIGluaXRpYWwgdmFsdWVzIGZvciBjb29yZGluYXRlcy4K
ICAgICAvLyBDb3JyZWN0IHZhbHVlcyBhcmUgY29tcHV0ZWQgbGF6aWx5LCBzZWUgY29tcHV0ZVJl
bGF0aXZlUG9zaXRpb24uCiAgICAgRmxvYXRTaXplIGRvY3VtZW50VG9DbGllbnRPZmZzZXQ7Ci0g
ICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSkK
KyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXco
KSkpCiAgICAgICAgIGRvY3VtZW50VG9DbGllbnRPZmZzZXQgPSBmcmFtZVZpZXctPmRvY3VtZW50
VG9DbGllbnRPZmZzZXQoKTsKIAogICAgIG1fY2xpZW50TG9jYXRpb24gPSBjbGllbnRMb2NhdGlv
bjsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojppbml0Q29vcmRp
bmF0ZXMoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudExvY2F0aW9uKQogCiBmbG9hdCBNb3VzZVJl
bGF0ZWRFdmVudDo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3IoKSBjb25zdAogewotICAg
IGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9tRE9NV2luZG93KHZpZXcoKSkpCisg
ICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21XaW5kb3dQcm94eSh2aWV3KCkp
KQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5kb2N1bWVudFRvQWJzb2x1dGVTY2FsZUZhY3Rv
cigpOwogCiAgICAgcmV0dXJuIDE7CkBAIC0xMzYsNyArMTM2LDcgQEAgZmxvYXQgTW91c2VSZWxh
dGVkRXZlbnQ6OmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFjdG9yKCkgY29uc3QKIAogdm9pZCBN
b3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVBhZ2VMb2NhdGlvbigpCiB7Ci0gICAgbV9hYnNvbHV0
ZUxvY2F0aW9uID0gcGFnZVBvaW50VG9BYnNvbHV0ZVBvaW50KG1fcGFnZUxvY2F0aW9uLCBmcmFt
ZVZpZXdGcm9tRE9NV2luZG93KHZpZXcoKSkpOworICAgIG1fYWJzb2x1dGVMb2NhdGlvbiA9IHBh
Z2VQb2ludFRvQWJzb2x1dGVQb2ludChtX3BhZ2VMb2NhdGlvbiwgZnJhbWVWaWV3RnJvbVdpbmRv
d1Byb3h5KHZpZXcoKSkpOwogfQogCiB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50OjpyZWNlaXZlZFRh
cmdldCgpCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0
ZVJlbGF0aXZlUG9zaXRpb24oKQogICAgIAogRmxvYXRQb2ludCBNb3VzZVJlbGF0ZWRFdmVudDo6
bG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSBjb25zdAogewotICAgIGlmIChhdXRvKiBm
cmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9tRE9NV2luZG93KHZpZXcoKSkpCisgICAgaWYgKGF1dG8q
IGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21XaW5kb3dQcm94eSh2aWV3KCkpKQogICAgICAgICBy
ZXR1cm4gZnJhbWVWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocm91bmRlZEludFBvaW50KG1fYWJz
b2x1dGVMb2NhdGlvbikpOwogCiAgICAgcmV0dXJuIG1fYWJzb2x1dGVMb2NhdGlvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKaW5kZXggMGQ4M2MzNjA5ZjcxZWFmZWYyMTcx
YTljZDBkNDMxYWU2ZDg1NGY4Yi4uYWQ0ZTVkMGMzNTZmNTQxZTA4MmUxMWEyNmEyZDBjYzExNWZk
NTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKQEAgLTY3LDE0ICs2
NywxNCBAQCBwdWJsaWM6CiAgICAgLy8gdXNhYmxlIHdpdGggUmVuZGVyT2JqZWN0OjphYnNvbHV0
ZVRvTG9jYWwpLgogICAgIGNvbnN0IExheW91dFBvaW50JiBhYnNvbHV0ZUxvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9hYnNvbHV0ZUxvY2F0aW9uOyB9CiAgICAgCi0gICAgc3RhdGljIEZyYW1l
VmlldyogZnJhbWVWaWV3RnJvbURPTVdpbmRvdyhET01XaW5kb3cqKTsKKyAgICBzdGF0aWMgRnJh
bWVWaWV3KiBmcmFtZVZpZXdGcm9tV2luZG93UHJveHkoV2luZG93UHJveHkqKTsKIAogICAgIHN0
YXRpYyBMYXlvdXRQb2ludCBwYWdlUG9pbnRUb0NsaWVudFBvaW50KExheW91dFBvaW50IHBhZ2VQ
b2ludCwgRnJhbWVWaWV3Kik7CiAgICAgc3RhdGljIExheW91dFBvaW50IHBhZ2VQb2ludFRvQWJz
b2x1dGVQb2ludChMYXlvdXRQb2ludCBwYWdlUG9pbnQsIEZyYW1lVmlldyopOwogCiBwcm90ZWN0
ZWQ6CiAgICAgTW91c2VSZWxhdGVkRXZlbnQoKSA9IGRlZmF1bHQ7Ci0gICAgTW91c2VSZWxhdGVk
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiwKKyAgICBNb3VzZVJl
bGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+
JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwg
Y29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CiAgICAgICAgIGNvbnN0IEludFBvaW50JiBtb3ZlbWVudERlbHRhLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmlu
ZGV4IDRiMWU4NzI1Nzk1MzNmYmY3ODcxMmZkNmQyM2QyYzgxNWIwM2ViMzguLmM5MTkwN2NkZDRh
NDhiMTcyZWEzYTJkZWUxZTg4MDc4MGJlNWRlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlICJDb21wb3NlZFRyZWVBbmNlc3Rvckl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEYXRhVHJhbnNm
ZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0
b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltdWxhdGVkQ2xpY2suY3BwCmluZGV4IGUwZjRlMzUyZWNh
MThkY2RjODU5MjQ5MmVjNTA4NDI5MjhhYjY1NzQuLjQxN2U5MDdiZjI4ODFiNmE4N2Y2MWQ2MDkx
NmI2N2U2OGViOWMxMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRD
bGljay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRlZENsaWNrLmNwcApAQCAt
MzcsMTQgKzM3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2ltdWxhdGVkTW91
c2VFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgRE9NV2luZG93KiB2aWV3LCBSZWZQdHI8RXZlbnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBF
bGVtZW50JiB0YXJnZXQsIFNpbXVsYXRlZENsaWNrU291cmNlIHNvdXJjZSkKKyAgICBzdGF0aWMg
UmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIFJlZlB0cjxFdmVudD4mJiB1bmRlcmx5
aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVkQ2xpY2tTb3VyY2Ugc291cmNlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2ltdWxhdGVkTW91c2VFdmVudChl
dmVudFR5cGUsIHZpZXcsIFdURk1vdmUodW5kZXJseWluZ0V2ZW50KSwgdGFyZ2V0LCBzb3VyY2Up
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2ltdWxhdGVkTW91c2VFdmVudChldmVu
dFR5cGUsIFdURk1vdmUodmlldyksIFdURk1vdmUodW5kZXJseWluZ0V2ZW50KSwgdGFyZ2V0LCBz
b3VyY2UpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU2ltdWxhdGVkTW91c2VFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWV3LCBSZWZQdHI8RXZlbnQ+
JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQsIFNpbXVsYXRlZENsaWNrU291cmNl
IHNvdXJjZSkKLSAgICAgICAgOiBNb3VzZUV2ZW50KGV2ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwgdW5k
ZXJseWluZ0V2ZW50ID8gdW5kZXJseWluZ0V2ZW50LT50aW1lU3RhbXAoKSA6IE1vbm90b25pY1Rp
bWU6Om5vdygpLCB2aWV3LCAwLCB7IH0sIHsgfSwKKyAgICBTaW11bGF0ZWRNb3VzZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywg
UmVmUHRyPEV2ZW50PiYmIHVuZGVybHlpbmdFdmVudCwgRWxlbWVudCYgdGFyZ2V0LCBTaW11bGF0
ZWRDbGlja1NvdXJjZSBzb3VyY2UpCisgICAgICAgIDogTW91c2VFdmVudChldmVudFR5cGUsIHRy
dWUsIHRydWUsIHVuZGVybHlpbmdFdmVudCA/IHVuZGVybHlpbmdFdmVudC0+dGltZVN0YW1wKCkg
OiBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwgMCwgeyB9LCB7IH0sCiAjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgICAgIHsgfSwKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dEV2ZW50LmNwcAppbmRleCBiZDAyNGVhNTVmNmJhODRlMzJjOTA0NDZmY2JmODI4MjA0ZDJj
MzBjLi5iMDk0NDkzYzFmODU1ODQ5ODg5M2MyY2I3YzBkMDc0NmI2YWI1YmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dEV2ZW50LmNwcApAQCAtMzgsMjkgKzM4LDI5IEBAIFJlZjxUZXh0RXZlbnQ+IFRleHRF
dmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRF
dmVudCk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlKERPTVdpbmRvdyog
dmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRUeXBlKQor
UmVmPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZp
ZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlIGlucHV0VHlwZSkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQodmlldywgZGF0YSwgaW5wdXRUeXBl
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdURk1vdmUodmlldyksIGRh
dGEsIGlucHV0VHlwZSkpOwogfQogCi1SZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZv
clBsYWluVGV4dFBhc3RlKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBib29s
IHNob3VsZFNtYXJ0UmVwbGFjZSkKK1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9y
UGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYg
ZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgVGV4dEV2ZW50KHZpZXcsIGRhdGEsIDAsIHNob3VsZFNtYXJ0UmVwbGFjZSwgZmFsc2UsIE1h
aWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdURk1vdmUodmlldyksIGRhdGEsIDAsIHNob3VsZFNtYXJ0
UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3Rl
KSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0
ZShET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIGRhdGEsIGJvb2wg
c2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3Rl
SGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKK1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVu
dDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJv
b2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90
ZUhhbmRsaW5nKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudCh2aWV3LCBl
bXB0eVN0cmluZygpLCBXVEZNb3ZlKGRhdGEpLCBzaG91bGRTbWFydFJlcGxhY2UsIHNob3VsZE1h
dGNoU3R5bGUsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZW1wdHlTdHJpbmcoKSwgV1RGTW92ZShkYXRh
KSwgc2hvdWxkU21hcnRSZXBsYWNlLCBzaG91bGRNYXRjaFN0eWxlLCBtYWlsQmxvY2txdW90ZUhh
bmRsaW5nKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChE
T01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxUZXh0RXZlbnQ+IFRleHRF
dmVudDo6Y3JlYXRlRm9yRHJvcChSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3Ry
aW5nJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudCh2aWV3LCBk
YXRhLCBUZXh0RXZlbnRJbnB1dERyb3ApKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0
RXZlbnQoV1RGTW92ZSh2aWV3KSwgZGF0YSwgVGV4dEV2ZW50SW5wdXREcm9wKSk7CiB9CiAKLVJl
ZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRGljdGF0aW9uKERPTVdpbmRvdyogdmll
dywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+
JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCitSZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0
ZUZvckRpY3RhdGlvbihSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBk
YXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KHZpZXcsIGRhdGEs
IGRpY3RhdGlvbkFsdGVybmF0aXZlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRF
dmVudChXVEZNb3ZlKHZpZXcpLCBkYXRhLCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpKTsKIH0KIAog
VGV4dEV2ZW50OjpUZXh0RXZlbnQoKQpAQCAtNzEsOCArNzEsOCBAQCBUZXh0RXZlbnQ6OlRleHRF
dmVudCgpCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRUeXBlKQotICAgIDogVUlF
dmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIHZpZXcsIDApCitU
ZXh0RXZlbnQ6OlRleHRFdmVudChSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3Ry
aW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRUeXBlKQorICAgIDogVUlFdmVudChl
dmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIFdURk1vdmUodmlldyksIDAp
CiAgICAgLCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAs
IG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtODEsOCArODEsOCBAQCBUZXh0RXZlbnQ6
OlRleHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50
SW5wdXRUeXBlIGlucAogewogfQogCi1UZXh0RXZlbnQ6OlRleHRFdmVudChET01XaW5kb3cqIHZp
ZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgcGFzdGlu
Z0ZyYWdtZW50LCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxl
LCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpCi0gICAgOiBV
SUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCkK
K1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBT
dHJpbmcmIGRhdGEsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIHBhc3RpbmdGcmFnbWVudCwg
Ym9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2Nr
cXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQorICAgIDogVUlFdmVudChldmVu
dE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIFdURk1vdmUodmlldyksIDApCiAg
ICAgLCBtX2lucHV0VHlwZShUZXh0RXZlbnRJbnB1dFBhc3RlKQogICAgICwgbV9kYXRhKGRhdGEp
CiAgICAgLCBtX3Bhc3RpbmdGcmFnbWVudChXVEZNb3ZlKHBhc3RpbmdGcmFnbWVudCkpCkBAIC05
Miw4ICs5Miw4IEBAIFRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3Qg
U3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVuCiB7CiB9CiAKLVRleHRFdmVudDo6
VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0
b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCi0gICAgOiBV
SUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCkK
K1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBT
dHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlv
bkFsdGVybmF0aXZlcykKKyAgICA6IFVJRXZlbnQoZXZlbnROYW1lcygpLnRleHRJbnB1dEV2ZW50
LCB0cnVlLCB0cnVlLCBXVEZNb3ZlKHZpZXcpLCAwKQogICAgICwgbV9pbnB1dFR5cGUoVGV4dEV2
ZW50SW5wdXREaWN0YXRpb24pCiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fc2hvdWxkU21h
cnRSZXBsYWNlKGZhbHNlKQpAQCAtMTA1LDEyICsxMDUsMTIgQEAgVGV4dEV2ZW50OjpUZXh0RXZl
bnQoRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0
YXRpb24KIAogVGV4dEV2ZW50Ojp+VGV4dEV2ZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFRleHRF
dmVudDo6aW5pdFRleHRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRh
KQordm9pZCBUZXh0RXZlbnQ6OmluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2Fu
Y2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAgICBtX2lucHV0VHlwZSA9IFRleHRFdmVu
dElucHV0S2V5Ym9hcmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaAppbmRleCAyOWViMjZkMGUwNzRi
NTRkMzQ2MzU2MDQyODBkMTJhNjk4OGFmOGRhLi4wYWUyYWM4NjNmYjgxYmJiMjg2Mzg1MTY1YjZi
MTI1MWQyZGZiMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oCkBAIC0zOCwxNiArMzgsMTYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgVGV4dEV2ZW50IGZpbmFsIDogcHVibGlj
IFVJRXZlbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNy
ZWF0ZShET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSA9
IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOworICAgICAgICBzdGF0aWMgUmVmPFRleHRFdmVudD4g
Y3JlYXRlKFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZl
bnRJbnB1dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJkKTsKICAgICAgICAgc3RhdGljIFJl
ZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4
dEV2ZW50PiBjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShET01XaW5kb3cqLCBjb25zdCBTdHJpbmcm
IGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKLSAgICAgICAgc3RhdGljIFJlZjxUZXh0
RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoRE9NV2luZG93KiwgUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0
Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4
dEV2ZW50PiBjcmVhdGVGb3JEcm9wKERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYgZGF0YSk7Ci0g
ICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEaWN0YXRpb24oRE9NV2luZG93
KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+
JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgICAgICBzdGF0aWMgUmVmPFRleHRFdmVudD4g
Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJp
bmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKKyAgICAgICAgc3RhdGljIFJlZjxU
ZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwg
Ym9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKKyAgICAgICAg
c3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRyb3AoUmVmUHRyPFdpbmRvd1Byb3h5PiYm
LCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBzdGF0aWMgUmVmPFRleHRFdmVudD4gY3Jl
YXRlRm9yRGljdGF0aW9uKFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBkYXRh
LCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2
ZXMpOwogCiAgICAgICAgIHZpcnR1YWwgflRleHRFdmVudCgpOwogICAgIAotICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBTdHJpbmcm
IGRhdGEpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRUZXh0RXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAgICAgCiAgICAgICAgIFN0
cmluZyBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKQEAgLTcxLDkgKzcxLDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIFRleHRFdmVudCgpOwog
Ci0gICAgICAgIFRleHRFdmVudChET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRF
dmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOwotICAgICAgICBUZXh0RXZl
bnQoRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4mJiwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFp
bEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0gICAgICAgIFRleHRFdmVudChET01XaW5kb3cqLCBjb25z
dCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3Rh
dGlvbkFsdGVybmF0aXZlcyk7CisgICAgICAgIFRleHRFdmVudChSZWZQdHI8V2luZG93UHJveHk+
JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlID0gVGV4dEV2ZW50SW5w
dXRLZXlib2FyZCk7CisgICAgICAgIFRleHRFdmVudChSZWZQdHI8V2luZG93UHJveHk+JiYsIGNv
bnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYsIGJvb2wgc2hvdWxk
U21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxp
bmcpOworICAgICAgICBUZXh0RXZlbnQoUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJp
bmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFs
dGVybmF0aXZlcyk7CiAKICAgICAgICAgYm9vbCBpc1RleHRFdmVudCgpIGNvbnN0IG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCmluZGV4IDM2NDA2NWZhODJkNDE4OTljMGM1MjMy
NTBjMmYyNzk5NzcwZDNlMGUuLmNlOGIzMGFjYjNjNzFmZmRmODI4YjIxODEwNjVhYWExZjhhMTI2
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCkBAIC0zMiw3ICszMiw3IEBAIGludGVyZmFj
ZSBUZXh0RXZlbnQgOiBVSUV2ZW50IHsKICAgICB2b2lkIGluaXRUZXh0RXZlbnQob3B0aW9uYWwg
RE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZpbmVkIiwKICAgICAgICAgICAgICAgICAgICAgICAg
b3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGVBcmcgPSBmYWxzZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlQXJnID0gZmFsc2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlld0FyZyA9IG51bGwsCisgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3QXJnID0gbnVsbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3RyaW5nIGRhdGFBcmcgPSAidW5kZWZp
bmVkIik7CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKaW5kZXggNjFjMDhmMjFkYTM4
YmFhN2ExMTBmMjJkY2E2YTU3YmU5M2I2ODNlNy4uMDAyMzdjZGFkNTY4Mzc5NTJkOTNhOTdkZTI2
YTk5ZTllYWZjMzkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcApAQCAtMzgsOSArMzgs
OSBAQCBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KCkgPSBkZWZhdWx0OwogCiBUb3VjaEV2ZW50OjpU
b3VjaEV2ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91Y2hMaXN0KiB0YXJnZXRUb3VjaGVzLAog
ICAgICAgICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIAotICAgICAgICBET01XaW5kb3cqIHZpZXcsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwg
aW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAgICAgIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3
LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogICAgICAg
ICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkp
Ci0gICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCBNb25vdG9uaWNUaW1l
Ojpub3coKSwgdmlldywgMCwgSW50UG9pbnQoc2NyZWVuWCwgc2NyZWVuWSksCisgICAgOiBNb3Vz
ZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RG
TW92ZSh2aWV3KSwgMCwgSW50UG9pbnQoc2NyZWVuWCwgc2NyZWVuWSksCiAgICAgICAgICAgICAg
ICAgICAgICAgICBJbnRQb2ludChwYWdlWCwgcGFnZVkpLAogI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludCgwLCAwKSwKQEAgLTY0LDEzICs2
NCwxMyBAQCBUb3VjaEV2ZW50Ojp+VG91Y2hFdmVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBUb3Vj
aEV2ZW50Ojppbml0VG91Y2hFdmVudChUb3VjaExpc3QqIHRvdWNoZXMsIFRvdWNoTGlzdCogdGFy
Z2V0VG91Y2hlcywKICAgICAgICAgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCAKLSAgICAgICAgRE9NV2luZG93KiB2aWV3LCBpbnQgc2NyZWVuWCwg
aW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwKKyAgICAgICAgUmVmUHRyPFdp
bmRvd1Byb3h5PiYmIHZpZXcsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgs
IGludCBjbGllbnRZLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGluaXRVSUV2ZW50KHR5cGUsIHRydWUsIHRydWUsIHZpZXcs
IDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIHRydWUsIHRydWUsIFdURk1vdmUodmlldyksIDAp
OwogCiAgICAgbV90b3VjaGVzID0gdG91Y2hlczsKICAgICBtX3RhcmdldFRvdWNoZXMgPSB0YXJn
ZXRUb3VjaGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKaW5kZXggZDMzOWMwYjcyYjEzZDQ1NWE1
ZTAzODY2ZTU1NzIwY2NmNmJmMWVkYi4uODVmYTE2MWYyMTk2ZDNmMmEwNWQ5YTMxYTExN2IwYTFh
Zjg2NmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCkBAIC00MSwxMiArNDEsMTIgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIFJlZjxUb3VjaEV2ZW50PiBjcmVhdGUoVG91Y2hMaXN0KiB0b3Vj
aGVzLCAKICAgICAgICAgICAgIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywgVG91Y2hMaXN0KiBj
aGFuZ2VkVG91Y2hlcywgCi0gICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIERP
TVdpbmRvdyogdmlldywKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgICAgICAgICBpbnQgc2NyZWVuWCwgaW50IHNj
cmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogICAgICAgICAgICAgYm9vbCBjdHJsS2V5LCBi
b29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgVG91Y2hFdmVudCh0b3VjaGVzLCB0YXJnZXRUb3VjaGVzLCBj
aGFuZ2VkVG91Y2hlcywKLSAgICAgICAgICAgICAgICB0eXBlLCB2aWV3LCBzY3JlZW5YLCBzY3Jl
ZW5ZLCBwYWdlWCwgcGFnZVksCisgICAgICAgICAgICAgICAgdHlwZSwgV1RGTW92ZSh2aWV3KSwg
c2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLAogICAgICAgICAgICAgICAgIGN0cmxLZXks
IGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpKTsKICAgICB9CiAgICAgc3RhdGljIFJlZjxUb3Vj
aEV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgaW5pdFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVzLCBUb3VjaExpc3QqIHRh
cmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzLCBjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICAgICAgRE9NV2luZG93KiwgaW50IHNjcmVl
blgsIGludCBzY3JlZW5ZLAorICAgICAgICAgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQg
c2NyZWVuWCwgaW50IHNjcmVlblksCiAgICAgICAgICAgICBpbnQgY2xpZW50WCwgaW50IGNsaWVu
dFksCiAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXkpOwogCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgVG91Y2hF
dmVudCgpOwogICAgIFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVzLCBUb3VjaExpc3QqIHRh
cmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzLCBjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsCi0gICAgICAgICAgICBET01XaW5kb3cqLCBpbnQgc2NyZWVu
WCwgaW50IHNjcmVlblksIGludCBwYWdlWCwKKyAgICAgICAgICAgIFJlZlB0cjxXaW5kb3dQcm94
eT4mJiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsCiAgICAgICAgICAgICBp
bnQgcGFnZVksCiAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXkpOwogICAgIFRvdWNoRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVG91Y2hFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5pZGwKaW5k
ZXggODEwNTgzNTdlZDNhYTc3NzRkMjZmYWZhZTE2MDNiMTVkZGUwZDYwYi4uNTRlOTlkYjQ4MzBm
MzBkNDYyNjQyZTMzZDQzOTU2OTNiMTNmMmIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RvdWNoRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50Lmlk
bApAQCAtNDAsNyArNDAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgVG91
Y2hMaXN0PyB0YXJnZXRUb3VjaGVzID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgIG9w
dGlvbmFsIFRvdWNoTGlzdD8gY2hhbmdlZFRvdWNoZXMgPSBudWxsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5kZWZpbmVkIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlldyA9IG51bGwsCisgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlldyA9IG51bGwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBsb25nIHNjcmVlblggPSAwLAogICAgICAgICAg
ICAgICAgICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwKICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wdGlvbmFsIGxvbmcgY2xpZW50WCA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVUlFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAK
aW5kZXggYWIyMGVlY2I5YzU4MzFkZWYwMjc5Y2E3OGEwZTdjYzVmYTg1NjIxNy4uMGE2ZjgxYWY1
MjM3MTZmNzU4MTc4ZjBmOTUzNDRjZGM2NTViODAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1VJRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmNwcApA
QCAtMzIsMTYgKzMyLDE2IEBAIFVJRXZlbnQ6OlVJRXZlbnQoKQogewogfQogCi1VSUV2ZW50OjpV
SUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZUFyZywg
Ym9vbCBjYW5jZWxhYmxlQXJnLCBET01XaW5kb3cqIHZpZXdBcmcsIGludCBkZXRhaWxBcmcpCitV
SUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1
YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlld0Fy
ZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlQXJnLCBj
YW5jZWxhYmxlQXJnKQotICAgICwgbV92aWV3KHZpZXdBcmcpCisgICAgLCBtX3ZpZXcoV1RGTW92
ZSh2aWV3QXJnKSkKICAgICAsIG1fZGV0YWlsKGRldGFpbEFyZykKIHsKIH0KIAotVUlFdmVudDo6
VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGVBcmcs
IGJvb2wgY2FuY2VsYWJsZUFyZywgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIERPTVdpbmRvdyog
dmlld0FyZywgaW50IGRldGFpbEFyZykKK1VJRXZlbnQ6OlVJRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVBcmcsIE1v
bm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlld0FyZywgaW50
IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlQXJnLCBjYW5jZWxh
YmxlQXJnLCB0aW1lc3RhbXApCi0gICAgLCBtX3ZpZXcodmlld0FyZykKKyAgICAsIG1fdmlldyhX
VEZNb3ZlKHZpZXdBcmcpKQogICAgICwgbV9kZXRhaWwoZGV0YWlsQXJnKQogewogfQpAQCAtNTUs
NyArNTUsNyBAQCBVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBjb25zdCBVSUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIsCiAKIFVJRXZlbnQ6On5VSUV2ZW50KCkg
PSBkZWZhdWx0OwogCi12b2lkIFVJRXZlbnQ6OmluaXRVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZUFyZywgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgRE9NV2lu
ZG93KiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQordm9pZCBVSUV2ZW50Ojppbml0VUlFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGVBcmcsIGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNhbmNl
bGFibGVBcmcsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQog
ewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJ
RXZlbnQuaAppbmRleCBiYWE3MzFmY2Y4MWVlYmFmMjMxNTNkYTUxYmEwYWVhZmQyNDU1ZmFjLi41
MGYyZDE3NzE5OTQyZTQ3M2ZkZWM5YjFhODg0ODYwNTkzY2QxOWE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50
LmgKQEAgLTIzLDIwICsyMywyMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkRPTVdp
bmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiVUlFdmVudEluaXQuaCIKKyNp
bmNsdWRlICJXaW5kb3dQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZJWE1F
OiBSZW1vdmUgdGhpcyB3aGVuIG5vIG9uZSBpcyBkZXBlbmRpbmcgb24gaXQgYW55bW9yZS4KLXR5
cGVkZWYgRE9NV2luZG93IEFic3RyYWN0VmlldzsKK3R5cGVkZWYgV2luZG93UHJveHkgQWJzdHJh
Y3RWaWV3OwogCiBjbGFzcyBVSUV2ZW50IDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCkK
KyAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3LCBpbnQgZGV0YWlsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVUlF
dmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJs
ZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKSk7CiAgICAgfQogICAgIHN0YXRpYyBSZWY8VUlFdmVu
dD4gY3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHsKQEAgLTQ4LDkgKzQ4LDkgQEAgcHVibGljOgog
ICAgIH0KICAgICB2aXJ0dWFsIH5VSUV2ZW50KCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBpbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCk7
CiAKLSAgICBET01XaW5kb3cqIHZpZXcoKSBjb25zdCB7IHJldHVybiBtX3ZpZXcuZ2V0KCk7IH0K
KyAgICBXaW5kb3dQcm94eSogdmlldygpIGNvbnN0IHsgcmV0dXJuIG1fdmlldy5nZXQoKTsgfQog
ICAgIGludCBkZXRhaWwoKSBjb25zdCB7IHJldHVybiBtX2RldGFpbDsgfQogCiAgICAgRXZlbnRJ
bnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKQEAgLTY1LDE0ICs2NSwx
NCBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVSUV2ZW50KCk7Ci0gICAgVUlFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IERPTVdpbmRvdyosIGludCBkZXRhaWwpOwotICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRp
bWVzdGFtcCwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7CisgICAgVUlFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCk7CisgICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUg
dGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRhaWwpOwogICAgIFVJRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVUlFdmVudEluaXQmLCBJc1RydXN0ZWQpOwog
CiBwcml2YXRlOgogICAgIGJvb2wgaXNVSUV2ZW50KCkgY29uc3QgZmluYWw7CiAKLSAgICBSZWZQ
dHI8RE9NV2luZG93PiBtX3ZpZXc7CisgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiBtX3ZpZXc7CiAg
ICAgaW50IG1fZGV0YWlsOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJ
RXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRsCmluZGV4IDg3YjM5MTUy
ODMwMzE5N2UzNmM2NGMxZTcwOGZmYjYwY2JhZDk1MDMuLjZhMzVjNTdhMzg3NGJjOGVjNjNkNmQ5
MjRkNDI4YjJiNTgxMDBmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5pZGwKQEAgLTIwLDExICsyMCwx
MSBAQAogWwogICAgIENvbnN0cnVjdG9yKERPTVN0cmluZyB0eXBlLCBvcHRpb25hbCBVSUV2ZW50
SW5pdCBldmVudEluaXREaWN0KQogXSBpbnRlcmZhY2UgVUlFdmVudCA6IEV2ZW50IHsKLSAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IHZpZXc7CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFdpbmRvd1Byb3h5IHZpZXc7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgZGV0YWlsOwog
ICAgIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRl
ciB2YWx1ZSBpcyB3cm9uZy4KLSAgICB2b2lkIGluaXRVSUV2ZW50KG9wdGlvbmFsIERPTVN0cmlu
ZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlID0gZmFsc2Us
IG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZhbHNlLCBvcHRpb25hbCBET01XaW5kb3c/
IHZpZXcgPSBudWxsLCBvcHRpb25hbCBsb25nIGRldGFpbCA9IDApOworICAgIHZvaWQgaW5pdFVJ
RXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgYm9v
bGVhbiBjYW5CdWJibGUgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlID0gZmFs
c2UsIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwgb3B0aW9uYWwgbG9uZyBkZXRh
aWwgPSAwKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxheWVyWDsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgbG9uZyBsYXllclk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVUlFdmVudEluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5oCmluZGV4
IDAzMTZiYzA2ZjU2OGU1MzkxNmRmNjk2ZjQxNDQ1YmE5ZmMzMWZmMzYuLmUxMTI4YTc2ZGU1ODYw
MTYyZmE5NzZkY2RjODI3MTcwZDhmMmYzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9VSUV2ZW50SW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5oCkBA
IC0yNSwxNCArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJET01XaW5kb3cu
aCIKICNpbmNsdWRlICJFdmVudEluaXQuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgVUlF
dmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKLSAgICBSZWZQdHI8RE9NV2luZG93PiB2aWV3
OworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gdmlldzsKICAgICBpbnQgZGV0YWlsIHsgMCB9Owog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRJbml0LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5pZGwKaW5kZXggMGQ3ZWI4ZWZjMWM1MzdhOTA1
MTE3YjYxMjExMWFkMDFlYjFlMGFhMi4uM2NjYmJlZDYwNzU1ZjZmMjE2NTJmNWJhNjFlNmYzODI0
MGMxN2ZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRJbml0LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaWRsCkBAIC0yNCw2ICsyNCw2IEBA
CiAgKi8KIAogZGljdGlvbmFyeSBVSUV2ZW50SW5pdCA6IEV2ZW50SW5pdCB7Ci0gICAgRE9NV2lu
ZG93PyB2aWV3ID0gbnVsbDsKKyAgICBXaW5kb3dQcm94eT8gdmlldyA9IG51bGw7CiAgICAgbG9u
ZyBkZXRhaWwgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50
V2l0aEtleVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5o
CmluZGV4IDBhOGU0MDMxMjQ4ZDZmNzI2NTQ0MmU1YmY4MDAxMmJhMzBjY2NkZWIuLjA4NWEwMzE3
ZWM4ZGNlM2E2MGZlMjZhZmE1YTE2MmVhMmE5YTA1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJ
RXZlbnRXaXRoS2V5U3RhdGUuaApAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6
CiAgICAgVUlFdmVudFdpdGhLZXlTdGF0ZSgpID0gZGVmYXVsdDsKIAotICAgIFVJRXZlbnRXaXRo
S2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBj
YW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGJvb2wgY3RybEtleSwgYm9v
bCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSkKLSAgICAgICAgOiBVSUV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKQorICAgIFVJRXZlbnRX
aXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgYm9v
bCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQorICAg
ICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcp
LCBkZXRhaWwpCiAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCiAgICAgICAgICwgbV9hbHRL
ZXkoYWx0S2V5KQogICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkpCkBAIC00OSw5ICs0OSw5
IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQogCi0gICAgVUlFdmVudFdpdGhLZXlTdGF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqIHZpZXcsCisgICAgVUlFdmVudFdp
dGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlldywKICAgICAgICAgaW50IGRldGFpbCwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwg
Ym9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBib29sIGFsdEdyYXBoS2V5LCBib29sIGNhcHNM
b2NrS2V5KQotICAgICAgICAgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJs
ZSwgdGltZXN0YW1wLCB2aWV3LCBkZXRhaWwpCisgICAgICAgICAgICA6IFVJRXZlbnQodHlwZSwg
Y2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIFdURk1vdmUodmlldyksIGRldGFpbCkK
ICAgICAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCiAgICAgICAgICAgICAsIG1fYWx0S2V5
KGFsdEtleSkKICAgICAgICAgICAgICwgbV9zaGlmdEtleShzaGlmdEtleSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9X
aGVlbEV2ZW50LmNwcAppbmRleCBkMmI4ZmI3MmQ5MTk4ZTE0YmY3NThjYTNhZmJjMWVjMjQ3Zjcx
Y2JkLi41MzdjYjE5M2M4MTNmNTI3YWM1MzNjOTMwODkwODdiZGIzNjhiZTljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1doZWVsRXZlbnQuY3BwCkBAIC00Nyw4ICs0Nyw4IEBAIGlubGluZSBXaGVlbEV2ZW50OjpX
aGVlbEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6
ZXIsCiB7CiB9CiAKLWlubGluZSBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogdmlldykKLSAgICA6IE1vdXNlRXZlbnQoZXZl
bnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJv
eGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LCAwLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBl
dmVudC5wb3NpdGlvbigpCitpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKKyAgICA6
IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUsIGV2ZW50LnRp
bWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCBXVEZNb3ZlKHZpZXcpLCAwLCBl
dmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCiAjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKICAgICAgICAgLCB7IH0KICNlbmRpZgpAQCAtNjEsOSArNjEsOSBAQCBpbmxpbmUg
V2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBE
T01XaW5kb3cqIHZpZXcpCiB7CiB9CiAKLVJlZjxXaGVlbEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVh
dGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB2aWV3KQorUmVm
PFdoZWVsRXZlbnQ+IFdoZWVsRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXaGVlbEV2ZW50KGV2ZW50LCB2aWV3KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2hlZWxFdmVudChldmVudCwgV1RGTW92ZSh2aWV3KSkpOwogfQogCiBSZWY8V2hlZWxFdmVu
dD4gV2hlZWxFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQpAQCAtNzYsMTIgKzc2LDEyIEBAIFJl
ZjxXaGVlbEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBjb25zdCBJbml0JiBpbml0aWFsCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2hlZWxFdmVu
dCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiB9CiAKLXZvaWQgV2hlZWxFdmVudDo6
aW5pdFdlYktpdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwgaW50IHJhd0RlbHRhWSwgRE9NV2lu
ZG93KiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZ
LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkp
Cit2b2lkIFdoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGlu
dCByYXdEZWx0YVksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50
IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5
LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRj
aGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpbml0TW91c2VFdmVudChldmVudE5h
bWVzKCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCwgc2NyZWVuWCwgc2NyZWVuWSwg
cGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCAwLCBudWxs
cHRyKTsKKyAgICBpbml0TW91c2VFdmVudChldmVudE5hbWVzKCkud2hlZWxFdmVudCwgdHJ1ZSwg
dHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCBj
dHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCAwLCBudWxscHRyKTsKIAogICAgIC8v
IE5vcm1hbGl6ZSB0byAxMjAgbXVsdGlwbGUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBJRS4KICAg
ICBtX3doZWVsRGVsdGEgPSB7IHJhd0RlbHRhWCAqIFRpY2tNdWx0aXBsaWVyLCByYXdEZWx0YVkg
KiBUaWNrTXVsdGlwbGllciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVs
RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgKaW5kZXggNGQzNGIzMGQ2
ZGVkNWVmMjgxNWE4MTM3ZTRjMjk3ZTY0MWFkZTZkYS4uMTBiNjJlMDVjNzAxNTYwNzZmZmU1Y2Yx
MjczOTdlYzEzMjNkZDJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCkBAIC0zOSw3ICszOSw3
IEBAIHB1YmxpYzoKICAgICAgICAgRE9NX0RFTFRBX1BBR0UKICAgICB9OwogCi0gICAgc3RhdGlj
IFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgRE9NV2lu
ZG93Kik7CisgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAgICBzdGF0aWMgUmVmPFdoZWVs
RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBzdHJ1Y3QgSW5pdCA6IE1vdXNlRXZl
bnRJbml0IHsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxXaGVl
bEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNU
cnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRX
ZWJLaXRXaGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIERPTVdpbmRvdyos
IGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wgY3Ry
bEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChpbnQgcmF3RGVsdGFYLCBpbnQg
cmF3RGVsdGFZLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVu
WSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CiAKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFBsYXRm
b3JtV2hlZWxFdmVudD4mIHVuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KCkgY29uc3QgeyByZXR1cm4g
bV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudDsgfQogCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgV2hlZWxFdmVudCgpOwogICAgIFdoZWVsRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7Ci0gICAgV2hlZWxFdmVudChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmLCBET01XaW5kb3cqKTsKKyAgICBXaGVlbEV2ZW50KGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYsIFJlZlB0cjxXaW5kb3dQcm94eT4mJik7CiAKICAgICBFdmVudElu
dGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxF
dmVudC5pZGwKaW5kZXggOTNjNTNhNGJmYjJkYWY0YmQ0NDI3Mzg2NmE5MmNlZDRhMWMxYzM4Ni4u
YjI4MWRhMWM2NjA0NGE4YTkzZDYwZDkwZWRkZjUxZDE0YzZjOTM0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9X
aGVlbEV2ZW50LmlkbApAQCAtMzksNyArMzksNyBAQAogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gd2Via2l0RGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlOwogCi0gICAgdm9pZCBp
bml0V2ViS2l0V2hlZWxFdmVudChvcHRpb25hbCBsb25nIHdoZWVsRGVsdGFYID0gMCwgb3B0aW9u
YWwgbG9uZyB3aGVlbERlbHRhWSA9IDAsIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlldyA9IG51bGws
CisgICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRpb25hbCBsb25nIHdoZWVsRGVsdGFY
ID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAsIG9wdGlvbmFsIFdpbmRvd1Byb3h5
PyB2aWV3ID0gbnVsbCwKICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5YID0gMCwgb3B0aW9u
YWwgbG9uZyBzY3JlZW5ZID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRYID0gMCwgb3B0aW9uYWwg
bG9uZyBjbGllbnRZID0gMCwKICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjdHJsS2V5ID0gZmFs
c2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFsc2UsCiAgICAgICAgIG9wdGlvbmFsIGJv
b2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBtZXRhS2V5ID0gZmFsc2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlci5jcHAKaW5kZXggZDE0NzI0Mjc3MjM3NDY4ZDRmNjFmZmUzM2M3NWZlNDZhODE5MjNkYy4u
ZDczYTcxYjBlMTVkZDgxOWYxNzBlZmE1ZjU2MmVmNzVjOTQyYjk1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCkBAIC02
MzIsNyArNjMyLDcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjppbnNlcnREaWN0
YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWMKICAgICBpZiAoRnJhbWVWaWV3
KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpCiAgICAgICAgIHZpZXctPmRpc2FibGVMYXllckZsdXNo
VGhyb3R0bGluZ1RlbXBvcmFyaWx5Rm9ySW50ZXJhY3Rpb24oKTsKIAotICAgIFJlZjxUZXh0RXZl
bnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24obV9mcmFtZS5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICBSZWY8
VGV4dEV2ZW50PiBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlRm9yRGljdGF0aW9uKG1fZnJhbWUu
ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsK
ICAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KHRyaWdnZXJpbmdFdmVudCk7CiAKICAgICB0
YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmlu
ZGV4IGNiOGI2YjhiYmFjODViYzBlMzJkZWQyZWYzMzljMjQxMDI5MGQzMTkuLjRlMzY4YmZkODAz
YzUzNjg1MmVkY2U2MDEwNDY5NDQ4NjMxNDkxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dChjb25z
dCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBib29sIHNtYXJ0UmVwbGFjZSkKICAgICBFbGVtZW50KiB0
YXJnZXQgPSBmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCk7CiAgICAgaWYgKCF0YXJnZXQp
CiAgICAgICAgIHJldHVybjsKLSAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50Ojpj
cmVhdGVGb3JQbGFpblRleHRQYXN0ZShkb2N1bWVudCgpLmRvbVdpbmRvdygpLCBwYXN0aW5nVGV4
dCwgc21hcnRSZXBsYWNlKSk7CisgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6
Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCBwYXN0aW5n
VGV4dCwgc21hcnRSZXBsYWNlKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQo
UmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNtYXJ0UmVwbGFj
ZSwgYm9vbCBtYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIHJlc3BlY3RzTWFpbEJs
b2NrcXVvdGUpCkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlQXNGcmFnbWVu
dChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBwYXN0aW5nRnJhZ21lbnQsIGJvb2wgc21hcnQKICAg
ICBFbGVtZW50KiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCk7CiAgICAg
aWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKLSAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQo
VGV4dEV2ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKGRvY3VtZW50KCkuZG9tV2luZG93KCks
IFdURk1vdmUocGFzdGluZ0ZyYWdtZW50KSwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlLCByZXNw
ZWN0c01haWxCbG9ja3F1b3RlKSk7CisgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVu
dDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIFdURk1v
dmUocGFzdGluZ0ZyYWdtZW50KSwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlLCByZXNwZWN0c01h
aWxCbG9ja3F1b3RlKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpwYXN0ZUFzUGxhaW5UZXh0QnlwYXNz
aW5nREhUTUwoKQpAQCAtMTg0OCw3ICsxODQ4LDcgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0
aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgU2V0Q29tcG9zaXRpb25Nb2RlIG1vZGUpCiAgICAgaW5z
ZXJ0VGV4dEZvckNvbmZpcm1lZENvbXBvc2l0aW9uKHRleHQpOwogCiAgICAgaWYgKGF1dG8qIHRh
cmdldCA9IGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSkKLSAgICAgICAgdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRp
b25lbmRFdmVudCwgZG9jdW1lbnQoKS5kb21XaW5kb3coKSwgdGV4dCkpOworICAgICAgICB0YXJn
ZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5j
b21wb3NpdGlvbmVuZEV2ZW50LCBkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIHRleHQpKTsKIAog
ICAgIGlmIChtb2RlID09IENhbmNlbENvbXBvc2l0aW9uKSB7CiAgICAgICAgIC8vIEFuIG9wZW4g
dHlwaW5nIGNvbW1hbmQgdGhhdCBkaXNhZ3JlZXMgYWJvdXQgY3VycmVudCBzZWxlY3Rpb24gd291
bGQgY2F1c2UgaXNzdWVzIHdpdGggdHlwaW5nIGxhdGVyIG9uLgpAQCAtMTkwOCwxMSArMTkwOCwx
MSBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25z
dCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIHNl
bmQgYSBjb21wb3NpdGlvbnN0YXJ0IGV2ZW50IG9ubHkgd2hlbiB0aGUgZ2l2ZW4gdGV4dCBpcyBu
b3QgZW1wdHkgYmVjYXVzZSB0aGlzCiAgICAgICAgICAgICAvLyBmdW5jdGlvbiBkb2Vzbid0IGNy
ZWF0ZSBhIGNvbXBvc2l0aW9uIG5vZGUgd2hlbiB0aGUgdGV4dCBpcyBlbXB0eS4KICAgICAgICAg
ICAgIGlmICghdGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICB0YXJnZXQtPmRpc3Bh
dGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlv
bnN0YXJ0RXZlbnQsIGRvY3VtZW50KCkuZG9tV2luZG93KCksIG9yaWdpbmFsVGV4dCkpOwotICAg
ICAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBkb2N1bWVudCgpLmRvbVdpbmRvdygpLCB0ZXh0KTsK
KyAgICAgICAgICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0RXZlbnQsIGRvY3VtZW50KCkuZGVm
YXVsdFZpZXcoKSwgb3JpZ2luYWxUZXh0KSk7CisgICAgICAgICAgICAgICAgZXZlbnQgPSBDb21w
b3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9udXBkYXRlRXZlbnQs
IGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdGV4dCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSBpZiAoIXRleHQuaXNFbXB0eSgpKQotICAgICAgICAgICAgZXZlbnQgPSBDb21wb3Np
dGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9udXBkYXRlRXZlbnQsIGRv
Y3VtZW50KCkuZG9tV2luZG93KCksIHRleHQpOworICAgICAgICAgICAgZXZlbnQgPSBDb21wb3Np
dGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9udXBkYXRlRXZlbnQsIGRv
Y3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdGV4dCk7CiAKICAgICAgICAgaWYgKGV2ZW50KQogICAg
ICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KCpldmVudCk7CkBAIC0xOTIzLDcgKzE5MjMs
NyBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25z
dCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkgewog
ICAgICAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24oZG9jdW1lbnQoKSwgVHlwaW5n
Q29tbWFuZDo6UHJldmVudFNwZWxsQ2hlY2tpbmcsIFR5cGluZ0NvbW1hbmQ6OlRleHRDb21wb3Np
dGlvblBlbmRpbmcpOwogICAgICAgICBpZiAodGFyZ2V0KQotICAgICAgICAgICAgdGFyZ2V0LT5k
aXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9z
aXRpb25lbmRFdmVudCwgZG9jdW1lbnQoKS5kb21XaW5kb3coKSwgdGV4dCkpOworICAgICAgICAg
ICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCB0ZXh0
KSk7CiAgICAgfQogCiAgICAgbV9jb21wb3NpdGlvbk5vZGUgPSBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRG9jdW1lbnQuY3BwCmluZGV4IGEzZDdkOTc3MGNlYmQwNjI4Y2E3YmVjMjRjZmE2
NzVkM2I5N2JiNTQuLjlkNTgxY2VkZmE4NDFlMGFkZjFhYWM0MzI1OTFjOGI2ZjJmNzY1MTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBSZWY8
RG9jdW1lbnRQYXJzZXI+IEhUTUxEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKIH0KIAogLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9tLmh0bWwjZG9tLWRvY3VtZW50
LW5hbWVkaXRlbQotc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBSZWZQ
dHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+PiBIVE1MRG9jdW1lbnQ6Om5hbWVk
SXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVm
UHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+
Pj4gSFRNTERvY3VtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewog
ICAgIGlmIChuYW1lLmlzTnVsbCgpIHx8ICFoYXNEb2N1bWVudE5hbWVkSXRlbSgqbmFtZS5pbXBs
KCkpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTIyLDE2ICsxMjIsMTYgQEAg
c3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4s
IFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4KICAgICBpZiAoVU5MSUtFTFkoZG9jdW1lbnROYW1lZEl0
ZW1Db250YWluc011bHRpcGxlRWxlbWVudHMoKm5hbWUuaW1wbCgpKSkpIHsKICAgICAgICAgYXV0
byBjb2xsZWN0aW9uID0gZG9jdW1lbnROYW1lZEl0ZW1zKG5hbWUpOwogICAgICAgICBBU1NFUlQo
Y29sbGVjdGlvbi0+bGVuZ3RoKCkgPiAxKTsKLSAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRy
PERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+IHsgV1RGTW92ZShjb2xsZWN0aW9uKSB9IH07CisgICAgICAg
IHJldHVybiBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVm
UHRyPEhUTUxDb2xsZWN0aW9uPj4geyBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHsgV1RGTW92ZShj
b2xsZWN0aW9uKSB9IH07CiAgICAgfQogCiAgICAgYXV0byYgZWxlbWVudCA9ICpkb2N1bWVudE5h
bWVkSXRlbSgqbmFtZS5pbXBsKCkpOwogICAgIGlmIChVTkxJS0VMWShpczxIVE1MSUZyYW1lRWxl
bWVudD4oZWxlbWVudCkpKSB7CiAgICAgICAgIGlmIChhdXRvIGRvbVdpbmRvdyA9IG1ha2VSZWZQ
dHIoZG93bmNhc3Q8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQpLmNvbnRlbnRXaW5kb3coKSkp
Ci0gICAgICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8RE9NV2luZG93PiwgUmVmUHRyPEVs
ZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7IFdURk1vdmUoZG9tV2luZG93KSB9Owor
ICAgICAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVs
ZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7IFdURk1vdmUoZG9tV2luZG93KSB9Owog
ICAgIH0KIAotICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8RWxl
bWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgUmVmUHRyPEVsZW1lbnQ+IHsgJmVsZW1l
bnQgfSB9OworICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxF
bGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBSZWZQdHI8RWxlbWVudD4geyAmZWxl
bWVudCB9IH07CiB9CiAKIFZlY3RvcjxBdG9taWNTdHJpbmc+IEhUTUxEb2N1bWVudDo6c3VwcG9y
dGVkUHJvcGVydHlOYW1lcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaAppbmRl
eCBhMzYzOTc0MDZkMzQ5ZjU3NmY0ODlkM2ExZjYwMGFkYTFiZGRjZmUxLi4wYjNkMzQxNGE0YmVm
YTAzMzVjNGUyMjlhNTk1ODVlYjA1ZWJkNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGludCB3aWR0
aCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBoZWlnaHQoKTsKICAgICAKLSAgICBzdGQ6Om9w
dGlvbmFsPFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRy
PEhUTUxDb2xsZWN0aW9uPj4+IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+
LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYp
OwogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25z
dDsKIAogICAgIEVsZW1lbnQqIGRvY3VtZW50TmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZ0lt
cGwmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnROYW1lZEl0ZW0uZ2V0RWxlbWVudEJ5
RG9jdW1lbnROYW1lZEl0ZW0obmFtZSwgKnRoaXMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1
bWVudC5pZGwKaW5kZXggMTI3ZjI2NDVlMDMyMmRjNzk4ODEyODA0ZmY1ZDc5NWRhYzhhNTgwZi4u
YTk5OWIwM2Y2MjI4YjI1ZWJkMWI3Yjk0Mzg2Yjk5ZTM5NWI4NWY4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERvY3VtZW50LmlkbApAQCAtMjMsNSArMjMsNSBAQAogICAgIE5ld0ltcHVyZVByb3Bl
cnR5RmlyZXNXYXRjaHBvaW50cywKICAgICBPdmVycmlkZUJ1aWx0aW5zLAogXSBpbnRlcmZhY2Ug
SFRNTERvY3VtZW50IDogRG9jdW1lbnQgeyAgICAKLSAgICBnZXR0ZXIgKERPTVdpbmRvdyBvciBF
bGVtZW50IG9yIEhUTUxDb2xsZWN0aW9uKSAoRE9NU3RyaW5nIG5hbWUpOworICAgIGdldHRlciAo
V2luZG93UHJveHkgb3IgRWxlbWVudCBvciBIVE1MQ29sbGVjdGlvbikgKERPTVN0cmluZyBuYW1l
KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQu
aWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbAppbmRleCBjZDYz
YTIxMmFkNDMzMTRjNWJlMjMwNGRkZTcwMDk3YzdiZjg4MzUzLi5lZDdjMGI2ZTI3NzI5OWI2NWNh
MjE4ZjIxZTE4MjYxZTUxM2RmYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxl
bWVudC5pZGwKQEAgLTI2LDcgKzI2LDcgQEAgaW50ZXJmYWNlIEhUTUxGcmFtZUVsZW1lbnQgOiBI
VE1MRWxlbWVudCB7CiAgICAgW1JlZmxlY3QsIFVSTF0gYXR0cmlidXRlIFVTVlN0cmluZyBsb25n
RGVzYzsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIGJvb2xlYW4gbm9SZXNpemU7CiAgICAgW0No
ZWNrU2VjdXJpdHlGb3JOb2RlXSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgY29udGVudERv
Y3VtZW50OwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01XaW5kb3cgY29udGVudFdpbmRvdzsK
KyAgICByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgY29udGVudFdpbmRvdzsKIAogICAg
IFtSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcg
bWFyZ2luSGVpZ2h0OwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5
U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luV2lkdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZU93bmVyRWxlbWVudC5jcHAKaW5kZXggNTg4NzM5ODQ3Y2JiMDhjMzcxN2MxM2JlYmQz
YWE5MWQ5OWJiNGNjNS4uYjliZWYxNzYzZTI2MWQ3Yzk4MmUxZjA1NTUwOWMxNjlkZjg0MDYwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcApAQCAt
OTksOSArOTksOSBAQCBEb2N1bWVudCogSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50RG9j
dW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRGcmFtZSA/IG1fY29udGVudEZyYW1l
LT5kb2N1bWVudCgpIDogbnVsbHB0cjsKIH0KIAotRE9NV2luZG93KiBIVE1MRnJhbWVPd25lckVs
ZW1lbnQ6OmNvbnRlbnRXaW5kb3coKSBjb25zdAorV2luZG93UHJveHkqIEhUTUxGcmFtZU93bmVy
RWxlbWVudDo6Y29udGVudFdpbmRvdygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29udGVudEZy
YW1lID8gbV9jb250ZW50RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpIDogbnVsbHB0cjsK
KyAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyAmbV9jb250ZW50RnJhbWUtPndpbmRvd1Byb3h5
KCkgOiBudWxscHRyOwogfQogCiB2b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6c2V0U2FuZGJv
eEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZU93bmVyRWxlbWVudC5oCmluZGV4IDg2NWVkZGI5MWY1N2UzNDViNGI2ODdmNzYwZTgzMzI1NDI1
YzRmYzEuLjgwZjE4MjAwZGYwZDRhNzRkN2YwZTNkYmNhMTUyNDU2MDIyNGFiMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaApAQCAtMzcsNyArMzcsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SFRNTEZyYW1lT3duZXJFbGVtZW50KCk7CiAKICAgICBG
cmFtZSogY29udGVudEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50RnJhbWU7IH0KLSAg
ICBXRUJDT1JFX0VYUE9SVCBET01XaW5kb3cqIGNvbnRlbnRXaW5kb3coKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBXaW5kb3dQcm94eSogY29udGVudFdpbmRvdygpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIERvY3VtZW50KiBjb250ZW50RG9jdW1lbnQoKSBjb25zdDsKIAogICAgIHZv
aWQgc2V0Q29udGVudEZyYW1lKEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVTZXRFbGVtZW50LmNwcAppbmRleCAyODU2NDI0OTUwYTM0OWM5YjcyOTUwM2M1ZjRmMTIxYThl
YzRiMmI3Li41ZDIzN2Q0ODI2YzcyZjg4N2I3ZGIyZmI1MWQ2ZTk3ODY1Njc5YTk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKQEAgLTIzMSwxNSArMjMx
LDEzIEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1v
dmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyCiAgICAgfQogfQogCi1ET01XaW5kb3cqIEhU
TUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitX
aW5kb3dQcm94eSogSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSkKIHsKICAgICBhdXRvIGZyYW1lRWxlbWVudCA9IG1ha2VSZWZQdHIoY2hpbGRy
ZW4oKS0+bmFtZWRJdGVtKG5hbWUpKTsKICAgICBpZiAoIWlzPEhUTUxGcmFtZUVsZW1lbnQ+KGZy
YW1lRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKGF1dG8gZG9j
dW1lbnQgPSBtYWtlUmVmUHRyKGRvd25jYXN0PEhUTUxGcmFtZUVsZW1lbnQ+KGZyYW1lRWxlbWVu
dC5nZXQoKSktPmNvbnRlbnREb2N1bWVudCgpKSkKLSAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5k
b21XaW5kb3coKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZG93bmNhc3Q8SFRN
TEZyYW1lRWxlbWVudD4oKmZyYW1lRWxlbWVudCkuY29udGVudFdpbmRvdygpOwogfQogCiBWZWN0
b3I8QXRvbWljU3RyaW5nPiBIVE1MRnJhbWVTZXRFbGVtZW50OjpzdXBwb3J0ZWRQcm9wZXJ0eU5h
bWVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKaW5k
ZXggZDFmMzc5YjczNWNiNzdmNWU1YWQyZGVjNGViZjE0NDBjN2VlYTMzMi4uYzNjNjhiNTdiZjk3
N2U3YWNlYTkyZmYzYWVjMDk2NDk2ZjcxMjJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBS
ZWZQdHI8SFRNTEZyYW1lU2V0RWxlbWVudD4gZmluZENvbnRhaW5pbmcoRWxlbWVudCogZGVzY2Vu
ZGFudCk7CiAgICAgCiAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gc3VwcG9ydGVkUHJvcGVydHlO
YW1lcygpIGNvbnN0OwotICAgIERPTVdpbmRvdyogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmlu
ZyYpOworICAgIFdpbmRvd1Byb3h5KiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJik7CiAK
IHByaXZhdGU6CiAgICAgSFRNTEZyYW1lU2V0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0
RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRs
CmluZGV4IDMyNTBiOTQ5MGVkYjhiYjE4ZjQ3Yjk4MmNiYjdmNmI0NDA4ZDMxMjUuLjY5NDIxNzNl
NzQ0MDkyNDljMjA1YjBiM2M1MjYyOWUyYWNjNDY5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbApAQCAtMzMsNyArMzMsNyBAQCBpbnRlcmZhY2UgSFRN
TEZyYW1lU2V0RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKIAogICAgIC8vIE5vbi1zdGFuZGFyZCBu
YW1lZCBnZXR0ZXIKICAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgaW4gdGhlIHN0YW5kYXJkLCBj
YW4gd2UgcmVtb3ZlIHRoaXM/Ci0gICAgZ2V0dGVyIERPTVdpbmRvdyAoRE9NU3RyaW5nIG5hbWUp
OworICAgIGdldHRlciBXaW5kb3dQcm94eSAoRE9NU3RyaW5nIG5hbWUpOwogfTsKIAogSFRNTEZy
YW1lU2V0RWxlbWVudCBpbXBsZW1lbnRzIFdpbmRvd0V2ZW50SGFuZGxlcnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCmluZGV4IDNlM2JkY2MxMTA0MTg4YTc4ZGRi
YThlMjc2NDM0ZTRlNjZlNjkwYmMuLmMxNjM5MjJlZTQyMGU3NWMwNGRkMTI4MTk0YjUzNWYzODNj
OTVkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCkBAIC0z
OCw3ICszOCw3IEBAIGludGVyZmFjZSBIVE1MSUZyYW1lRWxlbWVudCA6IEhUTUxFbGVtZW50IHsK
IAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50
IGNvbnRlbnREb2N1bWVudDsKIAotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01XaW5kb3cgY29u
dGVudFdpbmRvdzsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgY29udGVudFdp
bmRvdzsKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZSwgTWF5VGhyb3dFeGNlcHRpb25dIERv
Y3VtZW50IGdldFNWR0RvY3VtZW50KCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVu
dC5jcHAKaW5kZXggZDE1MTI3M2EzNTk0OTNlMWI2YzUzOGYwZjNkOTMxNjg4MDM2NGExNy4uODVj
MTNmZjdmMDIwYWE5YWMyYzZlNGRmMTcyNDZkNDQxMTljNWE1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkSW1h
Z2UuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNp
bmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1
ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKaW5kZXggYjAyM2E0ZTJlZjI4NDMwMzdiZTVkMDhiZjJhNGZlMzgzMWQ1
ZmQ4Zi4uM2UyYTkxNjZmMmM4MDFhZTU1NjYzYmNjYjFiNDkwYWUwOWZhZjFiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKIGNsYXNzIFBvc3RNZXNzYWdlVGltZXIgOiBwdWJsaWMgVGltZXJCYXNlIHsK
IHB1YmxpYzoKLSAgICBQb3N0TWVzc2FnZVRpbWVyKERPTVdpbmRvdyYgd2luZG93LCBNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBE
T01XaW5kb3cmIHNvdXJjZSwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmIHRhcmdldE9yaWdpbiwg
UmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFja1RyYWNlKQorICAgIFBvc3RNZXNzYWdlVGlt
ZXIoRE9NV2luZG93JiB3aW5kb3csIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFJlZlB0cjxXaW5kb3dQcm94eT4mJiBzb3VyY2Us
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0YXJnZXRPcmlnaW4sIFJlZlB0cjxTY3JpcHRDYWxs
U3RhY2s+JiYgc3RhY2tUcmFjZSkKICAgICAgICAgOiBtX3dpbmRvdyh3aW5kb3cpCiAgICAgICAg
ICwgbV9tZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpCiAgICAgICAgICwgbV9vcmlnaW4oc291cmNl
T3JpZ2luKQpAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoKIAogICAgIFJlZjxNZXNzYWdlRXZl
bnQ+IGV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgewotICAgICAg
ICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMo
Y29udGV4dCwgV1RGTW92ZShtX21lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpLCBtX21lc3NhZ2Uu
bWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBtX29yaWdpbiwgeyB9LCBNZXNzYWdlRXZlbnRTb3Vy
Y2UoUmVmUHRyPERPTVdpbmRvdz4oV1RGTW92ZShtX3NvdXJjZSkpKSk7CisgICAgICAgIHJldHVy
biBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhjb250ZXh0
LCBXVEZNb3ZlKG1fbWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSksIG1fbWVzc2FnZS5tZXNzYWdl
LnJlbGVhc2VOb25OdWxsKCksIG1fb3JpZ2luLCB7IH0sIG1fc291cmNlID8gc3RkOjptYWtlX29w
dGlvbmFsKE1lc3NhZ2VFdmVudFNvdXJjZShXVEZNb3ZlKG1fc291cmNlKSkpIDogc3RkOjpudWxs
b3B0KTsKICAgICB9CiAKICAgICBTZWN1cml0eU9yaWdpbiogdGFyZ2V0T3JpZ2luKCkgY29uc3Qg
eyByZXR1cm4gbV90YXJnZXRPcmlnaW4uZ2V0KCk7IH0KQEAgLTE4MCw3ICsxODAsNyBAQCBwcml2
YXRlOgogICAgIFJlZjxET01XaW5kb3c+IG1fd2luZG93OwogICAgIE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzIG1fbWVzc2FnZTsKICAgICBTdHJpbmcgbV9vcmlnaW47Ci0gICAgUmVmPERPTVdpbmRv
dz4gbV9zb3VyY2U7CisgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiBtX3NvdXJjZTsKICAgICBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IG1fdGFyZ2V0T3JpZ2luOwogICAgIFJlZlB0cjxTY3JpcHRDYWxs
U3RhY2s+IG1fc3RhY2tUcmFjZTsKICAgICBSZWZQdHI8VXNlckdlc3R1cmVUb2tlbj4gbV91c2Vy
R2VzdHVyZVRvRm9yd2FyZDsKQEAgLTk2MCw3ICs5NjAsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBE
T01XaW5kb3c6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgRE9NV2luZG93JiBp
bmN1bQogICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UgeyBtZXNzYWdlRGF0YS5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSwgZGlzZW50YW5nbGVkUG9ydHMucmVsZWFzZVJldHVyblZhbHVl
KCkgfTsKIAogICAgIC8vIFNjaGVkdWxlIHRoZSBtZXNzYWdlLgotICAgIGF1dG8qIHRpbWVyID0g
bmV3IFBvc3RNZXNzYWdlVGltZXIoKnRoaXMsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9yaWdp
biwgaW5jdW1iZW50V2luZG93LCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUoc3RhY2tUcmFjZSkp
OworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gaW5jdW1iZW50V2luZG93UHJveHkgPSBpbmN1bWJl
bnRXaW5kb3cuZnJhbWUoKSA/ICZpbmN1bWJlbnRXaW5kb3cuZnJhbWUoKS0+d2luZG93UHJveHko
KSA6IG51bGxwdHI7CisgICAgYXV0byogdGltZXIgPSBuZXcgUG9zdE1lc3NhZ2VUaW1lcigqdGhp
cywgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luLCBXVEZNb3ZlKGluY3VtYmVudFdpbmRv
d1Byb3h5KSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHN0YWNrVHJhY2UpKTsKICAgICB0aW1l
ci0+c3RhcnRPbmVTaG90KDBfcyk7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFBvc3RNZXNzYWdlKCptX2ZyYW1lLCAqdGltZXIsIHN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAKaW5kZXggOTE3NGFmZDUzMjE2YzExMmM0YjVlMGQ1NzU4N2M4NmQx
ZmM5YzVhMS4uN2M0OWEyMTdmMDJhNjg1NTQ3MGRiMzE3N2I4ZjU5MzU0MzhmNTY4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTUwOCw3ICs1MDgsNyBAQCBib29s
IERyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1dEV2ZW50Rm9yKEZyYW1lKiBpbm5lckZy
YW1lLCBjb25zdCBEcmFnRGF0YQogICAgIFN0cmluZyB0ZXh0ID0gbV9wYWdlLmRyYWdDYXJldENv
bnRyb2xsZXIoKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpID8gZW1wdHlTdHJpbmcoKSA6IGRy
YWdEYXRhLmFzUGxhaW5UZXh0KCk7CiAgICAgRWxlbWVudCogdGFyZ2V0ID0gaW5uZXJGcmFtZS0+
ZWRpdG9yKCkuZmluZEV2ZW50VGFyZ2V0RnJvbShtX3BhZ2UuZHJhZ0NhcmV0Q29udHJvbGxlcigp
LmNhcmV0UG9zaXRpb24oKSk7CiAgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyB0YXJnZXQg
aXMgbm90IG51bGw/Ci0gICAgYXV0byBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChp
bm5lckZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCk7CisgICAgYXV0byBldmVu
dCA9IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgpLT5kZWZh
dWx0VmlldygpLCB0ZXh0KTsKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogICAg
IHJldHVybiAhZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcAppbmRleCA4N2QxMjc3NGNjNmYzNGFlMDcwMTAwZDE5ZWViNzY1NjVmMjUw
NzlkLi43ZDJjOTNhM2MwZjk4MWY4MDU5ZWE4YjdmMzg2YmZhNmZlMGMwMDRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zODAyLDcgKzM4MDIsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlVGV4dElucHV0RXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFdmVudCog
dW5kZXJseWluZ0V2ZQogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkK
ICAgICAgICAgdmlldy0+ZGlzYWJsZUxheWVyRmx1c2hUaHJvdHRsaW5nVGVtcG9yYXJpbHlGb3JJ
bnRlcmFjdGlvbigpOwogCi0gICAgUmVmPFRleHRFdmVudD4gZXZlbnQgPSBUZXh0RXZlbnQ6OmNy
ZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0LCBpbnB1dFR5cGUpOwor
ICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGUobV9mcmFtZS5kb2N1
bWVudCgpLT5kZWZhdWx0VmlldygpLCB0ZXh0LCBpbnB1dFR5cGUpOwogICAgIGV2ZW50LT5zZXRV
bmRlcmx5aW5nRXZlbnQodW5kZXJseWluZ0V2ZW50KTsKIAogICAgIHRhcmdldC0+ZGlzcGF0Y2hF
dmVudChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGE4NDI2NWFhNzkzNmMzNDg5MmNj
OWUwNzFhOTkwYjlhZDFlNTExNjguLjgyODRhNjUzMWRhM2FhMDFkMGZmYmNlZGIwODU4MTE3MjBi
NjZiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0yMTIsNiArMjEyLDcgQEAgUmVmPEZyYW1l
PiBGcmFtZTo6Y3JlYXRlKFBhZ2UqIHBhZ2UsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJF
bGVtZW50LCBGcmFtZUwKIAogRnJhbWU6On5GcmFtZSgpCiB7CisgICAgd2luZG93UHJveHkoKS5k
ZXN0cm95QWxsSlNXaW5kb3dQcm94aWVzKCk7CiAgICAgc2V0VmlldyhudWxscHRyKTsKICAgICBs
b2FkZXIoKS5jYW5jZWxBbmRDbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUFic3RyYWN0Vmlldy5tbQppbmRleCAxYTRjMjliMWIwZGRhYzgyMjU3YmQ2ZjRiYTZk
YzQ0ZmYzOTEyZTg5Li4xNjllNGFlNWZlNzc1Yjk4ZDI0Y2Q0ODA2YTVhOWM1MDc4ZTEwZTA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXcubW0KQEAg
LTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9XaW5kb3dQcm94eS5oPgogCiAjZGVmaW5lIElNUEwgcmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpGcmFtZSo+KF9pbnRlcm5hbCkKIApAQCAtMTAwLDMgKzEw
MSwxOSBAQCBET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpBYnN0cmFjdERPTVdpbmRvdyog
dmFsdWUpCiAKICAgICByZXR1cm4ga2l0KGRvd25jYXN0PFdlYkNvcmU6OkRPTVdpbmRvdz4odmFs
dWUpKTsKIH0KKworRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6V2luZG93UHJveHkqIHdp
bmRvd1Byb3h5KQoreworICAgIGlmICghd2luZG93UHJveHkpCisgICAgICAgIHJldHVybiBuaWw7
CisKKyAgICByZXR1cm4ga2l0KHdpbmRvd1Byb3h5LT53aW5kb3coKSk7Cit9CisKK1dlYkNvcmU6
OldpbmRvd1Byb3h5KiB0b1dpbmRvd1Byb3h5KERPTUFic3RyYWN0VmlldyAqdmlldykKK3sKKyAg
ICBhdXRvKiB3aW5kb3cgPSBjb3JlKHZpZXcpOworICAgIGlmICghd2luZG93IHx8ICF3aW5kb3ct
PmZyYW1lKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuICZ3aW5kb3ctPmZyYW1l
KCktPndpbmRvd1Byb3h5KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oCmluZGV4IGM0ZDczMjVjN2YyNWJiNWI4NjEy
NzQxNmUzZDkwZDI4MjE0YzExOTcuLjM1OWYwNWViNGQ0YTQzYWE1MjQyMzNlNGJiZjY2MjhkYjM2
ODg2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFj
dFZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0
cmFjdFZpZXdJbnRlcm5hbC5oCkBAIC0yOCwxMSArMjgsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEFic3RyYWN0RE9NV2luZG93OwogY2xhc3MgRE9NV2luZG93OworY2xhc3MgV2lu
ZG93UHJveHk7CiB9CiAKIFdlYkNvcmU6OkRPTVdpbmRvdyogY29yZShET01BYnN0cmFjdFZpZXcg
Kik7CiBET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpET01XaW5kb3cqKTsKIERPTUFic3Ry
YWN0VmlldyAqa2l0KFdlYkNvcmU6OkFic3RyYWN0RE9NV2luZG93Kik7CitET01BYnN0cmFjdFZp
ZXcgKmtpdChXZWJDb3JlOjpXaW5kb3dQcm94eSopOworV2ViQ29yZTo6V2luZG93UHJveHkqIHRv
V2luZG93UHJveHkoRE9NQWJzdHJhY3RWaWV3ICopOwogCiBAaW50ZXJmYWNlIERPTUFic3RyYWN0
VmlldyAoV2ViS2l0TGVnYWN5SW50ZXJuYWwpCiAtICh2b2lkKV9kaXNjb25uZWN0RnJhbWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KaW5kZXggNmMyZjM2ZDgy
NGE5NGE2ODIzYmYyYTgxYzliZWQyMjM0ZTdhNjhmNC4uYTdiODEzNDAwOTVmNjYzODE2NTQyZWJm
ODY0YWJjYzU5YmY4ZjNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1
bWVudC5tbQpAQCAtODQsNiArODQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9UcmVlV2Fsa2VyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dpbmRvd1Byb3h5Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1hQYXRoRXhwcmVzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9YUGF0aE5TUmVzb2x2
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvWFBhdGhSZXN1bHQuaD4KQEAgLTE2Miw3ICsxNjMsMTAg
QEAgLSAodm9pZClzZXREb2N1bWVudFVSSTooTlNTdHJpbmcgKiluZXdEb2N1bWVudFVSSQogLSAo
RE9NQWJzdHJhY3RWaWV3ICopZGVmYXVsdFZpZXcKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5kZWZh
dWx0VmlldygpKSk7CisgICAgYXV0byogZGVmYXVsdFZpZXcgPSBJTVBMLT5kZWZhdWx0Vmlldygp
OworICAgIGlmICghZGVmYXVsdFZpZXcpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJu
IGtpdChkZWZhdWx0Vmlldy0+d2luZG93KCkpOwogfQogCiAtIChET01TdHlsZVNoZWV0TGlzdCAq
KXN0eWxlU2hlZXRzCkBAIC02ODQsNyArNjg4LDcgQEAgLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlv
biAqKWdldENvbXB1dGVkU3R5bGU6KERPTUVsZW1lbnQgKillbGVtZW50IHBzZXVkb0VsZW1lbnQK
ICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgaWYgKCFlbGVt
ZW50KQogICAgICAgICByYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOwotICAgIFdlYkNvcmU6OkRP
TVdpbmRvdyogZHYgPSBJTVBMLT5kZWZhdWx0VmlldygpOworICAgIFdlYkNvcmU6OkRPTVdpbmRv
dyogZHYgPSBJTVBMLT5kb21XaW5kb3coKTsKICAgICBpZiAoIWR2KQogICAgICAgICByZXR1cm4g
bmlsOwogICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoZHYtPmdldENvbXB1dGVkU3R5bGUoKmNv
cmUoZWxlbWVudCksIHBzZXVkb0VsZW1lbnQpKSk7CkBAIC02OTgsNyArNzAyLDcgQEAgLSAoRE9N
Q1NTUnVsZUxpc3QgKilnZXRNYXRjaGVkQ1NTUnVsZXM6KERPTUVsZW1lbnQgKillbGVtZW50IHBz
ZXVkb0VsZW1lbnQ6KE5TU3QKIC0gKERPTUNTU1J1bGVMaXN0ICopZ2V0TWF0Y2hlZENTU1J1bGVz
OihET01FbGVtZW50ICopZWxlbWVudCBwc2V1ZG9FbGVtZW50OihOU1N0cmluZyAqKXBzZXVkb0Vs
ZW1lbnQgYXV0aG9yT25seTooQk9PTClhdXRob3JPbmx5CiB7CiAgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogZHYgPSBJTVBM
LT5kZWZhdWx0VmlldygpOworICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogZHYgPSBJTVBMLT5kb21X
aW5kb3coKTsKICAgICBpZiAoIWR2KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBr
aXQoV1RGOjpnZXRQdHIoZHYtPmdldE1hdGNoZWRDU1NSdWxlcyhjb3JlKGVsZW1lbnQpLCBwc2V1
ZG9FbGVtZW50LCBhdXRob3JPbmx5KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQppbmRleCA5NzdlYjRhNmI4Mjk2N2Q0ZDhiZGQ4
YmVmYjNiMDE5N2Q1NDllNjg2Li5kNWFiMDExZjhmZjMxZTYyMGY5NzA0YzA3ZGM1Njg0OTAzNWM2
ZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1l
RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1l
RWxlbWVudC5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgogI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9XaW5kb3dQcm94eS5oPgogI2ltcG9y
dCA8d3RmL0dldFB0ci5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRN
TEZyYW1lRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5h
bCkpCkBAIC0xNDgsNyArMTQ5LDEwIEBAIC0gKERPTURvY3VtZW50ICopY29udGVudERvY3VtZW50
CiAtIChET01BYnN0cmFjdFZpZXcgKiljb250ZW50V2luZG93CiB7CiAgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1Q
TC0+Y29udGVudFdpbmRvdygpKSk7CisgICAgYXV0byogY29udGVudFdpbmRvdyA9IElNUEwtPmNv
bnRlbnRXaW5kb3coKTsKKyAgICBpZiAoIWNvbnRlbnRXaW5kb3cpCisgICAgICAgIHJldHVybiBu
aWw7CisgICAgcmV0dXJuIGtpdChjb250ZW50V2luZG93LT53aW5kb3coKSk7CiB9CiAKIC0gKE5T
U3RyaW5nICopbG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MSUZyYW1lRWxlbWVudC5tbQppbmRleCBiMWIyYzAzMThiMjBiNzI4YmU1MTc3NjEyYzRh
YzdhMzlkNzIxYTZkLi42ZWEzNzNhYzMyMjY3ZjAwYzQzNWI2NmZlY2M0OTBjYTY2ZTQyOGE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTElGcmFtZUVsZW1l
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVt
ZW50Lm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dpbmRvd1Byb3h5Lmg+CiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSUZy
YW1lRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkp
CkBAIC0xOTYsNyArMTk3LDEwIEBAIC0gKERPTURvY3VtZW50ICopY29udGVudERvY3VtZW50CiAt
IChET01BYnN0cmFjdFZpZXcgKiljb250ZW50V2luZG93CiB7CiAgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+
Y29udGVudFdpbmRvdygpKSk7CisgICAgYXV0byogY29udGVudFdpbmRvdyA9IElNUEwtPmNvbnRl
bnRXaW5kb3coKTsKKyAgICBpZiAoIWNvbnRlbnRXaW5kb3cpCisgICAgICAgIHJldHVybiBuaWw7
CisgICAgcmV0dXJuIGtpdChjb250ZW50V2luZG93LT53aW5kb3coKSk7CiB9CiAKIEBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01LZXlib2FyZEV2ZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0KaW5kZXgg
ZTlhYjFmZWZlNzRkOTczNGVhYzI4NDE2YjA5ZWYyMzEwZmNmYzcxYi4uYmEyZmJlNGUxODlkNjEz
NmVlZDczNWVmZmZlNzEyMGI3Zjk2OTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0KQEAgLTExMCwyNSArMTEwLDI1IEBAIC0gKEJPT0wp
Z2V0TW9kaWZpZXJTdGF0ZTooTlNTdHJpbmcgKilrZXlJZGVudGlmaWVyQXJnCiAtICh2b2lkKWlu
aXRLZXlib2FyZEV2ZW50OihOU1N0cmluZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJs
ZSBjYW5jZWxhYmxlOihCT09MKWNhbmNlbGFibGUgdmlldzooRE9NQWJzdHJhY3RWaWV3ICopdmll
dyBrZXlJZGVudGlmaWVyOihOU1N0cmluZyAqKWluS2V5SWRlbnRpZmllciBsb2NhdGlvbjoodW5z
aWduZWQpaW5Mb2NhdGlvbiBjdHJsS2V5OihCT09MKWluQ3RybEtleSBhbHRLZXk6KEJPT0wpaW5B
bHRLZXkgc2hpZnRLZXk6KEJPT0wpaW5TaGlmdEtleSBtZXRhS2V5OihCT09MKWluTWV0YUtleSBh
bHRHcmFwaEtleTooQk9PTClpbkFsdEdyYXBoS2V5CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50KHR5cGUsIGNh
bkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29yZSh2aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBpbkxvY2F0
aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXksIGluQWx0R3Jh
cGhLZXkpOworICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2Fu
Y2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBpbkxvY2F0aW9u
LCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXksIGluQWx0R3JhcGhL
ZXkpOwogfQogCiAtICh2b2lkKWluaXRLZXlib2FyZEV2ZW50OihOU1N0cmluZyAqKXR5cGUgY2Fu
QnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihCT09MKWNhbmNlbGFibGUgdmlldzoo
RE9NQWJzdHJhY3RWaWV3ICopdmlldyBrZXlJZGVudGlmaWVyOihOU1N0cmluZyAqKWluS2V5SWRl
bnRpZmllciBsb2NhdGlvbjoodW5zaWduZWQpaW5Mb2NhdGlvbiBjdHJsS2V5OihCT09MKWluQ3Ry
bEtleSBhbHRLZXk6KEJPT0wpaW5BbHRLZXkgc2hpZnRLZXk6KEJPT0wpaW5TaGlmdEtleSBtZXRh
S2V5OihCT09MKWluTWV0YUtleQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIGNvcmUodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5Mb2NhdGlvbiwgaW5DdHJs
S2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5KTsKKyAgICBJTVBMLT5pbml0S2V5
Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRvV2luZG93UHJveHkodmll
dyksIGluS2V5SWRlbnRpZmllciwgaW5Mb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5T
aGlmdEtleSwgaW5NZXRhS2V5KTsKIH0KIAogLSAodm9pZClpbml0S2V5Ym9hcmRFdmVudDooTlNT
dHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTClj
YW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKXZpZXcga2V5SWRlbnRpZmllcjooTlNT
dHJpbmcgKilpbktleUlkZW50aWZpZXIga2V5TG9jYXRpb246KHVuc2lnbmVkKWluS2V5TG9jYXRp
b24gY3RybEtleTooQk9PTClpbkN0cmxLZXkgYWx0S2V5OihCT09MKWluQWx0S2V5IHNoaWZ0S2V5
OihCT09MKWluU2hpZnRLZXkgbWV0YUtleTooQk9PTClpbk1ldGFLZXkgYWx0R3JhcGhLZXk6KEJP
T0wpaW5BbHRHcmFwaEtleQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNl
bGFibGUsIGNvcmUodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5LZXlMb2NhdGlvbiwgaW5DdHJs
S2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkFsdEdyYXBoS2V5KTsKKyAg
ICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRv
V2luZG93UHJveHkodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5LZXlMb2NhdGlvbiwgaW5DdHJs
S2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkFsdEdyYXBoS2V5KTsKIH0K
IAogLSAodm9pZClpbml0S2V5Ym9hcmRFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZToo
Qk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3Ry
YWN0VmlldyAqKXZpZXcga2V5SWRlbnRpZmllcjooTlNTdHJpbmcgKilpbktleUlkZW50aWZpZXIg
a2V5TG9jYXRpb246KHVuc2lnbmVkKWluS2V5TG9jYXRpb24gY3RybEtleTooQk9PTClpbkN0cmxL
ZXkgYWx0S2V5OihCT09MKWluQWx0S2V5IHNoaWZ0S2V5OihCT09MKWluU2hpZnRLZXkgbWV0YUtl
eTooQk9PTClpbk1ldGFLZXkKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCBjb3JlKHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluS2V5TG9jYXRpb24sIGluQ3Ry
bEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSk7CisgICAgSU1QTC0+aW5pdEtl
eWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRvd1Byb3h5KHZp
ZXcpLCBpbktleUlkZW50aWZpZXIsIGluS2V5TG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXks
IGluU2hpZnRLZXksIGluTWV0YUtleSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KaW5kZXggN2M3ZTBkZGZmMTQyMTYxZWU0OGU2Nzc3
MDI1ZTdmNzBlODUzYTgxMy4uZTUxNWQ4OTM1YzE3N2Q0NzEwOTRhODRjNWNmYjhkNjRkYjI5NDM4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KQEAg
LTE0NSw3ICsxNDUsNyBAQCAtICh2b2lkKWluaXRNb3VzZUV2ZW50OihOU1N0cmluZyAqKXR5cGUg
Y2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihCTwogICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBET01Ob2RlKiBpblJlbGF0ZWRUYXJnZXRP
YmpDID0gaW5SZWxhdGVkVGFyZ2V0OwogICAgIFdlYkNvcmU6Ok5vZGUqIGluUmVsYXRlZFRhcmdl
dE5vZGUgPSBjb3JlKGluUmVsYXRlZFRhcmdldE9iakMpOwotICAgIElNUEwtPmluaXRNb3VzZUV2
ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29yZSh2aWV3KSwgZGV0YWlsLCBpblNj
cmVlblgsIGluU2NyZWVuWSwgaW5DbGllbnRYLCBpbkNsaWVudFksIGluQ3RybEtleSwgaW5BbHRL
ZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwgaW5CdXR0b24sIGluUmVsYXRlZFRhcmdldE5vZGUp
OworICAgIElNUEwtPmluaXRNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwg
dG9XaW5kb3dQcm94eSh2aWV3KSwgZGV0YWlsLCBpblNjcmVlblgsIGluU2NyZWVuWSwgaW5DbGll
bnRYLCBpbkNsaWVudFksIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtl
eSwgaW5CdXR0b24sIGluUmVsYXRlZFRhcmdldE5vZGUpOwogfQogCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbQppbmRleCAyODY3YmM4MDIzOTE2YTdl
Njc4MGZhM2ViNzEyMGM5YzkxYWQyYTQyLi5kZmE3NjIwMjRiNTY2MjJjZTViMjk5MWRmMzEyZGZk
NTM4NzBkMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4
dEV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQu
bW0KQEAgLTUwLDcgKzUwLDcgQEAgLSAoTlNTdHJpbmcgKilkYXRhCiAtICh2b2lkKWluaXRUZXh0
RXZlbnQ6KE5TU3RyaW5nICopdHlwZUFyZyBjYW5CdWJibGVBcmc6KEJPT0wpY2FuQnViYmxlQXJn
IGNhbmNlbGFibGVBcmc6KEJPT0wpY2FuY2VsYWJsZUFyZyB2aWV3QXJnOihET01BYnN0cmFjdFZp
ZXcgKil2aWV3QXJnIGRhdGFBcmc6KE5TU3RyaW5nICopZGF0YUFyZwogewogICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0VGV4dEV2ZW50KHR5
cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywgY29yZSh2aWV3QXJnKSwgZGF0YUFy
Zyk7CisgICAgSU1QTC0+aW5pdFRleHRFdmVudCh0eXBlQXJnLCBjYW5CdWJibGVBcmcsIGNhbmNl
bGFibGVBcmcsIHRvV2luZG93UHJveHkodmlld0FyZyksIGRhdGFBcmcpOwogfQogCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCmluZGV4IGE0NjRkYWNmYmY1
MTI2NmJhOTJlNTk3NzE5MjlkODYzMWYyZjE2NDAuLjkxMDM3OWU2NTlmZGM5MjVjYjNjM2MyMDQ0
ZmI0N2Q2ODg3ZTA0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01VSUV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50
Lm1tCkBAIC00NSw3ICs0NSw5IEBAIEBpbXBsZW1lbnRhdGlvbiBET01VSUV2ZW50CiAtIChET01B
YnN0cmFjdFZpZXcgKil2aWV3CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+dmlldygpKSk7CisgICAg
aWYgKCFJTVBMLT52aWV3KCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIGtpdChJ
TVBMLT52aWV3KCktPndpbmRvdygpKTsKIH0KIAogLSAoaW50KWRldGFpbApAQCAtMTAzLDcgKzEw
NSw3IEBAIC0gKGludCl3aGljaAogLSAodm9pZClpbml0VUlFdmVudDooTlNTdHJpbmcgKil0eXBl
IGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZp
ZXc6KERPTUFic3RyYWN0VmlldyAqKWluVmlldyBkZXRhaWw6KGludClpbkRldGFpbAogewogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0VUlF
dmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUoaW5WaWV3KSwgaW5EZXRhaWwp
OworICAgIElNUEwtPmluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9X
aW5kb3dQcm94eShpblZpZXcpLCBpbkRldGFpbCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01XaGVlbEV2ZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQubW0KaW5kZXggOGYwNTY5Y2E2YTNmOTU4Yzc0
MWY2ZDg4MzU4ZmZmZDE2MGIxOGFjOC4uZGQ0YTU3YjBmMzJiNzdiNDMwYjZkZDljZDViMTUyMzRl
NWE0MzRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVs
RXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQu
bW0KQEAgLTk2LDcgKzk2LDcgQEAgLSAoQk9PTClpc0hvcml6b250YWwKIC0gKHZvaWQpaW5pdFdo
ZWVsRXZlbnQ6KGludClpbldoZWVsRGVsdGFYIHdoZWVsRGVsdGFZOihpbnQpaW5XaGVlbERlbHRh
WSB2aWV3OihET01BYnN0cmFjdFZpZXcgKil2aWV3IHNjcmVlblg6KGludClzY3JlZW5YIHNjcmVl
blk6KGludClzY3JlZW5ZIGNsaWVudFg6KGludCljbGllbnRYIGNsaWVudFk6KGludCljbGllbnRZ
IGN0cmxLZXk6KEJPT0wpY3RybEtleSBhbHRLZXk6KEJPT0wpYWx0S2V5IHNoaWZ0S2V5OihCT09M
KXNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wpbWV0YUtleQogewogICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0V2ViS2l0V2hlZWxFdmVudChpbldo
ZWVsRGVsdGFYLCBpbldoZWVsRGVsdGFZLCBjb3JlKHZpZXcpLCBzY3JlZW5YLCBzY3JlZW5ZLCBj
bGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KTsKKyAg
ICBJTVBMLT5pbml0V2ViS2l0V2hlZWxFdmVudChpbldoZWVsRGVsdGFYLCBpbldoZWVsRGVsdGFZ
LCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZ
LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KTsKIH0KIAogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmluZGV4IDFiNDNkZDlmNGNhMTM1
YjJkMWM0ZDRjNDY5Zjg2ODU1NWM0N2U5NjYuLmIyNTI2MWY3ZGZjZTFiN2NmNDcxYTlkMWYyM2Ni
MDg3YjI1NzdhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVD
bGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5j
cHAKQEAgLTgwMiw3ICs4MDIsNyBAQCBIUkVTVUxUIERPTURvY3VtZW50OjpnZXRDb21wdXRlZFN0
eWxlKF9Jbl9vcHRfIElET01FbGVtZW50KiBlbHQsIF9Jbl8gQlNUUiBwc2V1ZAogICAgIGlmICgh
ZWxlbWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIFdlYkNvcmU6OkRPTVdpbmRv
dyogZHYgPSBtX2RvY3VtZW50LT5kZWZhdWx0VmlldygpOworICAgIGF1dG8qIGR2ID0gbV9kb2N1
bWVudC0+ZG9tV2luZG93KCk7CiAgICAgU3RyaW5nIHBzZXVkb0VsdFN0cmluZyhwc2V1ZG9FbHQp
OwogICAgIAogICAgIGlmICghZHYpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338886</attachid>
            <date>2018-04-26 10:14:29 -0700</date>
            <delta_ts>2018-04-26 10:35:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185022-20180426101428.patch</filename>
            <type>text/plain</type>
            <size>132510</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNmYmU3ZTk5YzEwNmQx
NzM1Nzc3MGZmMTQxMzkwZjdlODNmNmU2My4uYWM4MDhlYTIzNDlkYzE2MzM0MWFkMmRkY2ZiOTIz
OWJkMjQ0MjQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxOC0wNC0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94eSBp
bnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHVzaW5nIERPTVdpbmRvdyBpbiBhbGwgb2Ygb3Vy
IElETCBmaWxlcyBhbmQgdXNlIFdpbmRvd1Byb3h5IGFzCisgICAgICAgIHBlciB0aGVpciByZXNw
ZWN0aXZlIHNwZWNpZmljYXRpb25zLiBBcyBhIHJlc3VsdCwgdGhlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGFzIGFsc28gdXBkYXRlZCB0byB1c2UgV2luZG93UHJveHkgdHlwZSBpbnN0ZWFkIG9m
IERPTVdpbmRvdy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXaW5kb3dQcm94eTo6d2luZG93UHJveHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9XaW5kb3dQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eTo6
fldpbmRvd1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpkZXN0cm95QWxs
SlNXaW5kb3dQcm94aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpnbG9iYWxP
YmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpXaW5kb3dQcm94eTo6ZnJhbWUgY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKElzQnVpbHRpblR5cGUpOgorICAgICAg
ICAoQ29tcHV0ZUlzQ2FsbGJhY2tJbnRlcmZhY2UpOgorICAgICAgICAoQ29tcHV0ZUlzQ2FsbGJh
Y2tGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChBZGRUb0luY2x1ZGVzRm9ySURMVHlwZSk6CisgICAgICAgIChHZXRCYXNl
SURMVHlwZSk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWVET01Db252ZXJ0TmVlZHNTdGF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RPdmVybG9hZERpc3BhdGNoZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50
KToKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5oOgorICAgICAgICAqIGRvbS9Db21w
b3NpdGlvbkV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmRlZmF1bHRWaWV3IGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudFRvdWNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VG91Y2g6OmNyZWF0ZVRv
dWNoKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRUb3VjaC5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudFRvdWNoLmlkbDoKKyAgICAgICAgKiBkb20vRm9jdXNFdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb2N1c0V2ZW50OjpGb2N1c0V2ZW50KToKKyAgICAgICAgKiBkb20vRm9jdXNFdmVu
dC5oOgorICAgICAgICAqIGRvbS9JbnB1dEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0RXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEV2ZW50OjpJbnB1dEV2
ZW50KToKKyAgICAgICAgKiBkb20vSW5wdXRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2Fy
ZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OktleWJvYXJkRXZlbnQ6OmNoYXJDb2RlIGNvbnN0KToKKyAgICAgICAgKiBkb20vS2V5
Ym9hcmRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmlkbDoKKyAgICAgICAg
KiBkb20vTWVzc2FnZUV2ZW50Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5pZGw6Cisg
ICAgICAgICogZG9tL01vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayk6CisgICAgICAgICogZG9t
L01vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5pZGw6CisgICAgICAgICog
ZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRl
ZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0
ZWRFdmVudDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6ZnJh
bWVWaWV3RnJvbVdpbmRvd1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2
ZW50Ojppbml0Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZl
bnQ6OmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUGFnZUxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpsb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyBj
b25zdCk6CisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50Lmg6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAqIGRvbS9TaW11bGF0ZWRDbGljay5jcHA6CisgICAgICAgICog
ZG9tL1RleHRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3ApOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEV2ZW50OjpUZXh0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50Ojppbml0
VGV4dEV2ZW50KToKKyAgICAgICAgKiBkb20vVGV4dEV2ZW50Lmg6CisgICAgICAgICogZG9tL1Rl
eHRFdmVudC5pZGw6CisgICAgICAgICogZG9tL1RvdWNoRXZlbnQuaWRsOgorICAgICAgICAqIGRv
bS9VSUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVJRXZlbnQ6OlVJRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VUlFdmVudDo6aW5pdFVJRXZlbnQpOgorICAgICAgICAqIGRvbS9VSUV2
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpVSUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VUlFdmVudDo6dmlldyBjb25zdCk6CisgICAgICAgICogZG9tL1VJRXZlbnQuaWRsOgor
ICAgICAgICAqIGRvbS9VSUV2ZW50SW5pdC5oOgorICAgICAgICAqIGRvbS9VSUV2ZW50SW5pdC5p
ZGw6CisgICAgICAgICogZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlVJRXZlbnRXaXRoS2V5U3RhdGU6OlVJRXZlbnRXaXRoS2V5U3RhdGUpOgorICAgICAgICAq
IGRvbS9XaGVlbEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OldoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2ZW50KToKKyAgICAgICAgKiBk
b20vV2hlZWxFdmVudC5oOgorICAgICAgICAqIGRvbS9XaGVlbEV2ZW50LmlkbDoKKyAgICAgICAg
KiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3Rl
QXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRDb21wb3NpdGlvbik6CisgICAgICAgICog
aHRtbC9IVE1MRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50Ojpu
YW1lZEl0ZW0pOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGw6
CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50V2luZG93IGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50
OjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3N0TWVzc2Fn
ZVRpbWVyOjpQb3N0TWVzc2FnZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc3RNZXNzYWdl
VGltZXI6OmV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2Up
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlVGV4dElucHV0RXZlbnQpOgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6fkZyYW1lKToKKyAgICAgICAgVXBkYXRlIEZyYW1lIGRlc3RydWN0
b3IgdG8gZGVzdHJveSBhbGwgaXRzIEpTV2luZG93UHJveGllcyBiZWZvcmUgZG9pbmcgYW55dGhp
bmcgZWxzZS4KKyAgICAgICAgQmVjYXVzZSByZWZpbmcgYSBXaW5kb3dQcm94eSBhY3R1YWxseSBy
ZWZzIGl0cyBmcmFtZSwgaXQgaXMgcG9zc2libGUgdGhhdCB3aGVuIGEgSlMKKyAgICAgICAgb2Jq
ZWN0IGlzIHN3ZXB0LCBpdHMgZGVzdHJveXMgYSBXaW5kb3dQcm94eSwgd2hpY2ggZGVzdHJveXMg
YSBGcmFtZS4gVGhlIEZyYW1lIGRlc3RydWN0b3IKKyAgICAgICAgd291bGQgdGhlbiBjYWxsIEZy
YW1lTG9hZGVyOjpjYW5jZWxBbmRDbGVhcigpIHdoaWNoIHdvdWxkIGVuZCB1cCBjYWxsaW5nIFNj
cmlwdENvbnRyb2xsZXI6OmVuYWJsZUV2YWwoKQorICAgICAgICBhbmQgYWNjZXNzaW5nIEpTV2lu
ZG93UHJveHk6OndpbmRvdygpLiBUaGlzIHdvdWxkIGhpdCBhbiBhc3NlcnRpb24gd2hlbiBkb2lu
ZyB0aGUganNDYXN0KCkgaW4KKyAgICAgICAgSlNDZWxsOjpjbGFzc0luZm8oSlNDOjpWTSYpOgor
ICAgICAgICBBU1NFUlQodm0uaGVhcC5tdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OlN3
ZWVwaW5nIHx8ICF2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKwogMjAxOC0w
NC0yMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1dQRV1bR1RLXSBSZW1vdmUgV2xVbmlxdWVQdHI8d2xfZGlzcGxheT4gZm9vdGd1bgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGYzMDg5NWFiYWY2NzAwMjA3NDJkNGVmYzAzOTAx
OGRhMjc3ZTc2YWYuLjZhZDUyNWU5ODEwZWEwMjY3MmZlMWUwOTM3NTYxMWI4ZjM4NjQwMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0wNC0yNiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94
eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01BYnN0cmFjdFZpZXcubW06CisgICAg
ICAgIChraXQpOgorICAgICAgICAodG9XaW5kb3dQcm94eSk6CisgICAgICAgICogRE9NL0RPTUFi
c3RyYWN0Vmlld0ludGVybmFsLmg6CisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOgorICAg
ICAgICAoLVtET01Eb2N1bWVudCBkZWZhdWx0Vmlld10pOgorICAgICAgICAoLVtET01Eb2N1bWVu
dCBnZXRDb21wdXRlZFN0eWxlOnBzZXVkb0VsZW1lbnQ6XSk6CisgICAgICAgICgtW0RPTURvY3Vt
ZW50IGdldE1hdGNoZWRDU1NSdWxlczpwc2V1ZG9FbGVtZW50OmF1dGhvck9ubHk6XSk6CisgICAg
ICAgICogRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUhUTUxGcmFt
ZUVsZW1lbnQgY29udGVudFdpbmRvd10pOgorICAgICAgICAqIERPTS9ET01IVE1MSUZyYW1lRWxl
bWVudC5tbToKKyAgICAgICAgKC1bRE9NSFRNTElGcmFtZUVsZW1lbnQgY29udGVudFdpbmRvd10p
OgorICAgICAgICAqIERPTS9ET01LZXlib2FyZEV2ZW50Lm1tOgorICAgICAgICAoLVtET01LZXli
b2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5
SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdy
YXBoS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50
OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5
OmFsdEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50
IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmll
cjprZXlMb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdyYXBoS2V5
Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1
YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjprZXlMb2NhdGlvbjpjdHJsS2V5OmFs
dEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAqIERPTS9ET01Nb3VzZUV2ZW50Lm1t
OgorICAgICAgICAoLVtET01Nb3VzZUV2ZW50IGluaXRNb3VzZUV2ZW50OmNhbkJ1YmJsZTpjYW5j
ZWxhYmxlOnZpZXc6ZGV0YWlsOnNjcmVlblg6c2NyZWVuWTpjbGllbnRYOmNsaWVudFk6Y3RybEtl
eTphbHRLZXk6c2hpZnRLZXk6bWV0YUtleTpidXR0b246cmVsYXRlZFRhcmdldDpdKToKKyAgICAg
ICAgKiBET00vRE9NVGV4dEV2ZW50Lm1tOgorICAgICAgICAoLVtET01UZXh0RXZlbnQgaW5pdFRl
eHRFdmVudDpjYW5CdWJibGVBcmc6Y2FuY2VsYWJsZUFyZzp2aWV3QXJnOmRhdGFBcmc6XSk6Cisg
ICAgICAgICogRE9NL0RPTVVJRXZlbnQubW06CisgICAgICAgICgtW0RPTVVJRXZlbnQgdmlld10p
OgorICAgICAgICAoLVtET01VSUV2ZW50IGluaXRVSUV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxl
OnZpZXc6ZGV0YWlsOl0pOgorICAgICAgICAqIERPTS9ET01XaGVlbEV2ZW50Lm1tOgorICAgICAg
ICAoLVtET01XaGVlbEV2ZW50IGluaXRXaGVlbEV2ZW50OndoZWVsRGVsdGFZOnZpZXc6c2NyZWVu
WDpzY3JlZW5ZOmNsaWVudFg6Y2xpZW50WTpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5
Ol0pOgorCiAyMDE4LTA0LTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjMwOTIxLCByMjMwOTIzLCBy
MjMwOTI0LCByMjMwOTMyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGRkZTgwMDhk
YzE4N2YzMDI0OTk1YjJhNGJjN2Q5Y2QwY2E5ZWZjNGIuLmY5YjU5MDBmMTk5ZTU3Yzc0YWJkNDIz
YTkzMzFhZGQ4ZjQ0N2M4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxOC0wNC0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBXaW5kb3dQcm94eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVD
bGFzc2VzLmNwcDoKKyAgICAgICAgKERPTURvY3VtZW50OjpnZXRDb21wdXRlZFN0eWxlKToKKwog
MjAxOC0wNC0yMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzMDkyMSwgcjIzMDkyMywgcjIzMDkyNCwg
cjIzMDkzMiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAzMGY2NDZlYzc4ODYwMDlkMDgwYjdmY2U4NzJmOTBjMzdjMGJjNjZmLi4w
MTE0ZjIwNThmYWJhOWEyZGUwMTI4NTk3MGE2NjBhZDc0OTQ5ZGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzY1LDcgKzIz
NjUsNiBAQAogCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOTU5RTEx
QjhCQzIyQjAwNEQ5Mzg1IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcg
LyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVS
ZXF1ZXN0VHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTgzQjk2ODdCMTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk2
ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLzsgfTsKLQkJ
ODNCOUU3MEIyMDg2QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I5RTcwOTIwODZC
QTI3MDBFNUQ3NTYgLyogSlNET01Db252ZXJ0V2luZG93UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0JCNUM4ODFENUQ2RjQ1MDA1QTcx
RjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVz
Y2VuZGFudHNDb2xsZWN0aW9uLmggKi87IH07CiAJCTgzQzA1QTVCMUE2ODYyMTIwMDdFNURFQSAv
KiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9OwogCQk4M0MxRDQyNTE3OEQ1QUI0
MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0FyY0Ficy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNDMUQ0MTMxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhT
ZWdBcmNBYnMuaCAqLzsgfTsKQEAgLTk4NzcsNyArOTg3Niw2IEBACiAJCTgzQjc0RUYyMUYzRTBC
RDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVw
YWxpdmVSZXF1ZXN0VHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBL
ZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
M0I5Njg3OTE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0I5RTcwOTIwODZCQTI3MDBFNUQ3NTYgLyogSlNE
T01Db252ZXJ0V2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNET01Db252ZXJ0V2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNDMDVBNTgxQTY4NjIxMjAwN0U1REVB
IC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAv
KiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5ODM1LDcgKzE5ODMzLDYgQEAKIAkJCQk3QzhFMzRBQTFF
NEEzMzhFMDA1NENFMjMgLyogSlNET01Db252ZXJ0VmFyaWFkaWMuaCAqLywKIAkJCQk3Q0JBNUJB
NjFGMEI0QkRFMDAzNEQ3NDUgLyogSlNET01Db252ZXJ0V2ViR0wuY3BwICovLAogCQkJCTdDOEUz
NEFCMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5oICovLAotCQkJCTgzQjlF
NzA5MjA4NkJBMjcwMEU1RDc1NiAvKiBKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oICovLAogCQkJ
CTdDOEUzNEFDMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIu
aCAqLywKIAkJCSk7CiAJCQluYW1lID0gQ29udmVyc2lvbnM7CkBAIC0yODQxNiw3ICsyODQxMyw2
IEBACiAJCQkJN0M4RTM0QzQxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFVuaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRDNTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252
ZXJ0VmFyaWFkaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEM2MUU0QTMzQjAwMDU0Q0Uy
MyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODNCOUU3MEIyMDg2
QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QzhFMzRDNzFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0WFBhdGhOU1Jlc29s
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQzlFMEU0RDE2NDE5QzFFMDAzOTJCRTMgLyogSlNE
T01DU1NOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEN0MxMEQyOUE0NjMwMEI5
OTE4RiAvKiBKU0RPTUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
SURMVHlwZXMuaAppbmRleCA1ZmU3N2U4M2YyM2RhMmIxYjQyMGQxZTM5MmRlYTlkYzA3ZmIxYzgw
Li44MDU3ZGZhMTE1ODg4ZDNkYjRhMGYwYmUyNmI0YzY2MmI2OWM3ODdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL0lETFR5cGVzLmgKQEAgLTI3NCw3ICsyNzQsNiBAQCBzdHJ1Y3QgSURMU2NoZWR1bGVk
QWN0aW9uIDogSURMVHlwZTxzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPj4geyB9Owog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IElE
TFdyYXBwZXI8VD4geyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETEV2ZW50TGlz
dGVuZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJ
RExYUGF0aE5TUmVzb2x2ZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKLXN0cnVjdCBJRExXaW5kb3dQ
cm94eSA6IElETFdyYXBwZXI8SlNXaW5kb3dQcm94eT4geyB9OwogCiBzdHJ1Y3QgSURMSURCS2V5
IDogSURMV3JhcHBlcjxJREJLZXk+IHsgfTsKIHN0cnVjdCBJRExJREJLZXlEYXRhIDogSURMV3Jh
cHBlcjxJREJLZXlEYXRhPiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0V2luZG93UHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODJjMWZmNDgxOTJkZTVjMjA4MmRiN2IzZGUwYWMzYmFhNGIzNGM3Yy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIK
LSNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCi0jaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTQ29udmVydGVy
PElETFdpbmRvd1Byb3h5PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUg
PSB0cnVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9IGZh
bHNlOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgVSYmIHZhbHVlKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsKLSAgICB9Ci19
OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCmlu
ZGV4IDE4ODY3MWU0OWIxZjE0MzE1Yzk4Njc3MWQwN2JhNmY4M2UxYWJkMjcuLmE0YjE4MDVjNjUy
ZTIzMjBiZmQ3OWEwOTc5Mjc5YWNjMDg3YjY5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2luZG93UHJveHkuY3BwCkBAIC0xMTksNiArMTE5LDEyIEBAIHZvaWQgSlNXaW5k
b3dQcm94eTo6c2V0V2luZG93KEFic3RyYWN0RE9NV2luZG93JiBkb21XaW5kb3cpCiAgICAgQVNT
RVJUKHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkgPT0gd2luZG93KTsKIH0KIAorV2luZG93UHJv
eHkqIEpTV2luZG93UHJveHk6OndpbmRvd1Byb3h5KCkgY29uc3QKK3sKKyAgICBhdXRvJiB3aW5k
b3cgPSB3cmFwcGVkKCk7CisgICAgcmV0dXJuIHdpbmRvdy5mcmFtZSgpID8gJndpbmRvdy5mcmFt
ZSgpLT53aW5kb3dQcm94eSgpIDogbnVsbHB0cjsKK30KKwogdm9pZCBKU1dpbmRvd1Byb3h5Ojph
dHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKIHsKICAgICBhdXRvKiBnbG9i
YWxPYmplY3QgPSB3aW5kb3coKTsKQEAgLTEzOCwxMiArMTQ0LDYgQEAgQWJzdHJhY3RET01XaW5k
b3cmIEpTV2luZG93UHJveHk6OndyYXBwZWQoKSBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8SlNE
T01XaW5kb3dCYXNlKj4od2luZG93KS0+d3JhcHBlZCgpOwogfQogCi1BYnN0cmFjdERPTVdpbmRv
dyogSlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKFZNJiB2bSwgSlNPYmplY3QqIHZhbHVlKQotewot
ICAgIGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTV2luZG93UHJveHkqPih2bSwgdmFs
dWUpOwotICAgIHJldHVybiB3cmFwcGVyID8gJndyYXBwZXItPndyYXBwZWQoKSA6IG51bGxwdHI7
Ci19Ci0KIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBXaW5kb3dQcm94eSYgd2luZG93
UHJveHkpCiB7CiAgICAgcmV0dXJuICZ3aW5kb3dQcm94eS5qc1dpbmRvd1Byb3h5KGN1cnJlbnRX
b3JsZCgqc3RhdGUpKTsKQEAgLTE1NCw0ICsxNTQsMTQgQEAgSlNXaW5kb3dQcm94eSYgdG9KU1dp
bmRvd1Byb3h5KFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKICAgICByZXR1cm4gd2luZG93UHJveHkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiB9CiAKK1dp
bmRvd1Byb3h5KiBKU1dpbmRvd1Byb3h5Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVl
KQoreworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBpZiAob2JqZWN0
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNX
aW5kb3dQcm94eSo+KG9iamVjdCktPndpbmRvd1Byb3h5KCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2luZG93UHJveHkuaAppbmRleCAxODVhNTQ1NzhiZjgxNzdjZmNhMTc1YzZlNGIxMWY0NzQ4
YTQwOTQ4Li4zNjI0MGQ4NjZlOGYxMGRhZDYyMWRiZGQ5OWVmYjE3ZTE4MWJkZDk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oCkBAIC0yOCw3ICsyOCw5IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTUHJveHkuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zOSw3
ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJhY3RET01XaW5kb3c7
CiBjbGFzcyBBYnN0cmFjdEZyYW1lOwotY2xhc3MgV2luZG93UHJveHk7CiAKIGNsYXNzIEpTV2lu
ZG93UHJveHkgZmluYWwgOiBwdWJsaWMgSlNDOjpKU1Byb3h5IHsKICAgICB1c2luZyBCYXNlID0g
SlNDOjpKU1Byb3h5OwpAQCAtNTMsOCArNTQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2lu
ZG93KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgc2V0V2luZG93KEFi
c3RyYWN0RE9NV2luZG93Jik7CiAKKyAgICBXaW5kb3dQcm94eSogd2luZG93UHJveHkoKSBjb25z
dDsKKwogICAgIEFic3RyYWN0RE9NV2luZG93JiB3cmFwcGVkKCkgY29uc3Q7Ci0gICAgc3RhdGlj
IFdFQkNPUkVfRVhQT1JUIEFic3RyYWN0RE9NV2luZG93KiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpT
Qzo6SlNPYmplY3QqKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgV2luZG93UHJveHkqIHRv
V3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKIAogICAgIERPTVdyYXBwZXJXb3JsZCYg
d29ybGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CiAKQEAgLTcxLDEwICs3NCwxNiBAQCBwcml2YXRl
OgogLy8gSXQgaXMsIGhvd2V2ZXIsIHN0cm9uZ2x5IG93bmVkIGJ5IEFic3RyYWN0RnJhbWUgdmlh
IGl0cyBXaW5kb3dQcm94eSwgc28gd2UgY2FuIGdldCBvbmUgZnJvbSBhIFdpbmRvd1Byb3h5Lgog
V0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBXaW5kb3dQ
cm94eSYpOwogaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
V2luZG93UHJveHkqIHdpbmRvd1Byb3h5KSB7IHJldHVybiB3aW5kb3dQcm94eSA/IHRvSlMoc3Rh
dGUsICp3aW5kb3dQcm94eSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1pbmxpbmUgSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBSZWZQdHI8V2luZG93UHJveHk+JiB3
aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwgd2luZG93UHJveHkuZ2V0KCkpOyB9Citp
bmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamVjdCosIFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwg
d2luZG93UHJveHkpOyB9CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXaW5kb3dQcm94eSogd2lu
ZG93UHJveHkpIHsgcmV0dXJuIHdpbmRvd1Byb3h5ID8gdG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0
LCAqd2luZG93UHJveHkpIDogSlNDOjpqc051bGwoKTsgfQogCiBKU1dpbmRvd1Byb3h5JiB0b0pT
V2luZG93UHJveHkoV2luZG93UHJveHkmLCBET01XcmFwcGVyV29ybGQmKTsKIGlubGluZSBKU1dp
bmRvd1Byb3h5KiB0b0pTV2luZG93UHJveHkoV2luZG93UHJveHkqIHdpbmRvd1Byb3h5LCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKSB7IHJldHVybiB3aW5kb3dQcm94eSA/ICZ0b0pTV2luZG93UHJv
eHkoKndpbmRvd1Byb3h5LCB3b3JsZCkgOiBudWxscHRyOyB9CiAKIAordGVtcGxhdGU8PiBzdHJ1
Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFdpbmRvd1Byb3h5PiB7CisgICAgdXNpbmcg
V3JhcHBlckNsYXNzID0gSlNXaW5kb3dQcm94eTsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5U
eXBlID0gV2luZG93UHJveHkqOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwCmluZGV4IDhlOGY1MTM1M2VkMWY3
YTBiNWIzZjkzMDRjZjgxYzhhYWNiNzViNWUuLmFiMjQ1YjI0Nzg0YWQ3NzczODZlYzUzNDhmM2Ey
NjkyNDdlODAxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRv
d1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5j
cHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSlNXaW5kb3dQcm94
eS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgog
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtNTMsMTIgKzU0LDE2IEBAIFdpbmRvd1Byb3h5OjpX
aW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJiBmcmFtZSkKIH0KIAogV2luZG93UHJveHk6On5XaW5k
b3dQcm94eSgpCit7CisgICAgZGVzdHJveUFsbEpTV2luZG93UHJveGllcygpOworfQorCit2b2lk
IFdpbmRvd1Byb3h5OjpkZXN0cm95QWxsSlNXaW5kb3dQcm94aWVzKCkKIHsKICAgICAvLyBJdCdz
IGxpa2VseSB0aGF0IGRlc3Ryb3lpbmcgd2luZG93UHJveGllcyB3aWxsIGNyZWF0ZSBhIGxvdCBv
ZiBnYXJiYWdlLgogICAgIGlmICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIHdoaWxlICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBh
dXRvIGl0ID0gbV9qc1dpbmRvd1Byb3hpZXMuYmVnaW4oKTsKLSAgICAgICAgICAgIGl0LT52YWx1
ZS0+d2luZG93KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CiAgICAgICAgICAgICBkZXN0
cm95SlNXaW5kb3dQcm94eSgqaXQtPmtleSk7CiAgICAgICAgIH0KICAgICAgICAgY29sbGVjdEdh
cmJhZ2VBZnRlcldpbmRvd1Byb3h5RGVzdHJ1Y3Rpb24oKTsKQEAgLTkxLDYgKzk2LDExIEBAIFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU1dpbmRvd1Byb3h5Pj4gV2luZG93UHJveHk6OmpzV2luZG93UHJv
eGllc0FzVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fanNXaW5kb3dQ
cm94aWVzLnZhbHVlcygpKTsKIH0KIAorSlNET01HbG9iYWxPYmplY3QqIFdpbmRvd1Byb3h5Ojpn
bG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICByZXR1cm4ganNXaW5k
b3dQcm94eSh3b3JsZCkud2luZG93KCk7Cit9CisKIEpTV2luZG93UHJveHkmIFdpbmRvd1Byb3h5
OjpjcmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaAppbmRleCA3NzcyMjk4M2IwYTMyMmNkMDY3
ZGZiNTA2MmRhMDc3N2E2OGU2NWY4Li44NDY3MDIwOTA3NWY3MzJmNWVlMTUxMTgyN2Q2ZDhiMDgy
ZWY4ODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmgKQEAgLTIw
LDcgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU1dpbmRvd1Byb3h5Lmgi
CisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApAQCAtMzAsNyArMzAsMTAgQEAg
Y2xhc3MgRGVidWdnZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWJzdHJhY3RE
T01XaW5kb3c7CiBjbGFzcyBBYnN0cmFjdEZyYW1lOworY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7
CitjbGFzcyBKU1dpbmRvd1Byb3h5OwogCiBjbGFzcyBXaW5kb3dQcm94eSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00MCw2ICs0Myw4IEBAIHB1YmxpYzoKICAgICBleHBsaWNp
dCBXaW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJik7CiAgICAgfldpbmRvd1Byb3h5KCk7CiAKKyAg
ICBBYnN0cmFjdEZyYW1lJiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KKwogICAg
IHZvaWQgZGVzdHJveUpTV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICBQcm94
eU1hcDo6VmFsdWVzQ29uc3RJdGVyYXRvclJhbmdlIGpzV2luZG93UHJveGllcygpIGNvbnN0IHsg
cmV0dXJuIG1fanNXaW5kb3dQcm94aWVzLnZhbHVlcygpOyB9CkBAIC02MywxMCArNjgsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAoaXQgIT0gbV9qc1dpbmRvd1Byb3hpZXMuZW5kKCkpID8g
aXQtPnZhbHVlLmdldCgpIDogbnVsbHB0cjsKICAgICB9CiAKLSAgICBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCi0gICAgewotICAgICAgICBy
ZXR1cm4ganNXaW5kb3dQcm94eSh3b3JsZCkud2luZG93KCk7Ci0gICAgfQorICAgIFdFQkNPUkVf
RVhQT1JUIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJik7
CiAKICAgICB2b2lkIGNsZWFySlNXaW5kb3dQcm94aWVzTm90TWF0Y2hpbmdET01XaW5kb3coQWJz
dHJhY3RET01XaW5kb3cqLCBib29sIGdvaW5nSW50b1BhZ2VDYWNoZSk7CiAKQEAgLTgwLDYgKzgy
LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVmKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkZXJlZigpOwogCisgICAgdm9pZCBkZXN0cm95QWxsSlNXaW5kb3dQcm94
aWVzKCk7CisKIHByaXZhdGU6CiAgICAgSlNXaW5kb3dQcm94eSYgY3JlYXRlSlNXaW5kb3dQcm94
eShET01XcmFwcGVyV29ybGQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBKU1dpbmRvd1Byb3h5JiBj
cmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBt
CmluZGV4IDk1MjQyOWEwZTQ5Nzc0YmFkMjJjMWU1OGViYjJlNGVkZGJhZDNiNjMuLjJmY2ZlZTNh
N2FhOGYyMmYyNmViZGRiNmE0ZTI4ZmEwMzhiMmY0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTg5MSw3ICs4OTEsNiBAQCBz
dWIgSXNCdWlsdGluVHlwZQogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5T
UmVzb2x2ZXIiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJhbnkiOwogICAgIHJl
dHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJvYmplY3QiOwotICAgIHJldHVybiAxIGlmICR0eXBl
LT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTEwMDEsNiAr
MTAwMCw3IEBAIHN1YiBDb21wdXRlSXNDYWxsYmFja0ludGVyZmFjZQogICAgIGFzc2VydCgiTm90
IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5s
ZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5
cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsKIAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5u
YW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlw
ZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBc
IiR0eXBlTmFtZVwiIVxuIik7CkBAIC0xMDM4LDYgKzEwMzgsNyBAQCBzdWIgQ29tcHV0ZUlzQ2Fs
bGJhY2tGdW5jdGlvbgogICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUg
IklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5sZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlw
ZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsK
IAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9i
amVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlwZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9U
IGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlTmFtZVwiIVxuIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4
IDYyNmE5ZjBiMmQ2ZjA0M2NmOTJiZGYzMmYyOTYyODkyNjExNmU1ZTQuLjMwYTM3NGMyODI0ZmEy
NjA4MjQyYWEzODcxMDk4NDIwMmI1ZDBlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00MjEsMTMgKzQyMSw2IEBAIHN1
YiBBZGRUb0luY2x1ZGVzRm9ySURMVHlwZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKCR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSIpIHsKLSAgICAgICAgQWRkVG9JbmNsdWRl
cygiV2luZG93UHJveHkuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAg
QWRkVG9JbmNsdWRlcygiSlNXaW5kb3dQcm94eS5oIiwgJGluY2x1ZGVzUmVmLCAkY29uZGl0aW9u
YWwpOwotICAgICAgICBBZGRUb0luY2x1ZGVzKCJKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIiwg
JGluY2x1ZGVzUmVmLCAkY29uZGl0aW9uYWwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7CiAgICAgICAgIEFk
ZFRvSW5jbHVkZXMoIkpTRE9NQ29udmVydFN0cmluZ3MuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRp
dGlvbmFsKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjM5Myw3ICs2Mzg2LDYgQEAgc3ViIEdldEJh
c2VJRExUeXBlCiAgICAgICAgICJKU09OIiA9PiAiSURMSlNPTiIsCiAgICAgICAgICJTY2hlZHVs
ZWRBY3Rpb24iID0+ICJJRExTY2hlZHVsZWRBY3Rpb24iLAogICAgICAgICAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlIiA9PiAiSURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4iLAotICAgICAgICAiV2luZG93UHJveHkiID0+ICJJRExXaW5kb3dQcm94eSIsCiAgICAg
ICAgICJYUGF0aE5TUmVzb2x2ZXIiID0+ICJJRExYUGF0aE5TUmVzb2x2ZXI8WFBhdGhOU1Jlc29s
dmVyPiIsCiAgICAgKTsKIApAQCAtNjU1NCw3ICs2NTQ2LDYgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1
ZURPTUNvbnZlcnROZWVkc1N0YXRlCiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIkpT
T04iOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwot
ICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAgICAgCiAgICAg
cmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGJhNDViYjk4ZjIxYTYzMzkwOWQyYmU4ZTBhMWZl
MmRjNzI2YTM0NWYuLmMwNDY2YzI2NmI3MzdmNmM4ODVkMmFhZmQwNWI1ZjE2ZjY4MmQ1MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCkBAIC01NSw3ICs1NSw2IEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIK
ICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCIKICNpbmNsdWRlICJK
U0RPTVN0cmluZ0xpc3QuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpT
RE9NV2luZG93QmFzZS5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiSlNEb2N1bWVudC5oIgpAQCAtNjk1Nyw3ICs2OTU2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDlCb2QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8g
d2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8RE9NV2luZG93Pj4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwg
IndpbmRvdyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiRE9NV2luZG93Iik7
IH0pOworICAgIGF1dG8gd2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8V2luZG93UHJveHk+
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAwLCAid2luZG93IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhv
ZCIsICJXaW5kb3dQcm94eSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqd2luZG93
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNzAyOSw3
ICs3MDI4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZE92ZXIKICAgICAgICAgICAgIHJldHVybiBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2Qm9keShzdGF0ZSwgY2Fz
dGVkVGhpcywgdGhyb3dTY29wZSk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09i
amVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNUZXN0T2Jq
Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kOEJvZHkoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwotICAgICAg
ICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiAoYXNPYmplY3QoZGlzdGluZ3Vp
c2hpbmdBcmcpLT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkgfHwgYXNPYmplY3QoZGlzdGlu
Z3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU0RPTVdpbmRvdz4odm0pKSkKKyAgICAgICAgaWYgKGRp
c3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcp
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOUJvZHkoc3RhdGUsIGNhc3RlZFRo
aXMsIHRocm93U2NvcGUpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzPEpTQmxvYj4odm0pKQog
ICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDEzQm9keShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggYzgzZWVlZWRi
ZjQxNjNmODMyYmNkMjUzZWMwNTc1Njg0NmVlZDY4NC4uNzFkZGZjNDg5ZWQyZDVkYTI1NmZiNWM0
MzBiOTMyZWJkYzRmODcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMjg2LDcgKzI4Niw3IEBAIGVudW0gVGVzdENvbmZpZGVu
Y2UgeyAiaGlnaCIsICJraW5kYS1sb3ciIH07CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9k
KERPTVN0cmluZ0xpc3Q/IGxpc3RBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChz
ZXF1ZW5jZTxET01TdHJpbmc+PyBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0
aG9kKFRlc3RPYmogb2JqQXJnKTsKLSAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoRE9NV2lu
ZG93IHdpbmRvdyk7CisgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFdpbmRvd1Byb3h5IHdp
bmRvdyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKHNlcXVlbmNlPERPTVN0cmluZz4g
YXJyYXlBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChzZXF1ZW5jZTx1bnNpZ25l
ZCBsb25nPiBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmlu
ZyBzdHJBcmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCmluZGV4IDBl
MzhhNjcxOGNkMWRhZDJlNzkwMjhiODkwMDU2YTZmY2I2NDJjOTAuLjAwN2FmN2Q3MjRmNWMzZTRh
MGEzNjExMjU2NmM0ODJlZDZmZDU5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NpdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25F
dmVudC5jcHAKQEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb21wb3Np
dGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KCkgPSBkZWZhdWx0OwogCi1Db21wb3NpdGlvbkV2
ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRE9NV2luZG93
KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgOiBVSUV2ZW50KHR5cGUsIHRydWUsIHRy
dWUsIHZpZXcsIDApCitDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKKyAgICA6IFVJRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwg
MCkKICAgICAsIG1fZGF0YShkYXRhKQogewogfQpAQCAtNDUsMTIgKzQ1LDEyIEBAIENvbXBvc2l0
aW9uRXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25z
dCBJbml0JiBpbml0aWFsCiAKIENvbXBvc2l0aW9uRXZlbnQ6On5Db21wb3NpdGlvbkV2ZW50KCkg
PSBkZWZhdWx0OwogCi12b2lkIENvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCit2b2lkIENvbXBvc2l0aW9u
RXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcs
IGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxh
YmxlLCB2aWV3LCAwKTsKKyAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIFdURk1vdmUodmlldyksIDApOwogCiAgICAgbV9kYXRhID0gZGF0YTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCmluZGV4IDhmZjAyZWM5Njk3NzhiODg1YTYzMTcwMjRj
OTU3NDc2ZTAyMWIyYTYuLjNiMWM0NmQ2MzVlY2FmNmNkMDkxOTA5OGY1MDhmYzQxZTY0Y2ViY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaApAQCAtMzIsOSArMzIsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbXBvc2l0aW9uRXZlbnQgZmluYWwgOiBwdWJs
aWMgVUlFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0
cmluZyYgZGF0YSkKKyAgICBzdGF0aWMgUmVmPENvbXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBT
dHJpbmcmIGRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21wb3Np
dGlvbkV2ZW50KHR5cGUsIHZpZXcsIGRhdGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ29tcG9zaXRpb25FdmVudCh0eXBlLCBXVEZNb3ZlKHZpZXcpLCBkYXRhKSk7CiAgICAgfQog
CiAgICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbXBvc2l0aW9uRXZlbnQo
KTsKIAotICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBT
dHJpbmcmIGRhdGEpOworICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAKICAgICBTdHJpbmcgZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBDb21wb3NpdGlvbkV2ZW50KCk7Ci0gICAgQ29tcG9zaXRpb25FdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYpOworICAgIENv
bXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8V2luZG93UHJv
eHk+JiYsIGNvbnN0IFN0cmluZyYpOwogICAgIENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJvb2wgaXNDb21w
b3NpdGlvbkV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zaXRpb25FdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRp
b25FdmVudC5pZGwKaW5kZXggZDg3MjQwODgzZTI3ZDNiMzQ1ODUzOWViOTIwZjRkM2YyODcxNjZj
NC4uMjBhYWM3ZWE0NzcwZDU2NTllZDQwOTEwZDdhYTc5NTA4ZTY2MTgzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIHZvaWQg
aW5pdENvbXBvc2l0aW9uRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZp
bmVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY2Fu
QnViYmxlQXJnID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25h
bCBib29sZWFuIGNhbmNlbGFibGVBcmcgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlld0FyZyA9IG51bGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlld0FyZyA9IG51bGwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBET01TdHJpbmcgZGF0YUFyZyA9
ICJ1bmRlZmluZWQiKTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDg2ZjgzZTcy
NjQyM2FjNDU0MzVkMzJiZWYwNDk0ZTk5NDllMDU0OTkuLjc4ZjhiZTI3ZTk0MGU0OWE2MDM0OTAx
OTcyOWUzNTJkNTI5NmE2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDI4MCw2ICs0
MjgwLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnRha2VET01XaW5kb3dGcm9tKERvY3VtZW50KiBkb2N1
bWVudCkKICAgICBBU1NFUlQobV9kb21XaW5kb3ctPmZyYW1lKCkgPT0gbV9mcmFtZSk7CiB9CiAK
K1dpbmRvd1Byb3h5KiBEb2N1bWVudDo6ZGVmYXVsdFZpZXcoKSBjb25zdAoreworICAgIGlmICgh
bV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZtX2ZyYW1lLT53
aW5kb3dQcm94eSgpOworfQorCiBEb2N1bWVudCYgRG9jdW1lbnQ6OmNvbnRleHREb2N1bWVudCgp
IGNvbnN0CiB7CiAgICAgaWYgKG1fY29udGV4dERvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCBhNGZiMDJmOWUxYmNiZDQwMGIwY2M4NjUyYWJkNDA0ZjAxYzQ1OTVmLi44NWEyNTY1MjFi
N2NiNzgxNjRjYTQ4ZjYwMDFjYjY4NWIwNTdhNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
Nzk5LDcgKzc5OSw3IEBAIHB1YmxpYzoKIAogICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29u
c3QgeyByZXR1cm4gbV9kb21XaW5kb3cuZ2V0KCk7IH0KICAgICAvLyBJbiBET00gTGV2ZWwgMiwg
dGhlIERvY3VtZW50J3MgRE9NV2luZG93IGlzIGNhbGxlZCB0aGUgZGVmYXVsdFZpZXcuCi0gICAg
RE9NV2luZG93KiBkZWZhdWx0VmlldygpIGNvbnN0IHsgcmV0dXJuIGRvbVdpbmRvdygpOyB9IAor
ICAgIFdFQkNPUkVfRVhQT1JUIFdpbmRvd1Byb3h5KiBkZWZhdWx0VmlldygpIGNvbnN0OwogCiAg
ICAgRG9jdW1lbnQmIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4
dERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkgeyBtX2NvbnRleHREb2N1bWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZVdlYWtQdHIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXggMmQ1YmFh
ZDhjNjA2NDRkYTg5ZDEwN2ZkZGUxODI4Y2Q4YTQ5ZDgyYi4uMDhmNzJhOTIwMDBkM2FjMjBhNjQ0
YzBlNWJjMzQ4MmI0NzVlZGE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0xMTMsNyAr
MTEzLDcgQEAgdHlwZWRlZiAoCiAgICAgW0NFUmVhY3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJs
ZURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB3cml0ZWxuKERPTVN0cmluZy4uLiB0
ZXh0KTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24uCi0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVdpbmRvdz8gZGVmYXVsdFZpZXc7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1By
b3h5PyBkZWZhdWx0VmlldzsKICAgICBib29sZWFuIGhhc0ZvY3VzKCk7CiAgICAgW0NFUmVhY3Rp
b25zXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlc2lnbk1vZGU7CiAgICAgW0NFUmVhY3Rpb25zXSBi
b29sZWFuIGV4ZWNDb21tYW5kKERPTVN0cmluZyBjb21tYW5kSWQsIG9wdGlvbmFsIGJvb2xlYW4g
c2hvd1VJID0gZmFsc2UsIG9wdGlvbmFsIERPTVN0cmluZz8gdmFsdWUgPSBudWxsKTsgLy8gRklY
TUU6IHZhbHVlIHNob3VsZCBub3QgYmUgbnVsbGFibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRUb3VjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRU
b3VjaC5jcHAKaW5kZXggM2Q5MTIzZDhmNzUzMmNiNGRiNzlhNGExMzM1ZDVmMTcyOGNjNTA5YS4u
NDUxNWIwMjJjNzljNzBkYmM4YjE5MjY5MWY5ZDkzY2U1ODVjMWYyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFRvdWNoLmNwcApAQCAtMjgsMjAgKzI4LDI3IEBACiAKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlRvdWNoLmgiCiAjaW5jbHVkZSAiVG91
Y2hMaXN0LmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZWY8VG91Y2g+IERvY3VtZW50VG91Y2g6OmNyZWF0ZVRvdWNoKERvY3VtZW50JiBkb2N1
bWVudCwgRE9NV2luZG93KiB3aW5kb3csIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBpZGVudGlm
aWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQg
cmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKQor
UmVmPFRvdWNoPiBEb2N1bWVudFRvdWNoOjpjcmVhdGVUb3VjaChEb2N1bWVudCYgZG9jdW1lbnQs
IFJlZlB0cjxXaW5kb3dQcm94eT4mJiB3aW5kb3csIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBp
ZGVudGlmaWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5Z
LCBpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZv
cmNlKQogeworICAgIEZyYW1lKiBmcmFtZTsKKyAgICBpZiAod2luZG93ICYmIGlzPEZyYW1lPih3
aW5kb3ctPmZyYW1lKCkpKQorICAgICAgICBmcmFtZSA9IGRvd25jYXN0PEZyYW1lPih3aW5kb3ct
PmZyYW1lKCkpOworICAgIGVsc2UKKyAgICAgICAgZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwor
CiAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIGZyb20gdGhlIGRvY3VtZW50YXRpb24gYXQK
ICAgICAvLyBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L3NhZmFyaS8jZG9jdW1l
bnRhdGlvbi9Vc2VyRXhwZXJpZW5jZS9SZWZlcmVuY2UvRG9jdW1lbnRBZGRpdGlvbnNSZWZlcmVu
Y2UvRG9jdW1lbnRBZGRpdGlvbnMvRG9jdW1lbnRBZGRpdGlvbnMuaHRtbAogICAgIC8vIHdoZW4g
dGhpcyBtZXRob2Qgc2hvdWxkIHRocm93IGFuZCBub3IgaXMgaXQgYnkgaW5zcGVjdGlvbiBvZiBp
T1MgYmVoYXZpb3IuIEl0IHdvdWxkIGJlIG5pY2UgdG8gdmVyaWZ5IGFueSBjYXNlcyB3aGVyZSBp
dCB0aHJvd3MgdW5kZXIgaU9TCiAgICAgLy8gYW5kIGltcGxlbWVudCB0aGVtIGhlcmUuIFNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc4MTkKLSAgICByZXR1cm4g
VG91Y2g6OmNyZWF0ZSh3aW5kb3cgPyB3aW5kb3ctPmZyYW1lKCkgOiBkb2N1bWVudC5mcmFtZSgp
LCB0YXJnZXQsIGlkZW50aWZpZXIsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VYLCBwYWdlWSwgcmFk
aXVzWCwgcmFkaXVzWSwgcm90YXRpb25BbmdsZSwgZm9yY2UpOworICAgIHJldHVybiBUb3VjaDo6
Y3JlYXRlKGZyYW1lLCB0YXJnZXQsIGlkZW50aWZpZXIsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VY
LCBwYWdlWSwgcmFkaXVzWCwgcmFkaXVzWSwgcm90YXRpb25BbmdsZSwgZm9yY2UpOwogfQogCiBS
ZWY8VG91Y2hMaXN0PiBEb2N1bWVudFRvdWNoOjpjcmVhdGVUb3VjaExpc3QoRG9jdW1lbnQmLCBW
ZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxUb3VjaD4+JiYgdG91Y2hlcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRUb3VjaC5oCmluZGV4IGUwZGFmNTA1MmNjOTc4NTJjOGEwNGJiYTczZTVmNmEx
MTZmMTBlNTEuLjcyYzQ4ODhiNDVhYjQwMGUyOWJjOGFlZDg2ZGU0YzU5MDNlYWMyMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50VG91Y2guaApAQCAtMzQsMTUgKzM0LDE1IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgRE9NV2luZG93OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBF
dmVudFRhcmdldDsKIGNsYXNzIFRvdWNoOwogY2xhc3MgVG91Y2hMaXN0OworY2xhc3MgV2luZG93
UHJveHk7CiAKIGNsYXNzIERvY3VtZW50VG91Y2ggewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
VG91Y2g+IGNyZWF0ZVRvdWNoKERvY3VtZW50JiwgRE9NV2luZG93KiwgRXZlbnRUYXJnZXQqLCBp
bnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBzY3JlZW5YLCBpbnQgc2Ny
ZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9h
dCBmb3JjZSk7CisgICAgc3RhdGljIFJlZjxUb3VjaD4gY3JlYXRlVG91Y2goRG9jdW1lbnQmLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYsIEV2ZW50VGFyZ2V0KiwgaW50IGlkZW50aWZpZXIsIGludCBw
YWdlWCwgaW50IHBhZ2VZLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCByYWRpdXNYLCBp
bnQgcmFkaXVzWSwgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2UpOwogICAgIHN0YXRp
YyBSZWY8VG91Y2hMaXN0PiBjcmVhdGVUb3VjaExpc3QoRG9jdW1lbnQmLCBWZWN0b3I8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxUb3VjaD4+JiYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50VG91Y2guaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
VG91Y2guaWRsCmluZGV4IDdhMjczNzQ1ODY1NDk5MWIxMWI1NTYzMDg5ZTIxOTU3Y2M0YzRlNGEu
LjA0ODlhMzZhZDZiMTI1MDNjZGI0NmFmMTQ4Y2I1OWNmYWZkNjc1YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRUb3VjaC5pZGwKQEAgLTIyLDcgKzIyLDcgQEAKICAgICBDb25kaXRpb25hbD1U
T1VDSF9FVkVOVFMKIF0gcGFydGlhbCBpbnRlcmZhY2UgRG9jdW1lbnQgewogICAgIC8vIEZJWE1F
OiBUaGlzIGhhcyBiZWVuIGRyb3BwZWQgZnJvbSB0aGUgc3RhbmRhcmQgbm93IHRoYXQgVG91Y2gg
aGFzIGEgY29uc3RydWN0b3IuCi0gICAgW05ld09iamVjdF0gVG91Y2ggY3JlYXRlVG91Y2gob3B0
aW9uYWwgRE9NV2luZG93PyB3aW5kb3cgPSBudWxsLCBvcHRpb25hbCBFdmVudFRhcmdldD8gdGFy
Z2V0ID0gbnVsbCwKKyAgICBbTmV3T2JqZWN0XSBUb3VjaCBjcmVhdGVUb3VjaChvcHRpb25hbCBX
aW5kb3dQcm94eT8gd2luZG93ID0gbnVsbCwgb3B0aW9uYWwgRXZlbnRUYXJnZXQ/IHRhcmdldCA9
IG51bGwsCiAgICAgICAgIG9wdGlvbmFsIGxvbmcgaWRlbnRpZmllciA9IDAsCiAgICAgICAgIG9w
dGlvbmFsIGxvbmcgcGFnZVggPSAwLCBvcHRpb25hbCBsb25nIHBhZ2VZID0gMCwgb3B0aW9uYWwg
bG9uZyBzY3JlZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwKICAgICAgICAgb3B0
aW9uYWwgbG9uZyB3ZWJraXRSYWRpdXNYID0gMCwgb3B0aW9uYWwgbG9uZyB3ZWJraXRSYWRpdXNZ
ID0gMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcAppbmRleCAxNmQ4YjNmZjA3OGQwNWFkOTFl
MmQ2OTE0NjcxOTEyODU1ZDdjNDg0Li45ODY4NzczMjZjZTNmYWU0YmIwNTllN2MxNjRkN2JjMThh
YTlkZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3BwCkBAIC00MCw4ICs0MCw4IEBAIGJv
b2wgRm9jdXNFdmVudDo6aXNGb2N1c0V2ZW50KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotRm9jdXNFdmVudDo6Rm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwg
UmVmUHRyPEV2ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpCi0gICAgOiBVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKQorRm9jdXNFdmVudDo6Rm9jdXNF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBSZWZQdHI8RXZl
bnRUYXJnZXQ+JiYgcmVsYXRlZFRhcmdldCkKKyAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxl
LCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAgLCBtX3JlbGF0ZWRUYXJn
ZXQoV1RGTW92ZShyZWxhdGVkVGFyZ2V0KSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Gb2N1c0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5oCmlu
ZGV4IDA2NzI1NTc0YzA2YjkxZjI5ZmI0Zjk2YTBiMWI1NjEzNGYxOTY4NTQuLmM3YTRkZjhlNzc0
MzJjZmUzNjRhMTM0ZjhkZTUxNTE2YTA1N2I4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Gb2N1c0V2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuaApA
QCAtMzUsOSArMzUsOSBAQCBjbGFzcyBOb2RlOwogCiBjbGFzcyBGb2N1c0V2ZW50IGZpbmFsIDog
cHVibGljIFVJRXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Rm9jdXNFdmVudD4gY3Jl
YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgRE9NV2luZG93KiB2aWV3LCBpbnQgZGV0YWlsLCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYg
cmVsYXRlZFRhcmdldCkKKyAgICBzdGF0aWMgUmVmPEZvY3VzRXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYg
cmVsYXRlZFRhcmdldCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvY3Vz
RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkZXRhaWwsIFdURk1vdmUo
cmVsYXRlZFRhcmdldCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9jdXNFdmVu
dCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRldGFpbCwgV1RG
TW92ZShyZWxhdGVkVGFyZ2V0KSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWY8Rm9jdXNFdmVu
dD4gY3JlYXRlRm9yQmluZGluZ3MoKQpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgRm9jdXNFdmVudCgpID0gZGVmYXVsdDsKLSAgICBGb2N1c0V2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2lu
ZG93KiwgaW50LCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYpOworICAgIEZvY3VzRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYsIGludCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmKTsKICAgICBGb2N1
c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7
CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0lucHV0RXZlbnQuY3BwCmluZGV4IGQ0NDkyOTRmZWM2YmM3OTcwZDZjNDJjNGI5N2Fi
MTYxYzRmNWIxZjAuLmMxN2JmMThkODhhNjc2NDcyYTE4NzE2M2U3YjQ1MTRmODQ0MDBhMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vSW5wdXRFdmVudC5jcHAKQEAgLTI2LDIwICsyNiwyMCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIklucHV0RXZlbnQuaCIKIAotI2luY2x1ZGUgIkRPTVdpbmRv
dy5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlci5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNs
dWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWY8SW5wdXRFdmVudD4gSW5wdXRFdmVudDo6Y3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgV2ViQ29yZTo6RE9NV2luZG93ICp2aWV3LCBjb25zdCBT
dHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYgZGF0YVRyYW5zZmVyLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJhbmdlcywgaW50IGRldGFpbCkKK1Jl
ZjxJbnB1dEV2ZW50PiBJbnB1dEV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBS
ZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3QgVmVjdG9yPFJlZlB0cjxT
dGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW5wdXRFdmVudChldmVudFR5cGUsIGlucHV0VHlwZSwgY2FuQnViYmxlLCBj
YW5jZWxhYmxlLCB2aWV3LCBkYXRhLCBXVEZNb3ZlKGRhdGFUcmFuc2ZlciksIHRhcmdldFJhbmdl
cywgZGV0YWlsKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5wdXRFdmVudChldmVudFR5
cGUsIGlucHV0VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkYXRh
LCBXVEZNb3ZlKGRhdGFUcmFuc2ZlciksIHRhcmdldFJhbmdlcywgZGV0YWlsKSk7CiB9CiAKLUlu
cHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0
IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01X
aW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiBk
YXRhVHJhbnNmZXIsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFu
Z2VzLCBpbnQgZGV0YWlsKQotICAgIDogVUlFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2Fu
Y2VsYWJsZSwgdmlldywgZGV0YWlsKQorSW5wdXRFdmVudDo6SW5wdXRFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBT
dHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYgZGF0YVRyYW5zZmVyLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJhbmdlcywgaW50IGRldGFpbCkKKyAg
ICA6IFVJRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmll
dyksIGRldGFpbCkKICAgICAsIG1faW5wdXRUeXBlKGlucHV0VHlwZSkKICAgICAsIG1fZGF0YShk
YXRhKQogICAgICwgbV9kYXRhVHJhbnNmZXIoZGF0YVRyYW5zZmVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2
ZW50LmgKaW5kZXggY2FkOGRjZTdiMzYyNmQ5YTIyNzYzNGIzNTg5MjZjMWYxMjU0NjgxYi4uZDA1
MDc2MzljNmM4OWM5OWQ0ZDMwYTFjZTkzNmY5MTYxYjljNGVkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRF
dmVudC5oCkBAIC0zMCw4ICszMCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
RE9NV2luZG93OwogY2xhc3MgRGF0YVRyYW5zZmVyOworY2xhc3MgV2luZG93UHJveHk7CiAKIGNs
YXNzIElucHV0RXZlbnQgZmluYWwgOiBwdWJsaWMgVUlFdmVudCB7CiBwdWJsaWM6CkBAIC0zOSwx
MyArMzksMTMgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgZGF0YTsKICAgICB9OwogCi0gICAg
c3RhdGljIFJlZjxJbnB1dEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFu
c2Zlcj4mJiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMs
IGludCBkZXRhaWwpOworICAgIHN0YXRpYyBSZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0
IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwgY29uc3QgVmVjdG9yPFJlZlB0
cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpOwogICAgIHN0YXRpYyBS
ZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5p
dCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5wdXRFdmVudCh0eXBlLCBpbml0aWFs
aXplciwgaXNUcnVzdGVkKSk7CiAgICAgfQogCi0gICAgSW5wdXRFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRy
PERhdGFUcmFuc2Zlcj4mJiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJn
ZXRSYW5nZXMsIGludCBkZXRhaWwpOworICAgIElucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwg
UmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+
JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpOwogICAgIElucHV0RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwogCiAgICAgYm9vbCBp
c0lucHV0RXZlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vS2V5Ym9hcmRFdmVudC5jcHAKaW5kZXggNGRhMTAxNzcyNWZlODkyY2ZhOGRhY2YwZjViNzA4
MWRjYzZjZmJlOS4uNGFjYjVmNGNlYjc2MGUxNzBmMTA3Y2VhMzg2MDk4OWY2NzI2NGVhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKIAorI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAj
aW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCkBAIC05Miw4ICs5Myw4IEBAIHN0YXRpYyBpbmxpbmUg
S2V5Ym9hcmRFdmVudDo6S2V5TG9jYXRpb25Db2RlIGtleUxvY2F0aW9uQ29kZShjb25zdCBQbGF0
Zm9ybUtleWJvCiAKIGlubGluZSBLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KCkgPSBkZWZh
dWx0OwogCi1pbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQmIGtleSwgRE9NV2luZG93KiB2aWV3KQotICAgIDogVUlFdmVudFdpdGhL
ZXlTdGF0ZShldmVudFR5cGVGb3JLZXlib2FyZEV2ZW50VHlwZShrZXkudHlwZSgpKSwgdHJ1ZSwg
dHJ1ZSwga2V5LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LCAw
LCBrZXkuY3RybEtleSgpLCBrZXkuYWx0S2V5KCksIGtleS5zaGlmdEtleSgpLCBrZXkubWV0YUtl
eSgpLCBmYWxzZSwga2V5Lm1vZGlmaWVycygpLmNvbnRhaW5zKFBsYXRmb3JtRXZlbnQ6Ok1vZGlm
aWVyOjpDYXBzTG9ja0tleSkpCitpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChj
b25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZp
ZXcpCisgICAgOiBVSUV2ZW50V2l0aEtleVN0YXRlKGV2ZW50VHlwZUZvcktleWJvYXJkRXZlbnRU
eXBlKGtleS50eXBlKCkpLCB0cnVlLCB0cnVlLCBrZXkudGltZXN0YW1wKCkuYXBwcm94aW1hdGVN
b25vdG9uaWNUaW1lKCksIHZpZXcuY29weVJlZigpLCAwLCBrZXkuY3RybEtleSgpLCBrZXkuYWx0
S2V5KCksIGtleS5zaGlmdEtleSgpLCBrZXkubWV0YUtleSgpLCBmYWxzZSwga2V5Lm1vZGlmaWVy
cygpLmNvbnRhaW5zKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDYXBzTG9ja0tleSkpCiAgICAg
LCBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1LZXli
b2FyZEV2ZW50PihrZXkpKQogI2lmIEVOQUJMRShLRVlCT0FSRF9LRVlfQVRUUklCVVRFKQogICAg
ICwgbV9rZXkoa2V5LmtleSgpKQpAQCAtMTA0LDcgKzEwNSw3IEBAIGlubGluZSBLZXlib2FyZEV2
ZW50OjpLZXlib2FyZEV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYga2V5LCBET01X
aW5kb3cqCiAgICAgLCBtX2tleUlkZW50aWZpZXIoa2V5LmtleUlkZW50aWZpZXIoKSkKICAgICAs
IG1fbG9jYXRpb24oa2V5TG9jYXRpb25Db2RlKGtleSkpCiAgICAgLCBtX3JlcGVhdChrZXkuaXNB
dXRvUmVwZWF0KCkpCi0gICAgLCBtX2lzQ29tcG9zaW5nKHZpZXcgJiYgdmlldy0+ZnJhbWUoKSAm
JiB2aWV3LT5mcmFtZSgpLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKQorICAgICwgbV9pc0Nv
bXBvc2luZyh2aWV3ICYmIGlzPERPTVdpbmRvdz4odmlldy0+d2luZG93KCkpICYmIGRvd25jYXN0
PERPTVdpbmRvdz4oKnZpZXctPndpbmRvdygpKS5mcmFtZSgpICYmIGRvd25jYXN0PERPTVdpbmRv
dz4oKnZpZXctPndpbmRvdygpKS5mcmFtZSgpLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKQog
I2lmIFVTRShBUFBLSVQpCiAgICAgLCBtX2hhbmRsZWRCeUlucHV0TWV0aG9kKGtleS5oYW5kbGVk
QnlJbnB1dE1ldGhvZCgpKQogICAgICwgbV9rZXlwcmVzc0NvbW1hbmRzKGtleS5jb21tYW5kcygp
KQpAQCAtMTMyLDkgKzEzMyw5IEBAIGlubGluZSBLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBJbml0JiBpCiAKIEtleWJvYXJk
RXZlbnQ6On5LZXlib2FyZEV2ZW50KCkgPSBkZWZhdWx0OwogCi1SZWY8S2V5Ym9hcmRFdmVudD4g
S2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgcGxhdGZv
cm1FdmVudCwgRE9NV2luZG93KiB2aWV3KQorUmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZl
bnQ6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIHBsYXRmb3JtRXZlbnQsIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEtl
eWJvYXJkRXZlbnQocGxhdGZvcm1FdmVudCwgdmlldykpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEtleWJvYXJkRXZlbnQocGxhdGZvcm1FdmVudCwgV1RGTW92ZSh2aWV3KSkpOwogfQogCiBS
ZWY8S2V5Ym9hcmRFdmVudD4gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQpAQCAt
MTQ3LDEzICsxNDgsMTMgQEAgUmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGkKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBLZXlib2FyZEV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsK
IH0KIAotdm9pZCBLZXlib2FyZEV2ZW50Ojppbml0S2V5Ym9hcmRFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyog
dmlldywKK3ZvaWQgS2V5Ym9hcmRFdmVudDo6aW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywKICAgICBjb25zdCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIHVuc2ln
bmVkIGxvY2F0aW9uLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBi
b29sIG1ldGFLZXksIGJvb2wgYWx0R3JhcGhLZXkpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRj
aGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgdmlldywgMCk7CisgICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxl
LCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCAwKTsKIAogICAgIG1fa2V5SWRlbnRpZmllciA9
IGtleUlkZW50aWZpZXI7CiAgICAgbV9sb2NhdGlvbiA9IGxvY2F0aW9uOwpAQCAtMjI3LDggKzIy
OCw5IEBAIGludCBLZXlib2FyZEV2ZW50OjpjaGFyQ29kZSgpIGNvbnN0CiAgICAgLy8gRmlyZWZv
eDogMCBmb3Iga2V5ZG93bi9rZXl1cCBldmVudHMsIGNoYXJhY3RlciBjb2RlIGZvciBrZXlwcmVz
cwogICAgIC8vIFdlIG1hdGNoIEZpcmVmb3gsIHVubGVzcyBpbiBiYWNrd2FyZCBjb21wYXRpYmls
aXR5IG1vZGUsIHdoZXJlIHdlIGFsd2F5cyByZXR1cm4gdGhlIGNoYXJhY3RlciBjb2RlLgogICAg
IGJvb2wgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9IGZhbHNlOwotICAgIGlmICh2aWV3KCkg
JiYgdmlldygpLT5mcmFtZSgpKQotICAgICAgICBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlID0g
dmlldygpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS5uZWVkc0tleWJvYXJkRXZlbnREaXNhbWJp
Z3VhdGlvblF1aXJrcygpOworICAgIGF1dG8qIHdpbmRvdyA9IHZpZXcoKSA/IHZpZXcoKS0+d2lu
ZG93KCkgOiBudWxscHRyOworICAgIGlmIChpczxET01XaW5kb3c+KHdpbmRvdykgJiYgZG93bmNh
c3Q8RE9NV2luZG93Pigqd2luZG93KS5mcmFtZSgpKQorICAgICAgICBiYWNrd2FyZENvbXBhdGli
aWxpdHlNb2RlID0gZG93bmNhc3Q8RE9NV2luZG93Pigqd2luZG93KS5mcmFtZSgpLT5ldmVudEhh
bmRsZXIoKS5uZWVkc0tleWJvYXJkRXZlbnREaXNhbWJpZ3VhdGlvblF1aXJrcygpOwogCiAgICAg
aWYgKCFtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50IHx8ICh0eXBlKCkgIT0gZXZlbnROYW1lcygp
LmtleXByZXNzRXZlbnQgJiYgIWJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUpKQogICAgICAgICBy
ZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCmluZGV4IDgyMTAzMzBlYWIwMzQx
ZjRjYTU0Y2QyNWM1OGI5OTU0NmYwYjE1YTkuLjFkM2NjMjQzNzk5YjE5YTc0NGVlOTc4YTE4N2Vh
ZWFlYzg4MDVmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaApAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAgICAgICAgIERPTV9LRVlfTE9DQVRJT05fTlVNUEFEID0gMHgwMwogICAg
IH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEtleWJvYXJkRXZlbnQ+IGNyZWF0
ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmLCBET01XaW5kb3cqKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPEtleWJvYXJkRXZlbnQ+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQmLCBSZWZQdHI8V2luZG93UHJveHk+JiYpOwogICAgIHN0YXRpYyBSZWY8S2V5
Ym9hcmRFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKTsKIAogICAgIHN0cnVjdCBJbml0IDogcHVi
bGljIEV2ZW50TW9kaWZpZXJJbml0IHsKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB+S2V5Ym9hcmRFdmVudCgpOwogICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
aW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
aW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGNvbnN0
IFN0cmluZyYga2V5SWRlbnRpZmllciwgdW5zaWduZWQgbG9jYXRpb24sCiAgICAgICAgIGJvb2wg
Y3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgYm9vbCBh
bHRHcmFwaEtleSA9IGZhbHNlKTsKICAgICAKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgS2V5Ym9hcmRFdmVudCgpOwotICAgIEtleWJvYXJkRXZlbnQoY29uc3Qg
UGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgS2V5Ym9hcmRFdmVudChj
b25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmLCBSZWZQdHI8V2luZG93UHJveHk+JiYpOwogICAg
IEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3Rl
ZCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1LZXlib2FyZEV2ZW50PiBtX3VuZGVy
bHlpbmdQbGF0Zm9ybUV2ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJv
YXJkRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaWRsCmluZGV4
IDc1N2MwNzc5M2Y1ZTVmMWUxODQzOGY3OGRkNDQ3ZTlhM2ExZDUxMDkuLmNkZTQ1MGMzNDM1MzM1
MDkyYTE3N2Q2ZGY2MzY4YmY2MzUxZDcxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9LZXlib2FyZEV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVu
dC5pZGwKQEAgLTUyLDcgKzUyLDcgQEAKICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIG5vdCBtYXRj
aCB0aGUgdmVyc2lvbiBpbiB0aGUgRE9NIHNwZWMuCiAgICAgLy8gRklYTUU6IFVzaW5nICJ1bmRl
ZmluZWQiIGFzIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIGlzIHdyb25nLgogICAgIHZvaWQgaW5p
dEtleWJvYXJkRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5kZWZpbmVkIiwgb3B0
aW9uYWwgYm9vbGVhbiBjYW5CdWJibGUgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxh
YmxlID0gZmFsc2UsCi0gICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlldyA9IG51bGwsIG9w
dGlvbmFsIERPTVN0cmluZyBrZXlJZGVudGlmaWVyID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIHVu
c2lnbmVkIGxvbmcgbG9jYXRpb24gPSAwLAorICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8g
dmlldyA9IG51bGwsIG9wdGlvbmFsIERPTVN0cmluZyBrZXlJZGVudGlmaWVyID0gInVuZGVmaW5l
ZCIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbG9jYXRpb24gPSAwLAogICAgICAgICBvcHRpb25h
bCBib29sZWFuIGN0cmxLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBhbHRLZXkgPSBmYWxz
ZSwgb3B0aW9uYWwgYm9vbGVhbiBzaGlmdEtleSA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIG1l
dGFLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBhbHRHcmFwaEtleSA9IGZhbHNlKTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAppbmRleCA1MTk3ZDViYWUxYWUzNWFhYjA0ZjBj
YjUwZTc2ZTlkOGZhYTE4Yjc5Li4zMzA5Mjc4N2QxNGFlNjU3M2VhMWI5ZDFmZDlhN2QwZWVlMGY0
MDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCkBAIC0yNywxMiArMjcsMTIgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudC5o
IgogI2luY2x1ZGUgIkpTVmFsdWVJbldyYXBwZWRPYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdl
UG9ydC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXIuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9W
YXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQwLDkgKzQwLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYjsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LXVzaW5nIE1lc3NhZ2VFdmVudFNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJl
ZlB0cjxNZXNzYWdlUG9ydD4sIFJlZlB0cjxTZXJ2aWNlV29ya2VyPj47Cit1c2luZyBNZXNzYWdl
RXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxNZXNzYWdl
UG9ydD4sIFJlZlB0cjxTZXJ2aWNlV29ya2VyPj47CiAjZWxzZQotdXNpbmcgTWVzc2FnZUV2ZW50
U291cmNlID0gVmFyaWFudDxSZWZQdHI8RE9NV2luZG93PiwgUmVmUHRyPE1lc3NhZ2VQb3J0Pj47
Cit1c2luZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4s
IFJlZlB0cjxNZXNzYWdlUG9ydD4+OwogI2VuZGlmCiAKIGNsYXNzIE1lc3NhZ2VFdmVudCBmaW5h
bCA6IHB1YmxpYyBFdmVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCmluZGV4IDAy
NDM4ZmQ0YzQ3YzNmYzI5MmVhYmY0N2U1YzVlODNmODY5NTA4MjIuLmZhNDhjOGZhNWRhNWZkYzNl
MGYyYzJmN2VmYmZhNzVjZDhmNTQwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRs
CkBAIC0yNyw5ICsyNyw5IEBACiAgKi8KIAogI2lmIGRlZmluZWQoRU5BQkxFX1NFUlZJQ0VfV09S
S0VSKSAmJiBFTkFCTEVfU0VSVklDRV9XT1JLRVIKLXR5cGVkZWYgKERPTVdpbmRvdyBvciBNZXNz
YWdlUG9ydCBvciBTZXJ2aWNlV29ya2VyKSBNZXNzYWdlRXZlbnRTb3VyY2U7Cit0eXBlZGVmIChX
aW5kb3dQcm94eSBvciBNZXNzYWdlUG9ydCBvciBTZXJ2aWNlV29ya2VyKSBNZXNzYWdlRXZlbnRT
b3VyY2U7CiAjZWxzZQotdHlwZWRlZiAoRE9NV2luZG93IG9yIE1lc3NhZ2VQb3J0KSBNZXNzYWdl
RXZlbnRTb3VyY2U7Cit0eXBlZGVmIChXaW5kb3dQcm94eSBvciBNZXNzYWdlUG9ydCkgTWVzc2Fn
ZUV2ZW50U291cmNlOwogI2VuZGlmCiAKIFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Nb3VzZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAppbmRl
eCBhMTQ3ZTEyMThiYjZlMjRmMmFkNzY0NzA3NDYwYzY2NzAyMWY2YzU5Li5jODk2Zjg2MzFhM2Qy
YmJkYTE5MzA2MjEwZmVkZGI4OTg2ZTRjYTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3Bw
CkBAIC00NCwxMyArNDQsMTMgQEAgUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IE1vdXNlRXZlbnRJbmkKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBNb3VzZUV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsK
IH0KIAotUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50LCBpbnQgZGV0YWlsLCBOb2RlKiByZWxhdGVkVGFyZ2V0KQorUmVmPE1vdXNlRXZlbnQ+
IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRy
PFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGlu
dCBkZXRhaWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQpCiB7CiAgICAgYm9vbCBpc01vdXNlRW50ZXJP
ckxlYXZlID0gZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5tb3VzZWVudGVyRXZlbnQgfHwgZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMoKS5tb3VzZWxlYXZlRXZlbnQ7CiAgICAgYm9vbCBpc0NhbmNl
bGFibGUgPSBldmVudFR5cGUgIT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50ICYmICFpc01v
dXNlRW50ZXJPckxlYXZlOwogICAgIGJvb2wgY2FuQnViYmxlID0gIWlzTW91c2VFbnRlck9yTGVh
dmU7CiAKLSAgICByZXR1cm4gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgY2FuQnViYmxl
LCBpc0NhbmNlbGFibGUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGlt
ZSgpLCB2aWV3LAorICAgIHJldHVybiBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBjYW5C
dWJibGUsIGlzQ2FuY2VsYWJsZSwgZXZlbnQudGltZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9u
aWNUaW1lKCksIFdURk1vdmUodmlldyksCiAgICAgICAgIGRldGFpbCwgZXZlbnQuZ2xvYmFsUG9z
aXRpb24oKS54KCksIGV2ZW50Lmdsb2JhbFBvc2l0aW9uKCkueSgpLCBldmVudC5wb3NpdGlvbigp
LngoKSwgZXZlbnQucG9zaXRpb24oKS55KCksCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAg
ICAgICAgZXZlbnQubW92ZW1lbnREZWx0YSgpLngoKSwgZXZlbnQubW92ZW1lbnREZWx0YSgpLnko
KSwKQEAgLTU5LDEzICs1OSwxMyBAQCBSZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHZpZQogICAgICAgICBy
ZWxhdGVkVGFyZ2V0LCBldmVudC5mb3JjZSgpLCBldmVudC5zeW50aGV0aWNDbGlja1R5cGUoKSk7
CiB9CiAKLVJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1l
IHRpbWVzdGFtcCwgRE9NV2luZG93KiB2aWV3LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50
IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAorUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZl
bnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgs
IGludCBwYWdlWSwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIGludCBtb3ZlbWVudFgs
IGludCBtb3ZlbWVudFksCiAjZW5kaWYKICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBi
b29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWdu
ZWQgc2hvcnQgYnV0dG9ucywgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3Jj
ZSwgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIqIGRhdGFU
cmFuc2ZlciwgYm9vbCBpc1NpbXVsYXRlZCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBN
b3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2aWV3LAor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCB0aW1lc3RhbXAsIFdURk1vdmUodmlldyksCiAgICAgICAgIGRldGFpbCwgeyBzY3Jl
ZW5YLCBzY3JlZW5ZIH0sIHsgcGFnZVgsIHBhZ2VZIH0sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9D
SykKICAgICAgICAgeyBtb3ZlbWVudFgsIG1vdmVtZW50WSB9LApAQCAtNzMsMTkgKzczLDE5IEBA
IFJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vCiAgICAgICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRL
ZXksIG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9ucywgcmVsYXRlZFRhcmdldCwgZm9yY2UsIHN5bnRo
ZXRpY0NsaWNrVHlwZSwgZGF0YVRyYW5zZmVyLCBpc1NpbXVsYXRlZCkpOwogfQogCi1SZWY8TW91
c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBk
ZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZ
LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXks
IHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWduZWQg
c2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCkKK1Jl
ZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94
eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGll
bnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtl
eSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1
dHRvbnMsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJl
bGF0ZWRUYXJnZXQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudChldmVu
dFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCB7IHNjcmVlblgsIHNj
cmVlblkgfSwgeyBjbGllbnRYLCBjbGllbnRZIH0sIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXks
IG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9ucywgc3ludGhldGljQ2xpY2tUeXBlLCByZWxhdGVkVGFy
Z2V0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudChldmVudFR5cGUsIGNh
bkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCB7IHNjcmVlblgsIHNj
cmVlblkgfSwgeyBjbGllbnRYLCBjbGllbnRZIH0sIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXks
IG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9ucywgc3ludGhldGljQ2xpY2tUeXBlLCByZWxhdGVkVGFy
Z2V0KSk7CiB9CiAKIE1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLU1vdXNl
RXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5k
b3cqIHZpZXcsIGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29u
c3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAorTW91c2VFdmVudDo6TW91c2VFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBp
bnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IEludFBvaW50
JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBjb25z
dCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKICNlbmRpZgogICAgICAgICBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0
IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJn
ZXQsIGRvdWJsZSBmb3JjZSwgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBEYXRh
VHJhbnNmZXIqIGRhdGFUcmFuc2ZlciwgYm9vbCBpc1NpbXVsYXRlZCkKLSAgICA6IE1vdXNlUmVs
YXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIHZp
ZXcsIGRldGFpbCwgc2NyZWVuTG9jYXRpb24sIHdpbmRvd0xvY2F0aW9uLAorICAgIDogTW91c2VS
ZWxhdGVkRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwg
V1RGTW92ZSh2aWV3KSwgZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwgd2luZG93TG9jYXRpb24sCiAj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgbW92ZW1lbnREZWx0YSwKICNlbmRpZgpA
QCAtMTAwLDggKzEwMCw4IEBAIE1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlCiB7CiB9CiAKLU1vdXNl
RXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgY29u
c3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgY2xpZW50TG9jYXRp
b24sIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtl
eSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25l
ZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KQot
ICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUs
IE1vbm90b25pY1RpbWU6Om5vdygpLCB2aWV3LCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB7IH0s
CitNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmll
dywgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQ
b2ludCYgY2xpZW50TG9jYXRpb24sIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hp
ZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9y
dCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0
KiByZWxhdGVkVGFyZ2V0KQorICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZlbnRUeXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWU6Om5vdygpLCBXVEZNb3ZlKHZpZXcpLCBk
ZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB7IH0sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAg
ICAgICAgeyB9LAogI2VuZGlmCkBAIC0xMjcsMTIgKzEyNywxMiBAQCBNb3VzZUV2ZW50OjpNb3Vz
ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBNb3VzZUV2ZW50SW5p
dCYgaW5pdAogCiBNb3VzZUV2ZW50Ojp+TW91c2VFdmVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBN
b3VzZUV2ZW50Ojppbml0TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwg
aW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wg
Y3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWdu
ZWQgc2hvcnQgYnV0dG9uLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCkKK3ZvaWQgTW91c2VF
dmVudDo6aW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRl
dGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFks
IGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwg
dW5zaWduZWQgc2hvcnQgYnV0dG9uLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCkKIHsKICAg
ICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW5pdFVJ
RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkZXRhaWwpOworICAgIGlu
aXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0
YWlsKTsKIAogICAgIG1fc2NyZWVuTG9jYXRpb24gPSBJbnRQb2ludChzY3JlZW5YLCBzY3JlZW5Z
KTsKICAgICBtX2N0cmxLZXkgPSBjdHJsS2V5OwpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgTW91
c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjCiAKIC8vIEZJWE1FOiBXZSBuZWVkIHRoaXMgcXVpcmsgYmVjYXVzZSBp
QWQgUHJvZHVjZXIgaXMgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHdpdGggYSByZWxhdGVkVGFyZ2V0
IHRoYXQgaXMgbm90IGFuIEV2ZW50VGFyZ2V0IChyZGFyOi8vcHJvYmxlbS8zMDY0MDEwMSkuCiAv
LyBXZSBzaG91bGQgcmVtb3ZlIHRoaXMgcXVpcmsgd2hlbiBwb3NzaWJsZS4KLXZvaWQgTW91c2VF
dmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayhFeGVjU3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50
IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVu
dFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtl
eSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBKU1ZhbHVlIHJlbGF0ZWRUYXJnZXRWYWx1ZSkKK3Zv
aWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayhFeGVjU3RhdGUmIHN0YXRlLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5k
b3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGlu
dCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBz
aGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIEpTVmFsdWUgcmVs
YXRlZFRhcmdldFZhbHVlKQogewogICAgIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0ID0gbnVs
bHB0cjsKICNpZiBQTEFURk9STShNQUMpCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBNb3VzZUV2
ZW50Ojppbml0TW91c2VFdmVudFF1aXJrKEV4ZWNTdGF0ZSYgc3RhdGUsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHMKICNpZiBQTEFURk9STShNQUMpCiAgICAgfQogI2VuZGlmCi0gICAgaW5pdE1v
dXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkZXRhaWwsIHNjcmVl
blgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVudFksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXks
IG1ldGFLZXksIGJ1dHRvbiwgcmVsYXRlZFRhcmdldCk7CisgICAgaW5pdE1vdXNlRXZlbnQodHlw
ZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIHNjcmVlblgs
IHNjcmVlblksIGNsaWVudFgsIGNsaWVudFksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1l
dGFLZXksIGJ1dHRvbiwgcmVsYXRlZFRhcmdldCk7CiB9CiAKIEV2ZW50SW50ZXJmYWNlIE1vdXNl
RXZlbnQ6OmV2ZW50SW50ZXJmYWNlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Nb3VzZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oCmluZGV4
IDI2Y2FmOGY2YjE5MTUxNjY4YjY4MDM1NTRhMGIwMDE2NGQzZTFmY2YuLjRiMjgwNzk5NTViNGNi
NzNhMmNlMTY4ZWI1YTEzOWQ3MzE1NmE5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Nb3VzZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaApAQCAt
MjksMTkgKzI5LDIwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERhdGFUcmFuc2Zl
cjsKK2NsYXNzIE5vZGU7CiBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiAKIGNsYXNzIE1vdXNl
RXZlbnQgOiBwdWJsaWMgTW91c2VSZWxhdGVkRXZlbnQgewogcHVibGljOgotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1l
c3RhbXAsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwg
aW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb3Vz
ZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1By
b3h5PiYmLCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwg
aW50IHBhZ2VZLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIGludCBtb3ZlbWVu
dFgsIGludCBtb3ZlbWVudFksCiAjZW5kaWYKICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFs
dEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24s
IHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0LCBkb3Vi
bGUgZm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRGF0YVRyYW5zZmVy
KiA9IG51bGxwdHIsIGJvb2wgaXNTaW11bGF0ZWQgPSBmYWxzZSk7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgRE9NV2luZG93KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgaW50IGRldGFp
bCwgTm9kZSogcmVsYXRlZFRhcmdldCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxN
b3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgaW50IGRldGFpbCwgTm9k
ZSogcmVsYXRlZFRhcmdldCk7CiAKLSAgICBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBp
bnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBz
aG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFy
Z2V0KiByZWxhdGVkVGFyZ2V0KTsKKyAgICBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50
IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFs
dEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24s
IHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlw
ZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpOwogCiAgICAgc3RhdGljIFJlZjxNb3VzZUV2
ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW91c2VFdmVu
dCk7IH0KIApAQCAtNDksOCArNTAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5Nb3VzZUV2
ZW50KCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRNb3VzZUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2lu
ZG93KiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwg
aW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJv
b2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBFdmVudFRhcmdldCogcmVsYXRlZFRh
cmdldCk7Ci0gICAgdm9pZCBpbml0TW91c2VFdmVudFF1aXJrKEpTQzo6RXhlY1N0YXRlJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFpbCwgaW50IHNjcmVl
blgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQg
YnV0dG9uLCBKU0M6OkpTVmFsdWUgcmVsYXRlZFRhcmdldCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBpbml0TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwg
aW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wg
Y3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWdu
ZWQgc2hvcnQgYnV0dG9uLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCk7CisgICAgdm9pZCBp
bml0TW91c2VFdmVudFF1aXJrKEpTQzo6RXhlY1N0YXRlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50
IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFs
dEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24s
IEpTQzo6SlNWYWx1ZSByZWxhdGVkVGFyZ2V0KTsKIAogICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRv
bigpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9uOyB9CiAgICAgdW5zaWduZWQgc2hvcnQgYnV0dG9u
cygpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9uczsgfQpAQCAtNzAsNyArNzEsNyBAQCBwdWJsaWM6
CiAgICAgaW50IHdoaWNoKCkgY29uc3QgZmluYWw7CiAKIHByb3RlY3RlZDoKLSAgICBNb3VzZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIERPTVdpbmRvdyosCisgICAgTW91c2VFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAg
ICAgIGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50
UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAg
IGNvbnN0IEludFBvaW50JiBtb3ZlbWVudERlbHRhLApAQCAtNzgsNyArNzksNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJv
b2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25z
LAogICAgICAgICBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCwgZG91YmxlIGZvcmNlLCB1bnNp
Z25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIERhdGFUcmFuc2ZlciosIGJvb2wgaXNTaW11
bGF0ZWQpOwogCi0gICAgTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosCisgICAgTW91c2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKICAgICAgICAgaW50IGRldGFpbCwgY29uc3QgSW50UG9p
bnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgY2xpZW50TG9jYXRpb24sCiAgICAg
ICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtl
eSwKICAgICAgICAgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25z
LCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVk
VGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmlkbAppbmRleCAwYmUwZjg4ZGQzNWQ3Y2Rm
YjhkMzU0MmRhZGUxNmUzMjk0ZmRjODNhLi42MGM0NDY2NjcxZjA2MTlmZWUwOWQwZjAxOTNmOWE0
MWY2YjNlODEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaWRsCkBAIC00Myw3ICs0Myw3IEBA
CiAgICAgLy8gRklYTUU6IHJlbGF0ZWRUYXJnZXQgc2hvdWxkIGJlIG9mIHR5cGUgRXZlbnRUYXJn
ZXQ/IGJ1dCB3ZSBuZWVkIHRvIHVzZSBhbnkgdG8gc3VwcG9ydCBhIHF1aXJrIGZvciBpQWQgUHJv
ZHVjZXIgKHJkYXI6Ly9wcm9ibGVtLzMwNjQwMTAxKS4KICAgICBbQ2FsbFdpdGg9U2NyaXB0U3Rh
dGUmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1wbGVtZW50ZWRBcz1pbml0TW91c2VFdmVudFF1
aXJrXSB2b2lkIGluaXRNb3VzZUV2ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVm
aW5lZCIsCiAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlv
bmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZhbHNlLAotICAgICAgICBvcHRpb25hbCBET01XaW5k
b3c/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBsb25nIGRldGFpbCA9IDAsCisgICAgICAgIG9wdGlv
bmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAwLAog
ICAgICAgICBvcHRpb25hbCBsb25nIHNjcmVlblggPSAwLCBvcHRpb25hbCBsb25nIHNjcmVlblkg
PSAwLCBvcHRpb25hbCBsb25nIGNsaWVudFggPSAwLCBvcHRpb25hbCBsb25nIGNsaWVudFkgPSAw
LAogICAgICAgICBvcHRpb25hbCBib29sZWFuIGN0cmxLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9v
bGVhbiBhbHRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBzaGlmdEtleSA9IGZhbHNlLCBv
cHRpb25hbCBib29sZWFuIG1ldGFLZXkgPSBmYWxzZSwKICAgICAgICAgb3B0aW9uYWwgdW5zaWdu
ZWQgc2hvcnQgYnV0dG9uID0gMCwgb3B0aW9uYWwgYW55IHJlbGF0ZWRUYXJnZXQgPSBudWxsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCmluZGV4IDg1MzcxNGQ2YWIx
ZjAxZThhNWVhY2UwZDBlNDM5NzVlYjNkNTg0OWYuLjgwYTgyNjdkYzIxYmQ4YjNiZjUxODMwZmU0
YjMwYTQyYTYxMjAxNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0
ZWRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNw
cApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTW91c2VSZWxh
dGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFt
cCwgRE9NV2luZG93KiBET01XaW5kb3csCitNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVk
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGV0YWls
LCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IEludFBvaW50JiB3aW5kb3dM
b2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEludFBvaW50JiBtb3ZlbWVudERlbHRhLAogI2VuZGlmCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFs
dEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBib29sIGlzU2ltdWxhdGVkKQotICAg
IDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwg
dGltZXN0YW1wLCBET01XaW5kb3csIGRldGFpbCwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwg
bWV0YUtleSwgZmFsc2UsIGZhbHNlKQorICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5
cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCBXVEZNb3ZlKHZpZXcpLCBkZXRh
aWwsIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGZhbHNlLCBmYWxzZSkKICAg
ICAsIG1fc2NyZWVuTG9jYXRpb24oc2NyZWVuTG9jYXRpb24pCiAjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKICAgICAsIG1fbW92ZW1lbnREZWx0YShtb3ZlbWVudERlbHRhKQpAQCAtNjEsNyArNjEs
NyBAQCBNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIGNvbnN0IE1vdXNlUgogdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5p
dChib29sIGlzU2ltdWxhdGVkLCBjb25zdCBJbnRQb2ludCYgd2luZG93TG9jYXRpb24pCiB7CiAg
ICAgaWYgKCFpc1NpbXVsYXRlZCkgewotICAgICAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJh
bWVWaWV3RnJvbURPTVdpbmRvdyh2aWV3KCkpKSB7CisgICAgICAgIGlmIChhdXRvKiBmcmFtZVZp
ZXcgPSBmcmFtZVZpZXdGcm9tV2luZG93UHJveHkodmlldygpKSkgewogICAgICAgICAgICAgRmxv
YXRQb2ludCBhYnNvbHV0ZVBvaW50ID0gZnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKHdpbmRv
d0xvY2F0aW9uKTsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgZG9jdW1lbnRQb2ludCA9IGZyYW1l
Vmlldy0+YWJzb2x1dGVUb0RvY3VtZW50UG9pbnQoYWJzb2x1dGVQb2ludCk7CiAgICAgICAgICAg
ICBtX3BhZ2VMb2NhdGlvbiA9IGZsb29yZWRMYXlvdXRQb2ludChkb2N1bWVudFBvaW50KTsKQEAg
LTgzLDEzICs4MywxMyBAQCB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojppbml0Q29vcmRpbmF0ZXMo
KQogICAgIG1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbiA9IGZhbHNlOwogfQogCi1GcmFtZVZp
ZXcqIE1vdXNlUmVsYXRlZEV2ZW50OjpmcmFtZVZpZXdGcm9tRE9NV2luZG93KERPTVdpbmRvdyog
d2luZG93KQorRnJhbWVWaWV3KiBNb3VzZVJlbGF0ZWRFdmVudDo6ZnJhbWVWaWV3RnJvbVdpbmRv
d1Byb3h5KFdpbmRvd1Byb3h5KiB3aW5kb3dQcm94eSkKIHsKLSAgICBhdXRvKiBmcmFtZSA9IHdp
bmRvdyA/IHdpbmRvdy0+ZnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgaWYgKCFmcmFtZSkKKyAgICBp
ZiAoIXdpbmRvd1Byb3h5IHx8ICFpczxET01XaW5kb3c+KHdpbmRvd1Byb3h5LT53aW5kb3coKSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGZyYW1lLT52aWV3KCk7Cisg
ICAgYXV0byogZnJhbWUgPSBkb3duY2FzdDxET01XaW5kb3c+KCp3aW5kb3dQcm94eS0+d2luZG93
KCkpLmZyYW1lKCk7CisgICAgcmV0dXJuIGZyYW1lID8gZnJhbWUtPnZpZXcoKSA6IG51bGxwdHI7
CiB9CiAKIExheW91dFBvaW50IE1vdXNlUmVsYXRlZEV2ZW50OjpwYWdlUG9pbnRUb0NsaWVudFBv
aW50KExheW91dFBvaW50IHBhZ2VQb2ludCwgRnJhbWVWaWV3KiBmcmFtZVZpZXcpCkBAIC0xMTMs
NyArMTEzLDcgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVzKGNvbnN0
IExheW91dFBvaW50JiBjbGllbnRMb2NhdGlvbikKICAgICAvLyBTZXQgdXAgaW5pdGlhbCB2YWx1
ZXMgZm9yIGNvb3JkaW5hdGVzLgogICAgIC8vIENvcnJlY3QgdmFsdWVzIGFyZSBjb21wdXRlZCBs
YXppbHksIHNlZSBjb21wdXRlUmVsYXRpdmVQb3NpdGlvbi4KICAgICBGbG9hdFNpemUgZG9jdW1l
bnRUb0NsaWVudE9mZnNldDsKLSAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJv
bURPTVdpbmRvdyh2aWV3KCkpKQorICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdG
cm9tV2luZG93UHJveHkodmlldygpKSkKICAgICAgICAgZG9jdW1lbnRUb0NsaWVudE9mZnNldCA9
IGZyYW1lVmlldy0+ZG9jdW1lbnRUb0NsaWVudE9mZnNldCgpOwogCiAgICAgbV9jbGllbnRMb2Nh
dGlvbiA9IGNsaWVudExvY2F0aW9uOwpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgTW91c2VSZWxh
dGVkRXZlbnQ6OmluaXRDb29yZGluYXRlcyhjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50TG9jYXRp
b24pCiAKIGZsb2F0IE1vdXNlUmVsYXRlZEV2ZW50Ojpkb2N1bWVudFRvQWJzb2x1dGVTY2FsZUZh
Y3RvcigpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21E
T01XaW5kb3codmlldygpKSkKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJv
bVdpbmRvd1Byb3h5KHZpZXcoKSkpCiAgICAgICAgIHJldHVybiBmcmFtZVZpZXctPmRvY3VtZW50
VG9BYnNvbHV0ZVNjYWxlRmFjdG9yKCk7CiAKICAgICByZXR1cm4gMTsKQEAgLTEzNiw3ICsxMzYs
NyBAQCBmbG9hdCBNb3VzZVJlbGF0ZWRFdmVudDo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0
b3IoKSBjb25zdAogCiB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUGFnZUxvY2F0aW9u
KCkKIHsKLSAgICBtX2Fic29sdXRlTG9jYXRpb24gPSBwYWdlUG9pbnRUb0Fic29sdXRlUG9pbnQo
bV9wYWdlTG9jYXRpb24sIGZyYW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSk7CisgICAgbV9h
YnNvbHV0ZUxvY2F0aW9uID0gcGFnZVBvaW50VG9BYnNvbHV0ZVBvaW50KG1fcGFnZUxvY2F0aW9u
LCBmcmFtZVZpZXdGcm9tV2luZG93UHJveHkodmlldygpKSk7CiB9CiAKIHZvaWQgTW91c2VSZWxh
dGVkRXZlbnQ6OnJlY2VpdmVkVGFyZ2V0KCkKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIE1vdXNl
UmVsYXRlZEV2ZW50Ojpjb21wdXRlUmVsYXRpdmVQb3NpdGlvbigpCiAgICAgCiBGbG9hdFBvaW50
IE1vdXNlUmVsYXRlZEV2ZW50Ojpsb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcygpIGNvbnN0
CiB7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21ET01XaW5kb3codmll
dygpKSkKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5
KHZpZXcoKSkpCiAgICAgICAgIHJldHVybiBmcmFtZVZpZXctPmNvbnRlbnRzVG9Sb290Vmlldyhy
b3VuZGVkSW50UG9pbnQobV9hYnNvbHV0ZUxvY2F0aW9uKSk7CiAKICAgICByZXR1cm4gbV9hYnNv
bHV0ZUxvY2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRl
ZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaAppbmRleCAw
ZDgzYzM2MDlmNzFlYWZlZjIxNzFhOWNkMGQ0MzFhZTZkODU0ZjhiLi5hZDRlNWQwYzM1NmY1NDFl
MDgyZTExYTI2YTJkMGNjMTE1ZmQ1OWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TW91c2VSZWxhdGVkRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVk
RXZlbnQuaApAQCAtNjcsMTQgKzY3LDE0IEBAIHB1YmxpYzoKICAgICAvLyB1c2FibGUgd2l0aCBS
ZW5kZXJPYmplY3Q6OmFic29sdXRlVG9Mb2NhbCkuCiAgICAgY29uc3QgTGF5b3V0UG9pbnQmIGFi
c29sdXRlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Fic29sdXRlTG9jYXRpb247IH0KICAg
ICAKLSAgICBzdGF0aWMgRnJhbWVWaWV3KiBmcmFtZVZpZXdGcm9tRE9NV2luZG93KERPTVdpbmRv
dyopOworICAgIHN0YXRpYyBGcmFtZVZpZXcqIGZyYW1lVmlld0Zyb21XaW5kb3dQcm94eShXaW5k
b3dQcm94eSopOwogCiAgICAgc3RhdGljIExheW91dFBvaW50IHBhZ2VQb2ludFRvQ2xpZW50UG9p
bnQoTGF5b3V0UG9pbnQgcGFnZVBvaW50LCBGcmFtZVZpZXcqKTsKICAgICBzdGF0aWMgTGF5b3V0
UG9pbnQgcGFnZVBvaW50VG9BYnNvbHV0ZVBvaW50KExheW91dFBvaW50IHBhZ2VQb2ludCwgRnJh
bWVWaWV3Kik7CiAKIHByb3RlY3RlZDoKICAgICBNb3VzZVJlbGF0ZWRFdmVudCgpID0gZGVmYXVs
dDsKLSAgICBNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01X
aW5kb3cqLAorICAgIE1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAs
IFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKICAgICAgICAgaW50IGRldGFpbCwgY29uc3QgSW50UG9p
bnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93TG9jYXRpb24sCiAjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgY29uc3QgSW50UG9pbnQmIG1vdmVtZW50RGVs
dGEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKaW5kZXggNGIxZTg3MjU3OTUzM2ZiZjc4NzEyZmQ2ZDIzZDJjODE1
YjAzZWIzOC4uYzkxOTA3Y2RkNGE0OGIxNzJlYTNhMmRlZTFlODgwNzgwYmU1ZGUzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNvbXBvc2VkVHJlZUFuY2Vz
dG9ySXRlcmF0b3IuaCIKICNpbmNsdWRlICJDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oIgogI2lu
Y2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgog
I2luY2x1ZGUgIkRhdGFUcmFuc2Zlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50VHlwZS5oIgogI2lu
Y2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NpbXVsYXRlZENsaWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5j
cHAKaW5kZXggZTBmNGUzNTJlY2ExOGRjZGM4NTkyNDkyZWM1MDg0MjkyOGFiNjU3NC4uNDE3ZTkw
N2JmMjg4MWI2YTg3ZjYxZDYwOTE2YjY3ZTY4ZWI5YzEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1NpbXVsYXRlZENsaWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2lt
dWxhdGVkQ2xpY2suY3BwCkBAIC0zNywxNCArMzcsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBTaW11bGF0ZWRNb3VzZUV2ZW50IGZpbmFsIDogcHVibGljIE1vdXNlRXZlbnQgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8U2ltdWxhdGVkTW91c2VFdmVudD4gY3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxFdmVudD4m
JiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVkQ2xpY2tTb3VyY2Ug
c291cmNlKQorICAgIHN0YXRpYyBSZWY8U2ltdWxhdGVkTW91c2VFdmVudD4gY3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgUmVm
UHRyPEV2ZW50PiYmIHVuZGVybHlpbmdFdmVudCwgRWxlbWVudCYgdGFyZ2V0LCBTaW11bGF0ZWRD
bGlja1NvdXJjZSBzb3VyY2UpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aW11bGF0ZWRNb3VzZUV2ZW50KGV2ZW50VHlwZSwgdmlldywgV1RGTW92ZSh1bmRlcmx5aW5nRXZl
bnQpLCB0YXJnZXQsIHNvdXJjZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW11
bGF0ZWRNb3VzZUV2ZW50KGV2ZW50VHlwZSwgV1RGTW92ZSh2aWV3KSwgV1RGTW92ZSh1bmRlcmx5
aW5nRXZlbnQpLCB0YXJnZXQsIHNvdXJjZSkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTaW11
bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cq
IHZpZXcsIFJlZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwg
U2ltdWxhdGVkQ2xpY2tTb3VyY2Ugc291cmNlKQotICAgICAgICA6IE1vdXNlRXZlbnQoZXZlbnRU
eXBlLCB0cnVlLCB0cnVlLCB1bmRlcmx5aW5nRXZlbnQgPyB1bmRlcmx5aW5nRXZlbnQtPnRpbWVT
dGFtcCgpIDogTW9ub3RvbmljVGltZTo6bm93KCksIHZpZXcsIDAsIHsgfSwgeyB9LAorICAgIFNp
bXVsYXRlZE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiB2aWV3LCBSZWZQdHI8RXZlbnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVt
ZW50JiB0YXJnZXQsIFNpbXVsYXRlZENsaWNrU291cmNlIHNvdXJjZSkKKyAgICAgICAgOiBNb3Vz
ZUV2ZW50KGV2ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwgdW5kZXJseWluZ0V2ZW50ID8gdW5kZXJseWlu
Z0V2ZW50LT50aW1lU3RhbXAoKSA6IE1vbm90b25pY1RpbWU6Om5vdygpLCBXVEZNb3ZlKHZpZXcp
LCAwLCB7IH0sIHsgfSwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICAgICAgeyB9
LAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCmluZGV4IGJkMDI0ZWE1NWY2YmE4NGUz
MmM5MDQ0NmZjYmY4MjgyMDRkMmMzMGMuLmIwOTQ0OTNjMWY4NTU4NDk4ODkzYzJjYjdjMGQwNzQ2
YjZhYjViYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCkBAIC0zOCwyOSArMzgsMjkgQEAg
UmVmPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGVGb3JCaW5kaW5ncygpCiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KTsKIH0KIAotUmVmPFRleHRFdmVudD4gVGV4dEV2ZW50
OjpjcmVhdGUoRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElu
cHV0VHlwZSBpbnB1dFR5cGUpCitSZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZShSZWZQ
dHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1
dFR5cGUgaW5wdXRUeXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudCh2
aWV3LCBkYXRhLCBpbnB1dFR5cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZl
bnQoV1RGTW92ZSh2aWV3KSwgZGF0YSwgaW5wdXRUeXBlKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+
IFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoRE9NV2luZG93KiB2aWV3LCBjb25z
dCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKQorUmVmPFRleHRFdmVudD4g
VGV4dEV2ZW50OjpjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQodmlldywgZGF0YSwgMCwgc2hvdWxkU21h
cnRSZXBsYWNlLCBmYWxzZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVv
dGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwg
ZGF0YSwgMCwgc2hvdWxkU21hcnRSZXBsYWNlLCBmYWxzZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGlu
Zzo6UmVzcGVjdEJsb2NrcXVvdGUpKTsKIH0KIAotUmVmPFRleHRFdmVudD4gVGV4dEV2ZW50Ojpj
cmVhdGVGb3JGcmFnbWVudFBhc3RlKERPTVdpbmRvdyogdmlldywgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hT
dHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQorUmVm
PFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKFJlZlB0cjxXaW5k
b3dQcm94eT4mJiB2aWV3LCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBkYXRhLCBib29sIHNo
b3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhh
bmRsaW5nIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgVGV4dEV2ZW50KHZpZXcsIGVtcHR5U3RyaW5nKCksIFdURk1vdmUoZGF0YSksIHNob3VsZFNt
YXJ0UmVwbGFjZSwgc2hvdWxkTWF0Y2hTdHlsZSwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudChXVEZNb3ZlKHZpZXcpLCBlbXB0eVN0
cmluZygpLCBXVEZNb3ZlKGRhdGEpLCBzaG91bGRTbWFydFJlcGxhY2UsIHNob3VsZE1hdGNoU3R5
bGUsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpKTsKIH0KIAotUmVmPFRleHRFdmVudD4gVGV4dEV2
ZW50OjpjcmVhdGVGb3JEcm9wKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQor
UmVmPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGVGb3JEcm9wKFJlZlB0cjxXaW5kb3dQcm94
eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgVGV4dEV2ZW50KHZpZXcsIGRhdGEsIFRleHRFdmVudElucHV0RHJvcCkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRleHRFdmVudChXVEZNb3ZlKHZpZXcpLCBkYXRhLCBUZXh0RXZlbnRJ
bnB1dERyb3ApKTsKIH0KIAotUmVmPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0
YXRpb24oRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxE
aWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcykKK1JlZjxUZXh0RXZl
bnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRGljdGF0aW9uKFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2
ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBU
ZXh0RXZlbnQodmlldywgZGF0YSwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdURk1vdmUodmlldyksIGRhdGEsIGRpY3RhdGlvbkFs
dGVybmF0aXZlcykpOwogfQogCiBUZXh0RXZlbnQ6OlRleHRFdmVudCgpCkBAIC03MSw4ICs3MSw4
IEBAIFRleHRFdmVudDo6VGV4dEV2ZW50KCkKIHsKIH0KIAotVGV4dEV2ZW50OjpUZXh0RXZlbnQo
RE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSBp
bnB1dFR5cGUpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1
ZSwgdHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQcm94
eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSBpbnB1dFR5
cGUpCisgICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwgdHJ1
ZSwgV1RGTW92ZSh2aWV3KSwgMCkKICAgICAsIG1faW5wdXRUeXBlKGlucHV0VHlwZSkKICAgICAs
IG1fZGF0YShkYXRhKQogICAgICwgbV9zaG91bGRTbWFydFJlcGxhY2UoZmFsc2UpCkBAIC04MSw4
ICs4MSw4IEBAIFRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3Ry
aW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4
dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4mJiBwYXN0aW5nRnJhZ21lbnQsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBi
b29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVv
dGVIYW5kbGluZykKLSAgICA6IFVJRXZlbnQoZXZlbnROYW1lcygpLnRleHRJbnB1dEV2ZW50LCB0
cnVlLCB0cnVlLCB2aWV3LCAwKQorVGV4dEV2ZW50OjpUZXh0RXZlbnQoUmVmUHRyPFdpbmRvd1By
b3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRN
YXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcp
CisgICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwgdHJ1ZSwg
V1RGTW92ZSh2aWV3KSwgMCkKICAgICAsIG1faW5wdXRUeXBlKFRleHRFdmVudElucHV0UGFzdGUp
CiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fcGFzdGluZ0ZyYWdtZW50KFdURk1vdmUocGFz
dGluZ0ZyYWdtZW50KSkKQEAgLTkyLDggKzkyLDggQEAgVGV4dEV2ZW50OjpUZXh0RXZlbnQoRE9N
V2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW4K
IHsKIH0KIAotVGV4dEV2ZW50OjpUZXh0RXZlbnQoRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJp
bmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFs
dGVybmF0aXZlcykKLSAgICA6IFVJRXZlbnQoZXZlbnROYW1lcygpLnRleHRJbnB1dEV2ZW50LCB0
cnVlLCB0cnVlLCB2aWV3LCAwKQorVGV4dEV2ZW50OjpUZXh0RXZlbnQoUmVmUHRyPFdpbmRvd1By
b3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgVmVjdG9yPERpY3RhdGlvbkFs
dGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKQorICAgIDogVUlFdmVudChldmVudE5h
bWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIFdURk1vdmUodmlldyksIDApCiAgICAg
LCBtX2lucHV0VHlwZShUZXh0RXZlbnRJbnB1dERpY3RhdGlvbikKICAgICAsIG1fZGF0YShkYXRh
KQogICAgICwgbV9zaG91bGRTbWFydFJlcGxhY2UoZmFsc2UpCkBAIC0xMDUsMTIgKzEwNSwxMiBA
QCBUZXh0RXZlbnQ6OlRleHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0
YSwgY29uc3QgVmVjdG9yPERpY3RhdGlvbgogCiBUZXh0RXZlbnQ6On5UZXh0RXZlbnQoKSA9IGRl
ZmF1bHQ7CiAKLXZvaWQgVGV4dEV2ZW50Ojppbml0VGV4dEV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3
LCBjb25zdCBTdHJpbmcmIGRhdGEpCit2b2lkIFRleHRFdmVudDo6aW5pdFRleHRFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7CiAgICAgaWYg
KGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRVSUV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgMCk7CisgICAgaW5pdFVJRXZlbnQo
dHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCAwKTsKIAogICAgIG1f
aW5wdXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RleHRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5o
CmluZGV4IDI5ZWIyNmQwZTA3NGI1NGQzNDYzNTYwNDI4MGQxMmE2OTg4YWY4ZGEuLjBhZTJhYzg2
M2ZiODFiYmIyODYzODUxNjViNmIxMjUxZDJkZmIxYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmgK
QEAgLTM4LDE2ICszOCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBUZXh0
RXZlbnQgZmluYWwgOiBwdWJsaWMgVUlFdmVudCB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0
aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlKERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYgZGF0YSwg
VGV4dEV2ZW50SW5wdXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7CisgICAgICAgIHN0
YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBT
dHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQp
OwogICAgICAgICBzdGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKTsKLSAg
ICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKERPTVdp
bmRvdyosIGNvbnN0IFN0cmluZyYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UpOwotICAg
ICAgICBzdGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShET01XaW5k
b3cqLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVw
bGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKLSAg
ICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRyb3AoRE9NV2luZG93KiwgY29u
c3QgU3RyaW5nJiBkYXRhKTsKLSAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZv
ckRpY3RhdGlvbihET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxE
aWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgICAgIHN0
YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShSZWZQdHI8V2luZG93
UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UpOwor
ICAgICAgICBzdGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShSZWZQ
dHI8V2luZG93UHJveHk+JiYsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIGRhdGEsIGJvb2wg
c2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3Rl
SGFuZGxpbmcpOworICAgICAgICBzdGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yRHJvcChS
ZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CisgICAgICAgIHN0YXRp
YyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEaWN0YXRpb24oUmVmUHRyPFdpbmRvd1Byb3h5PiYm
LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4m
IGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAKICAgICAgICAgdmlydHVhbCB+VGV4dEV2ZW50KCk7
CiAgICAgCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdFRleHRFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdp
bmRvdyosIGNvbnN0IFN0cmluZyYgZGF0YSk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
aW5pdFRleHRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBkYXRh
KTsKICAgICAKICAgICAgICAgU3RyaW5nIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0K
IApAQCAtNzEsOSArNzEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgVGV4dEV2ZW50KCk7CiAKLSAgICAgICAgVGV4dEV2ZW50KERPTVdpbmRvdyosIGNvbnN0
IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2Fy
ZCk7Ci0gICAgICAgIFRleHRFdmVudChET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBz
aG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKLSAgICAgICAgVGV4dEV2
ZW50KERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgVmVjdG9yPERpY3RhdGlv
bkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICAgICAgVGV4dEV2ZW50
KFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1
dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJkKTsKKyAgICAgICAgVGV4dEV2ZW50KFJlZlB0
cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4mJiwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwg
TWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7CisgICAgICAgIFRleHRFdmVudChSZWZQdHI8V2luZG93
UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgVmVjdG9yPERpY3RhdGlvbkFsdGVy
bmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKIAogICAgICAgICBib29sIGlzVGV4dEV2
ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0RXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5pZGwKaW5kZXggMzY0
MDY1ZmE4MmQ0MTg5OWMwYzUyMzI1MGMyZjI3OTk3NzBkM2UwZS4uY2U4YjMwYWNiM2M3MWZmZGY4
MjhiMjE4MTA2NWFhYTFmOGExMjYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Rl
eHRFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5pZGwKQEAgLTMy
LDcgKzMyLDcgQEAgaW50ZXJmYWNlIFRleHRFdmVudCA6IFVJRXZlbnQgewogICAgIHZvaWQgaW5p
dFRleHRFdmVudChvcHRpb25hbCBET01TdHJpbmcgdHlwZUFyZyA9ICJ1bmRlZmluZWQiLAogICAg
ICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBib29sZWFuIGNhbkJ1YmJsZUFyZyA9IGZhbHNl
LAogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBib29sZWFuIGNhbmNlbGFibGVBcmcg
PSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NV2luZG93PyB2aWV3
QXJnID0gbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgV2luZG93UHJveHk/
IHZpZXdBcmcgPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBET01TdHJp
bmcgZGF0YUFyZyA9ICJ1bmRlZmluZWQiKTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ub3VjaEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNw
cAppbmRleCA2MWMwOGYyMWRhMzhiYWE3YTExMGYyMmRjYTZhNTdiZTkzYjY4M2U3Li4wMDIzN2Nk
YWQ1NjgzNzk1MmQ5M2E5N2RlMjZhOTllOWVhZmMzOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVG91Y2hFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZl
bnQuY3BwCkBAIC0zOCw5ICszOCw5IEBAIFRvdWNoRXZlbnQ6OlRvdWNoRXZlbnQoKSA9IGRlZmF1
bHQ7CiAKIFRvdWNoRXZlbnQ6OlRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVzLCBUb3VjaExp
c3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgIFRvdWNoTGlzdCogY2hhbmdlZFRvdWNoZXMsIGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgCi0gICAgICAgIERPTVdpbmRvdyogdmlldywgaW50IHNj
cmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKKyAgICAgICAgUmVmUHRy
PFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VY
LCBpbnQgcGFnZVksCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hp
ZnRLZXksIGJvb2wgbWV0YUtleSkKLSAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KHR5cGUsIHRydWUs
IHRydWUsIE1vbm90b25pY1RpbWU6Om5vdygpLCB2aWV3LCAwLCBJbnRQb2ludChzY3JlZW5YLCBz
Y3JlZW5ZKSwKKyAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KHR5cGUsIHRydWUsIHRydWUsIE1vbm90
b25pY1RpbWU6Om5vdygpLCBXVEZNb3ZlKHZpZXcpLCAwLCBJbnRQb2ludChzY3JlZW5YLCBzY3Jl
ZW5ZKSwKICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KHBhZ2VYLCBwYWdlWSksCiAj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50
KDAsIDApLApAQCAtNjQsMTMgKzY0LDEzIEBAIFRvdWNoRXZlbnQ6On5Ub3VjaEV2ZW50KCkgPSBk
ZWZhdWx0OwogCiB2b2lkIFRvdWNoRXZlbnQ6OmluaXRUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91
Y2hlcywgVG91Y2hMaXN0KiB0YXJnZXRUb3VjaGVzLAogICAgICAgICBUb3VjaExpc3QqIGNoYW5n
ZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICBET01XaW5kb3cq
IHZpZXcsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZ
LAorICAgICAgICBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IHNjcmVlblgsIGludCBz
Y3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksCiAgICAgICAgIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSkKIHsKICAgICBpZiAoaXNC
ZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW5pdFVJRXZlbnQodHlw
ZSwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCk7CisgICAgaW5pdFVJRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1
ZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAgICBtX3RvdWNoZXMgPSB0b3VjaGVzOwogICAgIG1f
dGFyZ2V0VG91Y2hlcyA9IHRhcmdldFRvdWNoZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVG91Y2hFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaAppbmRl
eCBkMzM5YzBiNzJiMTNkNDU1YTVlMDM4NjZlNTU3MjBjY2Y2YmYxZWRiLi44NWZhMTYxZjIxOTZk
M2YyYTA1ZDlhMzFhMTE3YjBhMWFmODY2Zjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVG91Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKQEAg
LTQxLDEyICs0MSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPFRvdWNoRXZlbnQ+IGNy
ZWF0ZShUb3VjaExpc3QqIHRvdWNoZXMsIAogICAgICAgICAgICAgVG91Y2hMaXN0KiB0YXJnZXRU
b3VjaGVzLCBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzLCAKLSAgICAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgRE9NV2luZG93KiB2aWV3LAorICAgICAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICAgICAgICAg
IGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCiAgICAgICAg
ICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXkpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUb3VjaEV2ZW50KHRvdWNo
ZXMsIHRhcmdldFRvdWNoZXMsIGNoYW5nZWRUb3VjaGVzLAotICAgICAgICAgICAgICAgIHR5cGUs
IHZpZXcsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VYLCBwYWdlWSwKKyAgICAgICAgICAgICAgICB0
eXBlLCBXVEZNb3ZlKHZpZXcpLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksCiAgICAg
ICAgICAgICAgICAgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSkpOwogICAgIH0K
ICAgICBzdGF0aWMgUmVmPFRvdWNoRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCkKQEAgLTY3LDcg
KzY3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbml0VG91Y2hFdmVudChUb3VjaExpc3QqIHRv
dWNoZXMsIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywKICAgICAgICAgICAgIFRvdWNoTGlzdCog
Y2hhbmdlZFRvdWNoZXMsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgCi0gICAgICAgICAgICBE
T01XaW5kb3cqLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksCisgICAgICAgICAgICBSZWZQdHI8
V2luZG93UHJveHk+JiYsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwKICAgICAgICAgICAgIGlu
dCBjbGllbnRYLCBpbnQgY2xpZW50WSwKICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CiAKQEAgLTg3LDcgKzg3LDcgQEAg
cHJpdmF0ZToKICAgICBUb3VjaEV2ZW50KCk7CiAgICAgVG91Y2hFdmVudChUb3VjaExpc3QqIHRv
dWNoZXMsIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywKICAgICAgICAgICAgIFRvdWNoTGlzdCog
Y2hhbmdlZFRvdWNoZXMsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwKLSAgICAgICAgICAgIERP
TVdpbmRvdyosIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLAorICAgICAgICAg
ICAgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBw
YWdlWCwKICAgICAgICAgICAgIGludCBwYWdlWSwKICAgICAgICAgICAgIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CiAgICAgVG91Y2hFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ub3VjaEV2ZW50LmlkbAppbmRleCA4MTA1ODM1N2VkM2FhNzc3NGQyNmZhZmFlMTYwM2IxNWRk
ZTBkNjBiLi41NGU5OWRiNDgzMGYzMGQ0NjI2NDJlMzNkNDM5NTY5M2IxM2YyYjBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RvdWNoRXZlbnQuaWRsCkBAIC00MCw3ICs0MCw3IEBACiAgICAgICAgICAgICAgICAg
ICAgICAgICBvcHRpb25hbCBUb3VjaExpc3Q/IHRhcmdldFRvdWNoZXMgPSBudWxsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgVG91Y2hMaXN0PyBjaGFuZ2VkVG91Y2hlcyA9IG51
bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBET01TdHJpbmcgdHlwZSA9ICJ1
bmRlZmluZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NV2luZG93PyB2
aWV3ID0gbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFdpbmRvd1Byb3h5
PyB2aWV3ID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGxvbmcgc2Ny
ZWVuWCA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBsb25nIHNjcmVlblkg
PSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgbG9uZyBjbGllbnRYID0gMCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50LmNwcAppbmRleCBhYjIwZWVjYjljNTgzMWRlZjAyNzljYTc4YTBlN2Nj
NWZhODU2MjE3Li4wYTZmODFhZjUyMzcxNmY3NTgxNzhmMGY5NTM0NGNkYzY1NWI4MDA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1VJRXZlbnQuY3BwCkBAIC0zMiwxNiArMzIsMTYgQEAgVUlFdmVudDo6VUlFdmVudCgp
CiB7CiB9CiAKLVVJRXZlbnQ6OlVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVBcmcsIERPTVdpbmRvdyogdmlld0Fy
ZywgaW50IGRldGFpbEFyZykKK1VJRXZlbnQ6OlVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVBcmcsIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQogICAgIDogRXZlbnQoZXZlbnRU
eXBlLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcpCi0gICAgLCBtX3ZpZXcodmlld0FyZykK
KyAgICAsIG1fdmlldyhXVEZNb3ZlKHZpZXdBcmcpKQogICAgICwgbV9kZXRhaWwoZGV0YWlsQXJn
KQogewogfQogCi1VSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBNb25vdG9uaWNUaW1lIHRp
bWVzdGFtcCwgRE9NV2luZG93KiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQorVUlFdmVudDo6VUlF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGVBcmcsIGJv
b2wgY2FuY2VsYWJsZUFyZywgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQogICAgIDogRXZlbnQoZXZlbnRUeXBlLCBj
YW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsIHRpbWVzdGFtcCkKLSAgICAsIG1fdmlldyh2aWV3
QXJnKQorICAgICwgbV92aWV3KFdURk1vdmUodmlld0FyZykpCiAgICAgLCBtX2RldGFpbChkZXRh
aWxBcmcpCiB7CiB9CkBAIC01NSw3ICs1NSw3IEBAIFVJRXZlbnQ6OlVJRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFVJRXZlbnRJbml0JiBpbml0aWFsaXplciwKIAog
VUlFdmVudDo6flVJRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgVUlFdmVudDo6aW5pdFVJRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlQXJnLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBj
YW5jZWxhYmxlQXJnLCBET01XaW5kb3cqIHZpZXdBcmcsIGludCBkZXRhaWxBcmcpCit2b2lkIFVJ
RXZlbnQ6OmluaXRVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZUFyZywgYm9vbCBjYW5C
dWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXdB
cmcsIGludCBkZXRhaWxBcmcpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCmluZGV4IGJhYTczMWZjZjgxZWViYWYyMzE1M2Rh
NTFiYTBhZWFmZDI0NTVmYWMuLjUwZjJkMTc3MTk5NDJlNDczZmRlYzliMWE4ODQ4NjA1OTNjZDE5
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnQuaApAQCAtMjMsMjAgKzIzLDIwIEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRl
ICJVSUV2ZW50SW5pdC5oIgorI2luY2x1ZGUgIldpbmRvd1Byb3h5LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gbm8gb25lIGlzIGRlcGVuZGlu
ZyBvbiBpdCBhbnltb3JlLgotdHlwZWRlZiBET01XaW5kb3cgQWJzdHJhY3RWaWV3OwordHlwZWRl
ZiBXaW5kb3dQcm94eSBBYnN0cmFjdFZpZXc7CiAKIGNsYXNzIFVJRXZlbnQgOiBwdWJsaWMgRXZl
bnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VUlFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93
KiB2aWV3LCBpbnQgZGV0YWlsKQorICAgIHN0YXRpYyBSZWY8VUlFdmVudD4gY3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBkZXRhaWwpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmll
dywgZGV0YWlsKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVJRXZlbnQodHlwZSwg
Y2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpKTsKICAgICB9CiAg
ICAgc3RhdGljIFJlZjxVSUV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCiAgICAgewpAQCAtNDgs
OSArNDgsOSBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgflVJRXZlbnQoKTsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBpbnQgZGV0YWls
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1By
b3h5PiYmLCBpbnQgZGV0YWlsKTsKIAotICAgIERPTVdpbmRvdyogdmlldygpIGNvbnN0IHsgcmV0
dXJuIG1fdmlldy5nZXQoKTsgfQorICAgIFdpbmRvd1Byb3h5KiB2aWV3KCkgY29uc3QgeyByZXR1
cm4gbV92aWV3LmdldCgpOyB9CiAgICAgaW50IGRldGFpbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV0
YWlsOyB9CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJy
aWRlOwpAQCAtNjUsMTQgKzY1LDE0IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFVJRXZl
bnQoKTsKLSAgICBVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7Ci0gICAgVUlFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqLCBpbnQgZGV0YWlsKTsKKyAg
ICBVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQgZGV0YWlsKTsKKyAgICBVSUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50
IGRldGFpbCk7CiAgICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBVSUV2ZW50
SW5pdCYsIElzVHJ1c3RlZCk7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1VJRXZlbnQoKSBjb25z
dCBmaW5hbDsKIAotICAgIFJlZlB0cjxET01XaW5kb3c+IG1fdmlldzsKKyAgICBSZWZQdHI8V2lu
ZG93UHJveHk+IG1fdmlldzsKICAgICBpbnQgbV9kZXRhaWw7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVu
dC5pZGwKaW5kZXggODdiMzkxNTI4MzAzMTk3ZTM2YzY0YzFlNzA4ZmZiNjBjYmFkOTUwMy4uNmEz
NWM1N2EzODc0YmM4ZWM2M2Q2ZDkyNGQ0MjhiMmI1ODEwMGY2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50
LmlkbApAQCAtMjAsMTEgKzIwLDExIEBACiBbCiAgICAgQ29uc3RydWN0b3IoRE9NU3RyaW5nIHR5
cGUsIG9wdGlvbmFsIFVJRXZlbnRJbml0IGV2ZW50SW5pdERpY3QpCiBdIGludGVyZmFjZSBVSUV2
ZW50IDogRXZlbnQgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01XaW5kb3cgdmlldzsKKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkgdmlldzsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgbG9uZyBkZXRhaWw7CiAgICAgCiAgICAgLy8gRklYTUU6IFVzaW5nICJ1bmRlZmluZWQi
IGFzIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIGlzIHdyb25nLgotICAgIHZvaWQgaW5pdFVJRXZl
bnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgYm9vbGVh
biBjYW5CdWJibGUgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlID0gZmFsc2Us
IG9wdGlvbmFsIERPTVdpbmRvdz8gdmlldyA9IG51bGwsIG9wdGlvbmFsIGxvbmcgZGV0YWlsID0g
MCk7CisgICAgdm9pZCBpbml0VUlFdmVudChvcHRpb25hbCBET01TdHJpbmcgdHlwZSA9ICJ1bmRl
ZmluZWQiLCBvcHRpb25hbCBib29sZWFuIGNhbkJ1YmJsZSA9IGZhbHNlLCBvcHRpb25hbCBib29s
ZWFuIGNhbmNlbGFibGUgPSBmYWxzZSwgb3B0aW9uYWwgV2luZG93UHJveHk/IHZpZXcgPSBudWxs
LCBvcHRpb25hbCBsb25nIGRldGFpbCA9IDApOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxv
bmcgbGF5ZXJYOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxheWVyWTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1VJRXZlbnRJbml0LmgKaW5kZXggMDMxNmJjMDZmNTY4ZTUzOTE2ZGY2OTZmNDE0NDViYTlmYzMx
ZmYzNi4uZTExMjhhNzZkZTU4NjAxNjJmYTk3NmRjZGM4MjcxNzBkOGYyZjNhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRJbml0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1VJRXZlbnRJbml0LmgKQEAgLTI1LDE0ICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50SW5pdC5oIgorI2luY2x1ZGUg
IldpbmRvd1Byb3h5LmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0cnVjdCBVSUV2ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgewotICAgIFJl
ZlB0cjxET01XaW5kb3c+IHZpZXc7CisgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiB2aWV3OwogICAg
IGludCBkZXRhaWwgeyAwIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VUlFdmVudEluaXQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRJbml0LmlkbAppbmRl
eCAwZDdlYjhlZmMxYzUzN2E5MDUxMTdiNjEyMTExYWQwMWViMWUwYWEyLi4zY2NiYmVkNjA3NTVm
NmYyMTY1MmY1YmE2MWU2ZjM4MjQwYzE3ZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVUlFdmVudEluaXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5p
ZGwKQEAgLTI0LDYgKzI0LDYgQEAKICAqLwogCiBkaWN0aW9uYXJ5IFVJRXZlbnRJbml0IDogRXZl
bnRJbml0IHsKLSAgICBET01XaW5kb3c/IHZpZXcgPSBudWxsOworICAgIFdpbmRvd1Byb3h5PyB2
aWV3ID0gbnVsbDsKICAgICBsb25nIGRldGFpbCA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9V
SUV2ZW50V2l0aEtleVN0YXRlLmgKaW5kZXggMGE4ZTQwMzEyNDhkNmY3MjY1NDQyZTViZjgwMDEy
YmEzMGNjY2RlYi4uMDg1YTAzMTdlYzhkY2UzYTYwZmUyNmFmYTVhMTYyZWEyYTlhMDUxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5oCkBAIC00MCw4ICs0MCw4IEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBVSUV2ZW50V2l0aEtleVN0YXRlKCkgPSBkZWZhdWx0
OwogCi0gICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFp
bCwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5
KQotICAgICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBk
ZXRhaWwpCisgICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3LCBpbnQgZGV0YWlsLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXkpCisgICAgICAgIDogVUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNl
bGFibGUsIFdURk1vdmUodmlldyksIGRldGFpbCkKICAgICAgICAgLCBtX2N0cmxLZXkoY3RybEtl
eSkKICAgICAgICAgLCBtX2FsdEtleShhbHRLZXkpCiAgICAgICAgICwgbV9zaGlmdEtleShzaGlm
dEtleSkKQEAgLTQ5LDkgKzQ5LDkgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICB9CiAKLSAgICBV
SUV2ZW50V2l0aEtleVN0YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIERPTVdpbmRvdyog
dmlldywKKyAgICBVSUV2ZW50V2l0aEtleVN0YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAs
IFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LAogICAgICAgICBpbnQgZGV0YWlsLCBib29sIGN0
cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIGJvb2wgYWx0
R3JhcGhLZXksIGJvb2wgY2Fwc0xvY2tLZXkpCi0gICAgICAgICAgICA6IFVJRXZlbnQodHlwZSwg
Y2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIHZpZXcsIGRldGFpbCkKKyAgICAgICAg
ICAgIDogVUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgV1RG
TW92ZSh2aWV3KSwgZGV0YWlsKQogICAgICAgICAgICAgLCBtX2N0cmxLZXkoY3RybEtleSkKICAg
ICAgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQogICAgICAgICAgICAgLCBtX3NoaWZ0S2V5KHNo
aWZ0S2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCmluZGV4IGQyYjhmYjcyZDkxOThlMTRi
Zjc1OGNhM2FmYmMxZWMyNDdmNzFjYmQuLjUzN2NiMTkzYzgxM2Y1MjdhYzUzM2M5MzA4OTA4N2Jk
YjM2OGJlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAKQEAgLTQ3LDggKzQ3LDggQEAg
aW5saW5lIFdoZWVsRXZlbnQ6OldoZWVsRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBj
b25zdCBJbml0JiBpbml0aWFsaXplciwKIHsKIH0KIAotaW5saW5lIFdoZWVsRXZlbnQ6OldoZWVs
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB2aWV3KQot
ICAgIDogTW91c2VFdmVudChldmVudE5hbWVzKCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgZXZl
bnQudGltZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCksIHZpZXcsIDAsIGV2ZW50
Lmdsb2JhbFBvc2l0aW9uKCksIGV2ZW50LnBvc2l0aW9uKCkKK2lubGluZSBXaGVlbEV2ZW50OjpX
aGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3KQorICAgIDogTW91c2VFdmVudChldmVudE5hbWVzKCkud2hlZWxFdmVudCwg
dHJ1ZSwgdHJ1ZSwgZXZlbnQudGltZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCks
IFdURk1vdmUodmlldyksIDAsIGV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIGV2ZW50LnBvc2l0aW9u
KCkKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICAsIHsgfQogI2VuZGlmCkBAIC02
MSw5ICs2MSw5IEBAIGlubGluZSBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogdmlldykKIHsKIH0KIAotUmVmPFdoZWVsRXZl
bnQ+IFdoZWVsRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBE
T01XaW5kb3cqIHZpZXcpCitSZWY8V2hlZWxFdmVudD4gV2hlZWxFdmVudDo6Y3JlYXRlKGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3KQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdoZWVsRXZlbnQoZXZlbnQsIHZpZXcpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXaGVlbEV2ZW50KGV2ZW50LCBXVEZNb3ZlKHZpZXcpKSk7
CiB9CiAKIFJlZjxXaGVlbEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGVGb3JCaW5kaW5ncygpCkBA
IC03NiwxMiArNzYsMTIgQEAgUmVmPFdoZWVsRXZlbnQ+IFdoZWVsRXZlbnQ6OmNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWwKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXaGVlbEV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKIH0K
IAotdm9pZCBXaGVlbEV2ZW50Ojppbml0V2ViS2l0V2hlZWxFdmVudChpbnQgcmF3RGVsdGFYLCBp
bnQgcmF3RGVsdGFZLCBET01XaW5kb3cqIHZpZXcsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwg
aW50IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hp
ZnRLZXksIGJvb2wgbWV0YUtleSkKK3ZvaWQgV2hlZWxFdmVudDo6aW5pdFdlYktpdFdoZWVsRXZl
bnQoaW50IHJhd0RlbHRhWCwgaW50IHJhd0RlbHRhWSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZp
ZXcsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wg
Y3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSkKIHsKICAg
ICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlu
aXRNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50LCB0cnVlLCB0cnVlLCB2aWV3LCAw
LCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRL
ZXksIG1ldGFLZXksIDAsIG51bGxwdHIpOworICAgIGluaXRNb3VzZUV2ZW50KGV2ZW50TmFtZXMo
KS53aGVlbEV2ZW50LCB0cnVlLCB0cnVlLCBXVEZNb3ZlKHZpZXcpLCAwLCBzY3JlZW5YLCBzY3Jl
ZW5ZLCBwYWdlWCwgcGFnZVksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIDAs
IG51bGxwdHIpOwogCiAgICAgLy8gTm9ybWFsaXplIHRvIDEyMCBtdWx0aXBsZSBmb3IgY29tcGF0
aWJpbGl0eSB3aXRoIElFLgogICAgIG1fd2hlZWxEZWx0YSA9IHsgcmF3RGVsdGFYICogVGlja011
bHRpcGxpZXIsIHJhd0RlbHRhWSAqIFRpY2tNdWx0aXBsaWVyIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZl
bnQuaAppbmRleCA0ZDM0YjMwZDZkZWQ1ZWYyODE1YTgxMzdlNGMyOTdlNjQxYWRlNmRhLi4xMGI2
MmUwNWM3MDE1NjA3NmZmZTVjZjEyNzM5N2VjMTMyM2RkMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2
ZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgICAgICBET01fREVMVEFfUEFHRQog
ICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPFdoZWVsRXZlbnQ+IGNyZWF0ZShjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmLCBET01XaW5kb3cqKTsKKyAgICBzdGF0aWMgUmVmPFdoZWVsRXZlbnQ+IGNy
ZWF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBSZWZQdHI8V2luZG93UHJveHk+JiYpOwog
ICAgIHN0YXRpYyBSZWY8V2hlZWxFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKTsKIAogICAgIHN0
cnVjdCBJbml0IDogTW91c2VFdmVudEluaXQgewpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgUmVmPFdoZWVsRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgaW5pdFdlYktpdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwgaW50IHJh
d0RlbHRhWSwgRE9NV2luZG93KiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgs
IGludCBwYWdlWSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9v
bCBtZXRhS2V5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRXZWJLaXRXaGVlbEV2ZW50
KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50
IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KTsKIAogICAgIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1XaGVlbEV2ZW50PiYgdW5kZXJseWluZ1BsYXRmb3JtRXZl
bnQoKSBjb25zdCB7IHJldHVybiBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50OyB9CiAKQEAgLTc1
LDcgKzc1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXaGVlbEV2ZW50KCk7CiAgICAgV2hl
ZWxFdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKLSAg
ICBXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIERPTVdpbmRvdyopOworICAg
IFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmKTsKIAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmlkbAppbmRleCA5M2M1M2E0YmZiMmRhZjRiZDQ0Mjcz
ODY2YTkyY2VkNGExYzFjMzg2Li5iMjgxZGExYzY2MDQ0YThhOTNkNjBkOTBlZGRmNTFkMTRjNmM5
MzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaWRsCkBAIC0zOSw3ICszOSw3IEBACiAKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXREaXJlY3Rpb25JbnZlcnRlZEZyb21E
ZXZpY2U7CiAKLSAgICB2b2lkIGluaXRXZWJLaXRXaGVlbEV2ZW50KG9wdGlvbmFsIGxvbmcgd2hl
ZWxEZWx0YVggPSAwLCBvcHRpb25hbCBsb25nIHdoZWVsRGVsdGFZID0gMCwgb3B0aW9uYWwgRE9N
V2luZG93PyB2aWV3ID0gbnVsbCwKKyAgICB2b2lkIGluaXRXZWJLaXRXaGVlbEV2ZW50KG9wdGlv
bmFsIGxvbmcgd2hlZWxEZWx0YVggPSAwLCBvcHRpb25hbCBsb25nIHdoZWVsRGVsdGFZID0gMCwg
b3B0aW9uYWwgV2luZG93UHJveHk/IHZpZXcgPSBudWxsLAogICAgICAgICBvcHRpb25hbCBsb25n
IHNjcmVlblggPSAwLCBvcHRpb25hbCBsb25nIHNjcmVlblkgPSAwLCBvcHRpb25hbCBsb25nIGNs
aWVudFggPSAwLCBvcHRpb25hbCBsb25nIGNsaWVudFkgPSAwLAogICAgICAgICBvcHRpb25hbCBi
b29sZWFuIGN0cmxLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBhbHRLZXkgPSBmYWxzZSwK
ICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBzaGlmdEtleSA9IGZhbHNlLCBvcHRpb25hbCBib29s
ZWFuIG1ldGFLZXkgPSBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCBkMTQ3MjQyNzcyMzc0NjhkNGY2MWZm
ZTMzYzc1ZmU0NmE4MTkyM2RjLi5kNzNhNzFiMGUxNWRkODE5ZjE3MGVmYTVmNTYyZWY3NWM5NDJi
OTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlci5jcHAKQEAgLTYzMiw3ICs2MzIsNyBAQCBib29sIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXI6Omluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZl
YwogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkKICAgICAgICAgdmll
dy0+ZGlzYWJsZUxheWVyRmx1c2hUaHJvdHRsaW5nVGVtcG9yYXJpbHlGb3JJbnRlcmFjdGlvbigp
OwogCi0gICAgUmVmPFRleHRFdmVudD4gZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3Rh
dGlvbihtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0LCBkaWN0YXRpb25BbHRl
cm5hdGl2ZXMpOworICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVG
b3JEaWN0YXRpb24obV9mcmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCB0ZXh0LCBkaWN0
YXRpb25BbHRlcm5hdGl2ZXMpOwogICAgIGV2ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQodHJpZ2dl
cmluZ0V2ZW50KTsKIAogICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggY2I4YjZiOGJiYWM4NWJjMGUzMmRlZDJlZjMzOWMyNDEw
MjkwZDMxOS4uNGUzNjhiZmQ4MDNjNTM2ODUyZWRjZTYwMTA0Njk0NDg2MzE0OTE5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgRWRpdG9yOjpw
YXN0ZUFzUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgcGFzdGluZ1RleHQsIGJvb2wgc21hcnRSZXBs
YWNlKQogICAgIEVsZW1lbnQqIHRhcmdldCA9IGZpbmRFdmVudFRhcmdldEZyb21TZWxlY3Rpb24o
KTsKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuOwotICAgIHRhcmdldC0+ZGlzcGF0
Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKGRvY3VtZW50KCkuZG9t
V2luZG93KCksIHBhc3RpbmdUZXh0LCBzbWFydFJlcGxhY2UpKTsKKyAgICB0YXJnZXQtPmRpc3Bh
dGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShkb2N1bWVudCgpLmRl
ZmF1bHRWaWV3KCksIHBhc3RpbmdUZXh0LCBzbWFydFJlcGxhY2UpKTsKIH0KIAogdm9pZCBFZGl0
b3I6OnBhc3RlQXNGcmFnbWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBwYXN0aW5nRnJhZ21l
bnQsIGJvb2wgc21hcnRSZXBsYWNlLCBib29sIG1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFu
ZGxpbmcgcmVzcGVjdHNNYWlsQmxvY2txdW90ZSkKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIEVk
aXRvcjo6cGFzdGVBc0ZyYWdtZW50KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIHBhc3RpbmdGcmFn
bWVudCwgYm9vbCBzbWFydAogICAgIEVsZW1lbnQqIHRhcmdldCA9IGZpbmRFdmVudFRhcmdldEZy
b21TZWxlY3Rpb24oKTsKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuOwotICAgIHRh
cmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUoZG9j
dW1lbnQoKS5kb21XaW5kb3coKSwgV1RGTW92ZShwYXN0aW5nRnJhZ21lbnQpLCBzbWFydFJlcGxh
Y2UsIG1hdGNoU3R5bGUsIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUpKTsKKyAgICB0YXJnZXQtPmRp
c3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKGRvY3VtZW50KCku
ZGVmYXVsdFZpZXcoKSwgV1RGTW92ZShwYXN0aW5nRnJhZ21lbnQpLCBzbWFydFJlcGxhY2UsIG1h
dGNoU3R5bGUsIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUpKTsKIH0KIAogdm9pZCBFZGl0b3I6OnBh
c3RlQXNQbGFpblRleHRCeXBhc3NpbmdESFRNTCgpCkBAIC0xODQ4LDcgKzE4NDgsNyBAQCB2b2lk
IEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBTZXRDb21wb3NpdGlv
bk1vZGUgbW9kZSkKICAgICBpbnNlcnRUZXh0Rm9yQ29uZmlybWVkQ29tcG9zaXRpb24odGV4dCk7
CiAKICAgICBpZiAoYXV0byogdGFyZ2V0ID0gZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpKQot
ICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50LCBkb2N1bWVudCgpLmRvbVdpbmRvdygpLCB0
ZXh0KSk7CisgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChDb21wb3NpdGlvbkV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uZW5kRXZlbnQsIGRvY3VtZW50KCkuZGVmYXVs
dFZpZXcoKSwgdGV4dCkpOwogCiAgICAgaWYgKG1vZGUgPT0gQ2FuY2VsQ29tcG9zaXRpb24pIHsK
ICAgICAgICAgLy8gQW4gb3BlbiB0eXBpbmcgY29tbWFuZCB0aGF0IGRpc2FncmVlcyBhYm91dCBj
dXJyZW50IHNlbGVjdGlvbiB3b3VsZCBjYXVzZSBpc3N1ZXMgd2l0aCB0eXBpbmcgbGF0ZXIgb24u
CkBAIC0xOTA4LDExICsxOTA4LDExIEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluCiAgICAgICAg
ICAgICAvLyBXZSBzaG91bGQgc2VuZCBhIGNvbXBvc2l0aW9uc3RhcnQgZXZlbnQgb25seSB3aGVu
IHRoZSBnaXZlbiB0ZXh0IGlzIG5vdCBlbXB0eSBiZWNhdXNlIHRoaXMKICAgICAgICAgICAgIC8v
IGZ1bmN0aW9uIGRvZXNuJ3QgY3JlYXRlIGEgY29tcG9zaXRpb24gbm9kZSB3aGVuIHRoZSB0ZXh0
IGlzIGVtcHR5LgogICAgICAgICAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmNvbXBvc2l0aW9uc3RhcnRFdmVudCwgZG9jdW1lbnQoKS5kb21XaW5kb3coKSwg
b3JpZ2luYWxUZXh0KSk7Ci0gICAgICAgICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCku
ZG9tV2luZG93KCksIHRleHQpOworICAgICAgICAgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVu
dChDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uc3RhcnRF
dmVudCwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCBvcmlnaW5hbFRleHQpKTsKKyAgICAgICAg
ICAgICAgICBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29t
cG9zaXRpb251cGRhdGVFdmVudCwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCB0ZXh0KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmICghdGV4dC5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9z
aXRpb251cGRhdGVFdmVudCwgZG9jdW1lbnQoKS5kb21XaW5kb3coKSwgdGV4dCk7CisgICAgICAg
ICAgICBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9z
aXRpb251cGRhdGVFdmVudCwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCB0ZXh0KTsKIAogICAg
ICAgICBpZiAoZXZlbnQpCiAgICAgICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoKmV2ZW50
KTsKQEAgLTE5MjMsNyArMTkyMyw3IEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluCiAgICAgaWYg
KHRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZVNlbGVjdGlv
bihkb2N1bWVudCgpLCBUeXBpbmdDb21tYW5kOjpQcmV2ZW50U3BlbGxDaGVja2luZywgVHlwaW5n
Q29tbWFuZDo6VGV4dENvbXBvc2l0aW9uUGVuZGluZyk7CiAgICAgICAgIGlmICh0YXJnZXQpCi0g
ICAgICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50LCBkb2N1bWVudCgpLmRvbVdpbmRvdygp
LCB0ZXh0KSk7CisgICAgICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25F
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50LCBkb2N1bWVudCgp
LmRlZmF1bHRWaWV3KCksIHRleHQpKTsKICAgICB9CiAKICAgICBtX2NvbXBvc2l0aW9uTm9kZSA9
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXggYTNkN2Q5Nzcw
Y2ViZDA2MjhjYTdiZWMyNGNmYTY3NWQzYjk3YmI1NC4uOWQ1ODFjZWRmYTg0MWUwYWRmMWFhYzQz
MjU5MWM4YjZmMmY3NjUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcApAQCAt
MTE0LDcgKzExNCw3IEBAIFJlZjxEb2N1bWVudFBhcnNlcj4gSFRNTERvY3VtZW50OjpjcmVhdGVQ
YXJzZXIoKQogfQogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9k
b20uaHRtbCNkb20tZG9jdW1lbnQtbmFtZWRpdGVtCi1zdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVm
UHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+
IEhUTUxEb2N1bWVudDo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3N0ZDo6
b3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8RWxlbWVudD4sIFJl
ZlB0cjxIVE1MQ29sbGVjdGlvbj4+PiBIVE1MRG9jdW1lbnQ6Om5hbWVkSXRlbShjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkgfHwgIWhhc0RvY3VtZW50
TmFtZWRJdGVtKCpuYW1lLmltcGwoKSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBA
IC0xMjIsMTYgKzEyMiwxNiBAQCBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRv
dz4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPgogICAgIGlmIChVTkxJ
S0VMWShkb2N1bWVudE5hbWVkSXRlbUNvbnRhaW5zTXVsdGlwbGVFbGVtZW50cygqbmFtZS5pbXBs
KCkpKSkgewogICAgICAgICBhdXRvIGNvbGxlY3Rpb24gPSBkb2N1bWVudE5hbWVkSXRlbXMobmFt
ZSk7CiAgICAgICAgIEFTU0VSVChjb2xsZWN0aW9uLT5sZW5ndGgoKSA+IDEpOwotICAgICAgICBy
ZXR1cm4gVmFyaWFudDxSZWZQdHI8RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8
SFRNTENvbGxlY3Rpb24+PiB7IFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4geyBXVEZNb3ZlKGNvbGxl
Y3Rpb24pIH0gfTsKKyAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5Piwg
UmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7IFJlZlB0cjxIVE1MQ29s
bGVjdGlvbj4geyBXVEZNb3ZlKGNvbGxlY3Rpb24pIH0gfTsKICAgICB9CiAKICAgICBhdXRvJiBl
bGVtZW50ID0gKmRvY3VtZW50TmFtZWRJdGVtKCpuYW1lLmltcGwoKSk7CiAgICAgaWYgKFVOTElL
RUxZKGlzPEhUTUxJRnJhbWVFbGVtZW50PihlbGVtZW50KSkpIHsKICAgICAgICAgaWYgKGF1dG8g
ZG9tV2luZG93ID0gbWFrZVJlZlB0cihkb3duY2FzdDxIVE1MSUZyYW1lRWxlbWVudD4oZWxlbWVu
dCkuY29udGVudFdpbmRvdygpKSkKLSAgICAgICAgICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxE
T01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgV1RG
TW92ZShkb21XaW5kb3cpIH07CisgICAgICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8V2lu
ZG93UHJveHk+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgV1RG
TW92ZShkb21XaW5kb3cpIH07CiAgICAgfQogCi0gICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPERP
TVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBSZWZQ
dHI8RWxlbWVudD4geyAmZWxlbWVudCB9IH07CisgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPFdp
bmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7IFJl
ZlB0cjxFbGVtZW50PiB7ICZlbGVtZW50IH0gfTsKIH0KIAogVmVjdG9yPEF0b21pY1N0cmluZz4g
SFRNTERvY3VtZW50OjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEb2N1bWVudC5oCmluZGV4IGEzNjM5NzQwNmQzNDlmNTc2ZjQ4OWQzYTFmNjAwYWRhMWJk
ZGNmZTEuLjBiM2QzNDE0YTRiZWZhMDMzNWM0ZTIyOWE1OTU4NWViMDVlYmQ2MGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRG9jdW1lbnQuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgaW50IHdpZHRoKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGhlaWdodCgp
OwogICAgIAotICAgIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8RE9NV2luZG93PiwgUmVm
UHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gbmFtZWRJdGVtKGNvbnN0IEF0
b21pY1N0cmluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8V2luZG93UHJv
eHk+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+PiBuYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gc3VwcG9ydGVk
UHJvcGVydHlOYW1lcygpIGNvbnN0OwogCiAgICAgRWxlbWVudCogZG9jdW1lbnROYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nSW1wbCYgbmFtZSkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudE5h
bWVkSXRlbS5nZXRFbGVtZW50QnlEb2N1bWVudE5hbWVkSXRlbShuYW1lLCAqdGhpcyk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmlkbAppbmRleCAxMjdmMjY0NWUwMzIyZGM3OTg4MTI4
MDRmZjVkNzk1ZGFjOGE1ODBmLi5hOTk5YjAzZjYyMjhiMjVlYmQxYjdiOTQzODZiOTllMzk1Yjg1
ZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsCkBAIC0yMyw1ICsyMyw1IEBA
CiAgICAgTmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNocG9pbnRzLAogICAgIE92ZXJyaWRlQnVp
bHRpbnMsCiBdIGludGVyZmFjZSBIVE1MRG9jdW1lbnQgOiBEb2N1bWVudCB7ICAgIAotICAgIGdl
dHRlciAoRE9NV2luZG93IG9yIEVsZW1lbnQgb3IgSFRNTENvbGxlY3Rpb24pIChET01TdHJpbmcg
bmFtZSk7CisgICAgZ2V0dGVyIChXaW5kb3dQcm94eSBvciBFbGVtZW50IG9yIEhUTUxDb2xsZWN0
aW9uKSAoRE9NU3RyaW5nIG5hbWUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVs
ZW1lbnQuaWRsCmluZGV4IGNkNjNhMjEyYWQ0MzMxNGM1YmUyMzA0ZGRlNzAwOTdjN2JmODgzNTMu
LmVkN2MwYjZlMjc3Mjk5YjY1Y2EyMThmMjFlMTgyNjFlNTEzZGZjMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbApAQCAtMjYsNyArMjYsNyBAQCBpbnRlcmZhY2Ug
SFRNTEZyYW1lRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICBbUmVmbGVjdCwgVVJMXSBhdHRy
aWJ1dGUgVVNWU3RyaW5nIGxvbmdEZXNjOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgYm9vbGVh
biBub1Jlc2l6ZTsKICAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBEb2N1bWVudCBjb250ZW50RG9jdW1lbnQ7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVdp
bmRvdyBjb250ZW50V2luZG93OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSBj
b250ZW50V2luZG93OwogCiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1w
dHlTdHJpbmddIERPTVN0cmluZyBtYXJnaW5IZWlnaHQ7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0
ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBtYXJnaW5XaWR0aDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAppbmRleCA1ODg3Mzk4
NDdjYmIwOGMzNzE3YzEzYmViZDNhYTkxZDk5YmI0Y2M1Li5iOWJlZjE3NjNlMjYxZDdjOTgyZTFm
MDU1NTA5YzE2OWRmODQwNjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVP
d25lckVsZW1lbnQuY3BwCkBAIC05OSw5ICs5OSw5IEBAIERvY3VtZW50KiBIVE1MRnJhbWVPd25l
ckVsZW1lbnQ6OmNvbnRlbnREb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGVudEZy
YW1lID8gbV9jb250ZW50RnJhbWUtPmRvY3VtZW50KCkgOiBudWxscHRyOwogfQogCi1ET01XaW5k
b3cqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVudFdpbmRvdygpIGNvbnN0CitXaW5kb3dQ
cm94eSogSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50V2luZG93KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCkgOiBudWxscHRyOworICAgIHJldHVybiBtX2NvbnRlbnRGcmFtZSA/ICZtX2NvbnRl
bnRGcmFtZS0+d2luZG93UHJveHkoKSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgSFRNTEZyYW1lT3du
ZXJFbGVtZW50OjpzZXRTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzIGZsYWdzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKaW5kZXggODY1ZWRkYjkxZjU3ZTM0
NWI0YjY4N2Y3NjBlODMzMjU0MjVjNGZjMS4uODBmMTgyMDBkZjBkNGE3NGQ3ZjBlM2RiY2ExNTI0
NTYwMjI0YWIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25l
ckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVu
dC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5IVE1MRnJhbWVPd25l
ckVsZW1lbnQoKTsKIAogICAgIEZyYW1lKiBjb250ZW50RnJhbWUoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRlbnRGcmFtZTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIERPTVdpbmRvdyogY29udGVudFdp
bmRvdygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFdpbmRvd1Byb3h5KiBjb250ZW50V2lu
ZG93KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnQqIGNvbnRlbnREb2N1bWVu
dCgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRDb250ZW50RnJhbWUoRnJhbWUqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCmluZGV4IDI4NTY0MjQ5NTBhMzQ5
YzliNzI5NTAzYzVmNGYxMjFhOGVjNGIyYjcuLjVkMjM3ZDQ4MjZjNzJmODg3YjdkYjJmYjUxZDZl
OTc4NjU2NzlhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50
LmNwcApAQCAtMjMxLDE1ICsyMzEsMTMgQEAgdm9pZCBIVE1MRnJhbWVTZXRFbGVtZW50OjpyZW1v
dmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXIKICAgICB9
CiB9CiAKLURPTVdpbmRvdyogSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZWRJdGVtKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSkKK1dpbmRvd1Byb3h5KiBIVE1MRnJhbWVTZXRFbGVtZW50OjpuYW1l
ZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewogICAgIGF1dG8gZnJhbWVFbGVtZW50
ID0gbWFrZVJlZlB0cihjaGlsZHJlbigpLT5uYW1lZEl0ZW0obmFtZSkpOwogICAgIGlmICghaXM8
SFRNTEZyYW1lRWxlbWVudD4oZnJhbWVFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBpZiAoYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIoZG93bmNhc3Q8SFRNTEZyYW1l
RWxlbWVudD4oZnJhbWVFbGVtZW50LmdldCgpKS0+Y29udGVudERvY3VtZW50KCkpKQotICAgICAg
ICByZXR1cm4gZG9jdW1lbnQtPmRvbVdpbmRvdygpOwotICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBkb3duY2FzdDxIVE1MRnJhbWVFbGVtZW50PigqZnJhbWVFbGVtZW50KS5jb250ZW50
V2luZG93KCk7CiB9CiAKIFZlY3RvcjxBdG9taWNTdHJpbmc+IEhUTUxGcmFtZVNldEVsZW1lbnQ6
OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZVNldEVsZW1lbnQuaAppbmRleCBkMWYzNzliNzM1Y2I3N2Y1ZTVhZDJkZWM0ZWJmMTQ0MGM3
ZWVhMzMyLi5jM2M2OGI1N2JmOTc3ZTdhY2VhOTJmZjNhZWMwOTY0OTZmNzEyMmIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaApAQCAtNDgsNyArNDgsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxIVE1MRnJhbWVTZXRFbGVtZW50PiBmaW5kQ29udGFp
bmluZyhFbGVtZW50KiBkZXNjZW5kYW50KTsKICAgICAKICAgICBWZWN0b3I8QXRvbWljU3RyaW5n
PiBzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3Q7Ci0gICAgRE9NV2luZG93KiBuYW1lZEl0
ZW0oY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgV2luZG93UHJveHkqIG5hbWVkSXRlbShjb25z
dCBBdG9taWNTdHJpbmcmKTsKIAogcHJpdmF0ZToKICAgICBIVE1MRnJhbWVTZXRFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lU2V0RWxlbWVudC5pZGwKaW5kZXggMzI1MGI5NDkwZWRiOGJiMThmNDdiOTgyY2JiN2Y2
YjQ0MDhkMzEyNS4uNjk0MjE3M2U3NDQwOTI0OWMyMDViMGIzYzUyNjI5ZTJhY2M0Njk0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsCkBAIC0zMyw3ICsz
Myw3IEBAIGludGVyZmFjZSBIVE1MRnJhbWVTZXRFbGVtZW50IDogSFRNTEVsZW1lbnQgewogCiAg
ICAgLy8gTm9uLXN0YW5kYXJkIG5hbWVkIGdldHRlcgogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5v
dCBpbiB0aGUgc3RhbmRhcmQsIGNhbiB3ZSByZW1vdmUgdGhpcz8KLSAgICBnZXR0ZXIgRE9NV2lu
ZG93IChET01TdHJpbmcgbmFtZSk7CisgICAgZ2V0dGVyIFdpbmRvd1Byb3h5IChET01TdHJpbmcg
bmFtZSk7CiB9OwogCiBIVE1MRnJhbWVTZXRFbGVtZW50IGltcGxlbWVudHMgV2luZG93RXZlbnRI
YW5kbGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1l
bnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwKaW5kZXgg
M2UzYmRjYzExMDQxODhhNzhkZGJhOGUyNzY0MzRlNGU2NmU2OTBiYy4uYzE2MzkyMmVlNDIwZTc1
YzA0ZGQxMjgxOTRiNTM1ZjM4M2M5NWQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSUZyYW1lRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZy
YW1lRWxlbWVudC5pZGwKQEAgLTM4LDcgKzM4LDcgQEAgaW50ZXJmYWNlIEhUTUxJRnJhbWVFbGVt
ZW50IDogSFRNTEVsZW1lbnQgewogCiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSByZWFkb25s
eSBhdHRyaWJ1dGUgRG9jdW1lbnQgY29udGVudERvY3VtZW50OwogCi0gICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVdpbmRvdyBjb250ZW50V2luZG93OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBX
aW5kb3dQcm94eSBjb250ZW50V2luZG93OwogCiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCBkMTUxMjczYTM1OTQ5M2UxYjZjNTM4ZjBm
M2Q5MzE2ODgwMzY0YTE3Li44NWMxM2ZmN2YwMjBhYTlhYzJjNmU0ZGYxNzI0NmQ0NDExOWM1YTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUg
IkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBiMDIzYTRlMmVmMjg0MzAz
N2JlNWQwOGJmMmE0ZmUzODMxZDVmZDhmLi4zZTJhOTE2NmYyYzgwMWFlNTU2NjNiY2NiMWI0OTBh
ZTA5ZmFmMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xNDgsNyArMTQ4LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogY2xhc3MgUG9zdE1lc3NhZ2VUaW1lciA6
IHB1YmxpYyBUaW1lckJhc2UgewogcHVibGljOgotICAgIFBvc3RNZXNzYWdlVGltZXIoRE9NV2lu
ZG93JiB3aW5kb3csIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VPcmlnaW4sIERPTVdpbmRvdyYgc291cmNlLCBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+JiYgdGFyZ2V0T3JpZ2luLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIHN0YWNrVHJhY2Up
CisgICAgUG9zdE1lc3NhZ2VUaW1lcihET01XaW5kb3cmIHdpbmRvdywgTWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHMmJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgUmVmUHRyPFdp
bmRvd1Byb3h5PiYmIHNvdXJjZSwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmIHRhcmdldE9yaWdp
biwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFja1RyYWNlKQogICAgICAgICA6IG1fd2lu
ZG93KHdpbmRvdykKICAgICAgICAgLCBtX21lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSkKICAgICAg
ICAgLCBtX29yaWdpbihzb3VyY2VPcmlnaW4pCkBAIC0xNjEsNyArMTYxLDcgQEAgcHVibGljOgog
CiAgICAgUmVmPE1lc3NhZ2VFdmVudD4gZXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShNZXNzYWdl
UG9ydDo6ZW50YW5nbGVQb3J0cyhjb250ZXh0LCBXVEZNb3ZlKG1fbWVzc2FnZS50cmFuc2ZlcnJl
ZFBvcnRzKSksIG1fbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCksIG1fb3JpZ2luLCB7
IH0sIE1lc3NhZ2VFdmVudFNvdXJjZShSZWZQdHI8RE9NV2luZG93PihXVEZNb3ZlKG1fc291cmNl
KSkpKTsKKyAgICAgICAgcmV0dXJuIE1lc3NhZ2VFdmVudDo6Y3JlYXRlKE1lc3NhZ2VQb3J0Ojpl
bnRhbmdsZVBvcnRzKGNvbnRleHQsIFdURk1vdmUobV9tZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMp
KSwgbV9tZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgbV9vcmlnaW4sIHsgfSwgbV9z
b3VyY2UgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoTWVzc2FnZUV2ZW50U291cmNlKFdURk1vdmUobV9z
b3VyY2UpKSkgOiBzdGQ6Om51bGxvcHQpOwogICAgIH0KIAogICAgIFNlY3VyaXR5T3JpZ2luKiB0
YXJnZXRPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3RhcmdldE9yaWdpbi5nZXQoKTsgfQpAQCAt
MTgwLDcgKzE4MCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPERPTVdpbmRvdz4gbV93aW5kb3c7CiAg
ICAgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbV9tZXNzYWdlOwogICAgIFN0cmluZyBtX29yaWdp
bjsKLSAgICBSZWY8RE9NV2luZG93PiBtX3NvdXJjZTsKKyAgICBSZWZQdHI8V2luZG93UHJveHk+
IG1fc291cmNlOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV90YXJnZXRPcmlnaW47CiAg
ICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gbV9zdGFja1RyYWNlOwogICAgIFJlZlB0cjxVc2Vy
R2VzdHVyZVRva2VuPiBtX3VzZXJHZXN0dXJlVG9Gb3J3YXJkOwpAQCAtOTYwLDcgKzk2MCw4IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBET01XaW5kb3cmIGluY3VtCiAgICAgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVz
c2FnZSB7IG1lc3NhZ2VEYXRhLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBkaXNlbnRhbmdsZWRQb3J0
cy5yZWxlYXNlUmV0dXJuVmFsdWUoKSB9OwogCiAgICAgLy8gU2NoZWR1bGUgdGhlIG1lc3NhZ2Uu
Ci0gICAgYXV0byogdGltZXIgPSBuZXcgUG9zdE1lc3NhZ2VUaW1lcigqdGhpcywgV1RGTW92ZSht
ZXNzYWdlKSwgc291cmNlT3JpZ2luLCBpbmN1bWJlbnRXaW5kb3csIFdURk1vdmUodGFyZ2V0KSwg
V1RGTW92ZShzdGFja1RyYWNlKSk7CisgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiBpbmN1bWJlbnRX
aW5kb3dQcm94eSA9IGluY3VtYmVudFdpbmRvdy5mcmFtZSgpID8gJmluY3VtYmVudFdpbmRvdy5m
cmFtZSgpLT53aW5kb3dQcm94eSgpIDogbnVsbHB0cjsKKyAgICBhdXRvKiB0aW1lciA9IG5ldyBQ
b3N0TWVzc2FnZVRpbWVyKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4sIFdU
Rk1vdmUoaW5jdW1iZW50V2luZG93UHJveHkpLCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUoc3Rh
Y2tUcmFjZSkpOwogICAgIHRpbWVyLT5zdGFydE9uZVNob3QoMF9zKTsKIAogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUG9zdE1lc3NhZ2UoKm1fZnJhbWUsICp0aW1lciwgc3RhdGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA5MTc0YWZkNTMyMTZj
MTEyYzRiNWUwZDU3NTg3Yzg2ZDFmYzljNWExLi43YzQ5YTIxN2YwMmE2ODU1NDcwZGIzMTc3Yjhm
NTkzNTQzOGY1Njg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAt
NTA4LDcgKzUwOCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZl
bnRGb3IoRnJhbWUqIGlubmVyRnJhbWUsIGNvbnN0IERyYWdEYXRhCiAgICAgU3RyaW5nIHRleHQg
PSBtX3BhZ2UuZHJhZ0NhcmV0Q29udHJvbGxlcigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkg
PyBlbXB0eVN0cmluZygpIDogZHJhZ0RhdGEuYXNQbGFpblRleHQoKTsKICAgICBFbGVtZW50KiB0
YXJnZXQgPSBpbm5lckZyYW1lLT5lZGl0b3IoKS5maW5kRXZlbnRUYXJnZXRGcm9tKG1fcGFnZS5k
cmFnQ2FyZXRDb250cm9sbGVyKCkuY2FyZXRQb3NpdGlvbigpKTsKICAgICAvLyBGSVhNRTogV2hh
dCBndWFyYW50ZWVzIHRhcmdldCBpcyBub3QgbnVsbD8KLSAgICBhdXRvIGV2ZW50ID0gVGV4dEV2
ZW50OjpjcmVhdGVGb3JEcm9wKGlubmVyRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0
ZXh0KTsKKyAgICBhdXRvIGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEcm9wKGlubmVyRnJh
bWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksIHRleHQpOwogICAgIHRhcmdldC0+ZGlzcGF0
Y2hFdmVudChldmVudCk7CiAgICAgcmV0dXJuICFldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDg3ZDEyNzc0Y2M2ZjM0YWUw
NzAxMDBkMTllZWI3NjU2NWYyNTA3OWQuLjdkMmM5M2EzYzBmOTgxZjgwNTllYThiN2YzODZiZmE2
ZmUwYzAwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM4MDIsNyAr
MzgwMiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVudChjb25zdCBT
dHJpbmcmIHRleHQsIEV2ZW50KiB1bmRlcmx5aW5nRXZlCiAgICAgaWYgKEZyYW1lVmlldyogdmll
dyA9IG1fZnJhbWUudmlldygpKQogICAgICAgICB2aWV3LT5kaXNhYmxlTGF5ZXJGbHVzaFRocm90
dGxpbmdUZW1wb3JhcmlseUZvckludGVyYWN0aW9uKCk7CiAKLSAgICBSZWY8VGV4dEV2ZW50PiBl
dmVudCA9IFRleHRFdmVudDo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCks
IHRleHQsIGlucHV0VHlwZSk7CisgICAgUmVmPFRleHRFdmVudD4gZXZlbnQgPSBUZXh0RXZlbnQ6
OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksIHRleHQsIGlucHV0VHlw
ZSk7CiAgICAgZXZlbnQtPnNldFVuZGVybHlpbmdFdmVudCh1bmRlcmx5aW5nRXZlbnQpOwogCiAg
ICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXgg
YTg0MjY1YWE3OTM2YzM0ODkyY2M5ZTA3MWE5OTBiOWFkMWU1MTE2OC4uODI4NGE2NTMxZGEzYWEw
MWQwZmZiY2VkYjA4NTgxMTcyMGI2NmI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTIxMiw2
ICsyMTIsNyBAQCBSZWY8RnJhbWU+IEZyYW1lOjpjcmVhdGUoUGFnZSogcGFnZSwgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIEZyYW1lTAogCiBGcmFtZTo6fkZyYW1lKCkKIHsK
KyAgICB3aW5kb3dQcm94eSgpLmRlc3Ryb3lBbGxKU1dpbmRvd1Byb3hpZXMoKTsKICAgICBzZXRW
aWV3KG51bGxwdHIpOwogICAgIGxvYWRlcigpLmNhbmNlbEFuZENsZWFyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3Lm1tCmluZGV4IDFhNGMyOWIx
YjBkZGFjODIyNTdiZDZmNGJhNmRjNDRmZjM5MTJlODkuLjE2OWU0YWU1ZmU3NzViOThkMjRjZDQ4
MDZhNWE5YzUwNzhlMTBlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01BYnN0cmFjdFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUFic3RyYWN0Vmlldy5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9GcmFt
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dpbmRvd1Byb3h5Lmg+
CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkZyYW1lKj4oX2ludGVy
bmFsKQogCkBAIC0xMDAsMyArMTAxLDE5IEBAIERPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6
OkFic3RyYWN0RE9NV2luZG93KiB2YWx1ZSkKIAogICAgIHJldHVybiBraXQoZG93bmNhc3Q8V2Vi
Q29yZTo6RE9NV2luZG93Pih2YWx1ZSkpOwogfQorCitET01BYnN0cmFjdFZpZXcgKmtpdChXZWJD
b3JlOjpXaW5kb3dQcm94eSogd2luZG93UHJveHkpCit7CisgICAgaWYgKCF3aW5kb3dQcm94eSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBraXQod2luZG93UHJveHktPndpbmRv
dygpKTsKK30KKworV2ViQ29yZTo6V2luZG93UHJveHkqIHRvV2luZG93UHJveHkoRE9NQWJzdHJh
Y3RWaWV3ICp2aWV3KQoreworICAgIGF1dG8qIHdpbmRvdyA9IGNvcmUodmlldyk7CisgICAgaWYg
KCF3aW5kb3cgfHwgIXdpbmRvdy0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBy
ZXR1cm4gJndpbmRvdy0+ZnJhbWUoKS0+d2luZG93UHJveHkoKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmgKaW5kZXgg
YzRkNzMyNWM3ZjI1YmI1Yjg2MTI3NDE2ZTNkOTBkMjgyMTRjMTE5Ny4uMzU5ZjA1ZWI0ZDRhNDNh
YTUyNDIzM2U0YmJmNjYyOGRiMzY4ODZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmgKQEAgLTI4LDExICsyOCwxNCBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWJzdHJhY3RET01XaW5kb3c7CiBjbGFzcyBE
T01XaW5kb3c7CitjbGFzcyBXaW5kb3dQcm94eTsKIH0KIAogV2ViQ29yZTo6RE9NV2luZG93KiBj
b3JlKERPTUFic3RyYWN0VmlldyAqKTsKIERPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OkRP
TVdpbmRvdyopOwogRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6QWJzdHJhY3RET01XaW5k
b3cqKTsKK0RPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OldpbmRvd1Byb3h5Kik7CitXZWJD
b3JlOjpXaW5kb3dQcm94eSogdG9XaW5kb3dQcm94eShET01BYnN0cmFjdFZpZXcgKik7CiAKIEBp
bnRlcmZhY2UgRE9NQWJzdHJhY3RWaWV3IChXZWJLaXRMZWdhY3lJbnRlcm5hbCkKIC0gKHZvaWQp
X2Rpc2Nvbm5lY3RGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01Eb2N1bWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVu
dC5tbQppbmRleCA2YzJmMzZkODI0YTk0YTY4MjNiZjJhODFjOWJlZDIyMzRlN2E2OGY0Li5hN2I4
MTM0MDA5NWY2NjM4MTY1NDJlYmY4NjRhYmNjNTliZjhmM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCkBAIC04NCw2ICs4NCw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL1RyZWVXYWxrZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2luZG93
UHJveHkuaD4KICNpbXBvcnQgPFdlYkNvcmUvWFBhdGhFeHByZXNzaW9uLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1hQYXRoTlNSZXNvbHZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9YUGF0aFJlc3VsdC5o
PgpAQCAtMTYyLDcgKzE2MywxMCBAQCAtICh2b2lkKXNldERvY3VtZW50VVJJOihOU1N0cmluZyAq
KW5ld0RvY3VtZW50VVJJCiAtIChET01BYnN0cmFjdFZpZXcgKilkZWZhdWx0VmlldwogewogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4ga2l0KFdU
Rjo6Z2V0UHRyKElNUEwtPmRlZmF1bHRWaWV3KCkpKTsKKyAgICBhdXRvKiBkZWZhdWx0VmlldyA9
IElNUEwtPmRlZmF1bHRWaWV3KCk7CisgICAgaWYgKCFkZWZhdWx0VmlldykKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICByZXR1cm4ga2l0KGRlZmF1bHRWaWV3LT53aW5kb3coKSk7CiB9CiAKIC0g
KERPTVN0eWxlU2hlZXRMaXN0ICopc3R5bGVTaGVldHMKQEAgLTY4NCw3ICs2ODgsNyBAQCAtIChE
T01DU1NTdHlsZURlY2xhcmF0aW9uICopZ2V0Q29tcHV0ZWRTdHlsZTooRE9NRWxlbWVudCAqKWVs
ZW1lbnQgcHNldWRvRWxlbWVudAogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJhaXNlVHlwZUVycm9yRXhjZXB0aW9u
KCk7Ci0gICAgV2ViQ29yZTo6RE9NV2luZG93KiBkdiA9IElNUEwtPmRlZmF1bHRWaWV3KCk7Cisg
ICAgV2ViQ29yZTo6RE9NV2luZG93KiBkdiA9IElNUEwtPmRvbVdpbmRvdygpOwogICAgIGlmICgh
ZHYpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihkdi0+
Z2V0Q29tcHV0ZWRTdHlsZSgqY29yZShlbGVtZW50KSwgcHNldWRvRWxlbWVudCkpKTsKQEAgLTY5
OCw3ICs3MDIsNyBAQCAtIChET01DU1NSdWxlTGlzdCAqKWdldE1hdGNoZWRDU1NSdWxlczooRE9N
RWxlbWVudCAqKWVsZW1lbnQgcHNldWRvRWxlbWVudDooTlNTdAogLSAoRE9NQ1NTUnVsZUxpc3Qg
KilnZXRNYXRjaGVkQ1NTUnVsZXM6KERPTUVsZW1lbnQgKillbGVtZW50IHBzZXVkb0VsZW1lbnQ6
KE5TU3RyaW5nICopcHNldWRvRWxlbWVudCBhdXRob3JPbmx5OihCT09MKWF1dGhvck9ubHkKIHsK
ICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6
RE9NV2luZG93KiBkdiA9IElNUEwtPmRlZmF1bHRWaWV3KCk7CisgICAgV2ViQ29yZTo6RE9NV2lu
ZG93KiBkdiA9IElNUEwtPmRvbVdpbmRvdygpOwogICAgIGlmICghZHYpCiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihkdi0+Z2V0TWF0Y2hlZENTU1J1bGVz
KGNvcmUoZWxlbWVudCksIHBzZXVkb0VsZW1lbnQsIGF1dGhvck9ubHkpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVFbGVtZW50Lm1tCmluZGV4IDk3
N2ViNGE2YjgyOTY3ZDRkOGJkZDhiZWZiM2IwMTk3ZDU0OWU2ODYuLmQ1YWIwMTFmOGZmMzFlNjIw
Zjk3MDRjMDdkYzU2ODQ5MDM1YzZmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MRnJhbWVFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MRnJhbWVFbGVtZW50Lm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dp
bmRvd1Byb3h5Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpOb2RlKj4oX2ludGVybmFsKSkKQEAgLTE0OCw3ICsxNDksMTAgQEAgLSAoRE9NRG9jdW1l
bnQgKiljb250ZW50RG9jdW1lbnQKIC0gKERPTUFic3RyYWN0VmlldyAqKWNvbnRlbnRXaW5kb3cK
IHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJu
IGtpdChXVEY6OmdldFB0cihJTVBMLT5jb250ZW50V2luZG93KCkpKTsKKyAgICBhdXRvKiBjb250
ZW50V2luZG93ID0gSU1QTC0+Y29udGVudFdpbmRvdygpOworICAgIGlmICghY29udGVudFdpbmRv
dykKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4ga2l0KGNvbnRlbnRXaW5kb3ctPndp
bmRvdygpKTsKIH0KIAogLSAoTlNTdHJpbmcgKilsb2NhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tCmluZGV4IGIxYjJjMDMx
OGIyMGI3MjhiZTUxNzc2MTJjNGFjN2EzOWQ3MjFhNmQuLjZlYTM3M2FjMzIyNjdmMDBjNDM1YjY2
ZmVjYzQ5MGNhNjZlNDI4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTElGcmFtZUVsZW1lbnQubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgPFdl
YkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2luZG93
UHJveHkuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpOb2RlKj4oX2ludGVybmFsKSkKQEAgLTE5Niw3ICsxOTcsMTAgQEAgLSAoRE9NRG9jdW1lbnQg
Kiljb250ZW50RG9jdW1lbnQKIC0gKERPTUFic3RyYWN0VmlldyAqKWNvbnRlbnRXaW5kb3cKIHsK
ICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtp
dChXVEY6OmdldFB0cihJTVBMLT5jb250ZW50V2luZG93KCkpKTsKKyAgICBhdXRvKiBjb250ZW50
V2luZG93ID0gSU1QTC0+Y29udGVudFdpbmRvdygpOworICAgIGlmICghY29udGVudFdpbmRvdykK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4ga2l0KGNvbnRlbnRXaW5kb3ctPndpbmRv
dygpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUtleWJvYXJkRXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5
Ym9hcmRFdmVudC5tbQppbmRleCBlOWFiMWZlZmU3NGQ5NzM0ZWFjMjg0MTZiMDllZjIzMTBmY2Zj
NzFiLi5iYTJmYmU0ZTE4OWQ2MTM2ZWVkNzM1ZWZmZmU3MTIwYjdmOTY5NThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQpAQCAtMTEwLDI1
ICsxMTAsMjUgQEAgLSAoQk9PTClnZXRNb2RpZmllclN0YXRlOihOU1N0cmluZyAqKWtleUlkZW50
aWZpZXJBcmcKIC0gKHZvaWQpaW5pdEtleWJvYXJkRXZlbnQ6KE5TU3RyaW5nICopdHlwZSBjYW5C
dWJibGU6KEJPT0wpY2FuQnViYmxlIGNhbmNlbGFibGU6KEJPT0wpY2FuY2VsYWJsZSB2aWV3OihE
T01BYnN0cmFjdFZpZXcgKil2aWV3IGtleUlkZW50aWZpZXI6KE5TU3RyaW5nICopaW5LZXlJZGVu
dGlmaWVyIGxvY2F0aW9uOih1bnNpZ25lZClpbkxvY2F0aW9uIGN0cmxLZXk6KEJPT0wpaW5DdHJs
S2V5IGFsdEtleTooQk9PTClpbkFsdEtleSBzaGlmdEtleTooQk9PTClpblNoaWZ0S2V5IG1ldGFL
ZXk6KEJPT0wpaW5NZXRhS2V5IGFsdEdyYXBoS2V5OihCT09MKWluQWx0R3JhcGhLZXkKIHsKICAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+aW5pdEtl
eWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBjb3JlKHZpZXcpLCBpbktl
eUlkZW50aWZpZXIsIGluTG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXks
IGluTWV0YUtleSwgaW5BbHRHcmFwaEtleSk7CisgICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQo
dHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBpbktleUlk
ZW50aWZpZXIsIGluTG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGlu
TWV0YUtleSwgaW5BbHRHcmFwaEtleSk7CiB9CiAKIC0gKHZvaWQpaW5pdEtleWJvYXJkRXZlbnQ6
KE5TU3RyaW5nICopdHlwZSBjYW5CdWJibGU6KEJPT0wpY2FuQnViYmxlIGNhbmNlbGFibGU6KEJP
T0wpY2FuY2VsYWJsZSB2aWV3OihET01BYnN0cmFjdFZpZXcgKil2aWV3IGtleUlkZW50aWZpZXI6
KE5TU3RyaW5nICopaW5LZXlJZGVudGlmaWVyIGxvY2F0aW9uOih1bnNpZ25lZClpbkxvY2F0aW9u
IGN0cmxLZXk6KEJPT0wpaW5DdHJsS2V5IGFsdEtleTooQk9PTClpbkFsdEtleSBzaGlmdEtleToo
Qk9PTClpblNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wpaW5NZXRhS2V5CiB7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29yZSh2aWV3KSwgaW5LZXlJZGVudGlmaWVy
LCBpbkxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXkp
OworICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJs
ZSwgdG9XaW5kb3dQcm94eSh2aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBpbkxvY2F0aW9uLCBpbkN0
cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXkpOwogfQogCiAtICh2b2lkKWlu
aXRLZXlib2FyZEV2ZW50OihOU1N0cmluZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJs
ZSBjYW5jZWxhYmxlOihCT09MKWNhbmNlbGFibGUgdmlldzooRE9NQWJzdHJhY3RWaWV3ICopdmll
dyBrZXlJZGVudGlmaWVyOihOU1N0cmluZyAqKWluS2V5SWRlbnRpZmllciBrZXlMb2NhdGlvbjoo
dW5zaWduZWQpaW5LZXlMb2NhdGlvbiBjdHJsS2V5OihCT09MKWluQ3RybEtleSBhbHRLZXk6KEJP
T0wpaW5BbHRLZXkgc2hpZnRLZXk6KEJPT0wpaW5TaGlmdEtleSBtZXRhS2V5OihCT09MKWluTWV0
YUtleSBhbHRHcmFwaEtleTooQk9PTClpbkFsdEdyYXBoS2V5CiB7CiAgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50KHR5
cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29yZSh2aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBp
bktleUxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXks
IGluQWx0R3JhcGhLZXkpOworICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBp
bktleUxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXks
IGluQWx0R3JhcGhLZXkpOwogfQogCiAtICh2b2lkKWluaXRLZXlib2FyZEV2ZW50OihOU1N0cmlu
ZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihCT09MKWNhbmNl
bGFibGUgdmlldzooRE9NQWJzdHJhY3RWaWV3ICopdmlldyBrZXlJZGVudGlmaWVyOihOU1N0cmlu
ZyAqKWluS2V5SWRlbnRpZmllciBrZXlMb2NhdGlvbjoodW5zaWduZWQpaW5LZXlMb2NhdGlvbiBj
dHJsS2V5OihCT09MKWluQ3RybEtleSBhbHRLZXk6KEJPT0wpaW5BbHRLZXkgc2hpZnRLZXk6KEJP
T0wpaW5TaGlmdEtleSBtZXRhS2V5OihCT09MKWluTWV0YUtleQogewogICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUodmlldyksIGluS2V5SWRlbnRpZmllciwg
aW5LZXlMb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5
KTsKKyAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIHRvV2luZG93UHJveHkodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5LZXlMb2NhdGlvbiwg
aW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5KTsKIH0KIAogQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTW91c2VFdmVudC5tbQppbmRleCA3Yzdl
MGRkZmYxNDIxNjFlZTQ4ZTY3NzcwMjVlN2Y3MGU4NTNhODEzLi5lNTE1ZDg5MzVjMTc3ZDQ3MTA5
NGE4NGM1Y2ZiOGQ2NGRiMjk0Mzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NTW91c2VFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NTW91c2VFdmVudC5tbQpAQCAtMTQ1LDcgKzE0NSw3IEBAIC0gKHZvaWQpaW5pdE1vdXNlRXZl
bnQ6KE5TU3RyaW5nICopdHlwZSBjYW5CdWJibGU6KEJPT0wpY2FuQnViYmxlIGNhbmNlbGFibGU6
KEJPCiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIERPTU5v
ZGUqIGluUmVsYXRlZFRhcmdldE9iakMgPSBpblJlbGF0ZWRUYXJnZXQ7CiAgICAgV2ViQ29yZTo6
Tm9kZSogaW5SZWxhdGVkVGFyZ2V0Tm9kZSA9IGNvcmUoaW5SZWxhdGVkVGFyZ2V0T2JqQyk7Ci0g
ICAgSU1QTC0+aW5pdE1vdXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBjb3Jl
KHZpZXcpLCBkZXRhaWwsIGluU2NyZWVuWCwgaW5TY3JlZW5ZLCBpbkNsaWVudFgsIGluQ2xpZW50
WSwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkJ1dHRvbiwg
aW5SZWxhdGVkVGFyZ2V0Tm9kZSk7CisgICAgSU1QTC0+aW5pdE1vdXNlRXZlbnQodHlwZSwgY2Fu
QnViYmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBkZXRhaWwsIGluU2NyZWVu
WCwgaW5TY3JlZW5ZLCBpbkNsaWVudFgsIGluQ2xpZW50WSwgaW5DdHJsS2V5LCBpbkFsdEtleSwg
aW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkJ1dHRvbiwgaW5SZWxhdGVkVGFyZ2V0Tm9kZSk7CiB9
CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0
RXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tCmlu
ZGV4IDI4NjdiYzgwMjM5MTZhN2U2NzgwZmEzZWI3MTIwYzljOTFhZDJhNDIuLmRmYTc2MjAyNGI1
NjYyMmNlNWIyOTkxZGYzMTJkZmQ1Mzg3MGQwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVRleHRFdmVudC5tbQpAQCAtNTAsNyArNTAsNyBAQCAtIChOU1N0cmluZyAqKWRh
dGEKIC0gKHZvaWQpaW5pdFRleHRFdmVudDooTlNTdHJpbmcgKil0eXBlQXJnIGNhbkJ1YmJsZUFy
ZzooQk9PTCljYW5CdWJibGVBcmcgY2FuY2VsYWJsZUFyZzooQk9PTCljYW5jZWxhYmxlQXJnIHZp
ZXdBcmc6KERPTUFic3RyYWN0VmlldyAqKXZpZXdBcmcgZGF0YUFyZzooTlNTdHJpbmcgKilkYXRh
QXJnCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElN
UEwtPmluaXRUZXh0RXZlbnQodHlwZUFyZywgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCBj
b3JlKHZpZXdBcmcpLCBkYXRhQXJnKTsKKyAgICBJTVBMLT5pbml0VGV4dEV2ZW50KHR5cGVBcmcs
IGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywgdG9XaW5kb3dQcm94eSh2aWV3QXJnKSwgZGF0
YUFyZyk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01VSUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJRXZlbnQu
bW0KaW5kZXggYTQ2NGRhY2ZiZjUxMjY2YmE5MmU1OTc3MTkyOWQ4NjMxZjJmMTY0MC4uOTEwMzc5
ZTY1OWZkYzkyNWNiM2MzYzIwNDRmYjQ3ZDY4ODdlMDRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTVVJRXZlbnQubW0KQEAgLTQ1LDcgKzQ1LDkgQEAgQGltcGxlbWVudGF0aW9u
IERPTVVJRXZlbnQKIC0gKERPTUFic3RyYWN0VmlldyAqKXZpZXcKIHsKICAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJ
TVBMLT52aWV3KCkpKTsKKyAgICBpZiAoIUlNUEwtPnZpZXcoKSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICByZXR1cm4ga2l0KElNUEwtPnZpZXcoKS0+d2luZG93KCkpOwogfQogCiAtIChpbnQp
ZGV0YWlsCkBAIC0xMDMsNyArMTA1LDcgQEAgLSAoaW50KXdoaWNoCiAtICh2b2lkKWluaXRVSUV2
ZW50OihOU1N0cmluZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxl
OihCT09MKWNhbmNlbGFibGUgdmlldzooRE9NQWJzdHJhY3RWaWV3ICopaW5WaWV3IGRldGFpbDoo
aW50KWluRGV0YWlsCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIElNUEwtPmluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29y
ZShpblZpZXcpLCBpbkRldGFpbCk7CisgICAgSU1QTC0+aW5pdFVJRXZlbnQodHlwZSwgY2FuQnVi
YmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRvd1Byb3h5KGluVmlldyksIGluRGV0YWlsKTsKIH0KIAog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZl
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NV2hlZWxFdmVudC5tbQppbmRl
eCA4ZjA1NjljYTZhM2Y5NThjNzQxZjZkODgzNThmZmZkMTYwYjE4YWM4Li5kZDRhNTdiMGYzMmI3
N2I0MzBiNmRkOWNkNWIxNTIzNGU1YTQzNGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NV2hlZWxFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NV2hlZWxFdmVudC5tbQpAQCAtOTYsNyArOTYsNyBAQCAtIChCT09MKWlzSG9yaXpv
bnRhbAogLSAodm9pZClpbml0V2hlZWxFdmVudDooaW50KWluV2hlZWxEZWx0YVggd2hlZWxEZWx0
YVk6KGludClpbldoZWVsRGVsdGFZIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKXZpZXcgc2NyZWVu
WDooaW50KXNjcmVlblggc2NyZWVuWTooaW50KXNjcmVlblkgY2xpZW50WDooaW50KWNsaWVudFgg
Y2xpZW50WTooaW50KWNsaWVudFkgY3RybEtleTooQk9PTCljdHJsS2V5IGFsdEtleTooQk9PTClh
bHRLZXkgc2hpZnRLZXk6KEJPT0wpc2hpZnRLZXkgbWV0YUtleTooQk9PTCltZXRhS2V5CiB7CiAg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmluaXRX
ZWJLaXRXaGVlbEV2ZW50KGluV2hlZWxEZWx0YVgsIGluV2hlZWxEZWx0YVksIGNvcmUodmlldyks
IHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVudFksIGN0cmxLZXksIGFsdEtleSwgc2hp
ZnRLZXksIG1ldGFLZXkpOworICAgIElNUEwtPmluaXRXZWJLaXRXaGVlbEV2ZW50KGluV2hlZWxE
ZWx0YVgsIGluV2hlZWxEZWx0YVksIHRvV2luZG93UHJveHkodmlldyksIHNjcmVlblgsIHNjcmVl
blksIGNsaWVudFgsIGNsaWVudFksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkp
OwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3Jl
Q2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAK
aW5kZXggMWI0M2RkOWY0Y2ExMzViMmQxYzRkNGM0NjlmODY4NTU1YzQ3ZTk2Ni4uYjI1MjYxZjdk
ZmNlMWI3Y2Y0NzFhOWQxZjIzY2IwODdiMjU3N2EwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0RPTUNvcmVDbGFzc2VzLmNwcApAQCAtODAyLDcgKzgwMiw3IEBAIEhSRVNVTFQgRE9NRG9j
dW1lbnQ6OmdldENvbXB1dGVkU3R5bGUoX0luX29wdF8gSURPTUVsZW1lbnQqIGVsdCwgX0luXyBC
U1RSIHBzZXVkCiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0g
ICAgV2ViQ29yZTo6RE9NV2luZG93KiBkdiA9IG1fZG9jdW1lbnQtPmRlZmF1bHRWaWV3KCk7Cisg
ICAgYXV0byogZHYgPSBtX2RvY3VtZW50LT5kb21XaW5kb3coKTsKICAgICBTdHJpbmcgcHNldWRv
RWx0U3RyaW5nKHBzZXVkb0VsdCk7CiAgICAgCiAgICAgaWYgKCFkdikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338890</attachid>
            <date>2018-04-26 10:35:36 -0700</date>
            <delta_ts>2018-04-26 11:21:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185022-20180426103535.patch</filename>
            <type>text/plain</type>
            <size>132511</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNmYmU3ZTk5YzEwNmQx
NzM1Nzc3MGZmMTQxMzkwZjdlODNmNmU2My4uYWM4MDhlYTIzNDlkYzE2MzM0MWFkMmRkY2ZiOTIz
OWJkMjQ0MjQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxOC0wNC0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94eSBp
bnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHVzaW5nIERPTVdpbmRvdyBpbiBhbGwgb2Ygb3Vy
IElETCBmaWxlcyBhbmQgdXNlIFdpbmRvd1Byb3h5IGFzCisgICAgICAgIHBlciB0aGVpciByZXNw
ZWN0aXZlIHNwZWNpZmljYXRpb25zLiBBcyBhIHJlc3VsdCwgdGhlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGFzIGFsc28gdXBkYXRlZCB0byB1c2UgV2luZG93UHJveHkgdHlwZSBpbnN0ZWFkIG9m
IERPTVdpbmRvdy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXaW5kb3dQcm94eTo6d2luZG93UHJveHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9XaW5kb3dQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eTo6
fldpbmRvd1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpkZXN0cm95QWxs
SlNXaW5kb3dQcm94aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpnbG9iYWxP
YmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpXaW5kb3dQcm94eTo6ZnJhbWUgY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKElzQnVpbHRpblR5cGUpOgorICAgICAg
ICAoQ29tcHV0ZUlzQ2FsbGJhY2tJbnRlcmZhY2UpOgorICAgICAgICAoQ29tcHV0ZUlzQ2FsbGJh
Y2tGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChBZGRUb0luY2x1ZGVzRm9ySURMVHlwZSk6CisgICAgICAgIChHZXRCYXNl
SURMVHlwZSk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWVET01Db252ZXJ0TmVlZHNTdGF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RPdmVybG9hZERpc3BhdGNoZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50
KToKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5oOgorICAgICAgICAqIGRvbS9Db21w
b3NpdGlvbkV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmRlZmF1bHRWaWV3IGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudFRvdWNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VG91Y2g6OmNyZWF0ZVRv
dWNoKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRUb3VjaC5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudFRvdWNoLmlkbDoKKyAgICAgICAgKiBkb20vRm9jdXNFdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb2N1c0V2ZW50OjpGb2N1c0V2ZW50KToKKyAgICAgICAgKiBkb20vRm9jdXNFdmVu
dC5oOgorICAgICAgICAqIGRvbS9JbnB1dEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0RXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEV2ZW50OjpJbnB1dEV2
ZW50KToKKyAgICAgICAgKiBkb20vSW5wdXRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2Fy
ZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OktleWJvYXJkRXZlbnQ6OmNoYXJDb2RlIGNvbnN0KToKKyAgICAgICAgKiBkb20vS2V5
Ym9hcmRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmlkbDoKKyAgICAgICAg
KiBkb20vTWVzc2FnZUV2ZW50Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5pZGw6Cisg
ICAgICAgICogZG9tL01vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayk6CisgICAgICAgICogZG9t
L01vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5pZGw6CisgICAgICAgICog
ZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRl
ZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0
ZWRFdmVudDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6ZnJh
bWVWaWV3RnJvbVdpbmRvd1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2
ZW50Ojppbml0Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZl
bnQ6OmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUGFnZUxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpsb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyBj
b25zdCk6CisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50Lmg6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAqIGRvbS9TaW11bGF0ZWRDbGljay5jcHA6CisgICAgICAgICog
ZG9tL1RleHRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3ApOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEV2ZW50OjpUZXh0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50Ojppbml0
VGV4dEV2ZW50KToKKyAgICAgICAgKiBkb20vVGV4dEV2ZW50Lmg6CisgICAgICAgICogZG9tL1Rl
eHRFdmVudC5pZGw6CisgICAgICAgICogZG9tL1RvdWNoRXZlbnQuaWRsOgorICAgICAgICAqIGRv
bS9VSUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVJRXZlbnQ6OlVJRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VUlFdmVudDo6aW5pdFVJRXZlbnQpOgorICAgICAgICAqIGRvbS9VSUV2
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpVSUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VUlFdmVudDo6dmlldyBjb25zdCk6CisgICAgICAgICogZG9tL1VJRXZlbnQuaWRsOgor
ICAgICAgICAqIGRvbS9VSUV2ZW50SW5pdC5oOgorICAgICAgICAqIGRvbS9VSUV2ZW50SW5pdC5p
ZGw6CisgICAgICAgICogZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlVJRXZlbnRXaXRoS2V5U3RhdGU6OlVJRXZlbnRXaXRoS2V5U3RhdGUpOgorICAgICAgICAq
IGRvbS9XaGVlbEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OldoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2ZW50KToKKyAgICAgICAgKiBk
b20vV2hlZWxFdmVudC5oOgorICAgICAgICAqIGRvbS9XaGVlbEV2ZW50LmlkbDoKKyAgICAgICAg
KiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3Rl
QXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRDb21wb3NpdGlvbik6CisgICAgICAgICog
aHRtbC9IVE1MRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50Ojpu
YW1lZEl0ZW0pOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGw6
CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50V2luZG93IGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50
OjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3N0TWVzc2Fn
ZVRpbWVyOjpQb3N0TWVzc2FnZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc3RNZXNzYWdl
VGltZXI6OmV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2Up
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlVGV4dElucHV0RXZlbnQpOgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6fkZyYW1lKToKKyAgICAgICAgVXBkYXRlIEZyYW1lIGRlc3RydWN0
b3IgdG8gZGVzdHJveSBhbGwgaXRzIEpTV2luZG93UHJveGllcyBiZWZvcmUgZG9pbmcgYW55dGhp
bmcgZWxzZS4KKyAgICAgICAgQmVjYXVzZSByZWZpbmcgYSBXaW5kb3dQcm94eSBhY3R1YWxseSBy
ZWZzIGl0cyBmcmFtZSwgaXQgaXMgcG9zc2libGUgdGhhdCB3aGVuIGEgSlMKKyAgICAgICAgb2Jq
ZWN0IGlzIHN3ZXB0LCBpdHMgZGVzdHJveXMgYSBXaW5kb3dQcm94eSwgd2hpY2ggZGVzdHJveXMg
YSBGcmFtZS4gVGhlIEZyYW1lIGRlc3RydWN0b3IKKyAgICAgICAgd291bGQgdGhlbiBjYWxsIEZy
YW1lTG9hZGVyOjpjYW5jZWxBbmRDbGVhcigpIHdoaWNoIHdvdWxkIGVuZCB1cCBjYWxsaW5nIFNj
cmlwdENvbnRyb2xsZXI6OmVuYWJsZUV2YWwoKQorICAgICAgICBhbmQgYWNjZXNzaW5nIEpTV2lu
ZG93UHJveHk6OndpbmRvdygpLiBUaGlzIHdvdWxkIGhpdCBhbiBhc3NlcnRpb24gd2hlbiBkb2lu
ZyB0aGUganNDYXN0KCkgaW4KKyAgICAgICAgSlNDZWxsOjpjbGFzc0luZm8oSlNDOjpWTSYpOgor
ICAgICAgICBBU1NFUlQodm0uaGVhcC5tdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OlN3
ZWVwaW5nIHx8ICF2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKwogMjAxOC0w
NC0yMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1dQRV1bR1RLXSBSZW1vdmUgV2xVbmlxdWVQdHI8d2xfZGlzcGxheT4gZm9vdGd1bgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGYzMDg5NWFiYWY2NzAwMjA3NDJkNGVmYzAzOTAx
OGRhMjc3ZTc2YWYuLjZhZDUyNWU5ODEwZWEwMjY3MmZlMWUwOTM3NTYxMWI4ZjM4NjQwMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0wNC0yNiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94
eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01BYnN0cmFjdFZpZXcubW06CisgICAg
ICAgIChraXQpOgorICAgICAgICAodG9XaW5kb3dQcm94eSk6CisgICAgICAgICogRE9NL0RPTUFi
c3RyYWN0Vmlld0ludGVybmFsLmg6CisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOgorICAg
ICAgICAoLVtET01Eb2N1bWVudCBkZWZhdWx0Vmlld10pOgorICAgICAgICAoLVtET01Eb2N1bWVu
dCBnZXRDb21wdXRlZFN0eWxlOnBzZXVkb0VsZW1lbnQ6XSk6CisgICAgICAgICgtW0RPTURvY3Vt
ZW50IGdldE1hdGNoZWRDU1NSdWxlczpwc2V1ZG9FbGVtZW50OmF1dGhvck9ubHk6XSk6CisgICAg
ICAgICogRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUhUTUxGcmFt
ZUVsZW1lbnQgY29udGVudFdpbmRvd10pOgorICAgICAgICAqIERPTS9ET01IVE1MSUZyYW1lRWxl
bWVudC5tbToKKyAgICAgICAgKC1bRE9NSFRNTElGcmFtZUVsZW1lbnQgY29udGVudFdpbmRvd10p
OgorICAgICAgICAqIERPTS9ET01LZXlib2FyZEV2ZW50Lm1tOgorICAgICAgICAoLVtET01LZXli
b2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5
SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdy
YXBoS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50
OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5
OmFsdEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50
IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmll
cjprZXlMb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdyYXBoS2V5
Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1
YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjprZXlMb2NhdGlvbjpjdHJsS2V5OmFs
dEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAqIERPTS9ET01Nb3VzZUV2ZW50Lm1t
OgorICAgICAgICAoLVtET01Nb3VzZUV2ZW50IGluaXRNb3VzZUV2ZW50OmNhbkJ1YmJsZTpjYW5j
ZWxhYmxlOnZpZXc6ZGV0YWlsOnNjcmVlblg6c2NyZWVuWTpjbGllbnRYOmNsaWVudFk6Y3RybEtl
eTphbHRLZXk6c2hpZnRLZXk6bWV0YUtleTpidXR0b246cmVsYXRlZFRhcmdldDpdKToKKyAgICAg
ICAgKiBET00vRE9NVGV4dEV2ZW50Lm1tOgorICAgICAgICAoLVtET01UZXh0RXZlbnQgaW5pdFRl
eHRFdmVudDpjYW5CdWJibGVBcmc6Y2FuY2VsYWJsZUFyZzp2aWV3QXJnOmRhdGFBcmc6XSk6Cisg
ICAgICAgICogRE9NL0RPTVVJRXZlbnQubW06CisgICAgICAgICgtW0RPTVVJRXZlbnQgdmlld10p
OgorICAgICAgICAoLVtET01VSUV2ZW50IGluaXRVSUV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxl
OnZpZXc6ZGV0YWlsOl0pOgorICAgICAgICAqIERPTS9ET01XaGVlbEV2ZW50Lm1tOgorICAgICAg
ICAoLVtET01XaGVlbEV2ZW50IGluaXRXaGVlbEV2ZW50OndoZWVsRGVsdGFZOnZpZXc6c2NyZWVu
WDpzY3JlZW5ZOmNsaWVudFg6Y2xpZW50WTpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5
Ol0pOgorCiAyMDE4LTA0LTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjMwOTIxLCByMjMwOTIzLCBy
MjMwOTI0LCByMjMwOTMyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGRkZTgwMDhk
YzE4N2YzMDI0OTk1YjJhNGJjN2Q5Y2QwY2E5ZWZjNGIuLmY5YjU5MDBmMTk5ZTU3Yzc0YWJkNDIz
YTkzMzFhZGQ4ZjQ0N2M4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxOC0wNC0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBXaW5kb3dQcm94eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVD
bGFzc2VzLmNwcDoKKyAgICAgICAgKERPTURvY3VtZW50OjpnZXRDb21wdXRlZFN0eWxlKToKKwog
MjAxOC0wNC0yMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzMDkyMSwgcjIzMDkyMywgcjIzMDkyNCwg
cjIzMDkzMiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAzMGY2NDZlYzc4ODYwMDlkMDgwYjdmY2U4NzJmOTBjMzdjMGJjNjZmLi4w
MTE0ZjIwNThmYWJhOWEyZGUwMTI4NTk3MGE2NjBhZDc0OTQ5ZGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzY1LDcgKzIz
NjUsNiBAQAogCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOTU5RTEx
QjhCQzIyQjAwNEQ5Mzg1IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcg
LyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVS
ZXF1ZXN0VHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTgzQjk2ODdCMTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk2
ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLzsgfTsKLQkJ
ODNCOUU3MEIyMDg2QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I5RTcwOTIwODZC
QTI3MDBFNUQ3NTYgLyogSlNET01Db252ZXJ0V2luZG93UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0JCNUM4ODFENUQ2RjQ1MDA1QTcx
RjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVz
Y2VuZGFudHNDb2xsZWN0aW9uLmggKi87IH07CiAJCTgzQzA1QTVCMUE2ODYyMTIwMDdFNURFQSAv
KiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9OwogCQk4M0MxRDQyNTE3OEQ1QUI0
MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0FyY0Ficy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNDMUQ0MTMxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhT
ZWdBcmNBYnMuaCAqLzsgfTsKQEAgLTk4NzcsNyArOTg3Niw2IEBACiAJCTgzQjc0RUYyMUYzRTBC
RDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVw
YWxpdmVSZXF1ZXN0VHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBL
ZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
M0I5Njg3OTE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0I5RTcwOTIwODZCQTI3MDBFNUQ3NTYgLyogSlNE
T01Db252ZXJ0V2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNET01Db252ZXJ0V2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNDMDVBNTgxQTY4NjIxMjAwN0U1REVB
IC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAv
KiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5ODM1LDcgKzE5ODMzLDYgQEAKIAkJCQk3QzhFMzRBQTFF
NEEzMzhFMDA1NENFMjMgLyogSlNET01Db252ZXJ0VmFyaWFkaWMuaCAqLywKIAkJCQk3Q0JBNUJB
NjFGMEI0QkRFMDAzNEQ3NDUgLyogSlNET01Db252ZXJ0V2ViR0wuY3BwICovLAogCQkJCTdDOEUz
NEFCMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5oICovLAotCQkJCTgzQjlF
NzA5MjA4NkJBMjcwMEU1RDc1NiAvKiBKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oICovLAogCQkJ
CTdDOEUzNEFDMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIu
aCAqLywKIAkJCSk7CiAJCQluYW1lID0gQ29udmVyc2lvbnM7CkBAIC0yODQxNiw3ICsyODQxMyw2
IEBACiAJCQkJN0M4RTM0QzQxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFVuaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRDNTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252
ZXJ0VmFyaWFkaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEM2MUU0QTMzQjAwMDU0Q0Uy
MyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODNCOUU3MEIyMDg2
QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QzhFMzRDNzFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0WFBhdGhOU1Jlc29s
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQzlFMEU0RDE2NDE5QzFFMDAzOTJCRTMgLyogSlNE
T01DU1NOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEN0MxMEQyOUE0NjMwMEI5
OTE4RiAvKiBKU0RPTUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
SURMVHlwZXMuaAppbmRleCA1ZmU3N2U4M2YyM2RhMmIxYjQyMGQxZTM5MmRlYTlkYzA3ZmIxYzgw
Li44MDU3ZGZhMTE1ODg4ZDNkYjRhMGYwYmUyNmI0YzY2MmI2OWM3ODdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL0lETFR5cGVzLmgKQEAgLTI3NCw3ICsyNzQsNiBAQCBzdHJ1Y3QgSURMU2NoZWR1bGVk
QWN0aW9uIDogSURMVHlwZTxzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPj4geyB9Owog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IElE
TFdyYXBwZXI8VD4geyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETEV2ZW50TGlz
dGVuZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJ
RExYUGF0aE5TUmVzb2x2ZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKLXN0cnVjdCBJRExXaW5kb3dQ
cm94eSA6IElETFdyYXBwZXI8SlNXaW5kb3dQcm94eT4geyB9OwogCiBzdHJ1Y3QgSURMSURCS2V5
IDogSURMV3JhcHBlcjxJREJLZXk+IHsgfTsKIHN0cnVjdCBJRExJREJLZXlEYXRhIDogSURMV3Jh
cHBlcjxJREJLZXlEYXRhPiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0V2luZG93UHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODJjMWZmNDgxOTJkZTVjMjA4MmRiN2IzZGUwYWMzYmFhNGIzNGM3Yy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIK
LSNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCi0jaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTQ29udmVydGVy
PElETFdpbmRvd1Byb3h5PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUg
PSB0cnVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9IGZh
bHNlOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgVSYmIHZhbHVlKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsKLSAgICB9Ci19
OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCmlu
ZGV4IDE4ODY3MWU0OWIxZjE0MzE1Yzk4Njc3MWQwN2JhNmY4M2UxYWJkMjcuLmE0YjE4MDVjNjUy
ZTIzMjBiZmQ3OWEwOTc5Mjc5YWNjMDg3YjY5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2luZG93UHJveHkuY3BwCkBAIC0xMTksNiArMTE5LDEyIEBAIHZvaWQgSlNXaW5k
b3dQcm94eTo6c2V0V2luZG93KEFic3RyYWN0RE9NV2luZG93JiBkb21XaW5kb3cpCiAgICAgQVNT
RVJUKHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkgPT0gd2luZG93KTsKIH0KIAorV2luZG93UHJv
eHkqIEpTV2luZG93UHJveHk6OndpbmRvd1Byb3h5KCkgY29uc3QKK3sKKyAgICBhdXRvJiB3aW5k
b3cgPSB3cmFwcGVkKCk7CisgICAgcmV0dXJuIHdpbmRvdy5mcmFtZSgpID8gJndpbmRvdy5mcmFt
ZSgpLT53aW5kb3dQcm94eSgpIDogbnVsbHB0cjsKK30KKwogdm9pZCBKU1dpbmRvd1Byb3h5Ojph
dHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKIHsKICAgICBhdXRvKiBnbG9i
YWxPYmplY3QgPSB3aW5kb3coKTsKQEAgLTEzOCwxMiArMTQ0LDYgQEAgQWJzdHJhY3RET01XaW5k
b3cmIEpTV2luZG93UHJveHk6OndyYXBwZWQoKSBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8SlNE
T01XaW5kb3dCYXNlKj4od2luZG93KS0+d3JhcHBlZCgpOwogfQogCi1BYnN0cmFjdERPTVdpbmRv
dyogSlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKFZNJiB2bSwgSlNPYmplY3QqIHZhbHVlKQotewot
ICAgIGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTV2luZG93UHJveHkqPih2bSwgdmFs
dWUpOwotICAgIHJldHVybiB3cmFwcGVyID8gJndyYXBwZXItPndyYXBwZWQoKSA6IG51bGxwdHI7
Ci19Ci0KIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBXaW5kb3dQcm94eSYgd2luZG93
UHJveHkpCiB7CiAgICAgcmV0dXJuICZ3aW5kb3dQcm94eS5qc1dpbmRvd1Byb3h5KGN1cnJlbnRX
b3JsZCgqc3RhdGUpKTsKQEAgLTE1NCw0ICsxNTQsMTQgQEAgSlNXaW5kb3dQcm94eSYgdG9KU1dp
bmRvd1Byb3h5KFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKICAgICByZXR1cm4gd2luZG93UHJveHkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiB9CiAKK1dp
bmRvd1Byb3h5KiBKU1dpbmRvd1Byb3h5Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVl
KQoreworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBpZiAob2JqZWN0
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNX
aW5kb3dQcm94eSo+KG9iamVjdCktPndpbmRvd1Byb3h5KCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2luZG93UHJveHkuaAppbmRleCAxODVhNTQ1NzhiZjgxNzdjZmNhMTc1YzZlNGIxMWY0NzQ4
YTQwOTQ4Li4zNjI0MGQ4NjZlOGYxMGRhZDYyMWRiZGQ5OWVmYjE3ZTE4MWJkZDk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oCkBAIC0yOCw3ICsyOCw5IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTUHJveHkuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zOSw3
ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJhY3RET01XaW5kb3c7
CiBjbGFzcyBBYnN0cmFjdEZyYW1lOwotY2xhc3MgV2luZG93UHJveHk7CiAKIGNsYXNzIEpTV2lu
ZG93UHJveHkgZmluYWwgOiBwdWJsaWMgSlNDOjpKU1Byb3h5IHsKICAgICB1c2luZyBCYXNlID0g
SlNDOjpKU1Byb3h5OwpAQCAtNTMsOCArNTQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2lu
ZG93KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgc2V0V2luZG93KEFi
c3RyYWN0RE9NV2luZG93Jik7CiAKKyAgICBXaW5kb3dQcm94eSogd2luZG93UHJveHkoKSBjb25z
dDsKKwogICAgIEFic3RyYWN0RE9NV2luZG93JiB3cmFwcGVkKCkgY29uc3Q7Ci0gICAgc3RhdGlj
IFdFQkNPUkVfRVhQT1JUIEFic3RyYWN0RE9NV2luZG93KiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpT
Qzo6SlNPYmplY3QqKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgV2luZG93UHJveHkqIHRv
V3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKIAogICAgIERPTVdyYXBwZXJXb3JsZCYg
d29ybGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CiAKQEAgLTcxLDEwICs3NCwxNiBAQCBwcml2YXRl
OgogLy8gSXQgaXMsIGhvd2V2ZXIsIHN0cm9uZ2x5IG93bmVkIGJ5IEFic3RyYWN0RnJhbWUgdmlh
IGl0cyBXaW5kb3dQcm94eSwgc28gd2UgY2FuIGdldCBvbmUgZnJvbSBhIFdpbmRvd1Byb3h5Lgog
V0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBXaW5kb3dQ
cm94eSYpOwogaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
V2luZG93UHJveHkqIHdpbmRvd1Byb3h5KSB7IHJldHVybiB3aW5kb3dQcm94eSA/IHRvSlMoc3Rh
dGUsICp3aW5kb3dQcm94eSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1pbmxpbmUgSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBSZWZQdHI8V2luZG93UHJveHk+JiB3
aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwgd2luZG93UHJveHkuZ2V0KCkpOyB9Citp
bmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamVjdCosIFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwg
d2luZG93UHJveHkpOyB9CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXaW5kb3dQcm94eSogd2lu
ZG93UHJveHkpIHsgcmV0dXJuIHdpbmRvd1Byb3h5ID8gdG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0
LCAqd2luZG93UHJveHkpIDogSlNDOjpqc051bGwoKTsgfQogCiBKU1dpbmRvd1Byb3h5JiB0b0pT
V2luZG93UHJveHkoV2luZG93UHJveHkmLCBET01XcmFwcGVyV29ybGQmKTsKIGlubGluZSBKU1dp
bmRvd1Byb3h5KiB0b0pTV2luZG93UHJveHkoV2luZG93UHJveHkqIHdpbmRvd1Byb3h5LCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKSB7IHJldHVybiB3aW5kb3dQcm94eSA/ICZ0b0pTV2luZG93UHJv
eHkoKndpbmRvd1Byb3h5LCB3b3JsZCkgOiBudWxscHRyOyB9CiAKIAordGVtcGxhdGU8PiBzdHJ1
Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFdpbmRvd1Byb3h5PiB7CisgICAgdXNpbmcg
V3JhcHBlckNsYXNzID0gSlNXaW5kb3dQcm94eTsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5U
eXBlID0gV2luZG93UHJveHkqOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwCmluZGV4IDhlOGY1MTM1M2VkMWY3
YTBiNWIzZjkzMDRjZjgxYzhhYWNiNzViNWUuLmFiMjQ1YjI0Nzg0YWQ3NzczODZlYzUzNDhmM2Ey
NjkyNDdlODAxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRv
d1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5j
cHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSlNXaW5kb3dQcm94
eS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgog
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtNTMsMTIgKzU0LDE2IEBAIFdpbmRvd1Byb3h5OjpX
aW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJiBmcmFtZSkKIH0KIAogV2luZG93UHJveHk6On5XaW5k
b3dQcm94eSgpCit7CisgICAgZGVzdHJveUFsbEpTV2luZG93UHJveGllcygpOworfQorCit2b2lk
IFdpbmRvd1Byb3h5OjpkZXN0cm95QWxsSlNXaW5kb3dQcm94aWVzKCkKIHsKICAgICAvLyBJdCdz
IGxpa2VseSB0aGF0IGRlc3Ryb3lpbmcgd2luZG93UHJveGllcyB3aWxsIGNyZWF0ZSBhIGxvdCBv
ZiBnYXJiYWdlLgogICAgIGlmICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIHdoaWxlICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBh
dXRvIGl0ID0gbV9qc1dpbmRvd1Byb3hpZXMuYmVnaW4oKTsKLSAgICAgICAgICAgIGl0LT52YWx1
ZS0+d2luZG93KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CiAgICAgICAgICAgICBkZXN0
cm95SlNXaW5kb3dQcm94eSgqaXQtPmtleSk7CiAgICAgICAgIH0KICAgICAgICAgY29sbGVjdEdh
cmJhZ2VBZnRlcldpbmRvd1Byb3h5RGVzdHJ1Y3Rpb24oKTsKQEAgLTkxLDYgKzk2LDExIEBAIFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU1dpbmRvd1Byb3h5Pj4gV2luZG93UHJveHk6OmpzV2luZG93UHJv
eGllc0FzVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fanNXaW5kb3dQ
cm94aWVzLnZhbHVlcygpKTsKIH0KIAorSlNET01HbG9iYWxPYmplY3QqIFdpbmRvd1Byb3h5Ojpn
bG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICByZXR1cm4ganNXaW5k
b3dQcm94eSh3b3JsZCkud2luZG93KCk7Cit9CisKIEpTV2luZG93UHJveHkmIFdpbmRvd1Byb3h5
OjpjcmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaAppbmRleCA3NzcyMjk4M2IwYTMyMmNkMDY3
ZGZiNTA2MmRhMDc3N2E2OGU2NWY4Li44NDY3MDIwOTA3NWY3MzJmNWVlMTUxMTgyN2Q2ZDhiMDgy
ZWY4ODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmgKQEAgLTIw
LDcgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU1dpbmRvd1Byb3h5Lmgi
CisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApAQCAtMzAsNyArMzAsMTAgQEAg
Y2xhc3MgRGVidWdnZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWJzdHJhY3RE
T01XaW5kb3c7CiBjbGFzcyBBYnN0cmFjdEZyYW1lOworY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7
CitjbGFzcyBKU1dpbmRvd1Byb3h5OwogCiBjbGFzcyBXaW5kb3dQcm94eSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00MCw2ICs0Myw4IEBAIHB1YmxpYzoKICAgICBleHBsaWNp
dCBXaW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJik7CiAgICAgfldpbmRvd1Byb3h5KCk7CiAKKyAg
ICBBYnN0cmFjdEZyYW1lJiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KKwogICAg
IHZvaWQgZGVzdHJveUpTV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICBQcm94
eU1hcDo6VmFsdWVzQ29uc3RJdGVyYXRvclJhbmdlIGpzV2luZG93UHJveGllcygpIGNvbnN0IHsg
cmV0dXJuIG1fanNXaW5kb3dQcm94aWVzLnZhbHVlcygpOyB9CkBAIC02MywxMCArNjgsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAoaXQgIT0gbV9qc1dpbmRvd1Byb3hpZXMuZW5kKCkpID8g
aXQtPnZhbHVlLmdldCgpIDogbnVsbHB0cjsKICAgICB9CiAKLSAgICBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCi0gICAgewotICAgICAgICBy
ZXR1cm4ganNXaW5kb3dQcm94eSh3b3JsZCkud2luZG93KCk7Ci0gICAgfQorICAgIFdFQkNPUkVf
RVhQT1JUIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJik7
CiAKICAgICB2b2lkIGNsZWFySlNXaW5kb3dQcm94aWVzTm90TWF0Y2hpbmdET01XaW5kb3coQWJz
dHJhY3RET01XaW5kb3cqLCBib29sIGdvaW5nSW50b1BhZ2VDYWNoZSk7CiAKQEAgLTgwLDYgKzgy
LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVmKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkZXJlZigpOwogCisgICAgdm9pZCBkZXN0cm95QWxsSlNXaW5kb3dQcm94
aWVzKCk7CisKIHByaXZhdGU6CiAgICAgSlNXaW5kb3dQcm94eSYgY3JlYXRlSlNXaW5kb3dQcm94
eShET01XcmFwcGVyV29ybGQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBKU1dpbmRvd1Byb3h5JiBj
cmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBt
CmluZGV4IDk1MjQyOWEwZTQ5Nzc0YmFkMjJjMWU1OGViYjJlNGVkZGJhZDNiNjMuLjJmY2ZlZTNh
N2FhOGYyMmYyNmViZGRiNmE0ZTI4ZmEwMzhiMmY0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTg5MSw3ICs4OTEsNiBAQCBz
dWIgSXNCdWlsdGluVHlwZQogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5T
UmVzb2x2ZXIiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJhbnkiOwogICAgIHJl
dHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJvYmplY3QiOwotICAgIHJldHVybiAxIGlmICR0eXBl
LT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTEwMDEsNiAr
MTAwMCw3IEBAIHN1YiBDb21wdXRlSXNDYWxsYmFja0ludGVyZmFjZQogICAgIGFzc2VydCgiTm90
IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5s
ZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5
cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsKIAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5u
YW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlw
ZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBc
IiR0eXBlTmFtZVwiIVxuIik7CkBAIC0xMDM4LDYgKzEwMzgsNyBAQCBzdWIgQ29tcHV0ZUlzQ2Fs
bGJhY2tGdW5jdGlvbgogICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUg
IklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5sZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlw
ZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsK
IAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9i
amVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlwZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9U
IGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlTmFtZVwiIVxuIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4
IDYyNmE5ZjBiMmQ2ZjA0M2NmOTJiZGYzMmYyOTYyODkyNjExNmU1ZTQuLjMwYTM3NGMyODI0ZmEy
NjA4MjQyYWEzODcxMDk4NDIwMmI1ZDBlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00MjEsMTMgKzQyMSw2IEBAIHN1
YiBBZGRUb0luY2x1ZGVzRm9ySURMVHlwZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKCR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSIpIHsKLSAgICAgICAgQWRkVG9JbmNsdWRl
cygiV2luZG93UHJveHkuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAg
QWRkVG9JbmNsdWRlcygiSlNXaW5kb3dQcm94eS5oIiwgJGluY2x1ZGVzUmVmLCAkY29uZGl0aW9u
YWwpOwotICAgICAgICBBZGRUb0luY2x1ZGVzKCJKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIiwg
JGluY2x1ZGVzUmVmLCAkY29uZGl0aW9uYWwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7CiAgICAgICAgIEFk
ZFRvSW5jbHVkZXMoIkpTRE9NQ29udmVydFN0cmluZ3MuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRp
dGlvbmFsKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjM5Myw3ICs2Mzg2LDYgQEAgc3ViIEdldEJh
c2VJRExUeXBlCiAgICAgICAgICJKU09OIiA9PiAiSURMSlNPTiIsCiAgICAgICAgICJTY2hlZHVs
ZWRBY3Rpb24iID0+ICJJRExTY2hlZHVsZWRBY3Rpb24iLAogICAgICAgICAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlIiA9PiAiSURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4iLAotICAgICAgICAiV2luZG93UHJveHkiID0+ICJJRExXaW5kb3dQcm94eSIsCiAgICAg
ICAgICJYUGF0aE5TUmVzb2x2ZXIiID0+ICJJRExYUGF0aE5TUmVzb2x2ZXI8WFBhdGhOU1Jlc29s
dmVyPiIsCiAgICAgKTsKIApAQCAtNjU1NCw3ICs2NTQ2LDYgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1
ZURPTUNvbnZlcnROZWVkc1N0YXRlCiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIkpT
T04iOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwot
ICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAgICAgCiAgICAg
cmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGJhNDViYjk4ZjIxYTYzMzkwOWQyYmU4ZTBhMWZl
MmRjNzI2YTM0NWYuLmMwNDY2YzI2NmI3MzdmNmM4ODVkMmFhZmQwNWI1ZjE2ZjY4MmQ1MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCkBAIC01NSw3ICs1NSw2IEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIK
ICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCIKICNpbmNsdWRlICJK
U0RPTVN0cmluZ0xpc3QuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpT
RE9NV2luZG93QmFzZS5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiSlNEb2N1bWVudC5oIgpAQCAtNjk1Nyw3ICs2OTU2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDlCb2QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8g
d2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8RE9NV2luZG93Pj4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwg
IndpbmRvdyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiRE9NV2luZG93Iik7
IH0pOworICAgIGF1dG8gd2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8V2luZG93UHJveHk+
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAwLCAid2luZG93IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhv
ZCIsICJXaW5kb3dQcm94eSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqd2luZG93
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNzAyOSw3
ICs3MDI4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZE92ZXIKICAgICAgICAgICAgIHJldHVybiBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2Qm9keShzdGF0ZSwgY2Fz
dGVkVGhpcywgdGhyb3dTY29wZSk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09i
amVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNUZXN0T2Jq
Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kOEJvZHkoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwotICAgICAg
ICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiAoYXNPYmplY3QoZGlzdGluZ3Vp
c2hpbmdBcmcpLT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkgfHwgYXNPYmplY3QoZGlzdGlu
Z3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU0RPTVdpbmRvdz4odm0pKSkKKyAgICAgICAgaWYgKGRp
c3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcp
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOUJvZHkoc3RhdGUsIGNhc3RlZFRo
aXMsIHRocm93U2NvcGUpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzPEpTQmxvYj4odm0pKQog
ICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDEzQm9keShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggYzgzZWVlZWRi
ZjQxNjNmODMyYmNkMjUzZWMwNTc1Njg0NmVlZDY4NC4uNzFkZGZjNDg5ZWQyZDVkYTI1NmZiNWM0
MzBiOTMyZWJkYzRmODcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMjg2LDcgKzI4Niw3IEBAIGVudW0gVGVzdENvbmZpZGVu
Y2UgeyAiaGlnaCIsICJraW5kYS1sb3ciIH07CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9k
KERPTVN0cmluZ0xpc3Q/IGxpc3RBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChz
ZXF1ZW5jZTxET01TdHJpbmc+PyBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0
aG9kKFRlc3RPYmogb2JqQXJnKTsKLSAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoRE9NV2lu
ZG93IHdpbmRvdyk7CisgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFdpbmRvd1Byb3h5IHdp
bmRvdyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKHNlcXVlbmNlPERPTVN0cmluZz4g
YXJyYXlBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChzZXF1ZW5jZTx1bnNpZ25l
ZCBsb25nPiBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmlu
ZyBzdHJBcmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCmluZGV4IDBl
MzhhNjcxOGNkMWRhZDJlNzkwMjhiODkwMDU2YTZmY2I2NDJjOTAuLjAwN2FmN2Q3MjRmNWMzZTRh
MGEzNjExMjU2NmM0ODJlZDZmZDU5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NpdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25F
dmVudC5jcHAKQEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb21wb3Np
dGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KCkgPSBkZWZhdWx0OwogCi1Db21wb3NpdGlvbkV2
ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRE9NV2luZG93
KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgOiBVSUV2ZW50KHR5cGUsIHRydWUsIHRy
dWUsIHZpZXcsIDApCitDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKKyAgICA6IFVJRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwg
MCkKICAgICAsIG1fZGF0YShkYXRhKQogewogfQpAQCAtNDUsMTIgKzQ1LDEyIEBAIENvbXBvc2l0
aW9uRXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25z
dCBJbml0JiBpbml0aWFsCiAKIENvbXBvc2l0aW9uRXZlbnQ6On5Db21wb3NpdGlvbkV2ZW50KCkg
PSBkZWZhdWx0OwogCi12b2lkIENvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCit2b2lkIENvbXBvc2l0aW9u
RXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcs
IGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxh
YmxlLCB2aWV3LCAwKTsKKyAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIFdURk1vdmUodmlldyksIDApOwogCiAgICAgbV9kYXRhID0gZGF0YTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCmluZGV4IDhmZjAyZWM5Njk3NzhiODg1YTYzMTcwMjRj
OTU3NDc2ZTAyMWIyYTYuLjNiMWM0NmQ2MzVlY2FmNmNkMDkxOTA5OGY1MDhmYzQxZTY0Y2ViY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaApAQCAtMzIsOSArMzIsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbXBvc2l0aW9uRXZlbnQgZmluYWwgOiBwdWJs
aWMgVUlFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0
cmluZyYgZGF0YSkKKyAgICBzdGF0aWMgUmVmPENvbXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBT
dHJpbmcmIGRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21wb3Np
dGlvbkV2ZW50KHR5cGUsIHZpZXcsIGRhdGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ29tcG9zaXRpb25FdmVudCh0eXBlLCBXVEZNb3ZlKHZpZXcpLCBkYXRhKSk7CiAgICAgfQog
CiAgICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbXBvc2l0aW9uRXZlbnQo
KTsKIAotICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBT
dHJpbmcmIGRhdGEpOworICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAKICAgICBTdHJpbmcgZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBDb21wb3NpdGlvbkV2ZW50KCk7Ci0gICAgQ29tcG9zaXRpb25FdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYpOworICAgIENv
bXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8V2luZG93UHJv
eHk+JiYsIGNvbnN0IFN0cmluZyYpOwogICAgIENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJvb2wgaXNDb21w
b3NpdGlvbkV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zaXRpb25FdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRp
b25FdmVudC5pZGwKaW5kZXggZDg3MjQwODgzZTI3ZDNiMzQ1ODUzOWViOTIwZjRkM2YyODcxNjZj
NC4uMjBhYWM3ZWE0NzcwZDU2NTllZDQwOTEwZDdhYTc5NTA4ZTY2MTgzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIHZvaWQg
aW5pdENvbXBvc2l0aW9uRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZp
bmVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY2Fu
QnViYmxlQXJnID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25h
bCBib29sZWFuIGNhbmNlbGFibGVBcmcgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlld0FyZyA9IG51bGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlld0FyZyA9IG51bGwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBET01TdHJpbmcgZGF0YUFyZyA9
ICJ1bmRlZmluZWQiKTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDg2ZjgzZTcy
NjQyM2FjNDU0MzVkMzJiZWYwNDk0ZTk5NDllMDU0OTkuLjc4ZjhiZTI3ZTk0MGU0OWE2MDM0OTAx
OTcyOWUzNTJkNTI5NmE2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDI4MCw2ICs0
MjgwLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnRha2VET01XaW5kb3dGcm9tKERvY3VtZW50KiBkb2N1
bWVudCkKICAgICBBU1NFUlQobV9kb21XaW5kb3ctPmZyYW1lKCkgPT0gbV9mcmFtZSk7CiB9CiAK
K1dpbmRvd1Byb3h5KiBEb2N1bWVudDo6ZGVmYXVsdFZpZXcoKSBjb25zdAoreworICAgIGlmICgh
bV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZtX2ZyYW1lLT53
aW5kb3dQcm94eSgpOworfQorCiBEb2N1bWVudCYgRG9jdW1lbnQ6OmNvbnRleHREb2N1bWVudCgp
IGNvbnN0CiB7CiAgICAgaWYgKG1fY29udGV4dERvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCBhNGZiMDJmOWUxYmNiZDQwMGIwY2M4NjUyYWJkNDA0ZjAxYzQ1OTVmLi44NWEyNTY1MjFi
N2NiNzgxNjRjYTQ4ZjYwMDFjYjY4NWIwNTdhNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
Nzk5LDcgKzc5OSw3IEBAIHB1YmxpYzoKIAogICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29u
c3QgeyByZXR1cm4gbV9kb21XaW5kb3cuZ2V0KCk7IH0KICAgICAvLyBJbiBET00gTGV2ZWwgMiwg
dGhlIERvY3VtZW50J3MgRE9NV2luZG93IGlzIGNhbGxlZCB0aGUgZGVmYXVsdFZpZXcuCi0gICAg
RE9NV2luZG93KiBkZWZhdWx0VmlldygpIGNvbnN0IHsgcmV0dXJuIGRvbVdpbmRvdygpOyB9IAor
ICAgIFdFQkNPUkVfRVhQT1JUIFdpbmRvd1Byb3h5KiBkZWZhdWx0VmlldygpIGNvbnN0OwogCiAg
ICAgRG9jdW1lbnQmIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4
dERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkgeyBtX2NvbnRleHREb2N1bWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZVdlYWtQdHIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXggMmQ1YmFh
ZDhjNjA2NDRkYTg5ZDEwN2ZkZGUxODI4Y2Q4YTQ5ZDgyYi4uMDhmNzJhOTIwMDBkM2FjMjBhNjQ0
YzBlNWJjMzQ4MmI0NzVlZGE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0xMTMsNyAr
MTEzLDcgQEAgdHlwZWRlZiAoCiAgICAgW0NFUmVhY3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJs
ZURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB3cml0ZWxuKERPTVN0cmluZy4uLiB0
ZXh0KTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24uCi0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVdpbmRvdz8gZGVmYXVsdFZpZXc7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1By
b3h5PyBkZWZhdWx0VmlldzsKICAgICBib29sZWFuIGhhc0ZvY3VzKCk7CiAgICAgW0NFUmVhY3Rp
b25zXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlc2lnbk1vZGU7CiAgICAgW0NFUmVhY3Rpb25zXSBi
b29sZWFuIGV4ZWNDb21tYW5kKERPTVN0cmluZyBjb21tYW5kSWQsIG9wdGlvbmFsIGJvb2xlYW4g
c2hvd1VJID0gZmFsc2UsIG9wdGlvbmFsIERPTVN0cmluZz8gdmFsdWUgPSBudWxsKTsgLy8gRklY
TUU6IHZhbHVlIHNob3VsZCBub3QgYmUgbnVsbGFibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRUb3VjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRU
b3VjaC5jcHAKaW5kZXggM2Q5MTIzZDhmNzUzMmNiNGRiNzlhNGExMzM1ZDVmMTcyOGNjNTA5YS4u
NWQxMjZjM2MzMjQ3MTRmMzlmOWY5NmUxNjM2OWMwMTg3ODQ3YTgwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFRvdWNoLmNwcApAQCAtMjgsMjAgKzI4LDI3IEBACiAKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlRvdWNoLmgiCiAjaW5jbHVkZSAiVG91
Y2hMaXN0LmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZWY8VG91Y2g+IERvY3VtZW50VG91Y2g6OmNyZWF0ZVRvdWNoKERvY3VtZW50JiBkb2N1
bWVudCwgRE9NV2luZG93KiB3aW5kb3csIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBpZGVudGlm
aWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQg
cmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKQor
UmVmPFRvdWNoPiBEb2N1bWVudFRvdWNoOjpjcmVhdGVUb3VjaChEb2N1bWVudCYgZG9jdW1lbnQs
IFJlZlB0cjxXaW5kb3dQcm94eT4mJiB3aW5kb3csIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBp
ZGVudGlmaWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5Z
LCBpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZv
cmNlKQogeworICAgIEZyYW1lKiBmcmFtZTsKKyAgICBpZiAod2luZG93ICYmIGlzPEZyYW1lPih3
aW5kb3ctPmZyYW1lKCkpKQorICAgICAgICBmcmFtZSA9ICZkb3duY2FzdDxGcmFtZT4od2luZG93
LT5mcmFtZSgpKTsKKyAgICBlbHNlCisgICAgICAgIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsK
KwogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciBmcm9tIHRoZSBkb2N1bWVudGF0aW9uIGF0
CiAgICAgLy8gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9zYWZhcmkvI2RvY3Vt
ZW50YXRpb24vVXNlckV4cGVyaWVuY2UvUmVmZXJlbmNlL0RvY3VtZW50QWRkaXRpb25zUmVmZXJl
bmNlL0RvY3VtZW50QWRkaXRpb25zL0RvY3VtZW50QWRkaXRpb25zLmh0bWwKICAgICAvLyB3aGVu
IHRoaXMgbWV0aG9kIHNob3VsZCB0aHJvdyBhbmQgbm9yIGlzIGl0IGJ5IGluc3BlY3Rpb24gb2Yg
aU9TIGJlaGF2aW9yLiBJdCB3b3VsZCBiZSBuaWNlIHRvIHZlcmlmeSBhbnkgY2FzZXMgd2hlcmUg
aXQgdGhyb3dzIHVuZGVyIGlPUwogICAgIC8vIGFuZCBpbXBsZW1lbnQgdGhlbSBoZXJlLiBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3ODE5Ci0gICAgcmV0dXJu
IFRvdWNoOjpjcmVhdGUod2luZG93ID8gd2luZG93LT5mcmFtZSgpIDogZG9jdW1lbnQuZnJhbWUo
KSwgdGFyZ2V0LCBpZGVudGlmaWVyLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksIHJh
ZGl1c1gsIHJhZGl1c1ksIHJvdGF0aW9uQW5nbGUsIGZvcmNlKTsKKyAgICByZXR1cm4gVG91Y2g6
OmNyZWF0ZShmcmFtZSwgdGFyZ2V0LCBpZGVudGlmaWVyLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdl
WCwgcGFnZVksIHJhZGl1c1gsIHJhZGl1c1ksIHJvdGF0aW9uQW5nbGUsIGZvcmNlKTsKIH0KIAog
UmVmPFRvdWNoTGlzdD4gRG9jdW1lbnRUb3VjaDo6Y3JlYXRlVG91Y2hMaXN0KERvY3VtZW50Jiwg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmIHRvdWNoZXMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50VG91Y2guaAppbmRleCBlMGRhZjUwNTJjYzk3ODUyYzhhMDRiYmE3M2U1ZjZh
MTE2ZjEwZTUxLi43MmM0ODg4YjQ1YWI0MDBlMjliYzhhZWQ4NmRlNGM1OTAzZWFjMjIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmgKQEAgLTM0LDE1ICszNCwxNSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
RXZlbnRUYXJnZXQ7CiBjbGFzcyBUb3VjaDsKIGNsYXNzIFRvdWNoTGlzdDsKK2NsYXNzIFdpbmRv
d1Byb3h5OwogCiBjbGFzcyBEb2N1bWVudFRvdWNoIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFRvdWNoPiBjcmVhdGVUb3VjaChEb2N1bWVudCYsIERPTVdpbmRvdyosIEV2ZW50VGFyZ2V0Kiwg
aW50IGlkZW50aWZpZXIsIGludCBwYWdlWCwgaW50IHBhZ2VZLCBpbnQgc2NyZWVuWCwgaW50IHNj
cmVlblksIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSwgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxv
YXQgZm9yY2UpOworICAgIHN0YXRpYyBSZWY8VG91Y2g+IGNyZWF0ZVRvdWNoKERvY3VtZW50Jiwg
UmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBFdmVudFRhcmdldCosIGludCBpZGVudGlmaWVyLCBpbnQg
cGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcmFkaXVzWCwg
aW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKTsKICAgICBzdGF0
aWMgUmVmPFRvdWNoTGlzdD4gY3JlYXRlVG91Y2hMaXN0KERvY3VtZW50JiwgVmVjdG9yPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFRvdWNoLmlkbAppbmRleCA3YTI3Mzc0NTg2NTQ5OTFiMTFiNTU2MzA4OWUyMTk1N2NjNGM0ZTRh
Li4wNDg5YTM2YWQ2YjEyNTAzY2RiNDZhZjE0OGNiNTljZmFmZDY3NWJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50VG91Y2guaWRsCkBAIC0yMiw3ICsyMiw3IEBACiAgICAgQ29uZGl0aW9uYWw9
VE9VQ0hfRVZFTlRTCiBdIHBhcnRpYWwgaW50ZXJmYWNlIERvY3VtZW50IHsKICAgICAvLyBGSVhN
RTogVGhpcyBoYXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlIHN0YW5kYXJkIG5vdyB0aGF0IFRvdWNo
IGhhcyBhIGNvbnN0cnVjdG9yLgotICAgIFtOZXdPYmplY3RdIFRvdWNoIGNyZWF0ZVRvdWNoKG9w
dGlvbmFsIERPTVdpbmRvdz8gd2luZG93ID0gbnVsbCwgb3B0aW9uYWwgRXZlbnRUYXJnZXQ/IHRh
cmdldCA9IG51bGwsCisgICAgW05ld09iamVjdF0gVG91Y2ggY3JlYXRlVG91Y2gob3B0aW9uYWwg
V2luZG93UHJveHk/IHdpbmRvdyA9IG51bGwsIG9wdGlvbmFsIEV2ZW50VGFyZ2V0PyB0YXJnZXQg
PSBudWxsLAogICAgICAgICBvcHRpb25hbCBsb25nIGlkZW50aWZpZXIgPSAwLAogICAgICAgICBv
cHRpb25hbCBsb25nIHBhZ2VYID0gMCwgb3B0aW9uYWwgbG9uZyBwYWdlWSA9IDAsIG9wdGlvbmFs
IGxvbmcgc2NyZWVuWCA9IDAsIG9wdGlvbmFsIGxvbmcgc2NyZWVuWSA9IDAsCiAgICAgICAgIG9w
dGlvbmFsIGxvbmcgd2Via2l0UmFkaXVzWCA9IDAsIG9wdGlvbmFsIGxvbmcgd2Via2l0UmFkaXVz
WSA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAKaW5kZXggMTZkOGIzZmYwNzhkMDVhZDkx
ZTJkNjkxNDY3MTkxMjg1NWQ3YzQ4NC4uOTg2ODc3MzI2Y2UzZmFlNGJiMDU5ZTdjMTY0ZDdiYzE4
YWE5ZGZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcApAQCAtNDAsOCArNDAsOCBAQCBi
b29sIEZvY3VzRXZlbnQ6OmlzRm9jdXNFdmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLUZvY3VzRXZlbnQ6OkZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWws
IFJlZlB0cjxFdmVudFRhcmdldD4mJiByZWxhdGVkVGFyZ2V0KQotICAgIDogVUlFdmVudCh0eXBl
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCkKK0ZvY3VzRXZlbnQ6OkZvY3Vz
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2
ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpCisgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKQogICAgICwgbV9yZWxhdGVkVGFy
Z2V0KFdURk1vdmUocmVsYXRlZFRhcmdldCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRm9jdXNFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuaApp
bmRleCAwNjcyNTU3NGMwNmI5MWYyOWZiNGY5NmEwYjFiNTYxMzRmMTk2ODU0Li5jN2E0ZGY4ZTc3
NDMyY2ZlMzY0YTEzNGY4ZGU1MTUxNmEwNTdiODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRm9jdXNFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmgK
QEAgLTM1LDkgKzM1LDkgQEAgY2xhc3MgTm9kZTsKIAogY2xhc3MgRm9jdXNFdmVudCBmaW5hbCA6
IHB1YmxpYyBVSUV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZvY3VzRXZlbnQ+IGNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYm
IHJlbGF0ZWRUYXJnZXQpCisgICAgc3RhdGljIFJlZjxGb2N1c0V2ZW50PiBjcmVhdGUoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYm
IHJlbGF0ZWRUYXJnZXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb2N1
c0V2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCBXVEZNb3Zl
KHJlbGF0ZWRUYXJnZXQpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvY3VzRXZl
bnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIFdU
Rk1vdmUocmVsYXRlZFRhcmdldCkpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPEZvY3VzRXZl
bnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIEZvY3VzRXZlbnQoKSA9IGRlZmF1bHQ7Ci0gICAgRm9jdXNFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdp
bmRvdyosIGludCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmKTsKKyAgICBGb2N1c0V2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQsIFJlZlB0cjxFdmVudFRhcmdldD4mJik7CiAgICAgRm9j
dXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQp
OwogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9JbnB1dEV2ZW50LmNwcAppbmRleCBkNDQ5Mjk0ZmVjNmJjNzk3MGQ2YzQyYzRiOTdh
YjE2MWM0ZjViMWYwLi5jMTdiZjE4ZDg4YTY3NjQ3MmExODcxNjNlN2I0NTE0Zjg0NDAwYTBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuY3BwCkBAIC0yNiwyMCArMjYsMjAgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJJbnB1dEV2ZW50LmgiCiAKLSNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJOb2RlLmgiCisjaW5j
bHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmPElucHV0RXZlbnQ+IElucHV0RXZlbnQ6OmNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIFdlYkNvcmU6OkRPTVdpbmRvdyAqdmlldywgY29uc3Qg
U3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCitS
ZWY8SW5wdXRFdmVudD4gSW5wdXRFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwg
UmVmUHRyPERhdGFUcmFuc2Zlcj4mJiBkYXRhVHJhbnNmZXIsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IElucHV0RXZlbnQoZXZlbnRUeXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJsZSwg
Y2FuY2VsYWJsZSwgdmlldywgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRSYW5n
ZXMsIGRldGFpbCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQoZXZlbnRU
eXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGF0
YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRSYW5nZXMsIGRldGFpbCkpOwogfQogCi1J
bnB1dEV2ZW50OjpJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9N
V2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYg
ZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJh
bmdlcywgaW50IGRldGFpbCkKLSAgICA6IFVJRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIHZpZXcsIGRldGFpbCkKK0lucHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3Qg
U3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCisg
ICAgOiBVSUV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZp
ZXcpLCBkZXRhaWwpCiAgICAgLCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAgLCBtX2RhdGEo
ZGF0YSkKICAgICAsIG1fZGF0YVRyYW5zZmVyKGRhdGFUcmFuc2ZlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRF
dmVudC5oCmluZGV4IGNhZDhkY2U3YjM2MjZkOWEyMjc2MzRiMzU4OTI2YzFmMTI1NDY4MWIuLmQw
NTA3NjM5YzZjODljOTlkNGQzMGExY2U5MzZmOTE2MWI5YzRlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0
RXZlbnQuaApAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IERPTVdpbmRvdzsKIGNsYXNzIERhdGFUcmFuc2ZlcjsKK2NsYXNzIFdpbmRvd1Byb3h5OwogCiBj
bGFzcyBJbnB1dEV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogcHVibGljOgpAQCAtMzks
MTMgKzM5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIGRhdGE7CiAgICAgfTsKIAotICAg
IHN0YXRpYyBSZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJh
bnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2Vz
LCBpbnQgZGV0YWlsKTsKKyAgICBzdGF0aWMgUmVmPElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25z
dCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKICAgICBzdGF0aWMg
UmVmPElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IElu
aXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQodHlwZSwgaW5pdGlh
bGl6ZXIsIGlzVHJ1c3RlZCkpOwogICAgIH0KIAotICAgIElucHV0RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0
cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFy
Z2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKKyAgICBJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEs
IFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+
PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKICAgICBJbnB1dEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJvb2wg
aXNJbnB1dEV2ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0tleWJvYXJkRXZlbnQuY3BwCmluZGV4IDRkYTEwMTc3MjVmZTg5MmNmYThkYWNmMGY1Yjcw
ODFkY2M2Y2ZiZTkuLjRhY2I1ZjRjZWI3NjBlMTcwZjEwN2NlYTM4NjA5ODlmNjcyNjRlYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAKKyNpbmNsdWRlICJE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgog
I2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgpAQCAtOTIsOCArOTMsOCBAQCBzdGF0aWMgaW5saW5l
IEtleWJvYXJkRXZlbnQ6OktleUxvY2F0aW9uQ29kZSBrZXlMb2NhdGlvbkNvZGUoY29uc3QgUGxh
dGZvcm1LZXlibwogCiBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudCgpID0gZGVm
YXVsdDsKIAotaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZv
cm1LZXlib2FyZEV2ZW50JiBrZXksIERPTVdpbmRvdyogdmlldykKLSAgICA6IFVJRXZlbnRXaXRo
S2V5U3RhdGUoZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUoa2V5LnR5cGUoKSksIHRydWUs
IHRydWUsIGtleS50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgdmlldywg
MCwga2V5LmN0cmxLZXkoKSwga2V5LmFsdEtleSgpLCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1ldGFL
ZXkoKSwgZmFsc2UsIGtleS5tb2RpZmllcnMoKS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpNb2Rp
Zmllcjo6Q2Fwc0xvY2tLZXkpKQoraW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQo
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3KQorICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGVGb3JLZXlib2FyZEV2ZW50
VHlwZShrZXkudHlwZSgpKSwgdHJ1ZSwgdHJ1ZSwga2V5LnRpbWVzdGFtcCgpLmFwcHJveGltYXRl
TW9ub3RvbmljVGltZSgpLCB2aWV3LmNvcHlSZWYoKSwgMCwga2V5LmN0cmxLZXkoKSwga2V5LmFs
dEtleSgpLCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1ldGFLZXkoKSwgZmFsc2UsIGtleS5tb2RpZmll
cnMoKS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tLZXkpKQogICAg
ICwgbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtS2V5
Ym9hcmRFdmVudD4oa2V5KSkKICNpZiBFTkFCTEUoS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkKICAg
ICAsIG1fa2V5KGtleS5rZXkoKSkKQEAgLTEwNCw3ICsxMDUsNyBAQCBpbmxpbmUgS2V5Ym9hcmRF
dmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwgRE9N
V2luZG93KgogICAgICwgbV9rZXlJZGVudGlmaWVyKGtleS5rZXlJZGVudGlmaWVyKCkpCiAgICAg
LCBtX2xvY2F0aW9uKGtleUxvY2F0aW9uQ29kZShrZXkpKQogICAgICwgbV9yZXBlYXQoa2V5Lmlz
QXV0b1JlcGVhdCgpKQotICAgICwgbV9pc0NvbXBvc2luZyh2aWV3ICYmIHZpZXctPmZyYW1lKCkg
JiYgdmlldy0+ZnJhbWUoKS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkKKyAgICAsIG1faXND
b21wb3NpbmcodmlldyAmJiBpczxET01XaW5kb3c+KHZpZXctPndpbmRvdygpKSAmJiBkb3duY2Fz
dDxET01XaW5kb3c+KCp2aWV3LT53aW5kb3coKSkuZnJhbWUoKSAmJiBkb3duY2FzdDxET01XaW5k
b3c+KCp2aWV3LT53aW5kb3coKSkuZnJhbWUoKS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkK
ICNpZiBVU0UoQVBQS0lUKQogICAgICwgbV9oYW5kbGVkQnlJbnB1dE1ldGhvZChrZXkuaGFuZGxl
ZEJ5SW5wdXRNZXRob2QoKSkKICAgICAsIG1fa2V5cHJlc3NDb21tYW5kcyhrZXkuY29tbWFuZHMo
KSkKQEAgLTEzMiw5ICsxMzMsOSBAQCBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgSW5pdCYgaQogCiBLZXlib2Fy
ZEV2ZW50Ojp+S2V5Ym9hcmRFdmVudCgpID0gZGVmYXVsdDsKIAotUmVmPEtleWJvYXJkRXZlbnQ+
IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIHBsYXRm
b3JtRXZlbnQsIERPTVdpbmRvdyogdmlldykKK1JlZjxLZXlib2FyZEV2ZW50PiBLZXlib2FyZEV2
ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBwbGF0Zm9ybUV2ZW50LCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBL
ZXlib2FyZEV2ZW50KHBsYXRmb3JtRXZlbnQsIHZpZXcpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBLZXlib2FyZEV2ZW50KHBsYXRmb3JtRXZlbnQsIFdURk1vdmUodmlldykpKTsKIH0KIAog
UmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzKCkKQEAg
LTE0NywxMyArMTQ4LDEzIEBAIFJlZjxLZXlib2FyZEV2ZW50PiBLZXlib2FyZEV2ZW50OjpjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgS2V5Ym9hcmRFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7
CiB9CiAKLXZvaWQgS2V5Ym9hcmRFdmVudDo6aW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cq
IHZpZXcsCit2b2lkIEtleWJvYXJkRXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdp
bmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCB1bnNp
Z25lZCBsb2NhdGlvbiwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwg
Ym9vbCBtZXRhS2V5LCBib29sIGFsdEdyYXBoS2V5KQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0
Y2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJi
bGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAgICBtX2tleUlkZW50aWZpZXIg
PSBrZXlJZGVudGlmaWVyOwogICAgIG1fbG9jYXRpb24gPSBsb2NhdGlvbjsKQEAgLTIyNyw4ICsy
MjgsOSBAQCBpbnQgS2V5Ym9hcmRFdmVudDo6Y2hhckNvZGUoKSBjb25zdAogICAgIC8vIEZpcmVm
b3g6IDAgZm9yIGtleWRvd24va2V5dXAgZXZlbnRzLCBjaGFyYWN0ZXIgY29kZSBmb3Iga2V5cHJl
c3MKICAgICAvLyBXZSBtYXRjaCBGaXJlZm94LCB1bmxlc3MgaW4gYmFja3dhcmQgY29tcGF0aWJp
bGl0eSBtb2RlLCB3aGVyZSB3ZSBhbHdheXMgcmV0dXJuIHRoZSBjaGFyYWN0ZXIgY29kZS4KICAg
ICBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUgPSBmYWxzZTsKLSAgICBpZiAodmlldygp
ICYmIHZpZXcoKS0+ZnJhbWUoKSkKLSAgICAgICAgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9
IHZpZXcoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkubmVlZHNLZXlib2FyZEV2ZW50RGlzYW1i
aWd1YXRpb25RdWlya3MoKTsKKyAgICBhdXRvKiB3aW5kb3cgPSB2aWV3KCkgPyB2aWV3KCktPndp
bmRvdygpIDogbnVsbHB0cjsKKyAgICBpZiAoaXM8RE9NV2luZG93Pih3aW5kb3cpICYmIGRvd25j
YXN0PERPTVdpbmRvdz4oKndpbmRvdykuZnJhbWUoKSkKKyAgICAgICAgYmFja3dhcmRDb21wYXRp
YmlsaXR5TW9kZSA9IGRvd25jYXN0PERPTVdpbmRvdz4oKndpbmRvdykuZnJhbWUoKS0+ZXZlbnRI
YW5kbGVyKCkubmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25RdWlya3MoKTsKIAogICAg
IGlmICghbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudCB8fCAodHlwZSgpICE9IGV2ZW50TmFtZXMo
KS5rZXlwcmVzc0V2ZW50ICYmICFiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKSkKICAgICAgICAg
cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaAppbmRleCA4MjEwMzMwZWFiMDM0
MWY0Y2E1NGNkMjVjNThiOTk1NDZmMGIxNWE5Li4xZDNjYzI0Mzc5OWIxOWE3NDRlZTk3OGExODdl
YWVhZWM4ODA1ZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKQEAgLTQzLDcgKzQz
LDcgQEAgcHVibGljOgogICAgICAgICBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCA9IDB4MDMKICAg
ICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxLZXlib2FyZEV2ZW50PiBjcmVh
dGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxLZXlib2FyZEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAgICBzdGF0aWMgUmVmPEtl
eWJvYXJkRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBzdHJ1Y3QgSW5pdCA6IHB1
YmxpYyBFdmVudE1vZGlmaWVySW5pdCB7CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgfktleWJvYXJkRXZlbnQoKTsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAogICAgICAgICBjb25z
dCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIHVuc2lnbmVkIGxvY2F0aW9uLAogICAgICAgICBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIGJvb2wg
YWx0R3JhcGhLZXkgPSBmYWxzZSk7CiAgICAgCkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIEtleWJvYXJkRXZlbnQoKTsKLSAgICBLZXlib2FyZEV2ZW50KGNvbnN0
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYsIERPTVdpbmRvdyopOworICAgIEtleWJvYXJkRXZlbnQo
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAg
ICBLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0
ZWQpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4gbV91bmRl
cmx5aW5nUGxhdGZvcm1FdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXli
b2FyZEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmlkbAppbmRl
eCA3NTdjMDc3OTNmNWU1ZjFlMTg0MzhmNzhkZDQ0N2U5YTNhMWQ1MTA5Li5jZGU0NTBjMzQzNTMz
NTA5MmExNzdkNmRmNjM2OGJmNjM1MWQ3MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vS2V5Ym9hcmRFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZl
bnQuaWRsCkBAIC01Miw3ICs1Miw3IEBACiAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBub3QgbWF0
Y2ggdGhlIHZlcnNpb24gaW4gdGhlIERPTSBzcGVjLgogICAgIC8vIEZJWE1FOiBVc2luZyAidW5k
ZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KICAgICB2b2lkIGlu
aXRLZXlib2FyZEV2ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9w
dGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2Vs
YWJsZSA9IGZhbHNlLAotICAgICAgICBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBv
cHRpb25hbCBET01TdHJpbmcga2V5SWRlbnRpZmllciA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCB1
bnNpZ25lZCBsb25nIGxvY2F0aW9uID0gMCwKKyAgICAgICAgb3B0aW9uYWwgV2luZG93UHJveHk/
IHZpZXcgPSBudWxsLCBvcHRpb25hbCBET01TdHJpbmcga2V5SWRlbnRpZmllciA9ICJ1bmRlZmlu
ZWQiLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGxvY2F0aW9uID0gMCwKICAgICAgICAgb3B0aW9u
YWwgYm9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFs
c2UsIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBt
ZXRhS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0R3JhcGhLZXkgPSBmYWxzZSk7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggNTE5N2Q1YmFlMWFlMzVhYWIwNGYw
Y2I1MGU3NmU5ZDhmYWExOGI3OS4uMzMwOTI3ODdkMTRhZTY1NzNlYTFiOWQxZmQ5YTdkMGVlZTBm
NDAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMjcsMTIgKzI3LDEyIEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQu
aCIKICNpbmNsdWRlICJKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVBvcnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyLmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCw5ICs0MCw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2I7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci11c2luZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBS
ZWZQdHI8TWVzc2FnZVBvcnQ+LCBSZWZQdHI8U2VydmljZVdvcmtlcj4+OwordXNpbmcgTWVzc2Fn
ZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8TWVzc2Fn
ZVBvcnQ+LCBSZWZQdHI8U2VydmljZVdvcmtlcj4+OwogI2Vsc2UKLXVzaW5nIE1lc3NhZ2VFdmVu
dFNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxNZXNzYWdlUG9ydD4+
OwordXNpbmcgTWVzc2FnZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+
LCBSZWZQdHI8TWVzc2FnZVBvcnQ+PjsKICNlbmRpZgogCiBjbGFzcyBNZXNzYWdlRXZlbnQgZmlu
YWwgOiBwdWJsaWMgRXZlbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAppbmRleCAw
MjQzOGZkNGM0N2MzZmMyOTJlYWJmNDdlNWM1ZTgzZjg2OTUwODIyLi5mYTQ4YzhmYTVkYTVmZGMz
ZTBmMmMyZjdlZmJmYTc1Y2Q4ZjU0MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50Lmlk
bApAQCAtMjcsOSArMjcsOSBAQAogICovCiAKICNpZiBkZWZpbmVkKEVOQUJMRV9TRVJWSUNFX1dP
UktFUikgJiYgRU5BQkxFX1NFUlZJQ0VfV09SS0VSCi10eXBlZGVmIChET01XaW5kb3cgb3IgTWVz
c2FnZVBvcnQgb3IgU2VydmljZVdvcmtlcikgTWVzc2FnZUV2ZW50U291cmNlOwordHlwZWRlZiAo
V2luZG93UHJveHkgb3IgTWVzc2FnZVBvcnQgb3IgU2VydmljZVdvcmtlcikgTWVzc2FnZUV2ZW50
U291cmNlOwogI2Vsc2UKLXR5cGVkZWYgKERPTVdpbmRvdyBvciBNZXNzYWdlUG9ydCkgTWVzc2Fn
ZUV2ZW50U291cmNlOwordHlwZWRlZiAoV2luZG93UHJveHkgb3IgTWVzc2FnZVBvcnQpIE1lc3Nh
Z2VFdmVudFNvdXJjZTsKICNlbmRpZgogCiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKaW5k
ZXggYTE0N2UxMjE4YmI2ZTI0ZjJhZDc2NDcwNzQ2MGM2NjcwMjFmNmM1OS4uYzg5NmY4NjMxYTNk
MmJiZGExOTMwNjIxMGZlZGRiODk4NmU0Y2E2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNw
cApAQCAtNDQsMTMgKzQ0LDEzIEBAIFJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNb3VzZUV2ZW50SW5pCiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7
CiB9CiAKLVJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIERPTVdpbmRvdyogdmlldywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldmVudCwgaW50IGRldGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCkKK1JlZjxNb3VzZUV2ZW50
PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBp
bnQgZGV0YWlsLCBOb2RlKiByZWxhdGVkVGFyZ2V0KQogewogICAgIGJvb2wgaXNNb3VzZUVudGVy
T3JMZWF2ZSA9IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2VlbnRlckV2ZW50IHx8IGV2
ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2VsZWF2ZUV2ZW50OwogICAgIGJvb2wgaXNDYW5j
ZWxhYmxlID0gZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCAmJiAhaXNN
b3VzZUVudGVyT3JMZWF2ZTsKICAgICBib29sIGNhbkJ1YmJsZSA9ICFpc01vdXNlRW50ZXJPckxl
YXZlOwogCi0gICAgcmV0dXJuIE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGNhbkJ1YmJs
ZSwgaXNDYW5jZWxhYmxlLCBldmVudC50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1Rp
bWUoKSwgdmlldywKKyAgICByZXR1cm4gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgY2Fu
QnViYmxlLCBpc0NhbmNlbGFibGUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3Rv
bmljVGltZSgpLCBXVEZNb3ZlKHZpZXcpLAogICAgICAgICBkZXRhaWwsIGV2ZW50Lmdsb2JhbFBv
c2l0aW9uKCkueCgpLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLnkoKSwgZXZlbnQucG9zaXRpb24o
KS54KCksIGV2ZW50LnBvc2l0aW9uKCkueSgpLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAg
ICAgICAgIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS54KCksIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS55
KCksCkBAIC01OSwxMyArNTksMTMgQEAgUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWUKICAgICAgICAg
cmVsYXRlZFRhcmdldCwgZXZlbnQuZm9yY2UoKSwgZXZlbnQuc3ludGhldGljQ2xpY2tUeXBlKCkp
OwogfQogCi1SZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGlt
ZSB0aW1lc3RhbXAsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKK1JlZjxNb3VzZUV2ZW50PiBNb3VzZUV2
ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VY
LCBpbnQgcGFnZVksCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBpbnQgbW92ZW1lbnRY
LCBpbnQgbW92ZW1lbnRZLAogI2VuZGlmCiAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwg
Ym9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbnMsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0LCBkb3VibGUgZm9y
Y2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRGF0YVRyYW5zZmVyKiBkYXRh
VHJhbnNmZXIsIGJvb2wgaXNTaW11bGF0ZWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TW91c2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgdmlldywK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2Fu
Y2VsYWJsZSwgdGltZXN0YW1wLCBXVEZNb3ZlKHZpZXcpLAogICAgICAgICBkZXRhaWwsIHsgc2Ny
ZWVuWCwgc2NyZWVuWSB9LCB7IHBhZ2VYLCBwYWdlWSB9LAogI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCiAgICAgICAgIHsgbW92ZW1lbnRYLCBtb3ZlbWVudFkgfSwKQEAgLTczLDE5ICs3MywxOSBA
QCBSZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvbwogICAgICAgICBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHJlbGF0ZWRUYXJnZXQsIGZvcmNlLCBzeW50
aGV0aWNDbGlja1R5cGUsIGRhdGFUcmFuc2ZlciwgaXNTaW11bGF0ZWQpKTsKIH0KIAotUmVmPE1v
dXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBpbnQg
ZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50
WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5
LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVk
IHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCitS
ZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xp
ZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRL
ZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBi
dXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiBy
ZWxhdGVkVGFyZ2V0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQoZXZl
bnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCwgeyBzY3JlZW5YLCBz
Y3JlZW5ZIH0sIHsgY2xpZW50WCwgY2xpZW50WSB9LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHN5bnRoZXRpY0NsaWNrVHlwZSwgcmVsYXRlZFRh
cmdldCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQoZXZlbnRUeXBlLCBj
YW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRldGFpbCwgeyBzY3JlZW5YLCBz
Y3JlZW5ZIH0sIHsgY2xpZW50WCwgY2xpZW50WSB9LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHN5bnRoZXRpY0NsaWNrVHlwZSwgcmVsYXRlZFRh
cmdldCkpOwogfQogCiBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KCkgPSBkZWZhdWx0OwogCi1Nb3Vz
ZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2lu
ZG93KiB2aWV3LCBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNv
bnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKK01vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywg
aW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2lu
dCYgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgY29u
c3QgSW50UG9pbnQmIG1vdmVtZW50RGVsdGEsCiAjZW5kaWYKICAgICAgICAgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9y
dCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFy
Z2V0LCBkb3VibGUgZm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRGF0
YVRyYW5zZmVyKiBkYXRhVHJhbnNmZXIsIGJvb2wgaXNTaW11bGF0ZWQpCi0gICAgOiBNb3VzZVJl
bGF0ZWRFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2
aWV3LCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB3aW5kb3dMb2NhdGlvbiwKKyAgICA6IE1vdXNl
UmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAs
IFdURk1vdmUodmlldyksIGRldGFpbCwgc2NyZWVuTG9jYXRpb24sIHdpbmRvd0xvY2F0aW9uLAog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIG1vdmVtZW50RGVsdGEsCiAjZW5kaWYK
QEAgLTEwMCw4ICsxMDAsOCBAQCBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZQogewogfQogCi1Nb3Vz
ZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGNv
bnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExvY2F0
aW9uLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWdu
ZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCkK
LSAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBNb25vdG9uaWNUaW1lOjpub3coKSwgdmlldywgZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwgeyB9
LAorTW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZp
ZXcsIGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50
UG9pbnQmIGNsaWVudExvY2F0aW9uLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hv
cnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdl
dCogcmVsYXRlZFRhcmdldCkKKyAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2Fu
QnViYmxlLCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwg
ZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwgeyB9LAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAg
ICAgICAgIHsgfSwKICNlbmRpZgpAQCAtMTI3LDEyICsxMjcsMTIgQEAgTW91c2VFdmVudDo6TW91
c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgTW91c2VFdmVudElu
aXQmIGluaXQKIAogTW91c2VFdmVudDo6fk1vdXNlRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQg
TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWws
IGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCit2b2lkIE1vdXNl
RXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBk
ZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZ
LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXks
IHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCiB7CiAg
ICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRV
SUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKTsKKyAgICBp
bml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRl
dGFpbCk7CiAKICAgICBtX3NjcmVlbkxvY2F0aW9uID0gSW50UG9pbnQoc2NyZWVuWCwgc2NyZWVu
WSk7CiAgICAgbV9jdHJsS2V5ID0gY3RybEtleTsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIE1v
dXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgYwogCiAvLyBGSVhNRTogV2UgbmVlZCB0aGlzIHF1aXJrIGJlY2F1c2Ug
aUFkIFByb2R1Y2VyIGlzIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aXRoIGEgcmVsYXRlZFRhcmdl
dCB0aGF0IGlzIG5vdCBhbiBFdmVudFRhcmdldCAocmRhcjovL3Byb2JsZW0vMzA2NDAxMDEpLgog
Ly8gV2Ugc2hvdWxkIHJlbW92ZSB0aGlzIHF1aXJrIHdoZW4gcG9zc2libGUuCi12b2lkIE1vdXNl
RXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmsoRXhlY1N0YXRlJiBzdGF0ZSwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGlu
dCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGll
bnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgSlNWYWx1ZSByZWxhdGVkVGFyZ2V0VmFsdWUpCit2
b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmsoRXhlY1N0YXRlJiBzdGF0ZSwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBp
bnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBKU1ZhbHVlIHJl
bGF0ZWRUYXJnZXRWYWx1ZSkKIHsKICAgICBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCA9IG51
bGxwdHI7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTW91c2VF
dmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayhFeGVjU3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBzCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIH0KICNlbmRpZgotICAgIGluaXRN
b3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCBzY3Jl
ZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBidXR0b24sIHJlbGF0ZWRUYXJnZXQpOworICAgIGluaXRNb3VzZUV2ZW50KHR5
cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCBzY3JlZW5Y
LCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBt
ZXRhS2V5LCBidXR0b24sIHJlbGF0ZWRUYXJnZXQpOwogfQogCiBFdmVudEludGVyZmFjZSBNb3Vz
ZUV2ZW50OjpldmVudEludGVyZmFjZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTW91c2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaAppbmRl
eCAyNmNhZjhmNmIxOTE1MTY2OGI2ODAzNTU0YTBiMDAxNjRkM2UxZmNmLi40YjI4MDc5OTU1YjRj
YjczYTJjZTE2OGViNWExMzlkNzMxNTZhOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKQEAg
LTI5LDE5ICsyOSwyMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhVHJhbnNm
ZXI7CitjbGFzcyBOb2RlOwogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogCiBjbGFzcyBNb3Vz
ZUV2ZW50IDogcHVibGljIE1vdXNlUmVsYXRlZEV2ZW50IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGlt
ZXN0YW1wLCBET01XaW5kb3cqLCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblks
IGludCBwYWdlWCwgaW50IHBhZ2VZLAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW91
c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgs
IGludCBwYWdlWSwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBpbnQgbW92ZW1l
bnRYLCBpbnQgbW92ZW1lbnRZLAogI2VuZGlmCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCwgZG91
YmxlIGZvcmNlLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIERhdGFUcmFuc2Zl
ciogPSBudWxscHRyLCBib29sIGlzU2ltdWxhdGVkID0gZmFsc2UpOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGludCBkZXRh
aWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGludCBkZXRhaWwsIE5v
ZGUqIHJlbGF0ZWRUYXJnZXQpOwogCi0gICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwg
aW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29s
IHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQg
c2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRh
cmdldCogcmVsYXRlZFRhcmdldCk7CisgICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5
cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KTsKIAogICAgIHN0YXRpYyBSZWY8TW91c2VF
dmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZl
bnQpOyB9CiAKQEAgLTQ5LDggKzUwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+TW91c2VF
dmVudCgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0TW91c2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdp
bmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgs
IGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBi
b29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRU
YXJnZXQpOwotICAgIHZvaWQgaW5pdE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4ZWNTdGF0ZSYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3Jl
ZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0
IGJ1dHRvbiwgSlNDOjpKU1ZhbHVlIHJlbGF0ZWRUYXJnZXQpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgaW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRhaWws
IGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpOworICAgIHZvaWQg
aW5pdE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4ZWNTdGF0ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LCBKU0M6OkpTVmFsdWUgcmVsYXRlZFRhcmdldCk7CiAKICAgICB1bnNpZ25lZCBzaG9ydCBidXR0
b24oKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbjsgfQogICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRv
bnMoKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbnM7IH0KQEAgLTcwLDcgKzcxLDcgQEAgcHVibGlj
OgogICAgIGludCB3aGljaCgpIGNvbnN0IGZpbmFsOwogCiBwcm90ZWN0ZWQ6Ci0gICAgTW91c2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqLAorICAgIE1vdXNlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAogICAg
ICAgICBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IElu
dFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAg
ICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKQEAgLTc4LDcgKzc5LDcgQEAgcHJvdGVj
dGVkOgogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBi
b29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
cywKICAgICAgICAgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwgdW5z
aWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIqLCBib29sIGlzU2lt
dWxhdGVkKTsKIAotICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLAorICAgIE1vdXNlRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxl
LCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IEludFBv
aW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExvY2F0aW9uLAogICAg
ICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksCiAgICAgICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
cywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRl
ZFRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwKaW5kZXggMGJlMGY4OGRkMzVkN2Nk
ZmI4ZDM1NDJkYWRlMTZlMzI5NGZkYzgzYS4uNjBjNDQ2NjY3MWYwNjE5ZmVlMDlkMGYwMTkzZjlh
NDFmNmIzZTgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmlkbApAQCAtNDMsNyArNDMsNyBA
QAogICAgIC8vIEZJWE1FOiByZWxhdGVkVGFyZ2V0IHNob3VsZCBiZSBvZiB0eXBlIEV2ZW50VGFy
Z2V0PyBidXQgd2UgbmVlZCB0byB1c2UgYW55IHRvIHN1cHBvcnQgYSBxdWlyayBmb3IgaUFkIFBy
b2R1Y2VyIChyZGFyOi8vcHJvYmxlbS8zMDY0MDEwMSkuCiAgICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlJlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9aW5pdE1vdXNlRXZlbnRR
dWlya10gdm9pZCBpbml0TW91c2VFdmVudChvcHRpb25hbCBET01TdHJpbmcgdHlwZSA9ICJ1bmRl
ZmluZWQiLAogICAgICAgICBvcHRpb25hbCBib29sZWFuIGNhbkJ1YmJsZSA9IGZhbHNlLCBvcHRp
b25hbCBib29sZWFuIGNhbmNlbGFibGUgPSBmYWxzZSwKLSAgICAgICAgb3B0aW9uYWwgRE9NV2lu
ZG93PyB2aWV3ID0gbnVsbCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAwLAorICAgICAgICBvcHRp
b25hbCBXaW5kb3dQcm94eT8gdmlldyA9IG51bGwsIG9wdGlvbmFsIGxvbmcgZGV0YWlsID0gMCwK
ICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5Z
ID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRYID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRZID0g
MCwKICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJv
b2xlYW4gYWx0S2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwg
b3B0aW9uYWwgYm9vbGVhbiBtZXRhS2V5ID0gZmFsc2UsCiAgICAgICAgIG9wdGlvbmFsIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiA9IDAsIG9wdGlvbmFsIGFueSByZWxhdGVkVGFyZ2V0ID0gbnVsbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAppbmRleCA4NTM3MTRkNmFi
MWYwMWU4YTVlYWNlMGQwZTQzOTc1ZWIzZDU4NDlmLi44MGE4MjY3ZGMyMWJkOGIzYmY1MTgzMGZl
NGIzMGE0MmE2MTIwMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxh
dGVkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5j
cHAKQEAgLTMyLDEzICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1vdXNlUmVs
YXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3Rh
bXAsIERPTVdpbmRvdyogRE9NV2luZG93LAorTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRl
ZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRldGFp
bCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93
TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKICNlbmRpZgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgYm9vbCBpc1NpbXVsYXRlZCkKLSAg
ICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUs
IHRpbWVzdGFtcCwgRE9NV2luZG93LCBkZXRhaWwsIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXks
IG1ldGFLZXksIGZhbHNlLCBmYWxzZSkKKyAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRU
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgV1RGTW92ZSh2aWV3KSwgZGV0
YWlsLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBmYWxzZSwgZmFsc2UpCiAg
ICAgLCBtX3NjcmVlbkxvY2F0aW9uKHNjcmVlbkxvY2F0aW9uKQogI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCiAgICAgLCBtX21vdmVtZW50RGVsdGEobW92ZW1lbnREZWx0YSkKQEAgLTYxLDcgKzYx
LDcgQEAgTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBjb25zdCBNb3VzZVIKIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6Omlu
aXQoYm9vbCBpc1NpbXVsYXRlZCwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uKQogewog
ICAgIGlmICghaXNTaW11bGF0ZWQpIHsKLSAgICAgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZy
YW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSkgeworICAgICAgICBpZiAoYXV0byogZnJhbWVW
aWV3ID0gZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpIHsKICAgICAgICAgICAgIEZs
b2F0UG9pbnQgYWJzb2x1dGVQb2ludCA9IGZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyh3aW5k
b3dMb2NhdGlvbik7CiAgICAgICAgICAgICBGbG9hdFBvaW50IGRvY3VtZW50UG9pbnQgPSBmcmFt
ZVZpZXctPmFic29sdXRlVG9Eb2N1bWVudFBvaW50KGFic29sdXRlUG9pbnQpOwogICAgICAgICAg
ICAgbV9wYWdlTG9jYXRpb24gPSBmbG9vcmVkTGF5b3V0UG9pbnQoZG9jdW1lbnRQb2ludCk7CkBA
IC04MywxMyArODMsMTMgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVz
KCkKICAgICBtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb24gPSBmYWxzZTsKIH0KIAotRnJhbWVW
aWV3KiBNb3VzZVJlbGF0ZWRFdmVudDo6ZnJhbWVWaWV3RnJvbURPTVdpbmRvdyhET01XaW5kb3cq
IHdpbmRvdykKK0ZyYW1lVmlldyogTW91c2VSZWxhdGVkRXZlbnQ6OmZyYW1lVmlld0Zyb21XaW5k
b3dQcm94eShXaW5kb3dQcm94eSogd2luZG93UHJveHkpCiB7Ci0gICAgYXV0byogZnJhbWUgPSB3
aW5kb3cgPyB3aW5kb3ctPmZyYW1lKCkgOiBudWxscHRyOwotICAgIGlmICghZnJhbWUpCisgICAg
aWYgKCF3aW5kb3dQcm94eSB8fCAhaXM8RE9NV2luZG93Pih3aW5kb3dQcm94eS0+d2luZG93KCkp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBmcmFtZS0+dmlldygpOwor
ICAgIGF1dG8qIGZyYW1lID0gZG93bmNhc3Q8RE9NV2luZG93Pigqd2luZG93UHJveHktPndpbmRv
dygpKS5mcmFtZSgpOworICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT52aWV3KCkgOiBudWxscHRy
OwogfQogCiBMYXlvdXRQb2ludCBNb3VzZVJlbGF0ZWRFdmVudDo6cGFnZVBvaW50VG9DbGllbnRQ
b2ludChMYXlvdXRQb2ludCBwYWdlUG9pbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQpAQCAtMTEz
LDcgKzExMyw3IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGluYXRlcyhjb25z
dCBMYXlvdXRQb2ludCYgY2xpZW50TG9jYXRpb24pCiAgICAgLy8gU2V0IHVwIGluaXRpYWwgdmFs
dWVzIGZvciBjb29yZGluYXRlcy4KICAgICAvLyBDb3JyZWN0IHZhbHVlcyBhcmUgY29tcHV0ZWQg
bGF6aWx5LCBzZWUgY29tcHV0ZVJlbGF0aXZlUG9zaXRpb24uCiAgICAgRmxvYXRTaXplIGRvY3Vt
ZW50VG9DbGllbnRPZmZzZXQ7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zy
b21ET01XaW5kb3codmlldygpKSkKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3
RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpCiAgICAgICAgIGRvY3VtZW50VG9DbGllbnRPZmZzZXQg
PSBmcmFtZVZpZXctPmRvY3VtZW50VG9DbGllbnRPZmZzZXQoKTsKIAogICAgIG1fY2xpZW50TG9j
YXRpb24gPSBjbGllbnRMb2NhdGlvbjsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIE1vdXNlUmVs
YXRlZEV2ZW50Ojppbml0Q29vcmRpbmF0ZXMoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudExvY2F0
aW9uKQogCiBmbG9hdCBNb3VzZVJlbGF0ZWRFdmVudDo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVG
YWN0b3IoKSBjb25zdAogewotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9t
RE9NV2luZG93KHZpZXcoKSkpCisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zy
b21XaW5kb3dQcm94eSh2aWV3KCkpKQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5kb2N1bWVu
dFRvQWJzb2x1dGVTY2FsZUZhY3RvcigpOwogCiAgICAgcmV0dXJuIDE7CkBAIC0xMzYsNyArMTM2
LDcgQEAgZmxvYXQgTW91c2VSZWxhdGVkRXZlbnQ6OmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFj
dG9yKCkgY29uc3QKIAogdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVBhZ2VMb2NhdGlv
bigpCiB7Ci0gICAgbV9hYnNvbHV0ZUxvY2F0aW9uID0gcGFnZVBvaW50VG9BYnNvbHV0ZVBvaW50
KG1fcGFnZUxvY2F0aW9uLCBmcmFtZVZpZXdGcm9tRE9NV2luZG93KHZpZXcoKSkpOworICAgIG1f
YWJzb2x1dGVMb2NhdGlvbiA9IHBhZ2VQb2ludFRvQWJzb2x1dGVQb2ludChtX3BhZ2VMb2NhdGlv
biwgZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpOwogfQogCiB2b2lkIE1vdXNlUmVs
YXRlZEV2ZW50OjpyZWNlaXZlZFRhcmdldCgpCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBNb3Vz
ZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVJlbGF0aXZlUG9zaXRpb24oKQogICAgIAogRmxvYXRQb2lu
dCBNb3VzZVJlbGF0ZWRFdmVudDo6bG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSBjb25z
dAogewotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9tRE9NV2luZG93KHZp
ZXcoKSkpCisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21XaW5kb3dQcm94
eSh2aWV3KCkpKQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5jb250ZW50c1RvUm9vdFZpZXco
cm91bmRlZEludFBvaW50KG1fYWJzb2x1dGVMb2NhdGlvbikpOwogCiAgICAgcmV0dXJuIG1fYWJz
b2x1dGVMb2NhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0
ZWRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKaW5kZXgg
MGQ4M2MzNjA5ZjcxZWFmZWYyMTcxYTljZDBkNDMxYWU2ZDg1NGY4Yi4uYWQ0ZTVkMGMzNTZmNTQx
ZTA4MmUxMWEyNmEyZDBjYzExNWZkNTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L01vdXNlUmVsYXRlZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRl
ZEV2ZW50LmgKQEAgLTY3LDE0ICs2NywxNCBAQCBwdWJsaWM6CiAgICAgLy8gdXNhYmxlIHdpdGgg
UmVuZGVyT2JqZWN0OjphYnNvbHV0ZVRvTG9jYWwpLgogICAgIGNvbnN0IExheW91dFBvaW50JiBh
YnNvbHV0ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZUxvY2F0aW9uOyB9CiAg
ICAgCi0gICAgc3RhdGljIEZyYW1lVmlldyogZnJhbWVWaWV3RnJvbURPTVdpbmRvdyhET01XaW5k
b3cqKTsKKyAgICBzdGF0aWMgRnJhbWVWaWV3KiBmcmFtZVZpZXdGcm9tV2luZG93UHJveHkoV2lu
ZG93UHJveHkqKTsKIAogICAgIHN0YXRpYyBMYXlvdXRQb2ludCBwYWdlUG9pbnRUb0NsaWVudFBv
aW50KExheW91dFBvaW50IHBhZ2VQb2ludCwgRnJhbWVWaWV3Kik7CiAgICAgc3RhdGljIExheW91
dFBvaW50IHBhZ2VQb2ludFRvQWJzb2x1dGVQb2ludChMYXlvdXRQb2ludCBwYWdlUG9pbnQsIEZy
YW1lVmlldyopOwogCiBwcm90ZWN0ZWQ6CiAgICAgTW91c2VSZWxhdGVkRXZlbnQoKSA9IGRlZmF1
bHQ7Ci0gICAgTW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9N
V2luZG93KiwKKyAgICBNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1w
LCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IEludFBv
aW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAogI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIGNvbnN0IEludFBvaW50JiBtb3ZlbWVudERl
bHRhLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDRiMWU4NzI1Nzk1MzNmYmY3ODcxMmZkNmQyM2QyYzgx
NWIwM2ViMzguLmM5MTkwN2NkZDRhNDhiMTcyZWEzYTJkZWUxZTg4MDc4MGJlNWRlMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDb21wb3NlZFRyZWVBbmNl
c3Rvckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKICNp
bmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIKICNp
bmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaW11bGF0ZWRDbGljay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltdWxhdGVkQ2xpY2su
Y3BwCmluZGV4IGUwZjRlMzUyZWNhMThkY2RjODU5MjQ5MmVjNTA4NDI5MjhhYjY1NzQuLjQxN2U5
MDdiZjI4ODFiNmE4N2Y2MWQ2MDkxNmI2N2U2OGViOWMxMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Np
bXVsYXRlZENsaWNrLmNwcApAQCAtMzcsMTQgKzM3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgU2ltdWxhdGVkTW91c2VFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWV3LCBSZWZQdHI8RXZlbnQ+
JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQsIFNpbXVsYXRlZENsaWNrU291cmNl
IHNvdXJjZSkKKyAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIFJl
ZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVk
Q2xpY2tTb3VyY2Ugc291cmNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2ltdWxhdGVkTW91c2VFdmVudChldmVudFR5cGUsIHZpZXcsIFdURk1vdmUodW5kZXJseWluZ0V2
ZW50KSwgdGFyZ2V0LCBzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2lt
dWxhdGVkTW91c2VFdmVudChldmVudFR5cGUsIFdURk1vdmUodmlldyksIFdURk1vdmUodW5kZXJs
eWluZ0V2ZW50KSwgdGFyZ2V0LCBzb3VyY2UpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU2lt
dWxhdGVkTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93
KiB2aWV3LCBSZWZQdHI8RXZlbnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQs
IFNpbXVsYXRlZENsaWNrU291cmNlIHNvdXJjZSkKLSAgICAgICAgOiBNb3VzZUV2ZW50KGV2ZW50
VHlwZSwgdHJ1ZSwgdHJ1ZSwgdW5kZXJseWluZ0V2ZW50ID8gdW5kZXJseWluZ0V2ZW50LT50aW1l
U3RhbXAoKSA6IE1vbm90b25pY1RpbWU6Om5vdygpLCB2aWV3LCAwLCB7IH0sIHsgfSwKKyAgICBT
aW11bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgUmVmUHRyPEV2ZW50PiYmIHVuZGVybHlpbmdFdmVudCwgRWxl
bWVudCYgdGFyZ2V0LCBTaW11bGF0ZWRDbGlja1NvdXJjZSBzb3VyY2UpCisgICAgICAgIDogTW91
c2VFdmVudChldmVudFR5cGUsIHRydWUsIHRydWUsIHVuZGVybHlpbmdFdmVudCA/IHVuZGVybHlp
bmdFdmVudC0+dGltZVN0YW1wKCkgOiBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3
KSwgMCwgeyB9LCB7IH0sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgICAgIHsg
fSwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAppbmRleCBiZDAyNGVhNTVmNmJhODRl
MzJjOTA0NDZmY2JmODI4MjA0ZDJjMzBjLi5iMDk0NDkzYzFmODU1ODQ5ODg5M2MyY2I3YzBkMDc0
NmI2YWI1YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcApAQCAtMzgsMjkgKzM4LDI5IEBA
IFJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRleHRFdmVudCk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVu
dDo6Y3JlYXRlKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJ
bnB1dFR5cGUgaW5wdXRUeXBlKQorUmVmPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGUoUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5w
dXRUeXBlIGlucHV0VHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQo
dmlldywgZGF0YSwgaW5wdXRUeXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2
ZW50KFdURk1vdmUodmlldyksIGRhdGEsIGlucHV0VHlwZSkpOwogfQogCi1SZWY8VGV4dEV2ZW50
PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKERPTVdpbmRvdyogdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSkKK1JlZjxUZXh0RXZlbnQ+
IFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYm
IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KHZpZXcsIGRhdGEsIDAsIHNob3VsZFNt
YXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1
b3RlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdURk1vdmUodmlldyks
IGRhdGEsIDAsIHNob3VsZFNtYXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxp
bmc6OlJlc3BlY3RCbG9ja3F1b3RlKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6
Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiYmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNo
U3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKK1Jl
ZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBz
aG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVI
YW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFRleHRFdmVudCh2aWV3LCBlbXB0eVN0cmluZygpLCBXVEZNb3ZlKGRhdGEpLCBzaG91bGRT
bWFydFJlcGxhY2UsIHNob3VsZE1hdGNoU3R5bGUsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZW1wdHlT
dHJpbmcoKSwgV1RGTW92ZShkYXRhKSwgc2hvdWxkU21hcnRSZXBsYWNlLCBzaG91bGRNYXRjaFN0
eWxlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRF
dmVudDo6Y3JlYXRlRm9yRHJvcChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkK
K1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFRleHRFdmVudCh2aWV3LCBkYXRhLCBUZXh0RXZlbnRJbnB1dERyb3ApKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZGF0YSwgVGV4dEV2ZW50
SW5wdXREcm9wKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRGlj
dGF0aW9uKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8
RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCitSZWY8VGV4dEV2
ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3RhdGlvbihSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRp
dmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VGV4dEV2ZW50KHZpZXcsIGRhdGEsIGRpY3RhdGlvbkFsdGVybmF0aXZlcykpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRleHRFdmVudChXVEZNb3ZlKHZpZXcpLCBkYXRhLCBkaWN0YXRpb25B
bHRlcm5hdGl2ZXMpKTsKIH0KIAogVGV4dEV2ZW50OjpUZXh0RXZlbnQoKQpAQCAtNzEsOCArNzEs
OCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudCgpCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50
KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUg
aW5wdXRUeXBlKQotICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRy
dWUsIHRydWUsIHZpZXcsIDApCitUZXh0RXZlbnQ6OlRleHRFdmVudChSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRU
eXBlKQorICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRy
dWUsIFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAg
LCBtX2RhdGEoZGF0YSkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtODEs
OCArODEsOCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0
cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlIGlucAogewogfQogCi1UZXh0RXZlbnQ6OlRl
eHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwg
Ym9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1
b3RlSGFuZGxpbmcpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwg
dHJ1ZSwgdHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxk
TWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5n
KQorICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUs
IFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShUZXh0RXZlbnRJbnB1dFBhc3Rl
KQogICAgICwgbV9kYXRhKGRhdGEpCiAgICAgLCBtX3Bhc3RpbmdGcmFnbWVudChXVEZNb3ZlKHBh
c3RpbmdGcmFnbWVudCkpCkBAIC05Miw4ICs5Miw4IEBAIFRleHRFdmVudDo6VGV4dEV2ZW50KERP
TVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
CiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3Ry
aW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25B
bHRlcm5hdGl2ZXMpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwg
dHJ1ZSwgdHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25B
bHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcykKKyAgICA6IFVJRXZlbnQoZXZlbnRO
YW1lcygpLnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0cnVlLCBXVEZNb3ZlKHZpZXcpLCAwKQogICAg
ICwgbV9pbnB1dFR5cGUoVGV4dEV2ZW50SW5wdXREaWN0YXRpb24pCiAgICAgLCBtX2RhdGEoZGF0
YSkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtMTA1LDEyICsxMDUsMTIg
QEAgVGV4dEV2ZW50OjpUZXh0RXZlbnQoRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRh
dGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb24KIAogVGV4dEV2ZW50Ojp+VGV4dEV2ZW50KCkgPSBk
ZWZhdWx0OwogCi12b2lkIFRleHRFdmVudDo6aW5pdFRleHRFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmll
dywgY29uc3QgU3RyaW5nJiBkYXRhKQordm9pZCBUZXh0RXZlbnQ6OmluaXRUZXh0RXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIGlm
IChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbml0VUlFdmVu
dCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAgICBt
X2lucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQu
aAppbmRleCAyOWViMjZkMGUwNzRiNTRkMzQ2MzU2MDQyODBkMTJhNjk4OGFmOGRhLi4wYWUyYWM4
NjNmYjgxYmJiMjg2Mzg1MTY1YjZiMTI1MWQyZGZiMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGV4dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5o
CkBAIC0zOCwxNiArMzgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgVGV4
dEV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZShET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEs
IFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOworICAgICAgICBz
dGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlKFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3Qg
U3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJk
KTsKICAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7Ci0g
ICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShET01X
aW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKLSAg
ICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoRE9NV2lu
ZG93KiwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJl
cGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0g
ICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEcm9wKERPTVdpbmRvdyosIGNv
bnN0IFN0cmluZyYgZGF0YSk7Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVG
b3JEaWN0YXRpb24oRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8
RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgICAgICBz
dGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRv
d1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsK
KyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoUmVm
UHRyPFdpbmRvd1Byb3h5PiYmLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBkYXRhLCBib29s
IHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90
ZUhhbmRsaW5nKTsKKyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRyb3Ao
UmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBzdGF0
aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yRGljdGF0aW9uKFJlZlB0cjxXaW5kb3dQcm94eT4m
JiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+
JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogCiAgICAgICAgIHZpcnR1YWwgflRleHRFdmVudCgp
OwogICAgIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRUZXh0RXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01X
aW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0
YSk7CiAgICAgCiAgICAgICAgIFN0cmluZyBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9
CiAKQEAgLTcxLDkgKzcxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAg
ICAgICAgIFRleHRFdmVudCgpOwogCi0gICAgICAgIFRleHRFdmVudChET01XaW5kb3cqLCBjb25z
dCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9h
cmQpOwotICAgICAgICBUZXh0RXZlbnQoRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wg
c2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0gICAgICAgIFRleHRF
dmVudChET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRp
b25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgICAgIFRleHRFdmVu
dChSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5w
dXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7CisgICAgICAgIFRleHRFdmVudChSZWZQ
dHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+JiYsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUs
IE1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBUZXh0RXZlbnQoUmVmUHRyPFdpbmRv
d1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRl
cm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAKICAgICAgICAgYm9vbCBpc1RleHRF
dmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCmluZGV4IDM2
NDA2NWZhODJkNDE4OTljMGM1MjMyNTBjMmYyNzk5NzcwZDNlMGUuLmNlOGIzMGFjYjNjNzFmZmRm
ODI4YjIxODEwNjVhYWExZjhhMTI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0RXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCkBAIC0z
Miw3ICszMiw3IEBAIGludGVyZmFjZSBUZXh0RXZlbnQgOiBVSUV2ZW50IHsKICAgICB2b2lkIGlu
aXRUZXh0RXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZpbmVkIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGVBcmcgPSBmYWxz
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlQXJn
ID0gZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmll
d0FyZyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFdpbmRvd1Byb3h5
PyB2aWV3QXJnID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3Ry
aW5nIGRhdGFBcmcgPSAidW5kZWZpbmVkIik7CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVG91Y2hFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5j
cHAKaW5kZXggNjFjMDhmMjFkYTM4YmFhN2ExMTBmMjJkY2E2YTU3YmU5M2I2ODNlNy4uMDAyMzdj
ZGFkNTY4Mzc5NTJkOTNhOTdkZTI2YTk5ZTllYWZjMzkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2
ZW50LmNwcApAQCAtMzgsOSArMzgsOSBAQCBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KCkgPSBkZWZh
dWx0OwogCiBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91Y2hM
aXN0KiB0YXJnZXRUb3VjaGVzLAogICAgICAgICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzLCBj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICBET01XaW5kb3cqIHZpZXcsIGludCBz
Y3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAgICAgIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdl
WCwgaW50IHBhZ2VZLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXkpCi0gICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVl
LCB0cnVlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgdmlldywgMCwgSW50UG9pbnQoc2NyZWVuWCwg
c2NyZWVuWSksCisgICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCBNb25v
dG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwgMCwgSW50UG9pbnQoc2NyZWVuWCwgc2Ny
ZWVuWSksCiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChwYWdlWCwgcGFnZVkpLAog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2lu
dCgwLCAwKSwKQEAgLTY0LDEzICs2NCwxMyBAQCBUb3VjaEV2ZW50Ojp+VG91Y2hFdmVudCgpID0g
ZGVmYXVsdDsKIAogdm9pZCBUb3VjaEV2ZW50Ojppbml0VG91Y2hFdmVudChUb3VjaExpc3QqIHRv
dWNoZXMsIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywKICAgICAgICAgVG91Y2hMaXN0KiBjaGFu
Z2VkVG91Y2hlcywgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAKLSAgICAgICAgRE9NV2luZG93
KiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50
WSwKKyAgICAgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBzY3JlZW5YLCBpbnQg
c2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLAogICAgICAgICBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAgICAgaWYgKGlz
QmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRVSUV2ZW50KHR5
cGUsIHRydWUsIHRydWUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIHRydWUsIHRy
dWUsIFdURk1vdmUodmlldyksIDApOwogCiAgICAgbV90b3VjaGVzID0gdG91Y2hlczsKICAgICBt
X3RhcmdldFRvdWNoZXMgPSB0YXJnZXRUb3VjaGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1RvdWNoRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKaW5k
ZXggZDMzOWMwYjcyYjEzZDQ1NWE1ZTAzODY2ZTU1NzIwY2NmNmJmMWVkYi4uODVmYTE2MWYyMTk2
ZDNmMmEwNWQ5YTMxYTExN2IwYTFhZjg2NmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RvdWNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCkBA
IC00MSwxMiArNDEsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxUb3VjaEV2ZW50PiBj
cmVhdGUoVG91Y2hMaXN0KiB0b3VjaGVzLCAKICAgICAgICAgICAgIFRvdWNoTGlzdCogdGFyZ2V0
VG91Y2hlcywgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgCi0gICAgICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIERPTVdpbmRvdyogdmlldywKKyAgICAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgICAgICAg
ICBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogICAgICAg
ICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRh
S2V5KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVG91Y2hFdmVudCh0b3Vj
aGVzLCB0YXJnZXRUb3VjaGVzLCBjaGFuZ2VkVG91Y2hlcywKLSAgICAgICAgICAgICAgICB0eXBl
LCB2aWV3LCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksCisgICAgICAgICAgICAgICAg
dHlwZSwgV1RGTW92ZSh2aWV3KSwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLAogICAg
ICAgICAgICAgICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpKTsKICAgICB9
CiAgICAgc3RhdGljIFJlZjxUb3VjaEV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBAIC02Nyw3
ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0
b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3Qq
IGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICAgICAg
RE9NV2luZG93KiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLAorICAgICAgICAgICAgUmVmUHRy
PFdpbmRvd1Byb3h5PiYmLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksCiAgICAgICAgICAgICBp
bnQgY2xpZW50WCwgaW50IGNsaWVudFksCiAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wg
YWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogCkBAIC04Nyw3ICs4Nyw3IEBA
IHByaXZhdGU6CiAgICAgVG91Y2hFdmVudCgpOwogICAgIFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0
b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3Qq
IGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsCi0gICAgICAgICAgICBE
T01XaW5kb3cqLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwKKyAgICAgICAg
ICAgIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQg
cGFnZVgsCiAgICAgICAgICAgICBpbnQgcGFnZVksCiAgICAgICAgICAgICBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogICAgIFRvdWNoRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVG91Y2hFdmVudC5pZGwKaW5kZXggODEwNTgzNTdlZDNhYTc3NzRkMjZmYWZhZTE2MDNiMTVk
ZGUwZDYwYi4uNTRlOTlkYjQ4MzBmMzBkNDYyNjQyZTMzZDQzOTU2OTNiMTNmMmIwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ub3VjaEV2ZW50LmlkbApAQCAtNDAsNyArNDAsNyBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgb3B0aW9uYWwgVG91Y2hMaXN0PyB0YXJnZXRUb3VjaGVzID0gbnVsbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFRvdWNoTGlzdD8gY2hhbmdlZFRvdWNoZXMgPSBu
dWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAi
dW5kZWZpbmVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8g
dmlldyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94
eT8gdmlldyA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBsb25nIHNj
cmVlblggPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5Z
ID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGxvbmcgY2xpZW50WCA9IDAs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVUlFdmVudC5jcHAKaW5kZXggYWIyMGVlY2I5YzU4MzFkZWYwMjc5Y2E3OGEwZTdj
YzVmYTg1NjIxNy4uMGE2ZjgxYWY1MjM3MTZmNzU4MTc4ZjBmOTUzNDRjZGM2NTViODAwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50LmNwcApAQCAtMzIsMTYgKzMyLDE2IEBAIFVJRXZlbnQ6OlVJRXZlbnQo
KQogewogfQogCi1VSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBET01XaW5kb3cqIHZpZXdB
cmcsIGludCBkZXRhaWxBcmcpCitVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50
VHlwZSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnKQotICAgICwgbV92aWV3KHZpZXdBcmcp
CisgICAgLCBtX3ZpZXcoV1RGTW92ZSh2aWV3QXJnKSkKICAgICAsIG1fZGV0YWlsKGRldGFpbEFy
ZykKIHsKIH0KIAotVUlFdmVudDo6VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgTW9ub3RvbmljVGltZSB0
aW1lc3RhbXAsIERPTVdpbmRvdyogdmlld0FyZywgaW50IGRldGFpbEFyZykKK1VJRXZlbnQ6OlVJ
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlQXJnLCBi
b29sIGNhbmNlbGFibGVBcmcsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwg
Y2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCB0aW1lc3RhbXApCi0gICAgLCBtX3ZpZXcodmll
d0FyZykKKyAgICAsIG1fdmlldyhXVEZNb3ZlKHZpZXdBcmcpKQogICAgICwgbV9kZXRhaWwoZGV0
YWlsQXJnKQogewogfQpAQCAtNTUsNyArNTUsNyBAQCBVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBVSUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIsCiAK
IFVJRXZlbnQ6On5VSUV2ZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFVJRXZlbnQ6OmluaXRVSUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZUFyZywgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wg
Y2FuY2VsYWJsZUFyZywgRE9NV2luZG93KiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQordm9pZCBV
SUV2ZW50Ojppbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVBcmcsIGJvb2wgY2Fu
QnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVBcmcsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3
QXJnLCBpbnQgZGV0YWlsQXJnKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaAppbmRleCBiYWE3MzFmY2Y4MWVlYmFmMjMxNTNk
YTUxYmEwYWVhZmQyNDU1ZmFjLi41MGYyZDE3NzE5OTQyZTQ3M2ZkZWM5YjFhODg0ODYwNTkzY2Qx
OWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmgKQEAgLTIzLDIwICsyMywyMCBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVk
ZSAiVUlFdmVudEluaXQuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIG5vIG9uZSBpcyBkZXBlbmRp
bmcgb24gaXQgYW55bW9yZS4KLXR5cGVkZWYgRE9NV2luZG93IEFic3RyYWN0VmlldzsKK3R5cGVk
ZWYgV2luZG93UHJveHkgQWJzdHJhY3RWaWV3OwogCiBjbGFzcyBVSUV2ZW50IDogcHVibGljIEV2
ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRv
dyogdmlldywgaW50IGRldGFpbCkKKyAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZp
ZXcsIGRldGFpbCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKSk7CiAgICAgfQog
ICAgIHN0YXRpYyBSZWY8VUlFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHsKQEAgLTQ4
LDkgKzQ4LDkgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5VSUV2ZW50KCk7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFp
bCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiwgaW50IGRldGFpbCk7CiAKLSAgICBET01XaW5kb3cqIHZpZXcoKSBjb25zdCB7IHJl
dHVybiBtX3ZpZXcuZ2V0KCk7IH0KKyAgICBXaW5kb3dQcm94eSogdmlldygpIGNvbnN0IHsgcmV0
dXJuIG1fdmlldy5nZXQoKTsgfQogICAgIGludCBkZXRhaWwoKSBjb25zdCB7IHJldHVybiBtX2Rl
dGFpbDsgfQogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVy
cmlkZTsKQEAgLTY1LDE0ICs2NSwxNCBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVSUV2
ZW50KCk7Ci0gICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwpOwotICAgIFVJRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7Cisg
ICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCk7CisgICAgVUlF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGlu
dCBkZXRhaWwpOwogICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVUlFdmVu
dEluaXQmLCBJc1RydXN0ZWQpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNVSUV2ZW50KCkgY29u
c3QgZmluYWw7CiAKLSAgICBSZWZQdHI8RE9NV2luZG93PiBtX3ZpZXc7CisgICAgUmVmUHRyPFdp
bmRvd1Byb3h5PiBtX3ZpZXc7CiAgICAgaW50IG1fZGV0YWlsOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZl
bnQuaWRsCmluZGV4IDg3YjM5MTUyODMwMzE5N2UzNmM2NGMxZTcwOGZmYjYwY2JhZDk1MDMuLjZh
MzVjNTdhMzg3NGJjOGVjNjNkNmQ5MjRkNDI4YjJiNTgxMDBmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVu
dC5pZGwKQEAgLTIwLDExICsyMCwxMSBAQAogWwogICAgIENvbnN0cnVjdG9yKERPTVN0cmluZyB0
eXBlLCBvcHRpb25hbCBVSUV2ZW50SW5pdCBldmVudEluaXREaWN0KQogXSBpbnRlcmZhY2UgVUlF
dmVudCA6IEV2ZW50IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IHZpZXc7Cisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHZpZXc7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgZGV0YWlsOwogICAgIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVk
IiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICB2b2lkIGluaXRVSUV2
ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIGJvb2xl
YW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZhbHNl
LCBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBsb25nIGRldGFpbCA9
IDApOworICAgIHZvaWQgaW5pdFVJRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5k
ZWZpbmVkIiwgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGUgPSBmYWxzZSwgb3B0aW9uYWwgYm9v
bGVhbiBjYW5jZWxhYmxlID0gZmFsc2UsIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVs
bCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAwKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBs
b25nIGxheWVyWDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsYXllclk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9VSUV2ZW50SW5pdC5oCmluZGV4IDAzMTZiYzA2ZjU2OGU1MzkxNmRmNjk2ZjQxNDQ1YmE5ZmMz
MWZmMzYuLmUxMTI4YTc2ZGU1ODYwMTYyZmE5NzZkY2RjODI3MTcwZDhmMmYzYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9VSUV2ZW50SW5pdC5oCkBAIC0yNSwxNCArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudEluaXQuaCIKKyNpbmNsdWRl
ICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdHJ1Y3QgVUlFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKLSAgICBS
ZWZQdHI8RE9NV2luZG93PiB2aWV3OworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gdmlldzsKICAg
ICBpbnQgZGV0YWlsIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1VJRXZlbnRJbml0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5pZGwKaW5k
ZXggMGQ3ZWI4ZWZjMWM1MzdhOTA1MTE3YjYxMjExMWFkMDFlYjFlMGFhMi4uM2NjYmJlZDYwNzU1
ZjZmMjE2NTJmNWJhNjFlNmYzODI0MGMxN2ZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1VJRXZlbnRJbml0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQu
aWRsCkBAIC0yNCw2ICsyNCw2IEBACiAgKi8KIAogZGljdGlvbmFyeSBVSUV2ZW50SW5pdCA6IEV2
ZW50SW5pdCB7Ci0gICAgRE9NV2luZG93PyB2aWV3ID0gbnVsbDsKKyAgICBXaW5kb3dQcm94eT8g
dmlldyA9IG51bGw7CiAgICAgbG9uZyBkZXRhaWwgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VUlFdmVudFdpdGhLZXlTdGF0ZS5oCmluZGV4IDBhOGU0MDMxMjQ4ZDZmNzI2NTQ0MmU1YmY4MDAx
MmJhMzBjY2NkZWIuLjA4NWEwMzE3ZWM4ZGNlM2E2MGZlMjZhZmE1YTE2MmVhMmE5YTA1MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaApAQCAtNDAsOCArNDAsOCBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgVUlFdmVudFdpdGhLZXlTdGF0ZSgpID0gZGVmYXVs
dDsKIAotICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRh
aWwsIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtl
eSkKLSAgICAgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywg
ZGV0YWlsKQorICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywgaW50IGRldGFpbCwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtl
eSwgYm9vbCBtZXRhS2V5KQorICAgICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxL
ZXkpCiAgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQogICAgICAgICAsIG1fc2hpZnRLZXkoc2hp
ZnRLZXkpCkBAIC00OSw5ICs0OSw5IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQogCi0gICAg
VUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cq
IHZpZXcsCisgICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1w
LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICAgICAgaW50IGRldGFpbCwgYm9vbCBj
dHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBib29sIGFs
dEdyYXBoS2V5LCBib29sIGNhcHNMb2NrS2V5KQotICAgICAgICAgICAgOiBVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2aWV3LCBkZXRhaWwpCisgICAgICAg
ICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIFdU
Rk1vdmUodmlldyksIGRldGFpbCkKICAgICAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCiAg
ICAgICAgICAgICAsIG1fYWx0S2V5KGFsdEtleSkKICAgICAgICAgICAgICwgbV9zaGlmdEtleShz
aGlmdEtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAppbmRleCBkMmI4ZmI3MmQ5MTk4ZTE0
YmY3NThjYTNhZmJjMWVjMjQ3ZjcxY2JkLi41MzdjYjE5M2M4MTNmNTI3YWM1MzNjOTMwODkwODdi
ZGIzNjhiZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCkBAIC00Nyw4ICs0Nyw4IEBA
IGlubGluZSBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Y29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsCiB7CiB9CiAKLWlubGluZSBXaGVlbEV2ZW50OjpXaGVl
bEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogdmlldykK
LSAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUsIGV2
ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LCAwLCBldmVu
dC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCitpbmxpbmUgV2hlZWxFdmVudDo6
V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlldykKKyAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQs
IHRydWUsIHRydWUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgp
LCBXVEZNb3ZlKHZpZXcpLCAwLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlv
bigpCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgLCB7IH0KICNlbmRpZgpAQCAt
NjEsOSArNjEsOSBAQCBpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHZpZXcpCiB7CiB9CiAKLVJlZjxXaGVlbEV2
ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwg
RE9NV2luZG93KiB2aWV3KQorUmVmPFdoZWVsRXZlbnQ+IFdoZWVsRXZlbnQ6OmNyZWF0ZShjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXaGVlbEV2ZW50KGV2ZW50LCB2aWV3KSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2hlZWxFdmVudChldmVudCwgV1RGTW92ZSh2aWV3KSkp
OwogfQogCiBSZWY8V2hlZWxFdmVudD4gV2hlZWxFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQpA
QCAtNzYsMTIgKzc2LDEyIEBAIFJlZjxXaGVlbEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2hlZWxFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiB9
CiAKLXZvaWQgV2hlZWxFdmVudDo6aW5pdFdlYktpdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwg
aW50IHJhd0RlbHRhWSwgRE9NV2luZG93KiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblks
IGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXkpCit2b2lkIFdoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2
ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAg
ICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBp
bml0TW91c2VFdmVudChldmVudE5hbWVzKCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmlldywg
MCwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5LCAwLCBudWxscHRyKTsKKyAgICBpbml0TW91c2VFdmVudChldmVudE5hbWVz
KCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCwgc2NyZWVuWCwgc2Ny
ZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCAw
LCBudWxscHRyKTsKIAogICAgIC8vIE5vcm1hbGl6ZSB0byAxMjAgbXVsdGlwbGUgZm9yIGNvbXBh
dGliaWxpdHkgd2l0aCBJRS4KICAgICBtX3doZWVsRGVsdGEgPSB7IHJhd0RlbHRhWCAqIFRpY2tN
dWx0aXBsaWVyLCByYXdEZWx0YVkgKiBUaWNrTXVsdGlwbGllciB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2
ZW50LmgKaW5kZXggNGQzNGIzMGQ2ZGVkNWVmMjgxNWE4MTM3ZTRjMjk3ZTY0MWFkZTZkYS4uMTBi
NjJlMDVjNzAxNTYwNzZmZmU1Y2YxMjczOTdlYzEzMjNkZDJkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxF
dmVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAgICAgRE9NX0RFTFRBX1BBR0UK
ICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBj
cmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsK
ICAgICBzdGF0aWMgUmVmPFdoZWVsRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBz
dHJ1Y3QgSW5pdCA6IE1vdXNlRXZlbnRJbml0IHsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGluaXRXZWJLaXRXaGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGludCBy
YXdEZWx0YVksIERPTVdpbmRvdyosIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VY
LCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJv
b2wgbWV0YUtleSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVu
dChpbnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGlu
dCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wgY3RybEtl
eSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CiAKICAgICBjb25z
dCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtV2hlZWxFdmVudD4mIHVuZGVybHlpbmdQbGF0Zm9ybUV2
ZW50KCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudDsgfQogCkBAIC03
NSw3ICs3NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2hlZWxFdmVudCgpOwogICAgIFdo
ZWVsRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7Ci0g
ICAgV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBET01XaW5kb3cqKTsKKyAg
ICBXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFJlZlB0cjxXaW5kb3dQcm94
eT4mJik7CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwKaW5kZXggOTNjNTNhNGJmYjJkYWY0YmQ0NDI3
Mzg2NmE5MmNlZDRhMWMxYzM4Ni4uYjI4MWRhMWM2NjA0NGE4YTkzZDYwZDkwZWRkZjUxZDE0YzZj
OTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmlkbApAQCAtMzksNyArMzksNyBAQAogCiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0RGlyZWN0aW9uSW52ZXJ0ZWRGcm9t
RGV2aWNlOwogCi0gICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRpb25hbCBsb25nIHdo
ZWVsRGVsdGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAsIG9wdGlvbmFsIERP
TVdpbmRvdz8gdmlldyA9IG51bGwsCisgICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRp
b25hbCBsb25nIHdoZWVsRGVsdGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAs
IG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwKICAgICAgICAgb3B0aW9uYWwgbG9u
ZyBzY3JlZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwgb3B0aW9uYWwgbG9uZyBj
bGllbnRYID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRZID0gMCwKICAgICAgICAgb3B0aW9uYWwg
Ym9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFsc2Us
CiAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9v
bGVhbiBtZXRhS2V5ID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZDE0NzI0Mjc3MjM3NDY4ZDRmNjFm
ZmUzM2M3NWZlNDZhODE5MjNkYy4uZDczYTcxYjBlMTVkZDgxOWYxNzBlZmE1ZjU2MmVmNzVjOTQy
Yjk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuY3BwCkBAIC02MzIsNyArNjMyLDcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOjppbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBW
ZWMKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpCiAgICAgICAgIHZp
ZXctPmRpc2FibGVMYXllckZsdXNoVGhyb3R0bGluZ1RlbXBvcmFyaWx5Rm9ySW50ZXJhY3Rpb24o
KTsKIAotICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0
YXRpb24obV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCwgZGljdGF0aW9uQWx0
ZXJuYXRpdmVzKTsKKyAgICBSZWY8VGV4dEV2ZW50PiBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRl
Rm9yRGljdGF0aW9uKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgdGV4dCwgZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KHRyaWdn
ZXJpbmdFdmVudCk7CiAKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGNiOGI2YjhiYmFjODViYzBlMzJkZWQyZWYzMzljMjQx
MDI5MGQzMTkuLjRlMzY4YmZkODAzYzUzNjg1MmVkY2U2MDEwNDY5NDQ4NjMxNDkxOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIEVkaXRvcjo6
cGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBib29sIHNtYXJ0UmVw
bGFjZSkKICAgICBFbGVtZW50KiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9u
KCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKLSAgICB0YXJnZXQtPmRpc3Bh
dGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShkb2N1bWVudCgpLmRv
bVdpbmRvdygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSk7CisgICAgdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoZG9jdW1lbnQoKS5k
ZWZhdWx0VmlldygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSk7CiB9CiAKIHZvaWQgRWRp
dG9yOjpwYXN0ZUFzRnJhZ21lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdt
ZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhh
bmRsaW5nIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUpCkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBF
ZGl0b3I6OnBhc3RlQXNGcmFnbWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBwYXN0aW5nRnJh
Z21lbnQsIGJvb2wgc21hcnQKICAgICBFbGVtZW50KiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJnZXRG
cm9tU2VsZWN0aW9uKCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKLSAgICB0
YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKGRv
Y3VtZW50KCkuZG9tV2luZG93KCksIFdURk1vdmUocGFzdGluZ0ZyYWdtZW50KSwgc21hcnRSZXBs
YWNlLCBtYXRjaFN0eWxlLCByZXNwZWN0c01haWxCbG9ja3F1b3RlKSk7CisgICAgdGFyZ2V0LT5k
aXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShkb2N1bWVudCgp
LmRlZmF1bHRWaWV3KCksIFdURk1vdmUocGFzdGluZ0ZyYWdtZW50KSwgc21hcnRSZXBsYWNlLCBt
YXRjaFN0eWxlLCByZXNwZWN0c01haWxCbG9ja3F1b3RlKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpw
YXN0ZUFzUGxhaW5UZXh0QnlwYXNzaW5nREhUTUwoKQpAQCAtMTg0OCw3ICsxODQ4LDcgQEAgdm9p
ZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgU2V0Q29tcG9zaXRp
b25Nb2RlIG1vZGUpCiAgICAgaW5zZXJ0VGV4dEZvckNvbmZpcm1lZENvbXBvc2l0aW9uKHRleHQp
OwogCiAgICAgaWYgKGF1dG8qIHRhcmdldCA9IGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSkK
LSAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQoKS5kb21XaW5kb3coKSwg
dGV4dCkpOworICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50LCBkb2N1bWVudCgpLmRlZmF1
bHRWaWV3KCksIHRleHQpKTsKIAogICAgIGlmIChtb2RlID09IENhbmNlbENvbXBvc2l0aW9uKSB7
CiAgICAgICAgIC8vIEFuIG9wZW4gdHlwaW5nIGNvbW1hbmQgdGhhdCBkaXNhZ3JlZXMgYWJvdXQg
Y3VycmVudCBzZWxlY3Rpb24gd291bGQgY2F1c2UgaXNzdWVzIHdpdGggdHlwaW5nIGxhdGVyIG9u
LgpAQCAtMTkwOCwxMSArMTkwOCwxMSBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIHNlbmQgYSBjb21wb3NpdGlvbnN0YXJ0IGV2ZW50IG9ubHkgd2hl
biB0aGUgZ2l2ZW4gdGV4dCBpcyBub3QgZW1wdHkgYmVjYXVzZSB0aGlzCiAgICAgICAgICAgICAv
LyBmdW5jdGlvbiBkb2Vzbid0IGNyZWF0ZSBhIGNvbXBvc2l0aW9uIG5vZGUgd2hlbiB0aGUgdGV4
dCBpcyBlbXB0eS4KICAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0RXZlbnQsIGRvY3VtZW50KCkuZG9tV2luZG93KCks
IG9yaWdpbmFsVGV4dCkpOwotICAgICAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBkb2N1bWVudCgp
LmRvbVdpbmRvdygpLCB0ZXh0KTsKKyAgICAgICAgICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZl
bnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0
RXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgb3JpZ2luYWxUZXh0KSk7CisgICAgICAg
ICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNv
bXBvc2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdGV4dCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoIXRleHQuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBv
c2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZG9tV2luZG93KCksIHRleHQpOworICAgICAg
ICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBv
c2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdGV4dCk7CiAKICAg
ICAgICAgaWYgKGV2ZW50KQogICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KCpldmVu
dCk7CkBAIC0xOTIzLDcgKzE5MjMsNyBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgIGlm
ICh0ZXh0LmlzRW1wdHkoKSkgewogICAgICAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rp
b24oZG9jdW1lbnQoKSwgVHlwaW5nQ29tbWFuZDo6UHJldmVudFNwZWxsQ2hlY2tpbmcsIFR5cGlu
Z0NvbW1hbmQ6OlRleHRDb21wb3NpdGlvblBlbmRpbmcpOwogICAgICAgICBpZiAodGFyZ2V0KQot
ICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQoKS5kb21XaW5kb3co
KSwgdGV4dCkpOworICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9u
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQo
KS5kZWZhdWx0VmlldygpLCB0ZXh0KSk7CiAgICAgfQogCiAgICAgbV9jb21wb3NpdGlvbk5vZGUg
PSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCmluZGV4IGEzZDdkOTc3
MGNlYmQwNjI4Y2E3YmVjMjRjZmE2NzVkM2I5N2JiNTQuLjlkNTgxY2VkZmE4NDFlMGFkZjFhYWM0
MzI1OTFjOGI2ZjJmNzY1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKQEAg
LTExNCw3ICsxMTQsNyBAQCBSZWY8RG9jdW1lbnRQYXJzZXI+IEhUTUxEb2N1bWVudDo6Y3JlYXRl
UGFyc2VyKCkKIH0KIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
ZG9tLmh0bWwjZG9tLWRvY3VtZW50LW5hbWVkaXRlbQotc3RkOjpvcHRpb25hbDxWYXJpYW50PFJl
ZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+
PiBIVE1MRG9jdW1lbnQ6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitzdGQ6
Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gSFRNTERvY3VtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKQogewogICAgIGlmIChuYW1lLmlzTnVsbCgpIHx8ICFoYXNEb2N1bWVu
dE5hbWVkSXRlbSgqbmFtZS5pbXBsKCkpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtMTIyLDE2ICsxMjIsMTYgQEAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxET01XaW5k
b3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4KICAgICBpZiAoVU5M
SUtFTFkoZG9jdW1lbnROYW1lZEl0ZW1Db250YWluc011bHRpcGxlRWxlbWVudHMoKm5hbWUuaW1w
bCgpKSkpIHsKICAgICAgICAgYXV0byBjb2xsZWN0aW9uID0gZG9jdW1lbnROYW1lZEl0ZW1zKG5h
bWUpOwogICAgICAgICBBU1NFUlQoY29sbGVjdGlvbi0+bGVuZ3RoKCkgPiAxKTsKLSAgICAgICAg
cmV0dXJuIFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRy
PEhUTUxDb2xsZWN0aW9uPj4geyBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHsgV1RGTW92ZShjb2xs
ZWN0aW9uKSB9IH07CisgICAgICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4s
IFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBSZWZQdHI8SFRNTENv
bGxlY3Rpb24+IHsgV1RGTW92ZShjb2xsZWN0aW9uKSB9IH07CiAgICAgfQogCiAgICAgYXV0byYg
ZWxlbWVudCA9ICpkb2N1bWVudE5hbWVkSXRlbSgqbmFtZS5pbXBsKCkpOwogICAgIGlmIChVTkxJ
S0VMWShpczxIVE1MSUZyYW1lRWxlbWVudD4oZWxlbWVudCkpKSB7CiAgICAgICAgIGlmIChhdXRv
IGRvbVdpbmRvdyA9IG1ha2VSZWZQdHIoZG93bmNhc3Q8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1l
bnQpLmNvbnRlbnRXaW5kb3coKSkpCi0gICAgICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8
RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7IFdU
Rk1vdmUoZG9tV2luZG93KSB9OworICAgICAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPFdp
bmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7IFdU
Rk1vdmUoZG9tV2luZG93KSB9OwogICAgIH0KIAotICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxE
T01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgUmVm
UHRyPEVsZW1lbnQ+IHsgJmVsZW1lbnQgfSB9OworICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxX
aW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBS
ZWZQdHI8RWxlbWVudD4geyAmZWxlbWVudCB9IH07CiB9CiAKIFZlY3RvcjxBdG9taWNTdHJpbmc+
IEhUTUxEb2N1bWVudDo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRG9jdW1lbnQuaAppbmRleCBhMzYzOTc0MDZkMzQ5ZjU3NmY0ODlkM2ExZjYwMGFkYTFi
ZGRjZmUxLi4wYjNkMzQxNGE0YmVmYTAzMzVjNGUyMjlhNTk1ODVlYjA1ZWJkNjBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERvY3VtZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIGludCB3aWR0aCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBoZWlnaHQo
KTsKICAgICAKLSAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJl
ZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IG5hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmcmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1By
b3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gbmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHN1cHBvcnRl
ZFByb3BlcnR5TmFtZXMoKSBjb25zdDsKIAogICAgIEVsZW1lbnQqIGRvY3VtZW50TmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRO
YW1lZEl0ZW0uZ2V0RWxlbWVudEJ5RG9jdW1lbnROYW1lZEl0ZW0obmFtZSwgKnRoaXMpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwKaW5kZXggMTI3ZjI2NDVlMDMyMmRjNzk4ODEy
ODA0ZmY1ZDc5NWRhYzhhNTgwZi4uYTk5OWIwM2Y2MjI4YjI1ZWJkMWI3Yjk0Mzg2Yjk5ZTM5NWI4
NWY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmlkbApAQCAtMjMsNSArMjMsNSBA
QAogICAgIE5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cywKICAgICBPdmVycmlkZUJ1
aWx0aW5zLAogXSBpbnRlcmZhY2UgSFRNTERvY3VtZW50IDogRG9jdW1lbnQgeyAgICAKLSAgICBn
ZXR0ZXIgKERPTVdpbmRvdyBvciBFbGVtZW50IG9yIEhUTUxDb2xsZWN0aW9uKSAoRE9NU3RyaW5n
IG5hbWUpOworICAgIGdldHRlciAoV2luZG93UHJveHkgb3IgRWxlbWVudCBvciBIVE1MQ29sbGVj
dGlvbikgKERPTVN0cmluZyBuYW1lKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVF
bGVtZW50LmlkbAppbmRleCBjZDYzYTIxMmFkNDMzMTRjNWJlMjMwNGRkZTcwMDk3YzdiZjg4MzUz
Li5lZDdjMGI2ZTI3NzI5OWI2NWNhMjE4ZjIxZTE4MjYxZTUxM2RmYzBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwKQEAgLTI2LDcgKzI2LDcgQEAgaW50ZXJmYWNl
IEhUTUxGcmFtZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW1JlZmxlY3QsIFVSTF0gYXR0
cmlidXRlIFVTVlN0cmluZyBsb25nRGVzYzsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIGJvb2xl
YW4gbm9SZXNpemU7CiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSByZWFkb25seSBhdHRyaWJ1
dGUgRG9jdW1lbnQgY29udGVudERvY3VtZW50OwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01X
aW5kb3cgY29udGVudFdpbmRvdzsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkg
Y29udGVudFdpbmRvdzsKIAogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVt
cHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luSGVpZ2h0OwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1
dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luV2lkdGg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKaW5kZXggNTg4NzM5
ODQ3Y2JiMDhjMzcxN2MxM2JlYmQzYWE5MWQ5OWJiNGNjNS4uYjliZWYxNzYzZTI2MWQ3Yzk4MmUx
ZjA1NTUwOWMxNjlkZjg0MDYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVPd25lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
T3duZXJFbGVtZW50LmNwcApAQCAtOTksOSArOTksOSBAQCBEb2N1bWVudCogSFRNTEZyYW1lT3du
ZXJFbGVtZW50Ojpjb250ZW50RG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRG
cmFtZSA/IG1fY29udGVudEZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKIH0KIAotRE9NV2lu
ZG93KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRXaW5kb3coKSBjb25zdAorV2luZG93
UHJveHkqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVudFdpbmRvdygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8gbV9jb250ZW50RnJhbWUtPmRvY3VtZW50KCktPmRv
bVdpbmRvdygpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyAmbV9jb250
ZW50RnJhbWUtPndpbmRvd1Byb3h5KCkgOiBudWxscHRyOwogfQogCiB2b2lkIEhUTUxGcmFtZU93
bmVyRWxlbWVudDo6c2V0U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCmluZGV4IDg2NWVkZGI5MWY1N2Uz
NDViNGI2ODdmNzYwZTgzMzI1NDI1YzRmYzEuLjgwZjE4MjAwZGYwZDRhNzRkN2YwZTNkYmNhMTUy
NDU2MDIyNGFiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1l
bnQuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SFRNTEZyYW1lT3du
ZXJFbGVtZW50KCk7CiAKICAgICBGcmFtZSogY29udGVudEZyYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZW50RnJhbWU7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBET01XaW5kb3cqIGNvbnRlbnRX
aW5kb3coKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXaW5kb3dQcm94eSogY29udGVudFdp
bmRvdygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KiBjb250ZW50RG9jdW1l
bnQoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Q29udGVudEZyYW1lKEZyYW1lKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAppbmRleCAyODU2NDI0OTUwYTM0
OWM5YjcyOTUwM2M1ZjRmMTIxYThlYzRiMmI3Li41ZDIzN2Q0ODI2YzcyZjg4N2I3ZGIyZmI1MWQ2
ZTk3ODY1Njc5YTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNl
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5jcHAKQEAgLTIzMSwxNSArMjMxLDEzIEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6cmVt
b3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyCiAgICAg
fQogfQogCi1ET01XaW5kb3cqIEhUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpCitXaW5kb3dQcm94eSogSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFt
ZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKICAgICBhdXRvIGZyYW1lRWxlbWVu
dCA9IG1ha2VSZWZQdHIoY2hpbGRyZW4oKS0+bmFtZWRJdGVtKG5hbWUpKTsKICAgICBpZiAoIWlz
PEhUTUxGcmFtZUVsZW1lbnQ+KGZyYW1lRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgaWYgKGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGRvd25jYXN0PEhUTUxGcmFt
ZUVsZW1lbnQ+KGZyYW1lRWxlbWVudC5nZXQoKSktPmNvbnRlbnREb2N1bWVudCgpKSkKLSAgICAg
ICAgcmV0dXJuIGRvY3VtZW50LT5kb21XaW5kb3coKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gZG93bmNhc3Q8SFRNTEZyYW1lRWxlbWVudD4oKmZyYW1lRWxlbWVudCkuY29udGVu
dFdpbmRvdygpOwogfQogCiBWZWN0b3I8QXRvbWljU3RyaW5nPiBIVE1MRnJhbWVTZXRFbGVtZW50
OjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmgKaW5kZXggZDFmMzc5YjczNWNiNzdmNWU1YWQyZGVjNGViZjE0NDBj
N2VlYTMzMi4uYzNjNjhiNTdiZjk3N2U3YWNlYTkyZmYzYWVjMDk2NDk2ZjcxMjJiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8SFRNTEZyYW1lU2V0RWxlbWVudD4gZmluZENvbnRh
aW5pbmcoRWxlbWVudCogZGVzY2VuZGFudCk7CiAgICAgCiAgICAgVmVjdG9yPEF0b21pY1N0cmlu
Zz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0OwotICAgIERPTVdpbmRvdyogbmFtZWRJ
dGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFdpbmRvd1Byb3h5KiBuYW1lZEl0ZW0oY29u
c3QgQXRvbWljU3RyaW5nJik7CiAKIHByaXZhdGU6CiAgICAgSFRNTEZyYW1lU2V0RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZVNldEVsZW1lbnQuaWRsCmluZGV4IDMyNTBiOTQ5MGVkYjhiYjE4ZjQ3Yjk4MmNiYjdm
NmI0NDA4ZDMxMjUuLjY5NDIxNzNlNzQ0MDkyNDljMjA1YjBiM2M1MjYyOWUyYWNjNDY5NGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbApAQCAtMzMsNyAr
MzMsNyBAQCBpbnRlcmZhY2UgSFRNTEZyYW1lU2V0RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKIAog
ICAgIC8vIE5vbi1zdGFuZGFyZCBuYW1lZCBnZXR0ZXIKICAgICAvLyBGSVhNRTogVGhpcyBpcyBu
b3QgaW4gdGhlIHN0YW5kYXJkLCBjYW4gd2UgcmVtb3ZlIHRoaXM/Ci0gICAgZ2V0dGVyIERPTVdp
bmRvdyAoRE9NU3RyaW5nIG5hbWUpOworICAgIGdldHRlciBXaW5kb3dQcm94eSAoRE9NU3RyaW5n
IG5hbWUpOwogfTsKIAogSFRNTEZyYW1lU2V0RWxlbWVudCBpbXBsZW1lbnRzIFdpbmRvd0V2ZW50
SGFuZGxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVt
ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCmluZGV4
IDNlM2JkY2MxMTA0MTg4YTc4ZGRiYThlMjc2NDM0ZTRlNjZlNjkwYmMuLmMxNjM5MjJlZTQyMGU3
NWMwNGRkMTI4MTk0YjUzNWYzODNjOTVkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQuaWRsCkBAIC0zOCw3ICszOCw3IEBAIGludGVyZmFjZSBIVE1MSUZyYW1lRWxl
bWVudCA6IEhUTUxFbGVtZW50IHsKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9u
bHkgYXR0cmlidXRlIERvY3VtZW50IGNvbnRlbnREb2N1bWVudDsKIAotICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01XaW5kb3cgY29udGVudFdpbmRvdzsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
V2luZG93UHJveHkgY29udGVudFdpbmRvdzsKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZSwg
TWF5VGhyb3dFeGNlcHRpb25dIERvY3VtZW50IGdldFNWR0RvY3VtZW50KCk7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggZDE1MTI3M2EzNTk0OTNlMWI2YzUzOGYw
ZjNkOTMxNjg4MDM2NGExNy4uODVjMTNmZjdmMDIwYWE5YWMyYzZlNGRmMTcyNDZkNDQxMTljNWE1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1
bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggYjAyM2E0ZTJlZjI4NDMw
MzdiZTVkMDhiZjJhNGZlMzgzMWQ1ZmQ4Zi4uM2UyYTkxNjZmMmM4MDFhZTU1NjYzYmNjYjFiNDkw
YWUwOWZhZjFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTQ4LDcgKzE0OCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIGNsYXNzIFBvc3RNZXNzYWdlVGltZXIg
OiBwdWJsaWMgVGltZXJCYXNlIHsKIHB1YmxpYzoKLSAgICBQb3N0TWVzc2FnZVRpbWVyKERPTVdp
bmRvdyYgd2luZG93LCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luLCBET01XaW5kb3cmIHNvdXJjZSwgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiYmIHRhcmdldE9yaWdpbiwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFja1RyYWNl
KQorICAgIFBvc3RNZXNzYWdlVGltZXIoRE9NV2luZG93JiB3aW5kb3csIE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiBzb3VyY2UsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0YXJnZXRPcmln
aW4sIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3RhY2tUcmFjZSkKICAgICAgICAgOiBtX3dp
bmRvdyh3aW5kb3cpCiAgICAgICAgICwgbV9tZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpCiAgICAg
ICAgICwgbV9vcmlnaW4oc291cmNlT3JpZ2luKQpAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoK
IAogICAgIFJlZjxNZXNzYWdlRXZlbnQ+IGV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCiAgICAgewotICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoTWVzc2Fn
ZVBvcnQ6OmVudGFuZ2xlUG9ydHMoY29udGV4dCwgV1RGTW92ZShtX21lc3NhZ2UudHJhbnNmZXJy
ZWRQb3J0cykpLCBtX21lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBtX29yaWdpbiwg
eyB9LCBNZXNzYWdlRXZlbnRTb3VyY2UoUmVmUHRyPERPTVdpbmRvdz4oV1RGTW92ZShtX3NvdXJj
ZSkpKSk7CisgICAgICAgIHJldHVybiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShNZXNzYWdlUG9ydDo6
ZW50YW5nbGVQb3J0cyhjb250ZXh0LCBXVEZNb3ZlKG1fbWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRz
KSksIG1fbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCksIG1fb3JpZ2luLCB7IH0sIG1f
c291cmNlID8gc3RkOjptYWtlX29wdGlvbmFsKE1lc3NhZ2VFdmVudFNvdXJjZShXVEZNb3ZlKG1f
c291cmNlKSkpIDogc3RkOjpudWxsb3B0KTsKICAgICB9CiAKICAgICBTZWN1cml0eU9yaWdpbiog
dGFyZ2V0T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRPcmlnaW4uZ2V0KCk7IH0KQEAg
LTE4MCw3ICsxODAsNyBAQCBwcml2YXRlOgogICAgIFJlZjxET01XaW5kb3c+IG1fd2luZG93Owog
ICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1fbWVzc2FnZTsKICAgICBTdHJpbmcgbV9vcmln
aW47Ci0gICAgUmVmPERPTVdpbmRvdz4gbV9zb3VyY2U7CisgICAgUmVmUHRyPFdpbmRvd1Byb3h5
PiBtX3NvdXJjZTsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fdGFyZ2V0T3JpZ2luOwog
ICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IG1fc3RhY2tUcmFjZTsKICAgICBSZWZQdHI8VXNl
ckdlc3R1cmVUb2tlbj4gbV91c2VyR2VzdHVyZVRvRm9yd2FyZDsKQEAgLTk2MCw3ICs5NjAsOCBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgRE9NV2luZG93JiBpbmN1bQogICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1l
c3NhZ2UgeyBtZXNzYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZGlzZW50YW5nbGVkUG9y
dHMucmVsZWFzZVJldHVyblZhbHVlKCkgfTsKIAogICAgIC8vIFNjaGVkdWxlIHRoZSBtZXNzYWdl
LgotICAgIGF1dG8qIHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGltZXIoKnRoaXMsIFdURk1vdmUo
bWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgaW5jdW1iZW50V2luZG93LCBXVEZNb3ZlKHRhcmdldCks
IFdURk1vdmUoc3RhY2tUcmFjZSkpOworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gaW5jdW1iZW50
V2luZG93UHJveHkgPSBpbmN1bWJlbnRXaW5kb3cuZnJhbWUoKSA/ICZpbmN1bWJlbnRXaW5kb3cu
ZnJhbWUoKS0+d2luZG93UHJveHkoKSA6IG51bGxwdHI7CisgICAgYXV0byogdGltZXIgPSBuZXcg
UG9zdE1lc3NhZ2VUaW1lcigqdGhpcywgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luLCBX
VEZNb3ZlKGluY3VtYmVudFdpbmRvd1Byb3h5KSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHN0
YWNrVHJhY2UpKTsKICAgICB0aW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CiAKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFBvc3RNZXNzYWdlKCptX2ZyYW1lLCAqdGltZXIsIHN0YXRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggOTE3NGFmZDUzMjE2
YzExMmM0YjVlMGQ1NzU4N2M4NmQxZmM5YzVhMS4uN2M0OWEyMTdmMDJhNjg1NTQ3MGRiMzE3N2I4
ZjU5MzU0MzhmNTY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAg
LTUwOCw3ICs1MDgsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1dEV2
ZW50Rm9yKEZyYW1lKiBpbm5lckZyYW1lLCBjb25zdCBEcmFnRGF0YQogICAgIFN0cmluZyB0ZXh0
ID0gbV9wYWdlLmRyYWdDYXJldENvbnRyb2xsZXIoKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgp
ID8gZW1wdHlTdHJpbmcoKSA6IGRyYWdEYXRhLmFzUGxhaW5UZXh0KCk7CiAgICAgRWxlbWVudCog
dGFyZ2V0ID0gaW5uZXJGcmFtZS0+ZWRpdG9yKCkuZmluZEV2ZW50VGFyZ2V0RnJvbShtX3BhZ2Uu
ZHJhZ0NhcmV0Q29udHJvbGxlcigpLmNhcmV0UG9zaXRpb24oKSk7CiAgICAgLy8gRklYTUU6IFdo
YXQgZ3VhcmFudGVlcyB0YXJnZXQgaXMgbm90IG51bGw/Ci0gICAgYXV0byBldmVudCA9IFRleHRF
dmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwg
dGV4dCk7CisgICAgYXV0byBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZy
YW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCB0ZXh0KTsKICAgICB0YXJnZXQtPmRpc3Bh
dGNoRXZlbnQoZXZlbnQpOwogICAgIHJldHVybiAhZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA4N2QxMjc3NGNjNmYzNGFl
MDcwMTAwZDE5ZWViNzY1NjVmMjUwNzlkLi43ZDJjOTNhM2MwZjk4MWY4MDU5ZWE4YjdmMzg2YmZh
NmZlMGMwMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zODAyLDcg
KzM4MDIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVGV4dElucHV0RXZlbnQoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBFdmVudCogdW5kZXJseWluZ0V2ZQogICAgIGlmIChGcmFtZVZpZXcqIHZp
ZXcgPSBtX2ZyYW1lLnZpZXcoKSkKICAgICAgICAgdmlldy0+ZGlzYWJsZUxheWVyRmx1c2hUaHJv
dHRsaW5nVGVtcG9yYXJpbHlGb3JJbnRlcmFjdGlvbigpOwogCi0gICAgUmVmPFRleHRFdmVudD4g
ZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygp
LCB0ZXh0LCBpbnB1dFR5cGUpOworICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50
OjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCB0ZXh0LCBpbnB1dFR5
cGUpOwogICAgIGV2ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQodW5kZXJseWluZ0V2ZW50KTsKIAog
ICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4
IGE4NDI2NWFhNzkzNmMzNDg5MmNjOWUwNzFhOTkwYjlhZDFlNTExNjguLjgyODRhNjUzMWRhM2Fh
MDFkMGZmYmNlZGIwODU4MTE3MjBiNjZiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0yMTIs
NiArMjEyLDcgQEAgUmVmPEZyYW1lPiBGcmFtZTo6Y3JlYXRlKFBhZ2UqIHBhZ2UsIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFtZUwKIAogRnJhbWU6On5GcmFtZSgpCiB7
CisgICAgd2luZG93UHJveHkoKS5kZXN0cm95QWxsSlNXaW5kb3dQcm94aWVzKCk7CiAgICAgc2V0
VmlldyhudWxscHRyKTsKICAgICBsb2FkZXIoKS5jYW5jZWxBbmRDbGVhcigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlldy5tbQppbmRleCAxYTRjMjli
MWIwZGRhYzgyMjU3YmQ2ZjRiYTZkYzQ0ZmYzOTEyZTg5Li4xNjllNGFlNWZlNzc1Yjk4ZDI0Y2Q0
ODA2YTVhOWM1MDc4ZTEwZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NQWJzdHJhY3RWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01BYnN0cmFjdFZpZXcubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJh
bWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9XaW5kb3dQcm94eS5o
PgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpGcmFtZSo+KF9pbnRl
cm5hbCkKIApAQCAtMTAwLDMgKzEwMSwxOSBAQCBET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3Jl
OjpBYnN0cmFjdERPTVdpbmRvdyogdmFsdWUpCiAKICAgICByZXR1cm4ga2l0KGRvd25jYXN0PFdl
YkNvcmU6OkRPTVdpbmRvdz4odmFsdWUpKTsKIH0KKworRE9NQWJzdHJhY3RWaWV3ICpraXQoV2Vi
Q29yZTo6V2luZG93UHJveHkqIHdpbmRvd1Byb3h5KQoreworICAgIGlmICghd2luZG93UHJveHkp
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4ga2l0KHdpbmRvd1Byb3h5LT53aW5k
b3coKSk7Cit9CisKK1dlYkNvcmU6OldpbmRvd1Byb3h5KiB0b1dpbmRvd1Byb3h5KERPTUFic3Ry
YWN0VmlldyAqdmlldykKK3sKKyAgICBhdXRvKiB3aW5kb3cgPSBjb3JlKHZpZXcpOworICAgIGlm
ICghd2luZG93IHx8ICF3aW5kb3ctPmZyYW1lKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
cmV0dXJuICZ3aW5kb3ctPmZyYW1lKCktPndpbmRvd1Byb3h5KCk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oCmluZGV4
IGM0ZDczMjVjN2YyNWJiNWI4NjEyNzQxNmUzZDkwZDI4MjE0YzExOTcuLjM1OWYwNWViNGQ0YTQz
YWE1MjQyMzNlNGJiZjY2MjhkYjM2ODg2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oCkBAIC0yOCwxMSArMjgsMTQg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFic3RyYWN0RE9NV2luZG93OwogY2xhc3Mg
RE9NV2luZG93OworY2xhc3MgV2luZG93UHJveHk7CiB9CiAKIFdlYkNvcmU6OkRPTVdpbmRvdyog
Y29yZShET01BYnN0cmFjdFZpZXcgKik7CiBET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpE
T01XaW5kb3cqKTsKIERPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OkFic3RyYWN0RE9NV2lu
ZG93Kik7CitET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpXaW5kb3dQcm94eSopOworV2Vi
Q29yZTo6V2luZG93UHJveHkqIHRvV2luZG93UHJveHkoRE9NQWJzdHJhY3RWaWV3ICopOwogCiBA
aW50ZXJmYWNlIERPTUFic3RyYWN0VmlldyAoV2ViS2l0TGVnYWN5SW50ZXJuYWwpCiAtICh2b2lk
KV9kaXNjb25uZWN0RnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NRG9jdW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1l
bnQubW0KaW5kZXggNmMyZjM2ZDgyNGE5NGE2ODIzYmYyYTgxYzliZWQyMjM0ZTdhNjhmNC4uYTdi
ODEzNDAwOTVmNjYzODE2NTQyZWJmODY0YWJjYzU5YmY4ZjNhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQpAQCAtODQsNiArODQsNyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9UcmVlV2Fsa2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dpbmRv
d1Byb3h5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1hQYXRoRXhwcmVzc2lvbi5oPgogI2ltcG9ydCA8
V2ViQ29yZS9YUGF0aE5TUmVzb2x2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvWFBhdGhSZXN1bHQu
aD4KQEAgLTE2Miw3ICsxNjMsMTAgQEAgLSAodm9pZClzZXREb2N1bWVudFVSSTooTlNTdHJpbmcg
KiluZXdEb2N1bWVudFVSSQogLSAoRE9NQWJzdHJhY3RWaWV3ICopZGVmYXVsdFZpZXcKIHsKICAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChX
VEY6OmdldFB0cihJTVBMLT5kZWZhdWx0VmlldygpKSk7CisgICAgYXV0byogZGVmYXVsdFZpZXcg
PSBJTVBMLT5kZWZhdWx0VmlldygpOworICAgIGlmICghZGVmYXVsdFZpZXcpCisgICAgICAgIHJl
dHVybiBuaWw7CisgICAgcmV0dXJuIGtpdChkZWZhdWx0Vmlldy0+d2luZG93KCkpOwogfQogCiAt
IChET01TdHlsZVNoZWV0TGlzdCAqKXN0eWxlU2hlZXRzCkBAIC02ODQsNyArNjg4LDcgQEAgLSAo
RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKWdldENvbXB1dGVkU3R5bGU6KERPTUVsZW1lbnQgKill
bGVtZW50IHBzZXVkb0VsZW1lbnQKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByYWlzZVR5cGVFcnJvckV4Y2VwdGlv
bigpOwotICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogZHYgPSBJTVBMLT5kZWZhdWx0VmlldygpOwor
ICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogZHYgPSBJTVBMLT5kb21XaW5kb3coKTsKICAgICBpZiAo
IWR2KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoZHYt
PmdldENvbXB1dGVkU3R5bGUoKmNvcmUoZWxlbWVudCksIHBzZXVkb0VsZW1lbnQpKSk7CkBAIC02
OTgsNyArNzAyLDcgQEAgLSAoRE9NQ1NTUnVsZUxpc3QgKilnZXRNYXRjaGVkQ1NTUnVsZXM6KERP
TUVsZW1lbnQgKillbGVtZW50IHBzZXVkb0VsZW1lbnQ6KE5TU3QKIC0gKERPTUNTU1J1bGVMaXN0
ICopZ2V0TWF0Y2hlZENTU1J1bGVzOihET01FbGVtZW50ICopZWxlbWVudCBwc2V1ZG9FbGVtZW50
OihOU1N0cmluZyAqKXBzZXVkb0VsZW1lbnQgYXV0aG9yT25seTooQk9PTClhdXRob3JPbmx5CiB7
CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6
OkRPTVdpbmRvdyogZHYgPSBJTVBMLT5kZWZhdWx0VmlldygpOworICAgIFdlYkNvcmU6OkRPTVdp
bmRvdyogZHYgPSBJTVBMLT5kb21XaW5kb3coKTsKICAgICBpZiAoIWR2KQogICAgICAgICByZXR1
cm4gbmlsOwogICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoZHYtPmdldE1hdGNoZWRDU1NSdWxl
cyhjb3JlKGVsZW1lbnQpLCBwc2V1ZG9FbGVtZW50LCBhdXRob3JPbmx5KSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQppbmRleCA5
NzdlYjRhNmI4Mjk2N2Q0ZDhiZGQ4YmVmYjNiMDE5N2Q1NDllNjg2Li5kNWFiMDExZjhmZjMxZTYy
MGY5NzA0YzA3ZGM1Njg0OTAzNWM2ZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9X
aW5kb3dQcm94eS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgogCiAjZGVmaW5lIElNUEwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
Q29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCkBAIC0xNDgsNyArMTQ5LDEwIEBAIC0gKERPTURvY3Vt
ZW50ICopY29udGVudERvY3VtZW50CiAtIChET01BYnN0cmFjdFZpZXcgKiljb250ZW50V2luZG93
CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVy
biBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y29udGVudFdpbmRvdygpKSk7CisgICAgYXV0byogY29u
dGVudFdpbmRvdyA9IElNUEwtPmNvbnRlbnRXaW5kb3coKTsKKyAgICBpZiAoIWNvbnRlbnRXaW5k
b3cpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIGtpdChjb250ZW50V2luZG93LT53
aW5kb3coKSk7CiB9CiAKIC0gKE5TU3RyaW5nICopbG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbQppbmRleCBiMWIyYzAz
MThiMjBiNzI4YmU1MTc3NjEyYzRhYzdhMzlkNzIxYTZkLi42ZWEzNzNhYzMyMjY3ZjAwYzQzNWI2
NmZlY2M0OTBjYTY2ZTQyOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTElGcmFtZUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dpbmRv
d1Byb3h5Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29y
ZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCkBAIC0xOTYsNyArMTk3LDEwIEBAIC0gKERPTURvY3VtZW50
ICopY29udGVudERvY3VtZW50CiAtIChET01BYnN0cmFjdFZpZXcgKiljb250ZW50V2luZG93CiB7
CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBr
aXQoV1RGOjpnZXRQdHIoSU1QTC0+Y29udGVudFdpbmRvdygpKSk7CisgICAgYXV0byogY29udGVu
dFdpbmRvdyA9IElNUEwtPmNvbnRlbnRXaW5kb3coKTsKKyAgICBpZiAoIWNvbnRlbnRXaW5kb3cp
CisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIGtpdChjb250ZW50V2luZG93LT53aW5k
b3coKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01LZXlib2FyZEV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtl
eWJvYXJkRXZlbnQubW0KaW5kZXggZTlhYjFmZWZlNzRkOTczNGVhYzI4NDE2YjA5ZWYyMzEwZmNm
YzcxYi4uYmEyZmJlNGUxODlkNjEzNmVlZDczNWVmZmZlNzEyMGI3Zjk2OTU4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0KQEAgLTExMCwy
NSArMTEwLDI1IEBAIC0gKEJPT0wpZ2V0TW9kaWZpZXJTdGF0ZTooTlNTdHJpbmcgKilrZXlJZGVu
dGlmaWVyQXJnCiAtICh2b2lkKWluaXRLZXlib2FyZEV2ZW50OihOU1N0cmluZyAqKXR5cGUgY2Fu
QnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihCT09MKWNhbmNlbGFibGUgdmlldzoo
RE9NQWJzdHJhY3RWaWV3ICopdmlldyBrZXlJZGVudGlmaWVyOihOU1N0cmluZyAqKWluS2V5SWRl
bnRpZmllciBsb2NhdGlvbjoodW5zaWduZWQpaW5Mb2NhdGlvbiBjdHJsS2V5OihCT09MKWluQ3Ry
bEtleSBhbHRLZXk6KEJPT0wpaW5BbHRLZXkgc2hpZnRLZXk6KEJPT0wpaW5TaGlmdEtleSBtZXRh
S2V5OihCT09MKWluTWV0YUtleSBhbHRHcmFwaEtleTooQk9PTClpbkFsdEdyYXBoS2V5CiB7CiAg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmluaXRL
ZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29yZSh2aWV3KSwgaW5L
ZXlJZGVudGlmaWVyLCBpbkxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5
LCBpbk1ldGFLZXksIGluQWx0R3JhcGhLZXkpOworICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2aWV3KSwgaW5LZXlJ
ZGVudGlmaWVyLCBpbkxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBp
bk1ldGFLZXksIGluQWx0R3JhcGhLZXkpOwogfQogCiAtICh2b2lkKWluaXRLZXlib2FyZEV2ZW50
OihOU1N0cmluZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihC
T09MKWNhbmNlbGFibGUgdmlldzooRE9NQWJzdHJhY3RWaWV3ICopdmlldyBrZXlJZGVudGlmaWVy
OihOU1N0cmluZyAqKWluS2V5SWRlbnRpZmllciBsb2NhdGlvbjoodW5zaWduZWQpaW5Mb2NhdGlv
biBjdHJsS2V5OihCT09MKWluQ3RybEtleSBhbHRLZXk6KEJPT0wpaW5BbHRLZXkgc2hpZnRLZXk6
KEJPT0wpaW5TaGlmdEtleSBtZXRhS2V5OihCT09MKWluTWV0YUtleQogewogICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVu
dCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUodmlldyksIGluS2V5SWRlbnRpZmll
ciwgaW5Mb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5
KTsKKyAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIHRvV2luZG93UHJveHkodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5Mb2NhdGlvbiwgaW5D
dHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5KTsKIH0KIAogLSAodm9pZClp
bml0S2V5Ym9hcmRFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJi
bGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKXZp
ZXcga2V5SWRlbnRpZmllcjooTlNTdHJpbmcgKilpbktleUlkZW50aWZpZXIga2V5TG9jYXRpb246
KHVuc2lnbmVkKWluS2V5TG9jYXRpb24gY3RybEtleTooQk9PTClpbkN0cmxLZXkgYWx0S2V5OihC
T09MKWluQWx0S2V5IHNoaWZ0S2V5OihCT09MKWluU2hpZnRLZXkgbWV0YUtleTooQk9PTClpbk1l
dGFLZXkgYWx0R3JhcGhLZXk6KEJPT0wpaW5BbHRHcmFwaEtleQogewogICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUodmlldyksIGluS2V5SWRlbnRpZmllciwg
aW5LZXlMb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5
LCBpbkFsdEdyYXBoS2V5KTsKKyAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIHRvV2luZG93UHJveHkodmlldyksIGluS2V5SWRlbnRpZmllciwg
aW5LZXlMb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5
LCBpbkFsdEdyYXBoS2V5KTsKIH0KIAogLSAodm9pZClpbml0S2V5Ym9hcmRFdmVudDooTlNTdHJp
bmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5j
ZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKXZpZXcga2V5SWRlbnRpZmllcjooTlNTdHJp
bmcgKilpbktleUlkZW50aWZpZXIga2V5TG9jYXRpb246KHVuc2lnbmVkKWluS2V5TG9jYXRpb24g
Y3RybEtleTooQk9PTClpbkN0cmxLZXkgYWx0S2V5OihCT09MKWluQWx0S2V5IHNoaWZ0S2V5OihC
T09MKWluU2hpZnRLZXkgbWV0YUtleTooQk9PTClpbk1ldGFLZXkKIHsKICAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQo
dHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBjb3JlKHZpZXcpLCBpbktleUlkZW50aWZpZXIs
IGluS2V5TG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtl
eSk7CisgICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxh
YmxlLCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluS2V5TG9jYXRpb24s
IGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSk7CiB9CiAKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KaW5kZXggN2M3
ZTBkZGZmMTQyMTYxZWU0OGU2Nzc3MDI1ZTdmNzBlODUzYTgxMy4uZTUxNWQ4OTM1YzE3N2Q0NzEw
OTRhODRjNWNmYjhkNjRkYjI5NDM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTU1vdXNlRXZlbnQubW0KQEAgLTE0NSw3ICsxNDUsNyBAQCAtICh2b2lkKWluaXRNb3VzZUV2
ZW50OihOU1N0cmluZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxl
OihCTwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBET01O
b2RlKiBpblJlbGF0ZWRUYXJnZXRPYmpDID0gaW5SZWxhdGVkVGFyZ2V0OwogICAgIFdlYkNvcmU6
Ok5vZGUqIGluUmVsYXRlZFRhcmdldE5vZGUgPSBjb3JlKGluUmVsYXRlZFRhcmdldE9iakMpOwot
ICAgIElNUEwtPmluaXRNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29y
ZSh2aWV3KSwgZGV0YWlsLCBpblNjcmVlblgsIGluU2NyZWVuWSwgaW5DbGllbnRYLCBpbkNsaWVu
dFksIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwgaW5CdXR0b24s
IGluUmVsYXRlZFRhcmdldE5vZGUpOworICAgIElNUEwtPmluaXRNb3VzZUV2ZW50KHR5cGUsIGNh
bkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2aWV3KSwgZGV0YWlsLCBpblNjcmVl
blgsIGluU2NyZWVuWSwgaW5DbGllbnRYLCBpbkNsaWVudFksIGluQ3RybEtleSwgaW5BbHRLZXks
IGluU2hpZnRLZXksIGluTWV0YUtleSwgaW5CdXR0b24sIGluUmVsYXRlZFRhcmdldE5vZGUpOwog
fQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4
dEV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbQpp
bmRleCAyODY3YmM4MDIzOTE2YTdlNjc4MGZhM2ViNzEyMGM5YzkxYWQyYTQyLi5kZmE3NjIwMjRi
NTY2MjJjZTViMjk5MWRmMzEyZGZkNTM4NzBkMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01UZXh0RXZlbnQubW0KQEAgLTUwLDcgKzUwLDcgQEAgLSAoTlNTdHJpbmcgKilk
YXRhCiAtICh2b2lkKWluaXRUZXh0RXZlbnQ6KE5TU3RyaW5nICopdHlwZUFyZyBjYW5CdWJibGVB
cmc6KEJPT0wpY2FuQnViYmxlQXJnIGNhbmNlbGFibGVBcmc6KEJPT0wpY2FuY2VsYWJsZUFyZyB2
aWV3QXJnOihET01BYnN0cmFjdFZpZXcgKil2aWV3QXJnIGRhdGFBcmc6KE5TU3RyaW5nICopZGF0
YUFyZwogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJ
TVBMLT5pbml0VGV4dEV2ZW50KHR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywg
Y29yZSh2aWV3QXJnKSwgZGF0YUFyZyk7CisgICAgSU1QTC0+aW5pdFRleHRFdmVudCh0eXBlQXJn
LCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsIHRvV2luZG93UHJveHkodmlld0FyZyksIGRh
dGFBcmcpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NVUlFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50
Lm1tCmluZGV4IGE0NjRkYWNmYmY1MTI2NmJhOTJlNTk3NzE5MjlkODYzMWYyZjE2NDAuLjkxMDM3
OWU2NTlmZGM5MjVjYjNjM2MyMDQ0ZmI0N2Q2ODg3ZTA0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCkBAIC00NSw3ICs0NSw5IEBAIEBpbXBsZW1lbnRhdGlv
biBET01VSUV2ZW50CiAtIChET01BYnN0cmFjdFZpZXcgKil2aWV3CiB7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIo
SU1QTC0+dmlldygpKSk7CisgICAgaWYgKCFJTVBMLT52aWV3KCkpCisgICAgICAgIHJldHVybiBu
aWw7CisgICAgcmV0dXJuIGtpdChJTVBMLT52aWV3KCktPndpbmRvdygpKTsKIH0KIAogLSAoaW50
KWRldGFpbApAQCAtMTAzLDcgKzEwNSw3IEBAIC0gKGludCl3aGljaAogLSAodm9pZClpbml0VUlF
dmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJs
ZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKWluVmlldyBkZXRhaWw6
KGludClpbkRldGFpbAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBJTVBMLT5pbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNv
cmUoaW5WaWV3KSwgaW5EZXRhaWwpOworICAgIElNUEwtPmluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eShpblZpZXcpLCBpbkRldGFpbCk7CiB9CiAK
IEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01XaGVlbEV2
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQubW0KaW5k
ZXggOGYwNTY5Y2E2YTNmOTU4Yzc0MWY2ZDg4MzU4ZmZmZDE2MGIxOGFjOC4uZGQ0YTU3YjBmMzJi
NzdiNDMwYjZkZDljZDViMTUyMzRlNWE0MzRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVdoZWVsRXZlbnQubW0KQEAgLTk2LDcgKzk2LDcgQEAgLSAoQk9PTClpc0hvcml6
b250YWwKIC0gKHZvaWQpaW5pdFdoZWVsRXZlbnQ6KGludClpbldoZWVsRGVsdGFYIHdoZWVsRGVs
dGFZOihpbnQpaW5XaGVlbERlbHRhWSB2aWV3OihET01BYnN0cmFjdFZpZXcgKil2aWV3IHNjcmVl
blg6KGludClzY3JlZW5YIHNjcmVlblk6KGludClzY3JlZW5ZIGNsaWVudFg6KGludCljbGllbnRY
IGNsaWVudFk6KGludCljbGllbnRZIGN0cmxLZXk6KEJPT0wpY3RybEtleSBhbHRLZXk6KEJPT0wp
YWx0S2V5IHNoaWZ0S2V5OihCT09MKXNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wpbWV0YUtleQogewog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0
V2ViS2l0V2hlZWxFdmVudChpbldoZWVsRGVsdGFYLCBpbldoZWVsRGVsdGFZLCBjb3JlKHZpZXcp
LCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNo
aWZ0S2V5LCBtZXRhS2V5KTsKKyAgICBJTVBMLT5pbml0V2ViS2l0V2hlZWxFdmVudChpbldoZWVs
RGVsdGFYLCBpbldoZWVsRGVsdGFZLCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBzY3JlZW5YLCBzY3Jl
ZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5
KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29y
ZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3Bw
CmluZGV4IDFiNDNkZDlmNGNhMTM1YjJkMWM0ZDRjNDY5Zjg2ODU1NWM0N2U5NjYuLmIyNTI2MWY3
ZGZjZTFiN2NmNDcxYTlkMWYyM2NiMDg3YjI1NzdhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKQEAgLTgwMiw3ICs4MDIsNyBAQCBIUkVTVUxUIERPTURv
Y3VtZW50OjpnZXRDb21wdXRlZFN0eWxlKF9Jbl9vcHRfIElET01FbGVtZW50KiBlbHQsIF9Jbl8g
QlNUUiBwc2V1ZAogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAot
ICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogZHYgPSBtX2RvY3VtZW50LT5kZWZhdWx0VmlldygpOwor
ICAgIGF1dG8qIGR2ID0gbV9kb2N1bWVudC0+ZG9tV2luZG93KCk7CiAgICAgU3RyaW5nIHBzZXVk
b0VsdFN0cmluZyhwc2V1ZG9FbHQpOwogICAgIAogICAgIGlmICghZHYpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338895</attachid>
            <date>2018-04-26 11:21:27 -0700</date>
            <delta_ts>2018-04-26 11:24:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185022-20180426112126.patch</filename>
            <type>text/plain</type>
            <size>134029</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNmYmU3ZTk5YzEwNmQx
NzM1Nzc3MGZmMTQxMzkwZjdlODNmNmU2My4uYWM4MDhlYTIzNDlkYzE2MzM0MWFkMmRkY2ZiOTIz
OWJkMjQ0MjQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxOC0wNC0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94eSBp
bnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHVzaW5nIERPTVdpbmRvdyBpbiBhbGwgb2Ygb3Vy
IElETCBmaWxlcyBhbmQgdXNlIFdpbmRvd1Byb3h5IGFzCisgICAgICAgIHBlciB0aGVpciByZXNw
ZWN0aXZlIHNwZWNpZmljYXRpb25zLiBBcyBhIHJlc3VsdCwgdGhlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGFzIGFsc28gdXBkYXRlZCB0byB1c2UgV2luZG93UHJveHkgdHlwZSBpbnN0ZWFkIG9m
IERPTVdpbmRvdy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXaW5kb3dQcm94eTo6d2luZG93UHJveHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9XaW5kb3dQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eTo6
fldpbmRvd1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpkZXN0cm95QWxs
SlNXaW5kb3dQcm94aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpnbG9iYWxP
YmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpXaW5kb3dQcm94eTo6ZnJhbWUgY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKElzQnVpbHRpblR5cGUpOgorICAgICAg
ICAoQ29tcHV0ZUlzQ2FsbGJhY2tJbnRlcmZhY2UpOgorICAgICAgICAoQ29tcHV0ZUlzQ2FsbGJh
Y2tGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChBZGRUb0luY2x1ZGVzRm9ySURMVHlwZSk6CisgICAgICAgIChHZXRCYXNl
SURMVHlwZSk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWVET01Db252ZXJ0TmVlZHNTdGF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RPdmVybG9hZERpc3BhdGNoZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50
KToKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5oOgorICAgICAgICAqIGRvbS9Db21w
b3NpdGlvbkV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmRlZmF1bHRWaWV3IGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudFRvdWNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VG91Y2g6OmNyZWF0ZVRv
dWNoKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRUb3VjaC5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudFRvdWNoLmlkbDoKKyAgICAgICAgKiBkb20vRm9jdXNFdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb2N1c0V2ZW50OjpGb2N1c0V2ZW50KToKKyAgICAgICAgKiBkb20vRm9jdXNFdmVu
dC5oOgorICAgICAgICAqIGRvbS9JbnB1dEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0RXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEV2ZW50OjpJbnB1dEV2
ZW50KToKKyAgICAgICAgKiBkb20vSW5wdXRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2Fy
ZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OktleWJvYXJkRXZlbnQ6OmNoYXJDb2RlIGNvbnN0KToKKyAgICAgICAgKiBkb20vS2V5
Ym9hcmRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmlkbDoKKyAgICAgICAg
KiBkb20vTWVzc2FnZUV2ZW50Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5pZGw6Cisg
ICAgICAgICogZG9tL01vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayk6CisgICAgICAgICogZG9t
L01vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5pZGw6CisgICAgICAgICog
ZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRl
ZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0
ZWRFdmVudDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6ZnJh
bWVWaWV3RnJvbVdpbmRvd1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2
ZW50Ojppbml0Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZl
bnQ6OmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUGFnZUxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpsb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyBj
b25zdCk6CisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50Lmg6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAqIGRvbS9TaW11bGF0ZWRDbGljay5jcHA6CisgICAgICAgICog
ZG9tL1RleHRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3ApOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEV2ZW50OjpUZXh0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50Ojppbml0
VGV4dEV2ZW50KToKKyAgICAgICAgKiBkb20vVGV4dEV2ZW50Lmg6CisgICAgICAgICogZG9tL1Rl
eHRFdmVudC5pZGw6CisgICAgICAgICogZG9tL1RvdWNoRXZlbnQuaWRsOgorICAgICAgICAqIGRv
bS9VSUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVJRXZlbnQ6OlVJRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VUlFdmVudDo6aW5pdFVJRXZlbnQpOgorICAgICAgICAqIGRvbS9VSUV2
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpVSUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VUlFdmVudDo6dmlldyBjb25zdCk6CisgICAgICAgICogZG9tL1VJRXZlbnQuaWRsOgor
ICAgICAgICAqIGRvbS9VSUV2ZW50SW5pdC5oOgorICAgICAgICAqIGRvbS9VSUV2ZW50SW5pdC5p
ZGw6CisgICAgICAgICogZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlVJRXZlbnRXaXRoS2V5U3RhdGU6OlVJRXZlbnRXaXRoS2V5U3RhdGUpOgorICAgICAgICAq
IGRvbS9XaGVlbEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OldoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2ZW50KToKKyAgICAgICAgKiBk
b20vV2hlZWxFdmVudC5oOgorICAgICAgICAqIGRvbS9XaGVlbEV2ZW50LmlkbDoKKyAgICAgICAg
KiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3Rl
QXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRDb21wb3NpdGlvbik6CisgICAgICAgICog
aHRtbC9IVE1MRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50Ojpu
YW1lZEl0ZW0pOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGw6
CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50V2luZG93IGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50
OjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3N0TWVzc2Fn
ZVRpbWVyOjpQb3N0TWVzc2FnZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc3RNZXNzYWdl
VGltZXI6OmV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2Up
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlVGV4dElucHV0RXZlbnQpOgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6fkZyYW1lKToKKyAgICAgICAgVXBkYXRlIEZyYW1lIGRlc3RydWN0
b3IgdG8gZGVzdHJveSBhbGwgaXRzIEpTV2luZG93UHJveGllcyBiZWZvcmUgZG9pbmcgYW55dGhp
bmcgZWxzZS4KKyAgICAgICAgQmVjYXVzZSByZWZpbmcgYSBXaW5kb3dQcm94eSBhY3R1YWxseSBy
ZWZzIGl0cyBmcmFtZSwgaXQgaXMgcG9zc2libGUgdGhhdCB3aGVuIGEgSlMKKyAgICAgICAgb2Jq
ZWN0IGlzIHN3ZXB0LCBpdHMgZGVzdHJveXMgYSBXaW5kb3dQcm94eSwgd2hpY2ggZGVzdHJveXMg
YSBGcmFtZS4gVGhlIEZyYW1lIGRlc3RydWN0b3IKKyAgICAgICAgd291bGQgdGhlbiBjYWxsIEZy
YW1lTG9hZGVyOjpjYW5jZWxBbmRDbGVhcigpIHdoaWNoIHdvdWxkIGVuZCB1cCBjYWxsaW5nIFNj
cmlwdENvbnRyb2xsZXI6OmVuYWJsZUV2YWwoKQorICAgICAgICBhbmQgYWNjZXNzaW5nIEpTV2lu
ZG93UHJveHk6OndpbmRvdygpLiBUaGlzIHdvdWxkIGhpdCBhbiBhc3NlcnRpb24gd2hlbiBkb2lu
ZyB0aGUganNDYXN0KCkgaW4KKyAgICAgICAgSlNDZWxsOjpjbGFzc0luZm8oSlNDOjpWTSYpOgor
ICAgICAgICBBU1NFUlQodm0uaGVhcC5tdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OlN3
ZWVwaW5nIHx8ICF2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKwogMjAxOC0w
NC0yMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1dQRV1bR1RLXSBSZW1vdmUgV2xVbmlxdWVQdHI8d2xfZGlzcGxheT4gZm9vdGd1bgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGYzMDg5NWFiYWY2NzAwMjA3NDJkNGVmYzAzOTAx
OGRhMjc3ZTc2YWYuLjZhZDUyNWU5ODEwZWEwMjY3MmZlMWUwOTM3NTYxMWI4ZjM4NjQwMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0wNC0yNiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94
eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01BYnN0cmFjdFZpZXcubW06CisgICAg
ICAgIChraXQpOgorICAgICAgICAodG9XaW5kb3dQcm94eSk6CisgICAgICAgICogRE9NL0RPTUFi
c3RyYWN0Vmlld0ludGVybmFsLmg6CisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOgorICAg
ICAgICAoLVtET01Eb2N1bWVudCBkZWZhdWx0Vmlld10pOgorICAgICAgICAoLVtET01Eb2N1bWVu
dCBnZXRDb21wdXRlZFN0eWxlOnBzZXVkb0VsZW1lbnQ6XSk6CisgICAgICAgICgtW0RPTURvY3Vt
ZW50IGdldE1hdGNoZWRDU1NSdWxlczpwc2V1ZG9FbGVtZW50OmF1dGhvck9ubHk6XSk6CisgICAg
ICAgICogRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUhUTUxGcmFt
ZUVsZW1lbnQgY29udGVudFdpbmRvd10pOgorICAgICAgICAqIERPTS9ET01IVE1MSUZyYW1lRWxl
bWVudC5tbToKKyAgICAgICAgKC1bRE9NSFRNTElGcmFtZUVsZW1lbnQgY29udGVudFdpbmRvd10p
OgorICAgICAgICAqIERPTS9ET01LZXlib2FyZEV2ZW50Lm1tOgorICAgICAgICAoLVtET01LZXli
b2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5
SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdy
YXBoS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50
OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5
OmFsdEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50
IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmll
cjprZXlMb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdyYXBoS2V5
Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1
YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjprZXlMb2NhdGlvbjpjdHJsS2V5OmFs
dEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAqIERPTS9ET01Nb3VzZUV2ZW50Lm1t
OgorICAgICAgICAoLVtET01Nb3VzZUV2ZW50IGluaXRNb3VzZUV2ZW50OmNhbkJ1YmJsZTpjYW5j
ZWxhYmxlOnZpZXc6ZGV0YWlsOnNjcmVlblg6c2NyZWVuWTpjbGllbnRYOmNsaWVudFk6Y3RybEtl
eTphbHRLZXk6c2hpZnRLZXk6bWV0YUtleTpidXR0b246cmVsYXRlZFRhcmdldDpdKToKKyAgICAg
ICAgKiBET00vRE9NVGV4dEV2ZW50Lm1tOgorICAgICAgICAoLVtET01UZXh0RXZlbnQgaW5pdFRl
eHRFdmVudDpjYW5CdWJibGVBcmc6Y2FuY2VsYWJsZUFyZzp2aWV3QXJnOmRhdGFBcmc6XSk6Cisg
ICAgICAgICogRE9NL0RPTVVJRXZlbnQubW06CisgICAgICAgICgtW0RPTVVJRXZlbnQgdmlld10p
OgorICAgICAgICAoLVtET01VSUV2ZW50IGluaXRVSUV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxl
OnZpZXc6ZGV0YWlsOl0pOgorICAgICAgICAqIERPTS9ET01XaGVlbEV2ZW50Lm1tOgorICAgICAg
ICAoLVtET01XaGVlbEV2ZW50IGluaXRXaGVlbEV2ZW50OndoZWVsRGVsdGFZOnZpZXc6c2NyZWVu
WDpzY3JlZW5ZOmNsaWVudFg6Y2xpZW50WTpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5
Ol0pOgorCiAyMDE4LTA0LTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjMwOTIxLCByMjMwOTIzLCBy
MjMwOTI0LCByMjMwOTMyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGRkZTgwMDhk
YzE4N2YzMDI0OTk1YjJhNGJjN2Q5Y2QwY2E5ZWZjNGIuLmY5YjU5MDBmMTk5ZTU3Yzc0YWJkNDIz
YTkzMzFhZGQ4ZjQ0N2M4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxOC0wNC0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBXaW5kb3dQcm94eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVD
bGFzc2VzLmNwcDoKKyAgICAgICAgKERPTURvY3VtZW50OjpnZXRDb21wdXRlZFN0eWxlKToKKwog
MjAxOC0wNC0yMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzMDkyMSwgcjIzMDkyMywgcjIzMDkyNCwg
cjIzMDkzMiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAzMGY2NDZlYzc4ODYwMDlkMDgwYjdmY2U4NzJmOTBjMzdjMGJjNjZmLi4w
MTE0ZjIwNThmYWJhOWEyZGUwMTI4NTk3MGE2NjBhZDc0OTQ5ZGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzY1LDcgKzIz
NjUsNiBAQAogCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOTU5RTEx
QjhCQzIyQjAwNEQ5Mzg1IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcg
LyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVS
ZXF1ZXN0VHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTgzQjk2ODdCMTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk2
ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLzsgfTsKLQkJ
ODNCOUU3MEIyMDg2QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I5RTcwOTIwODZC
QTI3MDBFNUQ3NTYgLyogSlNET01Db252ZXJ0V2luZG93UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0JCNUM4ODFENUQ2RjQ1MDA1QTcx
RjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVz
Y2VuZGFudHNDb2xsZWN0aW9uLmggKi87IH07CiAJCTgzQzA1QTVCMUE2ODYyMTIwMDdFNURFQSAv
KiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9OwogCQk4M0MxRDQyNTE3OEQ1QUI0
MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0FyY0Ficy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNDMUQ0MTMxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhT
ZWdBcmNBYnMuaCAqLzsgfTsKQEAgLTk4NzcsNyArOTg3Niw2IEBACiAJCTgzQjc0RUYyMUYzRTBC
RDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVw
YWxpdmVSZXF1ZXN0VHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBL
ZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
M0I5Njg3OTE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0I5RTcwOTIwODZCQTI3MDBFNUQ3NTYgLyogSlNE
T01Db252ZXJ0V2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNET01Db252ZXJ0V2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNDMDVBNTgxQTY4NjIxMjAwN0U1REVB
IC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAv
KiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5ODM1LDcgKzE5ODMzLDYgQEAKIAkJCQk3QzhFMzRBQTFF
NEEzMzhFMDA1NENFMjMgLyogSlNET01Db252ZXJ0VmFyaWFkaWMuaCAqLywKIAkJCQk3Q0JBNUJB
NjFGMEI0QkRFMDAzNEQ3NDUgLyogSlNET01Db252ZXJ0V2ViR0wuY3BwICovLAogCQkJCTdDOEUz
NEFCMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5oICovLAotCQkJCTgzQjlF
NzA5MjA4NkJBMjcwMEU1RDc1NiAvKiBKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oICovLAogCQkJ
CTdDOEUzNEFDMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIu
aCAqLywKIAkJCSk7CiAJCQluYW1lID0gQ29udmVyc2lvbnM7CkBAIC0yODQxNiw3ICsyODQxMyw2
IEBACiAJCQkJN0M4RTM0QzQxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFVuaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRDNTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252
ZXJ0VmFyaWFkaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEM2MUU0QTMzQjAwMDU0Q0Uy
MyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODNCOUU3MEIyMDg2
QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QzhFMzRDNzFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0WFBhdGhOU1Jlc29s
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQzlFMEU0RDE2NDE5QzFFMDAzOTJCRTMgLyogSlNE
T01DU1NOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEN0MxMEQyOUE0NjMwMEI5
OTE4RiAvKiBKU0RPTUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
SURMVHlwZXMuaAppbmRleCA1ZmU3N2U4M2YyM2RhMmIxYjQyMGQxZTM5MmRlYTlkYzA3ZmIxYzgw
Li44MDU3ZGZhMTE1ODg4ZDNkYjRhMGYwYmUyNmI0YzY2MmI2OWM3ODdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL0lETFR5cGVzLmgKQEAgLTI3NCw3ICsyNzQsNiBAQCBzdHJ1Y3QgSURMU2NoZWR1bGVk
QWN0aW9uIDogSURMVHlwZTxzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPj4geyB9Owog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IElE
TFdyYXBwZXI8VD4geyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETEV2ZW50TGlz
dGVuZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJ
RExYUGF0aE5TUmVzb2x2ZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKLXN0cnVjdCBJRExXaW5kb3dQ
cm94eSA6IElETFdyYXBwZXI8SlNXaW5kb3dQcm94eT4geyB9OwogCiBzdHJ1Y3QgSURMSURCS2V5
IDogSURMV3JhcHBlcjxJREJLZXk+IHsgfTsKIHN0cnVjdCBJRExJREJLZXlEYXRhIDogSURMV3Jh
cHBlcjxJREJLZXlEYXRhPiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0V2luZG93UHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODJjMWZmNDgxOTJkZTVjMjA4MmRiN2IzZGUwYWMzYmFhNGIzNGM3Yy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIK
LSNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCi0jaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTQ29udmVydGVy
PElETFdpbmRvd1Byb3h5PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUg
PSB0cnVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9IGZh
bHNlOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgVSYmIHZhbHVlKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsKLSAgICB9Ci19
OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCmlu
ZGV4IDE4ODY3MWU0OWIxZjE0MzE1Yzk4Njc3MWQwN2JhNmY4M2UxYWJkMjcuLmE0YjE4MDVjNjUy
ZTIzMjBiZmQ3OWEwOTc5Mjc5YWNjMDg3YjY5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2luZG93UHJveHkuY3BwCkBAIC0xMTksNiArMTE5LDEyIEBAIHZvaWQgSlNXaW5k
b3dQcm94eTo6c2V0V2luZG93KEFic3RyYWN0RE9NV2luZG93JiBkb21XaW5kb3cpCiAgICAgQVNT
RVJUKHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkgPT0gd2luZG93KTsKIH0KIAorV2luZG93UHJv
eHkqIEpTV2luZG93UHJveHk6OndpbmRvd1Byb3h5KCkgY29uc3QKK3sKKyAgICBhdXRvJiB3aW5k
b3cgPSB3cmFwcGVkKCk7CisgICAgcmV0dXJuIHdpbmRvdy5mcmFtZSgpID8gJndpbmRvdy5mcmFt
ZSgpLT53aW5kb3dQcm94eSgpIDogbnVsbHB0cjsKK30KKwogdm9pZCBKU1dpbmRvd1Byb3h5Ojph
dHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKIHsKICAgICBhdXRvKiBnbG9i
YWxPYmplY3QgPSB3aW5kb3coKTsKQEAgLTEzOCwxMiArMTQ0LDYgQEAgQWJzdHJhY3RET01XaW5k
b3cmIEpTV2luZG93UHJveHk6OndyYXBwZWQoKSBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8SlNE
T01XaW5kb3dCYXNlKj4od2luZG93KS0+d3JhcHBlZCgpOwogfQogCi1BYnN0cmFjdERPTVdpbmRv
dyogSlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKFZNJiB2bSwgSlNPYmplY3QqIHZhbHVlKQotewot
ICAgIGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTV2luZG93UHJveHkqPih2bSwgdmFs
dWUpOwotICAgIHJldHVybiB3cmFwcGVyID8gJndyYXBwZXItPndyYXBwZWQoKSA6IG51bGxwdHI7
Ci19Ci0KIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBXaW5kb3dQcm94eSYgd2luZG93
UHJveHkpCiB7CiAgICAgcmV0dXJuICZ3aW5kb3dQcm94eS5qc1dpbmRvd1Byb3h5KGN1cnJlbnRX
b3JsZCgqc3RhdGUpKTsKQEAgLTE1NCw0ICsxNTQsMTQgQEAgSlNXaW5kb3dQcm94eSYgdG9KU1dp
bmRvd1Byb3h5KFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKICAgICByZXR1cm4gd2luZG93UHJveHkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiB9CiAKK1dp
bmRvd1Byb3h5KiBKU1dpbmRvd1Byb3h5Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVl
KQoreworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBpZiAob2JqZWN0
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNX
aW5kb3dQcm94eSo+KG9iamVjdCktPndpbmRvd1Byb3h5KCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2luZG93UHJveHkuaAppbmRleCAxODVhNTQ1NzhiZjgxNzdjZmNhMTc1YzZlNGIxMWY0NzQ4
YTQwOTQ4Li4zNjI0MGQ4NjZlOGYxMGRhZDYyMWRiZGQ5OWVmYjE3ZTE4MWJkZDk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oCkBAIC0yOCw3ICsyOCw5IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTUHJveHkuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zOSw3
ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJhY3RET01XaW5kb3c7
CiBjbGFzcyBBYnN0cmFjdEZyYW1lOwotY2xhc3MgV2luZG93UHJveHk7CiAKIGNsYXNzIEpTV2lu
ZG93UHJveHkgZmluYWwgOiBwdWJsaWMgSlNDOjpKU1Byb3h5IHsKICAgICB1c2luZyBCYXNlID0g
SlNDOjpKU1Byb3h5OwpAQCAtNTMsOCArNTQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2lu
ZG93KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgc2V0V2luZG93KEFi
c3RyYWN0RE9NV2luZG93Jik7CiAKKyAgICBXaW5kb3dQcm94eSogd2luZG93UHJveHkoKSBjb25z
dDsKKwogICAgIEFic3RyYWN0RE9NV2luZG93JiB3cmFwcGVkKCkgY29uc3Q7Ci0gICAgc3RhdGlj
IFdFQkNPUkVfRVhQT1JUIEFic3RyYWN0RE9NV2luZG93KiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpT
Qzo6SlNPYmplY3QqKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgV2luZG93UHJveHkqIHRv
V3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKIAogICAgIERPTVdyYXBwZXJXb3JsZCYg
d29ybGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CiAKQEAgLTcxLDEwICs3NCwxNiBAQCBwcml2YXRl
OgogLy8gSXQgaXMsIGhvd2V2ZXIsIHN0cm9uZ2x5IG93bmVkIGJ5IEFic3RyYWN0RnJhbWUgdmlh
IGl0cyBXaW5kb3dQcm94eSwgc28gd2UgY2FuIGdldCBvbmUgZnJvbSBhIFdpbmRvd1Byb3h5Lgog
V0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBXaW5kb3dQ
cm94eSYpOwogaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
V2luZG93UHJveHkqIHdpbmRvd1Byb3h5KSB7IHJldHVybiB3aW5kb3dQcm94eSA/IHRvSlMoc3Rh
dGUsICp3aW5kb3dQcm94eSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1pbmxpbmUgSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBSZWZQdHI8V2luZG93UHJveHk+JiB3
aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwgd2luZG93UHJveHkuZ2V0KCkpOyB9Citp
bmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamVjdCosIFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwg
d2luZG93UHJveHkpOyB9CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXaW5kb3dQcm94eSogd2lu
ZG93UHJveHkpIHsgcmV0dXJuIHdpbmRvd1Byb3h5ID8gdG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0
LCAqd2luZG93UHJveHkpIDogSlNDOjpqc051bGwoKTsgfQogCiBKU1dpbmRvd1Byb3h5JiB0b0pT
V2luZG93UHJveHkoV2luZG93UHJveHkmLCBET01XcmFwcGVyV29ybGQmKTsKIGlubGluZSBKU1dp
bmRvd1Byb3h5KiB0b0pTV2luZG93UHJveHkoV2luZG93UHJveHkqIHdpbmRvd1Byb3h5LCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKSB7IHJldHVybiB3aW5kb3dQcm94eSA/ICZ0b0pTV2luZG93UHJv
eHkoKndpbmRvd1Byb3h5LCB3b3JsZCkgOiBudWxscHRyOyB9CiAKIAordGVtcGxhdGU8PiBzdHJ1
Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFdpbmRvd1Byb3h5PiB7CisgICAgdXNpbmcg
V3JhcHBlckNsYXNzID0gSlNXaW5kb3dQcm94eTsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5U
eXBlID0gV2luZG93UHJveHkqOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwCmluZGV4IDhlOGY1MTM1M2VkMWY3
YTBiNWIzZjkzMDRjZjgxYzhhYWNiNzViNWUuLmFiMjQ1YjI0Nzg0YWQ3NzczODZlYzUzNDhmM2Ey
NjkyNDdlODAxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRv
d1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5j
cHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSlNXaW5kb3dQcm94
eS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgog
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtNTMsMTIgKzU0LDE2IEBAIFdpbmRvd1Byb3h5OjpX
aW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJiBmcmFtZSkKIH0KIAogV2luZG93UHJveHk6On5XaW5k
b3dQcm94eSgpCit7CisgICAgZGVzdHJveUFsbEpTV2luZG93UHJveGllcygpOworfQorCit2b2lk
IFdpbmRvd1Byb3h5OjpkZXN0cm95QWxsSlNXaW5kb3dQcm94aWVzKCkKIHsKICAgICAvLyBJdCdz
IGxpa2VseSB0aGF0IGRlc3Ryb3lpbmcgd2luZG93UHJveGllcyB3aWxsIGNyZWF0ZSBhIGxvdCBv
ZiBnYXJiYWdlLgogICAgIGlmICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIHdoaWxlICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBh
dXRvIGl0ID0gbV9qc1dpbmRvd1Byb3hpZXMuYmVnaW4oKTsKLSAgICAgICAgICAgIGl0LT52YWx1
ZS0+d2luZG93KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CiAgICAgICAgICAgICBkZXN0
cm95SlNXaW5kb3dQcm94eSgqaXQtPmtleSk7CiAgICAgICAgIH0KICAgICAgICAgY29sbGVjdEdh
cmJhZ2VBZnRlcldpbmRvd1Byb3h5RGVzdHJ1Y3Rpb24oKTsKQEAgLTkxLDYgKzk2LDExIEBAIFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU1dpbmRvd1Byb3h5Pj4gV2luZG93UHJveHk6OmpzV2luZG93UHJv
eGllc0FzVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fanNXaW5kb3dQ
cm94aWVzLnZhbHVlcygpKTsKIH0KIAorSlNET01HbG9iYWxPYmplY3QqIFdpbmRvd1Byb3h5Ojpn
bG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICByZXR1cm4ganNXaW5k
b3dQcm94eSh3b3JsZCkud2luZG93KCk7Cit9CisKIEpTV2luZG93UHJveHkmIFdpbmRvd1Byb3h5
OjpjcmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaAppbmRleCA3NzcyMjk4M2IwYTMyMmNkMDY3
ZGZiNTA2MmRhMDc3N2E2OGU2NWY4Li44NDY3MDIwOTA3NWY3MzJmNWVlMTUxMTgyN2Q2ZDhiMDgy
ZWY4ODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmgKQEAgLTIw
LDcgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU1dpbmRvd1Byb3h5Lmgi
CisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApAQCAtMzAsNyArMzAsMTAgQEAg
Y2xhc3MgRGVidWdnZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWJzdHJhY3RE
T01XaW5kb3c7CiBjbGFzcyBBYnN0cmFjdEZyYW1lOworY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7
CitjbGFzcyBKU1dpbmRvd1Byb3h5OwogCiBjbGFzcyBXaW5kb3dQcm94eSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00MCw2ICs0Myw4IEBAIHB1YmxpYzoKICAgICBleHBsaWNp
dCBXaW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJik7CiAgICAgfldpbmRvd1Byb3h5KCk7CiAKKyAg
ICBBYnN0cmFjdEZyYW1lJiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KKwogICAg
IHZvaWQgZGVzdHJveUpTV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICBQcm94
eU1hcDo6VmFsdWVzQ29uc3RJdGVyYXRvclJhbmdlIGpzV2luZG93UHJveGllcygpIGNvbnN0IHsg
cmV0dXJuIG1fanNXaW5kb3dQcm94aWVzLnZhbHVlcygpOyB9CkBAIC02MywxMCArNjgsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAoaXQgIT0gbV9qc1dpbmRvd1Byb3hpZXMuZW5kKCkpID8g
aXQtPnZhbHVlLmdldCgpIDogbnVsbHB0cjsKICAgICB9CiAKLSAgICBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCi0gICAgewotICAgICAgICBy
ZXR1cm4ganNXaW5kb3dQcm94eSh3b3JsZCkud2luZG93KCk7Ci0gICAgfQorICAgIFdFQkNPUkVf
RVhQT1JUIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJik7
CiAKICAgICB2b2lkIGNsZWFySlNXaW5kb3dQcm94aWVzTm90TWF0Y2hpbmdET01XaW5kb3coQWJz
dHJhY3RET01XaW5kb3cqLCBib29sIGdvaW5nSW50b1BhZ2VDYWNoZSk7CiAKQEAgLTgwLDYgKzgy
LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVmKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkZXJlZigpOwogCisgICAgdm9pZCBkZXN0cm95QWxsSlNXaW5kb3dQcm94
aWVzKCk7CisKIHByaXZhdGU6CiAgICAgSlNXaW5kb3dQcm94eSYgY3JlYXRlSlNXaW5kb3dQcm94
eShET01XcmFwcGVyV29ybGQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBKU1dpbmRvd1Byb3h5JiBj
cmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBt
CmluZGV4IDk1MjQyOWEwZTQ5Nzc0YmFkMjJjMWU1OGViYjJlNGVkZGJhZDNiNjMuLjJmY2ZlZTNh
N2FhOGYyMmYyNmViZGRiNmE0ZTI4ZmEwMzhiMmY0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTg5MSw3ICs4OTEsNiBAQCBz
dWIgSXNCdWlsdGluVHlwZQogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5T
UmVzb2x2ZXIiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJhbnkiOwogICAgIHJl
dHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJvYmplY3QiOwotICAgIHJldHVybiAxIGlmICR0eXBl
LT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTEwMDEsNiAr
MTAwMCw3IEBAIHN1YiBDb21wdXRlSXNDYWxsYmFja0ludGVyZmFjZQogICAgIGFzc2VydCgiTm90
IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5s
ZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5
cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsKIAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5u
YW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlw
ZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBc
IiR0eXBlTmFtZVwiIVxuIik7CkBAIC0xMDM4LDYgKzEwMzgsNyBAQCBzdWIgQ29tcHV0ZUlzQ2Fs
bGJhY2tGdW5jdGlvbgogICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUg
IklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5sZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlw
ZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsK
IAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9i
amVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlwZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9U
IGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlTmFtZVwiIVxuIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4
IDYyNmE5ZjBiMmQ2ZjA0M2NmOTJiZGYzMmYyOTYyODkyNjExNmU1ZTQuLjMwYTM3NGMyODI0ZmEy
NjA4MjQyYWEzODcxMDk4NDIwMmI1ZDBlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00MjEsMTMgKzQyMSw2IEBAIHN1
YiBBZGRUb0luY2x1ZGVzRm9ySURMVHlwZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKCR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSIpIHsKLSAgICAgICAgQWRkVG9JbmNsdWRl
cygiV2luZG93UHJveHkuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAg
QWRkVG9JbmNsdWRlcygiSlNXaW5kb3dQcm94eS5oIiwgJGluY2x1ZGVzUmVmLCAkY29uZGl0aW9u
YWwpOwotICAgICAgICBBZGRUb0luY2x1ZGVzKCJKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIiwg
JGluY2x1ZGVzUmVmLCAkY29uZGl0aW9uYWwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7CiAgICAgICAgIEFk
ZFRvSW5jbHVkZXMoIkpTRE9NQ29udmVydFN0cmluZ3MuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRp
dGlvbmFsKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjM5Myw3ICs2Mzg2LDYgQEAgc3ViIEdldEJh
c2VJRExUeXBlCiAgICAgICAgICJKU09OIiA9PiAiSURMSlNPTiIsCiAgICAgICAgICJTY2hlZHVs
ZWRBY3Rpb24iID0+ICJJRExTY2hlZHVsZWRBY3Rpb24iLAogICAgICAgICAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlIiA9PiAiSURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4iLAotICAgICAgICAiV2luZG93UHJveHkiID0+ICJJRExXaW5kb3dQcm94eSIsCiAgICAg
ICAgICJYUGF0aE5TUmVzb2x2ZXIiID0+ICJJRExYUGF0aE5TUmVzb2x2ZXI8WFBhdGhOU1Jlc29s
dmVyPiIsCiAgICAgKTsKIApAQCAtNjU1NCw3ICs2NTQ2LDYgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1
ZURPTUNvbnZlcnROZWVkc1N0YXRlCiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIkpT
T04iOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwot
ICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAgICAgCiAgICAg
cmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGJhNDViYjk4ZjIxYTYzMzkwOWQyYmU4ZTBhMWZl
MmRjNzI2YTM0NWYuLmMwNDY2YzI2NmI3MzdmNmM4ODVkMmFhZmQwNWI1ZjE2ZjY4MmQ1MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCkBAIC01NSw3ICs1NSw2IEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIK
ICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCIKICNpbmNsdWRlICJK
U0RPTVN0cmluZ0xpc3QuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpT
RE9NV2luZG93QmFzZS5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiSlNEb2N1bWVudC5oIgpAQCAtNjk1Nyw3ICs2OTU2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDlCb2QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8g
d2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8RE9NV2luZG93Pj4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwg
IndpbmRvdyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiRE9NV2luZG93Iik7
IH0pOworICAgIGF1dG8gd2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8V2luZG93UHJveHk+
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAwLCAid2luZG93IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhv
ZCIsICJXaW5kb3dQcm94eSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqd2luZG93
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNzAyOSw3
ICs3MDI4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZE92ZXIKICAgICAgICAgICAgIHJldHVybiBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2Qm9keShzdGF0ZSwgY2Fz
dGVkVGhpcywgdGhyb3dTY29wZSk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09i
amVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNUZXN0T2Jq
Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kOEJvZHkoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwotICAgICAg
ICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiAoYXNPYmplY3QoZGlzdGluZ3Vp
c2hpbmdBcmcpLT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkgfHwgYXNPYmplY3QoZGlzdGlu
Z3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU0RPTVdpbmRvdz4odm0pKSkKKyAgICAgICAgaWYgKGRp
c3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcp
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOUJvZHkoc3RhdGUsIGNhc3RlZFRo
aXMsIHRocm93U2NvcGUpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzPEpTQmxvYj4odm0pKQog
ICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDEzQm9keShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggYzgzZWVlZWRi
ZjQxNjNmODMyYmNkMjUzZWMwNTc1Njg0NmVlZDY4NC4uNzFkZGZjNDg5ZWQyZDVkYTI1NmZiNWM0
MzBiOTMyZWJkYzRmODcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMjg2LDcgKzI4Niw3IEBAIGVudW0gVGVzdENvbmZpZGVu
Y2UgeyAiaGlnaCIsICJraW5kYS1sb3ciIH07CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9k
KERPTVN0cmluZ0xpc3Q/IGxpc3RBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChz
ZXF1ZW5jZTxET01TdHJpbmc+PyBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0
aG9kKFRlc3RPYmogb2JqQXJnKTsKLSAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoRE9NV2lu
ZG93IHdpbmRvdyk7CisgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFdpbmRvd1Byb3h5IHdp
bmRvdyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKHNlcXVlbmNlPERPTVN0cmluZz4g
YXJyYXlBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChzZXF1ZW5jZTx1bnNpZ25l
ZCBsb25nPiBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmlu
ZyBzdHJBcmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCmluZGV4IDBl
MzhhNjcxOGNkMWRhZDJlNzkwMjhiODkwMDU2YTZmY2I2NDJjOTAuLjAwN2FmN2Q3MjRmNWMzZTRh
MGEzNjExMjU2NmM0ODJlZDZmZDU5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NpdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25F
dmVudC5jcHAKQEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb21wb3Np
dGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KCkgPSBkZWZhdWx0OwogCi1Db21wb3NpdGlvbkV2
ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRE9NV2luZG93
KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgOiBVSUV2ZW50KHR5cGUsIHRydWUsIHRy
dWUsIHZpZXcsIDApCitDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKKyAgICA6IFVJRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwg
MCkKICAgICAsIG1fZGF0YShkYXRhKQogewogfQpAQCAtNDUsMTIgKzQ1LDEyIEBAIENvbXBvc2l0
aW9uRXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25z
dCBJbml0JiBpbml0aWFsCiAKIENvbXBvc2l0aW9uRXZlbnQ6On5Db21wb3NpdGlvbkV2ZW50KCkg
PSBkZWZhdWx0OwogCi12b2lkIENvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCit2b2lkIENvbXBvc2l0aW9u
RXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcs
IGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxh
YmxlLCB2aWV3LCAwKTsKKyAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIFdURk1vdmUodmlldyksIDApOwogCiAgICAgbV9kYXRhID0gZGF0YTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCmluZGV4IDhmZjAyZWM5Njk3NzhiODg1YTYzMTcwMjRj
OTU3NDc2ZTAyMWIyYTYuLjNiMWM0NmQ2MzVlY2FmNmNkMDkxOTA5OGY1MDhmYzQxZTY0Y2ViY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaApAQCAtMzIsOSArMzIsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbXBvc2l0aW9uRXZlbnQgZmluYWwgOiBwdWJs
aWMgVUlFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0
cmluZyYgZGF0YSkKKyAgICBzdGF0aWMgUmVmPENvbXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBT
dHJpbmcmIGRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21wb3Np
dGlvbkV2ZW50KHR5cGUsIHZpZXcsIGRhdGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ29tcG9zaXRpb25FdmVudCh0eXBlLCBXVEZNb3ZlKHZpZXcpLCBkYXRhKSk7CiAgICAgfQog
CiAgICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbXBvc2l0aW9uRXZlbnQo
KTsKIAotICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBT
dHJpbmcmIGRhdGEpOworICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAKICAgICBTdHJpbmcgZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBDb21wb3NpdGlvbkV2ZW50KCk7Ci0gICAgQ29tcG9zaXRpb25FdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYpOworICAgIENv
bXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8V2luZG93UHJv
eHk+JiYsIGNvbnN0IFN0cmluZyYpOwogICAgIENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJvb2wgaXNDb21w
b3NpdGlvbkV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zaXRpb25FdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRp
b25FdmVudC5pZGwKaW5kZXggZDg3MjQwODgzZTI3ZDNiMzQ1ODUzOWViOTIwZjRkM2YyODcxNjZj
NC4uMjBhYWM3ZWE0NzcwZDU2NTllZDQwOTEwZDdhYTc5NTA4ZTY2MTgzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIHZvaWQg
aW5pdENvbXBvc2l0aW9uRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZp
bmVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY2Fu
QnViYmxlQXJnID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25h
bCBib29sZWFuIGNhbmNlbGFibGVBcmcgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlld0FyZyA9IG51bGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlld0FyZyA9IG51bGwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBET01TdHJpbmcgZGF0YUFyZyA9
ICJ1bmRlZmluZWQiKTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDg2ZjgzZTcy
NjQyM2FjNDU0MzVkMzJiZWYwNDk0ZTk5NDllMDU0OTkuLjc4ZjhiZTI3ZTk0MGU0OWE2MDM0OTAx
OTcyOWUzNTJkNTI5NmE2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDI4MCw2ICs0
MjgwLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnRha2VET01XaW5kb3dGcm9tKERvY3VtZW50KiBkb2N1
bWVudCkKICAgICBBU1NFUlQobV9kb21XaW5kb3ctPmZyYW1lKCkgPT0gbV9mcmFtZSk7CiB9CiAK
K1dpbmRvd1Byb3h5KiBEb2N1bWVudDo6ZGVmYXVsdFZpZXcoKSBjb25zdAoreworICAgIGlmICgh
bV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZtX2ZyYW1lLT53
aW5kb3dQcm94eSgpOworfQorCiBEb2N1bWVudCYgRG9jdW1lbnQ6OmNvbnRleHREb2N1bWVudCgp
IGNvbnN0CiB7CiAgICAgaWYgKG1fY29udGV4dERvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCBhNGZiMDJmOWUxYmNiZDQwMGIwY2M4NjUyYWJkNDA0ZjAxYzQ1OTVmLi44NWEyNTY1MjFi
N2NiNzgxNjRjYTQ4ZjYwMDFjYjY4NWIwNTdhNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
Nzk5LDcgKzc5OSw3IEBAIHB1YmxpYzoKIAogICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29u
c3QgeyByZXR1cm4gbV9kb21XaW5kb3cuZ2V0KCk7IH0KICAgICAvLyBJbiBET00gTGV2ZWwgMiwg
dGhlIERvY3VtZW50J3MgRE9NV2luZG93IGlzIGNhbGxlZCB0aGUgZGVmYXVsdFZpZXcuCi0gICAg
RE9NV2luZG93KiBkZWZhdWx0VmlldygpIGNvbnN0IHsgcmV0dXJuIGRvbVdpbmRvdygpOyB9IAor
ICAgIFdFQkNPUkVfRVhQT1JUIFdpbmRvd1Byb3h5KiBkZWZhdWx0VmlldygpIGNvbnN0OwogCiAg
ICAgRG9jdW1lbnQmIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4
dERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkgeyBtX2NvbnRleHREb2N1bWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZVdlYWtQdHIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXggMmQ1YmFh
ZDhjNjA2NDRkYTg5ZDEwN2ZkZGUxODI4Y2Q4YTQ5ZDgyYi4uMDhmNzJhOTIwMDBkM2FjMjBhNjQ0
YzBlNWJjMzQ4MmI0NzVlZGE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0xMTMsNyAr
MTEzLDcgQEAgdHlwZWRlZiAoCiAgICAgW0NFUmVhY3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJs
ZURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB3cml0ZWxuKERPTVN0cmluZy4uLiB0
ZXh0KTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24uCi0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVdpbmRvdz8gZGVmYXVsdFZpZXc7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1By
b3h5PyBkZWZhdWx0VmlldzsKICAgICBib29sZWFuIGhhc0ZvY3VzKCk7CiAgICAgW0NFUmVhY3Rp
b25zXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlc2lnbk1vZGU7CiAgICAgW0NFUmVhY3Rpb25zXSBi
b29sZWFuIGV4ZWNDb21tYW5kKERPTVN0cmluZyBjb21tYW5kSWQsIG9wdGlvbmFsIGJvb2xlYW4g
c2hvd1VJID0gZmFsc2UsIG9wdGlvbmFsIERPTVN0cmluZz8gdmFsdWUgPSBudWxsKTsgLy8gRklY
TUU6IHZhbHVlIHNob3VsZCBub3QgYmUgbnVsbGFibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRUb3VjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRU
b3VjaC5jcHAKaW5kZXggM2Q5MTIzZDhmNzUzMmNiNGRiNzlhNGExMzM1ZDVmMTcyOGNjNTA5YS4u
NWQxMjZjM2MzMjQ3MTRmMzlmOWY5NmUxNjM2OWMwMTg3ODQ3YTgwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFRvdWNoLmNwcApAQCAtMjgsMjAgKzI4LDI3IEBACiAKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlRvdWNoLmgiCiAjaW5jbHVkZSAiVG91
Y2hMaXN0LmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZWY8VG91Y2g+IERvY3VtZW50VG91Y2g6OmNyZWF0ZVRvdWNoKERvY3VtZW50JiBkb2N1
bWVudCwgRE9NV2luZG93KiB3aW5kb3csIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBpZGVudGlm
aWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQg
cmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKQor
UmVmPFRvdWNoPiBEb2N1bWVudFRvdWNoOjpjcmVhdGVUb3VjaChEb2N1bWVudCYgZG9jdW1lbnQs
IFJlZlB0cjxXaW5kb3dQcm94eT4mJiB3aW5kb3csIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBp
ZGVudGlmaWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5Z
LCBpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZv
cmNlKQogeworICAgIEZyYW1lKiBmcmFtZTsKKyAgICBpZiAod2luZG93ICYmIGlzPEZyYW1lPih3
aW5kb3ctPmZyYW1lKCkpKQorICAgICAgICBmcmFtZSA9ICZkb3duY2FzdDxGcmFtZT4od2luZG93
LT5mcmFtZSgpKTsKKyAgICBlbHNlCisgICAgICAgIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsK
KwogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciBmcm9tIHRoZSBkb2N1bWVudGF0aW9uIGF0
CiAgICAgLy8gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9zYWZhcmkvI2RvY3Vt
ZW50YXRpb24vVXNlckV4cGVyaWVuY2UvUmVmZXJlbmNlL0RvY3VtZW50QWRkaXRpb25zUmVmZXJl
bmNlL0RvY3VtZW50QWRkaXRpb25zL0RvY3VtZW50QWRkaXRpb25zLmh0bWwKICAgICAvLyB3aGVu
IHRoaXMgbWV0aG9kIHNob3VsZCB0aHJvdyBhbmQgbm9yIGlzIGl0IGJ5IGluc3BlY3Rpb24gb2Yg
aU9TIGJlaGF2aW9yLiBJdCB3b3VsZCBiZSBuaWNlIHRvIHZlcmlmeSBhbnkgY2FzZXMgd2hlcmUg
aXQgdGhyb3dzIHVuZGVyIGlPUwogICAgIC8vIGFuZCBpbXBsZW1lbnQgdGhlbSBoZXJlLiBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3ODE5Ci0gICAgcmV0dXJu
IFRvdWNoOjpjcmVhdGUod2luZG93ID8gd2luZG93LT5mcmFtZSgpIDogZG9jdW1lbnQuZnJhbWUo
KSwgdGFyZ2V0LCBpZGVudGlmaWVyLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksIHJh
ZGl1c1gsIHJhZGl1c1ksIHJvdGF0aW9uQW5nbGUsIGZvcmNlKTsKKyAgICByZXR1cm4gVG91Y2g6
OmNyZWF0ZShmcmFtZSwgdGFyZ2V0LCBpZGVudGlmaWVyLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdl
WCwgcGFnZVksIHJhZGl1c1gsIHJhZGl1c1ksIHJvdGF0aW9uQW5nbGUsIGZvcmNlKTsKIH0KIAog
UmVmPFRvdWNoTGlzdD4gRG9jdW1lbnRUb3VjaDo6Y3JlYXRlVG91Y2hMaXN0KERvY3VtZW50Jiwg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmIHRvdWNoZXMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50VG91Y2guaAppbmRleCBlMGRhZjUwNTJjYzk3ODUyYzhhMDRiYmE3M2U1ZjZh
MTE2ZjEwZTUxLi43MmM0ODg4YjQ1YWI0MDBlMjliYzhhZWQ4NmRlNGM1OTAzZWFjMjIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmgKQEAgLTM0LDE1ICszNCwxNSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
RXZlbnRUYXJnZXQ7CiBjbGFzcyBUb3VjaDsKIGNsYXNzIFRvdWNoTGlzdDsKK2NsYXNzIFdpbmRv
d1Byb3h5OwogCiBjbGFzcyBEb2N1bWVudFRvdWNoIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFRvdWNoPiBjcmVhdGVUb3VjaChEb2N1bWVudCYsIERPTVdpbmRvdyosIEV2ZW50VGFyZ2V0Kiwg
aW50IGlkZW50aWZpZXIsIGludCBwYWdlWCwgaW50IHBhZ2VZLCBpbnQgc2NyZWVuWCwgaW50IHNj
cmVlblksIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSwgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxv
YXQgZm9yY2UpOworICAgIHN0YXRpYyBSZWY8VG91Y2g+IGNyZWF0ZVRvdWNoKERvY3VtZW50Jiwg
UmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBFdmVudFRhcmdldCosIGludCBpZGVudGlmaWVyLCBpbnQg
cGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcmFkaXVzWCwg
aW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKTsKICAgICBzdGF0
aWMgUmVmPFRvdWNoTGlzdD4gY3JlYXRlVG91Y2hMaXN0KERvY3VtZW50JiwgVmVjdG9yPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFRvdWNoLmlkbAppbmRleCA3YTI3Mzc0NTg2NTQ5OTFiMTFiNTU2MzA4OWUyMTk1N2NjNGM0ZTRh
Li4wNDg5YTM2YWQ2YjEyNTAzY2RiNDZhZjE0OGNiNTljZmFmZDY3NWJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50VG91Y2guaWRsCkBAIC0yMiw3ICsyMiw3IEBACiAgICAgQ29uZGl0aW9uYWw9
VE9VQ0hfRVZFTlRTCiBdIHBhcnRpYWwgaW50ZXJmYWNlIERvY3VtZW50IHsKICAgICAvLyBGSVhN
RTogVGhpcyBoYXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlIHN0YW5kYXJkIG5vdyB0aGF0IFRvdWNo
IGhhcyBhIGNvbnN0cnVjdG9yLgotICAgIFtOZXdPYmplY3RdIFRvdWNoIGNyZWF0ZVRvdWNoKG9w
dGlvbmFsIERPTVdpbmRvdz8gd2luZG93ID0gbnVsbCwgb3B0aW9uYWwgRXZlbnRUYXJnZXQ/IHRh
cmdldCA9IG51bGwsCisgICAgW05ld09iamVjdF0gVG91Y2ggY3JlYXRlVG91Y2gob3B0aW9uYWwg
V2luZG93UHJveHk/IHdpbmRvdyA9IG51bGwsIG9wdGlvbmFsIEV2ZW50VGFyZ2V0PyB0YXJnZXQg
PSBudWxsLAogICAgICAgICBvcHRpb25hbCBsb25nIGlkZW50aWZpZXIgPSAwLAogICAgICAgICBv
cHRpb25hbCBsb25nIHBhZ2VYID0gMCwgb3B0aW9uYWwgbG9uZyBwYWdlWSA9IDAsIG9wdGlvbmFs
IGxvbmcgc2NyZWVuWCA9IDAsIG9wdGlvbmFsIGxvbmcgc2NyZWVuWSA9IDAsCiAgICAgICAgIG9w
dGlvbmFsIGxvbmcgd2Via2l0UmFkaXVzWCA9IDAsIG9wdGlvbmFsIGxvbmcgd2Via2l0UmFkaXVz
WSA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAKaW5kZXggMTZkOGIzZmYwNzhkMDVhZDkx
ZTJkNjkxNDY3MTkxMjg1NWQ3YzQ4NC4uOTg2ODc3MzI2Y2UzZmFlNGJiMDU5ZTdjMTY0ZDdiYzE4
YWE5ZGZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcApAQCAtNDAsOCArNDAsOCBAQCBi
b29sIEZvY3VzRXZlbnQ6OmlzRm9jdXNFdmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLUZvY3VzRXZlbnQ6OkZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWws
IFJlZlB0cjxFdmVudFRhcmdldD4mJiByZWxhdGVkVGFyZ2V0KQotICAgIDogVUlFdmVudCh0eXBl
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCkKK0ZvY3VzRXZlbnQ6OkZvY3Vz
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2
ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpCisgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKQogICAgICwgbV9yZWxhdGVkVGFy
Z2V0KFdURk1vdmUocmVsYXRlZFRhcmdldCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRm9jdXNFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuaApp
bmRleCAwNjcyNTU3NGMwNmI5MWYyOWZiNGY5NmEwYjFiNTYxMzRmMTk2ODU0Li5jN2E0ZGY4ZTc3
NDMyY2ZlMzY0YTEzNGY4ZGU1MTUxNmEwNTdiODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRm9jdXNFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmgK
QEAgLTM1LDkgKzM1LDkgQEAgY2xhc3MgTm9kZTsKIAogY2xhc3MgRm9jdXNFdmVudCBmaW5hbCA6
IHB1YmxpYyBVSUV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZvY3VzRXZlbnQ+IGNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYm
IHJlbGF0ZWRUYXJnZXQpCisgICAgc3RhdGljIFJlZjxGb2N1c0V2ZW50PiBjcmVhdGUoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYm
IHJlbGF0ZWRUYXJnZXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb2N1
c0V2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCBXVEZNb3Zl
KHJlbGF0ZWRUYXJnZXQpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvY3VzRXZl
bnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIFdU
Rk1vdmUocmVsYXRlZFRhcmdldCkpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPEZvY3VzRXZl
bnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIEZvY3VzRXZlbnQoKSA9IGRlZmF1bHQ7Ci0gICAgRm9jdXNFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdp
bmRvdyosIGludCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmKTsKKyAgICBGb2N1c0V2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQsIFJlZlB0cjxFdmVudFRhcmdldD4mJik7CiAgICAgRm9j
dXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQp
OwogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9JbnB1dEV2ZW50LmNwcAppbmRleCBkNDQ5Mjk0ZmVjNmJjNzk3MGQ2YzQyYzRiOTdh
YjE2MWM0ZjViMWYwLi5jMTdiZjE4ZDg4YTY3NjQ3MmExODcxNjNlN2I0NTE0Zjg0NDAwYTBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuY3BwCkBAIC0yNiwyMCArMjYsMjAgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJJbnB1dEV2ZW50LmgiCiAKLSNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJOb2RlLmgiCisjaW5j
bHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmPElucHV0RXZlbnQ+IElucHV0RXZlbnQ6OmNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIFdlYkNvcmU6OkRPTVdpbmRvdyAqdmlldywgY29uc3Qg
U3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCitS
ZWY8SW5wdXRFdmVudD4gSW5wdXRFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwg
UmVmUHRyPERhdGFUcmFuc2Zlcj4mJiBkYXRhVHJhbnNmZXIsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IElucHV0RXZlbnQoZXZlbnRUeXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJsZSwg
Y2FuY2VsYWJsZSwgdmlldywgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRSYW5n
ZXMsIGRldGFpbCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQoZXZlbnRU
eXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGF0
YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRSYW5nZXMsIGRldGFpbCkpOwogfQogCi1J
bnB1dEV2ZW50OjpJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9N
V2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYg
ZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJh
bmdlcywgaW50IGRldGFpbCkKLSAgICA6IFVJRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIHZpZXcsIGRldGFpbCkKK0lucHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3Qg
U3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCisg
ICAgOiBVSUV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZp
ZXcpLCBkZXRhaWwpCiAgICAgLCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAgLCBtX2RhdGEo
ZGF0YSkKICAgICAsIG1fZGF0YVRyYW5zZmVyKGRhdGFUcmFuc2ZlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRF
dmVudC5oCmluZGV4IGNhZDhkY2U3YjM2MjZkOWEyMjc2MzRiMzU4OTI2YzFmMTI1NDY4MWIuLmQw
NTA3NjM5YzZjODljOTlkNGQzMGExY2U5MzZmOTE2MWI5YzRlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0
RXZlbnQuaApAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IERPTVdpbmRvdzsKIGNsYXNzIERhdGFUcmFuc2ZlcjsKK2NsYXNzIFdpbmRvd1Byb3h5OwogCiBj
bGFzcyBJbnB1dEV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogcHVibGljOgpAQCAtMzks
MTMgKzM5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIGRhdGE7CiAgICAgfTsKIAotICAg
IHN0YXRpYyBSZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJh
bnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2Vz
LCBpbnQgZGV0YWlsKTsKKyAgICBzdGF0aWMgUmVmPElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25z
dCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKICAgICBzdGF0aWMg
UmVmPElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IElu
aXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQodHlwZSwgaW5pdGlh
bGl6ZXIsIGlzVHJ1c3RlZCkpOwogICAgIH0KIAotICAgIElucHV0RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0
cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFy
Z2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKKyAgICBJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEs
IFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+
PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKICAgICBJbnB1dEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJvb2wg
aXNJbnB1dEV2ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0tleWJvYXJkRXZlbnQuY3BwCmluZGV4IDRkYTEwMTc3MjVmZTg5MmNmYThkYWNmMGY1Yjcw
ODFkY2M2Y2ZiZTkuLjRhY2I1ZjRjZWI3NjBlMTcwZjEwN2NlYTM4NjA5ODlmNjcyNjRlYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAKKyNpbmNsdWRlICJE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgog
I2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgpAQCAtOTIsOCArOTMsOCBAQCBzdGF0aWMgaW5saW5l
IEtleWJvYXJkRXZlbnQ6OktleUxvY2F0aW9uQ29kZSBrZXlMb2NhdGlvbkNvZGUoY29uc3QgUGxh
dGZvcm1LZXlibwogCiBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudCgpID0gZGVm
YXVsdDsKIAotaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZv
cm1LZXlib2FyZEV2ZW50JiBrZXksIERPTVdpbmRvdyogdmlldykKLSAgICA6IFVJRXZlbnRXaXRo
S2V5U3RhdGUoZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUoa2V5LnR5cGUoKSksIHRydWUs
IHRydWUsIGtleS50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgdmlldywg
MCwga2V5LmN0cmxLZXkoKSwga2V5LmFsdEtleSgpLCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1ldGFL
ZXkoKSwgZmFsc2UsIGtleS5tb2RpZmllcnMoKS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpNb2Rp
Zmllcjo6Q2Fwc0xvY2tLZXkpKQoraW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQo
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3KQorICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGVGb3JLZXlib2FyZEV2ZW50
VHlwZShrZXkudHlwZSgpKSwgdHJ1ZSwgdHJ1ZSwga2V5LnRpbWVzdGFtcCgpLmFwcHJveGltYXRl
TW9ub3RvbmljVGltZSgpLCB2aWV3LmNvcHlSZWYoKSwgMCwga2V5LmN0cmxLZXkoKSwga2V5LmFs
dEtleSgpLCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1ldGFLZXkoKSwgZmFsc2UsIGtleS5tb2RpZmll
cnMoKS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tLZXkpKQogICAg
ICwgbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtS2V5
Ym9hcmRFdmVudD4oa2V5KSkKICNpZiBFTkFCTEUoS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkKICAg
ICAsIG1fa2V5KGtleS5rZXkoKSkKQEAgLTEwNCw3ICsxMDUsNyBAQCBpbmxpbmUgS2V5Ym9hcmRF
dmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwgRE9N
V2luZG93KgogICAgICwgbV9rZXlJZGVudGlmaWVyKGtleS5rZXlJZGVudGlmaWVyKCkpCiAgICAg
LCBtX2xvY2F0aW9uKGtleUxvY2F0aW9uQ29kZShrZXkpKQogICAgICwgbV9yZXBlYXQoa2V5Lmlz
QXV0b1JlcGVhdCgpKQotICAgICwgbV9pc0NvbXBvc2luZyh2aWV3ICYmIHZpZXctPmZyYW1lKCkg
JiYgdmlldy0+ZnJhbWUoKS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkKKyAgICAsIG1faXND
b21wb3NpbmcodmlldyAmJiBpczxET01XaW5kb3c+KHZpZXctPndpbmRvdygpKSAmJiBkb3duY2Fz
dDxET01XaW5kb3c+KCp2aWV3LT53aW5kb3coKSkuZnJhbWUoKSAmJiBkb3duY2FzdDxET01XaW5k
b3c+KCp2aWV3LT53aW5kb3coKSkuZnJhbWUoKS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkK
ICNpZiBVU0UoQVBQS0lUKQogICAgICwgbV9oYW5kbGVkQnlJbnB1dE1ldGhvZChrZXkuaGFuZGxl
ZEJ5SW5wdXRNZXRob2QoKSkKICAgICAsIG1fa2V5cHJlc3NDb21tYW5kcyhrZXkuY29tbWFuZHMo
KSkKQEAgLTEzMiw5ICsxMzMsOSBAQCBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgSW5pdCYgaQogCiBLZXlib2Fy
ZEV2ZW50Ojp+S2V5Ym9hcmRFdmVudCgpID0gZGVmYXVsdDsKIAotUmVmPEtleWJvYXJkRXZlbnQ+
IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIHBsYXRm
b3JtRXZlbnQsIERPTVdpbmRvdyogdmlldykKK1JlZjxLZXlib2FyZEV2ZW50PiBLZXlib2FyZEV2
ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBwbGF0Zm9ybUV2ZW50LCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBL
ZXlib2FyZEV2ZW50KHBsYXRmb3JtRXZlbnQsIHZpZXcpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBLZXlib2FyZEV2ZW50KHBsYXRmb3JtRXZlbnQsIFdURk1vdmUodmlldykpKTsKIH0KIAog
UmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzKCkKQEAg
LTE0NywxMyArMTQ4LDEzIEBAIFJlZjxLZXlib2FyZEV2ZW50PiBLZXlib2FyZEV2ZW50OjpjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgS2V5Ym9hcmRFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7
CiB9CiAKLXZvaWQgS2V5Ym9hcmRFdmVudDo6aW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cq
IHZpZXcsCit2b2lkIEtleWJvYXJkRXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdp
bmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCB1bnNp
Z25lZCBsb2NhdGlvbiwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwg
Ym9vbCBtZXRhS2V5LCBib29sIGFsdEdyYXBoS2V5KQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0
Y2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJi
bGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAgICBtX2tleUlkZW50aWZpZXIg
PSBrZXlJZGVudGlmaWVyOwogICAgIG1fbG9jYXRpb24gPSBsb2NhdGlvbjsKQEAgLTIyNyw4ICsy
MjgsOSBAQCBpbnQgS2V5Ym9hcmRFdmVudDo6Y2hhckNvZGUoKSBjb25zdAogICAgIC8vIEZpcmVm
b3g6IDAgZm9yIGtleWRvd24va2V5dXAgZXZlbnRzLCBjaGFyYWN0ZXIgY29kZSBmb3Iga2V5cHJl
c3MKICAgICAvLyBXZSBtYXRjaCBGaXJlZm94LCB1bmxlc3MgaW4gYmFja3dhcmQgY29tcGF0aWJp
bGl0eSBtb2RlLCB3aGVyZSB3ZSBhbHdheXMgcmV0dXJuIHRoZSBjaGFyYWN0ZXIgY29kZS4KICAg
ICBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUgPSBmYWxzZTsKLSAgICBpZiAodmlldygp
ICYmIHZpZXcoKS0+ZnJhbWUoKSkKLSAgICAgICAgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9
IHZpZXcoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkubmVlZHNLZXlib2FyZEV2ZW50RGlzYW1i
aWd1YXRpb25RdWlya3MoKTsKKyAgICBhdXRvKiB3aW5kb3cgPSB2aWV3KCkgPyB2aWV3KCktPndp
bmRvdygpIDogbnVsbHB0cjsKKyAgICBpZiAoaXM8RE9NV2luZG93Pih3aW5kb3cpICYmIGRvd25j
YXN0PERPTVdpbmRvdz4oKndpbmRvdykuZnJhbWUoKSkKKyAgICAgICAgYmFja3dhcmRDb21wYXRp
YmlsaXR5TW9kZSA9IGRvd25jYXN0PERPTVdpbmRvdz4oKndpbmRvdykuZnJhbWUoKS0+ZXZlbnRI
YW5kbGVyKCkubmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25RdWlya3MoKTsKIAogICAg
IGlmICghbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudCB8fCAodHlwZSgpICE9IGV2ZW50TmFtZXMo
KS5rZXlwcmVzc0V2ZW50ICYmICFiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKSkKICAgICAgICAg
cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaAppbmRleCA4MjEwMzMwZWFiMDM0
MWY0Y2E1NGNkMjVjNThiOTk1NDZmMGIxNWE5Li4xZDNjYzI0Mzc5OWIxOWE3NDRlZTk3OGExODdl
YWVhZWM4ODA1ZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKQEAgLTQzLDcgKzQz
LDcgQEAgcHVibGljOgogICAgICAgICBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCA9IDB4MDMKICAg
ICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxLZXlib2FyZEV2ZW50PiBjcmVh
dGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxLZXlib2FyZEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAgICBzdGF0aWMgUmVmPEtl
eWJvYXJkRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBzdHJ1Y3QgSW5pdCA6IHB1
YmxpYyBFdmVudE1vZGlmaWVySW5pdCB7CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgfktleWJvYXJkRXZlbnQoKTsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAogICAgICAgICBjb25z
dCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIHVuc2lnbmVkIGxvY2F0aW9uLAogICAgICAgICBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIGJvb2wg
YWx0R3JhcGhLZXkgPSBmYWxzZSk7CiAgICAgCkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIEtleWJvYXJkRXZlbnQoKTsKLSAgICBLZXlib2FyZEV2ZW50KGNvbnN0
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYsIERPTVdpbmRvdyopOworICAgIEtleWJvYXJkRXZlbnQo
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAg
ICBLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0
ZWQpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4gbV91bmRl
cmx5aW5nUGxhdGZvcm1FdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXli
b2FyZEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmlkbAppbmRl
eCA3NTdjMDc3OTNmNWU1ZjFlMTg0MzhmNzhkZDQ0N2U5YTNhMWQ1MTA5Li5jZGU0NTBjMzQzNTMz
NTA5MmExNzdkNmRmNjM2OGJmNjM1MWQ3MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vS2V5Ym9hcmRFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZl
bnQuaWRsCkBAIC01Miw3ICs1Miw3IEBACiAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBub3QgbWF0
Y2ggdGhlIHZlcnNpb24gaW4gdGhlIERPTSBzcGVjLgogICAgIC8vIEZJWE1FOiBVc2luZyAidW5k
ZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KICAgICB2b2lkIGlu
aXRLZXlib2FyZEV2ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9w
dGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2Vs
YWJsZSA9IGZhbHNlLAotICAgICAgICBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBv
cHRpb25hbCBET01TdHJpbmcga2V5SWRlbnRpZmllciA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCB1
bnNpZ25lZCBsb25nIGxvY2F0aW9uID0gMCwKKyAgICAgICAgb3B0aW9uYWwgV2luZG93UHJveHk/
IHZpZXcgPSBudWxsLCBvcHRpb25hbCBET01TdHJpbmcga2V5SWRlbnRpZmllciA9ICJ1bmRlZmlu
ZWQiLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGxvY2F0aW9uID0gMCwKICAgICAgICAgb3B0aW9u
YWwgYm9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFs
c2UsIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBt
ZXRhS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0R3JhcGhLZXkgPSBmYWxzZSk7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggNTE5N2Q1YmFlMWFlMzVhYWIwNGYw
Y2I1MGU3NmU5ZDhmYWExOGI3OS4uMzMwOTI3ODdkMTRhZTY1NzNlYTFiOWQxZmQ5YTdkMGVlZTBm
NDAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMjcsMTIgKzI3LDEyIEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQu
aCIKICNpbmNsdWRlICJKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVBvcnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyLmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCw5ICs0MCw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2I7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci11c2luZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBS
ZWZQdHI8TWVzc2FnZVBvcnQ+LCBSZWZQdHI8U2VydmljZVdvcmtlcj4+OwordXNpbmcgTWVzc2Fn
ZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8TWVzc2Fn
ZVBvcnQ+LCBSZWZQdHI8U2VydmljZVdvcmtlcj4+OwogI2Vsc2UKLXVzaW5nIE1lc3NhZ2VFdmVu
dFNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxNZXNzYWdlUG9ydD4+
OwordXNpbmcgTWVzc2FnZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+
LCBSZWZQdHI8TWVzc2FnZVBvcnQ+PjsKICNlbmRpZgogCiBjbGFzcyBNZXNzYWdlRXZlbnQgZmlu
YWwgOiBwdWJsaWMgRXZlbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAppbmRleCAw
MjQzOGZkNGM0N2MzZmMyOTJlYWJmNDdlNWM1ZTgzZjg2OTUwODIyLi5mYTQ4YzhmYTVkYTVmZGMz
ZTBmMmMyZjdlZmJmYTc1Y2Q4ZjU0MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50Lmlk
bApAQCAtMjcsOSArMjcsOSBAQAogICovCiAKICNpZiBkZWZpbmVkKEVOQUJMRV9TRVJWSUNFX1dP
UktFUikgJiYgRU5BQkxFX1NFUlZJQ0VfV09SS0VSCi10eXBlZGVmIChET01XaW5kb3cgb3IgTWVz
c2FnZVBvcnQgb3IgU2VydmljZVdvcmtlcikgTWVzc2FnZUV2ZW50U291cmNlOwordHlwZWRlZiAo
V2luZG93UHJveHkgb3IgTWVzc2FnZVBvcnQgb3IgU2VydmljZVdvcmtlcikgTWVzc2FnZUV2ZW50
U291cmNlOwogI2Vsc2UKLXR5cGVkZWYgKERPTVdpbmRvdyBvciBNZXNzYWdlUG9ydCkgTWVzc2Fn
ZUV2ZW50U291cmNlOwordHlwZWRlZiAoV2luZG93UHJveHkgb3IgTWVzc2FnZVBvcnQpIE1lc3Nh
Z2VFdmVudFNvdXJjZTsKICNlbmRpZgogCiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKaW5k
ZXggYTE0N2UxMjE4YmI2ZTI0ZjJhZDc2NDcwNzQ2MGM2NjcwMjFmNmM1OS4uYzg5NmY4NjMxYTNk
MmJiZGExOTMwNjIxMGZlZGRiODk4NmU0Y2E2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNw
cApAQCAtNDQsMTMgKzQ0LDEzIEBAIFJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNb3VzZUV2ZW50SW5pCiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7
CiB9CiAKLVJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIERPTVdpbmRvdyogdmlldywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldmVudCwgaW50IGRldGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCkKK1JlZjxNb3VzZUV2ZW50
PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBp
bnQgZGV0YWlsLCBOb2RlKiByZWxhdGVkVGFyZ2V0KQogewogICAgIGJvb2wgaXNNb3VzZUVudGVy
T3JMZWF2ZSA9IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2VlbnRlckV2ZW50IHx8IGV2
ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2VsZWF2ZUV2ZW50OwogICAgIGJvb2wgaXNDYW5j
ZWxhYmxlID0gZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCAmJiAhaXNN
b3VzZUVudGVyT3JMZWF2ZTsKICAgICBib29sIGNhbkJ1YmJsZSA9ICFpc01vdXNlRW50ZXJPckxl
YXZlOwogCi0gICAgcmV0dXJuIE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGNhbkJ1YmJs
ZSwgaXNDYW5jZWxhYmxlLCBldmVudC50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1Rp
bWUoKSwgdmlldywKKyAgICByZXR1cm4gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgY2Fu
QnViYmxlLCBpc0NhbmNlbGFibGUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3Rv
bmljVGltZSgpLCBXVEZNb3ZlKHZpZXcpLAogICAgICAgICBkZXRhaWwsIGV2ZW50Lmdsb2JhbFBv
c2l0aW9uKCkueCgpLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLnkoKSwgZXZlbnQucG9zaXRpb24o
KS54KCksIGV2ZW50LnBvc2l0aW9uKCkueSgpLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAg
ICAgICAgIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS54KCksIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS55
KCksCkBAIC01OSwxMyArNTksMTMgQEAgUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWUKICAgICAgICAg
cmVsYXRlZFRhcmdldCwgZXZlbnQuZm9yY2UoKSwgZXZlbnQuc3ludGhldGljQ2xpY2tUeXBlKCkp
OwogfQogCi1SZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGlt
ZSB0aW1lc3RhbXAsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKK1JlZjxNb3VzZUV2ZW50PiBNb3VzZUV2
ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VY
LCBpbnQgcGFnZVksCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBpbnQgbW92ZW1lbnRY
LCBpbnQgbW92ZW1lbnRZLAogI2VuZGlmCiAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwg
Ym9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbnMsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0LCBkb3VibGUgZm9y
Y2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRGF0YVRyYW5zZmVyKiBkYXRh
VHJhbnNmZXIsIGJvb2wgaXNTaW11bGF0ZWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TW91c2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgdmlldywK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2Fu
Y2VsYWJsZSwgdGltZXN0YW1wLCBXVEZNb3ZlKHZpZXcpLAogICAgICAgICBkZXRhaWwsIHsgc2Ny
ZWVuWCwgc2NyZWVuWSB9LCB7IHBhZ2VYLCBwYWdlWSB9LAogI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCiAgICAgICAgIHsgbW92ZW1lbnRYLCBtb3ZlbWVudFkgfSwKQEAgLTczLDE5ICs3MywxOSBA
QCBSZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvbwogICAgICAgICBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHJlbGF0ZWRUYXJnZXQsIGZvcmNlLCBzeW50
aGV0aWNDbGlja1R5cGUsIGRhdGFUcmFuc2ZlciwgaXNTaW11bGF0ZWQpKTsKIH0KIAotUmVmPE1v
dXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBpbnQg
ZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50
WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5
LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVk
IHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCitS
ZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xp
ZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRL
ZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBi
dXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiBy
ZWxhdGVkVGFyZ2V0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQoZXZl
bnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCwgeyBzY3JlZW5YLCBz
Y3JlZW5ZIH0sIHsgY2xpZW50WCwgY2xpZW50WSB9LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHN5bnRoZXRpY0NsaWNrVHlwZSwgcmVsYXRlZFRh
cmdldCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQoZXZlbnRUeXBlLCBj
YW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRldGFpbCwgeyBzY3JlZW5YLCBz
Y3JlZW5ZIH0sIHsgY2xpZW50WCwgY2xpZW50WSB9LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHN5bnRoZXRpY0NsaWNrVHlwZSwgcmVsYXRlZFRh
cmdldCkpOwogfQogCiBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KCkgPSBkZWZhdWx0OwogCi1Nb3Vz
ZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2lu
ZG93KiB2aWV3LCBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNv
bnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKK01vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywg
aW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2lu
dCYgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgY29u
c3QgSW50UG9pbnQmIG1vdmVtZW50RGVsdGEsCiAjZW5kaWYKICAgICAgICAgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9y
dCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFy
Z2V0LCBkb3VibGUgZm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRGF0
YVRyYW5zZmVyKiBkYXRhVHJhbnNmZXIsIGJvb2wgaXNTaW11bGF0ZWQpCi0gICAgOiBNb3VzZVJl
bGF0ZWRFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2
aWV3LCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB3aW5kb3dMb2NhdGlvbiwKKyAgICA6IE1vdXNl
UmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAs
IFdURk1vdmUodmlldyksIGRldGFpbCwgc2NyZWVuTG9jYXRpb24sIHdpbmRvd0xvY2F0aW9uLAog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIG1vdmVtZW50RGVsdGEsCiAjZW5kaWYK
QEAgLTEwMCw4ICsxMDAsOCBAQCBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZQogewogfQogCi1Nb3Vz
ZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGNv
bnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExvY2F0
aW9uLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWdu
ZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCkK
LSAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBNb25vdG9uaWNUaW1lOjpub3coKSwgdmlldywgZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwgeyB9
LAorTW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZp
ZXcsIGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50
UG9pbnQmIGNsaWVudExvY2F0aW9uLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hv
cnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdl
dCogcmVsYXRlZFRhcmdldCkKKyAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2Fu
QnViYmxlLCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwg
ZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwgeyB9LAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAg
ICAgICAgIHsgfSwKICNlbmRpZgpAQCAtMTI3LDEyICsxMjcsMTIgQEAgTW91c2VFdmVudDo6TW91
c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgTW91c2VFdmVudElu
aXQmIGluaXQKIAogTW91c2VFdmVudDo6fk1vdXNlRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQg
TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWws
IGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCit2b2lkIE1vdXNl
RXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBk
ZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZ
LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXks
IHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCiB7CiAg
ICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRV
SUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKTsKKyAgICBp
bml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRl
dGFpbCk7CiAKICAgICBtX3NjcmVlbkxvY2F0aW9uID0gSW50UG9pbnQoc2NyZWVuWCwgc2NyZWVu
WSk7CiAgICAgbV9jdHJsS2V5ID0gY3RybEtleTsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIE1v
dXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgYwogCiAvLyBGSVhNRTogV2UgbmVlZCB0aGlzIHF1aXJrIGJlY2F1c2Ug
aUFkIFByb2R1Y2VyIGlzIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aXRoIGEgcmVsYXRlZFRhcmdl
dCB0aGF0IGlzIG5vdCBhbiBFdmVudFRhcmdldCAocmRhcjovL3Byb2JsZW0vMzA2NDAxMDEpLgog
Ly8gV2Ugc2hvdWxkIHJlbW92ZSB0aGlzIHF1aXJrIHdoZW4gcG9zc2libGUuCi12b2lkIE1vdXNl
RXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmsoRXhlY1N0YXRlJiBzdGF0ZSwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGlu
dCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGll
bnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgSlNWYWx1ZSByZWxhdGVkVGFyZ2V0VmFsdWUpCit2
b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmsoRXhlY1N0YXRlJiBzdGF0ZSwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBp
bnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBKU1ZhbHVlIHJl
bGF0ZWRUYXJnZXRWYWx1ZSkKIHsKICAgICBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCA9IG51
bGxwdHI7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTW91c2VF
dmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayhFeGVjU3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBzCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIH0KICNlbmRpZgotICAgIGluaXRN
b3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCBzY3Jl
ZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBidXR0b24sIHJlbGF0ZWRUYXJnZXQpOworICAgIGluaXRNb3VzZUV2ZW50KHR5
cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCBzY3JlZW5Y
LCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBt
ZXRhS2V5LCBidXR0b24sIHJlbGF0ZWRUYXJnZXQpOwogfQogCiBFdmVudEludGVyZmFjZSBNb3Vz
ZUV2ZW50OjpldmVudEludGVyZmFjZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTW91c2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaAppbmRl
eCAyNmNhZjhmNmIxOTE1MTY2OGI2ODAzNTU0YTBiMDAxNjRkM2UxZmNmLi40YjI4MDc5OTU1YjRj
YjczYTJjZTE2OGViNWExMzlkNzMxNTZhOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKQEAg
LTI5LDE5ICsyOSwyMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhVHJhbnNm
ZXI7CitjbGFzcyBOb2RlOwogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogCiBjbGFzcyBNb3Vz
ZUV2ZW50IDogcHVibGljIE1vdXNlUmVsYXRlZEV2ZW50IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGlt
ZXN0YW1wLCBET01XaW5kb3cqLCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblks
IGludCBwYWdlWCwgaW50IHBhZ2VZLAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW91
c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgs
IGludCBwYWdlWSwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBpbnQgbW92ZW1l
bnRYLCBpbnQgbW92ZW1lbnRZLAogI2VuZGlmCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCwgZG91
YmxlIGZvcmNlLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIERhdGFUcmFuc2Zl
ciogPSBudWxscHRyLCBib29sIGlzU2ltdWxhdGVkID0gZmFsc2UpOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGludCBkZXRh
aWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGludCBkZXRhaWwsIE5v
ZGUqIHJlbGF0ZWRUYXJnZXQpOwogCi0gICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwg
aW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29s
IHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQg
c2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRh
cmdldCogcmVsYXRlZFRhcmdldCk7CisgICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5
cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KTsKIAogICAgIHN0YXRpYyBSZWY8TW91c2VF
dmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZl
bnQpOyB9CiAKQEAgLTQ5LDggKzUwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+TW91c2VF
dmVudCgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0TW91c2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdp
bmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgs
IGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBi
b29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRU
YXJnZXQpOwotICAgIHZvaWQgaW5pdE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4ZWNTdGF0ZSYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3Jl
ZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0
IGJ1dHRvbiwgSlNDOjpKU1ZhbHVlIHJlbGF0ZWRUYXJnZXQpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgaW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRhaWws
IGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpOworICAgIHZvaWQg
aW5pdE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4ZWNTdGF0ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LCBKU0M6OkpTVmFsdWUgcmVsYXRlZFRhcmdldCk7CiAKICAgICB1bnNpZ25lZCBzaG9ydCBidXR0
b24oKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbjsgfQogICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRv
bnMoKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbnM7IH0KQEAgLTcwLDcgKzcxLDcgQEAgcHVibGlj
OgogICAgIGludCB3aGljaCgpIGNvbnN0IGZpbmFsOwogCiBwcm90ZWN0ZWQ6Ci0gICAgTW91c2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqLAorICAgIE1vdXNlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAogICAg
ICAgICBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IElu
dFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAg
ICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKQEAgLTc4LDcgKzc5LDcgQEAgcHJvdGVj
dGVkOgogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBi
b29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
cywKICAgICAgICAgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwgdW5z
aWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIqLCBib29sIGlzU2lt
dWxhdGVkKTsKIAotICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLAorICAgIE1vdXNlRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxl
LCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IEludFBv
aW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExvY2F0aW9uLAogICAg
ICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksCiAgICAgICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
cywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRl
ZFRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwKaW5kZXggMGJlMGY4OGRkMzVkN2Nk
ZmI4ZDM1NDJkYWRlMTZlMzI5NGZkYzgzYS4uNjBjNDQ2NjY3MWYwNjE5ZmVlMDlkMGYwMTkzZjlh
NDFmNmIzZTgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmlkbApAQCAtNDMsNyArNDMsNyBA
QAogICAgIC8vIEZJWE1FOiByZWxhdGVkVGFyZ2V0IHNob3VsZCBiZSBvZiB0eXBlIEV2ZW50VGFy
Z2V0PyBidXQgd2UgbmVlZCB0byB1c2UgYW55IHRvIHN1cHBvcnQgYSBxdWlyayBmb3IgaUFkIFBy
b2R1Y2VyIChyZGFyOi8vcHJvYmxlbS8zMDY0MDEwMSkuCiAgICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlJlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9aW5pdE1vdXNlRXZlbnRR
dWlya10gdm9pZCBpbml0TW91c2VFdmVudChvcHRpb25hbCBET01TdHJpbmcgdHlwZSA9ICJ1bmRl
ZmluZWQiLAogICAgICAgICBvcHRpb25hbCBib29sZWFuIGNhbkJ1YmJsZSA9IGZhbHNlLCBvcHRp
b25hbCBib29sZWFuIGNhbmNlbGFibGUgPSBmYWxzZSwKLSAgICAgICAgb3B0aW9uYWwgRE9NV2lu
ZG93PyB2aWV3ID0gbnVsbCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAwLAorICAgICAgICBvcHRp
b25hbCBXaW5kb3dQcm94eT8gdmlldyA9IG51bGwsIG9wdGlvbmFsIGxvbmcgZGV0YWlsID0gMCwK
ICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5Z
ID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRYID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRZID0g
MCwKICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJv
b2xlYW4gYWx0S2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwg
b3B0aW9uYWwgYm9vbGVhbiBtZXRhS2V5ID0gZmFsc2UsCiAgICAgICAgIG9wdGlvbmFsIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiA9IDAsIG9wdGlvbmFsIGFueSByZWxhdGVkVGFyZ2V0ID0gbnVsbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAppbmRleCA4NTM3MTRkNmFi
MWYwMWU4YTVlYWNlMGQwZTQzOTc1ZWIzZDU4NDlmLi44MGE4MjY3ZGMyMWJkOGIzYmY1MTgzMGZl
NGIzMGE0MmE2MTIwMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxh
dGVkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5j
cHAKQEAgLTMyLDEzICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1vdXNlUmVs
YXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3Rh
bXAsIERPTVdpbmRvdyogRE9NV2luZG93LAorTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRl
ZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRldGFp
bCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93
TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKICNlbmRpZgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgYm9vbCBpc1NpbXVsYXRlZCkKLSAg
ICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUs
IHRpbWVzdGFtcCwgRE9NV2luZG93LCBkZXRhaWwsIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXks
IG1ldGFLZXksIGZhbHNlLCBmYWxzZSkKKyAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRU
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgV1RGTW92ZSh2aWV3KSwgZGV0
YWlsLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBmYWxzZSwgZmFsc2UpCiAg
ICAgLCBtX3NjcmVlbkxvY2F0aW9uKHNjcmVlbkxvY2F0aW9uKQogI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCiAgICAgLCBtX21vdmVtZW50RGVsdGEobW92ZW1lbnREZWx0YSkKQEAgLTYxLDcgKzYx
LDcgQEAgTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBjb25zdCBNb3VzZVIKIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6Omlu
aXQoYm9vbCBpc1NpbXVsYXRlZCwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uKQogewog
ICAgIGlmICghaXNTaW11bGF0ZWQpIHsKLSAgICAgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZy
YW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSkgeworICAgICAgICBpZiAoYXV0byogZnJhbWVW
aWV3ID0gZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpIHsKICAgICAgICAgICAgIEZs
b2F0UG9pbnQgYWJzb2x1dGVQb2ludCA9IGZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyh3aW5k
b3dMb2NhdGlvbik7CiAgICAgICAgICAgICBGbG9hdFBvaW50IGRvY3VtZW50UG9pbnQgPSBmcmFt
ZVZpZXctPmFic29sdXRlVG9Eb2N1bWVudFBvaW50KGFic29sdXRlUG9pbnQpOwogICAgICAgICAg
ICAgbV9wYWdlTG9jYXRpb24gPSBmbG9vcmVkTGF5b3V0UG9pbnQoZG9jdW1lbnRQb2ludCk7CkBA
IC04MywxMyArODMsMTMgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVz
KCkKICAgICBtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb24gPSBmYWxzZTsKIH0KIAotRnJhbWVW
aWV3KiBNb3VzZVJlbGF0ZWRFdmVudDo6ZnJhbWVWaWV3RnJvbURPTVdpbmRvdyhET01XaW5kb3cq
IHdpbmRvdykKK0ZyYW1lVmlldyogTW91c2VSZWxhdGVkRXZlbnQ6OmZyYW1lVmlld0Zyb21XaW5k
b3dQcm94eShXaW5kb3dQcm94eSogd2luZG93UHJveHkpCiB7Ci0gICAgYXV0byogZnJhbWUgPSB3
aW5kb3cgPyB3aW5kb3ctPmZyYW1lKCkgOiBudWxscHRyOwotICAgIGlmICghZnJhbWUpCisgICAg
aWYgKCF3aW5kb3dQcm94eSB8fCAhaXM8RE9NV2luZG93Pih3aW5kb3dQcm94eS0+d2luZG93KCkp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBmcmFtZS0+dmlldygpOwor
ICAgIGF1dG8qIGZyYW1lID0gZG93bmNhc3Q8RE9NV2luZG93Pigqd2luZG93UHJveHktPndpbmRv
dygpKS5mcmFtZSgpOworICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT52aWV3KCkgOiBudWxscHRy
OwogfQogCiBMYXlvdXRQb2ludCBNb3VzZVJlbGF0ZWRFdmVudDo6cGFnZVBvaW50VG9DbGllbnRQ
b2ludChMYXlvdXRQb2ludCBwYWdlUG9pbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQpAQCAtMTEz
LDcgKzExMyw3IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGluYXRlcyhjb25z
dCBMYXlvdXRQb2ludCYgY2xpZW50TG9jYXRpb24pCiAgICAgLy8gU2V0IHVwIGluaXRpYWwgdmFs
dWVzIGZvciBjb29yZGluYXRlcy4KICAgICAvLyBDb3JyZWN0IHZhbHVlcyBhcmUgY29tcHV0ZWQg
bGF6aWx5LCBzZWUgY29tcHV0ZVJlbGF0aXZlUG9zaXRpb24uCiAgICAgRmxvYXRTaXplIGRvY3Vt
ZW50VG9DbGllbnRPZmZzZXQ7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zy
b21ET01XaW5kb3codmlldygpKSkKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3
RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpCiAgICAgICAgIGRvY3VtZW50VG9DbGllbnRPZmZzZXQg
PSBmcmFtZVZpZXctPmRvY3VtZW50VG9DbGllbnRPZmZzZXQoKTsKIAogICAgIG1fY2xpZW50TG9j
YXRpb24gPSBjbGllbnRMb2NhdGlvbjsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIE1vdXNlUmVs
YXRlZEV2ZW50Ojppbml0Q29vcmRpbmF0ZXMoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudExvY2F0
aW9uKQogCiBmbG9hdCBNb3VzZVJlbGF0ZWRFdmVudDo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVG
YWN0b3IoKSBjb25zdAogewotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9t
RE9NV2luZG93KHZpZXcoKSkpCisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zy
b21XaW5kb3dQcm94eSh2aWV3KCkpKQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5kb2N1bWVu
dFRvQWJzb2x1dGVTY2FsZUZhY3RvcigpOwogCiAgICAgcmV0dXJuIDE7CkBAIC0xMzYsNyArMTM2
LDcgQEAgZmxvYXQgTW91c2VSZWxhdGVkRXZlbnQ6OmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFj
dG9yKCkgY29uc3QKIAogdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVBhZ2VMb2NhdGlv
bigpCiB7Ci0gICAgbV9hYnNvbHV0ZUxvY2F0aW9uID0gcGFnZVBvaW50VG9BYnNvbHV0ZVBvaW50
KG1fcGFnZUxvY2F0aW9uLCBmcmFtZVZpZXdGcm9tRE9NV2luZG93KHZpZXcoKSkpOworICAgIG1f
YWJzb2x1dGVMb2NhdGlvbiA9IHBhZ2VQb2ludFRvQWJzb2x1dGVQb2ludChtX3BhZ2VMb2NhdGlv
biwgZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpOwogfQogCiB2b2lkIE1vdXNlUmVs
YXRlZEV2ZW50OjpyZWNlaXZlZFRhcmdldCgpCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBNb3Vz
ZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVJlbGF0aXZlUG9zaXRpb24oKQogICAgIAogRmxvYXRQb2lu
dCBNb3VzZVJlbGF0ZWRFdmVudDo6bG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSBjb25z
dAogewotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9tRE9NV2luZG93KHZp
ZXcoKSkpCisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21XaW5kb3dQcm94
eSh2aWV3KCkpKQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5jb250ZW50c1RvUm9vdFZpZXco
cm91bmRlZEludFBvaW50KG1fYWJzb2x1dGVMb2NhdGlvbikpOwogCiAgICAgcmV0dXJuIG1fYWJz
b2x1dGVMb2NhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0
ZWRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKaW5kZXgg
MGQ4M2MzNjA5ZjcxZWFmZWYyMTcxYTljZDBkNDMxYWU2ZDg1NGY4Yi4uYWQ0ZTVkMGMzNTZmNTQx
ZTA4MmUxMWEyNmEyZDBjYzExNWZkNTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L01vdXNlUmVsYXRlZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRl
ZEV2ZW50LmgKQEAgLTY3LDE0ICs2NywxNCBAQCBwdWJsaWM6CiAgICAgLy8gdXNhYmxlIHdpdGgg
UmVuZGVyT2JqZWN0OjphYnNvbHV0ZVRvTG9jYWwpLgogICAgIGNvbnN0IExheW91dFBvaW50JiBh
YnNvbHV0ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZUxvY2F0aW9uOyB9CiAg
ICAgCi0gICAgc3RhdGljIEZyYW1lVmlldyogZnJhbWVWaWV3RnJvbURPTVdpbmRvdyhET01XaW5k
b3cqKTsKKyAgICBzdGF0aWMgRnJhbWVWaWV3KiBmcmFtZVZpZXdGcm9tV2luZG93UHJveHkoV2lu
ZG93UHJveHkqKTsKIAogICAgIHN0YXRpYyBMYXlvdXRQb2ludCBwYWdlUG9pbnRUb0NsaWVudFBv
aW50KExheW91dFBvaW50IHBhZ2VQb2ludCwgRnJhbWVWaWV3Kik7CiAgICAgc3RhdGljIExheW91
dFBvaW50IHBhZ2VQb2ludFRvQWJzb2x1dGVQb2ludChMYXlvdXRQb2ludCBwYWdlUG9pbnQsIEZy
YW1lVmlldyopOwogCiBwcm90ZWN0ZWQ6CiAgICAgTW91c2VSZWxhdGVkRXZlbnQoKSA9IGRlZmF1
bHQ7Ci0gICAgTW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9N
V2luZG93KiwKKyAgICBNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1w
LCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IEludFBv
aW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAogI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIGNvbnN0IEludFBvaW50JiBtb3ZlbWVudERl
bHRhLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDRiMWU4NzI1Nzk1MzNmYmY3ODcxMmZkNmQyM2QyYzgx
NWIwM2ViMzguLmM5MTkwN2NkZDRhNDhiMTcyZWEzYTJkZWUxZTg4MDc4MGJlNWRlMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDb21wb3NlZFRyZWVBbmNl
c3Rvckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKICNp
bmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIKICNp
bmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaW11bGF0ZWRDbGljay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltdWxhdGVkQ2xpY2su
Y3BwCmluZGV4IGUwZjRlMzUyZWNhMThkY2RjODU5MjQ5MmVjNTA4NDI5MjhhYjY1NzQuLjQxN2U5
MDdiZjI4ODFiNmE4N2Y2MWQ2MDkxNmI2N2U2OGViOWMxMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Np
bXVsYXRlZENsaWNrLmNwcApAQCAtMzcsMTQgKzM3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgU2ltdWxhdGVkTW91c2VFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWV3LCBSZWZQdHI8RXZlbnQ+
JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQsIFNpbXVsYXRlZENsaWNrU291cmNl
IHNvdXJjZSkKKyAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIFJl
ZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVk
Q2xpY2tTb3VyY2Ugc291cmNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2ltdWxhdGVkTW91c2VFdmVudChldmVudFR5cGUsIHZpZXcsIFdURk1vdmUodW5kZXJseWluZ0V2
ZW50KSwgdGFyZ2V0LCBzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2lt
dWxhdGVkTW91c2VFdmVudChldmVudFR5cGUsIFdURk1vdmUodmlldyksIFdURk1vdmUodW5kZXJs
eWluZ0V2ZW50KSwgdGFyZ2V0LCBzb3VyY2UpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU2lt
dWxhdGVkTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93
KiB2aWV3LCBSZWZQdHI8RXZlbnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQs
IFNpbXVsYXRlZENsaWNrU291cmNlIHNvdXJjZSkKLSAgICAgICAgOiBNb3VzZUV2ZW50KGV2ZW50
VHlwZSwgdHJ1ZSwgdHJ1ZSwgdW5kZXJseWluZ0V2ZW50ID8gdW5kZXJseWluZ0V2ZW50LT50aW1l
U3RhbXAoKSA6IE1vbm90b25pY1RpbWU6Om5vdygpLCB2aWV3LCAwLCB7IH0sIHsgfSwKKyAgICBT
aW11bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgUmVmUHRyPEV2ZW50PiYmIHVuZGVybHlpbmdFdmVudCwgRWxl
bWVudCYgdGFyZ2V0LCBTaW11bGF0ZWRDbGlja1NvdXJjZSBzb3VyY2UpCisgICAgICAgIDogTW91
c2VFdmVudChldmVudFR5cGUsIHRydWUsIHRydWUsIHVuZGVybHlpbmdFdmVudCA/IHVuZGVybHlp
bmdFdmVudC0+dGltZVN0YW1wKCkgOiBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3
KSwgMCwgeyB9LCB7IH0sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgICAgIHsg
fSwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAppbmRleCBiZDAyNGVhNTVmNmJhODRl
MzJjOTA0NDZmY2JmODI4MjA0ZDJjMzBjLi5iMDk0NDkzYzFmODU1ODQ5ODg5M2MyY2I3YzBkMDc0
NmI2YWI1YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcApAQCAtMzgsMjkgKzM4LDI5IEBA
IFJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRleHRFdmVudCk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVu
dDo6Y3JlYXRlKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJ
bnB1dFR5cGUgaW5wdXRUeXBlKQorUmVmPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGUoUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5w
dXRUeXBlIGlucHV0VHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQo
dmlldywgZGF0YSwgaW5wdXRUeXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2
ZW50KFdURk1vdmUodmlldyksIGRhdGEsIGlucHV0VHlwZSkpOwogfQogCi1SZWY8VGV4dEV2ZW50
PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKERPTVdpbmRvdyogdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSkKK1JlZjxUZXh0RXZlbnQ+
IFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYm
IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KHZpZXcsIGRhdGEsIDAsIHNob3VsZFNt
YXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1
b3RlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdURk1vdmUodmlldyks
IGRhdGEsIDAsIHNob3VsZFNtYXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxp
bmc6OlJlc3BlY3RCbG9ja3F1b3RlKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6
Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiYmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNo
U3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKK1Jl
ZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBz
aG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVI
YW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFRleHRFdmVudCh2aWV3LCBlbXB0eVN0cmluZygpLCBXVEZNb3ZlKGRhdGEpLCBzaG91bGRT
bWFydFJlcGxhY2UsIHNob3VsZE1hdGNoU3R5bGUsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZW1wdHlT
dHJpbmcoKSwgV1RGTW92ZShkYXRhKSwgc2hvdWxkU21hcnRSZXBsYWNlLCBzaG91bGRNYXRjaFN0
eWxlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRF
dmVudDo6Y3JlYXRlRm9yRHJvcChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkK
K1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFRleHRFdmVudCh2aWV3LCBkYXRhLCBUZXh0RXZlbnRJbnB1dERyb3ApKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZGF0YSwgVGV4dEV2ZW50
SW5wdXREcm9wKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRGlj
dGF0aW9uKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8
RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCitSZWY8VGV4dEV2
ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3RhdGlvbihSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRp
dmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VGV4dEV2ZW50KHZpZXcsIGRhdGEsIGRpY3RhdGlvbkFsdGVybmF0aXZlcykpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRleHRFdmVudChXVEZNb3ZlKHZpZXcpLCBkYXRhLCBkaWN0YXRpb25B
bHRlcm5hdGl2ZXMpKTsKIH0KIAogVGV4dEV2ZW50OjpUZXh0RXZlbnQoKQpAQCAtNzEsOCArNzEs
OCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudCgpCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50
KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUg
aW5wdXRUeXBlKQotICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRy
dWUsIHRydWUsIHZpZXcsIDApCitUZXh0RXZlbnQ6OlRleHRFdmVudChSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRU
eXBlKQorICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRy
dWUsIFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAg
LCBtX2RhdGEoZGF0YSkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtODEs
OCArODEsOCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0
cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlIGlucAogewogfQogCi1UZXh0RXZlbnQ6OlRl
eHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwg
Ym9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1
b3RlSGFuZGxpbmcpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwg
dHJ1ZSwgdHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxk
TWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5n
KQorICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUs
IFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShUZXh0RXZlbnRJbnB1dFBhc3Rl
KQogICAgICwgbV9kYXRhKGRhdGEpCiAgICAgLCBtX3Bhc3RpbmdGcmFnbWVudChXVEZNb3ZlKHBh
c3RpbmdGcmFnbWVudCkpCkBAIC05Miw4ICs5Miw4IEBAIFRleHRFdmVudDo6VGV4dEV2ZW50KERP
TVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
CiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3Ry
aW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25B
bHRlcm5hdGl2ZXMpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwg
dHJ1ZSwgdHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25B
bHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcykKKyAgICA6IFVJRXZlbnQoZXZlbnRO
YW1lcygpLnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0cnVlLCBXVEZNb3ZlKHZpZXcpLCAwKQogICAg
ICwgbV9pbnB1dFR5cGUoVGV4dEV2ZW50SW5wdXREaWN0YXRpb24pCiAgICAgLCBtX2RhdGEoZGF0
YSkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtMTA1LDEyICsxMDUsMTIg
QEAgVGV4dEV2ZW50OjpUZXh0RXZlbnQoRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRh
dGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb24KIAogVGV4dEV2ZW50Ojp+VGV4dEV2ZW50KCkgPSBk
ZWZhdWx0OwogCi12b2lkIFRleHRFdmVudDo6aW5pdFRleHRFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmll
dywgY29uc3QgU3RyaW5nJiBkYXRhKQordm9pZCBUZXh0RXZlbnQ6OmluaXRUZXh0RXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIGlm
IChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbml0VUlFdmVu
dCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAgICBt
X2lucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQu
aAppbmRleCAyOWViMjZkMGUwNzRiNTRkMzQ2MzU2MDQyODBkMTJhNjk4OGFmOGRhLi4wYWUyYWM4
NjNmYjgxYmJiMjg2Mzg1MTY1YjZiMTI1MWQyZGZiMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGV4dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5o
CkBAIC0zOCwxNiArMzgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgVGV4
dEV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZShET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEs
IFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOworICAgICAgICBz
dGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlKFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3Qg
U3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJk
KTsKICAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7Ci0g
ICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShET01X
aW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKLSAg
ICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoRE9NV2lu
ZG93KiwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJl
cGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0g
ICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEcm9wKERPTVdpbmRvdyosIGNv
bnN0IFN0cmluZyYgZGF0YSk7Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVG
b3JEaWN0YXRpb24oRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8
RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgICAgICBz
dGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRv
d1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsK
KyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoUmVm
UHRyPFdpbmRvd1Byb3h5PiYmLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBkYXRhLCBib29s
IHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90
ZUhhbmRsaW5nKTsKKyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRyb3Ao
UmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBzdGF0
aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yRGljdGF0aW9uKFJlZlB0cjxXaW5kb3dQcm94eT4m
JiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+
JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogCiAgICAgICAgIHZpcnR1YWwgflRleHRFdmVudCgp
OwogICAgIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRUZXh0RXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01X
aW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0
YSk7CiAgICAgCiAgICAgICAgIFN0cmluZyBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9
CiAKQEAgLTcxLDkgKzcxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAg
ICAgICAgIFRleHRFdmVudCgpOwogCi0gICAgICAgIFRleHRFdmVudChET01XaW5kb3cqLCBjb25z
dCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9h
cmQpOwotICAgICAgICBUZXh0RXZlbnQoRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wg
c2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0gICAgICAgIFRleHRF
dmVudChET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRp
b25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgICAgIFRleHRFdmVu
dChSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5w
dXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7CisgICAgICAgIFRleHRFdmVudChSZWZQ
dHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+JiYsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUs
IE1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBUZXh0RXZlbnQoUmVmUHRyPFdpbmRv
d1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRl
cm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAKICAgICAgICAgYm9vbCBpc1RleHRF
dmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCmluZGV4IDM2
NDA2NWZhODJkNDE4OTljMGM1MjMyNTBjMmYyNzk5NzcwZDNlMGUuLmNlOGIzMGFjYjNjNzFmZmRm
ODI4YjIxODEwNjVhYWExZjhhMTI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0RXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCkBAIC0z
Miw3ICszMiw3IEBAIGludGVyZmFjZSBUZXh0RXZlbnQgOiBVSUV2ZW50IHsKICAgICB2b2lkIGlu
aXRUZXh0RXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZpbmVkIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGVBcmcgPSBmYWxz
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlQXJn
ID0gZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmll
d0FyZyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFdpbmRvd1Byb3h5
PyB2aWV3QXJnID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3Ry
aW5nIGRhdGFBcmcgPSAidW5kZWZpbmVkIik7CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVG91Y2hFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5j
cHAKaW5kZXggNjFjMDhmMjFkYTM4YmFhN2ExMTBmMjJkY2E2YTU3YmU5M2I2ODNlNy4uMDAyMzdj
ZGFkNTY4Mzc5NTJkOTNhOTdkZTI2YTk5ZTllYWZjMzkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2
ZW50LmNwcApAQCAtMzgsOSArMzgsOSBAQCBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KCkgPSBkZWZh
dWx0OwogCiBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91Y2hM
aXN0KiB0YXJnZXRUb3VjaGVzLAogICAgICAgICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzLCBj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICBET01XaW5kb3cqIHZpZXcsIGludCBz
Y3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAgICAgIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdl
WCwgaW50IHBhZ2VZLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXkpCi0gICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVl
LCB0cnVlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgdmlldywgMCwgSW50UG9pbnQoc2NyZWVuWCwg
c2NyZWVuWSksCisgICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCBNb25v
dG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwgMCwgSW50UG9pbnQoc2NyZWVuWCwgc2Ny
ZWVuWSksCiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChwYWdlWCwgcGFnZVkpLAog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2lu
dCgwLCAwKSwKQEAgLTY0LDEzICs2NCwxMyBAQCBUb3VjaEV2ZW50Ojp+VG91Y2hFdmVudCgpID0g
ZGVmYXVsdDsKIAogdm9pZCBUb3VjaEV2ZW50Ojppbml0VG91Y2hFdmVudChUb3VjaExpc3QqIHRv
dWNoZXMsIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywKICAgICAgICAgVG91Y2hMaXN0KiBjaGFu
Z2VkVG91Y2hlcywgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAKLSAgICAgICAgRE9NV2luZG93
KiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50
WSwKKyAgICAgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBzY3JlZW5YLCBpbnQg
c2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLAogICAgICAgICBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAgICAgaWYgKGlz
QmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRVSUV2ZW50KHR5
cGUsIHRydWUsIHRydWUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIHRydWUsIHRy
dWUsIFdURk1vdmUodmlldyksIDApOwogCiAgICAgbV90b3VjaGVzID0gdG91Y2hlczsKICAgICBt
X3RhcmdldFRvdWNoZXMgPSB0YXJnZXRUb3VjaGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1RvdWNoRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKaW5k
ZXggZDMzOWMwYjcyYjEzZDQ1NWE1ZTAzODY2ZTU1NzIwY2NmNmJmMWVkYi4uODVmYTE2MWYyMTk2
ZDNmMmEwNWQ5YTMxYTExN2IwYTFhZjg2NmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RvdWNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCkBA
IC00MSwxMiArNDEsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxUb3VjaEV2ZW50PiBj
cmVhdGUoVG91Y2hMaXN0KiB0b3VjaGVzLCAKICAgICAgICAgICAgIFRvdWNoTGlzdCogdGFyZ2V0
VG91Y2hlcywgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgCi0gICAgICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIERPTVdpbmRvdyogdmlldywKKyAgICAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgICAgICAg
ICBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogICAgICAg
ICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRh
S2V5KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVG91Y2hFdmVudCh0b3Vj
aGVzLCB0YXJnZXRUb3VjaGVzLCBjaGFuZ2VkVG91Y2hlcywKLSAgICAgICAgICAgICAgICB0eXBl
LCB2aWV3LCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksCisgICAgICAgICAgICAgICAg
dHlwZSwgV1RGTW92ZSh2aWV3KSwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLAogICAg
ICAgICAgICAgICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpKTsKICAgICB9
CiAgICAgc3RhdGljIFJlZjxUb3VjaEV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBAIC02Nyw3
ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0
b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3Qq
IGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICAgICAg
RE9NV2luZG93KiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLAorICAgICAgICAgICAgUmVmUHRy
PFdpbmRvd1Byb3h5PiYmLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksCiAgICAgICAgICAgICBp
bnQgY2xpZW50WCwgaW50IGNsaWVudFksCiAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wg
YWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogCkBAIC04Nyw3ICs4Nyw3IEBA
IHByaXZhdGU6CiAgICAgVG91Y2hFdmVudCgpOwogICAgIFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0
b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3Qq
IGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsCi0gICAgICAgICAgICBE
T01XaW5kb3cqLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwKKyAgICAgICAg
ICAgIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQg
cGFnZVgsCiAgICAgICAgICAgICBpbnQgcGFnZVksCiAgICAgICAgICAgICBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogICAgIFRvdWNoRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVG91Y2hFdmVudC5pZGwKaW5kZXggODEwNTgzNTdlZDNhYTc3NzRkMjZmYWZhZTE2MDNiMTVk
ZGUwZDYwYi4uNTRlOTlkYjQ4MzBmMzBkNDYyNjQyZTMzZDQzOTU2OTNiMTNmMmIwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ub3VjaEV2ZW50LmlkbApAQCAtNDAsNyArNDAsNyBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgb3B0aW9uYWwgVG91Y2hMaXN0PyB0YXJnZXRUb3VjaGVzID0gbnVsbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFRvdWNoTGlzdD8gY2hhbmdlZFRvdWNoZXMgPSBu
dWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAi
dW5kZWZpbmVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8g
dmlldyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94
eT8gdmlldyA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBsb25nIHNj
cmVlblggPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5Z
ID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGxvbmcgY2xpZW50WCA9IDAs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVUlFdmVudC5jcHAKaW5kZXggYWIyMGVlY2I5YzU4MzFkZWYwMjc5Y2E3OGEwZTdj
YzVmYTg1NjIxNy4uMGE2ZjgxYWY1MjM3MTZmNzU4MTc4ZjBmOTUzNDRjZGM2NTViODAwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50LmNwcApAQCAtMzIsMTYgKzMyLDE2IEBAIFVJRXZlbnQ6OlVJRXZlbnQo
KQogewogfQogCi1VSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBET01XaW5kb3cqIHZpZXdB
cmcsIGludCBkZXRhaWxBcmcpCitVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50
VHlwZSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnKQotICAgICwgbV92aWV3KHZpZXdBcmcp
CisgICAgLCBtX3ZpZXcoV1RGTW92ZSh2aWV3QXJnKSkKICAgICAsIG1fZGV0YWlsKGRldGFpbEFy
ZykKIHsKIH0KIAotVUlFdmVudDo6VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgTW9ub3RvbmljVGltZSB0
aW1lc3RhbXAsIERPTVdpbmRvdyogdmlld0FyZywgaW50IGRldGFpbEFyZykKK1VJRXZlbnQ6OlVJ
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlQXJnLCBi
b29sIGNhbmNlbGFibGVBcmcsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwg
Y2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCB0aW1lc3RhbXApCi0gICAgLCBtX3ZpZXcodmll
d0FyZykKKyAgICAsIG1fdmlldyhXVEZNb3ZlKHZpZXdBcmcpKQogICAgICwgbV9kZXRhaWwoZGV0
YWlsQXJnKQogewogfQpAQCAtNTUsNyArNTUsNyBAQCBVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBVSUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIsCiAK
IFVJRXZlbnQ6On5VSUV2ZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFVJRXZlbnQ6OmluaXRVSUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZUFyZywgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wg
Y2FuY2VsYWJsZUFyZywgRE9NV2luZG93KiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQordm9pZCBV
SUV2ZW50Ojppbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVBcmcsIGJvb2wgY2Fu
QnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVBcmcsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3
QXJnLCBpbnQgZGV0YWlsQXJnKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaAppbmRleCBiYWE3MzFmY2Y4MWVlYmFmMjMxNTNk
YTUxYmEwYWVhZmQyNDU1ZmFjLi41MGYyZDE3NzE5OTQyZTQ3M2ZkZWM5YjFhODg0ODYwNTkzY2Qx
OWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmgKQEAgLTIzLDIwICsyMywyMCBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVk
ZSAiVUlFdmVudEluaXQuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIG5vIG9uZSBpcyBkZXBlbmRp
bmcgb24gaXQgYW55bW9yZS4KLXR5cGVkZWYgRE9NV2luZG93IEFic3RyYWN0VmlldzsKK3R5cGVk
ZWYgV2luZG93UHJveHkgQWJzdHJhY3RWaWV3OwogCiBjbGFzcyBVSUV2ZW50IDogcHVibGljIEV2
ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRv
dyogdmlldywgaW50IGRldGFpbCkKKyAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZp
ZXcsIGRldGFpbCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKSk7CiAgICAgfQog
ICAgIHN0YXRpYyBSZWY8VUlFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHsKQEAgLTQ4
LDkgKzQ4LDkgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5VSUV2ZW50KCk7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFp
bCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiwgaW50IGRldGFpbCk7CiAKLSAgICBET01XaW5kb3cqIHZpZXcoKSBjb25zdCB7IHJl
dHVybiBtX3ZpZXcuZ2V0KCk7IH0KKyAgICBXaW5kb3dQcm94eSogdmlldygpIGNvbnN0IHsgcmV0
dXJuIG1fdmlldy5nZXQoKTsgfQogICAgIGludCBkZXRhaWwoKSBjb25zdCB7IHJldHVybiBtX2Rl
dGFpbDsgfQogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVy
cmlkZTsKQEAgLTY1LDE0ICs2NSwxNCBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVSUV2
ZW50KCk7Ci0gICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwpOwotICAgIFVJRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7Cisg
ICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCk7CisgICAgVUlF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGlu
dCBkZXRhaWwpOwogICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVUlFdmVu
dEluaXQmLCBJc1RydXN0ZWQpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNVSUV2ZW50KCkgY29u
c3QgZmluYWw7CiAKLSAgICBSZWZQdHI8RE9NV2luZG93PiBtX3ZpZXc7CisgICAgUmVmUHRyPFdp
bmRvd1Byb3h5PiBtX3ZpZXc7CiAgICAgaW50IG1fZGV0YWlsOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZl
bnQuaWRsCmluZGV4IDg3YjM5MTUyODMwMzE5N2UzNmM2NGMxZTcwOGZmYjYwY2JhZDk1MDMuLjZh
MzVjNTdhMzg3NGJjOGVjNjNkNmQ5MjRkNDI4YjJiNTgxMDBmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVu
dC5pZGwKQEAgLTIwLDExICsyMCwxMSBAQAogWwogICAgIENvbnN0cnVjdG9yKERPTVN0cmluZyB0
eXBlLCBvcHRpb25hbCBVSUV2ZW50SW5pdCBldmVudEluaXREaWN0KQogXSBpbnRlcmZhY2UgVUlF
dmVudCA6IEV2ZW50IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IHZpZXc7Cisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHZpZXc7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgZGV0YWlsOwogICAgIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVk
IiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICB2b2lkIGluaXRVSUV2
ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIGJvb2xl
YW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZhbHNl
LCBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBsb25nIGRldGFpbCA9
IDApOworICAgIHZvaWQgaW5pdFVJRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5k
ZWZpbmVkIiwgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGUgPSBmYWxzZSwgb3B0aW9uYWwgYm9v
bGVhbiBjYW5jZWxhYmxlID0gZmFsc2UsIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVs
bCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAwKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBs
b25nIGxheWVyWDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsYXllclk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9VSUV2ZW50SW5pdC5oCmluZGV4IDAzMTZiYzA2ZjU2OGU1MzkxNmRmNjk2ZjQxNDQ1YmE5ZmMz
MWZmMzYuLmUxMTI4YTc2ZGU1ODYwMTYyZmE5NzZkY2RjODI3MTcwZDhmMmYzYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9VSUV2ZW50SW5pdC5oCkBAIC0yNSwxNCArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudEluaXQuaCIKKyNpbmNsdWRl
ICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdHJ1Y3QgVUlFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKLSAgICBS
ZWZQdHI8RE9NV2luZG93PiB2aWV3OworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gdmlldzsKICAg
ICBpbnQgZGV0YWlsIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1VJRXZlbnRJbml0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5pZGwKaW5k
ZXggMGQ3ZWI4ZWZjMWM1MzdhOTA1MTE3YjYxMjExMWFkMDFlYjFlMGFhMi4uM2NjYmJlZDYwNzU1
ZjZmMjE2NTJmNWJhNjFlNmYzODI0MGMxN2ZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1VJRXZlbnRJbml0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQu
aWRsCkBAIC0yNCw2ICsyNCw2IEBACiAgKi8KIAogZGljdGlvbmFyeSBVSUV2ZW50SW5pdCA6IEV2
ZW50SW5pdCB7Ci0gICAgRE9NV2luZG93PyB2aWV3ID0gbnVsbDsKKyAgICBXaW5kb3dQcm94eT8g
dmlldyA9IG51bGw7CiAgICAgbG9uZyBkZXRhaWwgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VUlFdmVudFdpdGhLZXlTdGF0ZS5oCmluZGV4IDBhOGU0MDMxMjQ4ZDZmNzI2NTQ0MmU1YmY4MDAx
MmJhMzBjY2NkZWIuLjA4NWEwMzE3ZWM4ZGNlM2E2MGZlMjZhZmE1YTE2MmVhMmE5YTA1MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaApAQCAtNDAsOCArNDAsOCBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgVUlFdmVudFdpdGhLZXlTdGF0ZSgpID0gZGVmYXVs
dDsKIAotICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRh
aWwsIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtl
eSkKLSAgICAgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywg
ZGV0YWlsKQorICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywgaW50IGRldGFpbCwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtl
eSwgYm9vbCBtZXRhS2V5KQorICAgICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxL
ZXkpCiAgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQogICAgICAgICAsIG1fc2hpZnRLZXkoc2hp
ZnRLZXkpCkBAIC00OSw5ICs0OSw5IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQogCi0gICAg
VUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cq
IHZpZXcsCisgICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1w
LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICAgICAgaW50IGRldGFpbCwgYm9vbCBj
dHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBib29sIGFs
dEdyYXBoS2V5LCBib29sIGNhcHNMb2NrS2V5KQotICAgICAgICAgICAgOiBVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2aWV3LCBkZXRhaWwpCisgICAgICAg
ICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIFdU
Rk1vdmUodmlldyksIGRldGFpbCkKICAgICAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCiAg
ICAgICAgICAgICAsIG1fYWx0S2V5KGFsdEtleSkKICAgICAgICAgICAgICwgbV9zaGlmdEtleShz
aGlmdEtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAppbmRleCBkMmI4ZmI3MmQ5MTk4ZTE0
YmY3NThjYTNhZmJjMWVjMjQ3ZjcxY2JkLi41MzdjYjE5M2M4MTNmNTI3YWM1MzNjOTMwODkwODdi
ZGIzNjhiZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCkBAIC00Nyw4ICs0Nyw4IEBA
IGlubGluZSBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Y29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsCiB7CiB9CiAKLWlubGluZSBXaGVlbEV2ZW50OjpXaGVl
bEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogdmlldykK
LSAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUsIGV2
ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LCAwLCBldmVu
dC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCitpbmxpbmUgV2hlZWxFdmVudDo6
V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlldykKKyAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQs
IHRydWUsIHRydWUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgp
LCBXVEZNb3ZlKHZpZXcpLCAwLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlv
bigpCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgLCB7IH0KICNlbmRpZgpAQCAt
NjEsOSArNjEsOSBAQCBpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHZpZXcpCiB7CiB9CiAKLVJlZjxXaGVlbEV2
ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwg
RE9NV2luZG93KiB2aWV3KQorUmVmPFdoZWVsRXZlbnQ+IFdoZWVsRXZlbnQ6OmNyZWF0ZShjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXaGVlbEV2ZW50KGV2ZW50LCB2aWV3KSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2hlZWxFdmVudChldmVudCwgV1RGTW92ZSh2aWV3KSkp
OwogfQogCiBSZWY8V2hlZWxFdmVudD4gV2hlZWxFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQpA
QCAtNzYsMTIgKzc2LDEyIEBAIFJlZjxXaGVlbEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2hlZWxFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiB9
CiAKLXZvaWQgV2hlZWxFdmVudDo6aW5pdFdlYktpdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwg
aW50IHJhd0RlbHRhWSwgRE9NV2luZG93KiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblks
IGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXkpCit2b2lkIFdoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2
ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAg
ICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBp
bml0TW91c2VFdmVudChldmVudE5hbWVzKCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmlldywg
MCwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5LCAwLCBudWxscHRyKTsKKyAgICBpbml0TW91c2VFdmVudChldmVudE5hbWVz
KCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCwgc2NyZWVuWCwgc2Ny
ZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCAw
LCBudWxscHRyKTsKIAogICAgIC8vIE5vcm1hbGl6ZSB0byAxMjAgbXVsdGlwbGUgZm9yIGNvbXBh
dGliaWxpdHkgd2l0aCBJRS4KICAgICBtX3doZWVsRGVsdGEgPSB7IHJhd0RlbHRhWCAqIFRpY2tN
dWx0aXBsaWVyLCByYXdEZWx0YVkgKiBUaWNrTXVsdGlwbGllciB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2
ZW50LmgKaW5kZXggNGQzNGIzMGQ2ZGVkNWVmMjgxNWE4MTM3ZTRjMjk3ZTY0MWFkZTZkYS4uMTBi
NjJlMDVjNzAxNTYwNzZmZmU1Y2YxMjczOTdlYzEzMjNkZDJkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxF
dmVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAgICAgRE9NX0RFTFRBX1BBR0UK
ICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBj
cmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsK
ICAgICBzdGF0aWMgUmVmPFdoZWVsRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBz
dHJ1Y3QgSW5pdCA6IE1vdXNlRXZlbnRJbml0IHsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGluaXRXZWJLaXRXaGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGludCBy
YXdEZWx0YVksIERPTVdpbmRvdyosIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VY
LCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJv
b2wgbWV0YUtleSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVu
dChpbnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGlu
dCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wgY3RybEtl
eSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CiAKICAgICBjb25z
dCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtV2hlZWxFdmVudD4mIHVuZGVybHlpbmdQbGF0Zm9ybUV2
ZW50KCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudDsgfQogCkBAIC03
NSw3ICs3NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2hlZWxFdmVudCgpOwogICAgIFdo
ZWVsRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7Ci0g
ICAgV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBET01XaW5kb3cqKTsKKyAg
ICBXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFJlZlB0cjxXaW5kb3dQcm94
eT4mJik7CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwKaW5kZXggOTNjNTNhNGJmYjJkYWY0YmQ0NDI3
Mzg2NmE5MmNlZDRhMWMxYzM4Ni4uYjI4MWRhMWM2NjA0NGE4YTkzZDYwZDkwZWRkZjUxZDE0YzZj
OTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmlkbApAQCAtMzksNyArMzksNyBAQAogCiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0RGlyZWN0aW9uSW52ZXJ0ZWRGcm9t
RGV2aWNlOwogCi0gICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRpb25hbCBsb25nIHdo
ZWVsRGVsdGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAsIG9wdGlvbmFsIERP
TVdpbmRvdz8gdmlldyA9IG51bGwsCisgICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRp
b25hbCBsb25nIHdoZWVsRGVsdGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAs
IG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwKICAgICAgICAgb3B0aW9uYWwgbG9u
ZyBzY3JlZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwgb3B0aW9uYWwgbG9uZyBj
bGllbnRYID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRZID0gMCwKICAgICAgICAgb3B0aW9uYWwg
Ym9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFsc2Us
CiAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9v
bGVhbiBtZXRhS2V5ID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZDE0NzI0Mjc3MjM3NDY4ZDRmNjFm
ZmUzM2M3NWZlNDZhODE5MjNkYy4uZDczYTcxYjBlMTVkZDgxOWYxNzBlZmE1ZjU2MmVmNzVjOTQy
Yjk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuY3BwCkBAIC02MzIsNyArNjMyLDcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOjppbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBW
ZWMKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpCiAgICAgICAgIHZp
ZXctPmRpc2FibGVMYXllckZsdXNoVGhyb3R0bGluZ1RlbXBvcmFyaWx5Rm9ySW50ZXJhY3Rpb24o
KTsKIAotICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0
YXRpb24obV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCwgZGljdGF0aW9uQWx0
ZXJuYXRpdmVzKTsKKyAgICBSZWY8VGV4dEV2ZW50PiBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRl
Rm9yRGljdGF0aW9uKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgdGV4dCwgZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KHRyaWdn
ZXJpbmdFdmVudCk7CiAKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGNiOGI2YjhiYmFjODViYzBlMzJkZWQyZWYzMzljMjQx
MDI5MGQzMTkuLjRlMzY4YmZkODAzYzUzNjg1MmVkY2U2MDEwNDY5NDQ4NjMxNDkxOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIEVkaXRvcjo6
cGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBib29sIHNtYXJ0UmVw
bGFjZSkKICAgICBFbGVtZW50KiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9u
KCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKLSAgICB0YXJnZXQtPmRpc3Bh
dGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShkb2N1bWVudCgpLmRv
bVdpbmRvdygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSk7CisgICAgdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoZG9jdW1lbnQoKS5k
ZWZhdWx0VmlldygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSk7CiB9CiAKIHZvaWQgRWRp
dG9yOjpwYXN0ZUFzRnJhZ21lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdt
ZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhh
bmRsaW5nIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUpCkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBF
ZGl0b3I6OnBhc3RlQXNGcmFnbWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBwYXN0aW5nRnJh
Z21lbnQsIGJvb2wgc21hcnQKICAgICBFbGVtZW50KiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJnZXRG
cm9tU2VsZWN0aW9uKCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKLSAgICB0
YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKGRv
Y3VtZW50KCkuZG9tV2luZG93KCksIFdURk1vdmUocGFzdGluZ0ZyYWdtZW50KSwgc21hcnRSZXBs
YWNlLCBtYXRjaFN0eWxlLCByZXNwZWN0c01haWxCbG9ja3F1b3RlKSk7CisgICAgdGFyZ2V0LT5k
aXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShkb2N1bWVudCgp
LmRlZmF1bHRWaWV3KCksIFdURk1vdmUocGFzdGluZ0ZyYWdtZW50KSwgc21hcnRSZXBsYWNlLCBt
YXRjaFN0eWxlLCByZXNwZWN0c01haWxCbG9ja3F1b3RlKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpw
YXN0ZUFzUGxhaW5UZXh0QnlwYXNzaW5nREhUTUwoKQpAQCAtMTg0OCw3ICsxODQ4LDcgQEAgdm9p
ZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgU2V0Q29tcG9zaXRp
b25Nb2RlIG1vZGUpCiAgICAgaW5zZXJ0VGV4dEZvckNvbmZpcm1lZENvbXBvc2l0aW9uKHRleHQp
OwogCiAgICAgaWYgKGF1dG8qIHRhcmdldCA9IGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSkK
LSAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQoKS5kb21XaW5kb3coKSwg
dGV4dCkpOworICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50LCBkb2N1bWVudCgpLmRlZmF1
bHRWaWV3KCksIHRleHQpKTsKIAogICAgIGlmIChtb2RlID09IENhbmNlbENvbXBvc2l0aW9uKSB7
CiAgICAgICAgIC8vIEFuIG9wZW4gdHlwaW5nIGNvbW1hbmQgdGhhdCBkaXNhZ3JlZXMgYWJvdXQg
Y3VycmVudCBzZWxlY3Rpb24gd291bGQgY2F1c2UgaXNzdWVzIHdpdGggdHlwaW5nIGxhdGVyIG9u
LgpAQCAtMTkwOCwxMSArMTkwOCwxMSBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIHNlbmQgYSBjb21wb3NpdGlvbnN0YXJ0IGV2ZW50IG9ubHkgd2hl
biB0aGUgZ2l2ZW4gdGV4dCBpcyBub3QgZW1wdHkgYmVjYXVzZSB0aGlzCiAgICAgICAgICAgICAv
LyBmdW5jdGlvbiBkb2Vzbid0IGNyZWF0ZSBhIGNvbXBvc2l0aW9uIG5vZGUgd2hlbiB0aGUgdGV4
dCBpcyBlbXB0eS4KICAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0RXZlbnQsIGRvY3VtZW50KCkuZG9tV2luZG93KCks
IG9yaWdpbmFsVGV4dCkpOwotICAgICAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBkb2N1bWVudCgp
LmRvbVdpbmRvdygpLCB0ZXh0KTsKKyAgICAgICAgICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZl
bnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0
RXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgb3JpZ2luYWxUZXh0KSk7CisgICAgICAg
ICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNv
bXBvc2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdGV4dCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoIXRleHQuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBv
c2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZG9tV2luZG93KCksIHRleHQpOworICAgICAg
ICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBv
c2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdGV4dCk7CiAKICAg
ICAgICAgaWYgKGV2ZW50KQogICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KCpldmVu
dCk7CkBAIC0xOTIzLDcgKzE5MjMsNyBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgIGlm
ICh0ZXh0LmlzRW1wdHkoKSkgewogICAgICAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rp
b24oZG9jdW1lbnQoKSwgVHlwaW5nQ29tbWFuZDo6UHJldmVudFNwZWxsQ2hlY2tpbmcsIFR5cGlu
Z0NvbW1hbmQ6OlRleHRDb21wb3NpdGlvblBlbmRpbmcpOwogICAgICAgICBpZiAodGFyZ2V0KQot
ICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQoKS5kb21XaW5kb3co
KSwgdGV4dCkpOworICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9u
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQo
KS5kZWZhdWx0VmlldygpLCB0ZXh0KSk7CiAgICAgfQogCiAgICAgbV9jb21wb3NpdGlvbk5vZGUg
PSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCmluZGV4IGEzZDdkOTc3
MGNlYmQwNjI4Y2E3YmVjMjRjZmE2NzVkM2I5N2JiNTQuLjlkNTgxY2VkZmE4NDFlMGFkZjFhYWM0
MzI1OTFjOGI2ZjJmNzY1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKQEAg
LTExNCw3ICsxMTQsNyBAQCBSZWY8RG9jdW1lbnRQYXJzZXI+IEhUTUxEb2N1bWVudDo6Y3JlYXRl
UGFyc2VyKCkKIH0KIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
ZG9tLmh0bWwjZG9tLWRvY3VtZW50LW5hbWVkaXRlbQotc3RkOjpvcHRpb25hbDxWYXJpYW50PFJl
ZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+
PiBIVE1MRG9jdW1lbnQ6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitzdGQ6
Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gSFRNTERvY3VtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKQogewogICAgIGlmIChuYW1lLmlzTnVsbCgpIHx8ICFoYXNEb2N1bWVu
dE5hbWVkSXRlbSgqbmFtZS5pbXBsKCkpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtMTIyLDE2ICsxMjIsMTYgQEAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxET01XaW5k
b3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4KICAgICBpZiAoVU5M
SUtFTFkoZG9jdW1lbnROYW1lZEl0ZW1Db250YWluc011bHRpcGxlRWxlbWVudHMoKm5hbWUuaW1w
bCgpKSkpIHsKICAgICAgICAgYXV0byBjb2xsZWN0aW9uID0gZG9jdW1lbnROYW1lZEl0ZW1zKG5h
bWUpOwogICAgICAgICBBU1NFUlQoY29sbGVjdGlvbi0+bGVuZ3RoKCkgPiAxKTsKLSAgICAgICAg
cmV0dXJuIFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRy
PEhUTUxDb2xsZWN0aW9uPj4geyBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHsgV1RGTW92ZShjb2xs
ZWN0aW9uKSB9IH07CisgICAgICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4s
IFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBSZWZQdHI8SFRNTENv
bGxlY3Rpb24+IHsgV1RGTW92ZShjb2xsZWN0aW9uKSB9IH07CiAgICAgfQogCiAgICAgYXV0byYg
ZWxlbWVudCA9ICpkb2N1bWVudE5hbWVkSXRlbSgqbmFtZS5pbXBsKCkpOwogICAgIGlmIChVTkxJ
S0VMWShpczxIVE1MSUZyYW1lRWxlbWVudD4oZWxlbWVudCkpKSB7CiAgICAgICAgIGlmIChhdXRv
IGRvbVdpbmRvdyA9IG1ha2VSZWZQdHIoZG93bmNhc3Q8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1l
bnQpLmNvbnRlbnRXaW5kb3coKSkpCi0gICAgICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8
RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7IFdU
Rk1vdmUoZG9tV2luZG93KSB9OworICAgICAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPFdp
bmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7IFdU
Rk1vdmUoZG9tV2luZG93KSB9OwogICAgIH0KIAotICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxE
T01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgUmVm
UHRyPEVsZW1lbnQ+IHsgJmVsZW1lbnQgfSB9OworICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxX
aW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBS
ZWZQdHI8RWxlbWVudD4geyAmZWxlbWVudCB9IH07CiB9CiAKIFZlY3RvcjxBdG9taWNTdHJpbmc+
IEhUTUxEb2N1bWVudDo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRG9jdW1lbnQuaAppbmRleCBhMzYzOTc0MDZkMzQ5ZjU3NmY0ODlkM2ExZjYwMGFkYTFi
ZGRjZmUxLi4wYjNkMzQxNGE0YmVmYTAzMzVjNGUyMjlhNTk1ODVlYjA1ZWJkNjBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERvY3VtZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIGludCB3aWR0aCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBoZWlnaHQo
KTsKICAgICAKLSAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJl
ZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IG5hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmcmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1By
b3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gbmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHN1cHBvcnRl
ZFByb3BlcnR5TmFtZXMoKSBjb25zdDsKIAogICAgIEVsZW1lbnQqIGRvY3VtZW50TmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRO
YW1lZEl0ZW0uZ2V0RWxlbWVudEJ5RG9jdW1lbnROYW1lZEl0ZW0obmFtZSwgKnRoaXMpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwKaW5kZXggMTI3ZjI2NDVlMDMyMmRjNzk4ODEy
ODA0ZmY1ZDc5NWRhYzhhNTgwZi4uYTk5OWIwM2Y2MjI4YjI1ZWJkMWI3Yjk0Mzg2Yjk5ZTM5NWI4
NWY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmlkbApAQCAtMjMsNSArMjMsNSBA
QAogICAgIE5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cywKICAgICBPdmVycmlkZUJ1
aWx0aW5zLAogXSBpbnRlcmZhY2UgSFRNTERvY3VtZW50IDogRG9jdW1lbnQgeyAgICAKLSAgICBn
ZXR0ZXIgKERPTVdpbmRvdyBvciBFbGVtZW50IG9yIEhUTUxDb2xsZWN0aW9uKSAoRE9NU3RyaW5n
IG5hbWUpOworICAgIGdldHRlciAoV2luZG93UHJveHkgb3IgRWxlbWVudCBvciBIVE1MQ29sbGVj
dGlvbikgKERPTVN0cmluZyBuYW1lKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVF
bGVtZW50LmlkbAppbmRleCBjZDYzYTIxMmFkNDMzMTRjNWJlMjMwNGRkZTcwMDk3YzdiZjg4MzUz
Li5lZDdjMGI2ZTI3NzI5OWI2NWNhMjE4ZjIxZTE4MjYxZTUxM2RmYzBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwKQEAgLTI2LDcgKzI2LDcgQEAgaW50ZXJmYWNl
IEhUTUxGcmFtZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW1JlZmxlY3QsIFVSTF0gYXR0
cmlidXRlIFVTVlN0cmluZyBsb25nRGVzYzsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIGJvb2xl
YW4gbm9SZXNpemU7CiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSByZWFkb25seSBhdHRyaWJ1
dGUgRG9jdW1lbnQgY29udGVudERvY3VtZW50OwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01X
aW5kb3cgY29udGVudFdpbmRvdzsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkg
Y29udGVudFdpbmRvdzsKIAogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVt
cHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luSGVpZ2h0OwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1
dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luV2lkdGg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKaW5kZXggNTg4NzM5
ODQ3Y2JiMDhjMzcxN2MxM2JlYmQzYWE5MWQ5OWJiNGNjNS4uYjliZWYxNzYzZTI2MWQ3Yzk4MmUx
ZjA1NTUwOWMxNjlkZjg0MDYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVPd25lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
T3duZXJFbGVtZW50LmNwcApAQCAtOTksOSArOTksOSBAQCBEb2N1bWVudCogSFRNTEZyYW1lT3du
ZXJFbGVtZW50Ojpjb250ZW50RG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRG
cmFtZSA/IG1fY29udGVudEZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKIH0KIAotRE9NV2lu
ZG93KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRXaW5kb3coKSBjb25zdAorV2luZG93
UHJveHkqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVudFdpbmRvdygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8gbV9jb250ZW50RnJhbWUtPmRvY3VtZW50KCktPmRv
bVdpbmRvdygpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyAmbV9jb250
ZW50RnJhbWUtPndpbmRvd1Byb3h5KCkgOiBudWxscHRyOwogfQogCiB2b2lkIEhUTUxGcmFtZU93
bmVyRWxlbWVudDo6c2V0U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCmluZGV4IDg2NWVkZGI5MWY1N2Uz
NDViNGI2ODdmNzYwZTgzMzI1NDI1YzRmYzEuLjgwZjE4MjAwZGYwZDRhNzRkN2YwZTNkYmNhMTUy
NDU2MDIyNGFiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1l
bnQuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SFRNTEZyYW1lT3du
ZXJFbGVtZW50KCk7CiAKICAgICBGcmFtZSogY29udGVudEZyYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZW50RnJhbWU7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBET01XaW5kb3cqIGNvbnRlbnRX
aW5kb3coKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXaW5kb3dQcm94eSogY29udGVudFdp
bmRvdygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KiBjb250ZW50RG9jdW1l
bnQoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Q29udGVudEZyYW1lKEZyYW1lKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAppbmRleCAyODU2NDI0OTUwYTM0
OWM5YjcyOTUwM2M1ZjRmMTIxYThlYzRiMmI3Li41ZDIzN2Q0ODI2YzcyZjg4N2I3ZGIyZmI1MWQ2
ZTk3ODY1Njc5YTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNl
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5jcHAKQEAgLTIzMSwxNSArMjMxLDEzIEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6cmVt
b3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyCiAgICAg
fQogfQogCi1ET01XaW5kb3cqIEhUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpCitXaW5kb3dQcm94eSogSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFt
ZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKICAgICBhdXRvIGZyYW1lRWxlbWVu
dCA9IG1ha2VSZWZQdHIoY2hpbGRyZW4oKS0+bmFtZWRJdGVtKG5hbWUpKTsKICAgICBpZiAoIWlz
PEhUTUxGcmFtZUVsZW1lbnQ+KGZyYW1lRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgaWYgKGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGRvd25jYXN0PEhUTUxGcmFt
ZUVsZW1lbnQ+KGZyYW1lRWxlbWVudC5nZXQoKSktPmNvbnRlbnREb2N1bWVudCgpKSkKLSAgICAg
ICAgcmV0dXJuIGRvY3VtZW50LT5kb21XaW5kb3coKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gZG93bmNhc3Q8SFRNTEZyYW1lRWxlbWVudD4oKmZyYW1lRWxlbWVudCkuY29udGVu
dFdpbmRvdygpOwogfQogCiBWZWN0b3I8QXRvbWljU3RyaW5nPiBIVE1MRnJhbWVTZXRFbGVtZW50
OjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmgKaW5kZXggZDFmMzc5YjczNWNiNzdmNWU1YWQyZGVjNGViZjE0NDBj
N2VlYTMzMi4uYzNjNjhiNTdiZjk3N2U3YWNlYTkyZmYzYWVjMDk2NDk2ZjcxMjJiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8SFRNTEZyYW1lU2V0RWxlbWVudD4gZmluZENvbnRh
aW5pbmcoRWxlbWVudCogZGVzY2VuZGFudCk7CiAgICAgCiAgICAgVmVjdG9yPEF0b21pY1N0cmlu
Zz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0OwotICAgIERPTVdpbmRvdyogbmFtZWRJ
dGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFdpbmRvd1Byb3h5KiBuYW1lZEl0ZW0oY29u
c3QgQXRvbWljU3RyaW5nJik7CiAKIHByaXZhdGU6CiAgICAgSFRNTEZyYW1lU2V0RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZVNldEVsZW1lbnQuaWRsCmluZGV4IDMyNTBiOTQ5MGVkYjhiYjE4ZjQ3Yjk4MmNiYjdm
NmI0NDA4ZDMxMjUuLjY5NDIxNzNlNzQ0MDkyNDljMjA1YjBiM2M1MjYyOWUyYWNjNDY5NGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbApAQCAtMzMsNyAr
MzMsNyBAQCBpbnRlcmZhY2UgSFRNTEZyYW1lU2V0RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKIAog
ICAgIC8vIE5vbi1zdGFuZGFyZCBuYW1lZCBnZXR0ZXIKICAgICAvLyBGSVhNRTogVGhpcyBpcyBu
b3QgaW4gdGhlIHN0YW5kYXJkLCBjYW4gd2UgcmVtb3ZlIHRoaXM/Ci0gICAgZ2V0dGVyIERPTVdp
bmRvdyAoRE9NU3RyaW5nIG5hbWUpOworICAgIGdldHRlciBXaW5kb3dQcm94eSAoRE9NU3RyaW5n
IG5hbWUpOwogfTsKIAogSFRNTEZyYW1lU2V0RWxlbWVudCBpbXBsZW1lbnRzIFdpbmRvd0V2ZW50
SGFuZGxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVt
ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCmluZGV4
IDNlM2JkY2MxMTA0MTg4YTc4ZGRiYThlMjc2NDM0ZTRlNjZlNjkwYmMuLmMxNjM5MjJlZTQyMGU3
NWMwNGRkMTI4MTk0YjUzNWYzODNjOTVkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQuaWRsCkBAIC0zOCw3ICszOCw3IEBAIGludGVyZmFjZSBIVE1MSUZyYW1lRWxl
bWVudCA6IEhUTUxFbGVtZW50IHsKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9u
bHkgYXR0cmlidXRlIERvY3VtZW50IGNvbnRlbnREb2N1bWVudDsKIAotICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01XaW5kb3cgY29udGVudFdpbmRvdzsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
V2luZG93UHJveHkgY29udGVudFdpbmRvdzsKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZSwg
TWF5VGhyb3dFeGNlcHRpb25dIERvY3VtZW50IGdldFNWR0RvY3VtZW50KCk7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggZDE1MTI3M2EzNTk0OTNlMWI2YzUzOGYw
ZjNkOTMxNjg4MDM2NGExNy4uODVjMTNmZjdmMDIwYWE5YWMyYzZlNGRmMTcyNDZkNDQxMTljNWE1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1
bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggYjAyM2E0ZTJlZjI4NDMw
MzdiZTVkMDhiZjJhNGZlMzgzMWQ1ZmQ4Zi4uM2UyYTkxNjZmMmM4MDFhZTU1NjYzYmNjYjFiNDkw
YWUwOWZhZjFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTQ4LDcgKzE0OCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIGNsYXNzIFBvc3RNZXNzYWdlVGltZXIg
OiBwdWJsaWMgVGltZXJCYXNlIHsKIHB1YmxpYzoKLSAgICBQb3N0TWVzc2FnZVRpbWVyKERPTVdp
bmRvdyYgd2luZG93LCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luLCBET01XaW5kb3cmIHNvdXJjZSwgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiYmIHRhcmdldE9yaWdpbiwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFja1RyYWNl
KQorICAgIFBvc3RNZXNzYWdlVGltZXIoRE9NV2luZG93JiB3aW5kb3csIE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiBzb3VyY2UsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0YXJnZXRPcmln
aW4sIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3RhY2tUcmFjZSkKICAgICAgICAgOiBtX3dp
bmRvdyh3aW5kb3cpCiAgICAgICAgICwgbV9tZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpCiAgICAg
ICAgICwgbV9vcmlnaW4oc291cmNlT3JpZ2luKQpAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoK
IAogICAgIFJlZjxNZXNzYWdlRXZlbnQ+IGV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCiAgICAgewotICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoTWVzc2Fn
ZVBvcnQ6OmVudGFuZ2xlUG9ydHMoY29udGV4dCwgV1RGTW92ZShtX21lc3NhZ2UudHJhbnNmZXJy
ZWRQb3J0cykpLCBtX21lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBtX29yaWdpbiwg
eyB9LCBNZXNzYWdlRXZlbnRTb3VyY2UoUmVmUHRyPERPTVdpbmRvdz4oV1RGTW92ZShtX3NvdXJj
ZSkpKSk7CisgICAgICAgIHJldHVybiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShNZXNzYWdlUG9ydDo6
ZW50YW5nbGVQb3J0cyhjb250ZXh0LCBXVEZNb3ZlKG1fbWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRz
KSksIG1fbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCksIG1fb3JpZ2luLCB7IH0sIG1f
c291cmNlID8gc3RkOjptYWtlX29wdGlvbmFsKE1lc3NhZ2VFdmVudFNvdXJjZShXVEZNb3ZlKG1f
c291cmNlKSkpIDogc3RkOjpudWxsb3B0KTsKICAgICB9CiAKICAgICBTZWN1cml0eU9yaWdpbiog
dGFyZ2V0T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRPcmlnaW4uZ2V0KCk7IH0KQEAg
LTE4MCw3ICsxODAsNyBAQCBwcml2YXRlOgogICAgIFJlZjxET01XaW5kb3c+IG1fd2luZG93Owog
ICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1fbWVzc2FnZTsKICAgICBTdHJpbmcgbV9vcmln
aW47Ci0gICAgUmVmPERPTVdpbmRvdz4gbV9zb3VyY2U7CisgICAgUmVmUHRyPFdpbmRvd1Byb3h5
PiBtX3NvdXJjZTsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fdGFyZ2V0T3JpZ2luOwog
ICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IG1fc3RhY2tUcmFjZTsKICAgICBSZWZQdHI8VXNl
ckdlc3R1cmVUb2tlbj4gbV91c2VyR2VzdHVyZVRvRm9yd2FyZDsKQEAgLTk2MCw3ICs5NjAsOCBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgRE9NV2luZG93JiBpbmN1bQogICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1l
c3NhZ2UgeyBtZXNzYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZGlzZW50YW5nbGVkUG9y
dHMucmVsZWFzZVJldHVyblZhbHVlKCkgfTsKIAogICAgIC8vIFNjaGVkdWxlIHRoZSBtZXNzYWdl
LgotICAgIGF1dG8qIHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGltZXIoKnRoaXMsIFdURk1vdmUo
bWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgaW5jdW1iZW50V2luZG93LCBXVEZNb3ZlKHRhcmdldCks
IFdURk1vdmUoc3RhY2tUcmFjZSkpOworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gaW5jdW1iZW50
V2luZG93UHJveHkgPSBpbmN1bWJlbnRXaW5kb3cuZnJhbWUoKSA/ICZpbmN1bWJlbnRXaW5kb3cu
ZnJhbWUoKS0+d2luZG93UHJveHkoKSA6IG51bGxwdHI7CisgICAgYXV0byogdGltZXIgPSBuZXcg
UG9zdE1lc3NhZ2VUaW1lcigqdGhpcywgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luLCBX
VEZNb3ZlKGluY3VtYmVudFdpbmRvd1Byb3h5KSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHN0
YWNrVHJhY2UpKTsKICAgICB0aW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CiAKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFBvc3RNZXNzYWdlKCptX2ZyYW1lLCAqdGltZXIsIHN0YXRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggOTE3NGFmZDUzMjE2
YzExMmM0YjVlMGQ1NzU4N2M4NmQxZmM5YzVhMS4uN2M0OWEyMTdmMDJhNjg1NTQ3MGRiMzE3N2I4
ZjU5MzU0MzhmNTY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAg
LTUwOCw3ICs1MDgsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1dEV2
ZW50Rm9yKEZyYW1lKiBpbm5lckZyYW1lLCBjb25zdCBEcmFnRGF0YQogICAgIFN0cmluZyB0ZXh0
ID0gbV9wYWdlLmRyYWdDYXJldENvbnRyb2xsZXIoKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgp
ID8gZW1wdHlTdHJpbmcoKSA6IGRyYWdEYXRhLmFzUGxhaW5UZXh0KCk7CiAgICAgRWxlbWVudCog
dGFyZ2V0ID0gaW5uZXJGcmFtZS0+ZWRpdG9yKCkuZmluZEV2ZW50VGFyZ2V0RnJvbShtX3BhZ2Uu
ZHJhZ0NhcmV0Q29udHJvbGxlcigpLmNhcmV0UG9zaXRpb24oKSk7CiAgICAgLy8gRklYTUU6IFdo
YXQgZ3VhcmFudGVlcyB0YXJnZXQgaXMgbm90IG51bGw/Ci0gICAgYXV0byBldmVudCA9IFRleHRF
dmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwg
dGV4dCk7CisgICAgYXV0byBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZy
YW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCB0ZXh0KTsKICAgICB0YXJnZXQtPmRpc3Bh
dGNoRXZlbnQoZXZlbnQpOwogICAgIHJldHVybiAhZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA4N2QxMjc3NGNjNmYzNGFl
MDcwMTAwZDE5ZWViNzY1NjVmMjUwNzlkLi43ZDJjOTNhM2MwZjk4MWY4MDU5ZWE4YjdmMzg2YmZh
NmZlMGMwMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zODAyLDcg
KzM4MDIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVGV4dElucHV0RXZlbnQoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBFdmVudCogdW5kZXJseWluZ0V2ZQogICAgIGlmIChGcmFtZVZpZXcqIHZp
ZXcgPSBtX2ZyYW1lLnZpZXcoKSkKICAgICAgICAgdmlldy0+ZGlzYWJsZUxheWVyRmx1c2hUaHJv
dHRsaW5nVGVtcG9yYXJpbHlGb3JJbnRlcmFjdGlvbigpOwogCi0gICAgUmVmPFRleHRFdmVudD4g
ZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygp
LCB0ZXh0LCBpbnB1dFR5cGUpOworICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50
OjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCB0ZXh0LCBpbnB1dFR5
cGUpOwogICAgIGV2ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQodW5kZXJseWluZ0V2ZW50KTsKIAog
ICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4
IGE4NDI2NWFhNzkzNmMzNDg5MmNjOWUwNzFhOTkwYjlhZDFlNTExNjguLjgyODRhNjUzMWRhM2Fh
MDFkMGZmYmNlZGIwODU4MTE3MjBiNjZiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0yMTIs
NiArMjEyLDcgQEAgUmVmPEZyYW1lPiBGcmFtZTo6Y3JlYXRlKFBhZ2UqIHBhZ2UsIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFtZUwKIAogRnJhbWU6On5GcmFtZSgpCiB7
CisgICAgd2luZG93UHJveHkoKS5kZXN0cm95QWxsSlNXaW5kb3dQcm94aWVzKCk7CiAgICAgc2V0
VmlldyhudWxscHRyKTsKICAgICBsb2FkZXIoKS5jYW5jZWxBbmRDbGVhcigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3cuY3BwCmluZGV4IDdiMDljODE4
N2M0NjQwMDY3MDZmYzNlY2E0NzdiNjk3MDM2NWJhMjIuLmE5ZDBhYmJlOGI1NTIxNTZiOTU3YTRk
MTQxNjQ1MzRiMjJkYTAzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01ET01XaW5kb3cuY3BwCkBAIC02NCw2ICs2NCwyMiBAQCBXZWJLaXRET01ET01XaW5kb3cqIGtp
dChXZWJDb3JlOjpET01XaW5kb3cqIG9iaikKICAgICByZXR1cm4gd3JhcERPTVdpbmRvdyhvYmop
OwogfQogCitXZWJLaXRET01ET01XaW5kb3cqIGtpdChXZWJDb3JlOjpXaW5kb3dQcm94eSogd2lu
ZG93UHJveHkpCit7CisgICAgaWYgKCF3aW5kb3dQcm94eSB8fCAhaXM8RE9NV2luZG93Pih3aW5k
b3dQcm94eS0+d2luZG93KCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBraXQoZG93bmNhc3Q8RE9NV2luZG93Pih3aW5kb3dQcm94eS0+d2luZG93KCkpKTsKK30KKwor
V2ViQ29yZTo6V2luZG93UHJveHkqIHRvV2luZG93UHJveHkoV2ViS2l0RE9NRE9NV2luZG93KiB2
aWV3KQoreworICAgIGF1dG8qIHdpbmRvdyA9IGNvcmUodmlldyk7CisgICAgaWYgKCF3aW5kb3cg
fHwgIXdpbmRvdy0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
ICZ3aW5kb3ctPmZyYW1lKCktPndpbmRvd1Byb3h5KCk7Cit9CisKIFdlYkNvcmU6OkRPTVdpbmRv
dyogY29yZShXZWJLaXRET01ET01XaW5kb3cqIHJlcXVlc3QpCiB7CiAgICAgcmV0dXJuIHJlcXVl
c3QgPyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpET01XaW5kb3cqPihXRUJLSVRfRE9NX09CSkVDVChy
ZXF1ZXN0KS0+Y29yZU9iamVjdCkgOiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdpbmRvd1ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01ET01XaW5kb3dQcml2YXRlLmgKaW5kZXggZTMxZDIyNzViOGI4MWNhZjgwZTIw
MWU2ZGQ2YjFhZTk2MmNjZmY5Mi4uNjY4NGVjNjc4OGVkZWZiMGU4NmQ1ZGQxNTQyNjhlNmZkMzVm
NjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdpbmRvd1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NV2lu
ZG93UHJpdmF0ZS5oCkBAIC0yMSwxMiArMjEsMTUgQEAKICNkZWZpbmUgV2ViS2l0RE9NRE9NV2lu
ZG93UHJpdmF0ZV9oCiAKICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdpbmRvdy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvV2luZG93UHJveHkuaD4KICNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NRE9N
V2luZG93Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogV2ViS2l0RE9NRE9NV2luZG93KiB3cmFw
RE9NV2luZG93KFdlYkNvcmU6OkRPTVdpbmRvdyopOwogV2ViS2l0RE9NRE9NV2luZG93KiBraXQo
V2ViQ29yZTo6RE9NV2luZG93Kik7CitXZWJLaXRET01ET01XaW5kb3cqIGtpdChXZWJDb3JlOjpX
aW5kb3dQcm94eSopOwogV2ViQ29yZTo6RE9NV2luZG93KiBjb3JlKFdlYktpdERPTURPTVdpbmRv
dyopOworV2ViQ29yZTo6V2luZG93UHJveHkqIHRvV2luZG93UHJveHkoV2ViS2l0RE9NRE9NV2lu
ZG93Kik7CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8qIFdlYktpdERPTURPTVdp
bmRvd1ByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxGcmFtZUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUhUTUxGcmFtZUVsZW1lbnQuY3BwCmluZGV4IGMxNWY2YTQ4NjRmNzgzZWMwNzM2YjRjYTM3
OTZjNmRkNjZiMzc2MmEuLjViNjcxNTIzOGM2OTM5YWE3Y2Q5MDc2YzI1Yjk5MjUxYzZkMTU1NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01IVE1MRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEZyYW1l
RWxlbWVudC5jcHAKQEAgLTQ5Miw4ICs0OTIsNyBAQCBXZWJLaXRET01ET01XaW5kb3cqIHdlYmtp
dF9kb21faHRtbF9mcmFtZV9lbGVtZW50X2dldF9jb250ZW50X3dpbmRvdyhXZWJLaXRET01IVAog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfRlJBTUVfRUxFTUVOVChzZWxmKSwgMCk7CiAg
ICAgV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6RE9NV2luZG93PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQ
dHIoaXRlbS0+Y29udGVudFdpbmRvdygpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVj
dFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0KGl0ZW0tPmNvbnRlbnRXaW5k
b3coKSk7CiB9CiAKIGdsb25nIHdlYmtpdF9kb21faHRtbF9mcmFtZV9lbGVtZW50X2dldF93aWR0
aChXZWJLaXRET01IVE1MRnJhbWVFbGVtZW50KiBzZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUtleWJv
YXJkRXZlbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTUtleWJvYXJkRXZlbnQuY3BwCmluZGV4IDQxZmNjOTc4MzQzZDQy
MzhkYzZiNTFhNzA0Mzk4YWY3M2FiYzgyZDAuLjg4M2ViNjY1Y2MyMjU2YzViYzZlMzJlOWYzNmVi
YjI3MDhjNWU4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01LZXlib2FyZEV2ZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
S2V5Ym9hcmRFdmVudC5jcHAKQEAgLTIwMiw5ICsyMDIsOCBAQCB2b2lkIHdlYmtpdF9kb21fa2V5
Ym9hcmRfZXZlbnRfaW5pdF9rZXlib2FyZF9ldmVudChXZWJLaXRET01LZXlib2FyZEV2ZW50KiBz
ZWxmLAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoa2V5SWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6
S2V5Ym9hcmRFdmVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmlu
ZyBjb252ZXJ0ZWRUeXBlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHR5cGUpOwotICAgIFdlYkNv
cmU6OkRPTVdpbmRvdyogY29udmVydGVkVmlldyA9IFdlYktpdDo6Y29yZSh2aWV3KTsKICAgICBX
VEY6OlN0cmluZyBjb252ZXJ0ZWRLZXlJZGVudGlmaWVyID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4
KGtleUlkZW50aWZpZXIpOwotICAgIGl0ZW0tPmluaXRLZXlib2FyZEV2ZW50KGNvbnZlcnRlZFR5
cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29udmVydGVkVmlldywgY29udmVydGVkS2V5SWRl
bnRpZmllciwgbG9jYXRpb24sIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGFs
dEdyYXBoS2V5KTsKKyAgICBpdGVtLT5pbml0S2V5Ym9hcmRFdmVudChjb252ZXJ0ZWRUeXBlLCBj
YW5CdWJibGUsIGNhbmNlbGFibGUsIHRvV2luZG93UHJveHkodmlldyksIGNvbnZlcnRlZEtleUlk
ZW50aWZpZXIsIGxvY2F0aW9uLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBh
bHRHcmFwaEtleSk7CiB9CiAKIGdjaGFyKiB3ZWJraXRfZG9tX2tleWJvYXJkX2V2ZW50X2dldF9r
ZXlfaWRlbnRpZmllcihXZWJLaXRET01LZXlib2FyZEV2ZW50KiBzZWxmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXcubW0KaW5kZXggMWE0YzI5YjFiMGRk
YWM4MjI1N2JkNmY0YmE2ZGM0NGZmMzkxMmU4OS4uMTY5ZTRhZTVmZTc3NWI5OGQyNGNkNDgwNmE1
YTljNTA3OGUxMGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUFic3RyYWN0Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJz
dHJhY3RWaWV3Lm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNj
cmlwdE9iamVjdFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2luZG93UHJveHkuaD4KIAog
I2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RnJhbWUqPihfaW50ZXJuYWwp
CiAKQEAgLTEwMCwzICsxMDEsMTkgQEAgRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6QWJz
dHJhY3RET01XaW5kb3cqIHZhbHVlKQogCiAgICAgcmV0dXJuIGtpdChkb3duY2FzdDxXZWJDb3Jl
OjpET01XaW5kb3c+KHZhbHVlKSk7CiB9CisKK0RPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6
OldpbmRvd1Byb3h5KiB3aW5kb3dQcm94eSkKK3sKKyAgICBpZiAoIXdpbmRvd1Byb3h5KQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIGtpdCh3aW5kb3dQcm94eS0+d2luZG93KCkp
OworfQorCitXZWJDb3JlOjpXaW5kb3dQcm94eSogdG9XaW5kb3dQcm94eShET01BYnN0cmFjdFZp
ZXcgKnZpZXcpCit7CisgICAgYXV0byogd2luZG93ID0gY29yZSh2aWV3KTsKKyAgICBpZiAoIXdp
bmRvdyB8fCAhd2luZG93LT5mcmFtZSgpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVy
biAmd2luZG93LT5mcmFtZSgpLT53aW5kb3dQcm94eSgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaAppbmRleCBjNGQ3
MzI1YzdmMjViYjViODYxMjc0MTZlM2Q5MGQyODIxNGMxMTk3Li4zNTlmMDVlYjRkNGE0M2FhNTI0
MjMzZTRiYmY2NjI4ZGIzNjg4NmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaApAQCAtMjgsMTEgKzI4LDE0IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBYnN0cmFjdERPTVdpbmRvdzsKIGNsYXNzIERPTVdp
bmRvdzsKK2NsYXNzIFdpbmRvd1Byb3h5OwogfQogCiBXZWJDb3JlOjpET01XaW5kb3cqIGNvcmUo
RE9NQWJzdHJhY3RWaWV3ICopOwogRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6RE9NV2lu
ZG93Kik7CiBET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpBYnN0cmFjdERPTVdpbmRvdyop
OworRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6V2luZG93UHJveHkqKTsKK1dlYkNvcmU6
OldpbmRvd1Byb3h5KiB0b1dpbmRvd1Byb3h5KERPTUFic3RyYWN0VmlldyAqKTsKIAogQGludGVy
ZmFjZSBET01BYnN0cmFjdFZpZXcgKFdlYktpdExlZ2FjeUludGVybmFsKQogLSAodm9pZClfZGlz
Y29ubmVjdEZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TURvY3VtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1t
CmluZGV4IDZjMmYzNmQ4MjRhOTRhNjgyM2JmMmE4MWM5YmVkMjIzNGU3YTY4ZjQuLmM5MGY5ZWZl
NDIzOWQ1NDRhMWVjNjBlYzI2NTVhOWE4NDhjNmUwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NRG9jdW1lbnQubW0KQEAgLTY4NCw3ICs2ODQsNyBAQCAtIChET01DU1NTdHls
ZURlY2xhcmF0aW9uICopZ2V0Q29tcHV0ZWRTdHlsZTooRE9NRWxlbWVudCAqKWVsZW1lbnQgcHNl
dWRvRWxlbWVudAogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAg
ICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7Ci0gICAg
V2ViQ29yZTo6RE9NV2luZG93KiBkdiA9IElNUEwtPmRlZmF1bHRWaWV3KCk7CisgICAgV2ViQ29y
ZTo6RE9NV2luZG93KiBkdiA9IElNUEwtPmRvbVdpbmRvdygpOwogICAgIGlmICghZHYpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihkdi0+Z2V0Q29tcHV0
ZWRTdHlsZSgqY29yZShlbGVtZW50KSwgcHNldWRvRWxlbWVudCkpKTsKQEAgLTY5OCw3ICs2OTgs
NyBAQCAtIChET01DU1NSdWxlTGlzdCAqKWdldE1hdGNoZWRDU1NSdWxlczooRE9NRWxlbWVudCAq
KWVsZW1lbnQgcHNldWRvRWxlbWVudDooTlNTdAogLSAoRE9NQ1NTUnVsZUxpc3QgKilnZXRNYXRj
aGVkQ1NTUnVsZXM6KERPTUVsZW1lbnQgKillbGVtZW50IHBzZXVkb0VsZW1lbnQ6KE5TU3RyaW5n
ICopcHNldWRvRWxlbWVudCBhdXRob3JPbmx5OihCT09MKWF1dGhvck9ubHkKIHsKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RE9NV2luZG93
KiBkdiA9IElNUEwtPmRlZmF1bHRWaWV3KCk7CisgICAgV2ViQ29yZTo6RE9NV2luZG93KiBkdiA9
IElNUEwtPmRvbVdpbmRvdygpOwogICAgIGlmICghZHYpCiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihkdi0+Z2V0TWF0Y2hlZENTU1J1bGVzKGNvcmUoZWxl
bWVudCksIHBzZXVkb0VsZW1lbnQsIGF1dGhvck9ubHkpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01LZXlib2FyZEV2ZW50Lm1tCmluZGV4IGU5YWIxZmVmZTc0ZDk3MzRl
YWMyODQxNmIwOWVmMjMxMGZjZmM3MWIuLmJhMmZiZTRlMTg5ZDYxMzZlZWQ3MzVlZmZmZTcxMjBi
N2Y5Njk1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01LZXli
b2FyZEV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01LZXlib2Fy
ZEV2ZW50Lm1tCkBAIC0xMTAsMjUgKzExMCwyNSBAQCAtIChCT09MKWdldE1vZGlmaWVyU3RhdGU6
KE5TU3RyaW5nICopa2V5SWRlbnRpZmllckFyZwogLSAodm9pZClpbml0S2V5Ym9hcmRFdmVudDoo
TlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9P
TCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKXZpZXcga2V5SWRlbnRpZmllcjoo
TlNTdHJpbmcgKilpbktleUlkZW50aWZpZXIgbG9jYXRpb246KHVuc2lnbmVkKWluTG9jYXRpb24g
Y3RybEtleTooQk9PTClpbkN0cmxLZXkgYWx0S2V5OihCT09MKWluQWx0S2V5IHNoaWZ0S2V5OihC
T09MKWluU2hpZnRLZXkgbWV0YUtleTooQk9PTClpbk1ldGFLZXkgYWx0R3JhcGhLZXk6KEJPT0wp
aW5BbHRHcmFwaEtleQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIGNvcmUodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5Mb2NhdGlvbiwgaW5DdHJsS2V5LCBp
bkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkFsdEdyYXBoS2V5KTsKKyAgICBJTVBM
LT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRvV2luZG93
UHJveHkodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5Mb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFs
dEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkFsdEdyYXBoS2V5KTsKIH0KIAogLSAodm9p
ZClpbml0S2V5Ym9hcmRFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5C
dWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAq
KXZpZXcga2V5SWRlbnRpZmllcjooTlNTdHJpbmcgKilpbktleUlkZW50aWZpZXIgbG9jYXRpb246
KHVuc2lnbmVkKWluTG9jYXRpb24gY3RybEtleTooQk9PTClpbkN0cmxLZXkgYWx0S2V5OihCT09M
KWluQWx0S2V5IHNoaWZ0S2V5OihCT09MKWluU2hpZnRLZXkgbWV0YUtleTooQk9PTClpbk1ldGFL
ZXkKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1Q
TC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBjb3JlKHZp
ZXcpLCBpbktleUlkZW50aWZpZXIsIGluTG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGlu
U2hpZnRLZXksIGluTWV0YUtleSk7CisgICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwg
Y2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBpbktleUlkZW50aWZp
ZXIsIGluTG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtl
eSk7CiB9CiAKIC0gKHZvaWQpaW5pdEtleWJvYXJkRXZlbnQ6KE5TU3RyaW5nICopdHlwZSBjYW5C
dWJibGU6KEJPT0wpY2FuQnViYmxlIGNhbmNlbGFibGU6KEJPT0wpY2FuY2VsYWJsZSB2aWV3OihE
T01BYnN0cmFjdFZpZXcgKil2aWV3IGtleUlkZW50aWZpZXI6KE5TU3RyaW5nICopaW5LZXlJZGVu
dGlmaWVyIGtleUxvY2F0aW9uOih1bnNpZ25lZClpbktleUxvY2F0aW9uIGN0cmxLZXk6KEJPT0wp
aW5DdHJsS2V5IGFsdEtleTooQk9PTClpbkFsdEtleSBzaGlmdEtleTooQk9PTClpblNoaWZ0S2V5
IG1ldGFLZXk6KEJPT0wpaW5NZXRhS2V5IGFsdEdyYXBoS2V5OihCT09MKWluQWx0R3JhcGhLZXkK
IHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+
aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBjb3JlKHZpZXcp
LCBpbktleUlkZW50aWZpZXIsIGluS2V5TG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGlu
U2hpZnRLZXksIGluTWV0YUtleSwgaW5BbHRHcmFwaEtleSk7CisgICAgSU1QTC0+aW5pdEtleWJv
YXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRvd1Byb3h5KHZpZXcp
LCBpbktleUlkZW50aWZpZXIsIGluS2V5TG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGlu
U2hpZnRLZXksIGluTWV0YUtleSwgaW5BbHRHcmFwaEtleSk7CiB9CiAKIC0gKHZvaWQpaW5pdEtl
eWJvYXJkRXZlbnQ6KE5TU3RyaW5nICopdHlwZSBjYW5CdWJibGU6KEJPT0wpY2FuQnViYmxlIGNh
bmNlbGFibGU6KEJPT0wpY2FuY2VsYWJsZSB2aWV3OihET01BYnN0cmFjdFZpZXcgKil2aWV3IGtl
eUlkZW50aWZpZXI6KE5TU3RyaW5nICopaW5LZXlJZGVudGlmaWVyIGtleUxvY2F0aW9uOih1bnNp
Z25lZClpbktleUxvY2F0aW9uIGN0cmxLZXk6KEJPT0wpaW5DdHJsS2V5IGFsdEtleTooQk9PTClp
bkFsdEtleSBzaGlmdEtleTooQk9PTClpblNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wpaW5NZXRhS2V5
CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwt
PmluaXRLZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29yZSh2aWV3
KSwgaW5LZXlJZGVudGlmaWVyLCBpbktleUxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBp
blNoaWZ0S2V5LCBpbk1ldGFLZXkpOworICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2aWV3KSwgaW5LZXlJZGVudGlm
aWVyLCBpbktleUxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1l
dGFLZXkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NTW91c2VFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3Vz
ZUV2ZW50Lm1tCmluZGV4IDdjN2UwZGRmZjE0MjE2MWVlNDhlNjc3NzAyNWU3ZjcwZTg1M2E4MTMu
LmU1MTVkODkzNWMxNzdkNDcxMDk0YTg0YzVjZmI4ZDY0ZGIyOTQzODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tCkBAIC0xNDUsNyArMTQ1LDcgQEAg
LSAodm9pZClpbml0TW91c2VFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTClj
YW5CdWJibGUgY2FuY2VsYWJsZTooQk8KICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CiAgICAgRE9NTm9kZSogaW5SZWxhdGVkVGFyZ2V0T2JqQyA9IGluUmVsYXRlZFRh
cmdldDsKICAgICBXZWJDb3JlOjpOb2RlKiBpblJlbGF0ZWRUYXJnZXROb2RlID0gY29yZShpblJl
bGF0ZWRUYXJnZXRPYmpDKTsKLSAgICBJTVBMLT5pbml0TW91c2VFdmVudCh0eXBlLCBjYW5CdWJi
bGUsIGNhbmNlbGFibGUsIGNvcmUodmlldyksIGRldGFpbCwgaW5TY3JlZW5YLCBpblNjcmVlblks
IGluQ2xpZW50WCwgaW5DbGllbnRZLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBp
bk1ldGFLZXksIGluQnV0dG9uLCBpblJlbGF0ZWRUYXJnZXROb2RlKTsKKyAgICBJTVBMLT5pbml0
TW91c2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRvV2luZG93UHJveHkodmll
dyksIGRldGFpbCwgaW5TY3JlZW5YLCBpblNjcmVlblksIGluQ2xpZW50WCwgaW5DbGllbnRZLCBp
bkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXksIGluQnV0dG9uLCBpblJl
bGF0ZWRUYXJnZXROb2RlKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01UZXh0RXZlbnQubW0KaW5kZXggMjg2N2JjODAyMzkxNmE3ZTY3ODBmYTNlYjcxMjBjOWM5
MWFkMmE0Mi4uZGZhNzYyMDI0YjU2NjIyY2U1YjI5OTFkZjMxMmRmZDUzODcwZDBlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tCkBAIC01MCw3ICs1MCw3
IEBAIC0gKE5TU3RyaW5nICopZGF0YQogLSAodm9pZClpbml0VGV4dEV2ZW50OihOU1N0cmluZyAq
KXR5cGVBcmcgY2FuQnViYmxlQXJnOihCT09MKWNhbkJ1YmJsZUFyZyBjYW5jZWxhYmxlQXJnOihC
T09MKWNhbmNlbGFibGVBcmcgdmlld0FyZzooRE9NQWJzdHJhY3RWaWV3ICopdmlld0FyZyBkYXRh
QXJnOihOU1N0cmluZyAqKWRhdGFBcmcKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+aW5pdFRleHRFdmVudCh0eXBlQXJnLCBjYW5CdWJibGVB
cmcsIGNhbmNlbGFibGVBcmcsIGNvcmUodmlld0FyZyksIGRhdGFBcmcpOworICAgIElNUEwtPmlu
aXRUZXh0RXZlbnQodHlwZUFyZywgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCB0b1dpbmRv
d1Byb3h5KHZpZXdBcmcpLCBkYXRhQXJnKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJRXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NVUlFdmVudC5tbQppbmRleCBhNDY0ZGFjZmJmNTEyNjZiYTkyZTU5NzcxOTI5
ZDg2MzFmMmYxNjQwLi4zZGM5N2IzOTM3ODQ3ZDBhY2IwZTBjZDJlYTk5YzkxZmQxMjZmNjZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbQpAQCAtMTAzLDcgKzEw
Myw3IEBAIC0gKGludCl3aGljaAogLSAodm9pZClpbml0VUlFdmVudDooTlNTdHJpbmcgKil0eXBl
IGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZp
ZXc6KERPTUFic3RyYWN0VmlldyAqKWluVmlldyBkZXRhaWw6KGludClpbkRldGFpbAogewogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0VUlF
dmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUoaW5WaWV3KSwgaW5EZXRhaWwp
OworICAgIElNUEwtPmluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9X
aW5kb3dQcm94eShpblZpZXcpLCBpbkRldGFpbCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01XaGVlbEV2ZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQubW0KaW5kZXggOGYwNTY5Y2E2YTNmOTU4Yzc0
MWY2ZDg4MzU4ZmZmZDE2MGIxOGFjOC4uZGQ0YTU3YjBmMzJiNzdiNDMwYjZkZDljZDViMTUyMzRl
NWE0MzRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVs
RXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQu
bW0KQEAgLTk2LDcgKzk2LDcgQEAgLSAoQk9PTClpc0hvcml6b250YWwKIC0gKHZvaWQpaW5pdFdo
ZWVsRXZlbnQ6KGludClpbldoZWVsRGVsdGFYIHdoZWVsRGVsdGFZOihpbnQpaW5XaGVlbERlbHRh
WSB2aWV3OihET01BYnN0cmFjdFZpZXcgKil2aWV3IHNjcmVlblg6KGludClzY3JlZW5YIHNjcmVl
blk6KGludClzY3JlZW5ZIGNsaWVudFg6KGludCljbGllbnRYIGNsaWVudFk6KGludCljbGllbnRZ
IGN0cmxLZXk6KEJPT0wpY3RybEtleSBhbHRLZXk6KEJPT0wpYWx0S2V5IHNoaWZ0S2V5OihCT09M
KXNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wpbWV0YUtleQogewogICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0V2ViS2l0V2hlZWxFdmVudChpbldo
ZWVsRGVsdGFYLCBpbldoZWVsRGVsdGFZLCBjb3JlKHZpZXcpLCBzY3JlZW5YLCBzY3JlZW5ZLCBj
bGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KTsKKyAg
ICBJTVBMLT5pbml0V2ViS2l0V2hlZWxFdmVudChpbldoZWVsRGVsdGFYLCBpbldoZWVsRGVsdGFZ
LCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZ
LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KTsKIH0KIAogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmluZGV4IDFiNDNkZDlmNGNhMTM1
YjJkMWM0ZDRjNDY5Zjg2ODU1NWM0N2U5NjYuLmIyNTI2MWY3ZGZjZTFiN2NmNDcxYTlkMWYyM2Ni
MDg3YjI1NzdhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVD
bGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5j
cHAKQEAgLTgwMiw3ICs4MDIsNyBAQCBIUkVTVUxUIERPTURvY3VtZW50OjpnZXRDb21wdXRlZFN0
eWxlKF9Jbl9vcHRfIElET01FbGVtZW50KiBlbHQsIF9Jbl8gQlNUUiBwc2V1ZAogICAgIGlmICgh
ZWxlbWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIFdlYkNvcmU6OkRPTVdpbmRv
dyogZHYgPSBtX2RvY3VtZW50LT5kZWZhdWx0VmlldygpOworICAgIGF1dG8qIGR2ID0gbV9kb2N1
bWVudC0+ZG9tV2luZG93KCk7CiAgICAgU3RyaW5nIHBzZXVkb0VsdFN0cmluZyhwc2V1ZG9FbHQp
OwogICAgIAogICAgIGlmICghZHYpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338897</attachid>
            <date>2018-04-26 11:24:15 -0700</date>
            <delta_ts>2018-04-26 11:58:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185022-20180426112415.patch</filename>
            <type>text/plain</type>
            <size>137507</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNmYmU3ZTk5YzEwNmQx
NzM1Nzc3MGZmMTQxMzkwZjdlODNmNmU2My4uYWM4MDhlYTIzNDlkYzE2MzM0MWFkMmRkY2ZiOTIz
OWJkMjQ0MjQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxOC0wNC0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94eSBp
bnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHVzaW5nIERPTVdpbmRvdyBpbiBhbGwgb2Ygb3Vy
IElETCBmaWxlcyBhbmQgdXNlIFdpbmRvd1Byb3h5IGFzCisgICAgICAgIHBlciB0aGVpciByZXNw
ZWN0aXZlIHNwZWNpZmljYXRpb25zLiBBcyBhIHJlc3VsdCwgdGhlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGFzIGFsc28gdXBkYXRlZCB0byB1c2UgV2luZG93UHJveHkgdHlwZSBpbnN0ZWFkIG9m
IERPTVdpbmRvdy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXaW5kb3dQcm94eTo6d2luZG93UHJveHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9XaW5kb3dQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eTo6
fldpbmRvd1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpkZXN0cm95QWxs
SlNXaW5kb3dQcm94aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpnbG9iYWxP
YmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpXaW5kb3dQcm94eTo6ZnJhbWUgY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKElzQnVpbHRpblR5cGUpOgorICAgICAg
ICAoQ29tcHV0ZUlzQ2FsbGJhY2tJbnRlcmZhY2UpOgorICAgICAgICAoQ29tcHV0ZUlzQ2FsbGJh
Y2tGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChBZGRUb0luY2x1ZGVzRm9ySURMVHlwZSk6CisgICAgICAgIChHZXRCYXNl
SURMVHlwZSk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWVET01Db252ZXJ0TmVlZHNTdGF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RPdmVybG9hZERpc3BhdGNoZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50
KToKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5oOgorICAgICAgICAqIGRvbS9Db21w
b3NpdGlvbkV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmRlZmF1bHRWaWV3IGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudFRvdWNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VG91Y2g6OmNyZWF0ZVRv
dWNoKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRUb3VjaC5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudFRvdWNoLmlkbDoKKyAgICAgICAgKiBkb20vRm9jdXNFdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb2N1c0V2ZW50OjpGb2N1c0V2ZW50KToKKyAgICAgICAgKiBkb20vRm9jdXNFdmVu
dC5oOgorICAgICAgICAqIGRvbS9JbnB1dEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0RXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEV2ZW50OjpJbnB1dEV2
ZW50KToKKyAgICAgICAgKiBkb20vSW5wdXRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2Fy
ZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OktleWJvYXJkRXZlbnQ6OmNoYXJDb2RlIGNvbnN0KToKKyAgICAgICAgKiBkb20vS2V5
Ym9hcmRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmlkbDoKKyAgICAgICAg
KiBkb20vTWVzc2FnZUV2ZW50Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5pZGw6Cisg
ICAgICAgICogZG9tL01vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayk6CisgICAgICAgICogZG9t
L01vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5pZGw6CisgICAgICAgICog
ZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRl
ZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0
ZWRFdmVudDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6ZnJh
bWVWaWV3RnJvbVdpbmRvd1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2
ZW50Ojppbml0Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZl
bnQ6OmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUGFnZUxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpsb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyBj
b25zdCk6CisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50Lmg6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAqIGRvbS9TaW11bGF0ZWRDbGljay5jcHA6CisgICAgICAgICog
ZG9tL1RleHRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3ApOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEV2ZW50OjpUZXh0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50Ojppbml0
VGV4dEV2ZW50KToKKyAgICAgICAgKiBkb20vVGV4dEV2ZW50Lmg6CisgICAgICAgICogZG9tL1Rl
eHRFdmVudC5pZGw6CisgICAgICAgICogZG9tL1RvdWNoRXZlbnQuaWRsOgorICAgICAgICAqIGRv
bS9VSUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVJRXZlbnQ6OlVJRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VUlFdmVudDo6aW5pdFVJRXZlbnQpOgorICAgICAgICAqIGRvbS9VSUV2
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpVSUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VUlFdmVudDo6dmlldyBjb25zdCk6CisgICAgICAgICogZG9tL1VJRXZlbnQuaWRsOgor
ICAgICAgICAqIGRvbS9VSUV2ZW50SW5pdC5oOgorICAgICAgICAqIGRvbS9VSUV2ZW50SW5pdC5p
ZGw6CisgICAgICAgICogZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlVJRXZlbnRXaXRoS2V5U3RhdGU6OlVJRXZlbnRXaXRoS2V5U3RhdGUpOgorICAgICAgICAq
IGRvbS9XaGVlbEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OldoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2ZW50KToKKyAgICAgICAgKiBk
b20vV2hlZWxFdmVudC5oOgorICAgICAgICAqIGRvbS9XaGVlbEV2ZW50LmlkbDoKKyAgICAgICAg
KiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3Rl
QXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRDb21wb3NpdGlvbik6CisgICAgICAgICog
aHRtbC9IVE1MRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50Ojpu
YW1lZEl0ZW0pOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGw6
CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50V2luZG93IGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50
OjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3N0TWVzc2Fn
ZVRpbWVyOjpQb3N0TWVzc2FnZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc3RNZXNzYWdl
VGltZXI6OmV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2Up
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlVGV4dElucHV0RXZlbnQpOgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6fkZyYW1lKToKKyAgICAgICAgVXBkYXRlIEZyYW1lIGRlc3RydWN0
b3IgdG8gZGVzdHJveSBhbGwgaXRzIEpTV2luZG93UHJveGllcyBiZWZvcmUgZG9pbmcgYW55dGhp
bmcgZWxzZS4KKyAgICAgICAgQmVjYXVzZSByZWZpbmcgYSBXaW5kb3dQcm94eSBhY3R1YWxseSBy
ZWZzIGl0cyBmcmFtZSwgaXQgaXMgcG9zc2libGUgdGhhdCB3aGVuIGEgSlMKKyAgICAgICAgb2Jq
ZWN0IGlzIHN3ZXB0LCBpdHMgZGVzdHJveXMgYSBXaW5kb3dQcm94eSwgd2hpY2ggZGVzdHJveXMg
YSBGcmFtZS4gVGhlIEZyYW1lIGRlc3RydWN0b3IKKyAgICAgICAgd291bGQgdGhlbiBjYWxsIEZy
YW1lTG9hZGVyOjpjYW5jZWxBbmRDbGVhcigpIHdoaWNoIHdvdWxkIGVuZCB1cCBjYWxsaW5nIFNj
cmlwdENvbnRyb2xsZXI6OmVuYWJsZUV2YWwoKQorICAgICAgICBhbmQgYWNjZXNzaW5nIEpTV2lu
ZG93UHJveHk6OndpbmRvdygpLiBUaGlzIHdvdWxkIGhpdCBhbiBhc3NlcnRpb24gd2hlbiBkb2lu
ZyB0aGUganNDYXN0KCkgaW4KKyAgICAgICAgSlNDZWxsOjpjbGFzc0luZm8oSlNDOjpWTSYpOgor
ICAgICAgICBBU1NFUlQodm0uaGVhcC5tdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OlN3
ZWVwaW5nIHx8ICF2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKwogMjAxOC0w
NC0yMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1dQRV1bR1RLXSBSZW1vdmUgV2xVbmlxdWVQdHI8d2xfZGlzcGxheT4gZm9vdGd1bgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGYzMDg5NWFiYWY2NzAwMjA3NDJkNGVmYzAzOTAx
OGRhMjc3ZTc2YWYuLjZhZDUyNWU5ODEwZWEwMjY3MmZlMWUwOTM3NTYxMWI4ZjM4NjQwMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0wNC0yNiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94
eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01BYnN0cmFjdFZpZXcubW06CisgICAg
ICAgIChraXQpOgorICAgICAgICAodG9XaW5kb3dQcm94eSk6CisgICAgICAgICogRE9NL0RPTUFi
c3RyYWN0Vmlld0ludGVybmFsLmg6CisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOgorICAg
ICAgICAoLVtET01Eb2N1bWVudCBkZWZhdWx0Vmlld10pOgorICAgICAgICAoLVtET01Eb2N1bWVu
dCBnZXRDb21wdXRlZFN0eWxlOnBzZXVkb0VsZW1lbnQ6XSk6CisgICAgICAgICgtW0RPTURvY3Vt
ZW50IGdldE1hdGNoZWRDU1NSdWxlczpwc2V1ZG9FbGVtZW50OmF1dGhvck9ubHk6XSk6CisgICAg
ICAgICogRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUhUTUxGcmFt
ZUVsZW1lbnQgY29udGVudFdpbmRvd10pOgorICAgICAgICAqIERPTS9ET01IVE1MSUZyYW1lRWxl
bWVudC5tbToKKyAgICAgICAgKC1bRE9NSFRNTElGcmFtZUVsZW1lbnQgY29udGVudFdpbmRvd10p
OgorICAgICAgICAqIERPTS9ET01LZXlib2FyZEV2ZW50Lm1tOgorICAgICAgICAoLVtET01LZXli
b2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5
SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdy
YXBoS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50
OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5
OmFsdEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50
IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmll
cjprZXlMb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdyYXBoS2V5
Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1
YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjprZXlMb2NhdGlvbjpjdHJsS2V5OmFs
dEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAqIERPTS9ET01Nb3VzZUV2ZW50Lm1t
OgorICAgICAgICAoLVtET01Nb3VzZUV2ZW50IGluaXRNb3VzZUV2ZW50OmNhbkJ1YmJsZTpjYW5j
ZWxhYmxlOnZpZXc6ZGV0YWlsOnNjcmVlblg6c2NyZWVuWTpjbGllbnRYOmNsaWVudFk6Y3RybEtl
eTphbHRLZXk6c2hpZnRLZXk6bWV0YUtleTpidXR0b246cmVsYXRlZFRhcmdldDpdKToKKyAgICAg
ICAgKiBET00vRE9NVGV4dEV2ZW50Lm1tOgorICAgICAgICAoLVtET01UZXh0RXZlbnQgaW5pdFRl
eHRFdmVudDpjYW5CdWJibGVBcmc6Y2FuY2VsYWJsZUFyZzp2aWV3QXJnOmRhdGFBcmc6XSk6Cisg
ICAgICAgICogRE9NL0RPTVVJRXZlbnQubW06CisgICAgICAgICgtW0RPTVVJRXZlbnQgdmlld10p
OgorICAgICAgICAoLVtET01VSUV2ZW50IGluaXRVSUV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxl
OnZpZXc6ZGV0YWlsOl0pOgorICAgICAgICAqIERPTS9ET01XaGVlbEV2ZW50Lm1tOgorICAgICAg
ICAoLVtET01XaGVlbEV2ZW50IGluaXRXaGVlbEV2ZW50OndoZWVsRGVsdGFZOnZpZXc6c2NyZWVu
WDpzY3JlZW5ZOmNsaWVudFg6Y2xpZW50WTpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5
Ol0pOgorCiAyMDE4LTA0LTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjMwOTIxLCByMjMwOTIzLCBy
MjMwOTI0LCByMjMwOTMyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGRkZTgwMDhk
YzE4N2YzMDI0OTk1YjJhNGJjN2Q5Y2QwY2E5ZWZjNGIuLmY5YjU5MDBmMTk5ZTU3Yzc0YWJkNDIz
YTkzMzFhZGQ4ZjQ0N2M4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxOC0wNC0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBXaW5kb3dQcm94eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVD
bGFzc2VzLmNwcDoKKyAgICAgICAgKERPTURvY3VtZW50OjpnZXRDb21wdXRlZFN0eWxlKToKKwog
MjAxOC0wNC0yMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzMDkyMSwgcjIzMDkyMywgcjIzMDkyNCwg
cjIzMDkzMiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAzMGY2NDZlYzc4ODYwMDlkMDgwYjdmY2U4NzJmOTBjMzdjMGJjNjZmLi4w
MTE0ZjIwNThmYWJhOWEyZGUwMTI4NTk3MGE2NjBhZDc0OTQ5ZGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzY1LDcgKzIz
NjUsNiBAQAogCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOTU5RTEx
QjhCQzIyQjAwNEQ5Mzg1IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcg
LyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVS
ZXF1ZXN0VHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTgzQjk2ODdCMTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk2
ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLzsgfTsKLQkJ
ODNCOUU3MEIyMDg2QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I5RTcwOTIwODZC
QTI3MDBFNUQ3NTYgLyogSlNET01Db252ZXJ0V2luZG93UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0JCNUM4ODFENUQ2RjQ1MDA1QTcx
RjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVz
Y2VuZGFudHNDb2xsZWN0aW9uLmggKi87IH07CiAJCTgzQzA1QTVCMUE2ODYyMTIwMDdFNURFQSAv
KiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9OwogCQk4M0MxRDQyNTE3OEQ1QUI0
MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0FyY0Ficy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNDMUQ0MTMxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhT
ZWdBcmNBYnMuaCAqLzsgfTsKQEAgLTk4NzcsNyArOTg3Niw2IEBACiAJCTgzQjc0RUYyMUYzRTBC
RDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVw
YWxpdmVSZXF1ZXN0VHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBL
ZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
M0I5Njg3OTE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0I5RTcwOTIwODZCQTI3MDBFNUQ3NTYgLyogSlNE
T01Db252ZXJ0V2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNET01Db252ZXJ0V2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNDMDVBNTgxQTY4NjIxMjAwN0U1REVB
IC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAv
KiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5ODM1LDcgKzE5ODMzLDYgQEAKIAkJCQk3QzhFMzRBQTFF
NEEzMzhFMDA1NENFMjMgLyogSlNET01Db252ZXJ0VmFyaWFkaWMuaCAqLywKIAkJCQk3Q0JBNUJB
NjFGMEI0QkRFMDAzNEQ3NDUgLyogSlNET01Db252ZXJ0V2ViR0wuY3BwICovLAogCQkJCTdDOEUz
NEFCMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5oICovLAotCQkJCTgzQjlF
NzA5MjA4NkJBMjcwMEU1RDc1NiAvKiBKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oICovLAogCQkJ
CTdDOEUzNEFDMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIu
aCAqLywKIAkJCSk7CiAJCQluYW1lID0gQ29udmVyc2lvbnM7CkBAIC0yODQxNiw3ICsyODQxMyw2
IEBACiAJCQkJN0M4RTM0QzQxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFVuaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRDNTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252
ZXJ0VmFyaWFkaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEM2MUU0QTMzQjAwMDU0Q0Uy
MyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODNCOUU3MEIyMDg2
QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QzhFMzRDNzFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0WFBhdGhOU1Jlc29s
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQzlFMEU0RDE2NDE5QzFFMDAzOTJCRTMgLyogSlNE
T01DU1NOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEN0MxMEQyOUE0NjMwMEI5
OTE4RiAvKiBKU0RPTUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
SURMVHlwZXMuaAppbmRleCA1ZmU3N2U4M2YyM2RhMmIxYjQyMGQxZTM5MmRlYTlkYzA3ZmIxYzgw
Li44MDU3ZGZhMTE1ODg4ZDNkYjRhMGYwYmUyNmI0YzY2MmI2OWM3ODdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL0lETFR5cGVzLmgKQEAgLTI3NCw3ICsyNzQsNiBAQCBzdHJ1Y3QgSURMU2NoZWR1bGVk
QWN0aW9uIDogSURMVHlwZTxzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPj4geyB9Owog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IElE
TFdyYXBwZXI8VD4geyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETEV2ZW50TGlz
dGVuZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJ
RExYUGF0aE5TUmVzb2x2ZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKLXN0cnVjdCBJRExXaW5kb3dQ
cm94eSA6IElETFdyYXBwZXI8SlNXaW5kb3dQcm94eT4geyB9OwogCiBzdHJ1Y3QgSURMSURCS2V5
IDogSURMV3JhcHBlcjxJREJLZXk+IHsgfTsKIHN0cnVjdCBJRExJREJLZXlEYXRhIDogSURMV3Jh
cHBlcjxJREJLZXlEYXRhPiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0V2luZG93UHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODJjMWZmNDgxOTJkZTVjMjA4MmRiN2IzZGUwYWMzYmFhNGIzNGM3Yy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIK
LSNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCi0jaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTQ29udmVydGVy
PElETFdpbmRvd1Byb3h5PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUg
PSB0cnVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9IGZh
bHNlOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgVSYmIHZhbHVlKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsKLSAgICB9Ci19
OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCmlu
ZGV4IDE4ODY3MWU0OWIxZjE0MzE1Yzk4Njc3MWQwN2JhNmY4M2UxYWJkMjcuLmE0YjE4MDVjNjUy
ZTIzMjBiZmQ3OWEwOTc5Mjc5YWNjMDg3YjY5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2luZG93UHJveHkuY3BwCkBAIC0xMTksNiArMTE5LDEyIEBAIHZvaWQgSlNXaW5k
b3dQcm94eTo6c2V0V2luZG93KEFic3RyYWN0RE9NV2luZG93JiBkb21XaW5kb3cpCiAgICAgQVNT
RVJUKHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkgPT0gd2luZG93KTsKIH0KIAorV2luZG93UHJv
eHkqIEpTV2luZG93UHJveHk6OndpbmRvd1Byb3h5KCkgY29uc3QKK3sKKyAgICBhdXRvJiB3aW5k
b3cgPSB3cmFwcGVkKCk7CisgICAgcmV0dXJuIHdpbmRvdy5mcmFtZSgpID8gJndpbmRvdy5mcmFt
ZSgpLT53aW5kb3dQcm94eSgpIDogbnVsbHB0cjsKK30KKwogdm9pZCBKU1dpbmRvd1Byb3h5Ojph
dHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKIHsKICAgICBhdXRvKiBnbG9i
YWxPYmplY3QgPSB3aW5kb3coKTsKQEAgLTEzOCwxMiArMTQ0LDYgQEAgQWJzdHJhY3RET01XaW5k
b3cmIEpTV2luZG93UHJveHk6OndyYXBwZWQoKSBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8SlNE
T01XaW5kb3dCYXNlKj4od2luZG93KS0+d3JhcHBlZCgpOwogfQogCi1BYnN0cmFjdERPTVdpbmRv
dyogSlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKFZNJiB2bSwgSlNPYmplY3QqIHZhbHVlKQotewot
ICAgIGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTV2luZG93UHJveHkqPih2bSwgdmFs
dWUpOwotICAgIHJldHVybiB3cmFwcGVyID8gJndyYXBwZXItPndyYXBwZWQoKSA6IG51bGxwdHI7
Ci19Ci0KIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBXaW5kb3dQcm94eSYgd2luZG93
UHJveHkpCiB7CiAgICAgcmV0dXJuICZ3aW5kb3dQcm94eS5qc1dpbmRvd1Byb3h5KGN1cnJlbnRX
b3JsZCgqc3RhdGUpKTsKQEAgLTE1NCw0ICsxNTQsMTQgQEAgSlNXaW5kb3dQcm94eSYgdG9KU1dp
bmRvd1Byb3h5KFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKICAgICByZXR1cm4gd2luZG93UHJveHkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiB9CiAKK1dp
bmRvd1Byb3h5KiBKU1dpbmRvd1Byb3h5Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVl
KQoreworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBpZiAob2JqZWN0
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNX
aW5kb3dQcm94eSo+KG9iamVjdCktPndpbmRvd1Byb3h5KCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2luZG93UHJveHkuaAppbmRleCAxODVhNTQ1NzhiZjgxNzdjZmNhMTc1YzZlNGIxMWY0NzQ4
YTQwOTQ4Li4zNjI0MGQ4NjZlOGYxMGRhZDYyMWRiZGQ5OWVmYjE3ZTE4MWJkZDk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oCkBAIC0yOCw3ICsyOCw5IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTUHJveHkuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zOSw3
ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJhY3RET01XaW5kb3c7
CiBjbGFzcyBBYnN0cmFjdEZyYW1lOwotY2xhc3MgV2luZG93UHJveHk7CiAKIGNsYXNzIEpTV2lu
ZG93UHJveHkgZmluYWwgOiBwdWJsaWMgSlNDOjpKU1Byb3h5IHsKICAgICB1c2luZyBCYXNlID0g
SlNDOjpKU1Byb3h5OwpAQCAtNTMsOCArNTQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2lu
ZG93KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgc2V0V2luZG93KEFi
c3RyYWN0RE9NV2luZG93Jik7CiAKKyAgICBXaW5kb3dQcm94eSogd2luZG93UHJveHkoKSBjb25z
dDsKKwogICAgIEFic3RyYWN0RE9NV2luZG93JiB3cmFwcGVkKCkgY29uc3Q7Ci0gICAgc3RhdGlj
IFdFQkNPUkVfRVhQT1JUIEFic3RyYWN0RE9NV2luZG93KiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpT
Qzo6SlNPYmplY3QqKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgV2luZG93UHJveHkqIHRv
V3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKIAogICAgIERPTVdyYXBwZXJXb3JsZCYg
d29ybGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CiAKQEAgLTcxLDEwICs3NCwxNiBAQCBwcml2YXRl
OgogLy8gSXQgaXMsIGhvd2V2ZXIsIHN0cm9uZ2x5IG93bmVkIGJ5IEFic3RyYWN0RnJhbWUgdmlh
IGl0cyBXaW5kb3dQcm94eSwgc28gd2UgY2FuIGdldCBvbmUgZnJvbSBhIFdpbmRvd1Byb3h5Lgog
V0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBXaW5kb3dQ
cm94eSYpOwogaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
V2luZG93UHJveHkqIHdpbmRvd1Byb3h5KSB7IHJldHVybiB3aW5kb3dQcm94eSA/IHRvSlMoc3Rh
dGUsICp3aW5kb3dQcm94eSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1pbmxpbmUgSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBSZWZQdHI8V2luZG93UHJveHk+JiB3
aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwgd2luZG93UHJveHkuZ2V0KCkpOyB9Citp
bmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamVjdCosIFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwg
d2luZG93UHJveHkpOyB9CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXaW5kb3dQcm94eSogd2lu
ZG93UHJveHkpIHsgcmV0dXJuIHdpbmRvd1Byb3h5ID8gdG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0
LCAqd2luZG93UHJveHkpIDogSlNDOjpqc051bGwoKTsgfQogCiBKU1dpbmRvd1Byb3h5JiB0b0pT
V2luZG93UHJveHkoV2luZG93UHJveHkmLCBET01XcmFwcGVyV29ybGQmKTsKIGlubGluZSBKU1dp
bmRvd1Byb3h5KiB0b0pTV2luZG93UHJveHkoV2luZG93UHJveHkqIHdpbmRvd1Byb3h5LCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKSB7IHJldHVybiB3aW5kb3dQcm94eSA/ICZ0b0pTV2luZG93UHJv
eHkoKndpbmRvd1Byb3h5LCB3b3JsZCkgOiBudWxscHRyOyB9CiAKIAordGVtcGxhdGU8PiBzdHJ1
Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFdpbmRvd1Byb3h5PiB7CisgICAgdXNpbmcg
V3JhcHBlckNsYXNzID0gSlNXaW5kb3dQcm94eTsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5U
eXBlID0gV2luZG93UHJveHkqOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwCmluZGV4IDhlOGY1MTM1M2VkMWY3
YTBiNWIzZjkzMDRjZjgxYzhhYWNiNzViNWUuLmFiMjQ1YjI0Nzg0YWQ3NzczODZlYzUzNDhmM2Ey
NjkyNDdlODAxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRv
d1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5j
cHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSlNXaW5kb3dQcm94
eS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgog
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtNTMsMTIgKzU0LDE2IEBAIFdpbmRvd1Byb3h5OjpX
aW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJiBmcmFtZSkKIH0KIAogV2luZG93UHJveHk6On5XaW5k
b3dQcm94eSgpCit7CisgICAgZGVzdHJveUFsbEpTV2luZG93UHJveGllcygpOworfQorCit2b2lk
IFdpbmRvd1Byb3h5OjpkZXN0cm95QWxsSlNXaW5kb3dQcm94aWVzKCkKIHsKICAgICAvLyBJdCdz
IGxpa2VseSB0aGF0IGRlc3Ryb3lpbmcgd2luZG93UHJveGllcyB3aWxsIGNyZWF0ZSBhIGxvdCBv
ZiBnYXJiYWdlLgogICAgIGlmICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIHdoaWxlICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBh
dXRvIGl0ID0gbV9qc1dpbmRvd1Byb3hpZXMuYmVnaW4oKTsKLSAgICAgICAgICAgIGl0LT52YWx1
ZS0+d2luZG93KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CiAgICAgICAgICAgICBkZXN0
cm95SlNXaW5kb3dQcm94eSgqaXQtPmtleSk7CiAgICAgICAgIH0KICAgICAgICAgY29sbGVjdEdh
cmJhZ2VBZnRlcldpbmRvd1Byb3h5RGVzdHJ1Y3Rpb24oKTsKQEAgLTkxLDYgKzk2LDExIEBAIFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU1dpbmRvd1Byb3h5Pj4gV2luZG93UHJveHk6OmpzV2luZG93UHJv
eGllc0FzVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fanNXaW5kb3dQ
cm94aWVzLnZhbHVlcygpKTsKIH0KIAorSlNET01HbG9iYWxPYmplY3QqIFdpbmRvd1Byb3h5Ojpn
bG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICByZXR1cm4ganNXaW5k
b3dQcm94eSh3b3JsZCkud2luZG93KCk7Cit9CisKIEpTV2luZG93UHJveHkmIFdpbmRvd1Byb3h5
OjpjcmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaAppbmRleCA3NzcyMjk4M2IwYTMyMmNkMDY3
ZGZiNTA2MmRhMDc3N2E2OGU2NWY4Li44NDY3MDIwOTA3NWY3MzJmNWVlMTUxMTgyN2Q2ZDhiMDgy
ZWY4ODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmgKQEAgLTIw
LDcgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU1dpbmRvd1Byb3h5Lmgi
CisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApAQCAtMzAsNyArMzAsMTAgQEAg
Y2xhc3MgRGVidWdnZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWJzdHJhY3RE
T01XaW5kb3c7CiBjbGFzcyBBYnN0cmFjdEZyYW1lOworY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7
CitjbGFzcyBKU1dpbmRvd1Byb3h5OwogCiBjbGFzcyBXaW5kb3dQcm94eSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00MCw2ICs0Myw4IEBAIHB1YmxpYzoKICAgICBleHBsaWNp
dCBXaW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJik7CiAgICAgfldpbmRvd1Byb3h5KCk7CiAKKyAg
ICBBYnN0cmFjdEZyYW1lJiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KKwogICAg
IHZvaWQgZGVzdHJveUpTV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICBQcm94
eU1hcDo6VmFsdWVzQ29uc3RJdGVyYXRvclJhbmdlIGpzV2luZG93UHJveGllcygpIGNvbnN0IHsg
cmV0dXJuIG1fanNXaW5kb3dQcm94aWVzLnZhbHVlcygpOyB9CkBAIC02MywxMCArNjgsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAoaXQgIT0gbV9qc1dpbmRvd1Byb3hpZXMuZW5kKCkpID8g
aXQtPnZhbHVlLmdldCgpIDogbnVsbHB0cjsKICAgICB9CiAKLSAgICBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCi0gICAgewotICAgICAgICBy
ZXR1cm4ganNXaW5kb3dQcm94eSh3b3JsZCkud2luZG93KCk7Ci0gICAgfQorICAgIFdFQkNPUkVf
RVhQT1JUIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJik7
CiAKICAgICB2b2lkIGNsZWFySlNXaW5kb3dQcm94aWVzTm90TWF0Y2hpbmdET01XaW5kb3coQWJz
dHJhY3RET01XaW5kb3cqLCBib29sIGdvaW5nSW50b1BhZ2VDYWNoZSk7CiAKQEAgLTgwLDYgKzgy
LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVmKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkZXJlZigpOwogCisgICAgdm9pZCBkZXN0cm95QWxsSlNXaW5kb3dQcm94
aWVzKCk7CisKIHByaXZhdGU6CiAgICAgSlNXaW5kb3dQcm94eSYgY3JlYXRlSlNXaW5kb3dQcm94
eShET01XcmFwcGVyV29ybGQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBKU1dpbmRvd1Byb3h5JiBj
cmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBt
CmluZGV4IDk1MjQyOWEwZTQ5Nzc0YmFkMjJjMWU1OGViYjJlNGVkZGJhZDNiNjMuLjJmY2ZlZTNh
N2FhOGYyMmYyNmViZGRiNmE0ZTI4ZmEwMzhiMmY0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTg5MSw3ICs4OTEsNiBAQCBz
dWIgSXNCdWlsdGluVHlwZQogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5T
UmVzb2x2ZXIiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJhbnkiOwogICAgIHJl
dHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJvYmplY3QiOwotICAgIHJldHVybiAxIGlmICR0eXBl
LT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTEwMDEsNiAr
MTAwMCw3IEBAIHN1YiBDb21wdXRlSXNDYWxsYmFja0ludGVyZmFjZQogICAgIGFzc2VydCgiTm90
IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5s
ZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5
cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsKIAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5u
YW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlw
ZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBc
IiR0eXBlTmFtZVwiIVxuIik7CkBAIC0xMDM4LDYgKzEwMzgsNyBAQCBzdWIgQ29tcHV0ZUlzQ2Fs
bGJhY2tGdW5jdGlvbgogICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUg
IklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5sZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlw
ZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsK
IAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9i
amVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlwZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9U
IGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlTmFtZVwiIVxuIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4
IDYyNmE5ZjBiMmQ2ZjA0M2NmOTJiZGYzMmYyOTYyODkyNjExNmU1ZTQuLjMwYTM3NGMyODI0ZmEy
NjA4MjQyYWEzODcxMDk4NDIwMmI1ZDBlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00MjEsMTMgKzQyMSw2IEBAIHN1
YiBBZGRUb0luY2x1ZGVzRm9ySURMVHlwZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKCR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSIpIHsKLSAgICAgICAgQWRkVG9JbmNsdWRl
cygiV2luZG93UHJveHkuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAg
QWRkVG9JbmNsdWRlcygiSlNXaW5kb3dQcm94eS5oIiwgJGluY2x1ZGVzUmVmLCAkY29uZGl0aW9u
YWwpOwotICAgICAgICBBZGRUb0luY2x1ZGVzKCJKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIiwg
JGluY2x1ZGVzUmVmLCAkY29uZGl0aW9uYWwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7CiAgICAgICAgIEFk
ZFRvSW5jbHVkZXMoIkpTRE9NQ29udmVydFN0cmluZ3MuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRp
dGlvbmFsKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjM5Myw3ICs2Mzg2LDYgQEAgc3ViIEdldEJh
c2VJRExUeXBlCiAgICAgICAgICJKU09OIiA9PiAiSURMSlNPTiIsCiAgICAgICAgICJTY2hlZHVs
ZWRBY3Rpb24iID0+ICJJRExTY2hlZHVsZWRBY3Rpb24iLAogICAgICAgICAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlIiA9PiAiSURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4iLAotICAgICAgICAiV2luZG93UHJveHkiID0+ICJJRExXaW5kb3dQcm94eSIsCiAgICAg
ICAgICJYUGF0aE5TUmVzb2x2ZXIiID0+ICJJRExYUGF0aE5TUmVzb2x2ZXI8WFBhdGhOU1Jlc29s
dmVyPiIsCiAgICAgKTsKIApAQCAtNjU1NCw3ICs2NTQ2LDYgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1
ZURPTUNvbnZlcnROZWVkc1N0YXRlCiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIkpT
T04iOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwot
ICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAgICAgCiAgICAg
cmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGJhNDViYjk4ZjIxYTYzMzkwOWQyYmU4ZTBhMWZl
MmRjNzI2YTM0NWYuLmMwNDY2YzI2NmI3MzdmNmM4ODVkMmFhZmQwNWI1ZjE2ZjY4MmQ1MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCkBAIC01NSw3ICs1NSw2IEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIK
ICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCIKICNpbmNsdWRlICJK
U0RPTVN0cmluZ0xpc3QuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpT
RE9NV2luZG93QmFzZS5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiSlNEb2N1bWVudC5oIgpAQCAtNjk1Nyw3ICs2OTU2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDlCb2QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8g
d2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8RE9NV2luZG93Pj4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwg
IndpbmRvdyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiRE9NV2luZG93Iik7
IH0pOworICAgIGF1dG8gd2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8V2luZG93UHJveHk+
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAwLCAid2luZG93IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhv
ZCIsICJXaW5kb3dQcm94eSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqd2luZG93
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNzAyOSw3
ICs3MDI4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZE92ZXIKICAgICAgICAgICAgIHJldHVybiBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2Qm9keShzdGF0ZSwgY2Fz
dGVkVGhpcywgdGhyb3dTY29wZSk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09i
amVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNUZXN0T2Jq
Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kOEJvZHkoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwotICAgICAg
ICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiAoYXNPYmplY3QoZGlzdGluZ3Vp
c2hpbmdBcmcpLT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkgfHwgYXNPYmplY3QoZGlzdGlu
Z3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU0RPTVdpbmRvdz4odm0pKSkKKyAgICAgICAgaWYgKGRp
c3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcp
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOUJvZHkoc3RhdGUsIGNhc3RlZFRo
aXMsIHRocm93U2NvcGUpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzPEpTQmxvYj4odm0pKQog
ICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDEzQm9keShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggYzgzZWVlZWRi
ZjQxNjNmODMyYmNkMjUzZWMwNTc1Njg0NmVlZDY4NC4uNzFkZGZjNDg5ZWQyZDVkYTI1NmZiNWM0
MzBiOTMyZWJkYzRmODcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMjg2LDcgKzI4Niw3IEBAIGVudW0gVGVzdENvbmZpZGVu
Y2UgeyAiaGlnaCIsICJraW5kYS1sb3ciIH07CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9k
KERPTVN0cmluZ0xpc3Q/IGxpc3RBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChz
ZXF1ZW5jZTxET01TdHJpbmc+PyBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0
aG9kKFRlc3RPYmogb2JqQXJnKTsKLSAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoRE9NV2lu
ZG93IHdpbmRvdyk7CisgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFdpbmRvd1Byb3h5IHdp
bmRvdyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKHNlcXVlbmNlPERPTVN0cmluZz4g
YXJyYXlBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChzZXF1ZW5jZTx1bnNpZ25l
ZCBsb25nPiBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmlu
ZyBzdHJBcmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCmluZGV4IDBl
MzhhNjcxOGNkMWRhZDJlNzkwMjhiODkwMDU2YTZmY2I2NDJjOTAuLjAwN2FmN2Q3MjRmNWMzZTRh
MGEzNjExMjU2NmM0ODJlZDZmZDU5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NpdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25F
dmVudC5jcHAKQEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb21wb3Np
dGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KCkgPSBkZWZhdWx0OwogCi1Db21wb3NpdGlvbkV2
ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRE9NV2luZG93
KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgOiBVSUV2ZW50KHR5cGUsIHRydWUsIHRy
dWUsIHZpZXcsIDApCitDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKKyAgICA6IFVJRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwg
MCkKICAgICAsIG1fZGF0YShkYXRhKQogewogfQpAQCAtNDUsMTIgKzQ1LDEyIEBAIENvbXBvc2l0
aW9uRXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25z
dCBJbml0JiBpbml0aWFsCiAKIENvbXBvc2l0aW9uRXZlbnQ6On5Db21wb3NpdGlvbkV2ZW50KCkg
PSBkZWZhdWx0OwogCi12b2lkIENvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCit2b2lkIENvbXBvc2l0aW9u
RXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcs
IGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxh
YmxlLCB2aWV3LCAwKTsKKyAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIFdURk1vdmUodmlldyksIDApOwogCiAgICAgbV9kYXRhID0gZGF0YTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCmluZGV4IDhmZjAyZWM5Njk3NzhiODg1YTYzMTcwMjRj
OTU3NDc2ZTAyMWIyYTYuLjNiMWM0NmQ2MzVlY2FmNmNkMDkxOTA5OGY1MDhmYzQxZTY0Y2ViY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaApAQCAtMzIsOSArMzIsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbXBvc2l0aW9uRXZlbnQgZmluYWwgOiBwdWJs
aWMgVUlFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0
cmluZyYgZGF0YSkKKyAgICBzdGF0aWMgUmVmPENvbXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBT
dHJpbmcmIGRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21wb3Np
dGlvbkV2ZW50KHR5cGUsIHZpZXcsIGRhdGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ29tcG9zaXRpb25FdmVudCh0eXBlLCBXVEZNb3ZlKHZpZXcpLCBkYXRhKSk7CiAgICAgfQog
CiAgICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbXBvc2l0aW9uRXZlbnQo
KTsKIAotICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBT
dHJpbmcmIGRhdGEpOworICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAKICAgICBTdHJpbmcgZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBDb21wb3NpdGlvbkV2ZW50KCk7Ci0gICAgQ29tcG9zaXRpb25FdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYpOworICAgIENv
bXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8V2luZG93UHJv
eHk+JiYsIGNvbnN0IFN0cmluZyYpOwogICAgIENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJvb2wgaXNDb21w
b3NpdGlvbkV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zaXRpb25FdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRp
b25FdmVudC5pZGwKaW5kZXggZDg3MjQwODgzZTI3ZDNiMzQ1ODUzOWViOTIwZjRkM2YyODcxNjZj
NC4uMjBhYWM3ZWE0NzcwZDU2NTllZDQwOTEwZDdhYTc5NTA4ZTY2MTgzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIHZvaWQg
aW5pdENvbXBvc2l0aW9uRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZp
bmVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY2Fu
QnViYmxlQXJnID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25h
bCBib29sZWFuIGNhbmNlbGFibGVBcmcgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlld0FyZyA9IG51bGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlld0FyZyA9IG51bGwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBET01TdHJpbmcgZGF0YUFyZyA9
ICJ1bmRlZmluZWQiKTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDg2ZjgzZTcy
NjQyM2FjNDU0MzVkMzJiZWYwNDk0ZTk5NDllMDU0OTkuLjc4ZjhiZTI3ZTk0MGU0OWE2MDM0OTAx
OTcyOWUzNTJkNTI5NmE2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDI4MCw2ICs0
MjgwLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnRha2VET01XaW5kb3dGcm9tKERvY3VtZW50KiBkb2N1
bWVudCkKICAgICBBU1NFUlQobV9kb21XaW5kb3ctPmZyYW1lKCkgPT0gbV9mcmFtZSk7CiB9CiAK
K1dpbmRvd1Byb3h5KiBEb2N1bWVudDo6ZGVmYXVsdFZpZXcoKSBjb25zdAoreworICAgIGlmICgh
bV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZtX2ZyYW1lLT53
aW5kb3dQcm94eSgpOworfQorCiBEb2N1bWVudCYgRG9jdW1lbnQ6OmNvbnRleHREb2N1bWVudCgp
IGNvbnN0CiB7CiAgICAgaWYgKG1fY29udGV4dERvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCBhNGZiMDJmOWUxYmNiZDQwMGIwY2M4NjUyYWJkNDA0ZjAxYzQ1OTVmLi44NWEyNTY1MjFi
N2NiNzgxNjRjYTQ4ZjYwMDFjYjY4NWIwNTdhNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
Nzk5LDcgKzc5OSw3IEBAIHB1YmxpYzoKIAogICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29u
c3QgeyByZXR1cm4gbV9kb21XaW5kb3cuZ2V0KCk7IH0KICAgICAvLyBJbiBET00gTGV2ZWwgMiwg
dGhlIERvY3VtZW50J3MgRE9NV2luZG93IGlzIGNhbGxlZCB0aGUgZGVmYXVsdFZpZXcuCi0gICAg
RE9NV2luZG93KiBkZWZhdWx0VmlldygpIGNvbnN0IHsgcmV0dXJuIGRvbVdpbmRvdygpOyB9IAor
ICAgIFdFQkNPUkVfRVhQT1JUIFdpbmRvd1Byb3h5KiBkZWZhdWx0VmlldygpIGNvbnN0OwogCiAg
ICAgRG9jdW1lbnQmIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4
dERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkgeyBtX2NvbnRleHREb2N1bWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZVdlYWtQdHIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXggMmQ1YmFh
ZDhjNjA2NDRkYTg5ZDEwN2ZkZGUxODI4Y2Q4YTQ5ZDgyYi4uMDhmNzJhOTIwMDBkM2FjMjBhNjQ0
YzBlNWJjMzQ4MmI0NzVlZGE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0xMTMsNyAr
MTEzLDcgQEAgdHlwZWRlZiAoCiAgICAgW0NFUmVhY3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJs
ZURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB3cml0ZWxuKERPTVN0cmluZy4uLiB0
ZXh0KTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24uCi0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVdpbmRvdz8gZGVmYXVsdFZpZXc7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1By
b3h5PyBkZWZhdWx0VmlldzsKICAgICBib29sZWFuIGhhc0ZvY3VzKCk7CiAgICAgW0NFUmVhY3Rp
b25zXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlc2lnbk1vZGU7CiAgICAgW0NFUmVhY3Rpb25zXSBi
b29sZWFuIGV4ZWNDb21tYW5kKERPTVN0cmluZyBjb21tYW5kSWQsIG9wdGlvbmFsIGJvb2xlYW4g
c2hvd1VJID0gZmFsc2UsIG9wdGlvbmFsIERPTVN0cmluZz8gdmFsdWUgPSBudWxsKTsgLy8gRklY
TUU6IHZhbHVlIHNob3VsZCBub3QgYmUgbnVsbGFibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRUb3VjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRU
b3VjaC5jcHAKaW5kZXggM2Q5MTIzZDhmNzUzMmNiNGRiNzlhNGExMzM1ZDVmMTcyOGNjNTA5YS4u
NWQxMjZjM2MzMjQ3MTRmMzlmOWY5NmUxNjM2OWMwMTg3ODQ3YTgwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFRvdWNoLmNwcApAQCAtMjgsMjAgKzI4LDI3IEBACiAKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlRvdWNoLmgiCiAjaW5jbHVkZSAiVG91
Y2hMaXN0LmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZWY8VG91Y2g+IERvY3VtZW50VG91Y2g6OmNyZWF0ZVRvdWNoKERvY3VtZW50JiBkb2N1
bWVudCwgRE9NV2luZG93KiB3aW5kb3csIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBpZGVudGlm
aWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQg
cmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKQor
UmVmPFRvdWNoPiBEb2N1bWVudFRvdWNoOjpjcmVhdGVUb3VjaChEb2N1bWVudCYgZG9jdW1lbnQs
IFJlZlB0cjxXaW5kb3dQcm94eT4mJiB3aW5kb3csIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBp
ZGVudGlmaWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5Z
LCBpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZv
cmNlKQogeworICAgIEZyYW1lKiBmcmFtZTsKKyAgICBpZiAod2luZG93ICYmIGlzPEZyYW1lPih3
aW5kb3ctPmZyYW1lKCkpKQorICAgICAgICBmcmFtZSA9ICZkb3duY2FzdDxGcmFtZT4od2luZG93
LT5mcmFtZSgpKTsKKyAgICBlbHNlCisgICAgICAgIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsK
KwogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciBmcm9tIHRoZSBkb2N1bWVudGF0aW9uIGF0
CiAgICAgLy8gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9zYWZhcmkvI2RvY3Vt
ZW50YXRpb24vVXNlckV4cGVyaWVuY2UvUmVmZXJlbmNlL0RvY3VtZW50QWRkaXRpb25zUmVmZXJl
bmNlL0RvY3VtZW50QWRkaXRpb25zL0RvY3VtZW50QWRkaXRpb25zLmh0bWwKICAgICAvLyB3aGVu
IHRoaXMgbWV0aG9kIHNob3VsZCB0aHJvdyBhbmQgbm9yIGlzIGl0IGJ5IGluc3BlY3Rpb24gb2Yg
aU9TIGJlaGF2aW9yLiBJdCB3b3VsZCBiZSBuaWNlIHRvIHZlcmlmeSBhbnkgY2FzZXMgd2hlcmUg
aXQgdGhyb3dzIHVuZGVyIGlPUwogICAgIC8vIGFuZCBpbXBsZW1lbnQgdGhlbSBoZXJlLiBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3ODE5Ci0gICAgcmV0dXJu
IFRvdWNoOjpjcmVhdGUod2luZG93ID8gd2luZG93LT5mcmFtZSgpIDogZG9jdW1lbnQuZnJhbWUo
KSwgdGFyZ2V0LCBpZGVudGlmaWVyLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksIHJh
ZGl1c1gsIHJhZGl1c1ksIHJvdGF0aW9uQW5nbGUsIGZvcmNlKTsKKyAgICByZXR1cm4gVG91Y2g6
OmNyZWF0ZShmcmFtZSwgdGFyZ2V0LCBpZGVudGlmaWVyLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdl
WCwgcGFnZVksIHJhZGl1c1gsIHJhZGl1c1ksIHJvdGF0aW9uQW5nbGUsIGZvcmNlKTsKIH0KIAog
UmVmPFRvdWNoTGlzdD4gRG9jdW1lbnRUb3VjaDo6Y3JlYXRlVG91Y2hMaXN0KERvY3VtZW50Jiwg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmIHRvdWNoZXMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50VG91Y2guaAppbmRleCBlMGRhZjUwNTJjYzk3ODUyYzhhMDRiYmE3M2U1ZjZh
MTE2ZjEwZTUxLi43MmM0ODg4YjQ1YWI0MDBlMjliYzhhZWQ4NmRlNGM1OTAzZWFjMjIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmgKQEAgLTM0LDE1ICszNCwxNSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
RXZlbnRUYXJnZXQ7CiBjbGFzcyBUb3VjaDsKIGNsYXNzIFRvdWNoTGlzdDsKK2NsYXNzIFdpbmRv
d1Byb3h5OwogCiBjbGFzcyBEb2N1bWVudFRvdWNoIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFRvdWNoPiBjcmVhdGVUb3VjaChEb2N1bWVudCYsIERPTVdpbmRvdyosIEV2ZW50VGFyZ2V0Kiwg
aW50IGlkZW50aWZpZXIsIGludCBwYWdlWCwgaW50IHBhZ2VZLCBpbnQgc2NyZWVuWCwgaW50IHNj
cmVlblksIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSwgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxv
YXQgZm9yY2UpOworICAgIHN0YXRpYyBSZWY8VG91Y2g+IGNyZWF0ZVRvdWNoKERvY3VtZW50Jiwg
UmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBFdmVudFRhcmdldCosIGludCBpZGVudGlmaWVyLCBpbnQg
cGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcmFkaXVzWCwg
aW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKTsKICAgICBzdGF0
aWMgUmVmPFRvdWNoTGlzdD4gY3JlYXRlVG91Y2hMaXN0KERvY3VtZW50JiwgVmVjdG9yPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFRvdWNoLmlkbAppbmRleCA3YTI3Mzc0NTg2NTQ5OTFiMTFiNTU2MzA4OWUyMTk1N2NjNGM0ZTRh
Li4wNDg5YTM2YWQ2YjEyNTAzY2RiNDZhZjE0OGNiNTljZmFmZDY3NWJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50VG91Y2guaWRsCkBAIC0yMiw3ICsyMiw3IEBACiAgICAgQ29uZGl0aW9uYWw9
VE9VQ0hfRVZFTlRTCiBdIHBhcnRpYWwgaW50ZXJmYWNlIERvY3VtZW50IHsKICAgICAvLyBGSVhN
RTogVGhpcyBoYXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlIHN0YW5kYXJkIG5vdyB0aGF0IFRvdWNo
IGhhcyBhIGNvbnN0cnVjdG9yLgotICAgIFtOZXdPYmplY3RdIFRvdWNoIGNyZWF0ZVRvdWNoKG9w
dGlvbmFsIERPTVdpbmRvdz8gd2luZG93ID0gbnVsbCwgb3B0aW9uYWwgRXZlbnRUYXJnZXQ/IHRh
cmdldCA9IG51bGwsCisgICAgW05ld09iamVjdF0gVG91Y2ggY3JlYXRlVG91Y2gob3B0aW9uYWwg
V2luZG93UHJveHk/IHdpbmRvdyA9IG51bGwsIG9wdGlvbmFsIEV2ZW50VGFyZ2V0PyB0YXJnZXQg
PSBudWxsLAogICAgICAgICBvcHRpb25hbCBsb25nIGlkZW50aWZpZXIgPSAwLAogICAgICAgICBv
cHRpb25hbCBsb25nIHBhZ2VYID0gMCwgb3B0aW9uYWwgbG9uZyBwYWdlWSA9IDAsIG9wdGlvbmFs
IGxvbmcgc2NyZWVuWCA9IDAsIG9wdGlvbmFsIGxvbmcgc2NyZWVuWSA9IDAsCiAgICAgICAgIG9w
dGlvbmFsIGxvbmcgd2Via2l0UmFkaXVzWCA9IDAsIG9wdGlvbmFsIGxvbmcgd2Via2l0UmFkaXVz
WSA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAKaW5kZXggMTZkOGIzZmYwNzhkMDVhZDkx
ZTJkNjkxNDY3MTkxMjg1NWQ3YzQ4NC4uOTg2ODc3MzI2Y2UzZmFlNGJiMDU5ZTdjMTY0ZDdiYzE4
YWE5ZGZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcApAQCAtNDAsOCArNDAsOCBAQCBi
b29sIEZvY3VzRXZlbnQ6OmlzRm9jdXNFdmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLUZvY3VzRXZlbnQ6OkZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWws
IFJlZlB0cjxFdmVudFRhcmdldD4mJiByZWxhdGVkVGFyZ2V0KQotICAgIDogVUlFdmVudCh0eXBl
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCkKK0ZvY3VzRXZlbnQ6OkZvY3Vz
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2
ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpCisgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKQogICAgICwgbV9yZWxhdGVkVGFy
Z2V0KFdURk1vdmUocmVsYXRlZFRhcmdldCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRm9jdXNFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuaApp
bmRleCAwNjcyNTU3NGMwNmI5MWYyOWZiNGY5NmEwYjFiNTYxMzRmMTk2ODU0Li5jN2E0ZGY4ZTc3
NDMyY2ZlMzY0YTEzNGY4ZGU1MTUxNmEwNTdiODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRm9jdXNFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmgK
QEAgLTM1LDkgKzM1LDkgQEAgY2xhc3MgTm9kZTsKIAogY2xhc3MgRm9jdXNFdmVudCBmaW5hbCA6
IHB1YmxpYyBVSUV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZvY3VzRXZlbnQ+IGNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYm
IHJlbGF0ZWRUYXJnZXQpCisgICAgc3RhdGljIFJlZjxGb2N1c0V2ZW50PiBjcmVhdGUoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYm
IHJlbGF0ZWRUYXJnZXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb2N1
c0V2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCBXVEZNb3Zl
KHJlbGF0ZWRUYXJnZXQpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvY3VzRXZl
bnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIFdU
Rk1vdmUocmVsYXRlZFRhcmdldCkpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPEZvY3VzRXZl
bnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIEZvY3VzRXZlbnQoKSA9IGRlZmF1bHQ7Ci0gICAgRm9jdXNFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdp
bmRvdyosIGludCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmKTsKKyAgICBGb2N1c0V2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQsIFJlZlB0cjxFdmVudFRhcmdldD4mJik7CiAgICAgRm9j
dXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQp
OwogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9JbnB1dEV2ZW50LmNwcAppbmRleCBkNDQ5Mjk0ZmVjNmJjNzk3MGQ2YzQyYzRiOTdh
YjE2MWM0ZjViMWYwLi5jMTdiZjE4ZDg4YTY3NjQ3MmExODcxNjNlN2I0NTE0Zjg0NDAwYTBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuY3BwCkBAIC0yNiwyMCArMjYsMjAgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJJbnB1dEV2ZW50LmgiCiAKLSNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJOb2RlLmgiCisjaW5j
bHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmPElucHV0RXZlbnQ+IElucHV0RXZlbnQ6OmNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIFdlYkNvcmU6OkRPTVdpbmRvdyAqdmlldywgY29uc3Qg
U3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCitS
ZWY8SW5wdXRFdmVudD4gSW5wdXRFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwg
UmVmUHRyPERhdGFUcmFuc2Zlcj4mJiBkYXRhVHJhbnNmZXIsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IElucHV0RXZlbnQoZXZlbnRUeXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJsZSwg
Y2FuY2VsYWJsZSwgdmlldywgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRSYW5n
ZXMsIGRldGFpbCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQoZXZlbnRU
eXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGF0
YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRSYW5nZXMsIGRldGFpbCkpOwogfQogCi1J
bnB1dEV2ZW50OjpJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9N
V2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYg
ZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJh
bmdlcywgaW50IGRldGFpbCkKLSAgICA6IFVJRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIHZpZXcsIGRldGFpbCkKK0lucHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3Qg
U3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCisg
ICAgOiBVSUV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZp
ZXcpLCBkZXRhaWwpCiAgICAgLCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAgLCBtX2RhdGEo
ZGF0YSkKICAgICAsIG1fZGF0YVRyYW5zZmVyKGRhdGFUcmFuc2ZlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRF
dmVudC5oCmluZGV4IGNhZDhkY2U3YjM2MjZkOWEyMjc2MzRiMzU4OTI2YzFmMTI1NDY4MWIuLmQw
NTA3NjM5YzZjODljOTlkNGQzMGExY2U5MzZmOTE2MWI5YzRlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0
RXZlbnQuaApAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IERPTVdpbmRvdzsKIGNsYXNzIERhdGFUcmFuc2ZlcjsKK2NsYXNzIFdpbmRvd1Byb3h5OwogCiBj
bGFzcyBJbnB1dEV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogcHVibGljOgpAQCAtMzks
MTMgKzM5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIGRhdGE7CiAgICAgfTsKIAotICAg
IHN0YXRpYyBSZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJh
bnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2Vz
LCBpbnQgZGV0YWlsKTsKKyAgICBzdGF0aWMgUmVmPElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25z
dCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKICAgICBzdGF0aWMg
UmVmPElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IElu
aXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQodHlwZSwgaW5pdGlh
bGl6ZXIsIGlzVHJ1c3RlZCkpOwogICAgIH0KIAotICAgIElucHV0RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0
cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFy
Z2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKKyAgICBJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEs
IFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+
PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKICAgICBJbnB1dEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJvb2wg
aXNJbnB1dEV2ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0tleWJvYXJkRXZlbnQuY3BwCmluZGV4IDRkYTEwMTc3MjVmZTg5MmNmYThkYWNmMGY1Yjcw
ODFkY2M2Y2ZiZTkuLjRhY2I1ZjRjZWI3NjBlMTcwZjEwN2NlYTM4NjA5ODlmNjcyNjRlYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAKKyNpbmNsdWRlICJE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgog
I2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgpAQCAtOTIsOCArOTMsOCBAQCBzdGF0aWMgaW5saW5l
IEtleWJvYXJkRXZlbnQ6OktleUxvY2F0aW9uQ29kZSBrZXlMb2NhdGlvbkNvZGUoY29uc3QgUGxh
dGZvcm1LZXlibwogCiBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudCgpID0gZGVm
YXVsdDsKIAotaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZv
cm1LZXlib2FyZEV2ZW50JiBrZXksIERPTVdpbmRvdyogdmlldykKLSAgICA6IFVJRXZlbnRXaXRo
S2V5U3RhdGUoZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUoa2V5LnR5cGUoKSksIHRydWUs
IHRydWUsIGtleS50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgdmlldywg
MCwga2V5LmN0cmxLZXkoKSwga2V5LmFsdEtleSgpLCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1ldGFL
ZXkoKSwgZmFsc2UsIGtleS5tb2RpZmllcnMoKS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpNb2Rp
Zmllcjo6Q2Fwc0xvY2tLZXkpKQoraW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQo
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3KQorICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGVGb3JLZXlib2FyZEV2ZW50
VHlwZShrZXkudHlwZSgpKSwgdHJ1ZSwgdHJ1ZSwga2V5LnRpbWVzdGFtcCgpLmFwcHJveGltYXRl
TW9ub3RvbmljVGltZSgpLCB2aWV3LmNvcHlSZWYoKSwgMCwga2V5LmN0cmxLZXkoKSwga2V5LmFs
dEtleSgpLCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1ldGFLZXkoKSwgZmFsc2UsIGtleS5tb2RpZmll
cnMoKS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tLZXkpKQogICAg
ICwgbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtS2V5
Ym9hcmRFdmVudD4oa2V5KSkKICNpZiBFTkFCTEUoS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkKICAg
ICAsIG1fa2V5KGtleS5rZXkoKSkKQEAgLTEwNCw3ICsxMDUsNyBAQCBpbmxpbmUgS2V5Ym9hcmRF
dmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwgRE9N
V2luZG93KgogICAgICwgbV9rZXlJZGVudGlmaWVyKGtleS5rZXlJZGVudGlmaWVyKCkpCiAgICAg
LCBtX2xvY2F0aW9uKGtleUxvY2F0aW9uQ29kZShrZXkpKQogICAgICwgbV9yZXBlYXQoa2V5Lmlz
QXV0b1JlcGVhdCgpKQotICAgICwgbV9pc0NvbXBvc2luZyh2aWV3ICYmIHZpZXctPmZyYW1lKCkg
JiYgdmlldy0+ZnJhbWUoKS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkKKyAgICAsIG1faXND
b21wb3NpbmcodmlldyAmJiBpczxET01XaW5kb3c+KHZpZXctPndpbmRvdygpKSAmJiBkb3duY2Fz
dDxET01XaW5kb3c+KCp2aWV3LT53aW5kb3coKSkuZnJhbWUoKSAmJiBkb3duY2FzdDxET01XaW5k
b3c+KCp2aWV3LT53aW5kb3coKSkuZnJhbWUoKS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkK
ICNpZiBVU0UoQVBQS0lUKQogICAgICwgbV9oYW5kbGVkQnlJbnB1dE1ldGhvZChrZXkuaGFuZGxl
ZEJ5SW5wdXRNZXRob2QoKSkKICAgICAsIG1fa2V5cHJlc3NDb21tYW5kcyhrZXkuY29tbWFuZHMo
KSkKQEAgLTEzMiw5ICsxMzMsOSBAQCBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgSW5pdCYgaQogCiBLZXlib2Fy
ZEV2ZW50Ojp+S2V5Ym9hcmRFdmVudCgpID0gZGVmYXVsdDsKIAotUmVmPEtleWJvYXJkRXZlbnQ+
IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIHBsYXRm
b3JtRXZlbnQsIERPTVdpbmRvdyogdmlldykKK1JlZjxLZXlib2FyZEV2ZW50PiBLZXlib2FyZEV2
ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBwbGF0Zm9ybUV2ZW50LCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBL
ZXlib2FyZEV2ZW50KHBsYXRmb3JtRXZlbnQsIHZpZXcpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBLZXlib2FyZEV2ZW50KHBsYXRmb3JtRXZlbnQsIFdURk1vdmUodmlldykpKTsKIH0KIAog
UmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzKCkKQEAg
LTE0NywxMyArMTQ4LDEzIEBAIFJlZjxLZXlib2FyZEV2ZW50PiBLZXlib2FyZEV2ZW50OjpjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgS2V5Ym9hcmRFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7
CiB9CiAKLXZvaWQgS2V5Ym9hcmRFdmVudDo6aW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cq
IHZpZXcsCit2b2lkIEtleWJvYXJkRXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdp
bmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCB1bnNp
Z25lZCBsb2NhdGlvbiwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwg
Ym9vbCBtZXRhS2V5LCBib29sIGFsdEdyYXBoS2V5KQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0
Y2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJi
bGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAgICBtX2tleUlkZW50aWZpZXIg
PSBrZXlJZGVudGlmaWVyOwogICAgIG1fbG9jYXRpb24gPSBsb2NhdGlvbjsKQEAgLTIyNyw4ICsy
MjgsOSBAQCBpbnQgS2V5Ym9hcmRFdmVudDo6Y2hhckNvZGUoKSBjb25zdAogICAgIC8vIEZpcmVm
b3g6IDAgZm9yIGtleWRvd24va2V5dXAgZXZlbnRzLCBjaGFyYWN0ZXIgY29kZSBmb3Iga2V5cHJl
c3MKICAgICAvLyBXZSBtYXRjaCBGaXJlZm94LCB1bmxlc3MgaW4gYmFja3dhcmQgY29tcGF0aWJp
bGl0eSBtb2RlLCB3aGVyZSB3ZSBhbHdheXMgcmV0dXJuIHRoZSBjaGFyYWN0ZXIgY29kZS4KICAg
ICBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUgPSBmYWxzZTsKLSAgICBpZiAodmlldygp
ICYmIHZpZXcoKS0+ZnJhbWUoKSkKLSAgICAgICAgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9
IHZpZXcoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkubmVlZHNLZXlib2FyZEV2ZW50RGlzYW1i
aWd1YXRpb25RdWlya3MoKTsKKyAgICBhdXRvKiB3aW5kb3cgPSB2aWV3KCkgPyB2aWV3KCktPndp
bmRvdygpIDogbnVsbHB0cjsKKyAgICBpZiAoaXM8RE9NV2luZG93Pih3aW5kb3cpICYmIGRvd25j
YXN0PERPTVdpbmRvdz4oKndpbmRvdykuZnJhbWUoKSkKKyAgICAgICAgYmFja3dhcmRDb21wYXRp
YmlsaXR5TW9kZSA9IGRvd25jYXN0PERPTVdpbmRvdz4oKndpbmRvdykuZnJhbWUoKS0+ZXZlbnRI
YW5kbGVyKCkubmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25RdWlya3MoKTsKIAogICAg
IGlmICghbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudCB8fCAodHlwZSgpICE9IGV2ZW50TmFtZXMo
KS5rZXlwcmVzc0V2ZW50ICYmICFiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKSkKICAgICAgICAg
cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaAppbmRleCA4MjEwMzMwZWFiMDM0
MWY0Y2E1NGNkMjVjNThiOTk1NDZmMGIxNWE5Li4xZDNjYzI0Mzc5OWIxOWE3NDRlZTk3OGExODdl
YWVhZWM4ODA1ZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKQEAgLTQzLDcgKzQz
LDcgQEAgcHVibGljOgogICAgICAgICBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCA9IDB4MDMKICAg
ICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxLZXlib2FyZEV2ZW50PiBjcmVh
dGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxLZXlib2FyZEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAgICBzdGF0aWMgUmVmPEtl
eWJvYXJkRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBzdHJ1Y3QgSW5pdCA6IHB1
YmxpYyBFdmVudE1vZGlmaWVySW5pdCB7CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgfktleWJvYXJkRXZlbnQoKTsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAogICAgICAgICBjb25z
dCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIHVuc2lnbmVkIGxvY2F0aW9uLAogICAgICAgICBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIGJvb2wg
YWx0R3JhcGhLZXkgPSBmYWxzZSk7CiAgICAgCkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIEtleWJvYXJkRXZlbnQoKTsKLSAgICBLZXlib2FyZEV2ZW50KGNvbnN0
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYsIERPTVdpbmRvdyopOworICAgIEtleWJvYXJkRXZlbnQo
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAg
ICBLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0
ZWQpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4gbV91bmRl
cmx5aW5nUGxhdGZvcm1FdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXli
b2FyZEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmlkbAppbmRl
eCA3NTdjMDc3OTNmNWU1ZjFlMTg0MzhmNzhkZDQ0N2U5YTNhMWQ1MTA5Li5jZGU0NTBjMzQzNTMz
NTA5MmExNzdkNmRmNjM2OGJmNjM1MWQ3MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vS2V5Ym9hcmRFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZl
bnQuaWRsCkBAIC01Miw3ICs1Miw3IEBACiAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBub3QgbWF0
Y2ggdGhlIHZlcnNpb24gaW4gdGhlIERPTSBzcGVjLgogICAgIC8vIEZJWE1FOiBVc2luZyAidW5k
ZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KICAgICB2b2lkIGlu
aXRLZXlib2FyZEV2ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9w
dGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2Vs
YWJsZSA9IGZhbHNlLAotICAgICAgICBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBv
cHRpb25hbCBET01TdHJpbmcga2V5SWRlbnRpZmllciA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCB1
bnNpZ25lZCBsb25nIGxvY2F0aW9uID0gMCwKKyAgICAgICAgb3B0aW9uYWwgV2luZG93UHJveHk/
IHZpZXcgPSBudWxsLCBvcHRpb25hbCBET01TdHJpbmcga2V5SWRlbnRpZmllciA9ICJ1bmRlZmlu
ZWQiLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGxvY2F0aW9uID0gMCwKICAgICAgICAgb3B0aW9u
YWwgYm9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFs
c2UsIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBt
ZXRhS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0R3JhcGhLZXkgPSBmYWxzZSk7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggNTE5N2Q1YmFlMWFlMzVhYWIwNGYw
Y2I1MGU3NmU5ZDhmYWExOGI3OS4uMzMwOTI3ODdkMTRhZTY1NzNlYTFiOWQxZmQ5YTdkMGVlZTBm
NDAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMjcsMTIgKzI3LDEyIEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQu
aCIKICNpbmNsdWRlICJKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVBvcnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyLmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCw5ICs0MCw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2I7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci11c2luZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBS
ZWZQdHI8TWVzc2FnZVBvcnQ+LCBSZWZQdHI8U2VydmljZVdvcmtlcj4+OwordXNpbmcgTWVzc2Fn
ZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8TWVzc2Fn
ZVBvcnQ+LCBSZWZQdHI8U2VydmljZVdvcmtlcj4+OwogI2Vsc2UKLXVzaW5nIE1lc3NhZ2VFdmVu
dFNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxNZXNzYWdlUG9ydD4+
OwordXNpbmcgTWVzc2FnZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+
LCBSZWZQdHI8TWVzc2FnZVBvcnQ+PjsKICNlbmRpZgogCiBjbGFzcyBNZXNzYWdlRXZlbnQgZmlu
YWwgOiBwdWJsaWMgRXZlbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAppbmRleCAw
MjQzOGZkNGM0N2MzZmMyOTJlYWJmNDdlNWM1ZTgzZjg2OTUwODIyLi5mYTQ4YzhmYTVkYTVmZGMz
ZTBmMmMyZjdlZmJmYTc1Y2Q4ZjU0MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50Lmlk
bApAQCAtMjcsOSArMjcsOSBAQAogICovCiAKICNpZiBkZWZpbmVkKEVOQUJMRV9TRVJWSUNFX1dP
UktFUikgJiYgRU5BQkxFX1NFUlZJQ0VfV09SS0VSCi10eXBlZGVmIChET01XaW5kb3cgb3IgTWVz
c2FnZVBvcnQgb3IgU2VydmljZVdvcmtlcikgTWVzc2FnZUV2ZW50U291cmNlOwordHlwZWRlZiAo
V2luZG93UHJveHkgb3IgTWVzc2FnZVBvcnQgb3IgU2VydmljZVdvcmtlcikgTWVzc2FnZUV2ZW50
U291cmNlOwogI2Vsc2UKLXR5cGVkZWYgKERPTVdpbmRvdyBvciBNZXNzYWdlUG9ydCkgTWVzc2Fn
ZUV2ZW50U291cmNlOwordHlwZWRlZiAoV2luZG93UHJveHkgb3IgTWVzc2FnZVBvcnQpIE1lc3Nh
Z2VFdmVudFNvdXJjZTsKICNlbmRpZgogCiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKaW5k
ZXggYTE0N2UxMjE4YmI2ZTI0ZjJhZDc2NDcwNzQ2MGM2NjcwMjFmNmM1OS4uYzg5NmY4NjMxYTNk
MmJiZGExOTMwNjIxMGZlZGRiODk4NmU0Y2E2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNw
cApAQCAtNDQsMTMgKzQ0LDEzIEBAIFJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNb3VzZUV2ZW50SW5pCiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7
CiB9CiAKLVJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIERPTVdpbmRvdyogdmlldywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldmVudCwgaW50IGRldGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCkKK1JlZjxNb3VzZUV2ZW50
PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBp
bnQgZGV0YWlsLCBOb2RlKiByZWxhdGVkVGFyZ2V0KQogewogICAgIGJvb2wgaXNNb3VzZUVudGVy
T3JMZWF2ZSA9IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2VlbnRlckV2ZW50IHx8IGV2
ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2VsZWF2ZUV2ZW50OwogICAgIGJvb2wgaXNDYW5j
ZWxhYmxlID0gZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCAmJiAhaXNN
b3VzZUVudGVyT3JMZWF2ZTsKICAgICBib29sIGNhbkJ1YmJsZSA9ICFpc01vdXNlRW50ZXJPckxl
YXZlOwogCi0gICAgcmV0dXJuIE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGNhbkJ1YmJs
ZSwgaXNDYW5jZWxhYmxlLCBldmVudC50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1Rp
bWUoKSwgdmlldywKKyAgICByZXR1cm4gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgY2Fu
QnViYmxlLCBpc0NhbmNlbGFibGUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3Rv
bmljVGltZSgpLCBXVEZNb3ZlKHZpZXcpLAogICAgICAgICBkZXRhaWwsIGV2ZW50Lmdsb2JhbFBv
c2l0aW9uKCkueCgpLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLnkoKSwgZXZlbnQucG9zaXRpb24o
KS54KCksIGV2ZW50LnBvc2l0aW9uKCkueSgpLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAg
ICAgICAgIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS54KCksIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS55
KCksCkBAIC01OSwxMyArNTksMTMgQEAgUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWUKICAgICAgICAg
cmVsYXRlZFRhcmdldCwgZXZlbnQuZm9yY2UoKSwgZXZlbnQuc3ludGhldGljQ2xpY2tUeXBlKCkp
OwogfQogCi1SZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGlt
ZSB0aW1lc3RhbXAsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKK1JlZjxNb3VzZUV2ZW50PiBNb3VzZUV2
ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VY
LCBpbnQgcGFnZVksCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBpbnQgbW92ZW1lbnRY
LCBpbnQgbW92ZW1lbnRZLAogI2VuZGlmCiAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwg
Ym9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbnMsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0LCBkb3VibGUgZm9y
Y2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRGF0YVRyYW5zZmVyKiBkYXRh
VHJhbnNmZXIsIGJvb2wgaXNTaW11bGF0ZWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TW91c2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgdmlldywK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2Fu
Y2VsYWJsZSwgdGltZXN0YW1wLCBXVEZNb3ZlKHZpZXcpLAogICAgICAgICBkZXRhaWwsIHsgc2Ny
ZWVuWCwgc2NyZWVuWSB9LCB7IHBhZ2VYLCBwYWdlWSB9LAogI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCiAgICAgICAgIHsgbW92ZW1lbnRYLCBtb3ZlbWVudFkgfSwKQEAgLTczLDE5ICs3MywxOSBA
QCBSZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvbwogICAgICAgICBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHJlbGF0ZWRUYXJnZXQsIGZvcmNlLCBzeW50
aGV0aWNDbGlja1R5cGUsIGRhdGFUcmFuc2ZlciwgaXNTaW11bGF0ZWQpKTsKIH0KIAotUmVmPE1v
dXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBpbnQg
ZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50
WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5
LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVk
IHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCitS
ZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xp
ZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRL
ZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBi
dXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiBy
ZWxhdGVkVGFyZ2V0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQoZXZl
bnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCwgeyBzY3JlZW5YLCBz
Y3JlZW5ZIH0sIHsgY2xpZW50WCwgY2xpZW50WSB9LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHN5bnRoZXRpY0NsaWNrVHlwZSwgcmVsYXRlZFRh
cmdldCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQoZXZlbnRUeXBlLCBj
YW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRldGFpbCwgeyBzY3JlZW5YLCBz
Y3JlZW5ZIH0sIHsgY2xpZW50WCwgY2xpZW50WSB9LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHN5bnRoZXRpY0NsaWNrVHlwZSwgcmVsYXRlZFRh
cmdldCkpOwogfQogCiBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KCkgPSBkZWZhdWx0OwogCi1Nb3Vz
ZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2lu
ZG93KiB2aWV3LCBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNv
bnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKK01vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywg
aW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2lu
dCYgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgY29u
c3QgSW50UG9pbnQmIG1vdmVtZW50RGVsdGEsCiAjZW5kaWYKICAgICAgICAgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9y
dCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFy
Z2V0LCBkb3VibGUgZm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRGF0
YVRyYW5zZmVyKiBkYXRhVHJhbnNmZXIsIGJvb2wgaXNTaW11bGF0ZWQpCi0gICAgOiBNb3VzZVJl
bGF0ZWRFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2
aWV3LCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB3aW5kb3dMb2NhdGlvbiwKKyAgICA6IE1vdXNl
UmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAs
IFdURk1vdmUodmlldyksIGRldGFpbCwgc2NyZWVuTG9jYXRpb24sIHdpbmRvd0xvY2F0aW9uLAog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIG1vdmVtZW50RGVsdGEsCiAjZW5kaWYK
QEAgLTEwMCw4ICsxMDAsOCBAQCBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZQogewogfQogCi1Nb3Vz
ZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGNv
bnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExvY2F0
aW9uLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWdu
ZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCkK
LSAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBNb25vdG9uaWNUaW1lOjpub3coKSwgdmlldywgZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwgeyB9
LAorTW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZp
ZXcsIGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50
UG9pbnQmIGNsaWVudExvY2F0aW9uLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hv
cnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdl
dCogcmVsYXRlZFRhcmdldCkKKyAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2Fu
QnViYmxlLCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwg
ZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwgeyB9LAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAg
ICAgICAgIHsgfSwKICNlbmRpZgpAQCAtMTI3LDEyICsxMjcsMTIgQEAgTW91c2VFdmVudDo6TW91
c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgTW91c2VFdmVudElu
aXQmIGluaXQKIAogTW91c2VFdmVudDo6fk1vdXNlRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQg
TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWws
IGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCit2b2lkIE1vdXNl
RXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBk
ZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZ
LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXks
IHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCiB7CiAg
ICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRV
SUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKTsKKyAgICBp
bml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRl
dGFpbCk7CiAKICAgICBtX3NjcmVlbkxvY2F0aW9uID0gSW50UG9pbnQoc2NyZWVuWCwgc2NyZWVu
WSk7CiAgICAgbV9jdHJsS2V5ID0gY3RybEtleTsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIE1v
dXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgYwogCiAvLyBGSVhNRTogV2UgbmVlZCB0aGlzIHF1aXJrIGJlY2F1c2Ug
aUFkIFByb2R1Y2VyIGlzIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aXRoIGEgcmVsYXRlZFRhcmdl
dCB0aGF0IGlzIG5vdCBhbiBFdmVudFRhcmdldCAocmRhcjovL3Byb2JsZW0vMzA2NDAxMDEpLgog
Ly8gV2Ugc2hvdWxkIHJlbW92ZSB0aGlzIHF1aXJrIHdoZW4gcG9zc2libGUuCi12b2lkIE1vdXNl
RXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmsoRXhlY1N0YXRlJiBzdGF0ZSwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGlu
dCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGll
bnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgSlNWYWx1ZSByZWxhdGVkVGFyZ2V0VmFsdWUpCit2
b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmsoRXhlY1N0YXRlJiBzdGF0ZSwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBp
bnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBKU1ZhbHVlIHJl
bGF0ZWRUYXJnZXRWYWx1ZSkKIHsKICAgICBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCA9IG51
bGxwdHI7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTW91c2VF
dmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayhFeGVjU3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBzCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIH0KICNlbmRpZgotICAgIGluaXRN
b3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCBzY3Jl
ZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBidXR0b24sIHJlbGF0ZWRUYXJnZXQpOworICAgIGluaXRNb3VzZUV2ZW50KHR5
cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCBzY3JlZW5Y
LCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBt
ZXRhS2V5LCBidXR0b24sIHJlbGF0ZWRUYXJnZXQpOwogfQogCiBFdmVudEludGVyZmFjZSBNb3Vz
ZUV2ZW50OjpldmVudEludGVyZmFjZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTW91c2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaAppbmRl
eCAyNmNhZjhmNmIxOTE1MTY2OGI2ODAzNTU0YTBiMDAxNjRkM2UxZmNmLi40YjI4MDc5OTU1YjRj
YjczYTJjZTE2OGViNWExMzlkNzMxNTZhOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKQEAg
LTI5LDE5ICsyOSwyMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhVHJhbnNm
ZXI7CitjbGFzcyBOb2RlOwogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogCiBjbGFzcyBNb3Vz
ZUV2ZW50IDogcHVibGljIE1vdXNlUmVsYXRlZEV2ZW50IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGlt
ZXN0YW1wLCBET01XaW5kb3cqLCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblks
IGludCBwYWdlWCwgaW50IHBhZ2VZLAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW91
c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgs
IGludCBwYWdlWSwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBpbnQgbW92ZW1l
bnRYLCBpbnQgbW92ZW1lbnRZLAogI2VuZGlmCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCwgZG91
YmxlIGZvcmNlLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIERhdGFUcmFuc2Zl
ciogPSBudWxscHRyLCBib29sIGlzU2ltdWxhdGVkID0gZmFsc2UpOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGludCBkZXRh
aWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGludCBkZXRhaWwsIE5v
ZGUqIHJlbGF0ZWRUYXJnZXQpOwogCi0gICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwg
aW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29s
IHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQg
c2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRh
cmdldCogcmVsYXRlZFRhcmdldCk7CisgICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5
cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KTsKIAogICAgIHN0YXRpYyBSZWY8TW91c2VF
dmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZl
bnQpOyB9CiAKQEAgLTQ5LDggKzUwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+TW91c2VF
dmVudCgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0TW91c2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdp
bmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgs
IGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBi
b29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRU
YXJnZXQpOwotICAgIHZvaWQgaW5pdE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4ZWNTdGF0ZSYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3Jl
ZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0
IGJ1dHRvbiwgSlNDOjpKU1ZhbHVlIHJlbGF0ZWRUYXJnZXQpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgaW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRhaWws
IGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpOworICAgIHZvaWQg
aW5pdE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4ZWNTdGF0ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LCBKU0M6OkpTVmFsdWUgcmVsYXRlZFRhcmdldCk7CiAKICAgICB1bnNpZ25lZCBzaG9ydCBidXR0
b24oKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbjsgfQogICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRv
bnMoKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbnM7IH0KQEAgLTcwLDcgKzcxLDcgQEAgcHVibGlj
OgogICAgIGludCB3aGljaCgpIGNvbnN0IGZpbmFsOwogCiBwcm90ZWN0ZWQ6Ci0gICAgTW91c2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqLAorICAgIE1vdXNlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAogICAg
ICAgICBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IElu
dFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAg
ICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKQEAgLTc4LDcgKzc5LDcgQEAgcHJvdGVj
dGVkOgogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBi
b29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
cywKICAgICAgICAgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwgdW5z
aWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIqLCBib29sIGlzU2lt
dWxhdGVkKTsKIAotICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLAorICAgIE1vdXNlRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxl
LCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IEludFBv
aW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExvY2F0aW9uLAogICAg
ICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksCiAgICAgICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
cywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRl
ZFRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwKaW5kZXggMGJlMGY4OGRkMzVkN2Nk
ZmI4ZDM1NDJkYWRlMTZlMzI5NGZkYzgzYS4uNjBjNDQ2NjY3MWYwNjE5ZmVlMDlkMGYwMTkzZjlh
NDFmNmIzZTgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmlkbApAQCAtNDMsNyArNDMsNyBA
QAogICAgIC8vIEZJWE1FOiByZWxhdGVkVGFyZ2V0IHNob3VsZCBiZSBvZiB0eXBlIEV2ZW50VGFy
Z2V0PyBidXQgd2UgbmVlZCB0byB1c2UgYW55IHRvIHN1cHBvcnQgYSBxdWlyayBmb3IgaUFkIFBy
b2R1Y2VyIChyZGFyOi8vcHJvYmxlbS8zMDY0MDEwMSkuCiAgICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlJlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9aW5pdE1vdXNlRXZlbnRR
dWlya10gdm9pZCBpbml0TW91c2VFdmVudChvcHRpb25hbCBET01TdHJpbmcgdHlwZSA9ICJ1bmRl
ZmluZWQiLAogICAgICAgICBvcHRpb25hbCBib29sZWFuIGNhbkJ1YmJsZSA9IGZhbHNlLCBvcHRp
b25hbCBib29sZWFuIGNhbmNlbGFibGUgPSBmYWxzZSwKLSAgICAgICAgb3B0aW9uYWwgRE9NV2lu
ZG93PyB2aWV3ID0gbnVsbCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAwLAorICAgICAgICBvcHRp
b25hbCBXaW5kb3dQcm94eT8gdmlldyA9IG51bGwsIG9wdGlvbmFsIGxvbmcgZGV0YWlsID0gMCwK
ICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5Z
ID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRYID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRZID0g
MCwKICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJv
b2xlYW4gYWx0S2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwg
b3B0aW9uYWwgYm9vbGVhbiBtZXRhS2V5ID0gZmFsc2UsCiAgICAgICAgIG9wdGlvbmFsIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiA9IDAsIG9wdGlvbmFsIGFueSByZWxhdGVkVGFyZ2V0ID0gbnVsbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAppbmRleCA4NTM3MTRkNmFi
MWYwMWU4YTVlYWNlMGQwZTQzOTc1ZWIzZDU4NDlmLi44MGE4MjY3ZGMyMWJkOGIzYmY1MTgzMGZl
NGIzMGE0MmE2MTIwMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxh
dGVkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5j
cHAKQEAgLTMyLDEzICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1vdXNlUmVs
YXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3Rh
bXAsIERPTVdpbmRvdyogRE9NV2luZG93LAorTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRl
ZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRldGFp
bCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93
TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKICNlbmRpZgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgYm9vbCBpc1NpbXVsYXRlZCkKLSAg
ICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUs
IHRpbWVzdGFtcCwgRE9NV2luZG93LCBkZXRhaWwsIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXks
IG1ldGFLZXksIGZhbHNlLCBmYWxzZSkKKyAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRU
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgV1RGTW92ZSh2aWV3KSwgZGV0
YWlsLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBmYWxzZSwgZmFsc2UpCiAg
ICAgLCBtX3NjcmVlbkxvY2F0aW9uKHNjcmVlbkxvY2F0aW9uKQogI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCiAgICAgLCBtX21vdmVtZW50RGVsdGEobW92ZW1lbnREZWx0YSkKQEAgLTYxLDcgKzYx
LDcgQEAgTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBjb25zdCBNb3VzZVIKIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6Omlu
aXQoYm9vbCBpc1NpbXVsYXRlZCwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uKQogewog
ICAgIGlmICghaXNTaW11bGF0ZWQpIHsKLSAgICAgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZy
YW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSkgeworICAgICAgICBpZiAoYXV0byogZnJhbWVW
aWV3ID0gZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpIHsKICAgICAgICAgICAgIEZs
b2F0UG9pbnQgYWJzb2x1dGVQb2ludCA9IGZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyh3aW5k
b3dMb2NhdGlvbik7CiAgICAgICAgICAgICBGbG9hdFBvaW50IGRvY3VtZW50UG9pbnQgPSBmcmFt
ZVZpZXctPmFic29sdXRlVG9Eb2N1bWVudFBvaW50KGFic29sdXRlUG9pbnQpOwogICAgICAgICAg
ICAgbV9wYWdlTG9jYXRpb24gPSBmbG9vcmVkTGF5b3V0UG9pbnQoZG9jdW1lbnRQb2ludCk7CkBA
IC04MywxMyArODMsMTMgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVz
KCkKICAgICBtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb24gPSBmYWxzZTsKIH0KIAotRnJhbWVW
aWV3KiBNb3VzZVJlbGF0ZWRFdmVudDo6ZnJhbWVWaWV3RnJvbURPTVdpbmRvdyhET01XaW5kb3cq
IHdpbmRvdykKK0ZyYW1lVmlldyogTW91c2VSZWxhdGVkRXZlbnQ6OmZyYW1lVmlld0Zyb21XaW5k
b3dQcm94eShXaW5kb3dQcm94eSogd2luZG93UHJveHkpCiB7Ci0gICAgYXV0byogZnJhbWUgPSB3
aW5kb3cgPyB3aW5kb3ctPmZyYW1lKCkgOiBudWxscHRyOwotICAgIGlmICghZnJhbWUpCisgICAg
aWYgKCF3aW5kb3dQcm94eSB8fCAhaXM8RE9NV2luZG93Pih3aW5kb3dQcm94eS0+d2luZG93KCkp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBmcmFtZS0+dmlldygpOwor
ICAgIGF1dG8qIGZyYW1lID0gZG93bmNhc3Q8RE9NV2luZG93Pigqd2luZG93UHJveHktPndpbmRv
dygpKS5mcmFtZSgpOworICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT52aWV3KCkgOiBudWxscHRy
OwogfQogCiBMYXlvdXRQb2ludCBNb3VzZVJlbGF0ZWRFdmVudDo6cGFnZVBvaW50VG9DbGllbnRQ
b2ludChMYXlvdXRQb2ludCBwYWdlUG9pbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQpAQCAtMTEz
LDcgKzExMyw3IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGluYXRlcyhjb25z
dCBMYXlvdXRQb2ludCYgY2xpZW50TG9jYXRpb24pCiAgICAgLy8gU2V0IHVwIGluaXRpYWwgdmFs
dWVzIGZvciBjb29yZGluYXRlcy4KICAgICAvLyBDb3JyZWN0IHZhbHVlcyBhcmUgY29tcHV0ZWQg
bGF6aWx5LCBzZWUgY29tcHV0ZVJlbGF0aXZlUG9zaXRpb24uCiAgICAgRmxvYXRTaXplIGRvY3Vt
ZW50VG9DbGllbnRPZmZzZXQ7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zy
b21ET01XaW5kb3codmlldygpKSkKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3
RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpCiAgICAgICAgIGRvY3VtZW50VG9DbGllbnRPZmZzZXQg
PSBmcmFtZVZpZXctPmRvY3VtZW50VG9DbGllbnRPZmZzZXQoKTsKIAogICAgIG1fY2xpZW50TG9j
YXRpb24gPSBjbGllbnRMb2NhdGlvbjsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIE1vdXNlUmVs
YXRlZEV2ZW50Ojppbml0Q29vcmRpbmF0ZXMoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudExvY2F0
aW9uKQogCiBmbG9hdCBNb3VzZVJlbGF0ZWRFdmVudDo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVG
YWN0b3IoKSBjb25zdAogewotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9t
RE9NV2luZG93KHZpZXcoKSkpCisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zy
b21XaW5kb3dQcm94eSh2aWV3KCkpKQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5kb2N1bWVu
dFRvQWJzb2x1dGVTY2FsZUZhY3RvcigpOwogCiAgICAgcmV0dXJuIDE7CkBAIC0xMzYsNyArMTM2
LDcgQEAgZmxvYXQgTW91c2VSZWxhdGVkRXZlbnQ6OmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFj
dG9yKCkgY29uc3QKIAogdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVBhZ2VMb2NhdGlv
bigpCiB7Ci0gICAgbV9hYnNvbHV0ZUxvY2F0aW9uID0gcGFnZVBvaW50VG9BYnNvbHV0ZVBvaW50
KG1fcGFnZUxvY2F0aW9uLCBmcmFtZVZpZXdGcm9tRE9NV2luZG93KHZpZXcoKSkpOworICAgIG1f
YWJzb2x1dGVMb2NhdGlvbiA9IHBhZ2VQb2ludFRvQWJzb2x1dGVQb2ludChtX3BhZ2VMb2NhdGlv
biwgZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpOwogfQogCiB2b2lkIE1vdXNlUmVs
YXRlZEV2ZW50OjpyZWNlaXZlZFRhcmdldCgpCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBNb3Vz
ZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVJlbGF0aXZlUG9zaXRpb24oKQogICAgIAogRmxvYXRQb2lu
dCBNb3VzZVJlbGF0ZWRFdmVudDo6bG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSBjb25z
dAogewotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9tRE9NV2luZG93KHZp
ZXcoKSkpCisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21XaW5kb3dQcm94
eSh2aWV3KCkpKQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5jb250ZW50c1RvUm9vdFZpZXco
cm91bmRlZEludFBvaW50KG1fYWJzb2x1dGVMb2NhdGlvbikpOwogCiAgICAgcmV0dXJuIG1fYWJz
b2x1dGVMb2NhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0
ZWRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKaW5kZXgg
MGQ4M2MzNjA5ZjcxZWFmZWYyMTcxYTljZDBkNDMxYWU2ZDg1NGY4Yi4uYWQ0ZTVkMGMzNTZmNTQx
ZTA4MmUxMWEyNmEyZDBjYzExNWZkNTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L01vdXNlUmVsYXRlZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRl
ZEV2ZW50LmgKQEAgLTY3LDE0ICs2NywxNCBAQCBwdWJsaWM6CiAgICAgLy8gdXNhYmxlIHdpdGgg
UmVuZGVyT2JqZWN0OjphYnNvbHV0ZVRvTG9jYWwpLgogICAgIGNvbnN0IExheW91dFBvaW50JiBh
YnNvbHV0ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZUxvY2F0aW9uOyB9CiAg
ICAgCi0gICAgc3RhdGljIEZyYW1lVmlldyogZnJhbWVWaWV3RnJvbURPTVdpbmRvdyhET01XaW5k
b3cqKTsKKyAgICBzdGF0aWMgRnJhbWVWaWV3KiBmcmFtZVZpZXdGcm9tV2luZG93UHJveHkoV2lu
ZG93UHJveHkqKTsKIAogICAgIHN0YXRpYyBMYXlvdXRQb2ludCBwYWdlUG9pbnRUb0NsaWVudFBv
aW50KExheW91dFBvaW50IHBhZ2VQb2ludCwgRnJhbWVWaWV3Kik7CiAgICAgc3RhdGljIExheW91
dFBvaW50IHBhZ2VQb2ludFRvQWJzb2x1dGVQb2ludChMYXlvdXRQb2ludCBwYWdlUG9pbnQsIEZy
YW1lVmlldyopOwogCiBwcm90ZWN0ZWQ6CiAgICAgTW91c2VSZWxhdGVkRXZlbnQoKSA9IGRlZmF1
bHQ7Ci0gICAgTW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9N
V2luZG93KiwKKyAgICBNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1w
LCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IEludFBv
aW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAogI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIGNvbnN0IEludFBvaW50JiBtb3ZlbWVudERl
bHRhLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDRiMWU4NzI1Nzk1MzNmYmY3ODcxMmZkNmQyM2QyYzgx
NWIwM2ViMzguLmM5MTkwN2NkZDRhNDhiMTcyZWEzYTJkZWUxZTg4MDc4MGJlNWRlMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDb21wb3NlZFRyZWVBbmNl
c3Rvckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKICNp
bmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIKICNp
bmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaW11bGF0ZWRDbGljay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltdWxhdGVkQ2xpY2su
Y3BwCmluZGV4IGUwZjRlMzUyZWNhMThkY2RjODU5MjQ5MmVjNTA4NDI5MjhhYjY1NzQuLjQxN2U5
MDdiZjI4ODFiNmE4N2Y2MWQ2MDkxNmI2N2U2OGViOWMxMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Np
bXVsYXRlZENsaWNrLmNwcApAQCAtMzcsMTQgKzM3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgU2ltdWxhdGVkTW91c2VFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWV3LCBSZWZQdHI8RXZlbnQ+
JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQsIFNpbXVsYXRlZENsaWNrU291cmNl
IHNvdXJjZSkKKyAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIFJl
ZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVk
Q2xpY2tTb3VyY2Ugc291cmNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2ltdWxhdGVkTW91c2VFdmVudChldmVudFR5cGUsIHZpZXcsIFdURk1vdmUodW5kZXJseWluZ0V2
ZW50KSwgdGFyZ2V0LCBzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2lt
dWxhdGVkTW91c2VFdmVudChldmVudFR5cGUsIFdURk1vdmUodmlldyksIFdURk1vdmUodW5kZXJs
eWluZ0V2ZW50KSwgdGFyZ2V0LCBzb3VyY2UpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU2lt
dWxhdGVkTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93
KiB2aWV3LCBSZWZQdHI8RXZlbnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQs
IFNpbXVsYXRlZENsaWNrU291cmNlIHNvdXJjZSkKLSAgICAgICAgOiBNb3VzZUV2ZW50KGV2ZW50
VHlwZSwgdHJ1ZSwgdHJ1ZSwgdW5kZXJseWluZ0V2ZW50ID8gdW5kZXJseWluZ0V2ZW50LT50aW1l
U3RhbXAoKSA6IE1vbm90b25pY1RpbWU6Om5vdygpLCB2aWV3LCAwLCB7IH0sIHsgfSwKKyAgICBT
aW11bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgUmVmUHRyPEV2ZW50PiYmIHVuZGVybHlpbmdFdmVudCwgRWxl
bWVudCYgdGFyZ2V0LCBTaW11bGF0ZWRDbGlja1NvdXJjZSBzb3VyY2UpCisgICAgICAgIDogTW91
c2VFdmVudChldmVudFR5cGUsIHRydWUsIHRydWUsIHVuZGVybHlpbmdFdmVudCA/IHVuZGVybHlp
bmdFdmVudC0+dGltZVN0YW1wKCkgOiBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3
KSwgMCwgeyB9LCB7IH0sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgICAgIHsg
fSwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAppbmRleCBiZDAyNGVhNTVmNmJhODRl
MzJjOTA0NDZmY2JmODI4MjA0ZDJjMzBjLi5iMDk0NDkzYzFmODU1ODQ5ODg5M2MyY2I3YzBkMDc0
NmI2YWI1YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcApAQCAtMzgsMjkgKzM4LDI5IEBA
IFJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRleHRFdmVudCk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVu
dDo6Y3JlYXRlKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJ
bnB1dFR5cGUgaW5wdXRUeXBlKQorUmVmPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGUoUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5w
dXRUeXBlIGlucHV0VHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQo
dmlldywgZGF0YSwgaW5wdXRUeXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2
ZW50KFdURk1vdmUodmlldyksIGRhdGEsIGlucHV0VHlwZSkpOwogfQogCi1SZWY8VGV4dEV2ZW50
PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKERPTVdpbmRvdyogdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSkKK1JlZjxUZXh0RXZlbnQ+
IFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYm
IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KHZpZXcsIGRhdGEsIDAsIHNob3VsZFNt
YXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1
b3RlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdURk1vdmUodmlldyks
IGRhdGEsIDAsIHNob3VsZFNtYXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxp
bmc6OlJlc3BlY3RCbG9ja3F1b3RlKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6
Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiYmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNo
U3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKK1Jl
ZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBz
aG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVI
YW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFRleHRFdmVudCh2aWV3LCBlbXB0eVN0cmluZygpLCBXVEZNb3ZlKGRhdGEpLCBzaG91bGRT
bWFydFJlcGxhY2UsIHNob3VsZE1hdGNoU3R5bGUsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZW1wdHlT
dHJpbmcoKSwgV1RGTW92ZShkYXRhKSwgc2hvdWxkU21hcnRSZXBsYWNlLCBzaG91bGRNYXRjaFN0
eWxlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRF
dmVudDo6Y3JlYXRlRm9yRHJvcChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkK
K1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFRleHRFdmVudCh2aWV3LCBkYXRhLCBUZXh0RXZlbnRJbnB1dERyb3ApKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZGF0YSwgVGV4dEV2ZW50
SW5wdXREcm9wKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRGlj
dGF0aW9uKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8
RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCitSZWY8VGV4dEV2
ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3RhdGlvbihSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRp
dmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VGV4dEV2ZW50KHZpZXcsIGRhdGEsIGRpY3RhdGlvbkFsdGVybmF0aXZlcykpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRleHRFdmVudChXVEZNb3ZlKHZpZXcpLCBkYXRhLCBkaWN0YXRpb25B
bHRlcm5hdGl2ZXMpKTsKIH0KIAogVGV4dEV2ZW50OjpUZXh0RXZlbnQoKQpAQCAtNzEsOCArNzEs
OCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudCgpCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50
KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUg
aW5wdXRUeXBlKQotICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRy
dWUsIHRydWUsIHZpZXcsIDApCitUZXh0RXZlbnQ6OlRleHRFdmVudChSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRU
eXBlKQorICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRy
dWUsIFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAg
LCBtX2RhdGEoZGF0YSkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtODEs
OCArODEsOCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0
cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlIGlucAogewogfQogCi1UZXh0RXZlbnQ6OlRl
eHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwg
Ym9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1
b3RlSGFuZGxpbmcpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwg
dHJ1ZSwgdHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxk
TWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5n
KQorICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUs
IFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShUZXh0RXZlbnRJbnB1dFBhc3Rl
KQogICAgICwgbV9kYXRhKGRhdGEpCiAgICAgLCBtX3Bhc3RpbmdGcmFnbWVudChXVEZNb3ZlKHBh
c3RpbmdGcmFnbWVudCkpCkBAIC05Miw4ICs5Miw4IEBAIFRleHRFdmVudDo6VGV4dEV2ZW50KERP
TVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
CiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3Ry
aW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25B
bHRlcm5hdGl2ZXMpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwg
dHJ1ZSwgdHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25B
bHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcykKKyAgICA6IFVJRXZlbnQoZXZlbnRO
YW1lcygpLnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0cnVlLCBXVEZNb3ZlKHZpZXcpLCAwKQogICAg
ICwgbV9pbnB1dFR5cGUoVGV4dEV2ZW50SW5wdXREaWN0YXRpb24pCiAgICAgLCBtX2RhdGEoZGF0
YSkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtMTA1LDEyICsxMDUsMTIg
QEAgVGV4dEV2ZW50OjpUZXh0RXZlbnQoRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRh
dGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb24KIAogVGV4dEV2ZW50Ojp+VGV4dEV2ZW50KCkgPSBk
ZWZhdWx0OwogCi12b2lkIFRleHRFdmVudDo6aW5pdFRleHRFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmll
dywgY29uc3QgU3RyaW5nJiBkYXRhKQordm9pZCBUZXh0RXZlbnQ6OmluaXRUZXh0RXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIGlm
IChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbml0VUlFdmVu
dCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAgICBt
X2lucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQu
aAppbmRleCAyOWViMjZkMGUwNzRiNTRkMzQ2MzU2MDQyODBkMTJhNjk4OGFmOGRhLi4wYWUyYWM4
NjNmYjgxYmJiMjg2Mzg1MTY1YjZiMTI1MWQyZGZiMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGV4dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5o
CkBAIC0zOCwxNiArMzgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgVGV4
dEV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZShET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEs
IFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOworICAgICAgICBz
dGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlKFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3Qg
U3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJk
KTsKICAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7Ci0g
ICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShET01X
aW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKLSAg
ICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoRE9NV2lu
ZG93KiwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJl
cGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0g
ICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEcm9wKERPTVdpbmRvdyosIGNv
bnN0IFN0cmluZyYgZGF0YSk7Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVG
b3JEaWN0YXRpb24oRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8
RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgICAgICBz
dGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRv
d1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsK
KyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoUmVm
UHRyPFdpbmRvd1Byb3h5PiYmLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBkYXRhLCBib29s
IHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90
ZUhhbmRsaW5nKTsKKyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRyb3Ao
UmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBzdGF0
aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yRGljdGF0aW9uKFJlZlB0cjxXaW5kb3dQcm94eT4m
JiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+
JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogCiAgICAgICAgIHZpcnR1YWwgflRleHRFdmVudCgp
OwogICAgIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRUZXh0RXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01X
aW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0
YSk7CiAgICAgCiAgICAgICAgIFN0cmluZyBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9
CiAKQEAgLTcxLDkgKzcxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAg
ICAgICAgIFRleHRFdmVudCgpOwogCi0gICAgICAgIFRleHRFdmVudChET01XaW5kb3cqLCBjb25z
dCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9h
cmQpOwotICAgICAgICBUZXh0RXZlbnQoRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wg
c2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0gICAgICAgIFRleHRF
dmVudChET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRp
b25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgICAgIFRleHRFdmVu
dChSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5w
dXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7CisgICAgICAgIFRleHRFdmVudChSZWZQ
dHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+JiYsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUs
IE1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBUZXh0RXZlbnQoUmVmUHRyPFdpbmRv
d1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRl
cm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAKICAgICAgICAgYm9vbCBpc1RleHRF
dmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCmluZGV4IDM2
NDA2NWZhODJkNDE4OTljMGM1MjMyNTBjMmYyNzk5NzcwZDNlMGUuLmNlOGIzMGFjYjNjNzFmZmRm
ODI4YjIxODEwNjVhYWExZjhhMTI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0RXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCkBAIC0z
Miw3ICszMiw3IEBAIGludGVyZmFjZSBUZXh0RXZlbnQgOiBVSUV2ZW50IHsKICAgICB2b2lkIGlu
aXRUZXh0RXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZpbmVkIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGVBcmcgPSBmYWxz
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlQXJn
ID0gZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmll
d0FyZyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFdpbmRvd1Byb3h5
PyB2aWV3QXJnID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3Ry
aW5nIGRhdGFBcmcgPSAidW5kZWZpbmVkIik7CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVG91Y2hFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5j
cHAKaW5kZXggNjFjMDhmMjFkYTM4YmFhN2ExMTBmMjJkY2E2YTU3YmU5M2I2ODNlNy4uMDAyMzdj
ZGFkNTY4Mzc5NTJkOTNhOTdkZTI2YTk5ZTllYWZjMzkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2
ZW50LmNwcApAQCAtMzgsOSArMzgsOSBAQCBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KCkgPSBkZWZh
dWx0OwogCiBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91Y2hM
aXN0KiB0YXJnZXRUb3VjaGVzLAogICAgICAgICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzLCBj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICBET01XaW5kb3cqIHZpZXcsIGludCBz
Y3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAgICAgIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdl
WCwgaW50IHBhZ2VZLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXkpCi0gICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVl
LCB0cnVlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgdmlldywgMCwgSW50UG9pbnQoc2NyZWVuWCwg
c2NyZWVuWSksCisgICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCBNb25v
dG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwgMCwgSW50UG9pbnQoc2NyZWVuWCwgc2Ny
ZWVuWSksCiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChwYWdlWCwgcGFnZVkpLAog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2lu
dCgwLCAwKSwKQEAgLTY0LDEzICs2NCwxMyBAQCBUb3VjaEV2ZW50Ojp+VG91Y2hFdmVudCgpID0g
ZGVmYXVsdDsKIAogdm9pZCBUb3VjaEV2ZW50Ojppbml0VG91Y2hFdmVudChUb3VjaExpc3QqIHRv
dWNoZXMsIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywKICAgICAgICAgVG91Y2hMaXN0KiBjaGFu
Z2VkVG91Y2hlcywgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAKLSAgICAgICAgRE9NV2luZG93
KiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50
WSwKKyAgICAgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBzY3JlZW5YLCBpbnQg
c2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLAogICAgICAgICBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAgICAgaWYgKGlz
QmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRVSUV2ZW50KHR5
cGUsIHRydWUsIHRydWUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIHRydWUsIHRy
dWUsIFdURk1vdmUodmlldyksIDApOwogCiAgICAgbV90b3VjaGVzID0gdG91Y2hlczsKICAgICBt
X3RhcmdldFRvdWNoZXMgPSB0YXJnZXRUb3VjaGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1RvdWNoRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKaW5k
ZXggZDMzOWMwYjcyYjEzZDQ1NWE1ZTAzODY2ZTU1NzIwY2NmNmJmMWVkYi4uODVmYTE2MWYyMTk2
ZDNmMmEwNWQ5YTMxYTExN2IwYTFhZjg2NmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RvdWNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCkBA
IC00MSwxMiArNDEsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxUb3VjaEV2ZW50PiBj
cmVhdGUoVG91Y2hMaXN0KiB0b3VjaGVzLCAKICAgICAgICAgICAgIFRvdWNoTGlzdCogdGFyZ2V0
VG91Y2hlcywgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgCi0gICAgICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIERPTVdpbmRvdyogdmlldywKKyAgICAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgICAgICAg
ICBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogICAgICAg
ICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRh
S2V5KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVG91Y2hFdmVudCh0b3Vj
aGVzLCB0YXJnZXRUb3VjaGVzLCBjaGFuZ2VkVG91Y2hlcywKLSAgICAgICAgICAgICAgICB0eXBl
LCB2aWV3LCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksCisgICAgICAgICAgICAgICAg
dHlwZSwgV1RGTW92ZSh2aWV3KSwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLAogICAg
ICAgICAgICAgICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpKTsKICAgICB9
CiAgICAgc3RhdGljIFJlZjxUb3VjaEV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBAIC02Nyw3
ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0
b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3Qq
IGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICAgICAg
RE9NV2luZG93KiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLAorICAgICAgICAgICAgUmVmUHRy
PFdpbmRvd1Byb3h5PiYmLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksCiAgICAgICAgICAgICBp
bnQgY2xpZW50WCwgaW50IGNsaWVudFksCiAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wg
YWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogCkBAIC04Nyw3ICs4Nyw3IEBA
IHByaXZhdGU6CiAgICAgVG91Y2hFdmVudCgpOwogICAgIFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0
b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3Qq
IGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsCi0gICAgICAgICAgICBE
T01XaW5kb3cqLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwKKyAgICAgICAg
ICAgIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQg
cGFnZVgsCiAgICAgICAgICAgICBpbnQgcGFnZVksCiAgICAgICAgICAgICBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogICAgIFRvdWNoRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVG91Y2hFdmVudC5pZGwKaW5kZXggODEwNTgzNTdlZDNhYTc3NzRkMjZmYWZhZTE2MDNiMTVk
ZGUwZDYwYi4uNTRlOTlkYjQ4MzBmMzBkNDYyNjQyZTMzZDQzOTU2OTNiMTNmMmIwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ub3VjaEV2ZW50LmlkbApAQCAtNDAsNyArNDAsNyBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgb3B0aW9uYWwgVG91Y2hMaXN0PyB0YXJnZXRUb3VjaGVzID0gbnVsbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFRvdWNoTGlzdD8gY2hhbmdlZFRvdWNoZXMgPSBu
dWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAi
dW5kZWZpbmVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8g
dmlldyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94
eT8gdmlldyA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBsb25nIHNj
cmVlblggPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5Z
ID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGxvbmcgY2xpZW50WCA9IDAs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVUlFdmVudC5jcHAKaW5kZXggYWIyMGVlY2I5YzU4MzFkZWYwMjc5Y2E3OGEwZTdj
YzVmYTg1NjIxNy4uMGE2ZjgxYWY1MjM3MTZmNzU4MTc4ZjBmOTUzNDRjZGM2NTViODAwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50LmNwcApAQCAtMzIsMTYgKzMyLDE2IEBAIFVJRXZlbnQ6OlVJRXZlbnQo
KQogewogfQogCi1VSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBET01XaW5kb3cqIHZpZXdB
cmcsIGludCBkZXRhaWxBcmcpCitVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50
VHlwZSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnKQotICAgICwgbV92aWV3KHZpZXdBcmcp
CisgICAgLCBtX3ZpZXcoV1RGTW92ZSh2aWV3QXJnKSkKICAgICAsIG1fZGV0YWlsKGRldGFpbEFy
ZykKIHsKIH0KIAotVUlFdmVudDo6VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgTW9ub3RvbmljVGltZSB0
aW1lc3RhbXAsIERPTVdpbmRvdyogdmlld0FyZywgaW50IGRldGFpbEFyZykKK1VJRXZlbnQ6OlVJ
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlQXJnLCBi
b29sIGNhbmNlbGFibGVBcmcsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwg
Y2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCB0aW1lc3RhbXApCi0gICAgLCBtX3ZpZXcodmll
d0FyZykKKyAgICAsIG1fdmlldyhXVEZNb3ZlKHZpZXdBcmcpKQogICAgICwgbV9kZXRhaWwoZGV0
YWlsQXJnKQogewogfQpAQCAtNTUsNyArNTUsNyBAQCBVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBVSUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIsCiAK
IFVJRXZlbnQ6On5VSUV2ZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFVJRXZlbnQ6OmluaXRVSUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZUFyZywgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wg
Y2FuY2VsYWJsZUFyZywgRE9NV2luZG93KiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQordm9pZCBV
SUV2ZW50Ojppbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVBcmcsIGJvb2wgY2Fu
QnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVBcmcsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3
QXJnLCBpbnQgZGV0YWlsQXJnKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaAppbmRleCBiYWE3MzFmY2Y4MWVlYmFmMjMxNTNk
YTUxYmEwYWVhZmQyNDU1ZmFjLi41MGYyZDE3NzE5OTQyZTQ3M2ZkZWM5YjFhODg0ODYwNTkzY2Qx
OWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmgKQEAgLTIzLDIwICsyMywyMCBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVk
ZSAiVUlFdmVudEluaXQuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIG5vIG9uZSBpcyBkZXBlbmRp
bmcgb24gaXQgYW55bW9yZS4KLXR5cGVkZWYgRE9NV2luZG93IEFic3RyYWN0VmlldzsKK3R5cGVk
ZWYgV2luZG93UHJveHkgQWJzdHJhY3RWaWV3OwogCiBjbGFzcyBVSUV2ZW50IDogcHVibGljIEV2
ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRv
dyogdmlldywgaW50IGRldGFpbCkKKyAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZp
ZXcsIGRldGFpbCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKSk7CiAgICAgfQog
ICAgIHN0YXRpYyBSZWY8VUlFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHsKQEAgLTQ4
LDkgKzQ4LDkgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5VSUV2ZW50KCk7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFp
bCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiwgaW50IGRldGFpbCk7CiAKLSAgICBET01XaW5kb3cqIHZpZXcoKSBjb25zdCB7IHJl
dHVybiBtX3ZpZXcuZ2V0KCk7IH0KKyAgICBXaW5kb3dQcm94eSogdmlldygpIGNvbnN0IHsgcmV0
dXJuIG1fdmlldy5nZXQoKTsgfQogICAgIGludCBkZXRhaWwoKSBjb25zdCB7IHJldHVybiBtX2Rl
dGFpbDsgfQogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVy
cmlkZTsKQEAgLTY1LDE0ICs2NSwxNCBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVSUV2
ZW50KCk7Ci0gICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwpOwotICAgIFVJRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7Cisg
ICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCk7CisgICAgVUlF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGlu
dCBkZXRhaWwpOwogICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVUlFdmVu
dEluaXQmLCBJc1RydXN0ZWQpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNVSUV2ZW50KCkgY29u
c3QgZmluYWw7CiAKLSAgICBSZWZQdHI8RE9NV2luZG93PiBtX3ZpZXc7CisgICAgUmVmUHRyPFdp
bmRvd1Byb3h5PiBtX3ZpZXc7CiAgICAgaW50IG1fZGV0YWlsOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZl
bnQuaWRsCmluZGV4IDg3YjM5MTUyODMwMzE5N2UzNmM2NGMxZTcwOGZmYjYwY2JhZDk1MDMuLjZh
MzVjNTdhMzg3NGJjOGVjNjNkNmQ5MjRkNDI4YjJiNTgxMDBmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVu
dC5pZGwKQEAgLTIwLDExICsyMCwxMSBAQAogWwogICAgIENvbnN0cnVjdG9yKERPTVN0cmluZyB0
eXBlLCBvcHRpb25hbCBVSUV2ZW50SW5pdCBldmVudEluaXREaWN0KQogXSBpbnRlcmZhY2UgVUlF
dmVudCA6IEV2ZW50IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IHZpZXc7Cisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHZpZXc7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgZGV0YWlsOwogICAgIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVk
IiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICB2b2lkIGluaXRVSUV2
ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIGJvb2xl
YW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZhbHNl
LCBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBsb25nIGRldGFpbCA9
IDApOworICAgIHZvaWQgaW5pdFVJRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5k
ZWZpbmVkIiwgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGUgPSBmYWxzZSwgb3B0aW9uYWwgYm9v
bGVhbiBjYW5jZWxhYmxlID0gZmFsc2UsIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVs
bCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAwKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBs
b25nIGxheWVyWDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsYXllclk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9VSUV2ZW50SW5pdC5oCmluZGV4IDAzMTZiYzA2ZjU2OGU1MzkxNmRmNjk2ZjQxNDQ1YmE5ZmMz
MWZmMzYuLmUxMTI4YTc2ZGU1ODYwMTYyZmE5NzZkY2RjODI3MTcwZDhmMmYzYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9VSUV2ZW50SW5pdC5oCkBAIC0yNSwxNCArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudEluaXQuaCIKKyNpbmNsdWRl
ICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdHJ1Y3QgVUlFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKLSAgICBS
ZWZQdHI8RE9NV2luZG93PiB2aWV3OworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gdmlldzsKICAg
ICBpbnQgZGV0YWlsIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1VJRXZlbnRJbml0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5pZGwKaW5k
ZXggMGQ3ZWI4ZWZjMWM1MzdhOTA1MTE3YjYxMjExMWFkMDFlYjFlMGFhMi4uM2NjYmJlZDYwNzU1
ZjZmMjE2NTJmNWJhNjFlNmYzODI0MGMxN2ZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1VJRXZlbnRJbml0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQu
aWRsCkBAIC0yNCw2ICsyNCw2IEBACiAgKi8KIAogZGljdGlvbmFyeSBVSUV2ZW50SW5pdCA6IEV2
ZW50SW5pdCB7Ci0gICAgRE9NV2luZG93PyB2aWV3ID0gbnVsbDsKKyAgICBXaW5kb3dQcm94eT8g
dmlldyA9IG51bGw7CiAgICAgbG9uZyBkZXRhaWwgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VUlFdmVudFdpdGhLZXlTdGF0ZS5oCmluZGV4IDBhOGU0MDMxMjQ4ZDZmNzI2NTQ0MmU1YmY4MDAx
MmJhMzBjY2NkZWIuLjA4NWEwMzE3ZWM4ZGNlM2E2MGZlMjZhZmE1YTE2MmVhMmE5YTA1MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaApAQCAtNDAsOCArNDAsOCBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgVUlFdmVudFdpdGhLZXlTdGF0ZSgpID0gZGVmYXVs
dDsKIAotICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRh
aWwsIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtl
eSkKLSAgICAgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywg
ZGV0YWlsKQorICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywgaW50IGRldGFpbCwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtl
eSwgYm9vbCBtZXRhS2V5KQorICAgICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxL
ZXkpCiAgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQogICAgICAgICAsIG1fc2hpZnRLZXkoc2hp
ZnRLZXkpCkBAIC00OSw5ICs0OSw5IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQogCi0gICAg
VUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cq
IHZpZXcsCisgICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1w
LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICAgICAgaW50IGRldGFpbCwgYm9vbCBj
dHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBib29sIGFs
dEdyYXBoS2V5LCBib29sIGNhcHNMb2NrS2V5KQotICAgICAgICAgICAgOiBVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2aWV3LCBkZXRhaWwpCisgICAgICAg
ICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIFdU
Rk1vdmUodmlldyksIGRldGFpbCkKICAgICAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCiAg
ICAgICAgICAgICAsIG1fYWx0S2V5KGFsdEtleSkKICAgICAgICAgICAgICwgbV9zaGlmdEtleShz
aGlmdEtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAppbmRleCBkMmI4ZmI3MmQ5MTk4ZTE0
YmY3NThjYTNhZmJjMWVjMjQ3ZjcxY2JkLi41MzdjYjE5M2M4MTNmNTI3YWM1MzNjOTMwODkwODdi
ZGIzNjhiZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCkBAIC00Nyw4ICs0Nyw4IEBA
IGlubGluZSBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Y29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsCiB7CiB9CiAKLWlubGluZSBXaGVlbEV2ZW50OjpXaGVl
bEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogdmlldykK
LSAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUsIGV2
ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LCAwLCBldmVu
dC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCitpbmxpbmUgV2hlZWxFdmVudDo6
V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlldykKKyAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQs
IHRydWUsIHRydWUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgp
LCBXVEZNb3ZlKHZpZXcpLCAwLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlv
bigpCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgLCB7IH0KICNlbmRpZgpAQCAt
NjEsOSArNjEsOSBAQCBpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHZpZXcpCiB7CiB9CiAKLVJlZjxXaGVlbEV2
ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwg
RE9NV2luZG93KiB2aWV3KQorUmVmPFdoZWVsRXZlbnQ+IFdoZWVsRXZlbnQ6OmNyZWF0ZShjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXaGVlbEV2ZW50KGV2ZW50LCB2aWV3KSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2hlZWxFdmVudChldmVudCwgV1RGTW92ZSh2aWV3KSkp
OwogfQogCiBSZWY8V2hlZWxFdmVudD4gV2hlZWxFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQpA
QCAtNzYsMTIgKzc2LDEyIEBAIFJlZjxXaGVlbEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2hlZWxFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiB9
CiAKLXZvaWQgV2hlZWxFdmVudDo6aW5pdFdlYktpdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwg
aW50IHJhd0RlbHRhWSwgRE9NV2luZG93KiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblks
IGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXkpCit2b2lkIFdoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2
ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAg
ICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBp
bml0TW91c2VFdmVudChldmVudE5hbWVzKCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmlldywg
MCwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5LCAwLCBudWxscHRyKTsKKyAgICBpbml0TW91c2VFdmVudChldmVudE5hbWVz
KCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCwgc2NyZWVuWCwgc2Ny
ZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCAw
LCBudWxscHRyKTsKIAogICAgIC8vIE5vcm1hbGl6ZSB0byAxMjAgbXVsdGlwbGUgZm9yIGNvbXBh
dGliaWxpdHkgd2l0aCBJRS4KICAgICBtX3doZWVsRGVsdGEgPSB7IHJhd0RlbHRhWCAqIFRpY2tN
dWx0aXBsaWVyLCByYXdEZWx0YVkgKiBUaWNrTXVsdGlwbGllciB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2
ZW50LmgKaW5kZXggNGQzNGIzMGQ2ZGVkNWVmMjgxNWE4MTM3ZTRjMjk3ZTY0MWFkZTZkYS4uMTBi
NjJlMDVjNzAxNTYwNzZmZmU1Y2YxMjczOTdlYzEzMjNkZDJkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxF
dmVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAgICAgRE9NX0RFTFRBX1BBR0UK
ICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBj
cmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsK
ICAgICBzdGF0aWMgUmVmPFdoZWVsRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBz
dHJ1Y3QgSW5pdCA6IE1vdXNlRXZlbnRJbml0IHsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGluaXRXZWJLaXRXaGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGludCBy
YXdEZWx0YVksIERPTVdpbmRvdyosIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VY
LCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJv
b2wgbWV0YUtleSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVu
dChpbnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGlu
dCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wgY3RybEtl
eSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CiAKICAgICBjb25z
dCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtV2hlZWxFdmVudD4mIHVuZGVybHlpbmdQbGF0Zm9ybUV2
ZW50KCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudDsgfQogCkBAIC03
NSw3ICs3NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2hlZWxFdmVudCgpOwogICAgIFdo
ZWVsRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7Ci0g
ICAgV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBET01XaW5kb3cqKTsKKyAg
ICBXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFJlZlB0cjxXaW5kb3dQcm94
eT4mJik7CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwKaW5kZXggOTNjNTNhNGJmYjJkYWY0YmQ0NDI3
Mzg2NmE5MmNlZDRhMWMxYzM4Ni4uYjI4MWRhMWM2NjA0NGE4YTkzZDYwZDkwZWRkZjUxZDE0YzZj
OTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmlkbApAQCAtMzksNyArMzksNyBAQAogCiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0RGlyZWN0aW9uSW52ZXJ0ZWRGcm9t
RGV2aWNlOwogCi0gICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRpb25hbCBsb25nIHdo
ZWVsRGVsdGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAsIG9wdGlvbmFsIERP
TVdpbmRvdz8gdmlldyA9IG51bGwsCisgICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRp
b25hbCBsb25nIHdoZWVsRGVsdGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAs
IG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwKICAgICAgICAgb3B0aW9uYWwgbG9u
ZyBzY3JlZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwgb3B0aW9uYWwgbG9uZyBj
bGllbnRYID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRZID0gMCwKICAgICAgICAgb3B0aW9uYWwg
Ym9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFsc2Us
CiAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9v
bGVhbiBtZXRhS2V5ID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZDE0NzI0Mjc3MjM3NDY4ZDRmNjFm
ZmUzM2M3NWZlNDZhODE5MjNkYy4uZDczYTcxYjBlMTVkZDgxOWYxNzBlZmE1ZjU2MmVmNzVjOTQy
Yjk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuY3BwCkBAIC02MzIsNyArNjMyLDcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOjppbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBW
ZWMKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpCiAgICAgICAgIHZp
ZXctPmRpc2FibGVMYXllckZsdXNoVGhyb3R0bGluZ1RlbXBvcmFyaWx5Rm9ySW50ZXJhY3Rpb24o
KTsKIAotICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0
YXRpb24obV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCwgZGljdGF0aW9uQWx0
ZXJuYXRpdmVzKTsKKyAgICBSZWY8VGV4dEV2ZW50PiBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRl
Rm9yRGljdGF0aW9uKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgdGV4dCwgZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KHRyaWdn
ZXJpbmdFdmVudCk7CiAKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGNiOGI2YjhiYmFjODViYzBlMzJkZWQyZWYzMzljMjQx
MDI5MGQzMTkuLjRlMzY4YmZkODAzYzUzNjg1MmVkY2U2MDEwNDY5NDQ4NjMxNDkxOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIEVkaXRvcjo6
cGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBib29sIHNtYXJ0UmVw
bGFjZSkKICAgICBFbGVtZW50KiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9u
KCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKLSAgICB0YXJnZXQtPmRpc3Bh
dGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShkb2N1bWVudCgpLmRv
bVdpbmRvdygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSk7CisgICAgdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoZG9jdW1lbnQoKS5k
ZWZhdWx0VmlldygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSk7CiB9CiAKIHZvaWQgRWRp
dG9yOjpwYXN0ZUFzRnJhZ21lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdt
ZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhh
bmRsaW5nIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUpCkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBF
ZGl0b3I6OnBhc3RlQXNGcmFnbWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBwYXN0aW5nRnJh
Z21lbnQsIGJvb2wgc21hcnQKICAgICBFbGVtZW50KiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJnZXRG
cm9tU2VsZWN0aW9uKCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKLSAgICB0
YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKGRv
Y3VtZW50KCkuZG9tV2luZG93KCksIFdURk1vdmUocGFzdGluZ0ZyYWdtZW50KSwgc21hcnRSZXBs
YWNlLCBtYXRjaFN0eWxlLCByZXNwZWN0c01haWxCbG9ja3F1b3RlKSk7CisgICAgdGFyZ2V0LT5k
aXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShkb2N1bWVudCgp
LmRlZmF1bHRWaWV3KCksIFdURk1vdmUocGFzdGluZ0ZyYWdtZW50KSwgc21hcnRSZXBsYWNlLCBt
YXRjaFN0eWxlLCByZXNwZWN0c01haWxCbG9ja3F1b3RlKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpw
YXN0ZUFzUGxhaW5UZXh0QnlwYXNzaW5nREhUTUwoKQpAQCAtMTg0OCw3ICsxODQ4LDcgQEAgdm9p
ZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgU2V0Q29tcG9zaXRp
b25Nb2RlIG1vZGUpCiAgICAgaW5zZXJ0VGV4dEZvckNvbmZpcm1lZENvbXBvc2l0aW9uKHRleHQp
OwogCiAgICAgaWYgKGF1dG8qIHRhcmdldCA9IGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSkK
LSAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQoKS5kb21XaW5kb3coKSwg
dGV4dCkpOworICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50LCBkb2N1bWVudCgpLmRlZmF1
bHRWaWV3KCksIHRleHQpKTsKIAogICAgIGlmIChtb2RlID09IENhbmNlbENvbXBvc2l0aW9uKSB7
CiAgICAgICAgIC8vIEFuIG9wZW4gdHlwaW5nIGNvbW1hbmQgdGhhdCBkaXNhZ3JlZXMgYWJvdXQg
Y3VycmVudCBzZWxlY3Rpb24gd291bGQgY2F1c2UgaXNzdWVzIHdpdGggdHlwaW5nIGxhdGVyIG9u
LgpAQCAtMTkwOCwxMSArMTkwOCwxMSBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIHNlbmQgYSBjb21wb3NpdGlvbnN0YXJ0IGV2ZW50IG9ubHkgd2hl
biB0aGUgZ2l2ZW4gdGV4dCBpcyBub3QgZW1wdHkgYmVjYXVzZSB0aGlzCiAgICAgICAgICAgICAv
LyBmdW5jdGlvbiBkb2Vzbid0IGNyZWF0ZSBhIGNvbXBvc2l0aW9uIG5vZGUgd2hlbiB0aGUgdGV4
dCBpcyBlbXB0eS4KICAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0RXZlbnQsIGRvY3VtZW50KCkuZG9tV2luZG93KCks
IG9yaWdpbmFsVGV4dCkpOwotICAgICAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBkb2N1bWVudCgp
LmRvbVdpbmRvdygpLCB0ZXh0KTsKKyAgICAgICAgICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZl
bnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0
RXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgb3JpZ2luYWxUZXh0KSk7CisgICAgICAg
ICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNv
bXBvc2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdGV4dCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoIXRleHQuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBv
c2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZG9tV2luZG93KCksIHRleHQpOworICAgICAg
ICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBv
c2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdGV4dCk7CiAKICAg
ICAgICAgaWYgKGV2ZW50KQogICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KCpldmVu
dCk7CkBAIC0xOTIzLDcgKzE5MjMsNyBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgIGlm
ICh0ZXh0LmlzRW1wdHkoKSkgewogICAgICAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rp
b24oZG9jdW1lbnQoKSwgVHlwaW5nQ29tbWFuZDo6UHJldmVudFNwZWxsQ2hlY2tpbmcsIFR5cGlu
Z0NvbW1hbmQ6OlRleHRDb21wb3NpdGlvblBlbmRpbmcpOwogICAgICAgICBpZiAodGFyZ2V0KQot
ICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQoKS5kb21XaW5kb3co
KSwgdGV4dCkpOworICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9u
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQo
KS5kZWZhdWx0VmlldygpLCB0ZXh0KSk7CiAgICAgfQogCiAgICAgbV9jb21wb3NpdGlvbk5vZGUg
PSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCmluZGV4IGEzZDdkOTc3
MGNlYmQwNjI4Y2E3YmVjMjRjZmE2NzVkM2I5N2JiNTQuLjlkNTgxY2VkZmE4NDFlMGFkZjFhYWM0
MzI1OTFjOGI2ZjJmNzY1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKQEAg
LTExNCw3ICsxMTQsNyBAQCBSZWY8RG9jdW1lbnRQYXJzZXI+IEhUTUxEb2N1bWVudDo6Y3JlYXRl
UGFyc2VyKCkKIH0KIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
ZG9tLmh0bWwjZG9tLWRvY3VtZW50LW5hbWVkaXRlbQotc3RkOjpvcHRpb25hbDxWYXJpYW50PFJl
ZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+
PiBIVE1MRG9jdW1lbnQ6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitzdGQ6
Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gSFRNTERvY3VtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKQogewogICAgIGlmIChuYW1lLmlzTnVsbCgpIHx8ICFoYXNEb2N1bWVu
dE5hbWVkSXRlbSgqbmFtZS5pbXBsKCkpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtMTIyLDE2ICsxMjIsMTYgQEAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxET01XaW5k
b3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4KICAgICBpZiAoVU5M
SUtFTFkoZG9jdW1lbnROYW1lZEl0ZW1Db250YWluc011bHRpcGxlRWxlbWVudHMoKm5hbWUuaW1w
bCgpKSkpIHsKICAgICAgICAgYXV0byBjb2xsZWN0aW9uID0gZG9jdW1lbnROYW1lZEl0ZW1zKG5h
bWUpOwogICAgICAgICBBU1NFUlQoY29sbGVjdGlvbi0+bGVuZ3RoKCkgPiAxKTsKLSAgICAgICAg
cmV0dXJuIFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRy
PEhUTUxDb2xsZWN0aW9uPj4geyBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHsgV1RGTW92ZShjb2xs
ZWN0aW9uKSB9IH07CisgICAgICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4s
IFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBSZWZQdHI8SFRNTENv
bGxlY3Rpb24+IHsgV1RGTW92ZShjb2xsZWN0aW9uKSB9IH07CiAgICAgfQogCiAgICAgYXV0byYg
ZWxlbWVudCA9ICpkb2N1bWVudE5hbWVkSXRlbSgqbmFtZS5pbXBsKCkpOwogICAgIGlmIChVTkxJ
S0VMWShpczxIVE1MSUZyYW1lRWxlbWVudD4oZWxlbWVudCkpKSB7CiAgICAgICAgIGlmIChhdXRv
IGRvbVdpbmRvdyA9IG1ha2VSZWZQdHIoZG93bmNhc3Q8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1l
bnQpLmNvbnRlbnRXaW5kb3coKSkpCi0gICAgICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8
RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7IFdU
Rk1vdmUoZG9tV2luZG93KSB9OworICAgICAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPFdp
bmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7IFdU
Rk1vdmUoZG9tV2luZG93KSB9OwogICAgIH0KIAotICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxE
T01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgUmVm
UHRyPEVsZW1lbnQ+IHsgJmVsZW1lbnQgfSB9OworICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxX
aW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBS
ZWZQdHI8RWxlbWVudD4geyAmZWxlbWVudCB9IH07CiB9CiAKIFZlY3RvcjxBdG9taWNTdHJpbmc+
IEhUTUxEb2N1bWVudDo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRG9jdW1lbnQuaAppbmRleCBhMzYzOTc0MDZkMzQ5ZjU3NmY0ODlkM2ExZjYwMGFkYTFi
ZGRjZmUxLi4wYjNkMzQxNGE0YmVmYTAzMzVjNGUyMjlhNTk1ODVlYjA1ZWJkNjBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERvY3VtZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIGludCB3aWR0aCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBoZWlnaHQo
KTsKICAgICAKLSAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJl
ZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IG5hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmcmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1By
b3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gbmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHN1cHBvcnRl
ZFByb3BlcnR5TmFtZXMoKSBjb25zdDsKIAogICAgIEVsZW1lbnQqIGRvY3VtZW50TmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRO
YW1lZEl0ZW0uZ2V0RWxlbWVudEJ5RG9jdW1lbnROYW1lZEl0ZW0obmFtZSwgKnRoaXMpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwKaW5kZXggMTI3ZjI2NDVlMDMyMmRjNzk4ODEy
ODA0ZmY1ZDc5NWRhYzhhNTgwZi4uYTk5OWIwM2Y2MjI4YjI1ZWJkMWI3Yjk0Mzg2Yjk5ZTM5NWI4
NWY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmlkbApAQCAtMjMsNSArMjMsNSBA
QAogICAgIE5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cywKICAgICBPdmVycmlkZUJ1
aWx0aW5zLAogXSBpbnRlcmZhY2UgSFRNTERvY3VtZW50IDogRG9jdW1lbnQgeyAgICAKLSAgICBn
ZXR0ZXIgKERPTVdpbmRvdyBvciBFbGVtZW50IG9yIEhUTUxDb2xsZWN0aW9uKSAoRE9NU3RyaW5n
IG5hbWUpOworICAgIGdldHRlciAoV2luZG93UHJveHkgb3IgRWxlbWVudCBvciBIVE1MQ29sbGVj
dGlvbikgKERPTVN0cmluZyBuYW1lKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVF
bGVtZW50LmlkbAppbmRleCBjZDYzYTIxMmFkNDMzMTRjNWJlMjMwNGRkZTcwMDk3YzdiZjg4MzUz
Li5lZDdjMGI2ZTI3NzI5OWI2NWNhMjE4ZjIxZTE4MjYxZTUxM2RmYzBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwKQEAgLTI2LDcgKzI2LDcgQEAgaW50ZXJmYWNl
IEhUTUxGcmFtZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW1JlZmxlY3QsIFVSTF0gYXR0
cmlidXRlIFVTVlN0cmluZyBsb25nRGVzYzsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIGJvb2xl
YW4gbm9SZXNpemU7CiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSByZWFkb25seSBhdHRyaWJ1
dGUgRG9jdW1lbnQgY29udGVudERvY3VtZW50OwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01X
aW5kb3cgY29udGVudFdpbmRvdzsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkg
Y29udGVudFdpbmRvdzsKIAogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVt
cHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luSGVpZ2h0OwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1
dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luV2lkdGg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKaW5kZXggNTg4NzM5
ODQ3Y2JiMDhjMzcxN2MxM2JlYmQzYWE5MWQ5OWJiNGNjNS4uYjliZWYxNzYzZTI2MWQ3Yzk4MmUx
ZjA1NTUwOWMxNjlkZjg0MDYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVPd25lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
T3duZXJFbGVtZW50LmNwcApAQCAtOTksOSArOTksOSBAQCBEb2N1bWVudCogSFRNTEZyYW1lT3du
ZXJFbGVtZW50Ojpjb250ZW50RG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRG
cmFtZSA/IG1fY29udGVudEZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKIH0KIAotRE9NV2lu
ZG93KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRXaW5kb3coKSBjb25zdAorV2luZG93
UHJveHkqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVudFdpbmRvdygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8gbV9jb250ZW50RnJhbWUtPmRvY3VtZW50KCktPmRv
bVdpbmRvdygpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyAmbV9jb250
ZW50RnJhbWUtPndpbmRvd1Byb3h5KCkgOiBudWxscHRyOwogfQogCiB2b2lkIEhUTUxGcmFtZU93
bmVyRWxlbWVudDo6c2V0U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCmluZGV4IDg2NWVkZGI5MWY1N2Uz
NDViNGI2ODdmNzYwZTgzMzI1NDI1YzRmYzEuLjgwZjE4MjAwZGYwZDRhNzRkN2YwZTNkYmNhMTUy
NDU2MDIyNGFiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1l
bnQuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SFRNTEZyYW1lT3du
ZXJFbGVtZW50KCk7CiAKICAgICBGcmFtZSogY29udGVudEZyYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZW50RnJhbWU7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBET01XaW5kb3cqIGNvbnRlbnRX
aW5kb3coKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXaW5kb3dQcm94eSogY29udGVudFdp
bmRvdygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KiBjb250ZW50RG9jdW1l
bnQoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Q29udGVudEZyYW1lKEZyYW1lKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAppbmRleCAyODU2NDI0OTUwYTM0
OWM5YjcyOTUwM2M1ZjRmMTIxYThlYzRiMmI3Li41ZDIzN2Q0ODI2YzcyZjg4N2I3ZGIyZmI1MWQ2
ZTk3ODY1Njc5YTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNl
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5jcHAKQEAgLTIzMSwxNSArMjMxLDEzIEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6cmVt
b3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyCiAgICAg
fQogfQogCi1ET01XaW5kb3cqIEhUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpCitXaW5kb3dQcm94eSogSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFt
ZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKICAgICBhdXRvIGZyYW1lRWxlbWVu
dCA9IG1ha2VSZWZQdHIoY2hpbGRyZW4oKS0+bmFtZWRJdGVtKG5hbWUpKTsKICAgICBpZiAoIWlz
PEhUTUxGcmFtZUVsZW1lbnQ+KGZyYW1lRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgaWYgKGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGRvd25jYXN0PEhUTUxGcmFt
ZUVsZW1lbnQ+KGZyYW1lRWxlbWVudC5nZXQoKSktPmNvbnRlbnREb2N1bWVudCgpKSkKLSAgICAg
ICAgcmV0dXJuIGRvY3VtZW50LT5kb21XaW5kb3coKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gZG93bmNhc3Q8SFRNTEZyYW1lRWxlbWVudD4oKmZyYW1lRWxlbWVudCkuY29udGVu
dFdpbmRvdygpOwogfQogCiBWZWN0b3I8QXRvbWljU3RyaW5nPiBIVE1MRnJhbWVTZXRFbGVtZW50
OjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmgKaW5kZXggZDFmMzc5YjczNWNiNzdmNWU1YWQyZGVjNGViZjE0NDBj
N2VlYTMzMi4uYzNjNjhiNTdiZjk3N2U3YWNlYTkyZmYzYWVjMDk2NDk2ZjcxMjJiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8SFRNTEZyYW1lU2V0RWxlbWVudD4gZmluZENvbnRh
aW5pbmcoRWxlbWVudCogZGVzY2VuZGFudCk7CiAgICAgCiAgICAgVmVjdG9yPEF0b21pY1N0cmlu
Zz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0OwotICAgIERPTVdpbmRvdyogbmFtZWRJ
dGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFdpbmRvd1Byb3h5KiBuYW1lZEl0ZW0oY29u
c3QgQXRvbWljU3RyaW5nJik7CiAKIHByaXZhdGU6CiAgICAgSFRNTEZyYW1lU2V0RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZVNldEVsZW1lbnQuaWRsCmluZGV4IDMyNTBiOTQ5MGVkYjhiYjE4ZjQ3Yjk4MmNiYjdm
NmI0NDA4ZDMxMjUuLjY5NDIxNzNlNzQ0MDkyNDljMjA1YjBiM2M1MjYyOWUyYWNjNDY5NGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbApAQCAtMzMsNyAr
MzMsNyBAQCBpbnRlcmZhY2UgSFRNTEZyYW1lU2V0RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKIAog
ICAgIC8vIE5vbi1zdGFuZGFyZCBuYW1lZCBnZXR0ZXIKICAgICAvLyBGSVhNRTogVGhpcyBpcyBu
b3QgaW4gdGhlIHN0YW5kYXJkLCBjYW4gd2UgcmVtb3ZlIHRoaXM/Ci0gICAgZ2V0dGVyIERPTVdp
bmRvdyAoRE9NU3RyaW5nIG5hbWUpOworICAgIGdldHRlciBXaW5kb3dQcm94eSAoRE9NU3RyaW5n
IG5hbWUpOwogfTsKIAogSFRNTEZyYW1lU2V0RWxlbWVudCBpbXBsZW1lbnRzIFdpbmRvd0V2ZW50
SGFuZGxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVt
ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCmluZGV4
IDNlM2JkY2MxMTA0MTg4YTc4ZGRiYThlMjc2NDM0ZTRlNjZlNjkwYmMuLmMxNjM5MjJlZTQyMGU3
NWMwNGRkMTI4MTk0YjUzNWYzODNjOTVkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQuaWRsCkBAIC0zOCw3ICszOCw3IEBAIGludGVyZmFjZSBIVE1MSUZyYW1lRWxl
bWVudCA6IEhUTUxFbGVtZW50IHsKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9u
bHkgYXR0cmlidXRlIERvY3VtZW50IGNvbnRlbnREb2N1bWVudDsKIAotICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01XaW5kb3cgY29udGVudFdpbmRvdzsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
V2luZG93UHJveHkgY29udGVudFdpbmRvdzsKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZSwg
TWF5VGhyb3dFeGNlcHRpb25dIERvY3VtZW50IGdldFNWR0RvY3VtZW50KCk7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggZDE1MTI3M2EzNTk0OTNlMWI2YzUzOGYw
ZjNkOTMxNjg4MDM2NGExNy4uODVjMTNmZjdmMDIwYWE5YWMyYzZlNGRmMTcyNDZkNDQxMTljNWE1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1
bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggYjAyM2E0ZTJlZjI4NDMw
MzdiZTVkMDhiZjJhNGZlMzgzMWQ1ZmQ4Zi4uM2UyYTkxNjZmMmM4MDFhZTU1NjYzYmNjYjFiNDkw
YWUwOWZhZjFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTQ4LDcgKzE0OCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIGNsYXNzIFBvc3RNZXNzYWdlVGltZXIg
OiBwdWJsaWMgVGltZXJCYXNlIHsKIHB1YmxpYzoKLSAgICBQb3N0TWVzc2FnZVRpbWVyKERPTVdp
bmRvdyYgd2luZG93LCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luLCBET01XaW5kb3cmIHNvdXJjZSwgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiYmIHRhcmdldE9yaWdpbiwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFja1RyYWNl
KQorICAgIFBvc3RNZXNzYWdlVGltZXIoRE9NV2luZG93JiB3aW5kb3csIE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiBzb3VyY2UsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0YXJnZXRPcmln
aW4sIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3RhY2tUcmFjZSkKICAgICAgICAgOiBtX3dp
bmRvdyh3aW5kb3cpCiAgICAgICAgICwgbV9tZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpCiAgICAg
ICAgICwgbV9vcmlnaW4oc291cmNlT3JpZ2luKQpAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoK
IAogICAgIFJlZjxNZXNzYWdlRXZlbnQ+IGV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCiAgICAgewotICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoTWVzc2Fn
ZVBvcnQ6OmVudGFuZ2xlUG9ydHMoY29udGV4dCwgV1RGTW92ZShtX21lc3NhZ2UudHJhbnNmZXJy
ZWRQb3J0cykpLCBtX21lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBtX29yaWdpbiwg
eyB9LCBNZXNzYWdlRXZlbnRTb3VyY2UoUmVmUHRyPERPTVdpbmRvdz4oV1RGTW92ZShtX3NvdXJj
ZSkpKSk7CisgICAgICAgIHJldHVybiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShNZXNzYWdlUG9ydDo6
ZW50YW5nbGVQb3J0cyhjb250ZXh0LCBXVEZNb3ZlKG1fbWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRz
KSksIG1fbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCksIG1fb3JpZ2luLCB7IH0sIG1f
c291cmNlID8gc3RkOjptYWtlX29wdGlvbmFsKE1lc3NhZ2VFdmVudFNvdXJjZShXVEZNb3ZlKG1f
c291cmNlKSkpIDogc3RkOjpudWxsb3B0KTsKICAgICB9CiAKICAgICBTZWN1cml0eU9yaWdpbiog
dGFyZ2V0T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRPcmlnaW4uZ2V0KCk7IH0KQEAg
LTE4MCw3ICsxODAsNyBAQCBwcml2YXRlOgogICAgIFJlZjxET01XaW5kb3c+IG1fd2luZG93Owog
ICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1fbWVzc2FnZTsKICAgICBTdHJpbmcgbV9vcmln
aW47Ci0gICAgUmVmPERPTVdpbmRvdz4gbV9zb3VyY2U7CisgICAgUmVmUHRyPFdpbmRvd1Byb3h5
PiBtX3NvdXJjZTsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fdGFyZ2V0T3JpZ2luOwog
ICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IG1fc3RhY2tUcmFjZTsKICAgICBSZWZQdHI8VXNl
ckdlc3R1cmVUb2tlbj4gbV91c2VyR2VzdHVyZVRvRm9yd2FyZDsKQEAgLTk2MCw3ICs5NjAsOCBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgRE9NV2luZG93JiBpbmN1bQogICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1l
c3NhZ2UgeyBtZXNzYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZGlzZW50YW5nbGVkUG9y
dHMucmVsZWFzZVJldHVyblZhbHVlKCkgfTsKIAogICAgIC8vIFNjaGVkdWxlIHRoZSBtZXNzYWdl
LgotICAgIGF1dG8qIHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGltZXIoKnRoaXMsIFdURk1vdmUo
bWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgaW5jdW1iZW50V2luZG93LCBXVEZNb3ZlKHRhcmdldCks
IFdURk1vdmUoc3RhY2tUcmFjZSkpOworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gaW5jdW1iZW50
V2luZG93UHJveHkgPSBpbmN1bWJlbnRXaW5kb3cuZnJhbWUoKSA/ICZpbmN1bWJlbnRXaW5kb3cu
ZnJhbWUoKS0+d2luZG93UHJveHkoKSA6IG51bGxwdHI7CisgICAgYXV0byogdGltZXIgPSBuZXcg
UG9zdE1lc3NhZ2VUaW1lcigqdGhpcywgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luLCBX
VEZNb3ZlKGluY3VtYmVudFdpbmRvd1Byb3h5KSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHN0
YWNrVHJhY2UpKTsKICAgICB0aW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CiAKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFBvc3RNZXNzYWdlKCptX2ZyYW1lLCAqdGltZXIsIHN0YXRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggOTE3NGFmZDUzMjE2
YzExMmM0YjVlMGQ1NzU4N2M4NmQxZmM5YzVhMS4uN2M0OWEyMTdmMDJhNjg1NTQ3MGRiMzE3N2I4
ZjU5MzU0MzhmNTY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAg
LTUwOCw3ICs1MDgsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1dEV2
ZW50Rm9yKEZyYW1lKiBpbm5lckZyYW1lLCBjb25zdCBEcmFnRGF0YQogICAgIFN0cmluZyB0ZXh0
ID0gbV9wYWdlLmRyYWdDYXJldENvbnRyb2xsZXIoKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgp
ID8gZW1wdHlTdHJpbmcoKSA6IGRyYWdEYXRhLmFzUGxhaW5UZXh0KCk7CiAgICAgRWxlbWVudCog
dGFyZ2V0ID0gaW5uZXJGcmFtZS0+ZWRpdG9yKCkuZmluZEV2ZW50VGFyZ2V0RnJvbShtX3BhZ2Uu
ZHJhZ0NhcmV0Q29udHJvbGxlcigpLmNhcmV0UG9zaXRpb24oKSk7CiAgICAgLy8gRklYTUU6IFdo
YXQgZ3VhcmFudGVlcyB0YXJnZXQgaXMgbm90IG51bGw/Ci0gICAgYXV0byBldmVudCA9IFRleHRF
dmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwg
dGV4dCk7CisgICAgYXV0byBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZy
YW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCB0ZXh0KTsKICAgICB0YXJnZXQtPmRpc3Bh
dGNoRXZlbnQoZXZlbnQpOwogICAgIHJldHVybiAhZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA4N2QxMjc3NGNjNmYzNGFl
MDcwMTAwZDE5ZWViNzY1NjVmMjUwNzlkLi43ZDJjOTNhM2MwZjk4MWY4MDU5ZWE4YjdmMzg2YmZh
NmZlMGMwMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zODAyLDcg
KzM4MDIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVGV4dElucHV0RXZlbnQoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBFdmVudCogdW5kZXJseWluZ0V2ZQogICAgIGlmIChGcmFtZVZpZXcqIHZp
ZXcgPSBtX2ZyYW1lLnZpZXcoKSkKICAgICAgICAgdmlldy0+ZGlzYWJsZUxheWVyRmx1c2hUaHJv
dHRsaW5nVGVtcG9yYXJpbHlGb3JJbnRlcmFjdGlvbigpOwogCi0gICAgUmVmPFRleHRFdmVudD4g
ZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygp
LCB0ZXh0LCBpbnB1dFR5cGUpOworICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50
OjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCB0ZXh0LCBpbnB1dFR5
cGUpOwogICAgIGV2ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQodW5kZXJseWluZ0V2ZW50KTsKIAog
ICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4
IGE4NDI2NWFhNzkzNmMzNDg5MmNjOWUwNzFhOTkwYjlhZDFlNTExNjguLjgyODRhNjUzMWRhM2Fh
MDFkMGZmYmNlZGIwODU4MTE3MjBiNjZiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0yMTIs
NiArMjEyLDcgQEAgUmVmPEZyYW1lPiBGcmFtZTo6Y3JlYXRlKFBhZ2UqIHBhZ2UsIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFtZUwKIAogRnJhbWU6On5GcmFtZSgpCiB7
CisgICAgd2luZG93UHJveHkoKS5kZXN0cm95QWxsSlNXaW5kb3dQcm94aWVzKCk7CiAgICAgc2V0
VmlldyhudWxscHRyKTsKICAgICBsb2FkZXIoKS5jYW5jZWxBbmRDbGVhcigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3cuY3BwCmluZGV4IDdiMDljODE4
N2M0NjQwMDY3MDZmYzNlY2E0NzdiNjk3MDM2NWJhMjIuLmE5ZDBhYmJlOGI1NTIxNTZiOTU3YTRk
MTQxNjQ1MzRiMjJkYTAzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01ET01XaW5kb3cuY3BwCkBAIC02NCw2ICs2NCwyMiBAQCBXZWJLaXRET01ET01XaW5kb3cqIGtp
dChXZWJDb3JlOjpET01XaW5kb3cqIG9iaikKICAgICByZXR1cm4gd3JhcERPTVdpbmRvdyhvYmop
OwogfQogCitXZWJLaXRET01ET01XaW5kb3cqIGtpdChXZWJDb3JlOjpXaW5kb3dQcm94eSogd2lu
ZG93UHJveHkpCit7CisgICAgaWYgKCF3aW5kb3dQcm94eSB8fCAhaXM8RE9NV2luZG93Pih3aW5k
b3dQcm94eS0+d2luZG93KCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBraXQoZG93bmNhc3Q8RE9NV2luZG93Pih3aW5kb3dQcm94eS0+d2luZG93KCkpKTsKK30KKwor
V2ViQ29yZTo6V2luZG93UHJveHkqIHRvV2luZG93UHJveHkoV2ViS2l0RE9NRE9NV2luZG93KiB2
aWV3KQoreworICAgIGF1dG8qIHdpbmRvdyA9IGNvcmUodmlldyk7CisgICAgaWYgKCF3aW5kb3cg
fHwgIXdpbmRvdy0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
ICZ3aW5kb3ctPmZyYW1lKCktPndpbmRvd1Byb3h5KCk7Cit9CisKIFdlYkNvcmU6OkRPTVdpbmRv
dyogY29yZShXZWJLaXRET01ET01XaW5kb3cqIHJlcXVlc3QpCiB7CiAgICAgcmV0dXJuIHJlcXVl
c3QgPyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpET01XaW5kb3cqPihXRUJLSVRfRE9NX09CSkVDVChy
ZXF1ZXN0KS0+Y29yZU9iamVjdCkgOiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdpbmRvd1ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01ET01XaW5kb3dQcml2YXRlLmgKaW5kZXggZTMxZDIyNzViOGI4MWNhZjgwZTIw
MWU2ZGQ2YjFhZTk2MmNjZmY5Mi4uNjY4NGVjNjc4OGVkZWZiMGU4NmQ1ZGQxNTQyNjhlNmZkMzVm
NjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdpbmRvd1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NV2lu
ZG93UHJpdmF0ZS5oCkBAIC0yMSwxMiArMjEsMTUgQEAKICNkZWZpbmUgV2ViS2l0RE9NRE9NV2lu
ZG93UHJpdmF0ZV9oCiAKICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdpbmRvdy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvV2luZG93UHJveHkuaD4KICNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NRE9N
V2luZG93Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogV2ViS2l0RE9NRE9NV2luZG93KiB3cmFw
RE9NV2luZG93KFdlYkNvcmU6OkRPTVdpbmRvdyopOwogV2ViS2l0RE9NRE9NV2luZG93KiBraXQo
V2ViQ29yZTo6RE9NV2luZG93Kik7CitXZWJLaXRET01ET01XaW5kb3cqIGtpdChXZWJDb3JlOjpX
aW5kb3dQcm94eSopOwogV2ViQ29yZTo6RE9NV2luZG93KiBjb3JlKFdlYktpdERPTURPTVdpbmRv
dyopOworV2ViQ29yZTo6V2luZG93UHJveHkqIHRvV2luZG93UHJveHkoV2ViS2l0RE9NRE9NV2lu
ZG93Kik7CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8qIFdlYktpdERPTURPTVdp
bmRvd1ByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxGcmFtZUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUhUTUxGcmFtZUVsZW1lbnQuY3BwCmluZGV4IGMxNWY2YTQ4NjRmNzgzZWMwNzM2YjRjYTM3
OTZjNmRkNjZiMzc2MmEuLjViNjcxNTIzOGM2OTM5YWE3Y2Q5MDc2YzI1Yjk5MjUxYzZkMTU1NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01IVE1MRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEZyYW1l
RWxlbWVudC5jcHAKQEAgLTQ5Miw4ICs0OTIsNyBAQCBXZWJLaXRET01ET01XaW5kb3cqIHdlYmtp
dF9kb21faHRtbF9mcmFtZV9lbGVtZW50X2dldF9jb250ZW50X3dpbmRvdyhXZWJLaXRET01IVAog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfRlJBTUVfRUxFTUVOVChzZWxmKSwgMCk7CiAg
ICAgV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6RE9NV2luZG93PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQ
dHIoaXRlbS0+Y29udGVudFdpbmRvdygpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVj
dFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0KGl0ZW0tPmNvbnRlbnRXaW5k
b3coKSk7CiB9CiAKIGdsb25nIHdlYmtpdF9kb21faHRtbF9mcmFtZV9lbGVtZW50X2dldF93aWR0
aChXZWJLaXRET01IVE1MRnJhbWVFbGVtZW50KiBzZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUtleWJv
YXJkRXZlbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTUtleWJvYXJkRXZlbnQuY3BwCmluZGV4IDQxZmNjOTc4MzQzZDQy
MzhkYzZiNTFhNzA0Mzk4YWY3M2FiYzgyZDAuLjdkYTMyNjNmMGJlMzJhNTE2YjBjOWMzYWFmZjE4
NDgwMzM1MTIwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01LZXlib2FyZEV2ZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
S2V5Ym9hcmRFdmVudC5jcHAKQEAgLTIwMiw5ICsyMDIsOCBAQCB2b2lkIHdlYmtpdF9kb21fa2V5
Ym9hcmRfZXZlbnRfaW5pdF9rZXlib2FyZF9ldmVudChXZWJLaXRET01LZXlib2FyZEV2ZW50KiBz
ZWxmLAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoa2V5SWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6
S2V5Ym9hcmRFdmVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmlu
ZyBjb252ZXJ0ZWRUeXBlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHR5cGUpOwotICAgIFdlYkNv
cmU6OkRPTVdpbmRvdyogY29udmVydGVkVmlldyA9IFdlYktpdDo6Y29yZSh2aWV3KTsKICAgICBX
VEY6OlN0cmluZyBjb252ZXJ0ZWRLZXlJZGVudGlmaWVyID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4
KGtleUlkZW50aWZpZXIpOwotICAgIGl0ZW0tPmluaXRLZXlib2FyZEV2ZW50KGNvbnZlcnRlZFR5
cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29udmVydGVkVmlldywgY29udmVydGVkS2V5SWRl
bnRpZmllciwgbG9jYXRpb24sIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGFs
dEdyYXBoS2V5KTsKKyAgICBpdGVtLT5pbml0S2V5Ym9hcmRFdmVudChjb252ZXJ0ZWRUeXBlLCBj
YW5CdWJibGUsIGNhbmNlbGFibGUsIFdlYktpdDo6dG9XaW5kb3dQcm94eSh2aWV3KSwgY29udmVy
dGVkS2V5SWRlbnRpZmllciwgbG9jYXRpb24sIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1l
dGFLZXksIGFsdEdyYXBoS2V5KTsKIH0KIAogZ2NoYXIqIHdlYmtpdF9kb21fa2V5Ym9hcmRfZXZl
bnRfZ2V0X2tleV9pZGVudGlmaWVyKFdlYktpdERPTUtleWJvYXJkRXZlbnQqIHNlbGYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NTW91c2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTW91c2VFdmVudC5jcHAKaW5kZXggMDU4
MDBhMzU3ZmFjNjc0ZGI4YzNkMzM2NWUxY2U1YzY5NjViNjcyOC4uMjE3ZTU2NWE0YWI4NjMxZWVk
MmY1MTE1MTExNDZkNmEyMDE4ZWM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1vdXNlRXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01Nb3VzZUV2ZW50LmNwcApAQCAtMzE5LDkgKzMxOSw4IEBAIHZvaWQgd2Via2l0X2Rv
bV9tb3VzZV9ldmVudF9pbml0X21vdXNlX2V2ZW50KFdlYktpdERPTU1vdXNlRXZlbnQqIHNlbGYs
IGNvbnN0IGdjCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0VWRU5UX1RBUkdF
VChyZWxhdGVkVGFyZ2V0KSk7CiAgICAgV2ViQ29yZTo6TW91c2VFdmVudCogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRUeXBlID0gV1RGOjpTdHJp
bmc6OmZyb21VVEY4KHR5cGUpOwotICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogY29udmVydGVkVmll
dyA9IFdlYktpdDo6Y29yZSh2aWV3KTsKICAgICBXZWJDb3JlOjpFdmVudFRhcmdldCogY29udmVy
dGVkUmVsYXRlZFRhcmdldCA9IFdlYktpdDo6Y29yZShyZWxhdGVkVGFyZ2V0KTsKLSAgICBpdGVt
LT5pbml0TW91c2VFdmVudChjb252ZXJ0ZWRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNv
bnZlcnRlZFZpZXcsIGRldGFpbCwgc2NyZWVuWCwgc2NyZWVuWSwgY2xpZW50WCwgY2xpZW50WSwg
Y3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSwgYnV0dG9uLCBjb252ZXJ0ZWRSZWxh
dGVkVGFyZ2V0KTsKKyAgICBpdGVtLT5pbml0TW91c2VFdmVudChjb252ZXJ0ZWRUeXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIFdlYktpdDo6dG9XaW5kb3dQcm94eSh2aWV3KSwgZGV0YWlsLCBz
Y3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5LCBidXR0b24sIGNvbnZlcnRlZFJlbGF0ZWRUYXJnZXQpOwogfQogCiBnbG9u
ZyB3ZWJraXRfZG9tX21vdXNlX2V2ZW50X2dldF9zY3JlZW5feChXZWJLaXRET01Nb3VzZUV2ZW50
KiBzZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVVJRXZlbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVVJRXZlbnQuY3BwCmlu
ZGV4IDlhZTAxMjM5YTgyNmNmOGVmMmQ0MDYyMGQ1YzQzNzRiNjAyNDlkZmMuLjg4MmMwZTMyMDcz
NTk0Y2M0MjNlZGQ5OTQ5NzYxNmYyMjhmNjNjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01VSUV2ZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NVUlFdmVudC5jcHAKQEAgLTIwNCw4ICsyMDQsNyBAQCB2b2lkIHdlYmtpdF9k
b21fdWlfZXZlbnRfaW5pdF91aV9ldmVudChXZWJLaXRET01VSUV2ZW50KiBzZWxmLCBjb25zdCBn
Y2hhciogdHlwZQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19ET01fV0lORE9X
KHZpZXcpKTsKICAgICBXZWJDb3JlOjpVSUV2ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFR5cGUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgo
dHlwZSk7Ci0gICAgV2ViQ29yZTo6RE9NV2luZG93KiBjb252ZXJ0ZWRWaWV3ID0gV2ViS2l0Ojpj
b3JlKHZpZXcpOwotICAgIGl0ZW0tPmluaXRVSUV2ZW50KGNvbnZlcnRlZFR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgY29udmVydGVkVmlldywgZGV0YWlsKTsKKyAgICBpdGVtLT5pbml0VUlF
dmVudChjb252ZXJ0ZWRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdlYktpdDo6dG9XaW5k
b3dQcm94eSh2aWV3KSwgZGV0YWlsKTsKIH0KIAogV2ViS2l0RE9NRE9NV2luZG93KiB3ZWJraXRf
ZG9tX3VpX2V2ZW50X2dldF92aWV3KFdlYktpdERPTVVJRXZlbnQqIHNlbGYpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NV2hlZWxFdmVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2hlZWxFdmVudC5jcHAKaW5kZXggMGUxYmE2ZGE1
NWMxYzQzZWVlNjRhZTlhMWVkNWFiNjQ0NGY5ZjRmOS4uZTc3NGNkMTY3ZWNiMzQ5MTE0MTkwOGUz
ODlkZDUwYTI1NDQ2Y2VhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVdoZWVsRXZlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01XaGVlbEV2ZW50LmNwcApAQCAtMTMxLDggKzEzMSw3IEBAIHZvaWQgd2Via2l0X2RvbV93aGVl
bF9ldmVudF9pbml0X3doZWVsX2V2ZW50KFdlYktpdERPTVdoZWVsRXZlbnQqIHNlbGYsIGdsb25n
IHdoCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1dIRUVMX0VWRU5UKHNlbGYp
KTsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfRE9NX1dJTkRPVyh2aWV3KSk7
CiAgICAgV2ViQ29yZTo6V2hlZWxFdmVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAg
ICBXZWJDb3JlOjpET01XaW5kb3cqIGNvbnZlcnRlZFZpZXcgPSBXZWJLaXQ6OmNvcmUodmlldyk7
Ci0gICAgaXRlbS0+aW5pdFdlYktpdFdoZWVsRXZlbnQod2hlZWxEZWx0YVgsIHdoZWVsRGVsdGFZ
LCBjb252ZXJ0ZWRWaWV3LCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJs
S2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KTsKKyAgICBpdGVtLT5pbml0V2ViS2l0V2hl
ZWxFdmVudCh3aGVlbERlbHRhWCwgd2hlZWxEZWx0YVksIFdlYktpdDo6dG9XaW5kb3dQcm94eSh2
aWV3KSwgc2NyZWVuWCwgc2NyZWVuWSwgY2xpZW50WCwgY2xpZW50WSwgY3RybEtleSwgYWx0S2V5
LCBzaGlmdEtleSwgbWV0YUtleSk7CiB9CiAKIGdsb25nIHdlYmtpdF9kb21fd2hlZWxfZXZlbnRf
Z2V0X3doZWVsX2RlbHRhX3goV2ViS2l0RE9NV2hlZWxFdmVudCogc2VsZikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3Lm1tCmluZGV4IDFhNGMyOWIxYjBk
ZGFjODIyNTdiZDZmNGJhNmRjNDRmZjM5MTJlODkuLjE2OWU0YWU1ZmU3NzViOThkMjRjZDQ4MDZh
NWE5YzUwNzhlMTBlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01BYnN0cmFjdFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFi
c3RyYWN0Vmlldy5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dpbmRvd1Byb3h5Lmg+CiAK
ICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkZyYW1lKj4oX2ludGVybmFs
KQogCkBAIC0xMDAsMyArMTAxLDE5IEBAIERPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OkFi
c3RyYWN0RE9NV2luZG93KiB2YWx1ZSkKIAogICAgIHJldHVybiBraXQoZG93bmNhc3Q8V2ViQ29y
ZTo6RE9NV2luZG93Pih2YWx1ZSkpOwogfQorCitET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3Jl
OjpXaW5kb3dQcm94eSogd2luZG93UHJveHkpCit7CisgICAgaWYgKCF3aW5kb3dQcm94eSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBraXQod2luZG93UHJveHktPndpbmRvdygp
KTsKK30KKworV2ViQ29yZTo6V2luZG93UHJveHkqIHRvV2luZG93UHJveHkoRE9NQWJzdHJhY3RW
aWV3ICp2aWV3KQoreworICAgIGF1dG8qIHdpbmRvdyA9IGNvcmUodmlldyk7CisgICAgaWYgKCF3
aW5kb3cgfHwgIXdpbmRvdy0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1
cm4gJndpbmRvdy0+ZnJhbWUoKS0+d2luZG93UHJveHkoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmgKaW5kZXggYzRk
NzMyNWM3ZjI1YmI1Yjg2MTI3NDE2ZTNkOTBkMjgyMTRjMTE5Ny4uMzU5ZjA1ZWI0ZDRhNDNhYTUy
NDIzM2U0YmJmNjYyOGRiMzY4ODZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmgKQEAgLTI4LDExICsyOCwxNCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWJzdHJhY3RET01XaW5kb3c7CiBjbGFzcyBET01X
aW5kb3c7CitjbGFzcyBXaW5kb3dQcm94eTsKIH0KIAogV2ViQ29yZTo6RE9NV2luZG93KiBjb3Jl
KERPTUFic3RyYWN0VmlldyAqKTsKIERPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OkRPTVdp
bmRvdyopOwogRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6QWJzdHJhY3RET01XaW5kb3cq
KTsKK0RPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OldpbmRvd1Byb3h5Kik7CitXZWJDb3Jl
OjpXaW5kb3dQcm94eSogdG9XaW5kb3dQcm94eShET01BYnN0cmFjdFZpZXcgKik7CiAKIEBpbnRl
cmZhY2UgRE9NQWJzdHJhY3RWaWV3IChXZWJLaXRMZWdhY3lJbnRlcm5hbCkKIC0gKHZvaWQpX2Rp
c2Nvbm5lY3RGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01Eb2N1bWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5t
bQppbmRleCA2YzJmMzZkODI0YTk0YTY4MjNiZjJhODFjOWJlZDIyMzRlN2E2OGY0Li5jOTBmOWVm
ZTQyMzlkNTQ0YTFlYzYwZWMyNjU1YTlhODQ4YzZlMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCkBAIC02ODQsNyArNjg0LDcgQEAgLSAoRE9NQ1NTU3R5
bGVEZWNsYXJhdGlvbiAqKWdldENvbXB1dGVkU3R5bGU6KERPTUVsZW1lbnQgKillbGVtZW50IHBz
ZXVkb0VsZW1lbnQKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAg
ICAgaWYgKCFlbGVtZW50KQogICAgICAgICByYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOwotICAg
IFdlYkNvcmU6OkRPTVdpbmRvdyogZHYgPSBJTVBMLT5kZWZhdWx0VmlldygpOworICAgIFdlYkNv
cmU6OkRPTVdpbmRvdyogZHYgPSBJTVBMLT5kb21XaW5kb3coKTsKICAgICBpZiAoIWR2KQogICAg
ICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoZHYtPmdldENvbXB1
dGVkU3R5bGUoKmNvcmUoZWxlbWVudCksIHBzZXVkb0VsZW1lbnQpKSk7CkBAIC02OTgsNyArNjk4
LDcgQEAgLSAoRE9NQ1NTUnVsZUxpc3QgKilnZXRNYXRjaGVkQ1NTUnVsZXM6KERPTUVsZW1lbnQg
KillbGVtZW50IHBzZXVkb0VsZW1lbnQ6KE5TU3QKIC0gKERPTUNTU1J1bGVMaXN0ICopZ2V0TWF0
Y2hlZENTU1J1bGVzOihET01FbGVtZW50ICopZWxlbWVudCBwc2V1ZG9FbGVtZW50OihOU1N0cmlu
ZyAqKXBzZXVkb0VsZW1lbnQgYXV0aG9yT25seTooQk9PTClhdXRob3JPbmx5CiB7CiAgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkRPTVdpbmRv
dyogZHYgPSBJTVBMLT5kZWZhdWx0VmlldygpOworICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogZHYg
PSBJTVBMLT5kb21XaW5kb3coKTsKICAgICBpZiAoIWR2KQogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoZHYtPmdldE1hdGNoZWRDU1NSdWxlcyhjb3JlKGVs
ZW1lbnQpLCBwc2V1ZG9FbGVtZW50LCBhdXRob3JPbmx5KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQppbmRleCBlOWFiMWZlZmU3NGQ5NzM0
ZWFjMjg0MTZiMDllZjIzMTBmY2ZjNzFiLi5iYTJmYmU0ZTE4OWQ2MTM2ZWVkNzM1ZWZmZmU3MTIw
YjdmOTY5NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5
Ym9hcmRFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9h
cmRFdmVudC5tbQpAQCAtMTEwLDI1ICsxMTAsMjUgQEAgLSAoQk9PTClnZXRNb2RpZmllclN0YXRl
OihOU1N0cmluZyAqKWtleUlkZW50aWZpZXJBcmcKIC0gKHZvaWQpaW5pdEtleWJvYXJkRXZlbnQ6
KE5TU3RyaW5nICopdHlwZSBjYW5CdWJibGU6KEJPT0wpY2FuQnViYmxlIGNhbmNlbGFibGU6KEJP
T0wpY2FuY2VsYWJsZSB2aWV3OihET01BYnN0cmFjdFZpZXcgKil2aWV3IGtleUlkZW50aWZpZXI6
KE5TU3RyaW5nICopaW5LZXlJZGVudGlmaWVyIGxvY2F0aW9uOih1bnNpZ25lZClpbkxvY2F0aW9u
IGN0cmxLZXk6KEJPT0wpaW5DdHJsS2V5IGFsdEtleTooQk9PTClpbkFsdEtleSBzaGlmdEtleToo
Qk9PTClpblNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wpaW5NZXRhS2V5IGFsdEdyYXBoS2V5OihCT09M
KWluQWx0R3JhcGhLZXkKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxh
YmxlLCBjb3JlKHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluTG9jYXRpb24sIGluQ3RybEtleSwg
aW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwgaW5BbHRHcmFwaEtleSk7CisgICAgSU1Q
TC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRv
d1Byb3h5KHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluTG9jYXRpb24sIGluQ3RybEtleSwgaW5B
bHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwgaW5BbHRHcmFwaEtleSk7CiB9CiAKIC0gKHZv
aWQpaW5pdEtleWJvYXJkRXZlbnQ6KE5TU3RyaW5nICopdHlwZSBjYW5CdWJibGU6KEJPT0wpY2Fu
QnViYmxlIGNhbmNlbGFibGU6KEJPT0wpY2FuY2VsYWJsZSB2aWV3OihET01BYnN0cmFjdFZpZXcg
Kil2aWV3IGtleUlkZW50aWZpZXI6KE5TU3RyaW5nICopaW5LZXlJZGVudGlmaWVyIGxvY2F0aW9u
Oih1bnNpZ25lZClpbkxvY2F0aW9uIGN0cmxLZXk6KEJPT0wpaW5DdHJsS2V5IGFsdEtleTooQk9P
TClpbkFsdEtleSBzaGlmdEtleTooQk9PTClpblNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wpaW5NZXRh
S2V5CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElN
UEwtPmluaXRLZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29yZSh2
aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBpbkxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBp
blNoaWZ0S2V5LCBpbk1ldGFLZXkpOworICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2aWV3KSwgaW5LZXlJZGVudGlm
aWVyLCBpbkxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFL
ZXkpOwogfQogCiAtICh2b2lkKWluaXRLZXlib2FyZEV2ZW50OihOU1N0cmluZyAqKXR5cGUgY2Fu
QnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihCT09MKWNhbmNlbGFibGUgdmlldzoo
RE9NQWJzdHJhY3RWaWV3ICopdmlldyBrZXlJZGVudGlmaWVyOihOU1N0cmluZyAqKWluS2V5SWRl
bnRpZmllciBrZXlMb2NhdGlvbjoodW5zaWduZWQpaW5LZXlMb2NhdGlvbiBjdHJsS2V5OihCT09M
KWluQ3RybEtleSBhbHRLZXk6KEJPT0wpaW5BbHRLZXkgc2hpZnRLZXk6KEJPT0wpaW5TaGlmdEtl
eSBtZXRhS2V5OihCT09MKWluTWV0YUtleSBhbHRHcmFwaEtleTooQk9PTClpbkFsdEdyYXBoS2V5
CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwt
PmluaXRLZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29yZSh2aWV3
KSwgaW5LZXlJZGVudGlmaWVyLCBpbktleUxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBp
blNoaWZ0S2V5LCBpbk1ldGFLZXksIGluQWx0R3JhcGhLZXkpOworICAgIElNUEwtPmluaXRLZXli
b2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2aWV3
KSwgaW5LZXlJZGVudGlmaWVyLCBpbktleUxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBp
blNoaWZ0S2V5LCBpbk1ldGFLZXksIGluQWx0R3JhcGhLZXkpOwogfQogCiAtICh2b2lkKWluaXRL
ZXlib2FyZEV2ZW50OihOU1N0cmluZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBj
YW5jZWxhYmxlOihCT09MKWNhbmNlbGFibGUgdmlldzooRE9NQWJzdHJhY3RWaWV3ICopdmlldyBr
ZXlJZGVudGlmaWVyOihOU1N0cmluZyAqKWluS2V5SWRlbnRpZmllciBrZXlMb2NhdGlvbjoodW5z
aWduZWQpaW5LZXlMb2NhdGlvbiBjdHJsS2V5OihCT09MKWluQ3RybEtleSBhbHRLZXk6KEJPT0wp
aW5BbHRLZXkgc2hpZnRLZXk6KEJPT0wpaW5TaGlmdEtleSBtZXRhS2V5OihCT09MKWluTWV0YUtl
eQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBM
LT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUodmll
dyksIGluS2V5SWRlbnRpZmllciwgaW5LZXlMb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwg
aW5TaGlmdEtleSwgaW5NZXRhS2V5KTsKKyAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBl
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRvV2luZG93UHJveHkodmlldyksIGluS2V5SWRlbnRp
ZmllciwgaW5LZXlMb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5N
ZXRhS2V5KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTU1vdXNlRXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTW91
c2VFdmVudC5tbQppbmRleCA3YzdlMGRkZmYxNDIxNjFlZTQ4ZTY3NzcwMjVlN2Y3MGU4NTNhODEz
Li5lNTE1ZDg5MzVjMTc3ZDQ3MTA5NGE4NGM1Y2ZiOGQ2NGRiMjk0Mzg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTW91c2VFdmVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTW91c2VFdmVudC5tbQpAQCAtMTQ1LDcgKzE0NSw3IEBA
IC0gKHZvaWQpaW5pdE1vdXNlRXZlbnQ6KE5TU3RyaW5nICopdHlwZSBjYW5CdWJibGU6KEJPT0wp
Y2FuQnViYmxlIGNhbmNlbGFibGU6KEJPCiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwogICAgIERPTU5vZGUqIGluUmVsYXRlZFRhcmdldE9iakMgPSBpblJlbGF0ZWRU
YXJnZXQ7CiAgICAgV2ViQ29yZTo6Tm9kZSogaW5SZWxhdGVkVGFyZ2V0Tm9kZSA9IGNvcmUoaW5S
ZWxhdGVkVGFyZ2V0T2JqQyk7Ci0gICAgSU1QTC0+aW5pdE1vdXNlRXZlbnQodHlwZSwgY2FuQnVi
YmxlLCBjYW5jZWxhYmxlLCBjb3JlKHZpZXcpLCBkZXRhaWwsIGluU2NyZWVuWCwgaW5TY3JlZW5Z
LCBpbkNsaWVudFgsIGluQ2xpZW50WSwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwg
aW5NZXRhS2V5LCBpbkJ1dHRvbiwgaW5SZWxhdGVkVGFyZ2V0Tm9kZSk7CisgICAgSU1QTC0+aW5p
dE1vdXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRvd1Byb3h5KHZp
ZXcpLCBkZXRhaWwsIGluU2NyZWVuWCwgaW5TY3JlZW5ZLCBpbkNsaWVudFgsIGluQ2xpZW50WSwg
aW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkJ1dHRvbiwgaW5S
ZWxhdGVkVGFyZ2V0Tm9kZSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NVGV4dEV2ZW50Lm1tCmluZGV4IDI4NjdiYzgwMjM5MTZhN2U2NzgwZmEzZWI3MTIwYzlj
OTFhZDJhNDIuLmRmYTc2MjAyNGI1NjYyMmNlNWIyOTkxZGYzMTJkZmQ1Mzg3MGQwZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbQpAQCAtNTAsNyArNTAs
NyBAQCAtIChOU1N0cmluZyAqKWRhdGEKIC0gKHZvaWQpaW5pdFRleHRFdmVudDooTlNTdHJpbmcg
Kil0eXBlQXJnIGNhbkJ1YmJsZUFyZzooQk9PTCljYW5CdWJibGVBcmcgY2FuY2VsYWJsZUFyZzoo
Qk9PTCljYW5jZWxhYmxlQXJnIHZpZXdBcmc6KERPTUFic3RyYWN0VmlldyAqKXZpZXdBcmcgZGF0
YUFyZzooTlNTdHJpbmcgKilkYXRhQXJnCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmluaXRUZXh0RXZlbnQodHlwZUFyZywgY2FuQnViYmxl
QXJnLCBjYW5jZWxhYmxlQXJnLCBjb3JlKHZpZXdBcmcpLCBkYXRhQXJnKTsKKyAgICBJTVBMLT5p
bml0VGV4dEV2ZW50KHR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywgdG9XaW5k
b3dQcm94eSh2aWV3QXJnKSwgZGF0YUFyZyk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTVVJRXZlbnQubW0KaW5kZXggYTQ2NGRhY2ZiZjUxMjY2YmE5MmU1OTc3MTky
OWQ4NjMxZjJmMTY0MC4uM2RjOTdiMzkzNzg0N2QwYWNiMGUwY2QyZWE5OWM5MWZkMTI2ZjY2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJRXZlbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJRXZlbnQubW0KQEAgLTEwMyw3ICsx
MDMsNyBAQCAtIChpbnQpd2hpY2gKIC0gKHZvaWQpaW5pdFVJRXZlbnQ6KE5TU3RyaW5nICopdHlw
ZSBjYW5CdWJibGU6KEJPT0wpY2FuQnViYmxlIGNhbmNlbGFibGU6KEJPT0wpY2FuY2VsYWJsZSB2
aWV3OihET01BYnN0cmFjdFZpZXcgKilpblZpZXcgZGV0YWlsOihpbnQpaW5EZXRhaWwKIHsKICAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+aW5pdFVJ
RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBjb3JlKGluVmlldyksIGluRGV0YWls
KTsKKyAgICBJTVBMLT5pbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRv
V2luZG93UHJveHkoaW5WaWV3KSwgaW5EZXRhaWwpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NV2hlZWxFdmVudC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01XaGVlbEV2ZW50Lm1tCmluZGV4IDhmMDU2OWNhNmEzZjk1OGM3
NDFmNmQ4ODM1OGZmZmQxNjBiMThhYzguLmRkNGE1N2IwZjMyYjc3YjQzMGI2ZGQ5Y2Q1YjE1MjM0
ZTVhNDM0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01XaGVl
bEV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01XaGVlbEV2ZW50
Lm1tCkBAIC05Niw3ICs5Niw3IEBAIC0gKEJPT0wpaXNIb3Jpem9udGFsCiAtICh2b2lkKWluaXRX
aGVlbEV2ZW50OihpbnQpaW5XaGVlbERlbHRhWCB3aGVlbERlbHRhWTooaW50KWluV2hlZWxEZWx0
YVkgdmlldzooRE9NQWJzdHJhY3RWaWV3ICopdmlldyBzY3JlZW5YOihpbnQpc2NyZWVuWCBzY3Jl
ZW5ZOihpbnQpc2NyZWVuWSBjbGllbnRYOihpbnQpY2xpZW50WCBjbGllbnRZOihpbnQpY2xpZW50
WSBjdHJsS2V5OihCT09MKWN0cmxLZXkgYWx0S2V5OihCT09MKWFsdEtleSBzaGlmdEtleTooQk9P
TClzaGlmdEtleSBtZXRhS2V5OihCT09MKW1ldGFLZXkKIHsKICAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+aW5pdFdlYktpdFdoZWVsRXZlbnQoaW5X
aGVlbERlbHRhWCwgaW5XaGVlbERlbHRhWSwgY29yZSh2aWV3KSwgc2NyZWVuWCwgc2NyZWVuWSwg
Y2xpZW50WCwgY2xpZW50WSwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSk7Cisg
ICAgSU1QTC0+aW5pdFdlYktpdFdoZWVsRXZlbnQoaW5XaGVlbERlbHRhWCwgaW5XaGVlbERlbHRh
WSwgdG9XaW5kb3dQcm94eSh2aWV3KSwgc2NyZWVuWCwgc2NyZWVuWSwgY2xpZW50WCwgY2xpZW50
WSwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSk7CiB9CiAKIEBlbmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2VzLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAppbmRleCAxYjQzZGQ5ZjRjYTEz
NWIyZDFjNGQ0YzQ2OWY4Njg1NTVjNDdlOTY2Li5iMjUyNjFmN2RmY2UxYjdjZjQ3MWE5ZDFmMjNj
YjA4N2IyNTc3YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3Jl
Q2xhc3Nlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMu
Y3BwCkBAIC04MDIsNyArODAyLDcgQEAgSFJFU1VMVCBET01Eb2N1bWVudDo6Z2V0Q29tcHV0ZWRT
dHlsZShfSW5fb3B0XyBJRE9NRWxlbWVudCogZWx0LCBfSW5fIEJTVFIgcHNldWQKICAgICBpZiAo
IWVsZW1lbnQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBXZWJDb3JlOjpET01XaW5k
b3cqIGR2ID0gbV9kb2N1bWVudC0+ZGVmYXVsdFZpZXcoKTsKKyAgICBhdXRvKiBkdiA9IG1fZG9j
dW1lbnQtPmRvbVdpbmRvdygpOwogICAgIFN0cmluZyBwc2V1ZG9FbHRTdHJpbmcocHNldWRvRWx0
KTsKICAgICAKICAgICBpZiAoIWR2KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338901</attachid>
            <date>2018-04-26 11:58:37 -0700</date>
            <delta_ts>2018-04-26 12:10:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185022-20180426115836.patch</filename>
            <type>text/plain</type>
            <size>137998</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNmYmU3ZTk5YzEwNmQx
NzM1Nzc3MGZmMTQxMzkwZjdlODNmNmU2My4uYWM4MDhlYTIzNDlkYzE2MzM0MWFkMmRkY2ZiOTIz
OWJkMjQ0MjQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxOC0wNC0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94eSBp
bnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHVzaW5nIERPTVdpbmRvdyBpbiBhbGwgb2Ygb3Vy
IElETCBmaWxlcyBhbmQgdXNlIFdpbmRvd1Byb3h5IGFzCisgICAgICAgIHBlciB0aGVpciByZXNw
ZWN0aXZlIHNwZWNpZmljYXRpb25zLiBBcyBhIHJlc3VsdCwgdGhlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGFzIGFsc28gdXBkYXRlZCB0byB1c2UgV2luZG93UHJveHkgdHlwZSBpbnN0ZWFkIG9m
IERPTVdpbmRvdy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXaW5kb3dQcm94eTo6d2luZG93UHJveHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9XaW5kb3dQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eTo6
fldpbmRvd1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpkZXN0cm95QWxs
SlNXaW5kb3dQcm94aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpnbG9iYWxP
YmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpXaW5kb3dQcm94eTo6ZnJhbWUgY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKElzQnVpbHRpblR5cGUpOgorICAgICAg
ICAoQ29tcHV0ZUlzQ2FsbGJhY2tJbnRlcmZhY2UpOgorICAgICAgICAoQ29tcHV0ZUlzQ2FsbGJh
Y2tGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChBZGRUb0luY2x1ZGVzRm9ySURMVHlwZSk6CisgICAgICAgIChHZXRCYXNl
SURMVHlwZSk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWVET01Db252ZXJ0TmVlZHNTdGF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RPdmVybG9hZERpc3BhdGNoZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50
KToKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5oOgorICAgICAgICAqIGRvbS9Db21w
b3NpdGlvbkV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmRlZmF1bHRWaWV3IGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudFRvdWNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VG91Y2g6OmNyZWF0ZVRv
dWNoKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRUb3VjaC5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudFRvdWNoLmlkbDoKKyAgICAgICAgKiBkb20vRm9jdXNFdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb2N1c0V2ZW50OjpGb2N1c0V2ZW50KToKKyAgICAgICAgKiBkb20vRm9jdXNFdmVu
dC5oOgorICAgICAgICAqIGRvbS9JbnB1dEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0RXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEV2ZW50OjpJbnB1dEV2
ZW50KToKKyAgICAgICAgKiBkb20vSW5wdXRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2Fy
ZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OktleWJvYXJkRXZlbnQ6OmNoYXJDb2RlIGNvbnN0KToKKyAgICAgICAgKiBkb20vS2V5
Ym9hcmRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmlkbDoKKyAgICAgICAg
KiBkb20vTWVzc2FnZUV2ZW50Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5pZGw6Cisg
ICAgICAgICogZG9tL01vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayk6CisgICAgICAgICogZG9t
L01vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5pZGw6CisgICAgICAgICog
ZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRl
ZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0
ZWRFdmVudDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6ZnJh
bWVWaWV3RnJvbVdpbmRvd1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2
ZW50Ojppbml0Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZl
bnQ6OmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUGFnZUxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpsb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyBj
b25zdCk6CisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50Lmg6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAqIGRvbS9TaW11bGF0ZWRDbGljay5jcHA6CisgICAgICAgICog
ZG9tL1RleHRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3ApOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEV2ZW50OjpUZXh0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50Ojppbml0
VGV4dEV2ZW50KToKKyAgICAgICAgKiBkb20vVGV4dEV2ZW50Lmg6CisgICAgICAgICogZG9tL1Rl
eHRFdmVudC5pZGw6CisgICAgICAgICogZG9tL1RvdWNoRXZlbnQuaWRsOgorICAgICAgICAqIGRv
bS9VSUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVJRXZlbnQ6OlVJRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VUlFdmVudDo6aW5pdFVJRXZlbnQpOgorICAgICAgICAqIGRvbS9VSUV2
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpVSUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VUlFdmVudDo6dmlldyBjb25zdCk6CisgICAgICAgICogZG9tL1VJRXZlbnQuaWRsOgor
ICAgICAgICAqIGRvbS9VSUV2ZW50SW5pdC5oOgorICAgICAgICAqIGRvbS9VSUV2ZW50SW5pdC5p
ZGw6CisgICAgICAgICogZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlVJRXZlbnRXaXRoS2V5U3RhdGU6OlVJRXZlbnRXaXRoS2V5U3RhdGUpOgorICAgICAgICAq
IGRvbS9XaGVlbEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OldoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2ZW50KToKKyAgICAgICAgKiBk
b20vV2hlZWxFdmVudC5oOgorICAgICAgICAqIGRvbS9XaGVlbEV2ZW50LmlkbDoKKyAgICAgICAg
KiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3Rl
QXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRDb21wb3NpdGlvbik6CisgICAgICAgICog
aHRtbC9IVE1MRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50Ojpu
YW1lZEl0ZW0pOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGw6
CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50V2luZG93IGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50
OjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3N0TWVzc2Fn
ZVRpbWVyOjpQb3N0TWVzc2FnZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc3RNZXNzYWdl
VGltZXI6OmV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2Up
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlVGV4dElucHV0RXZlbnQpOgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6fkZyYW1lKToKKyAgICAgICAgVXBkYXRlIEZyYW1lIGRlc3RydWN0
b3IgdG8gZGVzdHJveSBhbGwgaXRzIEpTV2luZG93UHJveGllcyBiZWZvcmUgZG9pbmcgYW55dGhp
bmcgZWxzZS4KKyAgICAgICAgQmVjYXVzZSByZWZpbmcgYSBXaW5kb3dQcm94eSBhY3R1YWxseSBy
ZWZzIGl0cyBmcmFtZSwgaXQgaXMgcG9zc2libGUgdGhhdCB3aGVuIGEgSlMKKyAgICAgICAgb2Jq
ZWN0IGlzIHN3ZXB0LCBpdHMgZGVzdHJveXMgYSBXaW5kb3dQcm94eSwgd2hpY2ggZGVzdHJveXMg
YSBGcmFtZS4gVGhlIEZyYW1lIGRlc3RydWN0b3IKKyAgICAgICAgd291bGQgdGhlbiBjYWxsIEZy
YW1lTG9hZGVyOjpjYW5jZWxBbmRDbGVhcigpIHdoaWNoIHdvdWxkIGVuZCB1cCBjYWxsaW5nIFNj
cmlwdENvbnRyb2xsZXI6OmVuYWJsZUV2YWwoKQorICAgICAgICBhbmQgYWNjZXNzaW5nIEpTV2lu
ZG93UHJveHk6OndpbmRvdygpLiBUaGlzIHdvdWxkIGhpdCBhbiBhc3NlcnRpb24gd2hlbiBkb2lu
ZyB0aGUganNDYXN0KCkgaW4KKyAgICAgICAgSlNDZWxsOjpjbGFzc0luZm8oSlNDOjpWTSYpOgor
ICAgICAgICBBU1NFUlQodm0uaGVhcC5tdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OlN3
ZWVwaW5nIHx8ICF2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKwogMjAxOC0w
NC0yMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1dQRV1bR1RLXSBSZW1vdmUgV2xVbmlxdWVQdHI8d2xfZGlzcGxheT4gZm9vdGd1bgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGYzMDg5NWFiYWY2NzAwMjA3NDJkNGVmYzAzOTAx
OGRhMjc3ZTc2YWYuLjZhZDUyNWU5ODEwZWEwMjY3MmZlMWUwOTM3NTYxMWI4ZjM4NjQwMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0wNC0yNiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94
eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01BYnN0cmFjdFZpZXcubW06CisgICAg
ICAgIChraXQpOgorICAgICAgICAodG9XaW5kb3dQcm94eSk6CisgICAgICAgICogRE9NL0RPTUFi
c3RyYWN0Vmlld0ludGVybmFsLmg6CisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOgorICAg
ICAgICAoLVtET01Eb2N1bWVudCBkZWZhdWx0Vmlld10pOgorICAgICAgICAoLVtET01Eb2N1bWVu
dCBnZXRDb21wdXRlZFN0eWxlOnBzZXVkb0VsZW1lbnQ6XSk6CisgICAgICAgICgtW0RPTURvY3Vt
ZW50IGdldE1hdGNoZWRDU1NSdWxlczpwc2V1ZG9FbGVtZW50OmF1dGhvck9ubHk6XSk6CisgICAg
ICAgICogRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUhUTUxGcmFt
ZUVsZW1lbnQgY29udGVudFdpbmRvd10pOgorICAgICAgICAqIERPTS9ET01IVE1MSUZyYW1lRWxl
bWVudC5tbToKKyAgICAgICAgKC1bRE9NSFRNTElGcmFtZUVsZW1lbnQgY29udGVudFdpbmRvd10p
OgorICAgICAgICAqIERPTS9ET01LZXlib2FyZEV2ZW50Lm1tOgorICAgICAgICAoLVtET01LZXli
b2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5
SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdy
YXBoS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50
OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5
OmFsdEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50
IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmll
cjprZXlMb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdyYXBoS2V5
Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1
YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjprZXlMb2NhdGlvbjpjdHJsS2V5OmFs
dEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAqIERPTS9ET01Nb3VzZUV2ZW50Lm1t
OgorICAgICAgICAoLVtET01Nb3VzZUV2ZW50IGluaXRNb3VzZUV2ZW50OmNhbkJ1YmJsZTpjYW5j
ZWxhYmxlOnZpZXc6ZGV0YWlsOnNjcmVlblg6c2NyZWVuWTpjbGllbnRYOmNsaWVudFk6Y3RybEtl
eTphbHRLZXk6c2hpZnRLZXk6bWV0YUtleTpidXR0b246cmVsYXRlZFRhcmdldDpdKToKKyAgICAg
ICAgKiBET00vRE9NVGV4dEV2ZW50Lm1tOgorICAgICAgICAoLVtET01UZXh0RXZlbnQgaW5pdFRl
eHRFdmVudDpjYW5CdWJibGVBcmc6Y2FuY2VsYWJsZUFyZzp2aWV3QXJnOmRhdGFBcmc6XSk6Cisg
ICAgICAgICogRE9NL0RPTVVJRXZlbnQubW06CisgICAgICAgICgtW0RPTVVJRXZlbnQgdmlld10p
OgorICAgICAgICAoLVtET01VSUV2ZW50IGluaXRVSUV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxl
OnZpZXc6ZGV0YWlsOl0pOgorICAgICAgICAqIERPTS9ET01XaGVlbEV2ZW50Lm1tOgorICAgICAg
ICAoLVtET01XaGVlbEV2ZW50IGluaXRXaGVlbEV2ZW50OndoZWVsRGVsdGFZOnZpZXc6c2NyZWVu
WDpzY3JlZW5ZOmNsaWVudFg6Y2xpZW50WTpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5
Ol0pOgorCiAyMDE4LTA0LTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjMwOTIxLCByMjMwOTIzLCBy
MjMwOTI0LCByMjMwOTMyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGRkZTgwMDhk
YzE4N2YzMDI0OTk1YjJhNGJjN2Q5Y2QwY2E5ZWZjNGIuLmY5YjU5MDBmMTk5ZTU3Yzc0YWJkNDIz
YTkzMzFhZGQ4ZjQ0N2M4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxOC0wNC0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBXaW5kb3dQcm94eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVD
bGFzc2VzLmNwcDoKKyAgICAgICAgKERPTURvY3VtZW50OjpnZXRDb21wdXRlZFN0eWxlKToKKwog
MjAxOC0wNC0yMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzMDkyMSwgcjIzMDkyMywgcjIzMDkyNCwg
cjIzMDkzMiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAzMGY2NDZlYzc4ODYwMDlkMDgwYjdmY2U4NzJmOTBjMzdjMGJjNjZmLi4w
MTE0ZjIwNThmYWJhOWEyZGUwMTI4NTk3MGE2NjBhZDc0OTQ5ZGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzY1LDcgKzIz
NjUsNiBAQAogCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOTU5RTEx
QjhCQzIyQjAwNEQ5Mzg1IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcg
LyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVS
ZXF1ZXN0VHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTgzQjk2ODdCMTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk2
ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLzsgfTsKLQkJ
ODNCOUU3MEIyMDg2QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I5RTcwOTIwODZC
QTI3MDBFNUQ3NTYgLyogSlNET01Db252ZXJ0V2luZG93UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0JCNUM4ODFENUQ2RjQ1MDA1QTcx
RjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVz
Y2VuZGFudHNDb2xsZWN0aW9uLmggKi87IH07CiAJCTgzQzA1QTVCMUE2ODYyMTIwMDdFNURFQSAv
KiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9OwogCQk4M0MxRDQyNTE3OEQ1QUI0
MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0FyY0Ficy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNDMUQ0MTMxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhT
ZWdBcmNBYnMuaCAqLzsgfTsKQEAgLTk4NzcsNyArOTg3Niw2IEBACiAJCTgzQjc0RUYyMUYzRTBC
RDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVw
YWxpdmVSZXF1ZXN0VHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBL
ZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
M0I5Njg3OTE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0I5RTcwOTIwODZCQTI3MDBFNUQ3NTYgLyogSlNE
T01Db252ZXJ0V2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNET01Db252ZXJ0V2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNDMDVBNTgxQTY4NjIxMjAwN0U1REVB
IC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAv
KiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5ODM1LDcgKzE5ODMzLDYgQEAKIAkJCQk3QzhFMzRBQTFF
NEEzMzhFMDA1NENFMjMgLyogSlNET01Db252ZXJ0VmFyaWFkaWMuaCAqLywKIAkJCQk3Q0JBNUJB
NjFGMEI0QkRFMDAzNEQ3NDUgLyogSlNET01Db252ZXJ0V2ViR0wuY3BwICovLAogCQkJCTdDOEUz
NEFCMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5oICovLAotCQkJCTgzQjlF
NzA5MjA4NkJBMjcwMEU1RDc1NiAvKiBKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oICovLAogCQkJ
CTdDOEUzNEFDMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIu
aCAqLywKIAkJCSk7CiAJCQluYW1lID0gQ29udmVyc2lvbnM7CkBAIC0yODQxNiw3ICsyODQxMyw2
IEBACiAJCQkJN0M4RTM0QzQxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFVuaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRDNTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252
ZXJ0VmFyaWFkaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEM2MUU0QTMzQjAwMDU0Q0Uy
MyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODNCOUU3MEIyMDg2
QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QzhFMzRDNzFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0WFBhdGhOU1Jlc29s
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQzlFMEU0RDE2NDE5QzFFMDAzOTJCRTMgLyogSlNE
T01DU1NOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEN0MxMEQyOUE0NjMwMEI5
OTE4RiAvKiBKU0RPTUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
SURMVHlwZXMuaAppbmRleCA1ZmU3N2U4M2YyM2RhMmIxYjQyMGQxZTM5MmRlYTlkYzA3ZmIxYzgw
Li44MDU3ZGZhMTE1ODg4ZDNkYjRhMGYwYmUyNmI0YzY2MmI2OWM3ODdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL0lETFR5cGVzLmgKQEAgLTI3NCw3ICsyNzQsNiBAQCBzdHJ1Y3QgSURMU2NoZWR1bGVk
QWN0aW9uIDogSURMVHlwZTxzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPj4geyB9Owog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IElE
TFdyYXBwZXI8VD4geyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETEV2ZW50TGlz
dGVuZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJ
RExYUGF0aE5TUmVzb2x2ZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKLXN0cnVjdCBJRExXaW5kb3dQ
cm94eSA6IElETFdyYXBwZXI8SlNXaW5kb3dQcm94eT4geyB9OwogCiBzdHJ1Y3QgSURMSURCS2V5
IDogSURMV3JhcHBlcjxJREJLZXk+IHsgfTsKIHN0cnVjdCBJRExJREJLZXlEYXRhIDogSURMV3Jh
cHBlcjxJREJLZXlEYXRhPiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0V2luZG93UHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODJjMWZmNDgxOTJkZTVjMjA4MmRiN2IzZGUwYWMzYmFhNGIzNGM3Yy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIK
LSNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCi0jaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTQ29udmVydGVy
PElETFdpbmRvd1Byb3h5PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUg
PSB0cnVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9IGZh
bHNlOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgVSYmIHZhbHVlKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsKLSAgICB9Ci19
OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCmlu
ZGV4IDE4ODY3MWU0OWIxZjE0MzE1Yzk4Njc3MWQwN2JhNmY4M2UxYWJkMjcuLmE0YjE4MDVjNjUy
ZTIzMjBiZmQ3OWEwOTc5Mjc5YWNjMDg3YjY5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2luZG93UHJveHkuY3BwCkBAIC0xMTksNiArMTE5LDEyIEBAIHZvaWQgSlNXaW5k
b3dQcm94eTo6c2V0V2luZG93KEFic3RyYWN0RE9NV2luZG93JiBkb21XaW5kb3cpCiAgICAgQVNT
RVJUKHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkgPT0gd2luZG93KTsKIH0KIAorV2luZG93UHJv
eHkqIEpTV2luZG93UHJveHk6OndpbmRvd1Byb3h5KCkgY29uc3QKK3sKKyAgICBhdXRvJiB3aW5k
b3cgPSB3cmFwcGVkKCk7CisgICAgcmV0dXJuIHdpbmRvdy5mcmFtZSgpID8gJndpbmRvdy5mcmFt
ZSgpLT53aW5kb3dQcm94eSgpIDogbnVsbHB0cjsKK30KKwogdm9pZCBKU1dpbmRvd1Byb3h5Ojph
dHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKIHsKICAgICBhdXRvKiBnbG9i
YWxPYmplY3QgPSB3aW5kb3coKTsKQEAgLTEzOCwxMiArMTQ0LDYgQEAgQWJzdHJhY3RET01XaW5k
b3cmIEpTV2luZG93UHJveHk6OndyYXBwZWQoKSBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8SlNE
T01XaW5kb3dCYXNlKj4od2luZG93KS0+d3JhcHBlZCgpOwogfQogCi1BYnN0cmFjdERPTVdpbmRv
dyogSlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKFZNJiB2bSwgSlNPYmplY3QqIHZhbHVlKQotewot
ICAgIGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTV2luZG93UHJveHkqPih2bSwgdmFs
dWUpOwotICAgIHJldHVybiB3cmFwcGVyID8gJndyYXBwZXItPndyYXBwZWQoKSA6IG51bGxwdHI7
Ci19Ci0KIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBXaW5kb3dQcm94eSYgd2luZG93
UHJveHkpCiB7CiAgICAgcmV0dXJuICZ3aW5kb3dQcm94eS5qc1dpbmRvd1Byb3h5KGN1cnJlbnRX
b3JsZCgqc3RhdGUpKTsKQEAgLTE1NCw0ICsxNTQsMTQgQEAgSlNXaW5kb3dQcm94eSYgdG9KU1dp
bmRvd1Byb3h5KFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKICAgICByZXR1cm4gd2luZG93UHJveHkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiB9CiAKK1dp
bmRvd1Byb3h5KiBKU1dpbmRvd1Byb3h5Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVl
KQoreworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBpZiAob2JqZWN0
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNX
aW5kb3dQcm94eSo+KG9iamVjdCktPndpbmRvd1Byb3h5KCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2luZG93UHJveHkuaAppbmRleCAxODVhNTQ1NzhiZjgxNzdjZmNhMTc1YzZlNGIxMWY0NzQ4
YTQwOTQ4Li4zNjI0MGQ4NjZlOGYxMGRhZDYyMWRiZGQ5OWVmYjE3ZTE4MWJkZDk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oCkBAIC0yOCw3ICsyOCw5IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTUHJveHkuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zOSw3
ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJhY3RET01XaW5kb3c7
CiBjbGFzcyBBYnN0cmFjdEZyYW1lOwotY2xhc3MgV2luZG93UHJveHk7CiAKIGNsYXNzIEpTV2lu
ZG93UHJveHkgZmluYWwgOiBwdWJsaWMgSlNDOjpKU1Byb3h5IHsKICAgICB1c2luZyBCYXNlID0g
SlNDOjpKU1Byb3h5OwpAQCAtNTMsOCArNTQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2lu
ZG93KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgc2V0V2luZG93KEFi
c3RyYWN0RE9NV2luZG93Jik7CiAKKyAgICBXaW5kb3dQcm94eSogd2luZG93UHJveHkoKSBjb25z
dDsKKwogICAgIEFic3RyYWN0RE9NV2luZG93JiB3cmFwcGVkKCkgY29uc3Q7Ci0gICAgc3RhdGlj
IFdFQkNPUkVfRVhQT1JUIEFic3RyYWN0RE9NV2luZG93KiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpT
Qzo6SlNPYmplY3QqKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgV2luZG93UHJveHkqIHRv
V3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKIAogICAgIERPTVdyYXBwZXJXb3JsZCYg
d29ybGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CiAKQEAgLTcxLDEwICs3NCwxNiBAQCBwcml2YXRl
OgogLy8gSXQgaXMsIGhvd2V2ZXIsIHN0cm9uZ2x5IG93bmVkIGJ5IEFic3RyYWN0RnJhbWUgdmlh
IGl0cyBXaW5kb3dQcm94eSwgc28gd2UgY2FuIGdldCBvbmUgZnJvbSBhIFdpbmRvd1Byb3h5Lgog
V0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBXaW5kb3dQ
cm94eSYpOwogaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
V2luZG93UHJveHkqIHdpbmRvd1Byb3h5KSB7IHJldHVybiB3aW5kb3dQcm94eSA/IHRvSlMoc3Rh
dGUsICp3aW5kb3dQcm94eSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1pbmxpbmUgSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBSZWZQdHI8V2luZG93UHJveHk+JiB3
aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwgd2luZG93UHJveHkuZ2V0KCkpOyB9Citp
bmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamVjdCosIFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwg
d2luZG93UHJveHkpOyB9CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXaW5kb3dQcm94eSogd2lu
ZG93UHJveHkpIHsgcmV0dXJuIHdpbmRvd1Byb3h5ID8gdG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0
LCAqd2luZG93UHJveHkpIDogSlNDOjpqc051bGwoKTsgfQogCiBKU1dpbmRvd1Byb3h5JiB0b0pT
V2luZG93UHJveHkoV2luZG93UHJveHkmLCBET01XcmFwcGVyV29ybGQmKTsKIGlubGluZSBKU1dp
bmRvd1Byb3h5KiB0b0pTV2luZG93UHJveHkoV2luZG93UHJveHkqIHdpbmRvd1Byb3h5LCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKSB7IHJldHVybiB3aW5kb3dQcm94eSA/ICZ0b0pTV2luZG93UHJv
eHkoKndpbmRvd1Byb3h5LCB3b3JsZCkgOiBudWxscHRyOyB9CiAKIAordGVtcGxhdGU8PiBzdHJ1
Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFdpbmRvd1Byb3h5PiB7CisgICAgdXNpbmcg
V3JhcHBlckNsYXNzID0gSlNXaW5kb3dQcm94eTsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5U
eXBlID0gV2luZG93UHJveHkqOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwCmluZGV4IDhlOGY1MTM1M2VkMWY3
YTBiNWIzZjkzMDRjZjgxYzhhYWNiNzViNWUuLmFiMjQ1YjI0Nzg0YWQ3NzczODZlYzUzNDhmM2Ey
NjkyNDdlODAxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRv
d1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5j
cHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSlNXaW5kb3dQcm94
eS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgog
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtNTMsMTIgKzU0LDE2IEBAIFdpbmRvd1Byb3h5OjpX
aW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJiBmcmFtZSkKIH0KIAogV2luZG93UHJveHk6On5XaW5k
b3dQcm94eSgpCit7CisgICAgZGVzdHJveUFsbEpTV2luZG93UHJveGllcygpOworfQorCit2b2lk
IFdpbmRvd1Byb3h5OjpkZXN0cm95QWxsSlNXaW5kb3dQcm94aWVzKCkKIHsKICAgICAvLyBJdCdz
IGxpa2VseSB0aGF0IGRlc3Ryb3lpbmcgd2luZG93UHJveGllcyB3aWxsIGNyZWF0ZSBhIGxvdCBv
ZiBnYXJiYWdlLgogICAgIGlmICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIHdoaWxlICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBh
dXRvIGl0ID0gbV9qc1dpbmRvd1Byb3hpZXMuYmVnaW4oKTsKLSAgICAgICAgICAgIGl0LT52YWx1
ZS0+d2luZG93KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CiAgICAgICAgICAgICBkZXN0
cm95SlNXaW5kb3dQcm94eSgqaXQtPmtleSk7CiAgICAgICAgIH0KICAgICAgICAgY29sbGVjdEdh
cmJhZ2VBZnRlcldpbmRvd1Byb3h5RGVzdHJ1Y3Rpb24oKTsKQEAgLTkxLDYgKzk2LDExIEBAIFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU1dpbmRvd1Byb3h5Pj4gV2luZG93UHJveHk6OmpzV2luZG93UHJv
eGllc0FzVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fanNXaW5kb3dQ
cm94aWVzLnZhbHVlcygpKTsKIH0KIAorSlNET01HbG9iYWxPYmplY3QqIFdpbmRvd1Byb3h5Ojpn
bG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICByZXR1cm4ganNXaW5k
b3dQcm94eSh3b3JsZCkud2luZG93KCk7Cit9CisKIEpTV2luZG93UHJveHkmIFdpbmRvd1Byb3h5
OjpjcmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaAppbmRleCA3NzcyMjk4M2IwYTMyMmNkMDY3
ZGZiNTA2MmRhMDc3N2E2OGU2NWY4Li44NDY3MDIwOTA3NWY3MzJmNWVlMTUxMTgyN2Q2ZDhiMDgy
ZWY4ODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmgKQEAgLTIw
LDcgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU1dpbmRvd1Byb3h5Lmgi
CisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApAQCAtMzAsNyArMzAsMTAgQEAg
Y2xhc3MgRGVidWdnZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWJzdHJhY3RE
T01XaW5kb3c7CiBjbGFzcyBBYnN0cmFjdEZyYW1lOworY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7
CitjbGFzcyBKU1dpbmRvd1Byb3h5OwogCiBjbGFzcyBXaW5kb3dQcm94eSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00MCw2ICs0Myw4IEBAIHB1YmxpYzoKICAgICBleHBsaWNp
dCBXaW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJik7CiAgICAgfldpbmRvd1Byb3h5KCk7CiAKKyAg
ICBBYnN0cmFjdEZyYW1lJiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KKwogICAg
IHZvaWQgZGVzdHJveUpTV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICBQcm94
eU1hcDo6VmFsdWVzQ29uc3RJdGVyYXRvclJhbmdlIGpzV2luZG93UHJveGllcygpIGNvbnN0IHsg
cmV0dXJuIG1fanNXaW5kb3dQcm94aWVzLnZhbHVlcygpOyB9CkBAIC02MywxMCArNjgsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAoaXQgIT0gbV9qc1dpbmRvd1Byb3hpZXMuZW5kKCkpID8g
aXQtPnZhbHVlLmdldCgpIDogbnVsbHB0cjsKICAgICB9CiAKLSAgICBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCi0gICAgewotICAgICAgICBy
ZXR1cm4ganNXaW5kb3dQcm94eSh3b3JsZCkud2luZG93KCk7Ci0gICAgfQorICAgIFdFQkNPUkVf
RVhQT1JUIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJik7
CiAKICAgICB2b2lkIGNsZWFySlNXaW5kb3dQcm94aWVzTm90TWF0Y2hpbmdET01XaW5kb3coQWJz
dHJhY3RET01XaW5kb3cqLCBib29sIGdvaW5nSW50b1BhZ2VDYWNoZSk7CiAKQEAgLTgwLDYgKzgy
LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVmKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkZXJlZigpOwogCisgICAgdm9pZCBkZXN0cm95QWxsSlNXaW5kb3dQcm94
aWVzKCk7CisKIHByaXZhdGU6CiAgICAgSlNXaW5kb3dQcm94eSYgY3JlYXRlSlNXaW5kb3dQcm94
eShET01XcmFwcGVyV29ybGQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBKU1dpbmRvd1Byb3h5JiBj
cmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBt
CmluZGV4IDk1MjQyOWEwZTQ5Nzc0YmFkMjJjMWU1OGViYjJlNGVkZGJhZDNiNjMuLjJmY2ZlZTNh
N2FhOGYyMmYyNmViZGRiNmE0ZTI4ZmEwMzhiMmY0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTg5MSw3ICs4OTEsNiBAQCBz
dWIgSXNCdWlsdGluVHlwZQogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5T
UmVzb2x2ZXIiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJhbnkiOwogICAgIHJl
dHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJvYmplY3QiOwotICAgIHJldHVybiAxIGlmICR0eXBl
LT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTEwMDEsNiAr
MTAwMCw3IEBAIHN1YiBDb21wdXRlSXNDYWxsYmFja0ludGVyZmFjZQogICAgIGFzc2VydCgiTm90
IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5s
ZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5
cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsKIAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5u
YW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlw
ZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBc
IiR0eXBlTmFtZVwiIVxuIik7CkBAIC0xMDM4LDYgKzEwMzgsNyBAQCBzdWIgQ29tcHV0ZUlzQ2Fs
bGJhY2tGdW5jdGlvbgogICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUg
IklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5sZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlw
ZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsK
IAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9i
amVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlwZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9U
IGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlTmFtZVwiIVxuIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4
IDYyNmE5ZjBiMmQ2ZjA0M2NmOTJiZGYzMmYyOTYyODkyNjExNmU1ZTQuLjMwYTM3NGMyODI0ZmEy
NjA4MjQyYWEzODcxMDk4NDIwMmI1ZDBlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00MjEsMTMgKzQyMSw2IEBAIHN1
YiBBZGRUb0luY2x1ZGVzRm9ySURMVHlwZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKCR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSIpIHsKLSAgICAgICAgQWRkVG9JbmNsdWRl
cygiV2luZG93UHJveHkuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAg
QWRkVG9JbmNsdWRlcygiSlNXaW5kb3dQcm94eS5oIiwgJGluY2x1ZGVzUmVmLCAkY29uZGl0aW9u
YWwpOwotICAgICAgICBBZGRUb0luY2x1ZGVzKCJKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIiwg
JGluY2x1ZGVzUmVmLCAkY29uZGl0aW9uYWwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7CiAgICAgICAgIEFk
ZFRvSW5jbHVkZXMoIkpTRE9NQ29udmVydFN0cmluZ3MuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRp
dGlvbmFsKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjM5Myw3ICs2Mzg2LDYgQEAgc3ViIEdldEJh
c2VJRExUeXBlCiAgICAgICAgICJKU09OIiA9PiAiSURMSlNPTiIsCiAgICAgICAgICJTY2hlZHVs
ZWRBY3Rpb24iID0+ICJJRExTY2hlZHVsZWRBY3Rpb24iLAogICAgICAgICAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlIiA9PiAiSURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4iLAotICAgICAgICAiV2luZG93UHJveHkiID0+ICJJRExXaW5kb3dQcm94eSIsCiAgICAg
ICAgICJYUGF0aE5TUmVzb2x2ZXIiID0+ICJJRExYUGF0aE5TUmVzb2x2ZXI8WFBhdGhOU1Jlc29s
dmVyPiIsCiAgICAgKTsKIApAQCAtNjU1NCw3ICs2NTQ2LDYgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1
ZURPTUNvbnZlcnROZWVkc1N0YXRlCiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIkpT
T04iOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwot
ICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAgICAgCiAgICAg
cmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGJhNDViYjk4ZjIxYTYzMzkwOWQyYmU4ZTBhMWZl
MmRjNzI2YTM0NWYuLmMwNDY2YzI2NmI3MzdmNmM4ODVkMmFhZmQwNWI1ZjE2ZjY4MmQ1MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCkBAIC01NSw3ICs1NSw2IEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIK
ICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCIKICNpbmNsdWRlICJK
U0RPTVN0cmluZ0xpc3QuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpT
RE9NV2luZG93QmFzZS5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiSlNEb2N1bWVudC5oIgpAQCAtNjk1Nyw3ICs2OTU2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDlCb2QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8g
d2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8RE9NV2luZG93Pj4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwg
IndpbmRvdyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiRE9NV2luZG93Iik7
IH0pOworICAgIGF1dG8gd2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8V2luZG93UHJveHk+
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAwLCAid2luZG93IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhv
ZCIsICJXaW5kb3dQcm94eSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqd2luZG93
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNzAyOSw3
ICs3MDI4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZE92ZXIKICAgICAgICAgICAgIHJldHVybiBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2Qm9keShzdGF0ZSwgY2Fz
dGVkVGhpcywgdGhyb3dTY29wZSk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09i
amVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNUZXN0T2Jq
Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kOEJvZHkoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwotICAgICAg
ICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiAoYXNPYmplY3QoZGlzdGluZ3Vp
c2hpbmdBcmcpLT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkgfHwgYXNPYmplY3QoZGlzdGlu
Z3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU0RPTVdpbmRvdz4odm0pKSkKKyAgICAgICAgaWYgKGRp
c3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcp
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOUJvZHkoc3RhdGUsIGNhc3RlZFRo
aXMsIHRocm93U2NvcGUpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzPEpTQmxvYj4odm0pKQog
ICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDEzQm9keShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggYzgzZWVlZWRi
ZjQxNjNmODMyYmNkMjUzZWMwNTc1Njg0NmVlZDY4NC4uNzFkZGZjNDg5ZWQyZDVkYTI1NmZiNWM0
MzBiOTMyZWJkYzRmODcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMjg2LDcgKzI4Niw3IEBAIGVudW0gVGVzdENvbmZpZGVu
Y2UgeyAiaGlnaCIsICJraW5kYS1sb3ciIH07CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9k
KERPTVN0cmluZ0xpc3Q/IGxpc3RBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChz
ZXF1ZW5jZTxET01TdHJpbmc+PyBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0
aG9kKFRlc3RPYmogb2JqQXJnKTsKLSAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoRE9NV2lu
ZG93IHdpbmRvdyk7CisgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFdpbmRvd1Byb3h5IHdp
bmRvdyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKHNlcXVlbmNlPERPTVN0cmluZz4g
YXJyYXlBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChzZXF1ZW5jZTx1bnNpZ25l
ZCBsb25nPiBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmlu
ZyBzdHJBcmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCmluZGV4IDBl
MzhhNjcxOGNkMWRhZDJlNzkwMjhiODkwMDU2YTZmY2I2NDJjOTAuLjAwN2FmN2Q3MjRmNWMzZTRh
MGEzNjExMjU2NmM0ODJlZDZmZDU5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NpdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25F
dmVudC5jcHAKQEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb21wb3Np
dGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KCkgPSBkZWZhdWx0OwogCi1Db21wb3NpdGlvbkV2
ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRE9NV2luZG93
KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgOiBVSUV2ZW50KHR5cGUsIHRydWUsIHRy
dWUsIHZpZXcsIDApCitDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKKyAgICA6IFVJRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwg
MCkKICAgICAsIG1fZGF0YShkYXRhKQogewogfQpAQCAtNDUsMTIgKzQ1LDEyIEBAIENvbXBvc2l0
aW9uRXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25z
dCBJbml0JiBpbml0aWFsCiAKIENvbXBvc2l0aW9uRXZlbnQ6On5Db21wb3NpdGlvbkV2ZW50KCkg
PSBkZWZhdWx0OwogCi12b2lkIENvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCit2b2lkIENvbXBvc2l0aW9u
RXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcs
IGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxh
YmxlLCB2aWV3LCAwKTsKKyAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIFdURk1vdmUodmlldyksIDApOwogCiAgICAgbV9kYXRhID0gZGF0YTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCmluZGV4IDhmZjAyZWM5Njk3NzhiODg1YTYzMTcwMjRj
OTU3NDc2ZTAyMWIyYTYuLjNiMWM0NmQ2MzVlY2FmNmNkMDkxOTA5OGY1MDhmYzQxZTY0Y2ViY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaApAQCAtMzIsOSArMzIsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbXBvc2l0aW9uRXZlbnQgZmluYWwgOiBwdWJs
aWMgVUlFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0
cmluZyYgZGF0YSkKKyAgICBzdGF0aWMgUmVmPENvbXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBT
dHJpbmcmIGRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21wb3Np
dGlvbkV2ZW50KHR5cGUsIHZpZXcsIGRhdGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ29tcG9zaXRpb25FdmVudCh0eXBlLCBXVEZNb3ZlKHZpZXcpLCBkYXRhKSk7CiAgICAgfQog
CiAgICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbXBvc2l0aW9uRXZlbnQo
KTsKIAotICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBT
dHJpbmcmIGRhdGEpOworICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAKICAgICBTdHJpbmcgZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBDb21wb3NpdGlvbkV2ZW50KCk7Ci0gICAgQ29tcG9zaXRpb25FdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYpOworICAgIENv
bXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8V2luZG93UHJv
eHk+JiYsIGNvbnN0IFN0cmluZyYpOwogICAgIENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJvb2wgaXNDb21w
b3NpdGlvbkV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zaXRpb25FdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRp
b25FdmVudC5pZGwKaW5kZXggZDg3MjQwODgzZTI3ZDNiMzQ1ODUzOWViOTIwZjRkM2YyODcxNjZj
NC4uMjBhYWM3ZWE0NzcwZDU2NTllZDQwOTEwZDdhYTc5NTA4ZTY2MTgzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIHZvaWQg
aW5pdENvbXBvc2l0aW9uRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZp
bmVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY2Fu
QnViYmxlQXJnID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25h
bCBib29sZWFuIGNhbmNlbGFibGVBcmcgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlld0FyZyA9IG51bGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlld0FyZyA9IG51bGwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBET01TdHJpbmcgZGF0YUFyZyA9
ICJ1bmRlZmluZWQiKTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDg2ZjgzZTcy
NjQyM2FjNDU0MzVkMzJiZWYwNDk0ZTk5NDllMDU0OTkuLjc4ZjhiZTI3ZTk0MGU0OWE2MDM0OTAx
OTcyOWUzNTJkNTI5NmE2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDI4MCw2ICs0
MjgwLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnRha2VET01XaW5kb3dGcm9tKERvY3VtZW50KiBkb2N1
bWVudCkKICAgICBBU1NFUlQobV9kb21XaW5kb3ctPmZyYW1lKCkgPT0gbV9mcmFtZSk7CiB9CiAK
K1dpbmRvd1Byb3h5KiBEb2N1bWVudDo6ZGVmYXVsdFZpZXcoKSBjb25zdAoreworICAgIGlmICgh
bV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZtX2ZyYW1lLT53
aW5kb3dQcm94eSgpOworfQorCiBEb2N1bWVudCYgRG9jdW1lbnQ6OmNvbnRleHREb2N1bWVudCgp
IGNvbnN0CiB7CiAgICAgaWYgKG1fY29udGV4dERvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCBhNGZiMDJmOWUxYmNiZDQwMGIwY2M4NjUyYWJkNDA0ZjAxYzQ1OTVmLi44NWEyNTY1MjFi
N2NiNzgxNjRjYTQ4ZjYwMDFjYjY4NWIwNTdhNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
Nzk5LDcgKzc5OSw3IEBAIHB1YmxpYzoKIAogICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29u
c3QgeyByZXR1cm4gbV9kb21XaW5kb3cuZ2V0KCk7IH0KICAgICAvLyBJbiBET00gTGV2ZWwgMiwg
dGhlIERvY3VtZW50J3MgRE9NV2luZG93IGlzIGNhbGxlZCB0aGUgZGVmYXVsdFZpZXcuCi0gICAg
RE9NV2luZG93KiBkZWZhdWx0VmlldygpIGNvbnN0IHsgcmV0dXJuIGRvbVdpbmRvdygpOyB9IAor
ICAgIFdFQkNPUkVfRVhQT1JUIFdpbmRvd1Byb3h5KiBkZWZhdWx0VmlldygpIGNvbnN0OwogCiAg
ICAgRG9jdW1lbnQmIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4
dERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkgeyBtX2NvbnRleHREb2N1bWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZVdlYWtQdHIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXggMmQ1YmFh
ZDhjNjA2NDRkYTg5ZDEwN2ZkZGUxODI4Y2Q4YTQ5ZDgyYi4uMDhmNzJhOTIwMDBkM2FjMjBhNjQ0
YzBlNWJjMzQ4MmI0NzVlZGE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0xMTMsNyAr
MTEzLDcgQEAgdHlwZWRlZiAoCiAgICAgW0NFUmVhY3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJs
ZURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB3cml0ZWxuKERPTVN0cmluZy4uLiB0
ZXh0KTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24uCi0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVdpbmRvdz8gZGVmYXVsdFZpZXc7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1By
b3h5PyBkZWZhdWx0VmlldzsKICAgICBib29sZWFuIGhhc0ZvY3VzKCk7CiAgICAgW0NFUmVhY3Rp
b25zXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlc2lnbk1vZGU7CiAgICAgW0NFUmVhY3Rpb25zXSBi
b29sZWFuIGV4ZWNDb21tYW5kKERPTVN0cmluZyBjb21tYW5kSWQsIG9wdGlvbmFsIGJvb2xlYW4g
c2hvd1VJID0gZmFsc2UsIG9wdGlvbmFsIERPTVN0cmluZz8gdmFsdWUgPSBudWxsKTsgLy8gRklY
TUU6IHZhbHVlIHNob3VsZCBub3QgYmUgbnVsbGFibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRUb3VjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRU
b3VjaC5jcHAKaW5kZXggM2Q5MTIzZDhmNzUzMmNiNGRiNzlhNGExMzM1ZDVmMTcyOGNjNTA5YS4u
NWQxMjZjM2MzMjQ3MTRmMzlmOWY5NmUxNjM2OWMwMTg3ODQ3YTgwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFRvdWNoLmNwcApAQCAtMjgsMjAgKzI4LDI3IEBACiAKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlRvdWNoLmgiCiAjaW5jbHVkZSAiVG91
Y2hMaXN0LmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZWY8VG91Y2g+IERvY3VtZW50VG91Y2g6OmNyZWF0ZVRvdWNoKERvY3VtZW50JiBkb2N1
bWVudCwgRE9NV2luZG93KiB3aW5kb3csIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBpZGVudGlm
aWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQg
cmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKQor
UmVmPFRvdWNoPiBEb2N1bWVudFRvdWNoOjpjcmVhdGVUb3VjaChEb2N1bWVudCYgZG9jdW1lbnQs
IFJlZlB0cjxXaW5kb3dQcm94eT4mJiB3aW5kb3csIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBp
ZGVudGlmaWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5Z
LCBpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZv
cmNlKQogeworICAgIEZyYW1lKiBmcmFtZTsKKyAgICBpZiAod2luZG93ICYmIGlzPEZyYW1lPih3
aW5kb3ctPmZyYW1lKCkpKQorICAgICAgICBmcmFtZSA9ICZkb3duY2FzdDxGcmFtZT4od2luZG93
LT5mcmFtZSgpKTsKKyAgICBlbHNlCisgICAgICAgIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsK
KwogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciBmcm9tIHRoZSBkb2N1bWVudGF0aW9uIGF0
CiAgICAgLy8gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9zYWZhcmkvI2RvY3Vt
ZW50YXRpb24vVXNlckV4cGVyaWVuY2UvUmVmZXJlbmNlL0RvY3VtZW50QWRkaXRpb25zUmVmZXJl
bmNlL0RvY3VtZW50QWRkaXRpb25zL0RvY3VtZW50QWRkaXRpb25zLmh0bWwKICAgICAvLyB3aGVu
IHRoaXMgbWV0aG9kIHNob3VsZCB0aHJvdyBhbmQgbm9yIGlzIGl0IGJ5IGluc3BlY3Rpb24gb2Yg
aU9TIGJlaGF2aW9yLiBJdCB3b3VsZCBiZSBuaWNlIHRvIHZlcmlmeSBhbnkgY2FzZXMgd2hlcmUg
aXQgdGhyb3dzIHVuZGVyIGlPUwogICAgIC8vIGFuZCBpbXBsZW1lbnQgdGhlbSBoZXJlLiBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3ODE5Ci0gICAgcmV0dXJu
IFRvdWNoOjpjcmVhdGUod2luZG93ID8gd2luZG93LT5mcmFtZSgpIDogZG9jdW1lbnQuZnJhbWUo
KSwgdGFyZ2V0LCBpZGVudGlmaWVyLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksIHJh
ZGl1c1gsIHJhZGl1c1ksIHJvdGF0aW9uQW5nbGUsIGZvcmNlKTsKKyAgICByZXR1cm4gVG91Y2g6
OmNyZWF0ZShmcmFtZSwgdGFyZ2V0LCBpZGVudGlmaWVyLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdl
WCwgcGFnZVksIHJhZGl1c1gsIHJhZGl1c1ksIHJvdGF0aW9uQW5nbGUsIGZvcmNlKTsKIH0KIAog
UmVmPFRvdWNoTGlzdD4gRG9jdW1lbnRUb3VjaDo6Y3JlYXRlVG91Y2hMaXN0KERvY3VtZW50Jiwg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmIHRvdWNoZXMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50VG91Y2guaAppbmRleCBlMGRhZjUwNTJjYzk3ODUyYzhhMDRiYmE3M2U1ZjZh
MTE2ZjEwZTUxLi43MmM0ODg4YjQ1YWI0MDBlMjliYzhhZWQ4NmRlNGM1OTAzZWFjMjIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmgKQEAgLTM0LDE1ICszNCwxNSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
RXZlbnRUYXJnZXQ7CiBjbGFzcyBUb3VjaDsKIGNsYXNzIFRvdWNoTGlzdDsKK2NsYXNzIFdpbmRv
d1Byb3h5OwogCiBjbGFzcyBEb2N1bWVudFRvdWNoIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFRvdWNoPiBjcmVhdGVUb3VjaChEb2N1bWVudCYsIERPTVdpbmRvdyosIEV2ZW50VGFyZ2V0Kiwg
aW50IGlkZW50aWZpZXIsIGludCBwYWdlWCwgaW50IHBhZ2VZLCBpbnQgc2NyZWVuWCwgaW50IHNj
cmVlblksIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSwgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxv
YXQgZm9yY2UpOworICAgIHN0YXRpYyBSZWY8VG91Y2g+IGNyZWF0ZVRvdWNoKERvY3VtZW50Jiwg
UmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBFdmVudFRhcmdldCosIGludCBpZGVudGlmaWVyLCBpbnQg
cGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcmFkaXVzWCwg
aW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKTsKICAgICBzdGF0
aWMgUmVmPFRvdWNoTGlzdD4gY3JlYXRlVG91Y2hMaXN0KERvY3VtZW50JiwgVmVjdG9yPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFRvdWNoLmlkbAppbmRleCA3YTI3Mzc0NTg2NTQ5OTFiMTFiNTU2MzA4OWUyMTk1N2NjNGM0ZTRh
Li4wNDg5YTM2YWQ2YjEyNTAzY2RiNDZhZjE0OGNiNTljZmFmZDY3NWJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50VG91Y2guaWRsCkBAIC0yMiw3ICsyMiw3IEBACiAgICAgQ29uZGl0aW9uYWw9
VE9VQ0hfRVZFTlRTCiBdIHBhcnRpYWwgaW50ZXJmYWNlIERvY3VtZW50IHsKICAgICAvLyBGSVhN
RTogVGhpcyBoYXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlIHN0YW5kYXJkIG5vdyB0aGF0IFRvdWNo
IGhhcyBhIGNvbnN0cnVjdG9yLgotICAgIFtOZXdPYmplY3RdIFRvdWNoIGNyZWF0ZVRvdWNoKG9w
dGlvbmFsIERPTVdpbmRvdz8gd2luZG93ID0gbnVsbCwgb3B0aW9uYWwgRXZlbnRUYXJnZXQ/IHRh
cmdldCA9IG51bGwsCisgICAgW05ld09iamVjdF0gVG91Y2ggY3JlYXRlVG91Y2gob3B0aW9uYWwg
V2luZG93UHJveHk/IHdpbmRvdyA9IG51bGwsIG9wdGlvbmFsIEV2ZW50VGFyZ2V0PyB0YXJnZXQg
PSBudWxsLAogICAgICAgICBvcHRpb25hbCBsb25nIGlkZW50aWZpZXIgPSAwLAogICAgICAgICBv
cHRpb25hbCBsb25nIHBhZ2VYID0gMCwgb3B0aW9uYWwgbG9uZyBwYWdlWSA9IDAsIG9wdGlvbmFs
IGxvbmcgc2NyZWVuWCA9IDAsIG9wdGlvbmFsIGxvbmcgc2NyZWVuWSA9IDAsCiAgICAgICAgIG9w
dGlvbmFsIGxvbmcgd2Via2l0UmFkaXVzWCA9IDAsIG9wdGlvbmFsIGxvbmcgd2Via2l0UmFkaXVz
WSA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAKaW5kZXggMTZkOGIzZmYwNzhkMDVhZDkx
ZTJkNjkxNDY3MTkxMjg1NWQ3YzQ4NC4uOTg2ODc3MzI2Y2UzZmFlNGJiMDU5ZTdjMTY0ZDdiYzE4
YWE5ZGZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcApAQCAtNDAsOCArNDAsOCBAQCBi
b29sIEZvY3VzRXZlbnQ6OmlzRm9jdXNFdmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLUZvY3VzRXZlbnQ6OkZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWws
IFJlZlB0cjxFdmVudFRhcmdldD4mJiByZWxhdGVkVGFyZ2V0KQotICAgIDogVUlFdmVudCh0eXBl
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCkKK0ZvY3VzRXZlbnQ6OkZvY3Vz
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2
ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpCisgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKQogICAgICwgbV9yZWxhdGVkVGFy
Z2V0KFdURk1vdmUocmVsYXRlZFRhcmdldCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRm9jdXNFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuaApp
bmRleCAwNjcyNTU3NGMwNmI5MWYyOWZiNGY5NmEwYjFiNTYxMzRmMTk2ODU0Li5jN2E0ZGY4ZTc3
NDMyY2ZlMzY0YTEzNGY4ZGU1MTUxNmEwNTdiODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRm9jdXNFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmgK
QEAgLTM1LDkgKzM1LDkgQEAgY2xhc3MgTm9kZTsKIAogY2xhc3MgRm9jdXNFdmVudCBmaW5hbCA6
IHB1YmxpYyBVSUV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZvY3VzRXZlbnQ+IGNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYm
IHJlbGF0ZWRUYXJnZXQpCisgICAgc3RhdGljIFJlZjxGb2N1c0V2ZW50PiBjcmVhdGUoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYm
IHJlbGF0ZWRUYXJnZXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb2N1
c0V2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCBXVEZNb3Zl
KHJlbGF0ZWRUYXJnZXQpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvY3VzRXZl
bnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIFdU
Rk1vdmUocmVsYXRlZFRhcmdldCkpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPEZvY3VzRXZl
bnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIEZvY3VzRXZlbnQoKSA9IGRlZmF1bHQ7Ci0gICAgRm9jdXNFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdp
bmRvdyosIGludCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmKTsKKyAgICBGb2N1c0V2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQsIFJlZlB0cjxFdmVudFRhcmdldD4mJik7CiAgICAgRm9j
dXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQp
OwogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9JbnB1dEV2ZW50LmNwcAppbmRleCBkNDQ5Mjk0ZmVjNmJjNzk3MGQ2YzQyYzRiOTdh
YjE2MWM0ZjViMWYwLi5jMTdiZjE4ZDg4YTY3NjQ3MmExODcxNjNlN2I0NTE0Zjg0NDAwYTBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuY3BwCkBAIC0yNiwyMCArMjYsMjAgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJJbnB1dEV2ZW50LmgiCiAKLSNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJOb2RlLmgiCisjaW5j
bHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmPElucHV0RXZlbnQ+IElucHV0RXZlbnQ6OmNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIFdlYkNvcmU6OkRPTVdpbmRvdyAqdmlldywgY29uc3Qg
U3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCitS
ZWY8SW5wdXRFdmVudD4gSW5wdXRFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwg
UmVmUHRyPERhdGFUcmFuc2Zlcj4mJiBkYXRhVHJhbnNmZXIsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IElucHV0RXZlbnQoZXZlbnRUeXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJsZSwg
Y2FuY2VsYWJsZSwgdmlldywgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRSYW5n
ZXMsIGRldGFpbCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQoZXZlbnRU
eXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGF0
YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRSYW5nZXMsIGRldGFpbCkpOwogfQogCi1J
bnB1dEV2ZW50OjpJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9N
V2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYg
ZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJh
bmdlcywgaW50IGRldGFpbCkKLSAgICA6IFVJRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIHZpZXcsIGRldGFpbCkKK0lucHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3Qg
U3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCisg
ICAgOiBVSUV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZp
ZXcpLCBkZXRhaWwpCiAgICAgLCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAgLCBtX2RhdGEo
ZGF0YSkKICAgICAsIG1fZGF0YVRyYW5zZmVyKGRhdGFUcmFuc2ZlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRF
dmVudC5oCmluZGV4IGNhZDhkY2U3YjM2MjZkOWEyMjc2MzRiMzU4OTI2YzFmMTI1NDY4MWIuLmQw
NTA3NjM5YzZjODljOTlkNGQzMGExY2U5MzZmOTE2MWI5YzRlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0
RXZlbnQuaApAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IERPTVdpbmRvdzsKIGNsYXNzIERhdGFUcmFuc2ZlcjsKK2NsYXNzIFdpbmRvd1Byb3h5OwogCiBj
bGFzcyBJbnB1dEV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogcHVibGljOgpAQCAtMzks
MTMgKzM5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIGRhdGE7CiAgICAgfTsKIAotICAg
IHN0YXRpYyBSZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJh
bnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2Vz
LCBpbnQgZGV0YWlsKTsKKyAgICBzdGF0aWMgUmVmPElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25z
dCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKICAgICBzdGF0aWMg
UmVmPElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IElu
aXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQodHlwZSwgaW5pdGlh
bGl6ZXIsIGlzVHJ1c3RlZCkpOwogICAgIH0KIAotICAgIElucHV0RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0
cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFy
Z2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKKyAgICBJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEs
IFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+
PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKICAgICBJbnB1dEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJvb2wg
aXNJbnB1dEV2ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0tleWJvYXJkRXZlbnQuY3BwCmluZGV4IDRkYTEwMTc3MjVmZTg5MmNmYThkYWNmMGY1Yjcw
ODFkY2M2Y2ZiZTkuLjRhY2I1ZjRjZWI3NjBlMTcwZjEwN2NlYTM4NjA5ODlmNjcyNjRlYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAKKyNpbmNsdWRlICJE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgog
I2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgpAQCAtOTIsOCArOTMsOCBAQCBzdGF0aWMgaW5saW5l
IEtleWJvYXJkRXZlbnQ6OktleUxvY2F0aW9uQ29kZSBrZXlMb2NhdGlvbkNvZGUoY29uc3QgUGxh
dGZvcm1LZXlibwogCiBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudCgpID0gZGVm
YXVsdDsKIAotaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZv
cm1LZXlib2FyZEV2ZW50JiBrZXksIERPTVdpbmRvdyogdmlldykKLSAgICA6IFVJRXZlbnRXaXRo
S2V5U3RhdGUoZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUoa2V5LnR5cGUoKSksIHRydWUs
IHRydWUsIGtleS50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgdmlldywg
MCwga2V5LmN0cmxLZXkoKSwga2V5LmFsdEtleSgpLCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1ldGFL
ZXkoKSwgZmFsc2UsIGtleS5tb2RpZmllcnMoKS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpNb2Rp
Zmllcjo6Q2Fwc0xvY2tLZXkpKQoraW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQo
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3KQorICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGVGb3JLZXlib2FyZEV2ZW50
VHlwZShrZXkudHlwZSgpKSwgdHJ1ZSwgdHJ1ZSwga2V5LnRpbWVzdGFtcCgpLmFwcHJveGltYXRl
TW9ub3RvbmljVGltZSgpLCB2aWV3LmNvcHlSZWYoKSwgMCwga2V5LmN0cmxLZXkoKSwga2V5LmFs
dEtleSgpLCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1ldGFLZXkoKSwgZmFsc2UsIGtleS5tb2RpZmll
cnMoKS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tLZXkpKQogICAg
ICwgbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtS2V5
Ym9hcmRFdmVudD4oa2V5KSkKICNpZiBFTkFCTEUoS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkKICAg
ICAsIG1fa2V5KGtleS5rZXkoKSkKQEAgLTEwNCw3ICsxMDUsNyBAQCBpbmxpbmUgS2V5Ym9hcmRF
dmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwgRE9N
V2luZG93KgogICAgICwgbV9rZXlJZGVudGlmaWVyKGtleS5rZXlJZGVudGlmaWVyKCkpCiAgICAg
LCBtX2xvY2F0aW9uKGtleUxvY2F0aW9uQ29kZShrZXkpKQogICAgICwgbV9yZXBlYXQoa2V5Lmlz
QXV0b1JlcGVhdCgpKQotICAgICwgbV9pc0NvbXBvc2luZyh2aWV3ICYmIHZpZXctPmZyYW1lKCkg
JiYgdmlldy0+ZnJhbWUoKS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkKKyAgICAsIG1faXND
b21wb3NpbmcodmlldyAmJiBpczxET01XaW5kb3c+KHZpZXctPndpbmRvdygpKSAmJiBkb3duY2Fz
dDxET01XaW5kb3c+KCp2aWV3LT53aW5kb3coKSkuZnJhbWUoKSAmJiBkb3duY2FzdDxET01XaW5k
b3c+KCp2aWV3LT53aW5kb3coKSkuZnJhbWUoKS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkK
ICNpZiBVU0UoQVBQS0lUKQogICAgICwgbV9oYW5kbGVkQnlJbnB1dE1ldGhvZChrZXkuaGFuZGxl
ZEJ5SW5wdXRNZXRob2QoKSkKICAgICAsIG1fa2V5cHJlc3NDb21tYW5kcyhrZXkuY29tbWFuZHMo
KSkKQEAgLTEzMiw5ICsxMzMsOSBAQCBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgSW5pdCYgaQogCiBLZXlib2Fy
ZEV2ZW50Ojp+S2V5Ym9hcmRFdmVudCgpID0gZGVmYXVsdDsKIAotUmVmPEtleWJvYXJkRXZlbnQ+
IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIHBsYXRm
b3JtRXZlbnQsIERPTVdpbmRvdyogdmlldykKK1JlZjxLZXlib2FyZEV2ZW50PiBLZXlib2FyZEV2
ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBwbGF0Zm9ybUV2ZW50LCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBL
ZXlib2FyZEV2ZW50KHBsYXRmb3JtRXZlbnQsIHZpZXcpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBLZXlib2FyZEV2ZW50KHBsYXRmb3JtRXZlbnQsIFdURk1vdmUodmlldykpKTsKIH0KIAog
UmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzKCkKQEAg
LTE0NywxMyArMTQ4LDEzIEBAIFJlZjxLZXlib2FyZEV2ZW50PiBLZXlib2FyZEV2ZW50OjpjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgS2V5Ym9hcmRFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7
CiB9CiAKLXZvaWQgS2V5Ym9hcmRFdmVudDo6aW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cq
IHZpZXcsCit2b2lkIEtleWJvYXJkRXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdp
bmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCB1bnNp
Z25lZCBsb2NhdGlvbiwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwg
Ym9vbCBtZXRhS2V5LCBib29sIGFsdEdyYXBoS2V5KQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0
Y2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJi
bGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAgICBtX2tleUlkZW50aWZpZXIg
PSBrZXlJZGVudGlmaWVyOwogICAgIG1fbG9jYXRpb24gPSBsb2NhdGlvbjsKQEAgLTIyNyw4ICsy
MjgsOSBAQCBpbnQgS2V5Ym9hcmRFdmVudDo6Y2hhckNvZGUoKSBjb25zdAogICAgIC8vIEZpcmVm
b3g6IDAgZm9yIGtleWRvd24va2V5dXAgZXZlbnRzLCBjaGFyYWN0ZXIgY29kZSBmb3Iga2V5cHJl
c3MKICAgICAvLyBXZSBtYXRjaCBGaXJlZm94LCB1bmxlc3MgaW4gYmFja3dhcmQgY29tcGF0aWJp
bGl0eSBtb2RlLCB3aGVyZSB3ZSBhbHdheXMgcmV0dXJuIHRoZSBjaGFyYWN0ZXIgY29kZS4KICAg
ICBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUgPSBmYWxzZTsKLSAgICBpZiAodmlldygp
ICYmIHZpZXcoKS0+ZnJhbWUoKSkKLSAgICAgICAgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9
IHZpZXcoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkubmVlZHNLZXlib2FyZEV2ZW50RGlzYW1i
aWd1YXRpb25RdWlya3MoKTsKKyAgICBhdXRvKiB3aW5kb3cgPSB2aWV3KCkgPyB2aWV3KCktPndp
bmRvdygpIDogbnVsbHB0cjsKKyAgICBpZiAoaXM8RE9NV2luZG93Pih3aW5kb3cpICYmIGRvd25j
YXN0PERPTVdpbmRvdz4oKndpbmRvdykuZnJhbWUoKSkKKyAgICAgICAgYmFja3dhcmRDb21wYXRp
YmlsaXR5TW9kZSA9IGRvd25jYXN0PERPTVdpbmRvdz4oKndpbmRvdykuZnJhbWUoKS0+ZXZlbnRI
YW5kbGVyKCkubmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25RdWlya3MoKTsKIAogICAg
IGlmICghbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudCB8fCAodHlwZSgpICE9IGV2ZW50TmFtZXMo
KS5rZXlwcmVzc0V2ZW50ICYmICFiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKSkKICAgICAgICAg
cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaAppbmRleCA4MjEwMzMwZWFiMDM0
MWY0Y2E1NGNkMjVjNThiOTk1NDZmMGIxNWE5Li4xZDNjYzI0Mzc5OWIxOWE3NDRlZTk3OGExODdl
YWVhZWM4ODA1ZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKQEAgLTQzLDcgKzQz
LDcgQEAgcHVibGljOgogICAgICAgICBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCA9IDB4MDMKICAg
ICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxLZXlib2FyZEV2ZW50PiBjcmVh
dGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxLZXlib2FyZEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAgICBzdGF0aWMgUmVmPEtl
eWJvYXJkRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBzdHJ1Y3QgSW5pdCA6IHB1
YmxpYyBFdmVudE1vZGlmaWVySW5pdCB7CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgfktleWJvYXJkRXZlbnQoKTsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAogICAgICAgICBjb25z
dCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIHVuc2lnbmVkIGxvY2F0aW9uLAogICAgICAgICBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIGJvb2wg
YWx0R3JhcGhLZXkgPSBmYWxzZSk7CiAgICAgCkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIEtleWJvYXJkRXZlbnQoKTsKLSAgICBLZXlib2FyZEV2ZW50KGNvbnN0
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYsIERPTVdpbmRvdyopOworICAgIEtleWJvYXJkRXZlbnQo
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAg
ICBLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0
ZWQpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4gbV91bmRl
cmx5aW5nUGxhdGZvcm1FdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXli
b2FyZEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmlkbAppbmRl
eCA3NTdjMDc3OTNmNWU1ZjFlMTg0MzhmNzhkZDQ0N2U5YTNhMWQ1MTA5Li5jZGU0NTBjMzQzNTMz
NTA5MmExNzdkNmRmNjM2OGJmNjM1MWQ3MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vS2V5Ym9hcmRFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZl
bnQuaWRsCkBAIC01Miw3ICs1Miw3IEBACiAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBub3QgbWF0
Y2ggdGhlIHZlcnNpb24gaW4gdGhlIERPTSBzcGVjLgogICAgIC8vIEZJWE1FOiBVc2luZyAidW5k
ZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KICAgICB2b2lkIGlu
aXRLZXlib2FyZEV2ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9w
dGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2Vs
YWJsZSA9IGZhbHNlLAotICAgICAgICBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBv
cHRpb25hbCBET01TdHJpbmcga2V5SWRlbnRpZmllciA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCB1
bnNpZ25lZCBsb25nIGxvY2F0aW9uID0gMCwKKyAgICAgICAgb3B0aW9uYWwgV2luZG93UHJveHk/
IHZpZXcgPSBudWxsLCBvcHRpb25hbCBET01TdHJpbmcga2V5SWRlbnRpZmllciA9ICJ1bmRlZmlu
ZWQiLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGxvY2F0aW9uID0gMCwKICAgICAgICAgb3B0aW9u
YWwgYm9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFs
c2UsIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBt
ZXRhS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0R3JhcGhLZXkgPSBmYWxzZSk7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggNTE5N2Q1YmFlMWFlMzVhYWIwNGYw
Y2I1MGU3NmU5ZDhmYWExOGI3OS4uMzMwOTI3ODdkMTRhZTY1NzNlYTFiOWQxZmQ5YTdkMGVlZTBm
NDAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMjcsMTIgKzI3LDEyIEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQu
aCIKICNpbmNsdWRlICJKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVBvcnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyLmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCw5ICs0MCw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2I7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci11c2luZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBS
ZWZQdHI8TWVzc2FnZVBvcnQ+LCBSZWZQdHI8U2VydmljZVdvcmtlcj4+OwordXNpbmcgTWVzc2Fn
ZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8TWVzc2Fn
ZVBvcnQ+LCBSZWZQdHI8U2VydmljZVdvcmtlcj4+OwogI2Vsc2UKLXVzaW5nIE1lc3NhZ2VFdmVu
dFNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxNZXNzYWdlUG9ydD4+
OwordXNpbmcgTWVzc2FnZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+
LCBSZWZQdHI8TWVzc2FnZVBvcnQ+PjsKICNlbmRpZgogCiBjbGFzcyBNZXNzYWdlRXZlbnQgZmlu
YWwgOiBwdWJsaWMgRXZlbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAppbmRleCAw
MjQzOGZkNGM0N2MzZmMyOTJlYWJmNDdlNWM1ZTgzZjg2OTUwODIyLi5mYTQ4YzhmYTVkYTVmZGMz
ZTBmMmMyZjdlZmJmYTc1Y2Q4ZjU0MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50Lmlk
bApAQCAtMjcsOSArMjcsOSBAQAogICovCiAKICNpZiBkZWZpbmVkKEVOQUJMRV9TRVJWSUNFX1dP
UktFUikgJiYgRU5BQkxFX1NFUlZJQ0VfV09SS0VSCi10eXBlZGVmIChET01XaW5kb3cgb3IgTWVz
c2FnZVBvcnQgb3IgU2VydmljZVdvcmtlcikgTWVzc2FnZUV2ZW50U291cmNlOwordHlwZWRlZiAo
V2luZG93UHJveHkgb3IgTWVzc2FnZVBvcnQgb3IgU2VydmljZVdvcmtlcikgTWVzc2FnZUV2ZW50
U291cmNlOwogI2Vsc2UKLXR5cGVkZWYgKERPTVdpbmRvdyBvciBNZXNzYWdlUG9ydCkgTWVzc2Fn
ZUV2ZW50U291cmNlOwordHlwZWRlZiAoV2luZG93UHJveHkgb3IgTWVzc2FnZVBvcnQpIE1lc3Nh
Z2VFdmVudFNvdXJjZTsKICNlbmRpZgogCiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKaW5k
ZXggYTE0N2UxMjE4YmI2ZTI0ZjJhZDc2NDcwNzQ2MGM2NjcwMjFmNmM1OS4uYzg5NmY4NjMxYTNk
MmJiZGExOTMwNjIxMGZlZGRiODk4NmU0Y2E2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNw
cApAQCAtNDQsMTMgKzQ0LDEzIEBAIFJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNb3VzZUV2ZW50SW5pCiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7
CiB9CiAKLVJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIERPTVdpbmRvdyogdmlldywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldmVudCwgaW50IGRldGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCkKK1JlZjxNb3VzZUV2ZW50
PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBp
bnQgZGV0YWlsLCBOb2RlKiByZWxhdGVkVGFyZ2V0KQogewogICAgIGJvb2wgaXNNb3VzZUVudGVy
T3JMZWF2ZSA9IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2VlbnRlckV2ZW50IHx8IGV2
ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2VsZWF2ZUV2ZW50OwogICAgIGJvb2wgaXNDYW5j
ZWxhYmxlID0gZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCAmJiAhaXNN
b3VzZUVudGVyT3JMZWF2ZTsKICAgICBib29sIGNhbkJ1YmJsZSA9ICFpc01vdXNlRW50ZXJPckxl
YXZlOwogCi0gICAgcmV0dXJuIE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGNhbkJ1YmJs
ZSwgaXNDYW5jZWxhYmxlLCBldmVudC50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1Rp
bWUoKSwgdmlldywKKyAgICByZXR1cm4gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgY2Fu
QnViYmxlLCBpc0NhbmNlbGFibGUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3Rv
bmljVGltZSgpLCBXVEZNb3ZlKHZpZXcpLAogICAgICAgICBkZXRhaWwsIGV2ZW50Lmdsb2JhbFBv
c2l0aW9uKCkueCgpLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLnkoKSwgZXZlbnQucG9zaXRpb24o
KS54KCksIGV2ZW50LnBvc2l0aW9uKCkueSgpLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAg
ICAgICAgIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS54KCksIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS55
KCksCkBAIC01OSwxMyArNTksMTMgQEAgUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWUKICAgICAgICAg
cmVsYXRlZFRhcmdldCwgZXZlbnQuZm9yY2UoKSwgZXZlbnQuc3ludGhldGljQ2xpY2tUeXBlKCkp
OwogfQogCi1SZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGlt
ZSB0aW1lc3RhbXAsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKK1JlZjxNb3VzZUV2ZW50PiBNb3VzZUV2
ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VY
LCBpbnQgcGFnZVksCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBpbnQgbW92ZW1lbnRY
LCBpbnQgbW92ZW1lbnRZLAogI2VuZGlmCiAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwg
Ym9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbnMsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0LCBkb3VibGUgZm9y
Y2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRGF0YVRyYW5zZmVyKiBkYXRh
VHJhbnNmZXIsIGJvb2wgaXNTaW11bGF0ZWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TW91c2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgdmlldywK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2Fu
Y2VsYWJsZSwgdGltZXN0YW1wLCBXVEZNb3ZlKHZpZXcpLAogICAgICAgICBkZXRhaWwsIHsgc2Ny
ZWVuWCwgc2NyZWVuWSB9LCB7IHBhZ2VYLCBwYWdlWSB9LAogI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCiAgICAgICAgIHsgbW92ZW1lbnRYLCBtb3ZlbWVudFkgfSwKQEAgLTczLDE5ICs3MywxOSBA
QCBSZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvbwogICAgICAgICBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHJlbGF0ZWRUYXJnZXQsIGZvcmNlLCBzeW50
aGV0aWNDbGlja1R5cGUsIGRhdGFUcmFuc2ZlciwgaXNTaW11bGF0ZWQpKTsKIH0KIAotUmVmPE1v
dXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBpbnQg
ZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50
WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5
LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVk
IHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCitS
ZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xp
ZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRL
ZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBi
dXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiBy
ZWxhdGVkVGFyZ2V0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQoZXZl
bnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCwgeyBzY3JlZW5YLCBz
Y3JlZW5ZIH0sIHsgY2xpZW50WCwgY2xpZW50WSB9LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHN5bnRoZXRpY0NsaWNrVHlwZSwgcmVsYXRlZFRh
cmdldCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQoZXZlbnRUeXBlLCBj
YW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRldGFpbCwgeyBzY3JlZW5YLCBz
Y3JlZW5ZIH0sIHsgY2xpZW50WCwgY2xpZW50WSB9LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHN5bnRoZXRpY0NsaWNrVHlwZSwgcmVsYXRlZFRh
cmdldCkpOwogfQogCiBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KCkgPSBkZWZhdWx0OwogCi1Nb3Vz
ZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2lu
ZG93KiB2aWV3LCBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNv
bnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKK01vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywg
aW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2lu
dCYgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgY29u
c3QgSW50UG9pbnQmIG1vdmVtZW50RGVsdGEsCiAjZW5kaWYKICAgICAgICAgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9y
dCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFy
Z2V0LCBkb3VibGUgZm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRGF0
YVRyYW5zZmVyKiBkYXRhVHJhbnNmZXIsIGJvb2wgaXNTaW11bGF0ZWQpCi0gICAgOiBNb3VzZVJl
bGF0ZWRFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2
aWV3LCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB3aW5kb3dMb2NhdGlvbiwKKyAgICA6IE1vdXNl
UmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAs
IFdURk1vdmUodmlldyksIGRldGFpbCwgc2NyZWVuTG9jYXRpb24sIHdpbmRvd0xvY2F0aW9uLAog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIG1vdmVtZW50RGVsdGEsCiAjZW5kaWYK
QEAgLTEwMCw4ICsxMDAsOCBAQCBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZQogewogfQogCi1Nb3Vz
ZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGNv
bnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExvY2F0
aW9uLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWdu
ZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCkK
LSAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBNb25vdG9uaWNUaW1lOjpub3coKSwgdmlldywgZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwgeyB9
LAorTW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZp
ZXcsIGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50
UG9pbnQmIGNsaWVudExvY2F0aW9uLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hv
cnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdl
dCogcmVsYXRlZFRhcmdldCkKKyAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2Fu
QnViYmxlLCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwg
ZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwgeyB9LAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAg
ICAgICAgIHsgfSwKICNlbmRpZgpAQCAtMTI3LDEyICsxMjcsMTIgQEAgTW91c2VFdmVudDo6TW91
c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgTW91c2VFdmVudElu
aXQmIGluaXQKIAogTW91c2VFdmVudDo6fk1vdXNlRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQg
TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWws
IGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCit2b2lkIE1vdXNl
RXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBk
ZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZ
LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXks
IHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCiB7CiAg
ICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRV
SUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKTsKKyAgICBp
bml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRl
dGFpbCk7CiAKICAgICBtX3NjcmVlbkxvY2F0aW9uID0gSW50UG9pbnQoc2NyZWVuWCwgc2NyZWVu
WSk7CiAgICAgbV9jdHJsS2V5ID0gY3RybEtleTsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIE1v
dXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgYwogCiAvLyBGSVhNRTogV2UgbmVlZCB0aGlzIHF1aXJrIGJlY2F1c2Ug
aUFkIFByb2R1Y2VyIGlzIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aXRoIGEgcmVsYXRlZFRhcmdl
dCB0aGF0IGlzIG5vdCBhbiBFdmVudFRhcmdldCAocmRhcjovL3Byb2JsZW0vMzA2NDAxMDEpLgog
Ly8gV2Ugc2hvdWxkIHJlbW92ZSB0aGlzIHF1aXJrIHdoZW4gcG9zc2libGUuCi12b2lkIE1vdXNl
RXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmsoRXhlY1N0YXRlJiBzdGF0ZSwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGlu
dCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGll
bnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgSlNWYWx1ZSByZWxhdGVkVGFyZ2V0VmFsdWUpCit2
b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmsoRXhlY1N0YXRlJiBzdGF0ZSwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBp
bnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBKU1ZhbHVlIHJl
bGF0ZWRUYXJnZXRWYWx1ZSkKIHsKICAgICBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCA9IG51
bGxwdHI7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTW91c2VF
dmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayhFeGVjU3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBzCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIH0KICNlbmRpZgotICAgIGluaXRN
b3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCBzY3Jl
ZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBidXR0b24sIHJlbGF0ZWRUYXJnZXQpOworICAgIGluaXRNb3VzZUV2ZW50KHR5
cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCBzY3JlZW5Y
LCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBt
ZXRhS2V5LCBidXR0b24sIHJlbGF0ZWRUYXJnZXQpOwogfQogCiBFdmVudEludGVyZmFjZSBNb3Vz
ZUV2ZW50OjpldmVudEludGVyZmFjZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTW91c2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaAppbmRl
eCAyNmNhZjhmNmIxOTE1MTY2OGI2ODAzNTU0YTBiMDAxNjRkM2UxZmNmLi40YjI4MDc5OTU1YjRj
YjczYTJjZTE2OGViNWExMzlkNzMxNTZhOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKQEAg
LTI5LDE5ICsyOSwyMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhVHJhbnNm
ZXI7CitjbGFzcyBOb2RlOwogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogCiBjbGFzcyBNb3Vz
ZUV2ZW50IDogcHVibGljIE1vdXNlUmVsYXRlZEV2ZW50IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGlt
ZXN0YW1wLCBET01XaW5kb3cqLCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblks
IGludCBwYWdlWCwgaW50IHBhZ2VZLAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW91
c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgs
IGludCBwYWdlWSwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBpbnQgbW92ZW1l
bnRYLCBpbnQgbW92ZW1lbnRZLAogI2VuZGlmCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCwgZG91
YmxlIGZvcmNlLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIERhdGFUcmFuc2Zl
ciogPSBudWxscHRyLCBib29sIGlzU2ltdWxhdGVkID0gZmFsc2UpOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGludCBkZXRh
aWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGludCBkZXRhaWwsIE5v
ZGUqIHJlbGF0ZWRUYXJnZXQpOwogCi0gICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwg
aW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29s
IHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQg
c2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRh
cmdldCogcmVsYXRlZFRhcmdldCk7CisgICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5
cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KTsKIAogICAgIHN0YXRpYyBSZWY8TW91c2VF
dmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZl
bnQpOyB9CiAKQEAgLTQ5LDggKzUwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+TW91c2VF
dmVudCgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0TW91c2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdp
bmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgs
IGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBi
b29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRU
YXJnZXQpOwotICAgIHZvaWQgaW5pdE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4ZWNTdGF0ZSYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3Jl
ZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0
IGJ1dHRvbiwgSlNDOjpKU1ZhbHVlIHJlbGF0ZWRUYXJnZXQpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgaW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRhaWws
IGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpOworICAgIHZvaWQg
aW5pdE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4ZWNTdGF0ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LCBKU0M6OkpTVmFsdWUgcmVsYXRlZFRhcmdldCk7CiAKICAgICB1bnNpZ25lZCBzaG9ydCBidXR0
b24oKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbjsgfQogICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRv
bnMoKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbnM7IH0KQEAgLTcwLDcgKzcxLDcgQEAgcHVibGlj
OgogICAgIGludCB3aGljaCgpIGNvbnN0IGZpbmFsOwogCiBwcm90ZWN0ZWQ6Ci0gICAgTW91c2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqLAorICAgIE1vdXNlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAogICAg
ICAgICBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IElu
dFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAg
ICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKQEAgLTc4LDcgKzc5LDcgQEAgcHJvdGVj
dGVkOgogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBi
b29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
cywKICAgICAgICAgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwgdW5z
aWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIqLCBib29sIGlzU2lt
dWxhdGVkKTsKIAotICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLAorICAgIE1vdXNlRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxl
LCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IEludFBv
aW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExvY2F0aW9uLAogICAg
ICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksCiAgICAgICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
cywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRl
ZFRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwKaW5kZXggMGJlMGY4OGRkMzVkN2Nk
ZmI4ZDM1NDJkYWRlMTZlMzI5NGZkYzgzYS4uNjBjNDQ2NjY3MWYwNjE5ZmVlMDlkMGYwMTkzZjlh
NDFmNmIzZTgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmlkbApAQCAtNDMsNyArNDMsNyBA
QAogICAgIC8vIEZJWE1FOiByZWxhdGVkVGFyZ2V0IHNob3VsZCBiZSBvZiB0eXBlIEV2ZW50VGFy
Z2V0PyBidXQgd2UgbmVlZCB0byB1c2UgYW55IHRvIHN1cHBvcnQgYSBxdWlyayBmb3IgaUFkIFBy
b2R1Y2VyIChyZGFyOi8vcHJvYmxlbS8zMDY0MDEwMSkuCiAgICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlJlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9aW5pdE1vdXNlRXZlbnRR
dWlya10gdm9pZCBpbml0TW91c2VFdmVudChvcHRpb25hbCBET01TdHJpbmcgdHlwZSA9ICJ1bmRl
ZmluZWQiLAogICAgICAgICBvcHRpb25hbCBib29sZWFuIGNhbkJ1YmJsZSA9IGZhbHNlLCBvcHRp
b25hbCBib29sZWFuIGNhbmNlbGFibGUgPSBmYWxzZSwKLSAgICAgICAgb3B0aW9uYWwgRE9NV2lu
ZG93PyB2aWV3ID0gbnVsbCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAwLAorICAgICAgICBvcHRp
b25hbCBXaW5kb3dQcm94eT8gdmlldyA9IG51bGwsIG9wdGlvbmFsIGxvbmcgZGV0YWlsID0gMCwK
ICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5Z
ID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRYID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRZID0g
MCwKICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJv
b2xlYW4gYWx0S2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwg
b3B0aW9uYWwgYm9vbGVhbiBtZXRhS2V5ID0gZmFsc2UsCiAgICAgICAgIG9wdGlvbmFsIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiA9IDAsIG9wdGlvbmFsIGFueSByZWxhdGVkVGFyZ2V0ID0gbnVsbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAppbmRleCA4NTM3MTRkNmFi
MWYwMWU4YTVlYWNlMGQwZTQzOTc1ZWIzZDU4NDlmLi44MGE4MjY3ZGMyMWJkOGIzYmY1MTgzMGZl
NGIzMGE0MmE2MTIwMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxh
dGVkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5j
cHAKQEAgLTMyLDEzICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1vdXNlUmVs
YXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3Rh
bXAsIERPTVdpbmRvdyogRE9NV2luZG93LAorTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRl
ZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRldGFp
bCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93
TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKICNlbmRpZgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgYm9vbCBpc1NpbXVsYXRlZCkKLSAg
ICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUs
IHRpbWVzdGFtcCwgRE9NV2luZG93LCBkZXRhaWwsIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXks
IG1ldGFLZXksIGZhbHNlLCBmYWxzZSkKKyAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRU
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgV1RGTW92ZSh2aWV3KSwgZGV0
YWlsLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBmYWxzZSwgZmFsc2UpCiAg
ICAgLCBtX3NjcmVlbkxvY2F0aW9uKHNjcmVlbkxvY2F0aW9uKQogI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCiAgICAgLCBtX21vdmVtZW50RGVsdGEobW92ZW1lbnREZWx0YSkKQEAgLTYxLDcgKzYx
LDcgQEAgTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBjb25zdCBNb3VzZVIKIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6Omlu
aXQoYm9vbCBpc1NpbXVsYXRlZCwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uKQogewog
ICAgIGlmICghaXNTaW11bGF0ZWQpIHsKLSAgICAgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZy
YW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSkgeworICAgICAgICBpZiAoYXV0byogZnJhbWVW
aWV3ID0gZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpIHsKICAgICAgICAgICAgIEZs
b2F0UG9pbnQgYWJzb2x1dGVQb2ludCA9IGZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyh3aW5k
b3dMb2NhdGlvbik7CiAgICAgICAgICAgICBGbG9hdFBvaW50IGRvY3VtZW50UG9pbnQgPSBmcmFt
ZVZpZXctPmFic29sdXRlVG9Eb2N1bWVudFBvaW50KGFic29sdXRlUG9pbnQpOwogICAgICAgICAg
ICAgbV9wYWdlTG9jYXRpb24gPSBmbG9vcmVkTGF5b3V0UG9pbnQoZG9jdW1lbnRQb2ludCk7CkBA
IC04MywxMyArODMsMTMgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVz
KCkKICAgICBtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb24gPSBmYWxzZTsKIH0KIAotRnJhbWVW
aWV3KiBNb3VzZVJlbGF0ZWRFdmVudDo6ZnJhbWVWaWV3RnJvbURPTVdpbmRvdyhET01XaW5kb3cq
IHdpbmRvdykKK0ZyYW1lVmlldyogTW91c2VSZWxhdGVkRXZlbnQ6OmZyYW1lVmlld0Zyb21XaW5k
b3dQcm94eShXaW5kb3dQcm94eSogd2luZG93UHJveHkpCiB7Ci0gICAgYXV0byogZnJhbWUgPSB3
aW5kb3cgPyB3aW5kb3ctPmZyYW1lKCkgOiBudWxscHRyOwotICAgIGlmICghZnJhbWUpCisgICAg
aWYgKCF3aW5kb3dQcm94eSB8fCAhaXM8RE9NV2luZG93Pih3aW5kb3dQcm94eS0+d2luZG93KCkp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBmcmFtZS0+dmlldygpOwor
ICAgIGF1dG8qIGZyYW1lID0gZG93bmNhc3Q8RE9NV2luZG93Pigqd2luZG93UHJveHktPndpbmRv
dygpKS5mcmFtZSgpOworICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT52aWV3KCkgOiBudWxscHRy
OwogfQogCiBMYXlvdXRQb2ludCBNb3VzZVJlbGF0ZWRFdmVudDo6cGFnZVBvaW50VG9DbGllbnRQ
b2ludChMYXlvdXRQb2ludCBwYWdlUG9pbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQpAQCAtMTEz
LDcgKzExMyw3IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGluYXRlcyhjb25z
dCBMYXlvdXRQb2ludCYgY2xpZW50TG9jYXRpb24pCiAgICAgLy8gU2V0IHVwIGluaXRpYWwgdmFs
dWVzIGZvciBjb29yZGluYXRlcy4KICAgICAvLyBDb3JyZWN0IHZhbHVlcyBhcmUgY29tcHV0ZWQg
bGF6aWx5LCBzZWUgY29tcHV0ZVJlbGF0aXZlUG9zaXRpb24uCiAgICAgRmxvYXRTaXplIGRvY3Vt
ZW50VG9DbGllbnRPZmZzZXQ7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zy
b21ET01XaW5kb3codmlldygpKSkKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3
RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpCiAgICAgICAgIGRvY3VtZW50VG9DbGllbnRPZmZzZXQg
PSBmcmFtZVZpZXctPmRvY3VtZW50VG9DbGllbnRPZmZzZXQoKTsKIAogICAgIG1fY2xpZW50TG9j
YXRpb24gPSBjbGllbnRMb2NhdGlvbjsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIE1vdXNlUmVs
YXRlZEV2ZW50Ojppbml0Q29vcmRpbmF0ZXMoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudExvY2F0
aW9uKQogCiBmbG9hdCBNb3VzZVJlbGF0ZWRFdmVudDo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVG
YWN0b3IoKSBjb25zdAogewotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9t
RE9NV2luZG93KHZpZXcoKSkpCisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zy
b21XaW5kb3dQcm94eSh2aWV3KCkpKQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5kb2N1bWVu
dFRvQWJzb2x1dGVTY2FsZUZhY3RvcigpOwogCiAgICAgcmV0dXJuIDE7CkBAIC0xMzYsNyArMTM2
LDcgQEAgZmxvYXQgTW91c2VSZWxhdGVkRXZlbnQ6OmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFj
dG9yKCkgY29uc3QKIAogdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVBhZ2VMb2NhdGlv
bigpCiB7Ci0gICAgbV9hYnNvbHV0ZUxvY2F0aW9uID0gcGFnZVBvaW50VG9BYnNvbHV0ZVBvaW50
KG1fcGFnZUxvY2F0aW9uLCBmcmFtZVZpZXdGcm9tRE9NV2luZG93KHZpZXcoKSkpOworICAgIG1f
YWJzb2x1dGVMb2NhdGlvbiA9IHBhZ2VQb2ludFRvQWJzb2x1dGVQb2ludChtX3BhZ2VMb2NhdGlv
biwgZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpOwogfQogCiB2b2lkIE1vdXNlUmVs
YXRlZEV2ZW50OjpyZWNlaXZlZFRhcmdldCgpCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBNb3Vz
ZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVJlbGF0aXZlUG9zaXRpb24oKQogICAgIAogRmxvYXRQb2lu
dCBNb3VzZVJlbGF0ZWRFdmVudDo6bG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSBjb25z
dAogewotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9tRE9NV2luZG93KHZp
ZXcoKSkpCisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21XaW5kb3dQcm94
eSh2aWV3KCkpKQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5jb250ZW50c1RvUm9vdFZpZXco
cm91bmRlZEludFBvaW50KG1fYWJzb2x1dGVMb2NhdGlvbikpOwogCiAgICAgcmV0dXJuIG1fYWJz
b2x1dGVMb2NhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0
ZWRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKaW5kZXgg
MGQ4M2MzNjA5ZjcxZWFmZWYyMTcxYTljZDBkNDMxYWU2ZDg1NGY4Yi4uYWQ0ZTVkMGMzNTZmNTQx
ZTA4MmUxMWEyNmEyZDBjYzExNWZkNTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L01vdXNlUmVsYXRlZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRl
ZEV2ZW50LmgKQEAgLTY3LDE0ICs2NywxNCBAQCBwdWJsaWM6CiAgICAgLy8gdXNhYmxlIHdpdGgg
UmVuZGVyT2JqZWN0OjphYnNvbHV0ZVRvTG9jYWwpLgogICAgIGNvbnN0IExheW91dFBvaW50JiBh
YnNvbHV0ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZUxvY2F0aW9uOyB9CiAg
ICAgCi0gICAgc3RhdGljIEZyYW1lVmlldyogZnJhbWVWaWV3RnJvbURPTVdpbmRvdyhET01XaW5k
b3cqKTsKKyAgICBzdGF0aWMgRnJhbWVWaWV3KiBmcmFtZVZpZXdGcm9tV2luZG93UHJveHkoV2lu
ZG93UHJveHkqKTsKIAogICAgIHN0YXRpYyBMYXlvdXRQb2ludCBwYWdlUG9pbnRUb0NsaWVudFBv
aW50KExheW91dFBvaW50IHBhZ2VQb2ludCwgRnJhbWVWaWV3Kik7CiAgICAgc3RhdGljIExheW91
dFBvaW50IHBhZ2VQb2ludFRvQWJzb2x1dGVQb2ludChMYXlvdXRQb2ludCBwYWdlUG9pbnQsIEZy
YW1lVmlldyopOwogCiBwcm90ZWN0ZWQ6CiAgICAgTW91c2VSZWxhdGVkRXZlbnQoKSA9IGRlZmF1
bHQ7Ci0gICAgTW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9N
V2luZG93KiwKKyAgICBNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1w
LCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IEludFBv
aW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAogI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIGNvbnN0IEludFBvaW50JiBtb3ZlbWVudERl
bHRhLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDRiMWU4NzI1Nzk1MzNmYmY3ODcxMmZkNmQyM2QyYzgx
NWIwM2ViMzguLmM5MTkwN2NkZDRhNDhiMTcyZWEzYTJkZWUxZTg4MDc4MGJlNWRlMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDb21wb3NlZFRyZWVBbmNl
c3Rvckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKICNp
bmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIKICNp
bmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaW11bGF0ZWRDbGljay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltdWxhdGVkQ2xpY2su
Y3BwCmluZGV4IGUwZjRlMzUyZWNhMThkY2RjODU5MjQ5MmVjNTA4NDI5MjhhYjY1NzQuLjQxN2U5
MDdiZjI4ODFiNmE4N2Y2MWQ2MDkxNmI2N2U2OGViOWMxMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Np
bXVsYXRlZENsaWNrLmNwcApAQCAtMzcsMTQgKzM3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgU2ltdWxhdGVkTW91c2VFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWV3LCBSZWZQdHI8RXZlbnQ+
JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQsIFNpbXVsYXRlZENsaWNrU291cmNl
IHNvdXJjZSkKKyAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIFJl
ZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVk
Q2xpY2tTb3VyY2Ugc291cmNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2ltdWxhdGVkTW91c2VFdmVudChldmVudFR5cGUsIHZpZXcsIFdURk1vdmUodW5kZXJseWluZ0V2
ZW50KSwgdGFyZ2V0LCBzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2lt
dWxhdGVkTW91c2VFdmVudChldmVudFR5cGUsIFdURk1vdmUodmlldyksIFdURk1vdmUodW5kZXJs
eWluZ0V2ZW50KSwgdGFyZ2V0LCBzb3VyY2UpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU2lt
dWxhdGVkTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93
KiB2aWV3LCBSZWZQdHI8RXZlbnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQs
IFNpbXVsYXRlZENsaWNrU291cmNlIHNvdXJjZSkKLSAgICAgICAgOiBNb3VzZUV2ZW50KGV2ZW50
VHlwZSwgdHJ1ZSwgdHJ1ZSwgdW5kZXJseWluZ0V2ZW50ID8gdW5kZXJseWluZ0V2ZW50LT50aW1l
U3RhbXAoKSA6IE1vbm90b25pY1RpbWU6Om5vdygpLCB2aWV3LCAwLCB7IH0sIHsgfSwKKyAgICBT
aW11bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgUmVmUHRyPEV2ZW50PiYmIHVuZGVybHlpbmdFdmVudCwgRWxl
bWVudCYgdGFyZ2V0LCBTaW11bGF0ZWRDbGlja1NvdXJjZSBzb3VyY2UpCisgICAgICAgIDogTW91
c2VFdmVudChldmVudFR5cGUsIHRydWUsIHRydWUsIHVuZGVybHlpbmdFdmVudCA/IHVuZGVybHlp
bmdFdmVudC0+dGltZVN0YW1wKCkgOiBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3
KSwgMCwgeyB9LCB7IH0sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgICAgIHsg
fSwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAppbmRleCBiZDAyNGVhNTVmNmJhODRl
MzJjOTA0NDZmY2JmODI4MjA0ZDJjMzBjLi5iMDk0NDkzYzFmODU1ODQ5ODg5M2MyY2I3YzBkMDc0
NmI2YWI1YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcApAQCAtMzgsMjkgKzM4LDI5IEBA
IFJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRleHRFdmVudCk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVu
dDo6Y3JlYXRlKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJ
bnB1dFR5cGUgaW5wdXRUeXBlKQorUmVmPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGUoUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5w
dXRUeXBlIGlucHV0VHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQo
dmlldywgZGF0YSwgaW5wdXRUeXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2
ZW50KFdURk1vdmUodmlldyksIGRhdGEsIGlucHV0VHlwZSkpOwogfQogCi1SZWY8VGV4dEV2ZW50
PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKERPTVdpbmRvdyogdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSkKK1JlZjxUZXh0RXZlbnQ+
IFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYm
IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KHZpZXcsIGRhdGEsIDAsIHNob3VsZFNt
YXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1
b3RlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdURk1vdmUodmlldyks
IGRhdGEsIDAsIHNob3VsZFNtYXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxp
bmc6OlJlc3BlY3RCbG9ja3F1b3RlKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6
Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiYmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNo
U3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKK1Jl
ZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBz
aG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVI
YW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFRleHRFdmVudCh2aWV3LCBlbXB0eVN0cmluZygpLCBXVEZNb3ZlKGRhdGEpLCBzaG91bGRT
bWFydFJlcGxhY2UsIHNob3VsZE1hdGNoU3R5bGUsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZW1wdHlT
dHJpbmcoKSwgV1RGTW92ZShkYXRhKSwgc2hvdWxkU21hcnRSZXBsYWNlLCBzaG91bGRNYXRjaFN0
eWxlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRF
dmVudDo6Y3JlYXRlRm9yRHJvcChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkK
K1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFRleHRFdmVudCh2aWV3LCBkYXRhLCBUZXh0RXZlbnRJbnB1dERyb3ApKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZGF0YSwgVGV4dEV2ZW50
SW5wdXREcm9wKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRGlj
dGF0aW9uKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8
RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCitSZWY8VGV4dEV2
ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3RhdGlvbihSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRp
dmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VGV4dEV2ZW50KHZpZXcsIGRhdGEsIGRpY3RhdGlvbkFsdGVybmF0aXZlcykpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRleHRFdmVudChXVEZNb3ZlKHZpZXcpLCBkYXRhLCBkaWN0YXRpb25B
bHRlcm5hdGl2ZXMpKTsKIH0KIAogVGV4dEV2ZW50OjpUZXh0RXZlbnQoKQpAQCAtNzEsOCArNzEs
OCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudCgpCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50
KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUg
aW5wdXRUeXBlKQotICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRy
dWUsIHRydWUsIHZpZXcsIDApCitUZXh0RXZlbnQ6OlRleHRFdmVudChSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRU
eXBlKQorICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRy
dWUsIFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAg
LCBtX2RhdGEoZGF0YSkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtODEs
OCArODEsOCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0
cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlIGlucAogewogfQogCi1UZXh0RXZlbnQ6OlRl
eHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwg
Ym9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1
b3RlSGFuZGxpbmcpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwg
dHJ1ZSwgdHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxk
TWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5n
KQorICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUs
IFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShUZXh0RXZlbnRJbnB1dFBhc3Rl
KQogICAgICwgbV9kYXRhKGRhdGEpCiAgICAgLCBtX3Bhc3RpbmdGcmFnbWVudChXVEZNb3ZlKHBh
c3RpbmdGcmFnbWVudCkpCkBAIC05Miw4ICs5Miw4IEBAIFRleHRFdmVudDo6VGV4dEV2ZW50KERP
TVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
CiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3Ry
aW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25B
bHRlcm5hdGl2ZXMpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwg
dHJ1ZSwgdHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25B
bHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcykKKyAgICA6IFVJRXZlbnQoZXZlbnRO
YW1lcygpLnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0cnVlLCBXVEZNb3ZlKHZpZXcpLCAwKQogICAg
ICwgbV9pbnB1dFR5cGUoVGV4dEV2ZW50SW5wdXREaWN0YXRpb24pCiAgICAgLCBtX2RhdGEoZGF0
YSkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtMTA1LDEyICsxMDUsMTIg
QEAgVGV4dEV2ZW50OjpUZXh0RXZlbnQoRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRh
dGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb24KIAogVGV4dEV2ZW50Ojp+VGV4dEV2ZW50KCkgPSBk
ZWZhdWx0OwogCi12b2lkIFRleHRFdmVudDo6aW5pdFRleHRFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmll
dywgY29uc3QgU3RyaW5nJiBkYXRhKQordm9pZCBUZXh0RXZlbnQ6OmluaXRUZXh0RXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIGlm
IChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbml0VUlFdmVu
dCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAgICBt
X2lucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQu
aAppbmRleCAyOWViMjZkMGUwNzRiNTRkMzQ2MzU2MDQyODBkMTJhNjk4OGFmOGRhLi4wYWUyYWM4
NjNmYjgxYmJiMjg2Mzg1MTY1YjZiMTI1MWQyZGZiMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGV4dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5o
CkBAIC0zOCwxNiArMzgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgVGV4
dEV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZShET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEs
IFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOworICAgICAgICBz
dGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlKFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3Qg
U3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJk
KTsKICAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7Ci0g
ICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShET01X
aW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKLSAg
ICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoRE9NV2lu
ZG93KiwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJl
cGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0g
ICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEcm9wKERPTVdpbmRvdyosIGNv
bnN0IFN0cmluZyYgZGF0YSk7Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVG
b3JEaWN0YXRpb24oRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8
RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgICAgICBz
dGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRv
d1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsK
KyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoUmVm
UHRyPFdpbmRvd1Byb3h5PiYmLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBkYXRhLCBib29s
IHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90
ZUhhbmRsaW5nKTsKKyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRyb3Ao
UmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBzdGF0
aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yRGljdGF0aW9uKFJlZlB0cjxXaW5kb3dQcm94eT4m
JiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+
JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogCiAgICAgICAgIHZpcnR1YWwgflRleHRFdmVudCgp
OwogICAgIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRUZXh0RXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01X
aW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0
YSk7CiAgICAgCiAgICAgICAgIFN0cmluZyBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9
CiAKQEAgLTcxLDkgKzcxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAg
ICAgICAgIFRleHRFdmVudCgpOwogCi0gICAgICAgIFRleHRFdmVudChET01XaW5kb3cqLCBjb25z
dCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9h
cmQpOwotICAgICAgICBUZXh0RXZlbnQoRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wg
c2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0gICAgICAgIFRleHRF
dmVudChET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRp
b25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgICAgIFRleHRFdmVu
dChSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5w
dXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7CisgICAgICAgIFRleHRFdmVudChSZWZQ
dHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+JiYsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUs
IE1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBUZXh0RXZlbnQoUmVmUHRyPFdpbmRv
d1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRl
cm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAKICAgICAgICAgYm9vbCBpc1RleHRF
dmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCmluZGV4IDM2
NDA2NWZhODJkNDE4OTljMGM1MjMyNTBjMmYyNzk5NzcwZDNlMGUuLmNlOGIzMGFjYjNjNzFmZmRm
ODI4YjIxODEwNjVhYWExZjhhMTI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0RXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCkBAIC0z
Miw3ICszMiw3IEBAIGludGVyZmFjZSBUZXh0RXZlbnQgOiBVSUV2ZW50IHsKICAgICB2b2lkIGlu
aXRUZXh0RXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZpbmVkIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGVBcmcgPSBmYWxz
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlQXJn
ID0gZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmll
d0FyZyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFdpbmRvd1Byb3h5
PyB2aWV3QXJnID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3Ry
aW5nIGRhdGFBcmcgPSAidW5kZWZpbmVkIik7CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVG91Y2hFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5j
cHAKaW5kZXggNjFjMDhmMjFkYTM4YmFhN2ExMTBmMjJkY2E2YTU3YmU5M2I2ODNlNy4uMDAyMzdj
ZGFkNTY4Mzc5NTJkOTNhOTdkZTI2YTk5ZTllYWZjMzkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2
ZW50LmNwcApAQCAtMzgsOSArMzgsOSBAQCBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KCkgPSBkZWZh
dWx0OwogCiBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91Y2hM
aXN0KiB0YXJnZXRUb3VjaGVzLAogICAgICAgICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzLCBj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICBET01XaW5kb3cqIHZpZXcsIGludCBz
Y3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAgICAgIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdl
WCwgaW50IHBhZ2VZLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXkpCi0gICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVl
LCB0cnVlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgdmlldywgMCwgSW50UG9pbnQoc2NyZWVuWCwg
c2NyZWVuWSksCisgICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCBNb25v
dG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwgMCwgSW50UG9pbnQoc2NyZWVuWCwgc2Ny
ZWVuWSksCiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChwYWdlWCwgcGFnZVkpLAog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2lu
dCgwLCAwKSwKQEAgLTY0LDEzICs2NCwxMyBAQCBUb3VjaEV2ZW50Ojp+VG91Y2hFdmVudCgpID0g
ZGVmYXVsdDsKIAogdm9pZCBUb3VjaEV2ZW50Ojppbml0VG91Y2hFdmVudChUb3VjaExpc3QqIHRv
dWNoZXMsIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywKICAgICAgICAgVG91Y2hMaXN0KiBjaGFu
Z2VkVG91Y2hlcywgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAKLSAgICAgICAgRE9NV2luZG93
KiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50
WSwKKyAgICAgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBzY3JlZW5YLCBpbnQg
c2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLAogICAgICAgICBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAgICAgaWYgKGlz
QmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRVSUV2ZW50KHR5
cGUsIHRydWUsIHRydWUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIHRydWUsIHRy
dWUsIFdURk1vdmUodmlldyksIDApOwogCiAgICAgbV90b3VjaGVzID0gdG91Y2hlczsKICAgICBt
X3RhcmdldFRvdWNoZXMgPSB0YXJnZXRUb3VjaGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1RvdWNoRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKaW5k
ZXggZDMzOWMwYjcyYjEzZDQ1NWE1ZTAzODY2ZTU1NzIwY2NmNmJmMWVkYi4uODVmYTE2MWYyMTk2
ZDNmMmEwNWQ5YTMxYTExN2IwYTFhZjg2NmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RvdWNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCkBA
IC00MSwxMiArNDEsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxUb3VjaEV2ZW50PiBj
cmVhdGUoVG91Y2hMaXN0KiB0b3VjaGVzLCAKICAgICAgICAgICAgIFRvdWNoTGlzdCogdGFyZ2V0
VG91Y2hlcywgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgCi0gICAgICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIERPTVdpbmRvdyogdmlldywKKyAgICAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgICAgICAg
ICBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogICAgICAg
ICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRh
S2V5KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVG91Y2hFdmVudCh0b3Vj
aGVzLCB0YXJnZXRUb3VjaGVzLCBjaGFuZ2VkVG91Y2hlcywKLSAgICAgICAgICAgICAgICB0eXBl
LCB2aWV3LCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksCisgICAgICAgICAgICAgICAg
dHlwZSwgV1RGTW92ZSh2aWV3KSwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLAogICAg
ICAgICAgICAgICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpKTsKICAgICB9
CiAgICAgc3RhdGljIFJlZjxUb3VjaEV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBAIC02Nyw3
ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0
b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3Qq
IGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICAgICAg
RE9NV2luZG93KiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLAorICAgICAgICAgICAgUmVmUHRy
PFdpbmRvd1Byb3h5PiYmLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksCiAgICAgICAgICAgICBp
bnQgY2xpZW50WCwgaW50IGNsaWVudFksCiAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wg
YWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogCkBAIC04Nyw3ICs4Nyw3IEBA
IHByaXZhdGU6CiAgICAgVG91Y2hFdmVudCgpOwogICAgIFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0
b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3Qq
IGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsCi0gICAgICAgICAgICBE
T01XaW5kb3cqLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwKKyAgICAgICAg
ICAgIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQg
cGFnZVgsCiAgICAgICAgICAgICBpbnQgcGFnZVksCiAgICAgICAgICAgICBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogICAgIFRvdWNoRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVG91Y2hFdmVudC5pZGwKaW5kZXggODEwNTgzNTdlZDNhYTc3NzRkMjZmYWZhZTE2MDNiMTVk
ZGUwZDYwYi4uNTRlOTlkYjQ4MzBmMzBkNDYyNjQyZTMzZDQzOTU2OTNiMTNmMmIwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ub3VjaEV2ZW50LmlkbApAQCAtNDAsNyArNDAsNyBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgb3B0aW9uYWwgVG91Y2hMaXN0PyB0YXJnZXRUb3VjaGVzID0gbnVsbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFRvdWNoTGlzdD8gY2hhbmdlZFRvdWNoZXMgPSBu
dWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAi
dW5kZWZpbmVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8g
dmlldyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94
eT8gdmlldyA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBsb25nIHNj
cmVlblggPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5Z
ID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGxvbmcgY2xpZW50WCA9IDAs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVUlFdmVudC5jcHAKaW5kZXggYWIyMGVlY2I5YzU4MzFkZWYwMjc5Y2E3OGEwZTdj
YzVmYTg1NjIxNy4uMGE2ZjgxYWY1MjM3MTZmNzU4MTc4ZjBmOTUzNDRjZGM2NTViODAwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50LmNwcApAQCAtMzIsMTYgKzMyLDE2IEBAIFVJRXZlbnQ6OlVJRXZlbnQo
KQogewogfQogCi1VSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBET01XaW5kb3cqIHZpZXdB
cmcsIGludCBkZXRhaWxBcmcpCitVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50
VHlwZSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnKQotICAgICwgbV92aWV3KHZpZXdBcmcp
CisgICAgLCBtX3ZpZXcoV1RGTW92ZSh2aWV3QXJnKSkKICAgICAsIG1fZGV0YWlsKGRldGFpbEFy
ZykKIHsKIH0KIAotVUlFdmVudDo6VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgTW9ub3RvbmljVGltZSB0
aW1lc3RhbXAsIERPTVdpbmRvdyogdmlld0FyZywgaW50IGRldGFpbEFyZykKK1VJRXZlbnQ6OlVJ
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlQXJnLCBi
b29sIGNhbmNlbGFibGVBcmcsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwg
Y2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCB0aW1lc3RhbXApCi0gICAgLCBtX3ZpZXcodmll
d0FyZykKKyAgICAsIG1fdmlldyhXVEZNb3ZlKHZpZXdBcmcpKQogICAgICwgbV9kZXRhaWwoZGV0
YWlsQXJnKQogewogfQpAQCAtNTUsNyArNTUsNyBAQCBVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBVSUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIsCiAK
IFVJRXZlbnQ6On5VSUV2ZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFVJRXZlbnQ6OmluaXRVSUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZUFyZywgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wg
Y2FuY2VsYWJsZUFyZywgRE9NV2luZG93KiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQordm9pZCBV
SUV2ZW50Ojppbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVBcmcsIGJvb2wgY2Fu
QnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVBcmcsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3
QXJnLCBpbnQgZGV0YWlsQXJnKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaAppbmRleCBiYWE3MzFmY2Y4MWVlYmFmMjMxNTNk
YTUxYmEwYWVhZmQyNDU1ZmFjLi41MGYyZDE3NzE5OTQyZTQ3M2ZkZWM5YjFhODg0ODYwNTkzY2Qx
OWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmgKQEAgLTIzLDIwICsyMywyMCBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVk
ZSAiVUlFdmVudEluaXQuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIG5vIG9uZSBpcyBkZXBlbmRp
bmcgb24gaXQgYW55bW9yZS4KLXR5cGVkZWYgRE9NV2luZG93IEFic3RyYWN0VmlldzsKK3R5cGVk
ZWYgV2luZG93UHJveHkgQWJzdHJhY3RWaWV3OwogCiBjbGFzcyBVSUV2ZW50IDogcHVibGljIEV2
ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRv
dyogdmlldywgaW50IGRldGFpbCkKKyAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZp
ZXcsIGRldGFpbCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKSk7CiAgICAgfQog
ICAgIHN0YXRpYyBSZWY8VUlFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHsKQEAgLTQ4
LDkgKzQ4LDkgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5VSUV2ZW50KCk7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFp
bCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiwgaW50IGRldGFpbCk7CiAKLSAgICBET01XaW5kb3cqIHZpZXcoKSBjb25zdCB7IHJl
dHVybiBtX3ZpZXcuZ2V0KCk7IH0KKyAgICBXaW5kb3dQcm94eSogdmlldygpIGNvbnN0IHsgcmV0
dXJuIG1fdmlldy5nZXQoKTsgfQogICAgIGludCBkZXRhaWwoKSBjb25zdCB7IHJldHVybiBtX2Rl
dGFpbDsgfQogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVy
cmlkZTsKQEAgLTY1LDE0ICs2NSwxNCBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVSUV2
ZW50KCk7Ci0gICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwpOwotICAgIFVJRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7Cisg
ICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCk7CisgICAgVUlF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGlu
dCBkZXRhaWwpOwogICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVUlFdmVu
dEluaXQmLCBJc1RydXN0ZWQpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNVSUV2ZW50KCkgY29u
c3QgZmluYWw7CiAKLSAgICBSZWZQdHI8RE9NV2luZG93PiBtX3ZpZXc7CisgICAgUmVmUHRyPFdp
bmRvd1Byb3h5PiBtX3ZpZXc7CiAgICAgaW50IG1fZGV0YWlsOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZl
bnQuaWRsCmluZGV4IDg3YjM5MTUyODMwMzE5N2UzNmM2NGMxZTcwOGZmYjYwY2JhZDk1MDMuLjZh
MzVjNTdhMzg3NGJjOGVjNjNkNmQ5MjRkNDI4YjJiNTgxMDBmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVu
dC5pZGwKQEAgLTIwLDExICsyMCwxMSBAQAogWwogICAgIENvbnN0cnVjdG9yKERPTVN0cmluZyB0
eXBlLCBvcHRpb25hbCBVSUV2ZW50SW5pdCBldmVudEluaXREaWN0KQogXSBpbnRlcmZhY2UgVUlF
dmVudCA6IEV2ZW50IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IHZpZXc7Cisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHZpZXc7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgZGV0YWlsOwogICAgIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVk
IiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICB2b2lkIGluaXRVSUV2
ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIGJvb2xl
YW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZhbHNl
LCBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBsb25nIGRldGFpbCA9
IDApOworICAgIHZvaWQgaW5pdFVJRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5k
ZWZpbmVkIiwgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGUgPSBmYWxzZSwgb3B0aW9uYWwgYm9v
bGVhbiBjYW5jZWxhYmxlID0gZmFsc2UsIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVs
bCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAwKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBs
b25nIGxheWVyWDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsYXllclk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9VSUV2ZW50SW5pdC5oCmluZGV4IDAzMTZiYzA2ZjU2OGU1MzkxNmRmNjk2ZjQxNDQ1YmE5ZmMz
MWZmMzYuLmUxMTI4YTc2ZGU1ODYwMTYyZmE5NzZkY2RjODI3MTcwZDhmMmYzYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9VSUV2ZW50SW5pdC5oCkBAIC0yNSwxNCArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudEluaXQuaCIKKyNpbmNsdWRl
ICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdHJ1Y3QgVUlFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKLSAgICBS
ZWZQdHI8RE9NV2luZG93PiB2aWV3OworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gdmlldzsKICAg
ICBpbnQgZGV0YWlsIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1VJRXZlbnRJbml0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5pZGwKaW5k
ZXggMGQ3ZWI4ZWZjMWM1MzdhOTA1MTE3YjYxMjExMWFkMDFlYjFlMGFhMi4uM2NjYmJlZDYwNzU1
ZjZmMjE2NTJmNWJhNjFlNmYzODI0MGMxN2ZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1VJRXZlbnRJbml0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQu
aWRsCkBAIC0yNCw2ICsyNCw2IEBACiAgKi8KIAogZGljdGlvbmFyeSBVSUV2ZW50SW5pdCA6IEV2
ZW50SW5pdCB7Ci0gICAgRE9NV2luZG93PyB2aWV3ID0gbnVsbDsKKyAgICBXaW5kb3dQcm94eT8g
dmlldyA9IG51bGw7CiAgICAgbG9uZyBkZXRhaWwgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VUlFdmVudFdpdGhLZXlTdGF0ZS5oCmluZGV4IDBhOGU0MDMxMjQ4ZDZmNzI2NTQ0MmU1YmY4MDAx
MmJhMzBjY2NkZWIuLjA4NWEwMzE3ZWM4ZGNlM2E2MGZlMjZhZmE1YTE2MmVhMmE5YTA1MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaApAQCAtNDAsOCArNDAsOCBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgVUlFdmVudFdpdGhLZXlTdGF0ZSgpID0gZGVmYXVs
dDsKIAotICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRh
aWwsIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtl
eSkKLSAgICAgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywg
ZGV0YWlsKQorICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywgaW50IGRldGFpbCwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtl
eSwgYm9vbCBtZXRhS2V5KQorICAgICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxL
ZXkpCiAgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQogICAgICAgICAsIG1fc2hpZnRLZXkoc2hp
ZnRLZXkpCkBAIC00OSw5ICs0OSw5IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQogCi0gICAg
VUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cq
IHZpZXcsCisgICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1w
LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICAgICAgaW50IGRldGFpbCwgYm9vbCBj
dHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBib29sIGFs
dEdyYXBoS2V5LCBib29sIGNhcHNMb2NrS2V5KQotICAgICAgICAgICAgOiBVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2aWV3LCBkZXRhaWwpCisgICAgICAg
ICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIFdU
Rk1vdmUodmlldyksIGRldGFpbCkKICAgICAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCiAg
ICAgICAgICAgICAsIG1fYWx0S2V5KGFsdEtleSkKICAgICAgICAgICAgICwgbV9zaGlmdEtleShz
aGlmdEtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAppbmRleCBkMmI4ZmI3MmQ5MTk4ZTE0
YmY3NThjYTNhZmJjMWVjMjQ3ZjcxY2JkLi41MzdjYjE5M2M4MTNmNTI3YWM1MzNjOTMwODkwODdi
ZGIzNjhiZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCkBAIC00Nyw4ICs0Nyw4IEBA
IGlubGluZSBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Y29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsCiB7CiB9CiAKLWlubGluZSBXaGVlbEV2ZW50OjpXaGVl
bEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogdmlldykK
LSAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUsIGV2
ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LCAwLCBldmVu
dC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCitpbmxpbmUgV2hlZWxFdmVudDo6
V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlldykKKyAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQs
IHRydWUsIHRydWUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgp
LCBXVEZNb3ZlKHZpZXcpLCAwLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlv
bigpCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgLCB7IH0KICNlbmRpZgpAQCAt
NjEsOSArNjEsOSBAQCBpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHZpZXcpCiB7CiB9CiAKLVJlZjxXaGVlbEV2
ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwg
RE9NV2luZG93KiB2aWV3KQorUmVmPFdoZWVsRXZlbnQ+IFdoZWVsRXZlbnQ6OmNyZWF0ZShjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXaGVlbEV2ZW50KGV2ZW50LCB2aWV3KSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2hlZWxFdmVudChldmVudCwgV1RGTW92ZSh2aWV3KSkp
OwogfQogCiBSZWY8V2hlZWxFdmVudD4gV2hlZWxFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQpA
QCAtNzYsMTIgKzc2LDEyIEBAIFJlZjxXaGVlbEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2hlZWxFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiB9
CiAKLXZvaWQgV2hlZWxFdmVudDo6aW5pdFdlYktpdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwg
aW50IHJhd0RlbHRhWSwgRE9NV2luZG93KiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblks
IGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXkpCit2b2lkIFdoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2
ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAg
ICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBp
bml0TW91c2VFdmVudChldmVudE5hbWVzKCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmlldywg
MCwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5LCAwLCBudWxscHRyKTsKKyAgICBpbml0TW91c2VFdmVudChldmVudE5hbWVz
KCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCwgc2NyZWVuWCwgc2Ny
ZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCAw
LCBudWxscHRyKTsKIAogICAgIC8vIE5vcm1hbGl6ZSB0byAxMjAgbXVsdGlwbGUgZm9yIGNvbXBh
dGliaWxpdHkgd2l0aCBJRS4KICAgICBtX3doZWVsRGVsdGEgPSB7IHJhd0RlbHRhWCAqIFRpY2tN
dWx0aXBsaWVyLCByYXdEZWx0YVkgKiBUaWNrTXVsdGlwbGllciB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2
ZW50LmgKaW5kZXggNGQzNGIzMGQ2ZGVkNWVmMjgxNWE4MTM3ZTRjMjk3ZTY0MWFkZTZkYS4uMTBi
NjJlMDVjNzAxNTYwNzZmZmU1Y2YxMjczOTdlYzEzMjNkZDJkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxF
dmVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAgICAgRE9NX0RFTFRBX1BBR0UK
ICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBj
cmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsK
ICAgICBzdGF0aWMgUmVmPFdoZWVsRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBz
dHJ1Y3QgSW5pdCA6IE1vdXNlRXZlbnRJbml0IHsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGluaXRXZWJLaXRXaGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGludCBy
YXdEZWx0YVksIERPTVdpbmRvdyosIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VY
LCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJv
b2wgbWV0YUtleSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVu
dChpbnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGlu
dCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wgY3RybEtl
eSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CiAKICAgICBjb25z
dCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtV2hlZWxFdmVudD4mIHVuZGVybHlpbmdQbGF0Zm9ybUV2
ZW50KCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudDsgfQogCkBAIC03
NSw3ICs3NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2hlZWxFdmVudCgpOwogICAgIFdo
ZWVsRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7Ci0g
ICAgV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBET01XaW5kb3cqKTsKKyAg
ICBXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFJlZlB0cjxXaW5kb3dQcm94
eT4mJik7CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwKaW5kZXggOTNjNTNhNGJmYjJkYWY0YmQ0NDI3
Mzg2NmE5MmNlZDRhMWMxYzM4Ni4uYjI4MWRhMWM2NjA0NGE4YTkzZDYwZDkwZWRkZjUxZDE0YzZj
OTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmlkbApAQCAtMzksNyArMzksNyBAQAogCiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0RGlyZWN0aW9uSW52ZXJ0ZWRGcm9t
RGV2aWNlOwogCi0gICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRpb25hbCBsb25nIHdo
ZWVsRGVsdGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAsIG9wdGlvbmFsIERP
TVdpbmRvdz8gdmlldyA9IG51bGwsCisgICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRp
b25hbCBsb25nIHdoZWVsRGVsdGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAs
IG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwKICAgICAgICAgb3B0aW9uYWwgbG9u
ZyBzY3JlZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwgb3B0aW9uYWwgbG9uZyBj
bGllbnRYID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRZID0gMCwKICAgICAgICAgb3B0aW9uYWwg
Ym9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFsc2Us
CiAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9v
bGVhbiBtZXRhS2V5ID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZDE0NzI0Mjc3MjM3NDY4ZDRmNjFm
ZmUzM2M3NWZlNDZhODE5MjNkYy4uZDczYTcxYjBlMTVkZDgxOWYxNzBlZmE1ZjU2MmVmNzVjOTQy
Yjk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuY3BwCkBAIC02MzIsNyArNjMyLDcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOjppbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBW
ZWMKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpCiAgICAgICAgIHZp
ZXctPmRpc2FibGVMYXllckZsdXNoVGhyb3R0bGluZ1RlbXBvcmFyaWx5Rm9ySW50ZXJhY3Rpb24o
KTsKIAotICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0
YXRpb24obV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCwgZGljdGF0aW9uQWx0
ZXJuYXRpdmVzKTsKKyAgICBSZWY8VGV4dEV2ZW50PiBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRl
Rm9yRGljdGF0aW9uKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgdGV4dCwgZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KHRyaWdn
ZXJpbmdFdmVudCk7CiAKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGNiOGI2YjhiYmFjODViYzBlMzJkZWQyZWYzMzljMjQx
MDI5MGQzMTkuLjRlMzY4YmZkODAzYzUzNjg1MmVkY2U2MDEwNDY5NDQ4NjMxNDkxOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIEVkaXRvcjo6
cGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBib29sIHNtYXJ0UmVw
bGFjZSkKICAgICBFbGVtZW50KiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9u
KCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKLSAgICB0YXJnZXQtPmRpc3Bh
dGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShkb2N1bWVudCgpLmRv
bVdpbmRvdygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSk7CisgICAgdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoZG9jdW1lbnQoKS5k
ZWZhdWx0VmlldygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSk7CiB9CiAKIHZvaWQgRWRp
dG9yOjpwYXN0ZUFzRnJhZ21lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdt
ZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhh
bmRsaW5nIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUpCkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBF
ZGl0b3I6OnBhc3RlQXNGcmFnbWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBwYXN0aW5nRnJh
Z21lbnQsIGJvb2wgc21hcnQKICAgICBFbGVtZW50KiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJnZXRG
cm9tU2VsZWN0aW9uKCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKLSAgICB0
YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKGRv
Y3VtZW50KCkuZG9tV2luZG93KCksIFdURk1vdmUocGFzdGluZ0ZyYWdtZW50KSwgc21hcnRSZXBs
YWNlLCBtYXRjaFN0eWxlLCByZXNwZWN0c01haWxCbG9ja3F1b3RlKSk7CisgICAgdGFyZ2V0LT5k
aXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShkb2N1bWVudCgp
LmRlZmF1bHRWaWV3KCksIFdURk1vdmUocGFzdGluZ0ZyYWdtZW50KSwgc21hcnRSZXBsYWNlLCBt
YXRjaFN0eWxlLCByZXNwZWN0c01haWxCbG9ja3F1b3RlKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpw
YXN0ZUFzUGxhaW5UZXh0QnlwYXNzaW5nREhUTUwoKQpAQCAtMTg0OCw3ICsxODQ4LDcgQEAgdm9p
ZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgU2V0Q29tcG9zaXRp
b25Nb2RlIG1vZGUpCiAgICAgaW5zZXJ0VGV4dEZvckNvbmZpcm1lZENvbXBvc2l0aW9uKHRleHQp
OwogCiAgICAgaWYgKGF1dG8qIHRhcmdldCA9IGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSkK
LSAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQoKS5kb21XaW5kb3coKSwg
dGV4dCkpOworICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50LCBkb2N1bWVudCgpLmRlZmF1
bHRWaWV3KCksIHRleHQpKTsKIAogICAgIGlmIChtb2RlID09IENhbmNlbENvbXBvc2l0aW9uKSB7
CiAgICAgICAgIC8vIEFuIG9wZW4gdHlwaW5nIGNvbW1hbmQgdGhhdCBkaXNhZ3JlZXMgYWJvdXQg
Y3VycmVudCBzZWxlY3Rpb24gd291bGQgY2F1c2UgaXNzdWVzIHdpdGggdHlwaW5nIGxhdGVyIG9u
LgpAQCAtMTkwOCwxMSArMTkwOCwxMSBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIHNlbmQgYSBjb21wb3NpdGlvbnN0YXJ0IGV2ZW50IG9ubHkgd2hl
biB0aGUgZ2l2ZW4gdGV4dCBpcyBub3QgZW1wdHkgYmVjYXVzZSB0aGlzCiAgICAgICAgICAgICAv
LyBmdW5jdGlvbiBkb2Vzbid0IGNyZWF0ZSBhIGNvbXBvc2l0aW9uIG5vZGUgd2hlbiB0aGUgdGV4
dCBpcyBlbXB0eS4KICAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0RXZlbnQsIGRvY3VtZW50KCkuZG9tV2luZG93KCks
IG9yaWdpbmFsVGV4dCkpOwotICAgICAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBkb2N1bWVudCgp
LmRvbVdpbmRvdygpLCB0ZXh0KTsKKyAgICAgICAgICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZl
bnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0
RXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgb3JpZ2luYWxUZXh0KSk7CisgICAgICAg
ICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNv
bXBvc2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdGV4dCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoIXRleHQuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBv
c2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZG9tV2luZG93KCksIHRleHQpOworICAgICAg
ICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBv
c2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdGV4dCk7CiAKICAg
ICAgICAgaWYgKGV2ZW50KQogICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KCpldmVu
dCk7CkBAIC0xOTIzLDcgKzE5MjMsNyBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgIGlm
ICh0ZXh0LmlzRW1wdHkoKSkgewogICAgICAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rp
b24oZG9jdW1lbnQoKSwgVHlwaW5nQ29tbWFuZDo6UHJldmVudFNwZWxsQ2hlY2tpbmcsIFR5cGlu
Z0NvbW1hbmQ6OlRleHRDb21wb3NpdGlvblBlbmRpbmcpOwogICAgICAgICBpZiAodGFyZ2V0KQot
ICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQoKS5kb21XaW5kb3co
KSwgdGV4dCkpOworICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9u
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQo
KS5kZWZhdWx0VmlldygpLCB0ZXh0KSk7CiAgICAgfQogCiAgICAgbV9jb21wb3NpdGlvbk5vZGUg
PSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCmluZGV4IGEzZDdkOTc3
MGNlYmQwNjI4Y2E3YmVjMjRjZmE2NzVkM2I5N2JiNTQuLjlkNTgxY2VkZmE4NDFlMGFkZjFhYWM0
MzI1OTFjOGI2ZjJmNzY1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKQEAg
LTExNCw3ICsxMTQsNyBAQCBSZWY8RG9jdW1lbnRQYXJzZXI+IEhUTUxEb2N1bWVudDo6Y3JlYXRl
UGFyc2VyKCkKIH0KIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
ZG9tLmh0bWwjZG9tLWRvY3VtZW50LW5hbWVkaXRlbQotc3RkOjpvcHRpb25hbDxWYXJpYW50PFJl
ZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+
PiBIVE1MRG9jdW1lbnQ6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitzdGQ6
Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gSFRNTERvY3VtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKQogewogICAgIGlmIChuYW1lLmlzTnVsbCgpIHx8ICFoYXNEb2N1bWVu
dE5hbWVkSXRlbSgqbmFtZS5pbXBsKCkpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtMTIyLDE2ICsxMjIsMTYgQEAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxET01XaW5k
b3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4KICAgICBpZiAoVU5M
SUtFTFkoZG9jdW1lbnROYW1lZEl0ZW1Db250YWluc011bHRpcGxlRWxlbWVudHMoKm5hbWUuaW1w
bCgpKSkpIHsKICAgICAgICAgYXV0byBjb2xsZWN0aW9uID0gZG9jdW1lbnROYW1lZEl0ZW1zKG5h
bWUpOwogICAgICAgICBBU1NFUlQoY29sbGVjdGlvbi0+bGVuZ3RoKCkgPiAxKTsKLSAgICAgICAg
cmV0dXJuIFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRy
PEhUTUxDb2xsZWN0aW9uPj4geyBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHsgV1RGTW92ZShjb2xs
ZWN0aW9uKSB9IH07CisgICAgICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4s
IFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBSZWZQdHI8SFRNTENv
bGxlY3Rpb24+IHsgV1RGTW92ZShjb2xsZWN0aW9uKSB9IH07CiAgICAgfQogCiAgICAgYXV0byYg
ZWxlbWVudCA9ICpkb2N1bWVudE5hbWVkSXRlbSgqbmFtZS5pbXBsKCkpOwogICAgIGlmIChVTkxJ
S0VMWShpczxIVE1MSUZyYW1lRWxlbWVudD4oZWxlbWVudCkpKSB7CiAgICAgICAgIGlmIChhdXRv
IGRvbVdpbmRvdyA9IG1ha2VSZWZQdHIoZG93bmNhc3Q8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1l
bnQpLmNvbnRlbnRXaW5kb3coKSkpCi0gICAgICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8
RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7IFdU
Rk1vdmUoZG9tV2luZG93KSB9OworICAgICAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPFdp
bmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7IFdU
Rk1vdmUoZG9tV2luZG93KSB9OwogICAgIH0KIAotICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxE
T01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgUmVm
UHRyPEVsZW1lbnQ+IHsgJmVsZW1lbnQgfSB9OworICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxX
aW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBS
ZWZQdHI8RWxlbWVudD4geyAmZWxlbWVudCB9IH07CiB9CiAKIFZlY3RvcjxBdG9taWNTdHJpbmc+
IEhUTUxEb2N1bWVudDo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRG9jdW1lbnQuaAppbmRleCBhMzYzOTc0MDZkMzQ5ZjU3NmY0ODlkM2ExZjYwMGFkYTFi
ZGRjZmUxLi4wYjNkMzQxNGE0YmVmYTAzMzVjNGUyMjlhNTk1ODVlYjA1ZWJkNjBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERvY3VtZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIGludCB3aWR0aCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBoZWlnaHQo
KTsKICAgICAKLSAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJl
ZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IG5hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmcmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1By
b3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gbmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHN1cHBvcnRl
ZFByb3BlcnR5TmFtZXMoKSBjb25zdDsKIAogICAgIEVsZW1lbnQqIGRvY3VtZW50TmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRO
YW1lZEl0ZW0uZ2V0RWxlbWVudEJ5RG9jdW1lbnROYW1lZEl0ZW0obmFtZSwgKnRoaXMpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwKaW5kZXggMTI3ZjI2NDVlMDMyMmRjNzk4ODEy
ODA0ZmY1ZDc5NWRhYzhhNTgwZi4uYTk5OWIwM2Y2MjI4YjI1ZWJkMWI3Yjk0Mzg2Yjk5ZTM5NWI4
NWY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmlkbApAQCAtMjMsNSArMjMsNSBA
QAogICAgIE5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cywKICAgICBPdmVycmlkZUJ1
aWx0aW5zLAogXSBpbnRlcmZhY2UgSFRNTERvY3VtZW50IDogRG9jdW1lbnQgeyAgICAKLSAgICBn
ZXR0ZXIgKERPTVdpbmRvdyBvciBFbGVtZW50IG9yIEhUTUxDb2xsZWN0aW9uKSAoRE9NU3RyaW5n
IG5hbWUpOworICAgIGdldHRlciAoV2luZG93UHJveHkgb3IgRWxlbWVudCBvciBIVE1MQ29sbGVj
dGlvbikgKERPTVN0cmluZyBuYW1lKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVF
bGVtZW50LmlkbAppbmRleCBjZDYzYTIxMmFkNDMzMTRjNWJlMjMwNGRkZTcwMDk3YzdiZjg4MzUz
Li5lZDdjMGI2ZTI3NzI5OWI2NWNhMjE4ZjIxZTE4MjYxZTUxM2RmYzBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwKQEAgLTI2LDcgKzI2LDcgQEAgaW50ZXJmYWNl
IEhUTUxGcmFtZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW1JlZmxlY3QsIFVSTF0gYXR0
cmlidXRlIFVTVlN0cmluZyBsb25nRGVzYzsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIGJvb2xl
YW4gbm9SZXNpemU7CiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSByZWFkb25seSBhdHRyaWJ1
dGUgRG9jdW1lbnQgY29udGVudERvY3VtZW50OwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01X
aW5kb3cgY29udGVudFdpbmRvdzsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkg
Y29udGVudFdpbmRvdzsKIAogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVt
cHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luSGVpZ2h0OwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1
dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luV2lkdGg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKaW5kZXggNTg4NzM5
ODQ3Y2JiMDhjMzcxN2MxM2JlYmQzYWE5MWQ5OWJiNGNjNS4uYjliZWYxNzYzZTI2MWQ3Yzk4MmUx
ZjA1NTUwOWMxNjlkZjg0MDYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVPd25lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
T3duZXJFbGVtZW50LmNwcApAQCAtOTksOSArOTksOSBAQCBEb2N1bWVudCogSFRNTEZyYW1lT3du
ZXJFbGVtZW50Ojpjb250ZW50RG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRG
cmFtZSA/IG1fY29udGVudEZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKIH0KIAotRE9NV2lu
ZG93KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRXaW5kb3coKSBjb25zdAorV2luZG93
UHJveHkqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVudFdpbmRvdygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8gbV9jb250ZW50RnJhbWUtPmRvY3VtZW50KCktPmRv
bVdpbmRvdygpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyAmbV9jb250
ZW50RnJhbWUtPndpbmRvd1Byb3h5KCkgOiBudWxscHRyOwogfQogCiB2b2lkIEhUTUxGcmFtZU93
bmVyRWxlbWVudDo6c2V0U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCmluZGV4IDg2NWVkZGI5MWY1N2Uz
NDViNGI2ODdmNzYwZTgzMzI1NDI1YzRmYzEuLjgwZjE4MjAwZGYwZDRhNzRkN2YwZTNkYmNhMTUy
NDU2MDIyNGFiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1l
bnQuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SFRNTEZyYW1lT3du
ZXJFbGVtZW50KCk7CiAKICAgICBGcmFtZSogY29udGVudEZyYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZW50RnJhbWU7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBET01XaW5kb3cqIGNvbnRlbnRX
aW5kb3coKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXaW5kb3dQcm94eSogY29udGVudFdp
bmRvdygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KiBjb250ZW50RG9jdW1l
bnQoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Q29udGVudEZyYW1lKEZyYW1lKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAppbmRleCAyODU2NDI0OTUwYTM0
OWM5YjcyOTUwM2M1ZjRmMTIxYThlYzRiMmI3Li41ZDIzN2Q0ODI2YzcyZjg4N2I3ZGIyZmI1MWQ2
ZTk3ODY1Njc5YTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNl
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5jcHAKQEAgLTIzMSwxNSArMjMxLDEzIEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6cmVt
b3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyCiAgICAg
fQogfQogCi1ET01XaW5kb3cqIEhUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpCitXaW5kb3dQcm94eSogSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFt
ZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKICAgICBhdXRvIGZyYW1lRWxlbWVu
dCA9IG1ha2VSZWZQdHIoY2hpbGRyZW4oKS0+bmFtZWRJdGVtKG5hbWUpKTsKICAgICBpZiAoIWlz
PEhUTUxGcmFtZUVsZW1lbnQ+KGZyYW1lRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgaWYgKGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGRvd25jYXN0PEhUTUxGcmFt
ZUVsZW1lbnQ+KGZyYW1lRWxlbWVudC5nZXQoKSktPmNvbnRlbnREb2N1bWVudCgpKSkKLSAgICAg
ICAgcmV0dXJuIGRvY3VtZW50LT5kb21XaW5kb3coKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gZG93bmNhc3Q8SFRNTEZyYW1lRWxlbWVudD4oKmZyYW1lRWxlbWVudCkuY29udGVu
dFdpbmRvdygpOwogfQogCiBWZWN0b3I8QXRvbWljU3RyaW5nPiBIVE1MRnJhbWVTZXRFbGVtZW50
OjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmgKaW5kZXggZDFmMzc5YjczNWNiNzdmNWU1YWQyZGVjNGViZjE0NDBj
N2VlYTMzMi4uYzNjNjhiNTdiZjk3N2U3YWNlYTkyZmYzYWVjMDk2NDk2ZjcxMjJiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8SFRNTEZyYW1lU2V0RWxlbWVudD4gZmluZENvbnRh
aW5pbmcoRWxlbWVudCogZGVzY2VuZGFudCk7CiAgICAgCiAgICAgVmVjdG9yPEF0b21pY1N0cmlu
Zz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0OwotICAgIERPTVdpbmRvdyogbmFtZWRJ
dGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFdpbmRvd1Byb3h5KiBuYW1lZEl0ZW0oY29u
c3QgQXRvbWljU3RyaW5nJik7CiAKIHByaXZhdGU6CiAgICAgSFRNTEZyYW1lU2V0RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZVNldEVsZW1lbnQuaWRsCmluZGV4IDMyNTBiOTQ5MGVkYjhiYjE4ZjQ3Yjk4MmNiYjdm
NmI0NDA4ZDMxMjUuLjY5NDIxNzNlNzQ0MDkyNDljMjA1YjBiM2M1MjYyOWUyYWNjNDY5NGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbApAQCAtMzMsNyAr
MzMsNyBAQCBpbnRlcmZhY2UgSFRNTEZyYW1lU2V0RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKIAog
ICAgIC8vIE5vbi1zdGFuZGFyZCBuYW1lZCBnZXR0ZXIKICAgICAvLyBGSVhNRTogVGhpcyBpcyBu
b3QgaW4gdGhlIHN0YW5kYXJkLCBjYW4gd2UgcmVtb3ZlIHRoaXM/Ci0gICAgZ2V0dGVyIERPTVdp
bmRvdyAoRE9NU3RyaW5nIG5hbWUpOworICAgIGdldHRlciBXaW5kb3dQcm94eSAoRE9NU3RyaW5n
IG5hbWUpOwogfTsKIAogSFRNTEZyYW1lU2V0RWxlbWVudCBpbXBsZW1lbnRzIFdpbmRvd0V2ZW50
SGFuZGxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVt
ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCmluZGV4
IDNlM2JkY2MxMTA0MTg4YTc4ZGRiYThlMjc2NDM0ZTRlNjZlNjkwYmMuLmMxNjM5MjJlZTQyMGU3
NWMwNGRkMTI4MTk0YjUzNWYzODNjOTVkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQuaWRsCkBAIC0zOCw3ICszOCw3IEBAIGludGVyZmFjZSBIVE1MSUZyYW1lRWxl
bWVudCA6IEhUTUxFbGVtZW50IHsKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9u
bHkgYXR0cmlidXRlIERvY3VtZW50IGNvbnRlbnREb2N1bWVudDsKIAotICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01XaW5kb3cgY29udGVudFdpbmRvdzsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
V2luZG93UHJveHkgY29udGVudFdpbmRvdzsKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZSwg
TWF5VGhyb3dFeGNlcHRpb25dIERvY3VtZW50IGdldFNWR0RvY3VtZW50KCk7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggZDE1MTI3M2EzNTk0OTNlMWI2YzUzOGYw
ZjNkOTMxNjg4MDM2NGExNy4uODVjMTNmZjdmMDIwYWE5YWMyYzZlNGRmMTcyNDZkNDQxMTljNWE1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1
bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggYjAyM2E0ZTJlZjI4NDMw
MzdiZTVkMDhiZjJhNGZlMzgzMWQ1ZmQ4Zi4uM2UyYTkxNjZmMmM4MDFhZTU1NjYzYmNjYjFiNDkw
YWUwOWZhZjFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTQ4LDcgKzE0OCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIGNsYXNzIFBvc3RNZXNzYWdlVGltZXIg
OiBwdWJsaWMgVGltZXJCYXNlIHsKIHB1YmxpYzoKLSAgICBQb3N0TWVzc2FnZVRpbWVyKERPTVdp
bmRvdyYgd2luZG93LCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luLCBET01XaW5kb3cmIHNvdXJjZSwgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiYmIHRhcmdldE9yaWdpbiwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFja1RyYWNl
KQorICAgIFBvc3RNZXNzYWdlVGltZXIoRE9NV2luZG93JiB3aW5kb3csIE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiBzb3VyY2UsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0YXJnZXRPcmln
aW4sIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3RhY2tUcmFjZSkKICAgICAgICAgOiBtX3dp
bmRvdyh3aW5kb3cpCiAgICAgICAgICwgbV9tZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpCiAgICAg
ICAgICwgbV9vcmlnaW4oc291cmNlT3JpZ2luKQpAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoK
IAogICAgIFJlZjxNZXNzYWdlRXZlbnQ+IGV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCiAgICAgewotICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoTWVzc2Fn
ZVBvcnQ6OmVudGFuZ2xlUG9ydHMoY29udGV4dCwgV1RGTW92ZShtX21lc3NhZ2UudHJhbnNmZXJy
ZWRQb3J0cykpLCBtX21lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBtX29yaWdpbiwg
eyB9LCBNZXNzYWdlRXZlbnRTb3VyY2UoUmVmUHRyPERPTVdpbmRvdz4oV1RGTW92ZShtX3NvdXJj
ZSkpKSk7CisgICAgICAgIHJldHVybiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShNZXNzYWdlUG9ydDo6
ZW50YW5nbGVQb3J0cyhjb250ZXh0LCBXVEZNb3ZlKG1fbWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRz
KSksIG1fbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCksIG1fb3JpZ2luLCB7IH0sIG1f
c291cmNlID8gc3RkOjptYWtlX29wdGlvbmFsKE1lc3NhZ2VFdmVudFNvdXJjZShXVEZNb3ZlKG1f
c291cmNlKSkpIDogc3RkOjpudWxsb3B0KTsKICAgICB9CiAKICAgICBTZWN1cml0eU9yaWdpbiog
dGFyZ2V0T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRPcmlnaW4uZ2V0KCk7IH0KQEAg
LTE4MCw3ICsxODAsNyBAQCBwcml2YXRlOgogICAgIFJlZjxET01XaW5kb3c+IG1fd2luZG93Owog
ICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1fbWVzc2FnZTsKICAgICBTdHJpbmcgbV9vcmln
aW47Ci0gICAgUmVmPERPTVdpbmRvdz4gbV9zb3VyY2U7CisgICAgUmVmUHRyPFdpbmRvd1Byb3h5
PiBtX3NvdXJjZTsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fdGFyZ2V0T3JpZ2luOwog
ICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IG1fc3RhY2tUcmFjZTsKICAgICBSZWZQdHI8VXNl
ckdlc3R1cmVUb2tlbj4gbV91c2VyR2VzdHVyZVRvRm9yd2FyZDsKQEAgLTk2MCw3ICs5NjAsOCBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgRE9NV2luZG93JiBpbmN1bQogICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1l
c3NhZ2UgeyBtZXNzYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZGlzZW50YW5nbGVkUG9y
dHMucmVsZWFzZVJldHVyblZhbHVlKCkgfTsKIAogICAgIC8vIFNjaGVkdWxlIHRoZSBtZXNzYWdl
LgotICAgIGF1dG8qIHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGltZXIoKnRoaXMsIFdURk1vdmUo
bWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgaW5jdW1iZW50V2luZG93LCBXVEZNb3ZlKHRhcmdldCks
IFdURk1vdmUoc3RhY2tUcmFjZSkpOworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gaW5jdW1iZW50
V2luZG93UHJveHkgPSBpbmN1bWJlbnRXaW5kb3cuZnJhbWUoKSA/ICZpbmN1bWJlbnRXaW5kb3cu
ZnJhbWUoKS0+d2luZG93UHJveHkoKSA6IG51bGxwdHI7CisgICAgYXV0byogdGltZXIgPSBuZXcg
UG9zdE1lc3NhZ2VUaW1lcigqdGhpcywgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luLCBX
VEZNb3ZlKGluY3VtYmVudFdpbmRvd1Byb3h5KSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHN0
YWNrVHJhY2UpKTsKICAgICB0aW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CiAKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFBvc3RNZXNzYWdlKCptX2ZyYW1lLCAqdGltZXIsIHN0YXRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggOTE3NGFmZDUzMjE2
YzExMmM0YjVlMGQ1NzU4N2M4NmQxZmM5YzVhMS4uN2M0OWEyMTdmMDJhNjg1NTQ3MGRiMzE3N2I4
ZjU5MzU0MzhmNTY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAg
LTUwOCw3ICs1MDgsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1dEV2
ZW50Rm9yKEZyYW1lKiBpbm5lckZyYW1lLCBjb25zdCBEcmFnRGF0YQogICAgIFN0cmluZyB0ZXh0
ID0gbV9wYWdlLmRyYWdDYXJldENvbnRyb2xsZXIoKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgp
ID8gZW1wdHlTdHJpbmcoKSA6IGRyYWdEYXRhLmFzUGxhaW5UZXh0KCk7CiAgICAgRWxlbWVudCog
dGFyZ2V0ID0gaW5uZXJGcmFtZS0+ZWRpdG9yKCkuZmluZEV2ZW50VGFyZ2V0RnJvbShtX3BhZ2Uu
ZHJhZ0NhcmV0Q29udHJvbGxlcigpLmNhcmV0UG9zaXRpb24oKSk7CiAgICAgLy8gRklYTUU6IFdo
YXQgZ3VhcmFudGVlcyB0YXJnZXQgaXMgbm90IG51bGw/Ci0gICAgYXV0byBldmVudCA9IFRleHRF
dmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwg
dGV4dCk7CisgICAgYXV0byBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZy
YW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCB0ZXh0KTsKICAgICB0YXJnZXQtPmRpc3Bh
dGNoRXZlbnQoZXZlbnQpOwogICAgIHJldHVybiAhZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA4N2QxMjc3NGNjNmYzNGFl
MDcwMTAwZDE5ZWViNzY1NjVmMjUwNzlkLi43ZDJjOTNhM2MwZjk4MWY4MDU5ZWE4YjdmMzg2YmZh
NmZlMGMwMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zODAyLDcg
KzM4MDIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVGV4dElucHV0RXZlbnQoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBFdmVudCogdW5kZXJseWluZ0V2ZQogICAgIGlmIChGcmFtZVZpZXcqIHZp
ZXcgPSBtX2ZyYW1lLnZpZXcoKSkKICAgICAgICAgdmlldy0+ZGlzYWJsZUxheWVyRmx1c2hUaHJv
dHRsaW5nVGVtcG9yYXJpbHlGb3JJbnRlcmFjdGlvbigpOwogCi0gICAgUmVmPFRleHRFdmVudD4g
ZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygp
LCB0ZXh0LCBpbnB1dFR5cGUpOworICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50
OjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCB0ZXh0LCBpbnB1dFR5
cGUpOwogICAgIGV2ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQodW5kZXJseWluZ0V2ZW50KTsKIAog
ICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4
IGE4NDI2NWFhNzkzNmMzNDg5MmNjOWUwNzFhOTkwYjlhZDFlNTExNjguLjgyODRhNjUzMWRhM2Fh
MDFkMGZmYmNlZGIwODU4MTE3MjBiNjZiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0yMTIs
NiArMjEyLDcgQEAgUmVmPEZyYW1lPiBGcmFtZTo6Y3JlYXRlKFBhZ2UqIHBhZ2UsIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFtZUwKIAogRnJhbWU6On5GcmFtZSgpCiB7
CisgICAgd2luZG93UHJveHkoKS5kZXN0cm95QWxsSlNXaW5kb3dQcm94aWVzKCk7CiAgICAgc2V0
VmlldyhudWxscHRyKTsKICAgICBsb2FkZXIoKS5jYW5jZWxBbmRDbGVhcigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3cuY3BwCmluZGV4IDdiMDljODE4
N2M0NjQwMDY3MDZmYzNlY2E0NzdiNjk3MDM2NWJhMjIuLjY3N2Q2NmMxMjU0NDgzMTQxN2Q0ZDgx
NDQ0N2Y0MDViMWI1MzAzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01ET01XaW5kb3cuY3BwCkBAIC02NCw2ICs2NCwyMiBAQCBXZWJLaXRET01ET01XaW5kb3cqIGtp
dChXZWJDb3JlOjpET01XaW5kb3cqIG9iaikKICAgICByZXR1cm4gd3JhcERPTVdpbmRvdyhvYmop
OwogfQogCitXZWJLaXRET01ET01XaW5kb3cqIGtpdChXZWJDb3JlOjpXaW5kb3dQcm94eSogd2lu
ZG93UHJveHkpCit7CisgICAgaWYgKCF3aW5kb3dQcm94eSB8fCAhaXM8V2ViQ29yZTo6RE9NV2lu
ZG93Pih3aW5kb3dQcm94eS0+d2luZG93KCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBraXQoZG93bmNhc3Q8V2ViQ29yZTo6RE9NV2luZG93Pih3aW5kb3dQcm94eS0+
d2luZG93KCkpKTsKK30KKworV2ViQ29yZTo6V2luZG93UHJveHkqIHRvV2luZG93UHJveHkoV2Vi
S2l0RE9NRE9NV2luZG93KiB2aWV3KQoreworICAgIGF1dG8qIHdpbmRvdyA9IGNvcmUodmlldyk7
CisgICAgaWYgKCF3aW5kb3cgfHwgIXdpbmRvdy0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuICZ3aW5kb3ctPmZyYW1lKCktPndpbmRvd1Byb3h5KCk7Cit9CisK
IFdlYkNvcmU6OkRPTVdpbmRvdyogY29yZShXZWJLaXRET01ET01XaW5kb3cqIHJlcXVlc3QpCiB7
CiAgICAgcmV0dXJuIHJlcXVlc3QgPyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpET01XaW5kb3cqPihX
RUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCkgOiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTURPTVdpbmRvd1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3dQcml2YXRlLmgKaW5kZXggZTMx
ZDIyNzViOGI4MWNhZjgwZTIwMWU2ZGQ2YjFhZTk2MmNjZmY5Mi4uNjY4NGVjNjc4OGVkZWZiMGU4
NmQ1ZGQxNTQyNjhlNmZkMzVmNjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdpbmRvd1ByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NRE9NV2luZG93UHJpdmF0ZS5oCkBAIC0yMSwxMiArMjEsMTUgQEAKICNkZWZp
bmUgV2ViS2l0RE9NRE9NV2luZG93UHJpdmF0ZV9oCiAKICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdp
bmRvdy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93UHJveHkuaD4KICNpbmNsdWRlIDx3ZWJr
aXRkb20vV2ViS2l0RE9NRE9NV2luZG93Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogV2ViS2l0
RE9NRE9NV2luZG93KiB3cmFwRE9NV2luZG93KFdlYkNvcmU6OkRPTVdpbmRvdyopOwogV2ViS2l0
RE9NRE9NV2luZG93KiBraXQoV2ViQ29yZTo6RE9NV2luZG93Kik7CitXZWJLaXRET01ET01XaW5k
b3cqIGtpdChXZWJDb3JlOjpXaW5kb3dQcm94eSopOwogV2ViQ29yZTo6RE9NV2luZG93KiBjb3Jl
KFdlYktpdERPTURPTVdpbmRvdyopOworV2ViQ29yZTo6V2luZG93UHJveHkqIHRvV2luZG93UHJv
eHkoV2ViS2l0RE9NRE9NV2luZG93Kik7CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlm
IC8qIFdlYktpdERPTURPTVdpbmRvd1ByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxG
cmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxGcmFtZUVsZW1lbnQuY3BwCmluZGV4IGMxNWY2YTQ4
NjRmNzgzZWMwNzM2YjRjYTM3OTZjNmRkNjZiMzc2MmEuLjViNjcxNTIzOGM2OTM5YWE3Y2Q5MDc2
YzI1Yjk5MjUxYzZkMTU1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRnJhbWVFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NSFRNTEZyYW1lRWxlbWVudC5jcHAKQEAgLTQ5Miw4ICs0OTIsNyBAQCBXZWJLaXRE
T01ET01XaW5kb3cqIHdlYmtpdF9kb21faHRtbF9mcmFtZV9lbGVtZW50X2dldF9jb250ZW50X3dp
bmRvdyhXZWJLaXRET01IVAogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfRlJBTUVfRUxF
TUVOVChzZWxmKSwgMCk7CiAgICAgV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudCogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RE9NV2luZG93PiBnb2JqZWN0
UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+Y29udGVudFdpbmRvdygpKTsKLSAgICByZXR1cm4g
V2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0
KGl0ZW0tPmNvbnRlbnRXaW5kb3coKSk7CiB9CiAKIGdsb25nIHdlYmtpdF9kb21faHRtbF9mcmFt
ZV9lbGVtZW50X2dldF93aWR0aChXZWJLaXRET01IVE1MRnJhbWVFbGVtZW50KiBzZWxmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTUtleWJvYXJkRXZlbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUtleWJvYXJkRXZlbnQuY3BwCmlu
ZGV4IDQxZmNjOTc4MzQzZDQyMzhkYzZiNTFhNzA0Mzk4YWY3M2FiYzgyZDAuLjdkYTMyNjNmMGJl
MzJhNTE2YjBjOWMzYWFmZjE4NDgwMzM1MTIwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01LZXlib2FyZEV2
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NS2V5Ym9hcmRFdmVudC5jcHAKQEAgLTIwMiw5ICsyMDIsOCBAQCB2
b2lkIHdlYmtpdF9kb21fa2V5Ym9hcmRfZXZlbnRfaW5pdF9rZXlib2FyZF9ldmVudChXZWJLaXRE
T01LZXlib2FyZEV2ZW50KiBzZWxmLAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoa2V5SWRlbnRpZmll
cik7CiAgICAgV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRUeXBlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4
KHR5cGUpOwotICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogY29udmVydGVkVmlldyA9IFdlYktpdDo6
Y29yZSh2aWV3KTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRLZXlJZGVudGlmaWVyID0gV1RG
OjpTdHJpbmc6OmZyb21VVEY4KGtleUlkZW50aWZpZXIpOwotICAgIGl0ZW0tPmluaXRLZXlib2Fy
ZEV2ZW50KGNvbnZlcnRlZFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29udmVydGVkVmll
dywgY29udmVydGVkS2V5SWRlbnRpZmllciwgbG9jYXRpb24sIGN0cmxLZXksIGFsdEtleSwgc2hp
ZnRLZXksIG1ldGFLZXksIGFsdEdyYXBoS2V5KTsKKyAgICBpdGVtLT5pbml0S2V5Ym9hcmRFdmVu
dChjb252ZXJ0ZWRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdlYktpdDo6dG9XaW5kb3dQ
cm94eSh2aWV3KSwgY29udmVydGVkS2V5SWRlbnRpZmllciwgbG9jYXRpb24sIGN0cmxLZXksIGFs
dEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGFsdEdyYXBoS2V5KTsKIH0KIAogZ2NoYXIqIHdlYmtp
dF9kb21fa2V5Ym9hcmRfZXZlbnRfZ2V0X2tleV9pZGVudGlmaWVyKFdlYktpdERPTUtleWJvYXJk
RXZlbnQqIHNlbGYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTW91c2VFdmVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTW91c2VF
dmVudC5jcHAKaW5kZXggMDU4MDBhMzU3ZmFjNjc0ZGI4YzNkMzM2NWUxY2U1YzY5NjViNjcyOC4u
MjE3ZTU2NWE0YWI4NjMxZWVkMmY1MTE1MTExNDZkNmEyMDE4ZWM4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TU1vdXNlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Nb3VzZUV2ZW50LmNwcApAQCAtMzE5LDkgKzMxOSw4
IEBAIHZvaWQgd2Via2l0X2RvbV9tb3VzZV9ldmVudF9pbml0X21vdXNlX2V2ZW50KFdlYktpdERP
TU1vdXNlRXZlbnQqIHNlbGYsIGNvbnN0IGdjCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
RE9NX0lTX0VWRU5UX1RBUkdFVChyZWxhdGVkVGFyZ2V0KSk7CiAgICAgV2ViQ29yZTo6TW91c2VF
dmVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0
ZWRUeXBlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHR5cGUpOwotICAgIFdlYkNvcmU6OkRPTVdp
bmRvdyogY29udmVydGVkVmlldyA9IFdlYktpdDo6Y29yZSh2aWV3KTsKICAgICBXZWJDb3JlOjpF
dmVudFRhcmdldCogY29udmVydGVkUmVsYXRlZFRhcmdldCA9IFdlYktpdDo6Y29yZShyZWxhdGVk
VGFyZ2V0KTsKLSAgICBpdGVtLT5pbml0TW91c2VFdmVudChjb252ZXJ0ZWRUeXBlLCBjYW5CdWJi
bGUsIGNhbmNlbGFibGUsIGNvbnZlcnRlZFZpZXcsIGRldGFpbCwgc2NyZWVuWCwgc2NyZWVuWSwg
Y2xpZW50WCwgY2xpZW50WSwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSwgYnV0
dG9uLCBjb252ZXJ0ZWRSZWxhdGVkVGFyZ2V0KTsKKyAgICBpdGVtLT5pbml0TW91c2VFdmVudChj
b252ZXJ0ZWRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdlYktpdDo6dG9XaW5kb3dQcm94
eSh2aWV3KSwgZGV0YWlsLCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJs
S2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBidXR0b24sIGNvbnZlcnRlZFJlbGF0ZWRU
YXJnZXQpOwogfQogCiBnbG9uZyB3ZWJraXRfZG9tX21vdXNlX2V2ZW50X2dldF9zY3JlZW5feChX
ZWJLaXRET01Nb3VzZUV2ZW50KiBzZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVVJRXZlbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTVVJRXZlbnQuY3BwCmluZGV4IDlhZTAxMjM5YTgyNmNmOGVmMmQ0MDYyMGQ1YzQzNzRiNjAy
NDlkZmMuLmEwZjZhOTAxMDRkMGVlYTNkZmYzOTk1MTdmYzg4Yjg0YjM5MTRiNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01VSUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVUlFdmVudC5jcHAKQEAgLTIwNCw4ICsyMDQs
NyBAQCB2b2lkIHdlYmtpdF9kb21fdWlfZXZlbnRfaW5pdF91aV9ldmVudChXZWJLaXRET01VSUV2
ZW50KiBzZWxmLCBjb25zdCBnY2hhciogdHlwZQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0RPTV9JU19ET01fV0lORE9XKHZpZXcpKTsKICAgICBXZWJDb3JlOjpVSUV2ZW50KiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFR5cGUgPSBXVEY6
OlN0cmluZzo6ZnJvbVVURjgodHlwZSk7Ci0gICAgV2ViQ29yZTo6RE9NV2luZG93KiBjb252ZXJ0
ZWRWaWV3ID0gV2ViS2l0Ojpjb3JlKHZpZXcpOwotICAgIGl0ZW0tPmluaXRVSUV2ZW50KGNvbnZl
cnRlZFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29udmVydGVkVmlldywgZGV0YWlsKTsK
KyAgICBpdGVtLT5pbml0VUlFdmVudChjb252ZXJ0ZWRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIFdlYktpdDo6dG9XaW5kb3dQcm94eSh2aWV3KSwgZGV0YWlsKTsKIH0KIAogV2ViS2l0RE9N
RE9NV2luZG93KiB3ZWJraXRfZG9tX3VpX2V2ZW50X2dldF92aWV3KFdlYktpdERPTVVJRXZlbnQq
IHNlbGYpCkBAIC0yMTMsOCArMjEyLDcgQEAgV2ViS2l0RE9NRE9NV2luZG93KiB3ZWJraXRfZG9t
X3VpX2V2ZW50X2dldF92aWV3KFdlYktpdERPTVVJRXZlbnQqIHNlbGYpCiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9ET01fSVNfVUlfRVZFTlQoc2VsZiksIDApOwogICAgIFdlYkNvcmU6OlVJRXZlbnQqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkRPTVdpbmRvdz4g
Z29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPnZpZXcoKSk7Ci0gICAgcmV0dXJuIFdl
YktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOworICAgIHJldHVybiBXZWJLaXQ6OmtpdChp
dGVtLT52aWV3KCkpOwogfQogCiBnbG9uZyB3ZWJraXRfZG9tX3VpX2V2ZW50X2dldF9kZXRhaWwo
V2ViS2l0RE9NVUlFdmVudCogc2VsZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01XaGVlbEV2ZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01XaGVlbEV2ZW50LmNwcAppbmRleCAwZTFiYTZkYTU1YzFjNDNlZWU2NGFlOWExZWQ1YWI2
NDQ0ZjlmNGY5Li5lNzc0Y2QxNjdlY2IzNDkxMTQxOTA4ZTM4OWRkNTBhMjU0NDZjZWFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NV2hlZWxFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVdoZWVsRXZlbnQuY3BwCkBAIC0x
MzEsOCArMTMxLDcgQEAgdm9pZCB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2luaXRfd2hlZWxfZXZl
bnQoV2ViS2l0RE9NV2hlZWxFdmVudCogc2VsZiwgZ2xvbmcgd2gKICAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9ET01fSVNfV0hFRUxfRVZFTlQoc2VsZikpOwogICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19ET01fV0lORE9XKHZpZXcpKTsKICAgICBXZWJDb3JlOjpXaGVlbEV2
ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFdlYkNvcmU6OkRPTVdpbmRvdyog
Y29udmVydGVkVmlldyA9IFdlYktpdDo6Y29yZSh2aWV3KTsKLSAgICBpdGVtLT5pbml0V2ViS2l0
V2hlZWxFdmVudCh3aGVlbERlbHRhWCwgd2hlZWxEZWx0YVksIGNvbnZlcnRlZFZpZXcsIHNjcmVl
blgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVudFksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXks
IG1ldGFLZXkpOworICAgIGl0ZW0tPmluaXRXZWJLaXRXaGVlbEV2ZW50KHdoZWVsRGVsdGFYLCB3
aGVlbERlbHRhWSwgV2ViS2l0Ojp0b1dpbmRvd1Byb3h5KHZpZXcpLCBzY3JlZW5YLCBzY3JlZW5Z
LCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KTsK
IH0KIAogZ2xvbmcgd2Via2l0X2RvbV93aGVlbF9ldmVudF9nZXRfd2hlZWxfZGVsdGFfeChXZWJL
aXRET01XaGVlbEV2ZW50KiBzZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUFic3RyYWN0Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01BYnN0cmFjdFZpZXcubW0KaW5kZXggMWE0YzI5YjFiMGRkYWM4MjI1N2JkNmY0YmE2ZGM0NGZm
MzkxMmU4OS4uMTY5ZTRhZTVmZTc3NWI5OGQyNGNkNDgwNmE1YTljNTA3OGUxMGUwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3Lm1tCkBAIC0zNiw2
ICszNiw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Ro
cmVhZENoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvV2luZG93UHJveHkuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6RnJhbWUqPihfaW50ZXJuYWwpCiAKQEAgLTEwMCwzICsxMDEsMTkg
QEAgRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6QWJzdHJhY3RET01XaW5kb3cqIHZhbHVl
KQogCiAgICAgcmV0dXJuIGtpdChkb3duY2FzdDxXZWJDb3JlOjpET01XaW5kb3c+KHZhbHVlKSk7
CiB9CisKK0RPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OldpbmRvd1Byb3h5KiB3aW5kb3dQ
cm94eSkKK3sKKyAgICBpZiAoIXdpbmRvd1Byb3h5KQorICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgcmV0dXJuIGtpdCh3aW5kb3dQcm94eS0+d2luZG93KCkpOworfQorCitXZWJDb3JlOjpXaW5k
b3dQcm94eSogdG9XaW5kb3dQcm94eShET01BYnN0cmFjdFZpZXcgKnZpZXcpCit7CisgICAgYXV0
byogd2luZG93ID0gY29yZSh2aWV3KTsKKyAgICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LT5mcmFt
ZSgpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiAmd2luZG93LT5mcmFtZSgpLT53
aW5kb3dQcm94eSgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaAppbmRleCBjNGQ3MzI1YzdmMjViYjViODYxMjc0MTZl
M2Q5MGQyODIxNGMxMTk3Li4zNTlmMDVlYjRkNGE0M2FhNTI0MjMzZTRiYmY2NjI4ZGIzNjg4NmVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3
SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RW
aWV3SW50ZXJuYWwuaApAQCAtMjgsMTEgKzI4LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBBYnN0cmFjdERPTVdpbmRvdzsKIGNsYXNzIERPTVdpbmRvdzsKK2NsYXNzIFdpbmRvd1By
b3h5OwogfQogCiBXZWJDb3JlOjpET01XaW5kb3cqIGNvcmUoRE9NQWJzdHJhY3RWaWV3ICopOwog
RE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6RE9NV2luZG93Kik7CiBET01BYnN0cmFjdFZp
ZXcgKmtpdChXZWJDb3JlOjpBYnN0cmFjdERPTVdpbmRvdyopOworRE9NQWJzdHJhY3RWaWV3ICpr
aXQoV2ViQ29yZTo6V2luZG93UHJveHkqKTsKK1dlYkNvcmU6OldpbmRvd1Byb3h5KiB0b1dpbmRv
d1Byb3h5KERPTUFic3RyYWN0VmlldyAqKTsKIAogQGludGVyZmFjZSBET01BYnN0cmFjdFZpZXcg
KFdlYktpdExlZ2FjeUludGVybmFsKQogLSAodm9pZClfZGlzY29ubmVjdEZyYW1lOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCmluZGV4IDZjMmYzNmQ4MjRhOTRh
NjgyM2JmMmE4MWM5YmVkMjIzNGU3YTY4ZjQuLmM5MGY5ZWZlNDIzOWQ1NDRhMWVjNjBlYzI2NTVh
OWE4NDhjNmUwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01E
b2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQu
bW0KQEAgLTY4NCw3ICs2ODQsNyBAQCAtIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopZ2V0Q29t
cHV0ZWRTdHlsZTooRE9NRWxlbWVudCAqKWVsZW1lbnQgcHNldWRvRWxlbWVudAogICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAg
ICAgIHJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7Ci0gICAgV2ViQ29yZTo6RE9NV2luZG93KiBk
diA9IElNUEwtPmRlZmF1bHRWaWV3KCk7CisgICAgV2ViQ29yZTo6RE9NV2luZG93KiBkdiA9IElN
UEwtPmRvbVdpbmRvdygpOwogICAgIGlmICghZHYpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
cmV0dXJuIGtpdChXVEY6OmdldFB0cihkdi0+Z2V0Q29tcHV0ZWRTdHlsZSgqY29yZShlbGVtZW50
KSwgcHNldWRvRWxlbWVudCkpKTsKQEAgLTY5OCw3ICs2OTgsNyBAQCAtIChET01DU1NSdWxlTGlz
dCAqKWdldE1hdGNoZWRDU1NSdWxlczooRE9NRWxlbWVudCAqKWVsZW1lbnQgcHNldWRvRWxlbWVu
dDooTlNTdAogLSAoRE9NQ1NTUnVsZUxpc3QgKilnZXRNYXRjaGVkQ1NTUnVsZXM6KERPTUVsZW1l
bnQgKillbGVtZW50IHBzZXVkb0VsZW1lbnQ6KE5TU3RyaW5nICopcHNldWRvRWxlbWVudCBhdXRo
b3JPbmx5OihCT09MKWF1dGhvck9ubHkKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RE9NV2luZG93KiBkdiA9IElNUEwtPmRlZmF1bHRW
aWV3KCk7CisgICAgV2ViQ29yZTo6RE9NV2luZG93KiBkdiA9IElNUEwtPmRvbVdpbmRvdygpOwog
ICAgIGlmICghZHYpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIGtpdChXVEY6Omdl
dFB0cihkdi0+Z2V0TWF0Y2hlZENTU1J1bGVzKGNvcmUoZWxlbWVudCksIHBzZXVkb0VsZW1lbnQs
IGF1dGhvck9ubHkpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NS2V5Ym9hcmRFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01LZXli
b2FyZEV2ZW50Lm1tCmluZGV4IGU5YWIxZmVmZTc0ZDk3MzRlYWMyODQxNmIwOWVmMjMxMGZjZmM3
MWIuLmJhMmZiZTRlMTg5ZDYxMzZlZWQ3MzVlZmZmZTcxMjBiN2Y5Njk1OGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01LZXlib2FyZEV2ZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01LZXlib2FyZEV2ZW50Lm1tCkBAIC0xMTAsMjUg
KzExMCwyNSBAQCAtIChCT09MKWdldE1vZGlmaWVyU3RhdGU6KE5TU3RyaW5nICopa2V5SWRlbnRp
ZmllckFyZwogLSAodm9pZClpbml0S2V5Ym9hcmRFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1
YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERP
TUFic3RyYWN0VmlldyAqKXZpZXcga2V5SWRlbnRpZmllcjooTlNTdHJpbmcgKilpbktleUlkZW50
aWZpZXIgbG9jYXRpb246KHVuc2lnbmVkKWluTG9jYXRpb24gY3RybEtleTooQk9PTClpbkN0cmxL
ZXkgYWx0S2V5OihCT09MKWluQWx0S2V5IHNoaWZ0S2V5OihCT09MKWluU2hpZnRLZXkgbWV0YUtl
eTooQk9PTClpbk1ldGFLZXkgYWx0R3JhcGhLZXk6KEJPT0wpaW5BbHRHcmFwaEtleQogewogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0S2V5
Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUodmlldyksIGluS2V5
SWRlbnRpZmllciwgaW5Mb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwg
aW5NZXRhS2V5LCBpbkFsdEdyYXBoS2V5KTsKKyAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRvV2luZG93UHJveHkodmlldyksIGluS2V5SWRl
bnRpZmllciwgaW5Mb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5N
ZXRhS2V5LCBpbkFsdEdyYXBoS2V5KTsKIH0KIAogLSAodm9pZClpbml0S2V5Ym9hcmRFdmVudDoo
TlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9P
TCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKXZpZXcga2V5SWRlbnRpZmllcjoo
TlNTdHJpbmcgKilpbktleUlkZW50aWZpZXIgbG9jYXRpb246KHVuc2lnbmVkKWluTG9jYXRpb24g
Y3RybEtleTooQk9PTClpbkN0cmxLZXkgYWx0S2V5OihCT09MKWluQWx0S2V5IHNoaWZ0S2V5OihC
T09MKWluU2hpZnRLZXkgbWV0YUtleTooQk9PTClpbk1ldGFLZXkKIHsKICAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQo
dHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBjb3JlKHZpZXcpLCBpbktleUlkZW50aWZpZXIs
IGluTG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSk7
CisgICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluTG9jYXRpb24sIGluQ3Ry
bEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSk7CiB9CiAKIC0gKHZvaWQpaW5p
dEtleWJvYXJkRXZlbnQ6KE5TU3RyaW5nICopdHlwZSBjYW5CdWJibGU6KEJPT0wpY2FuQnViYmxl
IGNhbmNlbGFibGU6KEJPT0wpY2FuY2VsYWJsZSB2aWV3OihET01BYnN0cmFjdFZpZXcgKil2aWV3
IGtleUlkZW50aWZpZXI6KE5TU3RyaW5nICopaW5LZXlJZGVudGlmaWVyIGtleUxvY2F0aW9uOih1
bnNpZ25lZClpbktleUxvY2F0aW9uIGN0cmxLZXk6KEJPT0wpaW5DdHJsS2V5IGFsdEtleTooQk9P
TClpbkFsdEtleSBzaGlmdEtleTooQk9PTClpblNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wpaW5NZXRh
S2V5IGFsdEdyYXBoS2V5OihCT09MKWluQWx0R3JhcGhLZXkKIHsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlw
ZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBjb3JlKHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGlu
S2V5TG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwg
aW5BbHRHcmFwaEtleSk7CisgICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnVi
YmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGlu
S2V5TG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwg
aW5BbHRHcmFwaEtleSk7CiB9CiAKIC0gKHZvaWQpaW5pdEtleWJvYXJkRXZlbnQ6KE5TU3RyaW5n
ICopdHlwZSBjYW5CdWJibGU6KEJPT0wpY2FuQnViYmxlIGNhbmNlbGFibGU6KEJPT0wpY2FuY2Vs
YWJsZSB2aWV3OihET01BYnN0cmFjdFZpZXcgKil2aWV3IGtleUlkZW50aWZpZXI6KE5TU3RyaW5n
ICopaW5LZXlJZGVudGlmaWVyIGtleUxvY2F0aW9uOih1bnNpZ25lZClpbktleUxvY2F0aW9uIGN0
cmxLZXk6KEJPT0wpaW5DdHJsS2V5IGFsdEtleTooQk9PTClpbkFsdEtleSBzaGlmdEtleTooQk9P
TClpblNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wpaW5NZXRhS2V5CiB7CiAgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50KHR5
cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29yZSh2aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBp
bktleUxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXkp
OworICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJs
ZSwgdG9XaW5kb3dQcm94eSh2aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBpbktleUxvY2F0aW9uLCBp
bkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXkpOwogfQogCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTW91c2VFdmVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tCmluZGV4IDdjN2Uw
ZGRmZjE0MjE2MWVlNDhlNjc3NzAyNWU3ZjcwZTg1M2E4MTMuLmU1MTVkODkzNWMxNzdkNDcxMDk0
YTg0YzVjZmI4ZDY0ZGIyOTQzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01Nb3VzZUV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01Nb3VzZUV2ZW50Lm1tCkBAIC0xNDUsNyArMTQ1LDcgQEAgLSAodm9pZClpbml0TW91c2VFdmVu
dDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZToo
Qk8KICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgRE9NTm9k
ZSogaW5SZWxhdGVkVGFyZ2V0T2JqQyA9IGluUmVsYXRlZFRhcmdldDsKICAgICBXZWJDb3JlOjpO
b2RlKiBpblJlbGF0ZWRUYXJnZXROb2RlID0gY29yZShpblJlbGF0ZWRUYXJnZXRPYmpDKTsKLSAg
ICBJTVBMLT5pbml0TW91c2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUo
dmlldyksIGRldGFpbCwgaW5TY3JlZW5YLCBpblNjcmVlblksIGluQ2xpZW50WCwgaW5DbGllbnRZ
LCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXksIGluQnV0dG9uLCBp
blJlbGF0ZWRUYXJnZXROb2RlKTsKKyAgICBJTVBMLT5pbml0TW91c2VFdmVudCh0eXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIHRvV2luZG93UHJveHkodmlldyksIGRldGFpbCwgaW5TY3JlZW5Y
LCBpblNjcmVlblksIGluQ2xpZW50WCwgaW5DbGllbnRZLCBpbkN0cmxLZXksIGluQWx0S2V5LCBp
blNoaWZ0S2V5LCBpbk1ldGFLZXksIGluQnV0dG9uLCBpblJlbGF0ZWRUYXJnZXROb2RlKTsKIH0K
IAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRF
dmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0KaW5k
ZXggMjg2N2JjODAyMzkxNmE3ZTY3ODBmYTNlYjcxMjBjOWM5MWFkMmE0Mi4uZGZhNzYyMDI0YjU2
NjIyY2U1YjI5OTFkZjMxMmRmZDUzODcwZDBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NVGV4dEV2ZW50Lm1tCkBAIC01MCw3ICs1MCw3IEBAIC0gKE5TU3RyaW5nICopZGF0
YQogLSAodm9pZClpbml0VGV4dEV2ZW50OihOU1N0cmluZyAqKXR5cGVBcmcgY2FuQnViYmxlQXJn
OihCT09MKWNhbkJ1YmJsZUFyZyBjYW5jZWxhYmxlQXJnOihCT09MKWNhbmNlbGFibGVBcmcgdmll
d0FyZzooRE9NQWJzdHJhY3RWaWV3ICopdmlld0FyZyBkYXRhQXJnOihOU1N0cmluZyAqKWRhdGFB
cmcKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1Q
TC0+aW5pdFRleHRFdmVudCh0eXBlQXJnLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsIGNv
cmUodmlld0FyZyksIGRhdGFBcmcpOworICAgIElNUEwtPmluaXRUZXh0RXZlbnQodHlwZUFyZywg
Y2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCB0b1dpbmRvd1Byb3h5KHZpZXdBcmcpLCBkYXRh
QXJnKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTVVJRXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5t
bQppbmRleCBhNDY0ZGFjZmJmNTEyNjZiYTkyZTU5NzcxOTI5ZDg2MzFmMmYxNjQwLi4zZGM5N2Iz
OTM3ODQ3ZDBhY2IwZTBjZDJlYTk5YzkxZmQxMjZmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NVUlFdmVudC5tbQpAQCAtMTAzLDcgKzEwMyw3IEBAIC0gKGludCl3aGljaAog
LSAodm9pZClpbml0VUlFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5C
dWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAq
KWluVmlldyBkZXRhaWw6KGludClpbkRldGFpbAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUs
IGNhbmNlbGFibGUsIGNvcmUoaW5WaWV3KSwgaW5EZXRhaWwpOworICAgIElNUEwtPmluaXRVSUV2
ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eShpblZpZXcpLCBp
bkRldGFpbCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01XaGVlbEV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdo
ZWVsRXZlbnQubW0KaW5kZXggOGYwNTY5Y2E2YTNmOTU4Yzc0MWY2ZDg4MzU4ZmZmZDE2MGIxOGFj
OC4uZGQ0YTU3YjBmMzJiNzdiNDMwYjZkZDljZDViMTUyMzRlNWE0MzRiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQubW0KQEAgLTk2LDcgKzk2LDcgQEAg
LSAoQk9PTClpc0hvcml6b250YWwKIC0gKHZvaWQpaW5pdFdoZWVsRXZlbnQ6KGludClpbldoZWVs
RGVsdGFYIHdoZWVsRGVsdGFZOihpbnQpaW5XaGVlbERlbHRhWSB2aWV3OihET01BYnN0cmFjdFZp
ZXcgKil2aWV3IHNjcmVlblg6KGludClzY3JlZW5YIHNjcmVlblk6KGludClzY3JlZW5ZIGNsaWVu
dFg6KGludCljbGllbnRYIGNsaWVudFk6KGludCljbGllbnRZIGN0cmxLZXk6KEJPT0wpY3RybEtl
eSBhbHRLZXk6KEJPT0wpYWx0S2V5IHNoaWZ0S2V5OihCT09MKXNoaWZ0S2V5IG1ldGFLZXk6KEJP
T0wpbWV0YUtleQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBJTVBMLT5pbml0V2ViS2l0V2hlZWxFdmVudChpbldoZWVsRGVsdGFYLCBpbldoZWVsRGVs
dGFZLCBjb3JlKHZpZXcpLCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJs
S2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KTsKKyAgICBJTVBMLT5pbml0V2ViS2l0V2hl
ZWxFdmVudChpbldoZWVsRGVsdGFYLCBpbldoZWVsRGVsdGFZLCB0b1dpbmRvd1Byb3h5KHZpZXcp
LCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNo
aWZ0S2V5LCBtZXRhS2V5KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9N
Q29yZUNsYXNzZXMuY3BwCmluZGV4IDFiNDNkZDlmNGNhMTM1YjJkMWM0ZDRjNDY5Zjg2ODU1NWM0
N2U5NjYuLmIyNTI2MWY3ZGZjZTFiN2NmNDcxYTlkMWYyM2NiMDg3YjI1NzdhMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKQEAgLTgwMiw3ICs4MDIsNyBA
QCBIUkVTVUxUIERPTURvY3VtZW50OjpnZXRDb21wdXRlZFN0eWxlKF9Jbl9vcHRfIElET01FbGVt
ZW50KiBlbHQsIF9Jbl8gQlNUUiBwc2V1ZAogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0
dXJuIEVfRkFJTDsKIAotICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogZHYgPSBtX2RvY3VtZW50LT5k
ZWZhdWx0VmlldygpOworICAgIGF1dG8qIGR2ID0gbV9kb2N1bWVudC0+ZG9tV2luZG93KCk7CiAg
ICAgU3RyaW5nIHBzZXVkb0VsdFN0cmluZyhwc2V1ZG9FbHQpOwogICAgIAogICAgIGlmICghZHYp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338902</attachid>
            <date>2018-04-26 12:10:45 -0700</date>
            <delta_ts>2018-04-26 22:38:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185022-20180426121044.patch</filename>
            <type>text/plain</type>
            <size>139899</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNmYmU3ZTk5YzEwNmQx
NzM1Nzc3MGZmMTQxMzkwZjdlODNmNmU2My4uYWM4MDhlYTIzNDlkYzE2MzM0MWFkMmRkY2ZiOTIz
OWJkMjQ0MjQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxOC0wNC0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94eSBp
bnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHVzaW5nIERPTVdpbmRvdyBpbiBhbGwgb2Ygb3Vy
IElETCBmaWxlcyBhbmQgdXNlIFdpbmRvd1Byb3h5IGFzCisgICAgICAgIHBlciB0aGVpciByZXNw
ZWN0aXZlIHNwZWNpZmljYXRpb25zLiBBcyBhIHJlc3VsdCwgdGhlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGFzIGFsc28gdXBkYXRlZCB0byB1c2UgV2luZG93UHJveHkgdHlwZSBpbnN0ZWFkIG9m
IERPTVdpbmRvdy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXaW5kb3dQcm94eTo6d2luZG93UHJveHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9XaW5kb3dQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eTo6
fldpbmRvd1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpkZXN0cm95QWxs
SlNXaW5kb3dQcm94aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpnbG9iYWxP
YmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpXaW5kb3dQcm94eTo6ZnJhbWUgY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKElzQnVpbHRpblR5cGUpOgorICAgICAg
ICAoQ29tcHV0ZUlzQ2FsbGJhY2tJbnRlcmZhY2UpOgorICAgICAgICAoQ29tcHV0ZUlzQ2FsbGJh
Y2tGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChBZGRUb0luY2x1ZGVzRm9ySURMVHlwZSk6CisgICAgICAgIChHZXRCYXNl
SURMVHlwZSk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWVET01Db252ZXJ0TmVlZHNTdGF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RPdmVybG9hZERpc3BhdGNoZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50
KToKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5oOgorICAgICAgICAqIGRvbS9Db21w
b3NpdGlvbkV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmRlZmF1bHRWaWV3IGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudFRvdWNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VG91Y2g6OmNyZWF0ZVRv
dWNoKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRUb3VjaC5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudFRvdWNoLmlkbDoKKyAgICAgICAgKiBkb20vRm9jdXNFdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb2N1c0V2ZW50OjpGb2N1c0V2ZW50KToKKyAgICAgICAgKiBkb20vRm9jdXNFdmVu
dC5oOgorICAgICAgICAqIGRvbS9JbnB1dEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0RXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEV2ZW50OjpJbnB1dEV2
ZW50KToKKyAgICAgICAgKiBkb20vSW5wdXRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2Fy
ZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OktleWJvYXJkRXZlbnQ6OmNoYXJDb2RlIGNvbnN0KToKKyAgICAgICAgKiBkb20vS2V5
Ym9hcmRFdmVudC5oOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmlkbDoKKyAgICAgICAg
KiBkb20vTWVzc2FnZUV2ZW50Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5pZGw6Cisg
ICAgICAgICogZG9tL01vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayk6CisgICAgICAgICogZG9t
L01vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5pZGw6CisgICAgICAgICog
ZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRl
ZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0
ZWRFdmVudDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6ZnJh
bWVWaWV3RnJvbVdpbmRvd1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2
ZW50Ojppbml0Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZl
bnQ6OmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUGFnZUxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpsb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyBj
b25zdCk6CisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50Lmg6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAqIGRvbS9TaW11bGF0ZWRDbGljay5jcHA6CisgICAgICAgICog
ZG9tL1RleHRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3ApOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEV2ZW50OjpUZXh0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50Ojppbml0
VGV4dEV2ZW50KToKKyAgICAgICAgKiBkb20vVGV4dEV2ZW50Lmg6CisgICAgICAgICogZG9tL1Rl
eHRFdmVudC5pZGw6CisgICAgICAgICogZG9tL1RvdWNoRXZlbnQuaWRsOgorICAgICAgICAqIGRv
bS9VSUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVJRXZlbnQ6OlVJRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VUlFdmVudDo6aW5pdFVJRXZlbnQpOgorICAgICAgICAqIGRvbS9VSUV2
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpVSUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VUlFdmVudDo6dmlldyBjb25zdCk6CisgICAgICAgICogZG9tL1VJRXZlbnQuaWRsOgor
ICAgICAgICAqIGRvbS9VSUV2ZW50SW5pdC5oOgorICAgICAgICAqIGRvbS9VSUV2ZW50SW5pdC5p
ZGw6CisgICAgICAgICogZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlVJRXZlbnRXaXRoS2V5U3RhdGU6OlVJRXZlbnRXaXRoS2V5U3RhdGUpOgorICAgICAgICAq
IGRvbS9XaGVlbEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OldoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2ZW50KToKKyAgICAgICAgKiBk
b20vV2hlZWxFdmVudC5oOgorICAgICAgICAqIGRvbS9XaGVlbEV2ZW50LmlkbDoKKyAgICAgICAg
KiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3Rl
QXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRDb21wb3NpdGlvbik6CisgICAgICAgICog
aHRtbC9IVE1MRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50Ojpu
YW1lZEl0ZW0pOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGw6
CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50V2luZG93IGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50
OjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3N0TWVzc2Fn
ZVRpbWVyOjpQb3N0TWVzc2FnZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc3RNZXNzYWdl
VGltZXI6OmV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2Up
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlVGV4dElucHV0RXZlbnQpOgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6fkZyYW1lKToKKyAgICAgICAgVXBkYXRlIEZyYW1lIGRlc3RydWN0
b3IgdG8gZGVzdHJveSBhbGwgaXRzIEpTV2luZG93UHJveGllcyBiZWZvcmUgZG9pbmcgYW55dGhp
bmcgZWxzZS4KKyAgICAgICAgQmVjYXVzZSByZWZpbmcgYSBXaW5kb3dQcm94eSBhY3R1YWxseSBy
ZWZzIGl0cyBmcmFtZSwgaXQgaXMgcG9zc2libGUgdGhhdCB3aGVuIGEgSlMKKyAgICAgICAgb2Jq
ZWN0IGlzIHN3ZXB0LCBpdHMgZGVzdHJveXMgYSBXaW5kb3dQcm94eSwgd2hpY2ggZGVzdHJveXMg
YSBGcmFtZS4gVGhlIEZyYW1lIGRlc3RydWN0b3IKKyAgICAgICAgd291bGQgdGhlbiBjYWxsIEZy
YW1lTG9hZGVyOjpjYW5jZWxBbmRDbGVhcigpIHdoaWNoIHdvdWxkIGVuZCB1cCBjYWxsaW5nIFNj
cmlwdENvbnRyb2xsZXI6OmVuYWJsZUV2YWwoKQorICAgICAgICBhbmQgYWNjZXNzaW5nIEpTV2lu
ZG93UHJveHk6OndpbmRvdygpLiBUaGlzIHdvdWxkIGhpdCBhbiBhc3NlcnRpb24gd2hlbiBkb2lu
ZyB0aGUganNDYXN0KCkgaW4KKyAgICAgICAgSlNDZWxsOjpjbGFzc0luZm8oSlNDOjpWTSYpOgor
ICAgICAgICBBU1NFUlQodm0uaGVhcC5tdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OlN3
ZWVwaW5nIHx8ICF2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKwogMjAxOC0w
NC0yMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1dQRV1bR1RLXSBSZW1vdmUgV2xVbmlxdWVQdHI8d2xfZGlzcGxheT4gZm9vdGd1bgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGYzMDg5NWFiYWY2NzAwMjA3NDJkNGVmYzAzOTAx
OGRhMjc3ZTc2YWYuLjZhZDUyNWU5ODEwZWEwMjY3MmZlMWUwOTM3NTYxMWI4ZjM4NjQwMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0wNC0yNiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94
eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01BYnN0cmFjdFZpZXcubW06CisgICAg
ICAgIChraXQpOgorICAgICAgICAodG9XaW5kb3dQcm94eSk6CisgICAgICAgICogRE9NL0RPTUFi
c3RyYWN0Vmlld0ludGVybmFsLmg6CisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOgorICAg
ICAgICAoLVtET01Eb2N1bWVudCBkZWZhdWx0Vmlld10pOgorICAgICAgICAoLVtET01Eb2N1bWVu
dCBnZXRDb21wdXRlZFN0eWxlOnBzZXVkb0VsZW1lbnQ6XSk6CisgICAgICAgICgtW0RPTURvY3Vt
ZW50IGdldE1hdGNoZWRDU1NSdWxlczpwc2V1ZG9FbGVtZW50OmF1dGhvck9ubHk6XSk6CisgICAg
ICAgICogRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUhUTUxGcmFt
ZUVsZW1lbnQgY29udGVudFdpbmRvd10pOgorICAgICAgICAqIERPTS9ET01IVE1MSUZyYW1lRWxl
bWVudC5tbToKKyAgICAgICAgKC1bRE9NSFRNTElGcmFtZUVsZW1lbnQgY29udGVudFdpbmRvd10p
OgorICAgICAgICAqIERPTS9ET01LZXlib2FyZEV2ZW50Lm1tOgorICAgICAgICAoLVtET01LZXli
b2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5
SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdy
YXBoS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50
OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5
OmFsdEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50
IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmll
cjprZXlMb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdyYXBoS2V5
Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1
YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjprZXlMb2NhdGlvbjpjdHJsS2V5OmFs
dEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAqIERPTS9ET01Nb3VzZUV2ZW50Lm1t
OgorICAgICAgICAoLVtET01Nb3VzZUV2ZW50IGluaXRNb3VzZUV2ZW50OmNhbkJ1YmJsZTpjYW5j
ZWxhYmxlOnZpZXc6ZGV0YWlsOnNjcmVlblg6c2NyZWVuWTpjbGllbnRYOmNsaWVudFk6Y3RybEtl
eTphbHRLZXk6c2hpZnRLZXk6bWV0YUtleTpidXR0b246cmVsYXRlZFRhcmdldDpdKToKKyAgICAg
ICAgKiBET00vRE9NVGV4dEV2ZW50Lm1tOgorICAgICAgICAoLVtET01UZXh0RXZlbnQgaW5pdFRl
eHRFdmVudDpjYW5CdWJibGVBcmc6Y2FuY2VsYWJsZUFyZzp2aWV3QXJnOmRhdGFBcmc6XSk6Cisg
ICAgICAgICogRE9NL0RPTVVJRXZlbnQubW06CisgICAgICAgICgtW0RPTVVJRXZlbnQgdmlld10p
OgorICAgICAgICAoLVtET01VSUV2ZW50IGluaXRVSUV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxl
OnZpZXc6ZGV0YWlsOl0pOgorICAgICAgICAqIERPTS9ET01XaGVlbEV2ZW50Lm1tOgorICAgICAg
ICAoLVtET01XaGVlbEV2ZW50IGluaXRXaGVlbEV2ZW50OndoZWVsRGVsdGFZOnZpZXc6c2NyZWVu
WDpzY3JlZW5ZOmNsaWVudFg6Y2xpZW50WTpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5
Ol0pOgorCiAyMDE4LTA0LTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjMwOTIxLCByMjMwOTIzLCBy
MjMwOTI0LCByMjMwOTMyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGRkZTgwMDhk
YzE4N2YzMDI0OTk1YjJhNGJjN2Q5Y2QwY2E5ZWZjNGIuLmY5YjU5MDBmMTk5ZTU3Yzc0YWJkNDIz
YTkzMzFhZGQ4ZjQ0N2M4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxOC0wNC0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBXaW5kb3dQcm94eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVD
bGFzc2VzLmNwcDoKKyAgICAgICAgKERPTURvY3VtZW50OjpnZXRDb21wdXRlZFN0eWxlKToKKwog
MjAxOC0wNC0yMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzMDkyMSwgcjIzMDkyMywgcjIzMDkyNCwg
cjIzMDkzMiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAzMGY2NDZlYzc4ODYwMDlkMDgwYjdmY2U4NzJmOTBjMzdjMGJjNjZmLi4w
MTE0ZjIwNThmYWJhOWEyZGUwMTI4NTk3MGE2NjBhZDc0OTQ5ZGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzY1LDcgKzIz
NjUsNiBAQAogCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOTU5RTEx
QjhCQzIyQjAwNEQ5Mzg1IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcg
LyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVS
ZXF1ZXN0VHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTgzQjk2ODdCMTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk2
ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLzsgfTsKLQkJ
ODNCOUU3MEIyMDg2QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I5RTcwOTIwODZC
QTI3MDBFNUQ3NTYgLyogSlNET01Db252ZXJ0V2luZG93UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0JCNUM4ODFENUQ2RjQ1MDA1QTcx
RjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVz
Y2VuZGFudHNDb2xsZWN0aW9uLmggKi87IH07CiAJCTgzQzA1QTVCMUE2ODYyMTIwMDdFNURFQSAv
KiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9OwogCQk4M0MxRDQyNTE3OEQ1QUI0
MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0FyY0Ficy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNDMUQ0MTMxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhT
ZWdBcmNBYnMuaCAqLzsgfTsKQEAgLTk4NzcsNyArOTg3Niw2IEBACiAJCTgzQjc0RUYyMUYzRTBC
RDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVw
YWxpdmVSZXF1ZXN0VHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBL
ZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
M0I5Njg3OTE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0I5RTcwOTIwODZCQTI3MDBFNUQ3NTYgLyogSlNE
T01Db252ZXJ0V2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNET01Db252ZXJ0V2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNDMDVBNTgxQTY4NjIxMjAwN0U1REVB
IC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAv
KiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5ODM1LDcgKzE5ODMzLDYgQEAKIAkJCQk3QzhFMzRBQTFF
NEEzMzhFMDA1NENFMjMgLyogSlNET01Db252ZXJ0VmFyaWFkaWMuaCAqLywKIAkJCQk3Q0JBNUJB
NjFGMEI0QkRFMDAzNEQ3NDUgLyogSlNET01Db252ZXJ0V2ViR0wuY3BwICovLAogCQkJCTdDOEUz
NEFCMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5oICovLAotCQkJCTgzQjlF
NzA5MjA4NkJBMjcwMEU1RDc1NiAvKiBKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oICovLAogCQkJ
CTdDOEUzNEFDMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIu
aCAqLywKIAkJCSk7CiAJCQluYW1lID0gQ29udmVyc2lvbnM7CkBAIC0yODQxNiw3ICsyODQxMyw2
IEBACiAJCQkJN0M4RTM0QzQxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFVuaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRDNTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252
ZXJ0VmFyaWFkaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEM2MUU0QTMzQjAwMDU0Q0Uy
MyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODNCOUU3MEIyMDg2
QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QzhFMzRDNzFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0WFBhdGhOU1Jlc29s
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQzlFMEU0RDE2NDE5QzFFMDAzOTJCRTMgLyogSlNE
T01DU1NOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEN0MxMEQyOUE0NjMwMEI5
OTE4RiAvKiBKU0RPTUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
SURMVHlwZXMuaAppbmRleCA1ZmU3N2U4M2YyM2RhMmIxYjQyMGQxZTM5MmRlYTlkYzA3ZmIxYzgw
Li44MDU3ZGZhMTE1ODg4ZDNkYjRhMGYwYmUyNmI0YzY2MmI2OWM3ODdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL0lETFR5cGVzLmgKQEAgLTI3NCw3ICsyNzQsNiBAQCBzdHJ1Y3QgSURMU2NoZWR1bGVk
QWN0aW9uIDogSURMVHlwZTxzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPj4geyB9Owog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IElE
TFdyYXBwZXI8VD4geyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETEV2ZW50TGlz
dGVuZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJ
RExYUGF0aE5TUmVzb2x2ZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKLXN0cnVjdCBJRExXaW5kb3dQ
cm94eSA6IElETFdyYXBwZXI8SlNXaW5kb3dQcm94eT4geyB9OwogCiBzdHJ1Y3QgSURMSURCS2V5
IDogSURMV3JhcHBlcjxJREJLZXk+IHsgfTsKIHN0cnVjdCBJRExJREJLZXlEYXRhIDogSURMV3Jh
cHBlcjxJREJLZXlEYXRhPiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0V2luZG93UHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODJjMWZmNDgxOTJkZTVjMjA4MmRiN2IzZGUwYWMzYmFhNGIzNGM3Yy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIK
LSNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCi0jaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTQ29udmVydGVy
PElETFdpbmRvd1Byb3h5PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUg
PSB0cnVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9IGZh
bHNlOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgVSYmIHZhbHVlKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsKLSAgICB9Ci19
OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCmlu
ZGV4IDE4ODY3MWU0OWIxZjE0MzE1Yzk4Njc3MWQwN2JhNmY4M2UxYWJkMjcuLmE0YjE4MDVjNjUy
ZTIzMjBiZmQ3OWEwOTc5Mjc5YWNjMDg3YjY5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2luZG93UHJveHkuY3BwCkBAIC0xMTksNiArMTE5LDEyIEBAIHZvaWQgSlNXaW5k
b3dQcm94eTo6c2V0V2luZG93KEFic3RyYWN0RE9NV2luZG93JiBkb21XaW5kb3cpCiAgICAgQVNT
RVJUKHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkgPT0gd2luZG93KTsKIH0KIAorV2luZG93UHJv
eHkqIEpTV2luZG93UHJveHk6OndpbmRvd1Byb3h5KCkgY29uc3QKK3sKKyAgICBhdXRvJiB3aW5k
b3cgPSB3cmFwcGVkKCk7CisgICAgcmV0dXJuIHdpbmRvdy5mcmFtZSgpID8gJndpbmRvdy5mcmFt
ZSgpLT53aW5kb3dQcm94eSgpIDogbnVsbHB0cjsKK30KKwogdm9pZCBKU1dpbmRvd1Byb3h5Ojph
dHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKIHsKICAgICBhdXRvKiBnbG9i
YWxPYmplY3QgPSB3aW5kb3coKTsKQEAgLTEzOCwxMiArMTQ0LDYgQEAgQWJzdHJhY3RET01XaW5k
b3cmIEpTV2luZG93UHJveHk6OndyYXBwZWQoKSBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8SlNE
T01XaW5kb3dCYXNlKj4od2luZG93KS0+d3JhcHBlZCgpOwogfQogCi1BYnN0cmFjdERPTVdpbmRv
dyogSlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKFZNJiB2bSwgSlNPYmplY3QqIHZhbHVlKQotewot
ICAgIGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTV2luZG93UHJveHkqPih2bSwgdmFs
dWUpOwotICAgIHJldHVybiB3cmFwcGVyID8gJndyYXBwZXItPndyYXBwZWQoKSA6IG51bGxwdHI7
Ci19Ci0KIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBXaW5kb3dQcm94eSYgd2luZG93
UHJveHkpCiB7CiAgICAgcmV0dXJuICZ3aW5kb3dQcm94eS5qc1dpbmRvd1Byb3h5KGN1cnJlbnRX
b3JsZCgqc3RhdGUpKTsKQEAgLTE1NCw0ICsxNTQsMTQgQEAgSlNXaW5kb3dQcm94eSYgdG9KU1dp
bmRvd1Byb3h5KFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKICAgICByZXR1cm4gd2luZG93UHJveHkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiB9CiAKK1dp
bmRvd1Byb3h5KiBKU1dpbmRvd1Byb3h5Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVl
KQoreworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBpZiAob2JqZWN0
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNX
aW5kb3dQcm94eSo+KG9iamVjdCktPndpbmRvd1Byb3h5KCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2luZG93UHJveHkuaAppbmRleCAxODVhNTQ1NzhiZjgxNzdjZmNhMTc1YzZlNGIxMWY0NzQ4
YTQwOTQ4Li4zNjI0MGQ4NjZlOGYxMGRhZDYyMWRiZGQ5OWVmYjE3ZTE4MWJkZDk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oCkBAIC0yOCw3ICsyOCw5IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTUHJveHkuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zOSw3
ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJhY3RET01XaW5kb3c7
CiBjbGFzcyBBYnN0cmFjdEZyYW1lOwotY2xhc3MgV2luZG93UHJveHk7CiAKIGNsYXNzIEpTV2lu
ZG93UHJveHkgZmluYWwgOiBwdWJsaWMgSlNDOjpKU1Byb3h5IHsKICAgICB1c2luZyBCYXNlID0g
SlNDOjpKU1Byb3h5OwpAQCAtNTMsOCArNTQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2lu
ZG93KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgc2V0V2luZG93KEFi
c3RyYWN0RE9NV2luZG93Jik7CiAKKyAgICBXaW5kb3dQcm94eSogd2luZG93UHJveHkoKSBjb25z
dDsKKwogICAgIEFic3RyYWN0RE9NV2luZG93JiB3cmFwcGVkKCkgY29uc3Q7Ci0gICAgc3RhdGlj
IFdFQkNPUkVfRVhQT1JUIEFic3RyYWN0RE9NV2luZG93KiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpT
Qzo6SlNPYmplY3QqKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgV2luZG93UHJveHkqIHRv
V3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKIAogICAgIERPTVdyYXBwZXJXb3JsZCYg
d29ybGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CiAKQEAgLTcxLDEwICs3NCwxNiBAQCBwcml2YXRl
OgogLy8gSXQgaXMsIGhvd2V2ZXIsIHN0cm9uZ2x5IG93bmVkIGJ5IEFic3RyYWN0RnJhbWUgdmlh
IGl0cyBXaW5kb3dQcm94eSwgc28gd2UgY2FuIGdldCBvbmUgZnJvbSBhIFdpbmRvd1Byb3h5Lgog
V0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBXaW5kb3dQ
cm94eSYpOwogaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
V2luZG93UHJveHkqIHdpbmRvd1Byb3h5KSB7IHJldHVybiB3aW5kb3dQcm94eSA/IHRvSlMoc3Rh
dGUsICp3aW5kb3dQcm94eSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1pbmxpbmUgSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBSZWZQdHI8V2luZG93UHJveHk+JiB3
aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwgd2luZG93UHJveHkuZ2V0KCkpOyB9Citp
bmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamVjdCosIFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwg
d2luZG93UHJveHkpOyB9CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXaW5kb3dQcm94eSogd2lu
ZG93UHJveHkpIHsgcmV0dXJuIHdpbmRvd1Byb3h5ID8gdG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0
LCAqd2luZG93UHJveHkpIDogSlNDOjpqc051bGwoKTsgfQogCiBKU1dpbmRvd1Byb3h5JiB0b0pT
V2luZG93UHJveHkoV2luZG93UHJveHkmLCBET01XcmFwcGVyV29ybGQmKTsKIGlubGluZSBKU1dp
bmRvd1Byb3h5KiB0b0pTV2luZG93UHJveHkoV2luZG93UHJveHkqIHdpbmRvd1Byb3h5LCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKSB7IHJldHVybiB3aW5kb3dQcm94eSA/ICZ0b0pTV2luZG93UHJv
eHkoKndpbmRvd1Byb3h5LCB3b3JsZCkgOiBudWxscHRyOyB9CiAKIAordGVtcGxhdGU8PiBzdHJ1
Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFdpbmRvd1Byb3h5PiB7CisgICAgdXNpbmcg
V3JhcHBlckNsYXNzID0gSlNXaW5kb3dQcm94eTsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5U
eXBlID0gV2luZG93UHJveHkqOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwCmluZGV4IDhlOGY1MTM1M2VkMWY3
YTBiNWIzZjkzMDRjZjgxYzhhYWNiNzViNWUuLmFiMjQ1YjI0Nzg0YWQ3NzczODZlYzUzNDhmM2Ey
NjkyNDdlODAxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRv
d1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5j
cHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSlNXaW5kb3dQcm94
eS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgog
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtNTMsMTIgKzU0LDE2IEBAIFdpbmRvd1Byb3h5OjpX
aW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJiBmcmFtZSkKIH0KIAogV2luZG93UHJveHk6On5XaW5k
b3dQcm94eSgpCit7CisgICAgZGVzdHJveUFsbEpTV2luZG93UHJveGllcygpOworfQorCit2b2lk
IFdpbmRvd1Byb3h5OjpkZXN0cm95QWxsSlNXaW5kb3dQcm94aWVzKCkKIHsKICAgICAvLyBJdCdz
IGxpa2VseSB0aGF0IGRlc3Ryb3lpbmcgd2luZG93UHJveGllcyB3aWxsIGNyZWF0ZSBhIGxvdCBv
ZiBnYXJiYWdlLgogICAgIGlmICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIHdoaWxlICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBh
dXRvIGl0ID0gbV9qc1dpbmRvd1Byb3hpZXMuYmVnaW4oKTsKLSAgICAgICAgICAgIGl0LT52YWx1
ZS0+d2luZG93KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CiAgICAgICAgICAgICBkZXN0
cm95SlNXaW5kb3dQcm94eSgqaXQtPmtleSk7CiAgICAgICAgIH0KICAgICAgICAgY29sbGVjdEdh
cmJhZ2VBZnRlcldpbmRvd1Byb3h5RGVzdHJ1Y3Rpb24oKTsKQEAgLTkxLDYgKzk2LDExIEBAIFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU1dpbmRvd1Byb3h5Pj4gV2luZG93UHJveHk6OmpzV2luZG93UHJv
eGllc0FzVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fanNXaW5kb3dQ
cm94aWVzLnZhbHVlcygpKTsKIH0KIAorSlNET01HbG9iYWxPYmplY3QqIFdpbmRvd1Byb3h5Ojpn
bG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICByZXR1cm4ganNXaW5k
b3dQcm94eSh3b3JsZCkud2luZG93KCk7Cit9CisKIEpTV2luZG93UHJveHkmIFdpbmRvd1Byb3h5
OjpjcmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaAppbmRleCA3NzcyMjk4M2IwYTMyMmNkMDY3
ZGZiNTA2MmRhMDc3N2E2OGU2NWY4Li44NDY3MDIwOTA3NWY3MzJmNWVlMTUxMTgyN2Q2ZDhiMDgy
ZWY4ODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmgKQEAgLTIw
LDcgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU1dpbmRvd1Byb3h5Lmgi
CisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApAQCAtMzAsNyArMzAsMTAgQEAg
Y2xhc3MgRGVidWdnZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWJzdHJhY3RE
T01XaW5kb3c7CiBjbGFzcyBBYnN0cmFjdEZyYW1lOworY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7
CitjbGFzcyBKU1dpbmRvd1Byb3h5OwogCiBjbGFzcyBXaW5kb3dQcm94eSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00MCw2ICs0Myw4IEBAIHB1YmxpYzoKICAgICBleHBsaWNp
dCBXaW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJik7CiAgICAgfldpbmRvd1Byb3h5KCk7CiAKKyAg
ICBBYnN0cmFjdEZyYW1lJiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KKwogICAg
IHZvaWQgZGVzdHJveUpTV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICBQcm94
eU1hcDo6VmFsdWVzQ29uc3RJdGVyYXRvclJhbmdlIGpzV2luZG93UHJveGllcygpIGNvbnN0IHsg
cmV0dXJuIG1fanNXaW5kb3dQcm94aWVzLnZhbHVlcygpOyB9CkBAIC02MywxMCArNjgsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAoaXQgIT0gbV9qc1dpbmRvd1Byb3hpZXMuZW5kKCkpID8g
aXQtPnZhbHVlLmdldCgpIDogbnVsbHB0cjsKICAgICB9CiAKLSAgICBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCi0gICAgewotICAgICAgICBy
ZXR1cm4ganNXaW5kb3dQcm94eSh3b3JsZCkud2luZG93KCk7Ci0gICAgfQorICAgIFdFQkNPUkVf
RVhQT1JUIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJik7
CiAKICAgICB2b2lkIGNsZWFySlNXaW5kb3dQcm94aWVzTm90TWF0Y2hpbmdET01XaW5kb3coQWJz
dHJhY3RET01XaW5kb3cqLCBib29sIGdvaW5nSW50b1BhZ2VDYWNoZSk7CiAKQEAgLTgwLDYgKzgy
LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVmKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkZXJlZigpOwogCisgICAgdm9pZCBkZXN0cm95QWxsSlNXaW5kb3dQcm94
aWVzKCk7CisKIHByaXZhdGU6CiAgICAgSlNXaW5kb3dQcm94eSYgY3JlYXRlSlNXaW5kb3dQcm94
eShET01XcmFwcGVyV29ybGQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBKU1dpbmRvd1Byb3h5JiBj
cmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBt
CmluZGV4IDk1MjQyOWEwZTQ5Nzc0YmFkMjJjMWU1OGViYjJlNGVkZGJhZDNiNjMuLjJmY2ZlZTNh
N2FhOGYyMmYyNmViZGRiNmE0ZTI4ZmEwMzhiMmY0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTg5MSw3ICs4OTEsNiBAQCBz
dWIgSXNCdWlsdGluVHlwZQogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5T
UmVzb2x2ZXIiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJhbnkiOwogICAgIHJl
dHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJvYmplY3QiOwotICAgIHJldHVybiAxIGlmICR0eXBl
LT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTEwMDEsNiAr
MTAwMCw3IEBAIHN1YiBDb21wdXRlSXNDYWxsYmFja0ludGVyZmFjZQogICAgIGFzc2VydCgiTm90
IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5s
ZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5
cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsKIAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5u
YW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlw
ZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBc
IiR0eXBlTmFtZVwiIVxuIik7CkBAIC0xMDM4LDYgKzEwMzgsNyBAQCBzdWIgQ29tcHV0ZUlzQ2Fs
bGJhY2tGdW5jdGlvbgogICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUg
IklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5sZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlw
ZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsK
IAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9i
amVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlwZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9U
IGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlTmFtZVwiIVxuIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4
IDYyNmE5ZjBiMmQ2ZjA0M2NmOTJiZGYzMmYyOTYyODkyNjExNmU1ZTQuLjMwYTM3NGMyODI0ZmEy
NjA4MjQyYWEzODcxMDk4NDIwMmI1ZDBlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00MjEsMTMgKzQyMSw2IEBAIHN1
YiBBZGRUb0luY2x1ZGVzRm9ySURMVHlwZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKCR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSIpIHsKLSAgICAgICAgQWRkVG9JbmNsdWRl
cygiV2luZG93UHJveHkuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAg
QWRkVG9JbmNsdWRlcygiSlNXaW5kb3dQcm94eS5oIiwgJGluY2x1ZGVzUmVmLCAkY29uZGl0aW9u
YWwpOwotICAgICAgICBBZGRUb0luY2x1ZGVzKCJKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIiwg
JGluY2x1ZGVzUmVmLCAkY29uZGl0aW9uYWwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7CiAgICAgICAgIEFk
ZFRvSW5jbHVkZXMoIkpTRE9NQ29udmVydFN0cmluZ3MuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRp
dGlvbmFsKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjM5Myw3ICs2Mzg2LDYgQEAgc3ViIEdldEJh
c2VJRExUeXBlCiAgICAgICAgICJKU09OIiA9PiAiSURMSlNPTiIsCiAgICAgICAgICJTY2hlZHVs
ZWRBY3Rpb24iID0+ICJJRExTY2hlZHVsZWRBY3Rpb24iLAogICAgICAgICAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlIiA9PiAiSURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4iLAotICAgICAgICAiV2luZG93UHJveHkiID0+ICJJRExXaW5kb3dQcm94eSIsCiAgICAg
ICAgICJYUGF0aE5TUmVzb2x2ZXIiID0+ICJJRExYUGF0aE5TUmVzb2x2ZXI8WFBhdGhOU1Jlc29s
dmVyPiIsCiAgICAgKTsKIApAQCAtNjU1NCw3ICs2NTQ2LDYgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1
ZURPTUNvbnZlcnROZWVkc1N0YXRlCiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIkpT
T04iOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwot
ICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAgICAgCiAgICAg
cmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGJhNDViYjk4ZjIxYTYzMzkwOWQyYmU4ZTBhMWZl
MmRjNzI2YTM0NWYuLmMwNDY2YzI2NmI3MzdmNmM4ODVkMmFhZmQwNWI1ZjE2ZjY4MmQ1MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCkBAIC01NSw3ICs1NSw2IEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIK
ICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCIKICNpbmNsdWRlICJK
U0RPTVN0cmluZ0xpc3QuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpT
RE9NV2luZG93QmFzZS5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiSlNEb2N1bWVudC5oIgpAQCAtNjk1Nyw3ICs2OTU2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDlCb2QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8g
d2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8RE9NV2luZG93Pj4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwg
IndpbmRvdyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiRE9NV2luZG93Iik7
IH0pOworICAgIGF1dG8gd2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8V2luZG93UHJveHk+
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAwLCAid2luZG93IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhv
ZCIsICJXaW5kb3dQcm94eSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqd2luZG93
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNzAyOSw3
ICs3MDI4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZE92ZXIKICAgICAgICAgICAgIHJldHVybiBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2Qm9keShzdGF0ZSwgY2Fz
dGVkVGhpcywgdGhyb3dTY29wZSk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09i
amVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNUZXN0T2Jq
Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kOEJvZHkoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwotICAgICAg
ICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiAoYXNPYmplY3QoZGlzdGluZ3Vp
c2hpbmdBcmcpLT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkgfHwgYXNPYmplY3QoZGlzdGlu
Z3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU0RPTVdpbmRvdz4odm0pKSkKKyAgICAgICAgaWYgKGRp
c3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcp
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOUJvZHkoc3RhdGUsIGNhc3RlZFRo
aXMsIHRocm93U2NvcGUpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzPEpTQmxvYj4odm0pKQog
ICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDEzQm9keShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggYzgzZWVlZWRi
ZjQxNjNmODMyYmNkMjUzZWMwNTc1Njg0NmVlZDY4NC4uNzFkZGZjNDg5ZWQyZDVkYTI1NmZiNWM0
MzBiOTMyZWJkYzRmODcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMjg2LDcgKzI4Niw3IEBAIGVudW0gVGVzdENvbmZpZGVu
Y2UgeyAiaGlnaCIsICJraW5kYS1sb3ciIH07CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9k
KERPTVN0cmluZ0xpc3Q/IGxpc3RBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChz
ZXF1ZW5jZTxET01TdHJpbmc+PyBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0
aG9kKFRlc3RPYmogb2JqQXJnKTsKLSAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoRE9NV2lu
ZG93IHdpbmRvdyk7CisgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFdpbmRvd1Byb3h5IHdp
bmRvdyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKHNlcXVlbmNlPERPTVN0cmluZz4g
YXJyYXlBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChzZXF1ZW5jZTx1bnNpZ25l
ZCBsb25nPiBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmlu
ZyBzdHJBcmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCmluZGV4IDBl
MzhhNjcxOGNkMWRhZDJlNzkwMjhiODkwMDU2YTZmY2I2NDJjOTAuLjAwN2FmN2Q3MjRmNWMzZTRh
MGEzNjExMjU2NmM0ODJlZDZmZDU5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NpdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25F
dmVudC5jcHAKQEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb21wb3Np
dGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KCkgPSBkZWZhdWx0OwogCi1Db21wb3NpdGlvbkV2
ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRE9NV2luZG93
KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgOiBVSUV2ZW50KHR5cGUsIHRydWUsIHRy
dWUsIHZpZXcsIDApCitDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKKyAgICA6IFVJRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwg
MCkKICAgICAsIG1fZGF0YShkYXRhKQogewogfQpAQCAtNDUsMTIgKzQ1LDEyIEBAIENvbXBvc2l0
aW9uRXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25z
dCBJbml0JiBpbml0aWFsCiAKIENvbXBvc2l0aW9uRXZlbnQ6On5Db21wb3NpdGlvbkV2ZW50KCkg
PSBkZWZhdWx0OwogCi12b2lkIENvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCit2b2lkIENvbXBvc2l0aW9u
RXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcs
IGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxh
YmxlLCB2aWV3LCAwKTsKKyAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIFdURk1vdmUodmlldyksIDApOwogCiAgICAgbV9kYXRhID0gZGF0YTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCmluZGV4IDhmZjAyZWM5Njk3NzhiODg1YTYzMTcwMjRj
OTU3NDc2ZTAyMWIyYTYuLjNiMWM0NmQ2MzVlY2FmNmNkMDkxOTA5OGY1MDhmYzQxZTY0Y2ViY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaApAQCAtMzIsOSArMzIsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbXBvc2l0aW9uRXZlbnQgZmluYWwgOiBwdWJs
aWMgVUlFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0
cmluZyYgZGF0YSkKKyAgICBzdGF0aWMgUmVmPENvbXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBT
dHJpbmcmIGRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21wb3Np
dGlvbkV2ZW50KHR5cGUsIHZpZXcsIGRhdGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ29tcG9zaXRpb25FdmVudCh0eXBlLCBXVEZNb3ZlKHZpZXcpLCBkYXRhKSk7CiAgICAgfQog
CiAgICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbXBvc2l0aW9uRXZlbnQo
KTsKIAotICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBT
dHJpbmcmIGRhdGEpOworICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAKICAgICBTdHJpbmcgZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBDb21wb3NpdGlvbkV2ZW50KCk7Ci0gICAgQ29tcG9zaXRpb25FdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYpOworICAgIENv
bXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8V2luZG93UHJv
eHk+JiYsIGNvbnN0IFN0cmluZyYpOwogICAgIENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJvb2wgaXNDb21w
b3NpdGlvbkV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zaXRpb25FdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRp
b25FdmVudC5pZGwKaW5kZXggZDg3MjQwODgzZTI3ZDNiMzQ1ODUzOWViOTIwZjRkM2YyODcxNjZj
NC4uMjBhYWM3ZWE0NzcwZDU2NTllZDQwOTEwZDdhYTc5NTA4ZTY2MTgzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIHZvaWQg
aW5pdENvbXBvc2l0aW9uRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZp
bmVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY2Fu
QnViYmxlQXJnID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25h
bCBib29sZWFuIGNhbmNlbGFibGVBcmcgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlld0FyZyA9IG51bGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlld0FyZyA9IG51bGwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBET01TdHJpbmcgZGF0YUFyZyA9
ICJ1bmRlZmluZWQiKTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDg2ZjgzZTcy
NjQyM2FjNDU0MzVkMzJiZWYwNDk0ZTk5NDllMDU0OTkuLjc4ZjhiZTI3ZTk0MGU0OWE2MDM0OTAx
OTcyOWUzNTJkNTI5NmE2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDI4MCw2ICs0
MjgwLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnRha2VET01XaW5kb3dGcm9tKERvY3VtZW50KiBkb2N1
bWVudCkKICAgICBBU1NFUlQobV9kb21XaW5kb3ctPmZyYW1lKCkgPT0gbV9mcmFtZSk7CiB9CiAK
K1dpbmRvd1Byb3h5KiBEb2N1bWVudDo6ZGVmYXVsdFZpZXcoKSBjb25zdAoreworICAgIGlmICgh
bV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZtX2ZyYW1lLT53
aW5kb3dQcm94eSgpOworfQorCiBEb2N1bWVudCYgRG9jdW1lbnQ6OmNvbnRleHREb2N1bWVudCgp
IGNvbnN0CiB7CiAgICAgaWYgKG1fY29udGV4dERvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCBhNGZiMDJmOWUxYmNiZDQwMGIwY2M4NjUyYWJkNDA0ZjAxYzQ1OTVmLi44NWEyNTY1MjFi
N2NiNzgxNjRjYTQ4ZjYwMDFjYjY4NWIwNTdhNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
Nzk5LDcgKzc5OSw3IEBAIHB1YmxpYzoKIAogICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29u
c3QgeyByZXR1cm4gbV9kb21XaW5kb3cuZ2V0KCk7IH0KICAgICAvLyBJbiBET00gTGV2ZWwgMiwg
dGhlIERvY3VtZW50J3MgRE9NV2luZG93IGlzIGNhbGxlZCB0aGUgZGVmYXVsdFZpZXcuCi0gICAg
RE9NV2luZG93KiBkZWZhdWx0VmlldygpIGNvbnN0IHsgcmV0dXJuIGRvbVdpbmRvdygpOyB9IAor
ICAgIFdFQkNPUkVfRVhQT1JUIFdpbmRvd1Byb3h5KiBkZWZhdWx0VmlldygpIGNvbnN0OwogCiAg
ICAgRG9jdW1lbnQmIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4
dERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkgeyBtX2NvbnRleHREb2N1bWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZVdlYWtQdHIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXggMmQ1YmFh
ZDhjNjA2NDRkYTg5ZDEwN2ZkZGUxODI4Y2Q4YTQ5ZDgyYi4uMDhmNzJhOTIwMDBkM2FjMjBhNjQ0
YzBlNWJjMzQ4MmI0NzVlZGE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0xMTMsNyAr
MTEzLDcgQEAgdHlwZWRlZiAoCiAgICAgW0NFUmVhY3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJs
ZURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB3cml0ZWxuKERPTVN0cmluZy4uLiB0
ZXh0KTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24uCi0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVdpbmRvdz8gZGVmYXVsdFZpZXc7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1By
b3h5PyBkZWZhdWx0VmlldzsKICAgICBib29sZWFuIGhhc0ZvY3VzKCk7CiAgICAgW0NFUmVhY3Rp
b25zXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRlc2lnbk1vZGU7CiAgICAgW0NFUmVhY3Rpb25zXSBi
b29sZWFuIGV4ZWNDb21tYW5kKERPTVN0cmluZyBjb21tYW5kSWQsIG9wdGlvbmFsIGJvb2xlYW4g
c2hvd1VJID0gZmFsc2UsIG9wdGlvbmFsIERPTVN0cmluZz8gdmFsdWUgPSBudWxsKTsgLy8gRklY
TUU6IHZhbHVlIHNob3VsZCBub3QgYmUgbnVsbGFibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRUb3VjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRU
b3VjaC5jcHAKaW5kZXggM2Q5MTIzZDhmNzUzMmNiNGRiNzlhNGExMzM1ZDVmMTcyOGNjNTA5YS4u
NWQxMjZjM2MzMjQ3MTRmMzlmOWY5NmUxNjM2OWMwMTg3ODQ3YTgwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFRvdWNoLmNwcApAQCAtMjgsMjAgKzI4LDI3IEBACiAKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlRvdWNoLmgiCiAjaW5jbHVkZSAiVG91
Y2hMaXN0LmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZWY8VG91Y2g+IERvY3VtZW50VG91Y2g6OmNyZWF0ZVRvdWNoKERvY3VtZW50JiBkb2N1
bWVudCwgRE9NV2luZG93KiB3aW5kb3csIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBpZGVudGlm
aWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQg
cmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKQor
UmVmPFRvdWNoPiBEb2N1bWVudFRvdWNoOjpjcmVhdGVUb3VjaChEb2N1bWVudCYgZG9jdW1lbnQs
IFJlZlB0cjxXaW5kb3dQcm94eT4mJiB3aW5kb3csIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBp
ZGVudGlmaWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5Z
LCBpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZv
cmNlKQogeworICAgIEZyYW1lKiBmcmFtZTsKKyAgICBpZiAod2luZG93ICYmIGlzPEZyYW1lPih3
aW5kb3ctPmZyYW1lKCkpKQorICAgICAgICBmcmFtZSA9ICZkb3duY2FzdDxGcmFtZT4od2luZG93
LT5mcmFtZSgpKTsKKyAgICBlbHNlCisgICAgICAgIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsK
KwogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciBmcm9tIHRoZSBkb2N1bWVudGF0aW9uIGF0
CiAgICAgLy8gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9zYWZhcmkvI2RvY3Vt
ZW50YXRpb24vVXNlckV4cGVyaWVuY2UvUmVmZXJlbmNlL0RvY3VtZW50QWRkaXRpb25zUmVmZXJl
bmNlL0RvY3VtZW50QWRkaXRpb25zL0RvY3VtZW50QWRkaXRpb25zLmh0bWwKICAgICAvLyB3aGVu
IHRoaXMgbWV0aG9kIHNob3VsZCB0aHJvdyBhbmQgbm9yIGlzIGl0IGJ5IGluc3BlY3Rpb24gb2Yg
aU9TIGJlaGF2aW9yLiBJdCB3b3VsZCBiZSBuaWNlIHRvIHZlcmlmeSBhbnkgY2FzZXMgd2hlcmUg
aXQgdGhyb3dzIHVuZGVyIGlPUwogICAgIC8vIGFuZCBpbXBsZW1lbnQgdGhlbSBoZXJlLiBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3ODE5Ci0gICAgcmV0dXJu
IFRvdWNoOjpjcmVhdGUod2luZG93ID8gd2luZG93LT5mcmFtZSgpIDogZG9jdW1lbnQuZnJhbWUo
KSwgdGFyZ2V0LCBpZGVudGlmaWVyLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksIHJh
ZGl1c1gsIHJhZGl1c1ksIHJvdGF0aW9uQW5nbGUsIGZvcmNlKTsKKyAgICByZXR1cm4gVG91Y2g6
OmNyZWF0ZShmcmFtZSwgdGFyZ2V0LCBpZGVudGlmaWVyLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdl
WCwgcGFnZVksIHJhZGl1c1gsIHJhZGl1c1ksIHJvdGF0aW9uQW5nbGUsIGZvcmNlKTsKIH0KIAog
UmVmPFRvdWNoTGlzdD4gRG9jdW1lbnRUb3VjaDo6Y3JlYXRlVG91Y2hMaXN0KERvY3VtZW50Jiwg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmIHRvdWNoZXMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50VG91Y2guaAppbmRleCBlMGRhZjUwNTJjYzk3ODUyYzhhMDRiYmE3M2U1ZjZh
MTE2ZjEwZTUxLi43MmM0ODg4YjQ1YWI0MDBlMjliYzhhZWQ4NmRlNGM1OTAzZWFjMjIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmgKQEAgLTM0LDE1ICszNCwxNSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
RXZlbnRUYXJnZXQ7CiBjbGFzcyBUb3VjaDsKIGNsYXNzIFRvdWNoTGlzdDsKK2NsYXNzIFdpbmRv
d1Byb3h5OwogCiBjbGFzcyBEb2N1bWVudFRvdWNoIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFRvdWNoPiBjcmVhdGVUb3VjaChEb2N1bWVudCYsIERPTVdpbmRvdyosIEV2ZW50VGFyZ2V0Kiwg
aW50IGlkZW50aWZpZXIsIGludCBwYWdlWCwgaW50IHBhZ2VZLCBpbnQgc2NyZWVuWCwgaW50IHNj
cmVlblksIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSwgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxv
YXQgZm9yY2UpOworICAgIHN0YXRpYyBSZWY8VG91Y2g+IGNyZWF0ZVRvdWNoKERvY3VtZW50Jiwg
UmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBFdmVudFRhcmdldCosIGludCBpZGVudGlmaWVyLCBpbnQg
cGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcmFkaXVzWCwg
aW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKTsKICAgICBzdGF0
aWMgUmVmPFRvdWNoTGlzdD4gY3JlYXRlVG91Y2hMaXN0KERvY3VtZW50JiwgVmVjdG9yPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8VG91Y2g+PiYmKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFRvdWNoLmlkbAppbmRleCA3YTI3Mzc0NTg2NTQ5OTFiMTFiNTU2MzA4OWUyMTk1N2NjNGM0ZTRh
Li4wNDg5YTM2YWQ2YjEyNTAzY2RiNDZhZjE0OGNiNTljZmFmZDY3NWJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50VG91Y2guaWRsCkBAIC0yMiw3ICsyMiw3IEBACiAgICAgQ29uZGl0aW9uYWw9
VE9VQ0hfRVZFTlRTCiBdIHBhcnRpYWwgaW50ZXJmYWNlIERvY3VtZW50IHsKICAgICAvLyBGSVhN
RTogVGhpcyBoYXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlIHN0YW5kYXJkIG5vdyB0aGF0IFRvdWNo
IGhhcyBhIGNvbnN0cnVjdG9yLgotICAgIFtOZXdPYmplY3RdIFRvdWNoIGNyZWF0ZVRvdWNoKG9w
dGlvbmFsIERPTVdpbmRvdz8gd2luZG93ID0gbnVsbCwgb3B0aW9uYWwgRXZlbnRUYXJnZXQ/IHRh
cmdldCA9IG51bGwsCisgICAgW05ld09iamVjdF0gVG91Y2ggY3JlYXRlVG91Y2gob3B0aW9uYWwg
V2luZG93UHJveHk/IHdpbmRvdyA9IG51bGwsIG9wdGlvbmFsIEV2ZW50VGFyZ2V0PyB0YXJnZXQg
PSBudWxsLAogICAgICAgICBvcHRpb25hbCBsb25nIGlkZW50aWZpZXIgPSAwLAogICAgICAgICBv
cHRpb25hbCBsb25nIHBhZ2VYID0gMCwgb3B0aW9uYWwgbG9uZyBwYWdlWSA9IDAsIG9wdGlvbmFs
IGxvbmcgc2NyZWVuWCA9IDAsIG9wdGlvbmFsIGxvbmcgc2NyZWVuWSA9IDAsCiAgICAgICAgIG9w
dGlvbmFsIGxvbmcgd2Via2l0UmFkaXVzWCA9IDAsIG9wdGlvbmFsIGxvbmcgd2Via2l0UmFkaXVz
WSA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAKaW5kZXggMTZkOGIzZmYwNzhkMDVhZDkx
ZTJkNjkxNDY3MTkxMjg1NWQ3YzQ4NC4uOTg2ODc3MzI2Y2UzZmFlNGJiMDU5ZTdjMTY0ZDdiYzE4
YWE5ZGZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcApAQCAtNDAsOCArNDAsOCBAQCBi
b29sIEZvY3VzRXZlbnQ6OmlzRm9jdXNFdmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLUZvY3VzRXZlbnQ6OkZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWws
IFJlZlB0cjxFdmVudFRhcmdldD4mJiByZWxhdGVkVGFyZ2V0KQotICAgIDogVUlFdmVudCh0eXBl
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCkKK0ZvY3VzRXZlbnQ6OkZvY3Vz
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2
ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpCisgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKQogICAgICwgbV9yZWxhdGVkVGFy
Z2V0KFdURk1vdmUocmVsYXRlZFRhcmdldCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRm9jdXNFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuaApp
bmRleCAwNjcyNTU3NGMwNmI5MWYyOWZiNGY5NmEwYjFiNTYxMzRmMTk2ODU0Li5jN2E0ZGY4ZTc3
NDMyY2ZlMzY0YTEzNGY4ZGU1MTUxNmEwNTdiODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRm9jdXNFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmgK
QEAgLTM1LDkgKzM1LDkgQEAgY2xhc3MgTm9kZTsKIAogY2xhc3MgRm9jdXNFdmVudCBmaW5hbCA6
IHB1YmxpYyBVSUV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZvY3VzRXZlbnQ+IGNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYm
IHJlbGF0ZWRUYXJnZXQpCisgICAgc3RhdGljIFJlZjxGb2N1c0V2ZW50PiBjcmVhdGUoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYm
IHJlbGF0ZWRUYXJnZXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb2N1
c0V2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCBXVEZNb3Zl
KHJlbGF0ZWRUYXJnZXQpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvY3VzRXZl
bnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIFdU
Rk1vdmUocmVsYXRlZFRhcmdldCkpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPEZvY3VzRXZl
bnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIEZvY3VzRXZlbnQoKSA9IGRlZmF1bHQ7Ci0gICAgRm9jdXNFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdp
bmRvdyosIGludCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmKTsKKyAgICBGb2N1c0V2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQsIFJlZlB0cjxFdmVudFRhcmdldD4mJik7CiAgICAgRm9j
dXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQp
OwogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9JbnB1dEV2ZW50LmNwcAppbmRleCBkNDQ5Mjk0ZmVjNmJjNzk3MGQ2YzQyYzRiOTdh
YjE2MWM0ZjViMWYwLi5jMTdiZjE4ZDg4YTY3NjQ3MmExODcxNjNlN2I0NTE0Zjg0NDAwYTBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuY3BwCkBAIC0yNiwyMCArMjYsMjAgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJJbnB1dEV2ZW50LmgiCiAKLSNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJOb2RlLmgiCisjaW5j
bHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmPElucHV0RXZlbnQ+IElucHV0RXZlbnQ6OmNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIFdlYkNvcmU6OkRPTVdpbmRvdyAqdmlldywgY29uc3Qg
U3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCitS
ZWY8SW5wdXRFdmVudD4gSW5wdXRFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwg
UmVmUHRyPERhdGFUcmFuc2Zlcj4mJiBkYXRhVHJhbnNmZXIsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IElucHV0RXZlbnQoZXZlbnRUeXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJsZSwg
Y2FuY2VsYWJsZSwgdmlldywgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRSYW5n
ZXMsIGRldGFpbCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQoZXZlbnRU
eXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGF0
YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRSYW5nZXMsIGRldGFpbCkpOwogfQogCi1J
bnB1dEV2ZW50OjpJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9N
V2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYg
ZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJh
bmdlcywgaW50IGRldGFpbCkKLSAgICA6IFVJRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIHZpZXcsIGRldGFpbCkKK0lucHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3Qg
U3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCisg
ICAgOiBVSUV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZp
ZXcpLCBkZXRhaWwpCiAgICAgLCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAgLCBtX2RhdGEo
ZGF0YSkKICAgICAsIG1fZGF0YVRyYW5zZmVyKGRhdGFUcmFuc2ZlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRF
dmVudC5oCmluZGV4IGNhZDhkY2U3YjM2MjZkOWEyMjc2MzRiMzU4OTI2YzFmMTI1NDY4MWIuLmQw
NTA3NjM5YzZjODljOTlkNGQzMGExY2U5MzZmOTE2MWI5YzRlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0
RXZlbnQuaApAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IERPTVdpbmRvdzsKIGNsYXNzIERhdGFUcmFuc2ZlcjsKK2NsYXNzIFdpbmRvd1Byb3h5OwogCiBj
bGFzcyBJbnB1dEV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogcHVibGljOgpAQCAtMzks
MTMgKzM5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIGRhdGE7CiAgICAgfTsKIAotICAg
IHN0YXRpYyBSZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJh
bnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2Vz
LCBpbnQgZGV0YWlsKTsKKyAgICBzdGF0aWMgUmVmPElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25z
dCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKICAgICBzdGF0aWMg
UmVmPElucHV0RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IElu
aXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElucHV0RXZlbnQodHlwZSwgaW5pdGlh
bGl6ZXIsIGlzVHJ1c3RlZCkpOwogICAgIH0KIAotICAgIElucHV0RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0
cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFy
Z2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKKyAgICBJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEs
IFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+
PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKTsKICAgICBJbnB1dEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJvb2wg
aXNJbnB1dEV2ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0tleWJvYXJkRXZlbnQuY3BwCmluZGV4IDRkYTEwMTc3MjVmZTg5MmNmYThkYWNmMGY1Yjcw
ODFkY2M2Y2ZiZTkuLjRhY2I1ZjRjZWI3NjBlMTcwZjEwN2NlYTM4NjA5ODlmNjcyNjRlYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAKKyNpbmNsdWRlICJE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgog
I2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgpAQCAtOTIsOCArOTMsOCBAQCBzdGF0aWMgaW5saW5l
IEtleWJvYXJkRXZlbnQ6OktleUxvY2F0aW9uQ29kZSBrZXlMb2NhdGlvbkNvZGUoY29uc3QgUGxh
dGZvcm1LZXlibwogCiBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudCgpID0gZGVm
YXVsdDsKIAotaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZv
cm1LZXlib2FyZEV2ZW50JiBrZXksIERPTVdpbmRvdyogdmlldykKLSAgICA6IFVJRXZlbnRXaXRo
S2V5U3RhdGUoZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUoa2V5LnR5cGUoKSksIHRydWUs
IHRydWUsIGtleS50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgdmlldywg
MCwga2V5LmN0cmxLZXkoKSwga2V5LmFsdEtleSgpLCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1ldGFL
ZXkoKSwgZmFsc2UsIGtleS5tb2RpZmllcnMoKS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpNb2Rp
Zmllcjo6Q2Fwc0xvY2tLZXkpKQoraW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQo
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3KQorICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGVGb3JLZXlib2FyZEV2ZW50
VHlwZShrZXkudHlwZSgpKSwgdHJ1ZSwgdHJ1ZSwga2V5LnRpbWVzdGFtcCgpLmFwcHJveGltYXRl
TW9ub3RvbmljVGltZSgpLCB2aWV3LmNvcHlSZWYoKSwgMCwga2V5LmN0cmxLZXkoKSwga2V5LmFs
dEtleSgpLCBrZXkuc2hpZnRLZXkoKSwga2V5Lm1ldGFLZXkoKSwgZmFsc2UsIGtleS5tb2RpZmll
cnMoKS5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tLZXkpKQogICAg
ICwgbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtS2V5
Ym9hcmRFdmVudD4oa2V5KSkKICNpZiBFTkFCTEUoS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkKICAg
ICAsIG1fa2V5KGtleS5rZXkoKSkKQEAgLTEwNCw3ICsxMDUsNyBAQCBpbmxpbmUgS2V5Ym9hcmRF
dmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwgRE9N
V2luZG93KgogICAgICwgbV9rZXlJZGVudGlmaWVyKGtleS5rZXlJZGVudGlmaWVyKCkpCiAgICAg
LCBtX2xvY2F0aW9uKGtleUxvY2F0aW9uQ29kZShrZXkpKQogICAgICwgbV9yZXBlYXQoa2V5Lmlz
QXV0b1JlcGVhdCgpKQotICAgICwgbV9pc0NvbXBvc2luZyh2aWV3ICYmIHZpZXctPmZyYW1lKCkg
JiYgdmlldy0+ZnJhbWUoKS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkKKyAgICAsIG1faXND
b21wb3NpbmcodmlldyAmJiBpczxET01XaW5kb3c+KHZpZXctPndpbmRvdygpKSAmJiBkb3duY2Fz
dDxET01XaW5kb3c+KCp2aWV3LT53aW5kb3coKSkuZnJhbWUoKSAmJiBkb3duY2FzdDxET01XaW5k
b3c+KCp2aWV3LT53aW5kb3coKSkuZnJhbWUoKS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkK
ICNpZiBVU0UoQVBQS0lUKQogICAgICwgbV9oYW5kbGVkQnlJbnB1dE1ldGhvZChrZXkuaGFuZGxl
ZEJ5SW5wdXRNZXRob2QoKSkKICAgICAsIG1fa2V5cHJlc3NDb21tYW5kcyhrZXkuY29tbWFuZHMo
KSkKQEAgLTEzMiw5ICsxMzMsOSBAQCBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgSW5pdCYgaQogCiBLZXlib2Fy
ZEV2ZW50Ojp+S2V5Ym9hcmRFdmVudCgpID0gZGVmYXVsdDsKIAotUmVmPEtleWJvYXJkRXZlbnQ+
IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIHBsYXRm
b3JtRXZlbnQsIERPTVdpbmRvdyogdmlldykKK1JlZjxLZXlib2FyZEV2ZW50PiBLZXlib2FyZEV2
ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBwbGF0Zm9ybUV2ZW50LCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBL
ZXlib2FyZEV2ZW50KHBsYXRmb3JtRXZlbnQsIHZpZXcpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBLZXlib2FyZEV2ZW50KHBsYXRmb3JtRXZlbnQsIFdURk1vdmUodmlldykpKTsKIH0KIAog
UmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzKCkKQEAg
LTE0NywxMyArMTQ4LDEzIEBAIFJlZjxLZXlib2FyZEV2ZW50PiBLZXlib2FyZEV2ZW50OjpjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgS2V5Ym9hcmRFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7
CiB9CiAKLXZvaWQgS2V5Ym9hcmRFdmVudDo6aW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cq
IHZpZXcsCit2b2lkIEtleWJvYXJkRXZlbnQ6OmluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdp
bmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCB1bnNp
Z25lZCBsb2NhdGlvbiwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwg
Ym9vbCBtZXRhS2V5LCBib29sIGFsdEdyYXBoS2V5KQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0
Y2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJi
bGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAgICBtX2tleUlkZW50aWZpZXIg
PSBrZXlJZGVudGlmaWVyOwogICAgIG1fbG9jYXRpb24gPSBsb2NhdGlvbjsKQEAgLTIyNyw4ICsy
MjgsOSBAQCBpbnQgS2V5Ym9hcmRFdmVudDo6Y2hhckNvZGUoKSBjb25zdAogICAgIC8vIEZpcmVm
b3g6IDAgZm9yIGtleWRvd24va2V5dXAgZXZlbnRzLCBjaGFyYWN0ZXIgY29kZSBmb3Iga2V5cHJl
c3MKICAgICAvLyBXZSBtYXRjaCBGaXJlZm94LCB1bmxlc3MgaW4gYmFja3dhcmQgY29tcGF0aWJp
bGl0eSBtb2RlLCB3aGVyZSB3ZSBhbHdheXMgcmV0dXJuIHRoZSBjaGFyYWN0ZXIgY29kZS4KICAg
ICBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUgPSBmYWxzZTsKLSAgICBpZiAodmlldygp
ICYmIHZpZXcoKS0+ZnJhbWUoKSkKLSAgICAgICAgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9
IHZpZXcoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkubmVlZHNLZXlib2FyZEV2ZW50RGlzYW1i
aWd1YXRpb25RdWlya3MoKTsKKyAgICBhdXRvKiB3aW5kb3cgPSB2aWV3KCkgPyB2aWV3KCktPndp
bmRvdygpIDogbnVsbHB0cjsKKyAgICBpZiAoaXM8RE9NV2luZG93Pih3aW5kb3cpICYmIGRvd25j
YXN0PERPTVdpbmRvdz4oKndpbmRvdykuZnJhbWUoKSkKKyAgICAgICAgYmFja3dhcmRDb21wYXRp
YmlsaXR5TW9kZSA9IGRvd25jYXN0PERPTVdpbmRvdz4oKndpbmRvdykuZnJhbWUoKS0+ZXZlbnRI
YW5kbGVyKCkubmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25RdWlya3MoKTsKIAogICAg
IGlmICghbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudCB8fCAodHlwZSgpICE9IGV2ZW50TmFtZXMo
KS5rZXlwcmVzc0V2ZW50ICYmICFiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKSkKICAgICAgICAg
cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaAppbmRleCA4MjEwMzMwZWFiMDM0
MWY0Y2E1NGNkMjVjNThiOTk1NDZmMGIxNWE5Li4xZDNjYzI0Mzc5OWIxOWE3NDRlZTk3OGExODdl
YWVhZWM4ODA1ZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKQEAgLTQzLDcgKzQz
LDcgQEAgcHVibGljOgogICAgICAgICBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCA9IDB4MDMKICAg
ICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxLZXlib2FyZEV2ZW50PiBjcmVh
dGUoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxLZXlib2FyZEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAgICBzdGF0aWMgUmVmPEtl
eWJvYXJkRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBzdHJ1Y3QgSW5pdCA6IHB1
YmxpYyBFdmVudE1vZGlmaWVySW5pdCB7CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgfktleWJvYXJkRXZlbnQoKTsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAogICAgICAgICBjb25z
dCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIHVuc2lnbmVkIGxvY2F0aW9uLAogICAgICAgICBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIGJvb2wg
YWx0R3JhcGhLZXkgPSBmYWxzZSk7CiAgICAgCkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIEtleWJvYXJkRXZlbnQoKTsKLSAgICBLZXlib2FyZEV2ZW50KGNvbnN0
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYsIERPTVdpbmRvdyopOworICAgIEtleWJvYXJkRXZlbnQo
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAg
ICBLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEluaXQmLCBJc1RydXN0
ZWQpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4gbV91bmRl
cmx5aW5nUGxhdGZvcm1FdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXli
b2FyZEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmlkbAppbmRl
eCA3NTdjMDc3OTNmNWU1ZjFlMTg0MzhmNzhkZDQ0N2U5YTNhMWQ1MTA5Li5jZGU0NTBjMzQzNTMz
NTA5MmExNzdkNmRmNjM2OGJmNjM1MWQ3MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vS2V5Ym9hcmRFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZl
bnQuaWRsCkBAIC01Miw3ICs1Miw3IEBACiAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBub3QgbWF0
Y2ggdGhlIHZlcnNpb24gaW4gdGhlIERPTSBzcGVjLgogICAgIC8vIEZJWE1FOiBVc2luZyAidW5k
ZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KICAgICB2b2lkIGlu
aXRLZXlib2FyZEV2ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9w
dGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2Vs
YWJsZSA9IGZhbHNlLAotICAgICAgICBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBv
cHRpb25hbCBET01TdHJpbmcga2V5SWRlbnRpZmllciA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCB1
bnNpZ25lZCBsb25nIGxvY2F0aW9uID0gMCwKKyAgICAgICAgb3B0aW9uYWwgV2luZG93UHJveHk/
IHZpZXcgPSBudWxsLCBvcHRpb25hbCBET01TdHJpbmcga2V5SWRlbnRpZmllciA9ICJ1bmRlZmlu
ZWQiLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGxvY2F0aW9uID0gMCwKICAgICAgICAgb3B0aW9u
YWwgYm9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFs
c2UsIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBt
ZXRhS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0R3JhcGhLZXkgPSBmYWxzZSk7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggNTE5N2Q1YmFlMWFlMzVhYWIwNGYw
Y2I1MGU3NmU5ZDhmYWExOGI3OS4uMzMwOTI3ODdkMTRhZTY1NzNlYTFiOWQxZmQ5YTdkMGVlZTBm
NDAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMjcsMTIgKzI3LDEyIEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQu
aCIKICNpbmNsdWRlICJKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVBvcnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyLmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKICNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCw5ICs0MCw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2I7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci11c2luZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBS
ZWZQdHI8TWVzc2FnZVBvcnQ+LCBSZWZQdHI8U2VydmljZVdvcmtlcj4+OwordXNpbmcgTWVzc2Fn
ZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8TWVzc2Fn
ZVBvcnQ+LCBSZWZQdHI8U2VydmljZVdvcmtlcj4+OwogI2Vsc2UKLXVzaW5nIE1lc3NhZ2VFdmVu
dFNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxNZXNzYWdlUG9ydD4+
OwordXNpbmcgTWVzc2FnZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+
LCBSZWZQdHI8TWVzc2FnZVBvcnQ+PjsKICNlbmRpZgogCiBjbGFzcyBNZXNzYWdlRXZlbnQgZmlu
YWwgOiBwdWJsaWMgRXZlbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAppbmRleCAw
MjQzOGZkNGM0N2MzZmMyOTJlYWJmNDdlNWM1ZTgzZjg2OTUwODIyLi5mYTQ4YzhmYTVkYTVmZGMz
ZTBmMmMyZjdlZmJmYTc1Y2Q4ZjU0MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50Lmlk
bApAQCAtMjcsOSArMjcsOSBAQAogICovCiAKICNpZiBkZWZpbmVkKEVOQUJMRV9TRVJWSUNFX1dP
UktFUikgJiYgRU5BQkxFX1NFUlZJQ0VfV09SS0VSCi10eXBlZGVmIChET01XaW5kb3cgb3IgTWVz
c2FnZVBvcnQgb3IgU2VydmljZVdvcmtlcikgTWVzc2FnZUV2ZW50U291cmNlOwordHlwZWRlZiAo
V2luZG93UHJveHkgb3IgTWVzc2FnZVBvcnQgb3IgU2VydmljZVdvcmtlcikgTWVzc2FnZUV2ZW50
U291cmNlOwogI2Vsc2UKLXR5cGVkZWYgKERPTVdpbmRvdyBvciBNZXNzYWdlUG9ydCkgTWVzc2Fn
ZUV2ZW50U291cmNlOwordHlwZWRlZiAoV2luZG93UHJveHkgb3IgTWVzc2FnZVBvcnQpIE1lc3Nh
Z2VFdmVudFNvdXJjZTsKICNlbmRpZgogCiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKaW5k
ZXggYTE0N2UxMjE4YmI2ZTI0ZjJhZDc2NDcwNzQ2MGM2NjcwMjFmNmM1OS4uYzg5NmY4NjMxYTNk
MmJiZGExOTMwNjIxMGZlZGRiODk4NmU0Y2E2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNw
cApAQCAtNDQsMTMgKzQ0LDEzIEBAIFJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNb3VzZUV2ZW50SW5pCiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7
CiB9CiAKLVJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIERPTVdpbmRvdyogdmlldywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldmVudCwgaW50IGRldGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCkKK1JlZjxNb3VzZUV2ZW50
PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBp
bnQgZGV0YWlsLCBOb2RlKiByZWxhdGVkVGFyZ2V0KQogewogICAgIGJvb2wgaXNNb3VzZUVudGVy
T3JMZWF2ZSA9IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2VlbnRlckV2ZW50IHx8IGV2
ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2VsZWF2ZUV2ZW50OwogICAgIGJvb2wgaXNDYW5j
ZWxhYmxlID0gZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCAmJiAhaXNN
b3VzZUVudGVyT3JMZWF2ZTsKICAgICBib29sIGNhbkJ1YmJsZSA9ICFpc01vdXNlRW50ZXJPckxl
YXZlOwogCi0gICAgcmV0dXJuIE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGNhbkJ1YmJs
ZSwgaXNDYW5jZWxhYmxlLCBldmVudC50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1Rp
bWUoKSwgdmlldywKKyAgICByZXR1cm4gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgY2Fu
QnViYmxlLCBpc0NhbmNlbGFibGUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3Rv
bmljVGltZSgpLCBXVEZNb3ZlKHZpZXcpLAogICAgICAgICBkZXRhaWwsIGV2ZW50Lmdsb2JhbFBv
c2l0aW9uKCkueCgpLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLnkoKSwgZXZlbnQucG9zaXRpb24o
KS54KCksIGV2ZW50LnBvc2l0aW9uKCkueSgpLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAg
ICAgICAgIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS54KCksIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS55
KCksCkBAIC01OSwxMyArNTksMTMgQEAgUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWUKICAgICAgICAg
cmVsYXRlZFRhcmdldCwgZXZlbnQuZm9yY2UoKSwgZXZlbnQuc3ludGhldGljQ2xpY2tUeXBlKCkp
OwogfQogCi1SZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGlt
ZSB0aW1lc3RhbXAsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKK1JlZjxNb3VzZUV2ZW50PiBNb3VzZUV2
ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VY
LCBpbnQgcGFnZVksCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBpbnQgbW92ZW1lbnRY
LCBpbnQgbW92ZW1lbnRZLAogI2VuZGlmCiAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwg
Ym9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbnMsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0LCBkb3VibGUgZm9y
Y2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRGF0YVRyYW5zZmVyKiBkYXRh
VHJhbnNmZXIsIGJvb2wgaXNTaW11bGF0ZWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TW91c2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgdmlldywK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2Fu
Y2VsYWJsZSwgdGltZXN0YW1wLCBXVEZNb3ZlKHZpZXcpLAogICAgICAgICBkZXRhaWwsIHsgc2Ny
ZWVuWCwgc2NyZWVuWSB9LCB7IHBhZ2VYLCBwYWdlWSB9LAogI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCiAgICAgICAgIHsgbW92ZW1lbnRYLCBtb3ZlbWVudFkgfSwKQEAgLTczLDE5ICs3MywxOSBA
QCBSZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvbwogICAgICAgICBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHJlbGF0ZWRUYXJnZXQsIGZvcmNlLCBzeW50
aGV0aWNDbGlja1R5cGUsIGRhdGFUcmFuc2ZlciwgaXNTaW11bGF0ZWQpKTsKIH0KIAotUmVmPE1v
dXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBpbnQg
ZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50
WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5
LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVk
IHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCitS
ZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xp
ZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRL
ZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBi
dXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiBy
ZWxhdGVkVGFyZ2V0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQoZXZl
bnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCwgeyBzY3JlZW5YLCBz
Y3JlZW5ZIH0sIHsgY2xpZW50WCwgY2xpZW50WSB9LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHN5bnRoZXRpY0NsaWNrVHlwZSwgcmVsYXRlZFRh
cmdldCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQoZXZlbnRUeXBlLCBj
YW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRldGFpbCwgeyBzY3JlZW5YLCBz
Y3JlZW5ZIH0sIHsgY2xpZW50WCwgY2xpZW50WSB9LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBidXR0b24sIGJ1dHRvbnMsIHN5bnRoZXRpY0NsaWNrVHlwZSwgcmVsYXRlZFRh
cmdldCkpOwogfQogCiBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KCkgPSBkZWZhdWx0OwogCi1Nb3Vz
ZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2lu
ZG93KiB2aWV3LCBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNv
bnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKK01vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywg
aW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2lu
dCYgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgY29u
c3QgSW50UG9pbnQmIG1vdmVtZW50RGVsdGEsCiAjZW5kaWYKICAgICAgICAgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9y
dCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFy
Z2V0LCBkb3VibGUgZm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRGF0
YVRyYW5zZmVyKiBkYXRhVHJhbnNmZXIsIGJvb2wgaXNTaW11bGF0ZWQpCi0gICAgOiBNb3VzZVJl
bGF0ZWRFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2
aWV3LCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB3aW5kb3dMb2NhdGlvbiwKKyAgICA6IE1vdXNl
UmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAs
IFdURk1vdmUodmlldyksIGRldGFpbCwgc2NyZWVuTG9jYXRpb24sIHdpbmRvd0xvY2F0aW9uLAog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIG1vdmVtZW50RGVsdGEsCiAjZW5kaWYK
QEAgLTEwMCw4ICsxMDAsOCBAQCBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZQogewogfQogCi1Nb3Vz
ZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGNv
bnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExvY2F0
aW9uLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWdu
ZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCkK
LSAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBNb25vdG9uaWNUaW1lOjpub3coKSwgdmlldywgZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwgeyB9
LAorTW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZp
ZXcsIGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50
UG9pbnQmIGNsaWVudExvY2F0aW9uLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hv
cnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdl
dCogcmVsYXRlZFRhcmdldCkKKyAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2Fu
QnViYmxlLCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwg
ZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwgeyB9LAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAg
ICAgICAgIHsgfSwKICNlbmRpZgpAQCAtMTI3LDEyICsxMjcsMTIgQEAgTW91c2VFdmVudDo6TW91
c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgTW91c2VFdmVudElu
aXQmIGluaXQKIAogTW91c2VFdmVudDo6fk1vdXNlRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQg
TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWws
IGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCit2b2lkIE1vdXNl
RXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBk
ZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZ
LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXks
IHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCiB7CiAg
ICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRV
SUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKTsKKyAgICBp
bml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRl
dGFpbCk7CiAKICAgICBtX3NjcmVlbkxvY2F0aW9uID0gSW50UG9pbnQoc2NyZWVuWCwgc2NyZWVu
WSk7CiAgICAgbV9jdHJsS2V5ID0gY3RybEtleTsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIE1v
dXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgYwogCiAvLyBGSVhNRTogV2UgbmVlZCB0aGlzIHF1aXJrIGJlY2F1c2Ug
aUFkIFByb2R1Y2VyIGlzIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aXRoIGEgcmVsYXRlZFRhcmdl
dCB0aGF0IGlzIG5vdCBhbiBFdmVudFRhcmdldCAocmRhcjovL3Byb2JsZW0vMzA2NDAxMDEpLgog
Ly8gV2Ugc2hvdWxkIHJlbW92ZSB0aGlzIHF1aXJrIHdoZW4gcG9zc2libGUuCi12b2lkIE1vdXNl
RXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmsoRXhlY1N0YXRlJiBzdGF0ZSwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGlu
dCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGll
bnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgSlNWYWx1ZSByZWxhdGVkVGFyZ2V0VmFsdWUpCit2
b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmsoRXhlY1N0YXRlJiBzdGF0ZSwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBp
bnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBKU1ZhbHVlIHJl
bGF0ZWRUYXJnZXRWYWx1ZSkKIHsKICAgICBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCA9IG51
bGxwdHI7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTW91c2VF
dmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayhFeGVjU3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBzCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIH0KICNlbmRpZgotICAgIGluaXRN
b3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCBzY3Jl
ZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBidXR0b24sIHJlbGF0ZWRUYXJnZXQpOworICAgIGluaXRNb3VzZUV2ZW50KHR5
cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCBzY3JlZW5Y
LCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBt
ZXRhS2V5LCBidXR0b24sIHJlbGF0ZWRUYXJnZXQpOwogfQogCiBFdmVudEludGVyZmFjZSBNb3Vz
ZUV2ZW50OjpldmVudEludGVyZmFjZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTW91c2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaAppbmRl
eCAyNmNhZjhmNmIxOTE1MTY2OGI2ODAzNTU0YTBiMDAxNjRkM2UxZmNmLi40YjI4MDc5OTU1YjRj
YjczYTJjZTE2OGViNWExMzlkNzMxNTZhOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKQEAg
LTI5LDE5ICsyOSwyMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhVHJhbnNm
ZXI7CitjbGFzcyBOb2RlOwogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogCiBjbGFzcyBNb3Vz
ZUV2ZW50IDogcHVibGljIE1vdXNlUmVsYXRlZEV2ZW50IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGlt
ZXN0YW1wLCBET01XaW5kb3cqLCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblks
IGludCBwYWdlWCwgaW50IHBhZ2VZLAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW91
c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgs
IGludCBwYWdlWSwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBpbnQgbW92ZW1l
bnRYLCBpbnQgbW92ZW1lbnRZLAogI2VuZGlmCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCwgZG91
YmxlIGZvcmNlLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIERhdGFUcmFuc2Zl
ciogPSBudWxscHRyLCBib29sIGlzU2ltdWxhdGVkID0gZmFsc2UpOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGludCBkZXRh
aWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGludCBkZXRhaWwsIE5v
ZGUqIHJlbGF0ZWRUYXJnZXQpOwogCi0gICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwg
aW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29s
IHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQg
c2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRh
cmdldCogcmVsYXRlZFRhcmdldCk7CisgICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5
cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KTsKIAogICAgIHN0YXRpYyBSZWY8TW91c2VF
dmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZl
bnQpOyB9CiAKQEAgLTQ5LDggKzUwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+TW91c2VF
dmVudCgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0TW91c2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdp
bmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgs
IGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBi
b29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRU
YXJnZXQpOwotICAgIHZvaWQgaW5pdE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4ZWNTdGF0ZSYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3Jl
ZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0
IGJ1dHRvbiwgSlNDOjpKU1ZhbHVlIHJlbGF0ZWRUYXJnZXQpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgaW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRhaWws
IGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpOworICAgIHZvaWQg
aW5pdE1vdXNlRXZlbnRRdWlyayhKU0M6OkV4ZWNTdGF0ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LCBKU0M6OkpTVmFsdWUgcmVsYXRlZFRhcmdldCk7CiAKICAgICB1bnNpZ25lZCBzaG9ydCBidXR0
b24oKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbjsgfQogICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRv
bnMoKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbnM7IH0KQEAgLTcwLDcgKzcxLDcgQEAgcHVibGlj
OgogICAgIGludCB3aGljaCgpIGNvbnN0IGZpbmFsOwogCiBwcm90ZWN0ZWQ6Ci0gICAgTW91c2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqLAorICAgIE1vdXNlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLAogICAg
ICAgICBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IElu
dFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAg
ICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKQEAgLTc4LDcgKzc5LDcgQEAgcHJvdGVj
dGVkOgogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBi
b29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
cywKICAgICAgICAgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwgdW5z
aWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIqLCBib29sIGlzU2lt
dWxhdGVkKTsKIAotICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLAorICAgIE1vdXNlRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxl
LCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IEludFBv
aW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudExvY2F0aW9uLAogICAg
ICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFL
ZXksCiAgICAgICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
cywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRl
ZFRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwKaW5kZXggMGJlMGY4OGRkMzVkN2Nk
ZmI4ZDM1NDJkYWRlMTZlMzI5NGZkYzgzYS4uNjBjNDQ2NjY3MWYwNjE5ZmVlMDlkMGYwMTkzZjlh
NDFmNmIzZTgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmlkbApAQCAtNDMsNyArNDMsNyBA
QAogICAgIC8vIEZJWE1FOiByZWxhdGVkVGFyZ2V0IHNob3VsZCBiZSBvZiB0eXBlIEV2ZW50VGFy
Z2V0PyBidXQgd2UgbmVlZCB0byB1c2UgYW55IHRvIHN1cHBvcnQgYSBxdWlyayBmb3IgaUFkIFBy
b2R1Y2VyIChyZGFyOi8vcHJvYmxlbS8zMDY0MDEwMSkuCiAgICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlJlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9aW5pdE1vdXNlRXZlbnRR
dWlya10gdm9pZCBpbml0TW91c2VFdmVudChvcHRpb25hbCBET01TdHJpbmcgdHlwZSA9ICJ1bmRl
ZmluZWQiLAogICAgICAgICBvcHRpb25hbCBib29sZWFuIGNhbkJ1YmJsZSA9IGZhbHNlLCBvcHRp
b25hbCBib29sZWFuIGNhbmNlbGFibGUgPSBmYWxzZSwKLSAgICAgICAgb3B0aW9uYWwgRE9NV2lu
ZG93PyB2aWV3ID0gbnVsbCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAwLAorICAgICAgICBvcHRp
b25hbCBXaW5kb3dQcm94eT8gdmlldyA9IG51bGwsIG9wdGlvbmFsIGxvbmcgZGV0YWlsID0gMCwK
ICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5Z
ID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRYID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRZID0g
MCwKICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJv
b2xlYW4gYWx0S2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwg
b3B0aW9uYWwgYm9vbGVhbiBtZXRhS2V5ID0gZmFsc2UsCiAgICAgICAgIG9wdGlvbmFsIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiA9IDAsIG9wdGlvbmFsIGFueSByZWxhdGVkVGFyZ2V0ID0gbnVsbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAppbmRleCA4NTM3MTRkNmFi
MWYwMWU4YTVlYWNlMGQwZTQzOTc1ZWIzZDU4NDlmLi44MGE4MjY3ZGMyMWJkOGIzYmY1MTgzMGZl
NGIzMGE0MmE2MTIwMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxh
dGVkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5j
cHAKQEAgLTMyLDEzICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1vdXNlUmVs
YXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3Rh
bXAsIERPTVdpbmRvdyogRE9NV2luZG93LAorTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRl
ZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRldGFp
bCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93
TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKICNlbmRpZgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgYm9vbCBpc1NpbXVsYXRlZCkKLSAg
ICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUs
IHRpbWVzdGFtcCwgRE9NV2luZG93LCBkZXRhaWwsIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXks
IG1ldGFLZXksIGZhbHNlLCBmYWxzZSkKKyAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRU
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgV1RGTW92ZSh2aWV3KSwgZGV0
YWlsLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBmYWxzZSwgZmFsc2UpCiAg
ICAgLCBtX3NjcmVlbkxvY2F0aW9uKHNjcmVlbkxvY2F0aW9uKQogI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCiAgICAgLCBtX21vdmVtZW50RGVsdGEobW92ZW1lbnREZWx0YSkKQEAgLTYxLDcgKzYx
LDcgQEAgTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBjb25zdCBNb3VzZVIKIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6Omlu
aXQoYm9vbCBpc1NpbXVsYXRlZCwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uKQogewog
ICAgIGlmICghaXNTaW11bGF0ZWQpIHsKLSAgICAgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZy
YW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSkgeworICAgICAgICBpZiAoYXV0byogZnJhbWVW
aWV3ID0gZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpIHsKICAgICAgICAgICAgIEZs
b2F0UG9pbnQgYWJzb2x1dGVQb2ludCA9IGZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyh3aW5k
b3dMb2NhdGlvbik7CiAgICAgICAgICAgICBGbG9hdFBvaW50IGRvY3VtZW50UG9pbnQgPSBmcmFt
ZVZpZXctPmFic29sdXRlVG9Eb2N1bWVudFBvaW50KGFic29sdXRlUG9pbnQpOwogICAgICAgICAg
ICAgbV9wYWdlTG9jYXRpb24gPSBmbG9vcmVkTGF5b3V0UG9pbnQoZG9jdW1lbnRQb2ludCk7CkBA
IC04MywxMyArODMsMTMgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVz
KCkKICAgICBtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb24gPSBmYWxzZTsKIH0KIAotRnJhbWVW
aWV3KiBNb3VzZVJlbGF0ZWRFdmVudDo6ZnJhbWVWaWV3RnJvbURPTVdpbmRvdyhET01XaW5kb3cq
IHdpbmRvdykKK0ZyYW1lVmlldyogTW91c2VSZWxhdGVkRXZlbnQ6OmZyYW1lVmlld0Zyb21XaW5k
b3dQcm94eShXaW5kb3dQcm94eSogd2luZG93UHJveHkpCiB7Ci0gICAgYXV0byogZnJhbWUgPSB3
aW5kb3cgPyB3aW5kb3ctPmZyYW1lKCkgOiBudWxscHRyOwotICAgIGlmICghZnJhbWUpCisgICAg
aWYgKCF3aW5kb3dQcm94eSB8fCAhaXM8RE9NV2luZG93Pih3aW5kb3dQcm94eS0+d2luZG93KCkp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBmcmFtZS0+dmlldygpOwor
ICAgIGF1dG8qIGZyYW1lID0gZG93bmNhc3Q8RE9NV2luZG93Pigqd2luZG93UHJveHktPndpbmRv
dygpKS5mcmFtZSgpOworICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT52aWV3KCkgOiBudWxscHRy
OwogfQogCiBMYXlvdXRQb2ludCBNb3VzZVJlbGF0ZWRFdmVudDo6cGFnZVBvaW50VG9DbGllbnRQ
b2ludChMYXlvdXRQb2ludCBwYWdlUG9pbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQpAQCAtMTEz
LDcgKzExMyw3IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGluYXRlcyhjb25z
dCBMYXlvdXRQb2ludCYgY2xpZW50TG9jYXRpb24pCiAgICAgLy8gU2V0IHVwIGluaXRpYWwgdmFs
dWVzIGZvciBjb29yZGluYXRlcy4KICAgICAvLyBDb3JyZWN0IHZhbHVlcyBhcmUgY29tcHV0ZWQg
bGF6aWx5LCBzZWUgY29tcHV0ZVJlbGF0aXZlUG9zaXRpb24uCiAgICAgRmxvYXRTaXplIGRvY3Vt
ZW50VG9DbGllbnRPZmZzZXQ7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zy
b21ET01XaW5kb3codmlldygpKSkKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3
RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpCiAgICAgICAgIGRvY3VtZW50VG9DbGllbnRPZmZzZXQg
PSBmcmFtZVZpZXctPmRvY3VtZW50VG9DbGllbnRPZmZzZXQoKTsKIAogICAgIG1fY2xpZW50TG9j
YXRpb24gPSBjbGllbnRMb2NhdGlvbjsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIE1vdXNlUmVs
YXRlZEV2ZW50Ojppbml0Q29vcmRpbmF0ZXMoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudExvY2F0
aW9uKQogCiBmbG9hdCBNb3VzZVJlbGF0ZWRFdmVudDo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVG
YWN0b3IoKSBjb25zdAogewotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9t
RE9NV2luZG93KHZpZXcoKSkpCisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zy
b21XaW5kb3dQcm94eSh2aWV3KCkpKQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5kb2N1bWVu
dFRvQWJzb2x1dGVTY2FsZUZhY3RvcigpOwogCiAgICAgcmV0dXJuIDE7CkBAIC0xMzYsNyArMTM2
LDcgQEAgZmxvYXQgTW91c2VSZWxhdGVkRXZlbnQ6OmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFj
dG9yKCkgY29uc3QKIAogdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVBhZ2VMb2NhdGlv
bigpCiB7Ci0gICAgbV9hYnNvbHV0ZUxvY2F0aW9uID0gcGFnZVBvaW50VG9BYnNvbHV0ZVBvaW50
KG1fcGFnZUxvY2F0aW9uLCBmcmFtZVZpZXdGcm9tRE9NV2luZG93KHZpZXcoKSkpOworICAgIG1f
YWJzb2x1dGVMb2NhdGlvbiA9IHBhZ2VQb2ludFRvQWJzb2x1dGVQb2ludChtX3BhZ2VMb2NhdGlv
biwgZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpOwogfQogCiB2b2lkIE1vdXNlUmVs
YXRlZEV2ZW50OjpyZWNlaXZlZFRhcmdldCgpCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBNb3Vz
ZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVJlbGF0aXZlUG9zaXRpb24oKQogICAgIAogRmxvYXRQb2lu
dCBNb3VzZVJlbGF0ZWRFdmVudDo6bG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSBjb25z
dAogewotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9tRE9NV2luZG93KHZp
ZXcoKSkpCisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21XaW5kb3dQcm94
eSh2aWV3KCkpKQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5jb250ZW50c1RvUm9vdFZpZXco
cm91bmRlZEludFBvaW50KG1fYWJzb2x1dGVMb2NhdGlvbikpOwogCiAgICAgcmV0dXJuIG1fYWJz
b2x1dGVMb2NhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0
ZWRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKaW5kZXgg
MGQ4M2MzNjA5ZjcxZWFmZWYyMTcxYTljZDBkNDMxYWU2ZDg1NGY4Yi4uYWQ0ZTVkMGMzNTZmNTQx
ZTA4MmUxMWEyNmEyZDBjYzExNWZkNTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L01vdXNlUmVsYXRlZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRl
ZEV2ZW50LmgKQEAgLTY3LDE0ICs2NywxNCBAQCBwdWJsaWM6CiAgICAgLy8gdXNhYmxlIHdpdGgg
UmVuZGVyT2JqZWN0OjphYnNvbHV0ZVRvTG9jYWwpLgogICAgIGNvbnN0IExheW91dFBvaW50JiBh
YnNvbHV0ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZUxvY2F0aW9uOyB9CiAg
ICAgCi0gICAgc3RhdGljIEZyYW1lVmlldyogZnJhbWVWaWV3RnJvbURPTVdpbmRvdyhET01XaW5k
b3cqKTsKKyAgICBzdGF0aWMgRnJhbWVWaWV3KiBmcmFtZVZpZXdGcm9tV2luZG93UHJveHkoV2lu
ZG93UHJveHkqKTsKIAogICAgIHN0YXRpYyBMYXlvdXRQb2ludCBwYWdlUG9pbnRUb0NsaWVudFBv
aW50KExheW91dFBvaW50IHBhZ2VQb2ludCwgRnJhbWVWaWV3Kik7CiAgICAgc3RhdGljIExheW91
dFBvaW50IHBhZ2VQb2ludFRvQWJzb2x1dGVQb2ludChMYXlvdXRQb2ludCBwYWdlUG9pbnQsIEZy
YW1lVmlldyopOwogCiBwcm90ZWN0ZWQ6CiAgICAgTW91c2VSZWxhdGVkRXZlbnQoKSA9IGRlZmF1
bHQ7Ci0gICAgTW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9N
V2luZG93KiwKKyAgICBNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1w
LCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IEludFBv
aW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAogI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIGNvbnN0IEludFBvaW50JiBtb3ZlbWVudERl
bHRhLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDRiMWU4NzI1Nzk1MzNmYmY3ODcxMmZkNmQyM2QyYzgx
NWIwM2ViMzguLmM5MTkwN2NkZDRhNDhiMTcyZWEzYTJkZWUxZTg4MDc4MGJlNWRlMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDb21wb3NlZFRyZWVBbmNl
c3Rvckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKICNp
bmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIKICNp
bmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaW11bGF0ZWRDbGljay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltdWxhdGVkQ2xpY2su
Y3BwCmluZGV4IGUwZjRlMzUyZWNhMThkY2RjODU5MjQ5MmVjNTA4NDI5MjhhYjY1NzQuLjQxN2U5
MDdiZjI4ODFiNmE4N2Y2MWQ2MDkxNmI2N2U2OGViOWMxMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Np
bXVsYXRlZENsaWNrLmNwcApAQCAtMzcsMTQgKzM3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgU2ltdWxhdGVkTW91c2VFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWV3LCBSZWZQdHI8RXZlbnQ+
JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQsIFNpbXVsYXRlZENsaWNrU291cmNl
IHNvdXJjZSkKKyAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIFJl
ZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVk
Q2xpY2tTb3VyY2Ugc291cmNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2ltdWxhdGVkTW91c2VFdmVudChldmVudFR5cGUsIHZpZXcsIFdURk1vdmUodW5kZXJseWluZ0V2
ZW50KSwgdGFyZ2V0LCBzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2lt
dWxhdGVkTW91c2VFdmVudChldmVudFR5cGUsIFdURk1vdmUodmlldyksIFdURk1vdmUodW5kZXJs
eWluZ0V2ZW50KSwgdGFyZ2V0LCBzb3VyY2UpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU2lt
dWxhdGVkTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93
KiB2aWV3LCBSZWZQdHI8RXZlbnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQs
IFNpbXVsYXRlZENsaWNrU291cmNlIHNvdXJjZSkKLSAgICAgICAgOiBNb3VzZUV2ZW50KGV2ZW50
VHlwZSwgdHJ1ZSwgdHJ1ZSwgdW5kZXJseWluZ0V2ZW50ID8gdW5kZXJseWluZ0V2ZW50LT50aW1l
U3RhbXAoKSA6IE1vbm90b25pY1RpbWU6Om5vdygpLCB2aWV3LCAwLCB7IH0sIHsgfSwKKyAgICBT
aW11bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgUmVmUHRyPEV2ZW50PiYmIHVuZGVybHlpbmdFdmVudCwgRWxl
bWVudCYgdGFyZ2V0LCBTaW11bGF0ZWRDbGlja1NvdXJjZSBzb3VyY2UpCisgICAgICAgIDogTW91
c2VFdmVudChldmVudFR5cGUsIHRydWUsIHRydWUsIHVuZGVybHlpbmdFdmVudCA/IHVuZGVybHlp
bmdFdmVudC0+dGltZVN0YW1wKCkgOiBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3
KSwgMCwgeyB9LCB7IH0sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgICAgIHsg
fSwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAppbmRleCBiZDAyNGVhNTVmNmJhODRl
MzJjOTA0NDZmY2JmODI4MjA0ZDJjMzBjLi5iMDk0NDkzYzFmODU1ODQ5ODg5M2MyY2I3YzBkMDc0
NmI2YWI1YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcApAQCAtMzgsMjkgKzM4LDI5IEBA
IFJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRleHRFdmVudCk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVu
dDo6Y3JlYXRlKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJ
bnB1dFR5cGUgaW5wdXRUeXBlKQorUmVmPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGUoUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5w
dXRUeXBlIGlucHV0VHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQo
dmlldywgZGF0YSwgaW5wdXRUeXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2
ZW50KFdURk1vdmUodmlldyksIGRhdGEsIGlucHV0VHlwZSkpOwogfQogCi1SZWY8VGV4dEV2ZW50
PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKERPTVdpbmRvdyogdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSkKK1JlZjxUZXh0RXZlbnQ+
IFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYm
IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KHZpZXcsIGRhdGEsIDAsIHNob3VsZFNt
YXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1
b3RlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdURk1vdmUodmlldyks
IGRhdGEsIDAsIHNob3VsZFNtYXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxp
bmc6OlJlc3BlY3RCbG9ja3F1b3RlKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6
Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiYmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNo
U3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKK1Jl
ZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBz
aG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVI
YW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFRleHRFdmVudCh2aWV3LCBlbXB0eVN0cmluZygpLCBXVEZNb3ZlKGRhdGEpLCBzaG91bGRT
bWFydFJlcGxhY2UsIHNob3VsZE1hdGNoU3R5bGUsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZW1wdHlT
dHJpbmcoKSwgV1RGTW92ZShkYXRhKSwgc2hvdWxkU21hcnRSZXBsYWNlLCBzaG91bGRNYXRjaFN0
eWxlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRF
dmVudDo6Y3JlYXRlRm9yRHJvcChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkK
K1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFRleHRFdmVudCh2aWV3LCBkYXRhLCBUZXh0RXZlbnRJbnB1dERyb3ApKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZGF0YSwgVGV4dEV2ZW50
SW5wdXREcm9wKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRGlj
dGF0aW9uKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8
RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCitSZWY8VGV4dEV2
ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3RhdGlvbihSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRp
dmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VGV4dEV2ZW50KHZpZXcsIGRhdGEsIGRpY3RhdGlvbkFsdGVybmF0aXZlcykpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRleHRFdmVudChXVEZNb3ZlKHZpZXcpLCBkYXRhLCBkaWN0YXRpb25B
bHRlcm5hdGl2ZXMpKTsKIH0KIAogVGV4dEV2ZW50OjpUZXh0RXZlbnQoKQpAQCAtNzEsOCArNzEs
OCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudCgpCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50
KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUg
aW5wdXRUeXBlKQotICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRy
dWUsIHRydWUsIHZpZXcsIDApCitUZXh0RXZlbnQ6OlRleHRFdmVudChSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRU
eXBlKQorICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRy
dWUsIFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAg
LCBtX2RhdGEoZGF0YSkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtODEs
OCArODEsOCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0
cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlIGlucAogewogfQogCi1UZXh0RXZlbnQ6OlRl
eHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwg
Ym9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1
b3RlSGFuZGxpbmcpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwg
dHJ1ZSwgdHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxk
TWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5n
KQorICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUs
IFdURk1vdmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShUZXh0RXZlbnRJbnB1dFBhc3Rl
KQogICAgICwgbV9kYXRhKGRhdGEpCiAgICAgLCBtX3Bhc3RpbmdGcmFnbWVudChXVEZNb3ZlKHBh
c3RpbmdGcmFnbWVudCkpCkBAIC05Miw4ICs5Miw4IEBAIFRleHRFdmVudDo6VGV4dEV2ZW50KERP
TVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
CiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3Ry
aW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25B
bHRlcm5hdGl2ZXMpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwg
dHJ1ZSwgdHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25B
bHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcykKKyAgICA6IFVJRXZlbnQoZXZlbnRO
YW1lcygpLnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0cnVlLCBXVEZNb3ZlKHZpZXcpLCAwKQogICAg
ICwgbV9pbnB1dFR5cGUoVGV4dEV2ZW50SW5wdXREaWN0YXRpb24pCiAgICAgLCBtX2RhdGEoZGF0
YSkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtMTA1LDEyICsxMDUsMTIg
QEAgVGV4dEV2ZW50OjpUZXh0RXZlbnQoRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRh
dGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb24KIAogVGV4dEV2ZW50Ojp+VGV4dEV2ZW50KCkgPSBk
ZWZhdWx0OwogCi12b2lkIFRleHRFdmVudDo6aW5pdFRleHRFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmll
dywgY29uc3QgU3RyaW5nJiBkYXRhKQordm9pZCBUZXh0RXZlbnQ6OmluaXRUZXh0RXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIGlm
IChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbml0VUlFdmVu
dCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAgICBt
X2lucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQu
aAppbmRleCAyOWViMjZkMGUwNzRiNTRkMzQ2MzU2MDQyODBkMTJhNjk4OGFmOGRhLi4wYWUyYWM4
NjNmYjgxYmJiMjg2Mzg1MTY1YjZiMTI1MWQyZGZiMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGV4dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5o
CkBAIC0zOCwxNiArMzgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgVGV4
dEV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZShET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEs
IFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOworICAgICAgICBz
dGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlKFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3Qg
U3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJk
KTsKICAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7Ci0g
ICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShET01X
aW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKLSAg
ICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoRE9NV2lu
ZG93KiwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJl
cGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0g
ICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEcm9wKERPTVdpbmRvdyosIGNv
bnN0IFN0cmluZyYgZGF0YSk7Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVG
b3JEaWN0YXRpb24oRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8
RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgICAgICBz
dGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRv
d1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsK
KyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoUmVm
UHRyPFdpbmRvd1Byb3h5PiYmLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBkYXRhLCBib29s
IHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90
ZUhhbmRsaW5nKTsKKyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRyb3Ao
UmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBzdGF0
aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9yRGljdGF0aW9uKFJlZlB0cjxXaW5kb3dQcm94eT4m
JiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+
JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogCiAgICAgICAgIHZpcnR1YWwgflRleHRFdmVudCgp
OwogICAgIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRUZXh0RXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01X
aW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0
YSk7CiAgICAgCiAgICAgICAgIFN0cmluZyBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9
CiAKQEAgLTcxLDkgKzcxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAg
ICAgICAgIFRleHRFdmVudCgpOwogCi0gICAgICAgIFRleHRFdmVudChET01XaW5kb3cqLCBjb25z
dCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9h
cmQpOwotICAgICAgICBUZXh0RXZlbnQoRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wg
c2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0gICAgICAgIFRleHRF
dmVudChET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRp
b25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgICAgIFRleHRFdmVu
dChSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5w
dXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7CisgICAgICAgIFRleHRFdmVudChSZWZQ
dHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+JiYsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUs
IE1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBUZXh0RXZlbnQoUmVmUHRyPFdpbmRv
d1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRl
cm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAKICAgICAgICAgYm9vbCBpc1RleHRF
dmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCmluZGV4IDM2
NDA2NWZhODJkNDE4OTljMGM1MjMyNTBjMmYyNzk5NzcwZDNlMGUuLmNlOGIzMGFjYjNjNzFmZmRm
ODI4YjIxODEwNjVhYWExZjhhMTI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0RXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCkBAIC0z
Miw3ICszMiw3IEBAIGludGVyZmFjZSBUZXh0RXZlbnQgOiBVSUV2ZW50IHsKICAgICB2b2lkIGlu
aXRUZXh0RXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZpbmVkIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGVBcmcgPSBmYWxz
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlQXJn
ID0gZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmll
d0FyZyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFdpbmRvd1Byb3h5
PyB2aWV3QXJnID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3Ry
aW5nIGRhdGFBcmcgPSAidW5kZWZpbmVkIik7CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVG91Y2hFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5j
cHAKaW5kZXggNjFjMDhmMjFkYTM4YmFhN2ExMTBmMjJkY2E2YTU3YmU5M2I2ODNlNy4uMDAyMzdj
ZGFkNTY4Mzc5NTJkOTNhOTdkZTI2YTk5ZTllYWZjMzkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2
ZW50LmNwcApAQCAtMzgsOSArMzgsOSBAQCBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KCkgPSBkZWZh
dWx0OwogCiBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91Y2hM
aXN0KiB0YXJnZXRUb3VjaGVzLAogICAgICAgICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzLCBj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICBET01XaW5kb3cqIHZpZXcsIGludCBz
Y3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAgICAgIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdl
WCwgaW50IHBhZ2VZLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXkpCi0gICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVl
LCB0cnVlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgdmlldywgMCwgSW50UG9pbnQoc2NyZWVuWCwg
c2NyZWVuWSksCisgICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCBNb25v
dG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwgMCwgSW50UG9pbnQoc2NyZWVuWCwgc2Ny
ZWVuWSksCiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChwYWdlWCwgcGFnZVkpLAog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2lu
dCgwLCAwKSwKQEAgLTY0LDEzICs2NCwxMyBAQCBUb3VjaEV2ZW50Ojp+VG91Y2hFdmVudCgpID0g
ZGVmYXVsdDsKIAogdm9pZCBUb3VjaEV2ZW50Ojppbml0VG91Y2hFdmVudChUb3VjaExpc3QqIHRv
dWNoZXMsIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywKICAgICAgICAgVG91Y2hMaXN0KiBjaGFu
Z2VkVG91Y2hlcywgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAKLSAgICAgICAgRE9NV2luZG93
KiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50
WSwKKyAgICAgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBzY3JlZW5YLCBpbnQg
c2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLAogICAgICAgICBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAgICAgaWYgKGlz
QmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRVSUV2ZW50KHR5
cGUsIHRydWUsIHRydWUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIHRydWUsIHRy
dWUsIFdURk1vdmUodmlldyksIDApOwogCiAgICAgbV90b3VjaGVzID0gdG91Y2hlczsKICAgICBt
X3RhcmdldFRvdWNoZXMgPSB0YXJnZXRUb3VjaGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1RvdWNoRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKaW5k
ZXggZDMzOWMwYjcyYjEzZDQ1NWE1ZTAzODY2ZTU1NzIwY2NmNmJmMWVkYi4uODVmYTE2MWYyMTk2
ZDNmMmEwNWQ5YTMxYTExN2IwYTFhZjg2NmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RvdWNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCkBA
IC00MSwxMiArNDEsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxUb3VjaEV2ZW50PiBj
cmVhdGUoVG91Y2hMaXN0KiB0b3VjaGVzLCAKICAgICAgICAgICAgIFRvdWNoTGlzdCogdGFyZ2V0
VG91Y2hlcywgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgCi0gICAgICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIERPTVdpbmRvdyogdmlldywKKyAgICAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgICAgICAg
ICBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogICAgICAg
ICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRh
S2V5KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVG91Y2hFdmVudCh0b3Vj
aGVzLCB0YXJnZXRUb3VjaGVzLCBjaGFuZ2VkVG91Y2hlcywKLSAgICAgICAgICAgICAgICB0eXBl
LCB2aWV3LCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksCisgICAgICAgICAgICAgICAg
dHlwZSwgV1RGTW92ZSh2aWV3KSwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLAogICAg
ICAgICAgICAgICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpKTsKICAgICB9
CiAgICAgc3RhdGljIFJlZjxUb3VjaEV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBAIC02Nyw3
ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0
b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3Qq
IGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICAgICAg
RE9NV2luZG93KiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLAorICAgICAgICAgICAgUmVmUHRy
PFdpbmRvd1Byb3h5PiYmLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksCiAgICAgICAgICAgICBp
bnQgY2xpZW50WCwgaW50IGNsaWVudFksCiAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wg
YWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogCkBAIC04Nyw3ICs4Nyw3IEBA
IHByaXZhdGU6CiAgICAgVG91Y2hFdmVudCgpOwogICAgIFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0
b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3Qq
IGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsCi0gICAgICAgICAgICBE
T01XaW5kb3cqLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwKKyAgICAgICAg
ICAgIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQg
cGFnZVgsCiAgICAgICAgICAgICBpbnQgcGFnZVksCiAgICAgICAgICAgICBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogICAgIFRvdWNoRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVG91Y2hFdmVudC5pZGwKaW5kZXggODEwNTgzNTdlZDNhYTc3NzRkMjZmYWZhZTE2MDNiMTVk
ZGUwZDYwYi4uNTRlOTlkYjQ4MzBmMzBkNDYyNjQyZTMzZDQzOTU2OTNiMTNmMmIwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ub3VjaEV2ZW50LmlkbApAQCAtNDAsNyArNDAsNyBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgb3B0aW9uYWwgVG91Y2hMaXN0PyB0YXJnZXRUb3VjaGVzID0gbnVsbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFRvdWNoTGlzdD8gY2hhbmdlZFRvdWNoZXMgPSBu
dWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAi
dW5kZWZpbmVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8g
dmlldyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94
eT8gdmlldyA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBsb25nIHNj
cmVlblggPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5Z
ID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGxvbmcgY2xpZW50WCA9IDAs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVUlFdmVudC5jcHAKaW5kZXggYWIyMGVlY2I5YzU4MzFkZWYwMjc5Y2E3OGEwZTdj
YzVmYTg1NjIxNy4uMGE2ZjgxYWY1MjM3MTZmNzU4MTc4ZjBmOTUzNDRjZGM2NTViODAwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50LmNwcApAQCAtMzIsMTYgKzMyLDE2IEBAIFVJRXZlbnQ6OlVJRXZlbnQo
KQogewogfQogCi1VSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBET01XaW5kb3cqIHZpZXdB
cmcsIGludCBkZXRhaWxBcmcpCitVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50
VHlwZSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnKQotICAgICwgbV92aWV3KHZpZXdBcmcp
CisgICAgLCBtX3ZpZXcoV1RGTW92ZSh2aWV3QXJnKSkKICAgICAsIG1fZGV0YWlsKGRldGFpbEFy
ZykKIHsKIH0KIAotVUlFdmVudDo6VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgTW9ub3RvbmljVGltZSB0
aW1lc3RhbXAsIERPTVdpbmRvdyogdmlld0FyZywgaW50IGRldGFpbEFyZykKK1VJRXZlbnQ6OlVJ
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlQXJnLCBi
b29sIGNhbmNlbGFibGVBcmcsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwg
Y2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCB0aW1lc3RhbXApCi0gICAgLCBtX3ZpZXcodmll
d0FyZykKKyAgICAsIG1fdmlldyhXVEZNb3ZlKHZpZXdBcmcpKQogICAgICwgbV9kZXRhaWwoZGV0
YWlsQXJnKQogewogfQpAQCAtNTUsNyArNTUsNyBAQCBVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBVSUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIsCiAK
IFVJRXZlbnQ6On5VSUV2ZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFVJRXZlbnQ6OmluaXRVSUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZUFyZywgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wg
Y2FuY2VsYWJsZUFyZywgRE9NV2luZG93KiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQordm9pZCBV
SUV2ZW50Ojppbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVBcmcsIGJvb2wgY2Fu
QnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVBcmcsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3
QXJnLCBpbnQgZGV0YWlsQXJnKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaAppbmRleCBiYWE3MzFmY2Y4MWVlYmFmMjMxNTNk
YTUxYmEwYWVhZmQyNDU1ZmFjLi41MGYyZDE3NzE5OTQyZTQ3M2ZkZWM5YjFhODg0ODYwNTkzY2Qx
OWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmgKQEAgLTIzLDIwICsyMywyMCBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVk
ZSAiVUlFdmVudEluaXQuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIG5vIG9uZSBpcyBkZXBlbmRp
bmcgb24gaXQgYW55bW9yZS4KLXR5cGVkZWYgRE9NV2luZG93IEFic3RyYWN0VmlldzsKK3R5cGVk
ZWYgV2luZG93UHJveHkgQWJzdHJhY3RWaWV3OwogCiBjbGFzcyBVSUV2ZW50IDogcHVibGljIEV2
ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRv
dyogdmlldywgaW50IGRldGFpbCkKKyAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZp
ZXcsIGRldGFpbCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKSk7CiAgICAgfQog
ICAgIHN0YXRpYyBSZWY8VUlFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHsKQEAgLTQ4
LDkgKzQ4LDkgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5VSUV2ZW50KCk7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFp
bCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiwgaW50IGRldGFpbCk7CiAKLSAgICBET01XaW5kb3cqIHZpZXcoKSBjb25zdCB7IHJl
dHVybiBtX3ZpZXcuZ2V0KCk7IH0KKyAgICBXaW5kb3dQcm94eSogdmlldygpIGNvbnN0IHsgcmV0
dXJuIG1fdmlldy5nZXQoKTsgfQogICAgIGludCBkZXRhaWwoKSBjb25zdCB7IHJldHVybiBtX2Rl
dGFpbDsgfQogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVy
cmlkZTsKQEAgLTY1LDE0ICs2NSwxNCBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVSUV2
ZW50KCk7Ci0gICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwpOwotICAgIFVJRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7Cisg
ICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCk7CisgICAgVUlF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGlu
dCBkZXRhaWwpOwogICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVUlFdmVu
dEluaXQmLCBJc1RydXN0ZWQpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNVSUV2ZW50KCkgY29u
c3QgZmluYWw7CiAKLSAgICBSZWZQdHI8RE9NV2luZG93PiBtX3ZpZXc7CisgICAgUmVmUHRyPFdp
bmRvd1Byb3h5PiBtX3ZpZXc7CiAgICAgaW50IG1fZGV0YWlsOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZl
bnQuaWRsCmluZGV4IDg3YjM5MTUyODMwMzE5N2UzNmM2NGMxZTcwOGZmYjYwY2JhZDk1MDMuLjZh
MzVjNTdhMzg3NGJjOGVjNjNkNmQ5MjRkNDI4YjJiNTgxMDBmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVu
dC5pZGwKQEAgLTIwLDExICsyMCwxMSBAQAogWwogICAgIENvbnN0cnVjdG9yKERPTVN0cmluZyB0
eXBlLCBvcHRpb25hbCBVSUV2ZW50SW5pdCBldmVudEluaXREaWN0KQogXSBpbnRlcmZhY2UgVUlF
dmVudCA6IEV2ZW50IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IHZpZXc7Cisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHZpZXc7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgZGV0YWlsOwogICAgIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVk
IiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICB2b2lkIGluaXRVSUV2
ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIGJvb2xl
YW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZhbHNl
LCBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBsb25nIGRldGFpbCA9
IDApOworICAgIHZvaWQgaW5pdFVJRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5k
ZWZpbmVkIiwgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGUgPSBmYWxzZSwgb3B0aW9uYWwgYm9v
bGVhbiBjYW5jZWxhYmxlID0gZmFsc2UsIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVs
bCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAwKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBs
b25nIGxheWVyWDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsYXllclk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9VSUV2ZW50SW5pdC5oCmluZGV4IDAzMTZiYzA2ZjU2OGU1MzkxNmRmNjk2ZjQxNDQ1YmE5ZmMz
MWZmMzYuLmUxMTI4YTc2ZGU1ODYwMTYyZmE5NzZkY2RjODI3MTcwZDhmMmYzYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9VSUV2ZW50SW5pdC5oCkBAIC0yNSwxNCArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudEluaXQuaCIKKyNpbmNsdWRl
ICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdHJ1Y3QgVUlFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKLSAgICBS
ZWZQdHI8RE9NV2luZG93PiB2aWV3OworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gdmlldzsKICAg
ICBpbnQgZGV0YWlsIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1VJRXZlbnRJbml0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5pZGwKaW5k
ZXggMGQ3ZWI4ZWZjMWM1MzdhOTA1MTE3YjYxMjExMWFkMDFlYjFlMGFhMi4uM2NjYmJlZDYwNzU1
ZjZmMjE2NTJmNWJhNjFlNmYzODI0MGMxN2ZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1VJRXZlbnRJbml0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQu
aWRsCkBAIC0yNCw2ICsyNCw2IEBACiAgKi8KIAogZGljdGlvbmFyeSBVSUV2ZW50SW5pdCA6IEV2
ZW50SW5pdCB7Ci0gICAgRE9NV2luZG93PyB2aWV3ID0gbnVsbDsKKyAgICBXaW5kb3dQcm94eT8g
dmlldyA9IG51bGw7CiAgICAgbG9uZyBkZXRhaWwgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VUlFdmVudFdpdGhLZXlTdGF0ZS5oCmluZGV4IDBhOGU0MDMxMjQ4ZDZmNzI2NTQ0MmU1YmY4MDAx
MmJhMzBjY2NkZWIuLjA4NWEwMzE3ZWM4ZGNlM2E2MGZlMjZhZmE1YTE2MmVhMmE5YTA1MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaApAQCAtNDAsOCArNDAsOCBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgVUlFdmVudFdpdGhLZXlTdGF0ZSgpID0gZGVmYXVs
dDsKIAotICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRh
aWwsIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtl
eSkKLSAgICAgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywg
ZGV0YWlsKQorICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywgaW50IGRldGFpbCwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtl
eSwgYm9vbCBtZXRhS2V5KQorICAgICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxL
ZXkpCiAgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQogICAgICAgICAsIG1fc2hpZnRLZXkoc2hp
ZnRLZXkpCkBAIC00OSw5ICs0OSw5IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQogCi0gICAg
VUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cq
IHZpZXcsCisgICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1w
LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICAgICAgaW50IGRldGFpbCwgYm9vbCBj
dHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBib29sIGFs
dEdyYXBoS2V5LCBib29sIGNhcHNMb2NrS2V5KQotICAgICAgICAgICAgOiBVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2aWV3LCBkZXRhaWwpCisgICAgICAg
ICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIFdU
Rk1vdmUodmlldyksIGRldGFpbCkKICAgICAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCiAg
ICAgICAgICAgICAsIG1fYWx0S2V5KGFsdEtleSkKICAgICAgICAgICAgICwgbV9zaGlmdEtleShz
aGlmdEtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAppbmRleCBkMmI4ZmI3MmQ5MTk4ZTE0
YmY3NThjYTNhZmJjMWVjMjQ3ZjcxY2JkLi41MzdjYjE5M2M4MTNmNTI3YWM1MzNjOTMwODkwODdi
ZGIzNjhiZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCkBAIC00Nyw4ICs0Nyw4IEBA
IGlubGluZSBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Y29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsCiB7CiB9CiAKLWlubGluZSBXaGVlbEV2ZW50OjpXaGVl
bEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogdmlldykK
LSAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUsIGV2
ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LCAwLCBldmVu
dC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCitpbmxpbmUgV2hlZWxFdmVudDo6
V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlldykKKyAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQs
IHRydWUsIHRydWUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgp
LCBXVEZNb3ZlKHZpZXcpLCAwLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlv
bigpCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgLCB7IH0KICNlbmRpZgpAQCAt
NjEsOSArNjEsOSBAQCBpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHZpZXcpCiB7CiB9CiAKLVJlZjxXaGVlbEV2
ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwg
RE9NV2luZG93KiB2aWV3KQorUmVmPFdoZWVsRXZlbnQ+IFdoZWVsRXZlbnQ6OmNyZWF0ZShjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXaGVlbEV2ZW50KGV2ZW50LCB2aWV3KSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2hlZWxFdmVudChldmVudCwgV1RGTW92ZSh2aWV3KSkp
OwogfQogCiBSZWY8V2hlZWxFdmVudD4gV2hlZWxFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQpA
QCAtNzYsMTIgKzc2LDEyIEBAIFJlZjxXaGVlbEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2hlZWxFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiB9
CiAKLXZvaWQgV2hlZWxFdmVudDo6aW5pdFdlYktpdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwg
aW50IHJhd0RlbHRhWSwgRE9NV2luZG93KiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblks
IGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXkpCit2b2lkIFdoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2
ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAg
ICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBp
bml0TW91c2VFdmVudChldmVudE5hbWVzKCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmlldywg
MCwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5LCAwLCBudWxscHRyKTsKKyAgICBpbml0TW91c2VFdmVudChldmVudE5hbWVz
KCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCwgc2NyZWVuWCwgc2Ny
ZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCAw
LCBudWxscHRyKTsKIAogICAgIC8vIE5vcm1hbGl6ZSB0byAxMjAgbXVsdGlwbGUgZm9yIGNvbXBh
dGliaWxpdHkgd2l0aCBJRS4KICAgICBtX3doZWVsRGVsdGEgPSB7IHJhd0RlbHRhWCAqIFRpY2tN
dWx0aXBsaWVyLCByYXdEZWx0YVkgKiBUaWNrTXVsdGlwbGllciB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2
ZW50LmgKaW5kZXggNGQzNGIzMGQ2ZGVkNWVmMjgxNWE4MTM3ZTRjMjk3ZTY0MWFkZTZkYS4uMTBi
NjJlMDVjNzAxNTYwNzZmZmU1Y2YxMjczOTdlYzEzMjNkZDJkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxF
dmVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAgICAgRE9NX0RFTFRBX1BBR0UK
ICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBj
cmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsK
ICAgICBzdGF0aWMgUmVmPFdoZWVsRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBz
dHJ1Y3QgSW5pdCA6IE1vdXNlRXZlbnRJbml0IHsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGluaXRXZWJLaXRXaGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGludCBy
YXdEZWx0YVksIERPTVdpbmRvdyosIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VY
LCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJv
b2wgbWV0YUtleSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVu
dChpbnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGlu
dCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wgY3RybEtl
eSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CiAKICAgICBjb25z
dCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtV2hlZWxFdmVudD4mIHVuZGVybHlpbmdQbGF0Zm9ybUV2
ZW50KCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudDsgfQogCkBAIC03
NSw3ICs3NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2hlZWxFdmVudCgpOwogICAgIFdo
ZWVsRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7Ci0g
ICAgV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBET01XaW5kb3cqKTsKKyAg
ICBXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFJlZlB0cjxXaW5kb3dQcm94
eT4mJik7CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwKaW5kZXggOTNjNTNhNGJmYjJkYWY0YmQ0NDI3
Mzg2NmE5MmNlZDRhMWMxYzM4Ni4uYjI4MWRhMWM2NjA0NGE4YTkzZDYwZDkwZWRkZjUxZDE0YzZj
OTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmlkbApAQCAtMzksNyArMzksNyBAQAogCiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0RGlyZWN0aW9uSW52ZXJ0ZWRGcm9t
RGV2aWNlOwogCi0gICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRpb25hbCBsb25nIHdo
ZWVsRGVsdGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAsIG9wdGlvbmFsIERP
TVdpbmRvdz8gdmlldyA9IG51bGwsCisgICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRp
b25hbCBsb25nIHdoZWVsRGVsdGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAs
IG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwKICAgICAgICAgb3B0aW9uYWwgbG9u
ZyBzY3JlZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwgb3B0aW9uYWwgbG9uZyBj
bGllbnRYID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRZID0gMCwKICAgICAgICAgb3B0aW9uYWwg
Ym9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFsc2Us
CiAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9v
bGVhbiBtZXRhS2V5ID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZDE0NzI0Mjc3MjM3NDY4ZDRmNjFm
ZmUzM2M3NWZlNDZhODE5MjNkYy4uZDczYTcxYjBlMTVkZDgxOWYxNzBlZmE1ZjU2MmVmNzVjOTQy
Yjk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuY3BwCkBAIC02MzIsNyArNjMyLDcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOjppbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBW
ZWMKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpCiAgICAgICAgIHZp
ZXctPmRpc2FibGVMYXllckZsdXNoVGhyb3R0bGluZ1RlbXBvcmFyaWx5Rm9ySW50ZXJhY3Rpb24o
KTsKIAotICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0
YXRpb24obV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCwgZGljdGF0aW9uQWx0
ZXJuYXRpdmVzKTsKKyAgICBSZWY8VGV4dEV2ZW50PiBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRl
Rm9yRGljdGF0aW9uKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgdGV4dCwgZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KHRyaWdn
ZXJpbmdFdmVudCk7CiAKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGNiOGI2YjhiYmFjODViYzBlMzJkZWQyZWYzMzljMjQx
MDI5MGQzMTkuLjRlMzY4YmZkODAzYzUzNjg1MmVkY2U2MDEwNDY5NDQ4NjMxNDkxOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIEVkaXRvcjo6
cGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBib29sIHNtYXJ0UmVw
bGFjZSkKICAgICBFbGVtZW50KiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9u
KCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKLSAgICB0YXJnZXQtPmRpc3Bh
dGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShkb2N1bWVudCgpLmRv
bVdpbmRvdygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSk7CisgICAgdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoZG9jdW1lbnQoKS5k
ZWZhdWx0VmlldygpLCBwYXN0aW5nVGV4dCwgc21hcnRSZXBsYWNlKSk7CiB9CiAKIHZvaWQgRWRp
dG9yOjpwYXN0ZUFzRnJhZ21lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdt
ZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhh
bmRsaW5nIHJlc3BlY3RzTWFpbEJsb2NrcXVvdGUpCkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBF
ZGl0b3I6OnBhc3RlQXNGcmFnbWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBwYXN0aW5nRnJh
Z21lbnQsIGJvb2wgc21hcnQKICAgICBFbGVtZW50KiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJnZXRG
cm9tU2VsZWN0aW9uKCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKLSAgICB0
YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKGRv
Y3VtZW50KCkuZG9tV2luZG93KCksIFdURk1vdmUocGFzdGluZ0ZyYWdtZW50KSwgc21hcnRSZXBs
YWNlLCBtYXRjaFN0eWxlLCByZXNwZWN0c01haWxCbG9ja3F1b3RlKSk7CisgICAgdGFyZ2V0LT5k
aXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShkb2N1bWVudCgp
LmRlZmF1bHRWaWV3KCksIFdURk1vdmUocGFzdGluZ0ZyYWdtZW50KSwgc21hcnRSZXBsYWNlLCBt
YXRjaFN0eWxlLCByZXNwZWN0c01haWxCbG9ja3F1b3RlKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpw
YXN0ZUFzUGxhaW5UZXh0QnlwYXNzaW5nREhUTUwoKQpAQCAtMTg0OCw3ICsxODQ4LDcgQEAgdm9p
ZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgU2V0Q29tcG9zaXRp
b25Nb2RlIG1vZGUpCiAgICAgaW5zZXJ0VGV4dEZvckNvbmZpcm1lZENvbXBvc2l0aW9uKHRleHQp
OwogCiAgICAgaWYgKGF1dG8qIHRhcmdldCA9IGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSkK
LSAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQoKS5kb21XaW5kb3coKSwg
dGV4dCkpOworICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbmVuZEV2ZW50LCBkb2N1bWVudCgpLmRlZmF1
bHRWaWV3KCksIHRleHQpKTsKIAogICAgIGlmIChtb2RlID09IENhbmNlbENvbXBvc2l0aW9uKSB7
CiAgICAgICAgIC8vIEFuIG9wZW4gdHlwaW5nIGNvbW1hbmQgdGhhdCBkaXNhZ3JlZXMgYWJvdXQg
Y3VycmVudCBzZWxlY3Rpb24gd291bGQgY2F1c2UgaXNzdWVzIHdpdGggdHlwaW5nIGxhdGVyIG9u
LgpAQCAtMTkwOCwxMSArMTkwOCwxMSBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIHNlbmQgYSBjb21wb3NpdGlvbnN0YXJ0IGV2ZW50IG9ubHkgd2hl
biB0aGUgZ2l2ZW4gdGV4dCBpcyBub3QgZW1wdHkgYmVjYXVzZSB0aGlzCiAgICAgICAgICAgICAv
LyBmdW5jdGlvbiBkb2Vzbid0IGNyZWF0ZSBhIGNvbXBvc2l0aW9uIG5vZGUgd2hlbiB0aGUgdGV4
dCBpcyBlbXB0eS4KICAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0RXZlbnQsIGRvY3VtZW50KCkuZG9tV2luZG93KCks
IG9yaWdpbmFsVGV4dCkpOwotICAgICAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBkb2N1bWVudCgp
LmRvbVdpbmRvdygpLCB0ZXh0KTsKKyAgICAgICAgICAgICAgICB0YXJnZXQtPmRpc3BhdGNoRXZl
bnQoQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnN0YXJ0
RXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgb3JpZ2luYWxUZXh0KSk7CisgICAgICAg
ICAgICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNv
bXBvc2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdGV4dCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoIXRleHQuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBv
c2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZG9tV2luZG93KCksIHRleHQpOworICAgICAg
ICAgICAgZXZlbnQgPSBDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBv
c2l0aW9udXBkYXRlRXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdGV4dCk7CiAKICAg
ICAgICAgaWYgKGV2ZW50KQogICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KCpldmVu
dCk7CkBAIC0xOTIzLDcgKzE5MjMsNyBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgIGlm
ICh0ZXh0LmlzRW1wdHkoKSkgewogICAgICAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rp
b24oZG9jdW1lbnQoKSwgVHlwaW5nQ29tbWFuZDo6UHJldmVudFNwZWxsQ2hlY2tpbmcsIFR5cGlu
Z0NvbW1hbmQ6OlRleHRDb21wb3NpdGlvblBlbmRpbmcpOwogICAgICAgICBpZiAodGFyZ2V0KQot
ICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQoKS5kb21XaW5kb3co
KSwgdGV4dCkpOworICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9u
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQo
KS5kZWZhdWx0VmlldygpLCB0ZXh0KSk7CiAgICAgfQogCiAgICAgbV9jb21wb3NpdGlvbk5vZGUg
PSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCmluZGV4IGEzZDdkOTc3
MGNlYmQwNjI4Y2E3YmVjMjRjZmE2NzVkM2I5N2JiNTQuLjlkNTgxY2VkZmE4NDFlMGFkZjFhYWM0
MzI1OTFjOGI2ZjJmNzY1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKQEAg
LTExNCw3ICsxMTQsNyBAQCBSZWY8RG9jdW1lbnRQYXJzZXI+IEhUTUxEb2N1bWVudDo6Y3JlYXRl
UGFyc2VyKCkKIH0KIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
ZG9tLmh0bWwjZG9tLWRvY3VtZW50LW5hbWVkaXRlbQotc3RkOjpvcHRpb25hbDxWYXJpYW50PFJl
ZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+
PiBIVE1MRG9jdW1lbnQ6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitzdGQ6
Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gSFRNTERvY3VtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKQogewogICAgIGlmIChuYW1lLmlzTnVsbCgpIHx8ICFoYXNEb2N1bWVu
dE5hbWVkSXRlbSgqbmFtZS5pbXBsKCkpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpA
QCAtMTIyLDE2ICsxMjIsMTYgQEAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxET01XaW5k
b3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4KICAgICBpZiAoVU5M
SUtFTFkoZG9jdW1lbnROYW1lZEl0ZW1Db250YWluc011bHRpcGxlRWxlbWVudHMoKm5hbWUuaW1w
bCgpKSkpIHsKICAgICAgICAgYXV0byBjb2xsZWN0aW9uID0gZG9jdW1lbnROYW1lZEl0ZW1zKG5h
bWUpOwogICAgICAgICBBU1NFUlQoY29sbGVjdGlvbi0+bGVuZ3RoKCkgPiAxKTsKLSAgICAgICAg
cmV0dXJuIFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRy
PEhUTUxDb2xsZWN0aW9uPj4geyBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHsgV1RGTW92ZShjb2xs
ZWN0aW9uKSB9IH07CisgICAgICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4s
IFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBSZWZQdHI8SFRNTENv
bGxlY3Rpb24+IHsgV1RGTW92ZShjb2xsZWN0aW9uKSB9IH07CiAgICAgfQogCiAgICAgYXV0byYg
ZWxlbWVudCA9ICpkb2N1bWVudE5hbWVkSXRlbSgqbmFtZS5pbXBsKCkpOwogICAgIGlmIChVTkxJ
S0VMWShpczxIVE1MSUZyYW1lRWxlbWVudD4oZWxlbWVudCkpKSB7CiAgICAgICAgIGlmIChhdXRv
IGRvbVdpbmRvdyA9IG1ha2VSZWZQdHIoZG93bmNhc3Q8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1l
bnQpLmNvbnRlbnRXaW5kb3coKSkpCi0gICAgICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8
RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7IFdU
Rk1vdmUoZG9tV2luZG93KSB9OworICAgICAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPFdp
bmRvd1Byb3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7IFdU
Rk1vdmUoZG9tV2luZG93KSB9OwogICAgIH0KIAotICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxE
T01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgUmVm
UHRyPEVsZW1lbnQ+IHsgJmVsZW1lbnQgfSB9OworICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxX
aW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBS
ZWZQdHI8RWxlbWVudD4geyAmZWxlbWVudCB9IH07CiB9CiAKIFZlY3RvcjxBdG9taWNTdHJpbmc+
IEhUTUxEb2N1bWVudDo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRG9jdW1lbnQuaAppbmRleCBhMzYzOTc0MDZkMzQ5ZjU3NmY0ODlkM2ExZjYwMGFkYTFi
ZGRjZmUxLi4wYjNkMzQxNGE0YmVmYTAzMzVjNGUyMjlhNTk1ODVlYjA1ZWJkNjBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERvY3VtZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIGludCB3aWR0aCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBoZWlnaHQo
KTsKICAgICAKLSAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJl
ZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IG5hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmcmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1By
b3h5PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gbmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHN1cHBvcnRl
ZFByb3BlcnR5TmFtZXMoKSBjb25zdDsKIAogICAgIEVsZW1lbnQqIGRvY3VtZW50TmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRO
YW1lZEl0ZW0uZ2V0RWxlbWVudEJ5RG9jdW1lbnROYW1lZEl0ZW0obmFtZSwgKnRoaXMpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwKaW5kZXggMTI3ZjI2NDVlMDMyMmRjNzk4ODEy
ODA0ZmY1ZDc5NWRhYzhhNTgwZi4uYTk5OWIwM2Y2MjI4YjI1ZWJkMWI3Yjk0Mzg2Yjk5ZTM5NWI4
NWY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmlkbApAQCAtMjMsNSArMjMsNSBA
QAogICAgIE5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cywKICAgICBPdmVycmlkZUJ1
aWx0aW5zLAogXSBpbnRlcmZhY2UgSFRNTERvY3VtZW50IDogRG9jdW1lbnQgeyAgICAKLSAgICBn
ZXR0ZXIgKERPTVdpbmRvdyBvciBFbGVtZW50IG9yIEhUTUxDb2xsZWN0aW9uKSAoRE9NU3RyaW5n
IG5hbWUpOworICAgIGdldHRlciAoV2luZG93UHJveHkgb3IgRWxlbWVudCBvciBIVE1MQ29sbGVj
dGlvbikgKERPTVN0cmluZyBuYW1lKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVF
bGVtZW50LmlkbAppbmRleCBjZDYzYTIxMmFkNDMzMTRjNWJlMjMwNGRkZTcwMDk3YzdiZjg4MzUz
Li5lZDdjMGI2ZTI3NzI5OWI2NWNhMjE4ZjIxZTE4MjYxZTUxM2RmYzBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwKQEAgLTI2LDcgKzI2LDcgQEAgaW50ZXJmYWNl
IEhUTUxGcmFtZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW1JlZmxlY3QsIFVSTF0gYXR0
cmlidXRlIFVTVlN0cmluZyBsb25nRGVzYzsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIGJvb2xl
YW4gbm9SZXNpemU7CiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSByZWFkb25seSBhdHRyaWJ1
dGUgRG9jdW1lbnQgY29udGVudERvY3VtZW50OwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01X
aW5kb3cgY29udGVudFdpbmRvdzsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJveHkg
Y29udGVudFdpbmRvdzsKIAogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVt
cHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luSGVpZ2h0OwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1
dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgbWFyZ2luV2lkdGg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKaW5kZXggNTg4NzM5
ODQ3Y2JiMDhjMzcxN2MxM2JlYmQzYWE5MWQ5OWJiNGNjNS4uYjliZWYxNzYzZTI2MWQ3Yzk4MmUx
ZjA1NTUwOWMxNjlkZjg0MDYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVPd25lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
T3duZXJFbGVtZW50LmNwcApAQCAtOTksOSArOTksOSBAQCBEb2N1bWVudCogSFRNTEZyYW1lT3du
ZXJFbGVtZW50Ojpjb250ZW50RG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRG
cmFtZSA/IG1fY29udGVudEZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKIH0KIAotRE9NV2lu
ZG93KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRXaW5kb3coKSBjb25zdAorV2luZG93
UHJveHkqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVudFdpbmRvdygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8gbV9jb250ZW50RnJhbWUtPmRvY3VtZW50KCktPmRv
bVdpbmRvdygpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyAmbV9jb250
ZW50RnJhbWUtPndpbmRvd1Byb3h5KCkgOiBudWxscHRyOwogfQogCiB2b2lkIEhUTUxGcmFtZU93
bmVyRWxlbWVudDo6c2V0U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCmluZGV4IDg2NWVkZGI5MWY1N2Uz
NDViNGI2ODdmNzYwZTgzMzI1NDI1YzRmYzEuLjgwZjE4MjAwZGYwZDRhNzRkN2YwZTNkYmNhMTUy
NDU2MDIyNGFiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1l
bnQuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SFRNTEZyYW1lT3du
ZXJFbGVtZW50KCk7CiAKICAgICBGcmFtZSogY29udGVudEZyYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZW50RnJhbWU7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBET01XaW5kb3cqIGNvbnRlbnRX
aW5kb3coKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXaW5kb3dQcm94eSogY29udGVudFdp
bmRvdygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KiBjb250ZW50RG9jdW1l
bnQoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Q29udGVudEZyYW1lKEZyYW1lKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAppbmRleCAyODU2NDI0OTUwYTM0
OWM5YjcyOTUwM2M1ZjRmMTIxYThlYzRiMmI3Li41ZDIzN2Q0ODI2YzcyZjg4N2I3ZGIyZmI1MWQ2
ZTk3ODY1Njc5YTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNl
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5jcHAKQEAgLTIzMSwxNSArMjMxLDEzIEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6cmVt
b3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyCiAgICAg
fQogfQogCi1ET01XaW5kb3cqIEhUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpCitXaW5kb3dQcm94eSogSFRNTEZyYW1lU2V0RWxlbWVudDo6bmFt
ZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKICAgICBhdXRvIGZyYW1lRWxlbWVu
dCA9IG1ha2VSZWZQdHIoY2hpbGRyZW4oKS0+bmFtZWRJdGVtKG5hbWUpKTsKICAgICBpZiAoIWlz
PEhUTUxGcmFtZUVsZW1lbnQ+KGZyYW1lRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgaWYgKGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGRvd25jYXN0PEhUTUxGcmFt
ZUVsZW1lbnQ+KGZyYW1lRWxlbWVudC5nZXQoKSktPmNvbnRlbnREb2N1bWVudCgpKSkKLSAgICAg
ICAgcmV0dXJuIGRvY3VtZW50LT5kb21XaW5kb3coKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gZG93bmNhc3Q8SFRNTEZyYW1lRWxlbWVudD4oKmZyYW1lRWxlbWVudCkuY29udGVu
dFdpbmRvdygpOwogfQogCiBWZWN0b3I8QXRvbWljU3RyaW5nPiBIVE1MRnJhbWVTZXRFbGVtZW50
OjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmgKaW5kZXggZDFmMzc5YjczNWNiNzdmNWU1YWQyZGVjNGViZjE0NDBj
N2VlYTMzMi4uYzNjNjhiNTdiZjk3N2U3YWNlYTkyZmYzYWVjMDk2NDk2ZjcxMjJiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8SFRNTEZyYW1lU2V0RWxlbWVudD4gZmluZENvbnRh
aW5pbmcoRWxlbWVudCogZGVzY2VuZGFudCk7CiAgICAgCiAgICAgVmVjdG9yPEF0b21pY1N0cmlu
Zz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0OwotICAgIERPTVdpbmRvdyogbmFtZWRJ
dGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFdpbmRvd1Byb3h5KiBuYW1lZEl0ZW0oY29u
c3QgQXRvbWljU3RyaW5nJik7CiAKIHByaXZhdGU6CiAgICAgSFRNTEZyYW1lU2V0RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZVNldEVsZW1lbnQuaWRsCmluZGV4IDMyNTBiOTQ5MGVkYjhiYjE4ZjQ3Yjk4MmNiYjdm
NmI0NDA4ZDMxMjUuLjY5NDIxNzNlNzQ0MDkyNDljMjA1YjBiM2M1MjYyOWUyYWNjNDY5NGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbApAQCAtMzMsNyAr
MzMsNyBAQCBpbnRlcmZhY2UgSFRNTEZyYW1lU2V0RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKIAog
ICAgIC8vIE5vbi1zdGFuZGFyZCBuYW1lZCBnZXR0ZXIKICAgICAvLyBGSVhNRTogVGhpcyBpcyBu
b3QgaW4gdGhlIHN0YW5kYXJkLCBjYW4gd2UgcmVtb3ZlIHRoaXM/Ci0gICAgZ2V0dGVyIERPTVdp
bmRvdyAoRE9NU3RyaW5nIG5hbWUpOworICAgIGdldHRlciBXaW5kb3dQcm94eSAoRE9NU3RyaW5n
IG5hbWUpOwogfTsKIAogSFRNTEZyYW1lU2V0RWxlbWVudCBpbXBsZW1lbnRzIFdpbmRvd0V2ZW50
SGFuZGxlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVt
ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCmluZGV4
IDNlM2JkY2MxMTA0MTg4YTc4ZGRiYThlMjc2NDM0ZTRlNjZlNjkwYmMuLmMxNjM5MjJlZTQyMGU3
NWMwNGRkMTI4MTk0YjUzNWYzODNjOTVkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQuaWRsCkBAIC0zOCw3ICszOCw3IEBAIGludGVyZmFjZSBIVE1MSUZyYW1lRWxl
bWVudCA6IEhUTUxFbGVtZW50IHsKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9u
bHkgYXR0cmlidXRlIERvY3VtZW50IGNvbnRlbnREb2N1bWVudDsKIAotICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01XaW5kb3cgY29udGVudFdpbmRvdzsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
V2luZG93UHJveHkgY29udGVudFdpbmRvdzsKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZSwg
TWF5VGhyb3dFeGNlcHRpb25dIERvY3VtZW50IGdldFNWR0RvY3VtZW50KCk7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggZDE1MTI3M2EzNTk0OTNlMWI2YzUzOGYw
ZjNkOTMxNjg4MDM2NGExNy4uODVjMTNmZjdmMDIwYWE5YWMyYzZlNGRmMTcyNDZkNDQxMTljNWE1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1
bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggYjAyM2E0ZTJlZjI4NDMw
MzdiZTVkMDhiZjJhNGZlMzgzMWQ1ZmQ4Zi4uM2UyYTkxNjZmMmM4MDFhZTU1NjYzYmNjYjFiNDkw
YWUwOWZhZjFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTQ4LDcgKzE0OCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIGNsYXNzIFBvc3RNZXNzYWdlVGltZXIg
OiBwdWJsaWMgVGltZXJCYXNlIHsKIHB1YmxpYzoKLSAgICBQb3N0TWVzc2FnZVRpbWVyKERPTVdp
bmRvdyYgd2luZG93LCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luLCBET01XaW5kb3cmIHNvdXJjZSwgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiYmIHRhcmdldE9yaWdpbiwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFja1RyYWNl
KQorICAgIFBvc3RNZXNzYWdlVGltZXIoRE9NV2luZG93JiB3aW5kb3csIE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiBzb3VyY2UsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0YXJnZXRPcmln
aW4sIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3RhY2tUcmFjZSkKICAgICAgICAgOiBtX3dp
bmRvdyh3aW5kb3cpCiAgICAgICAgICwgbV9tZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpCiAgICAg
ICAgICwgbV9vcmlnaW4oc291cmNlT3JpZ2luKQpAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoK
IAogICAgIFJlZjxNZXNzYWdlRXZlbnQ+IGV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCiAgICAgewotICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoTWVzc2Fn
ZVBvcnQ6OmVudGFuZ2xlUG9ydHMoY29udGV4dCwgV1RGTW92ZShtX21lc3NhZ2UudHJhbnNmZXJy
ZWRQb3J0cykpLCBtX21lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBtX29yaWdpbiwg
eyB9LCBNZXNzYWdlRXZlbnRTb3VyY2UoUmVmUHRyPERPTVdpbmRvdz4oV1RGTW92ZShtX3NvdXJj
ZSkpKSk7CisgICAgICAgIHJldHVybiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShNZXNzYWdlUG9ydDo6
ZW50YW5nbGVQb3J0cyhjb250ZXh0LCBXVEZNb3ZlKG1fbWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRz
KSksIG1fbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCksIG1fb3JpZ2luLCB7IH0sIG1f
c291cmNlID8gc3RkOjptYWtlX29wdGlvbmFsKE1lc3NhZ2VFdmVudFNvdXJjZShXVEZNb3ZlKG1f
c291cmNlKSkpIDogc3RkOjpudWxsb3B0KTsKICAgICB9CiAKICAgICBTZWN1cml0eU9yaWdpbiog
dGFyZ2V0T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRPcmlnaW4uZ2V0KCk7IH0KQEAg
LTE4MCw3ICsxODAsNyBAQCBwcml2YXRlOgogICAgIFJlZjxET01XaW5kb3c+IG1fd2luZG93Owog
ICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1fbWVzc2FnZTsKICAgICBTdHJpbmcgbV9vcmln
aW47Ci0gICAgUmVmPERPTVdpbmRvdz4gbV9zb3VyY2U7CisgICAgUmVmUHRyPFdpbmRvd1Byb3h5
PiBtX3NvdXJjZTsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fdGFyZ2V0T3JpZ2luOwog
ICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IG1fc3RhY2tUcmFjZTsKICAgICBSZWZQdHI8VXNl
ckdlc3R1cmVUb2tlbj4gbV91c2VyR2VzdHVyZVRvRm9yd2FyZDsKQEAgLTk2MCw3ICs5NjAsOCBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgRE9NV2luZG93JiBpbmN1bQogICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1l
c3NhZ2UgeyBtZXNzYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZGlzZW50YW5nbGVkUG9y
dHMucmVsZWFzZVJldHVyblZhbHVlKCkgfTsKIAogICAgIC8vIFNjaGVkdWxlIHRoZSBtZXNzYWdl
LgotICAgIGF1dG8qIHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGltZXIoKnRoaXMsIFdURk1vdmUo
bWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgaW5jdW1iZW50V2luZG93LCBXVEZNb3ZlKHRhcmdldCks
IFdURk1vdmUoc3RhY2tUcmFjZSkpOworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gaW5jdW1iZW50
V2luZG93UHJveHkgPSBpbmN1bWJlbnRXaW5kb3cuZnJhbWUoKSA/ICZpbmN1bWJlbnRXaW5kb3cu
ZnJhbWUoKS0+d2luZG93UHJveHkoKSA6IG51bGxwdHI7CisgICAgYXV0byogdGltZXIgPSBuZXcg
UG9zdE1lc3NhZ2VUaW1lcigqdGhpcywgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luLCBX
VEZNb3ZlKGluY3VtYmVudFdpbmRvd1Byb3h5KSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHN0
YWNrVHJhY2UpKTsKICAgICB0aW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CiAKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFBvc3RNZXNzYWdlKCptX2ZyYW1lLCAqdGltZXIsIHN0YXRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggOTE3NGFmZDUzMjE2
YzExMmM0YjVlMGQ1NzU4N2M4NmQxZmM5YzVhMS4uN2M0OWEyMTdmMDJhNjg1NTQ3MGRiMzE3N2I4
ZjU5MzU0MzhmNTY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAg
LTUwOCw3ICs1MDgsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1dEV2
ZW50Rm9yKEZyYW1lKiBpbm5lckZyYW1lLCBjb25zdCBEcmFnRGF0YQogICAgIFN0cmluZyB0ZXh0
ID0gbV9wYWdlLmRyYWdDYXJldENvbnRyb2xsZXIoKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgp
ID8gZW1wdHlTdHJpbmcoKSA6IGRyYWdEYXRhLmFzUGxhaW5UZXh0KCk7CiAgICAgRWxlbWVudCog
dGFyZ2V0ID0gaW5uZXJGcmFtZS0+ZWRpdG9yKCkuZmluZEV2ZW50VGFyZ2V0RnJvbShtX3BhZ2Uu
ZHJhZ0NhcmV0Q29udHJvbGxlcigpLmNhcmV0UG9zaXRpb24oKSk7CiAgICAgLy8gRklYTUU6IFdo
YXQgZ3VhcmFudGVlcyB0YXJnZXQgaXMgbm90IG51bGw/Ci0gICAgYXV0byBldmVudCA9IFRleHRF
dmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwg
dGV4dCk7CisgICAgYXV0byBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZy
YW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCB0ZXh0KTsKICAgICB0YXJnZXQtPmRpc3Bh
dGNoRXZlbnQoZXZlbnQpOwogICAgIHJldHVybiAhZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA4N2QxMjc3NGNjNmYzNGFl
MDcwMTAwZDE5ZWViNzY1NjVmMjUwNzlkLi43ZDJjOTNhM2MwZjk4MWY4MDU5ZWE4YjdmMzg2YmZh
NmZlMGMwMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zODAyLDcg
KzM4MDIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVGV4dElucHV0RXZlbnQoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBFdmVudCogdW5kZXJseWluZ0V2ZQogICAgIGlmIChGcmFtZVZpZXcqIHZp
ZXcgPSBtX2ZyYW1lLnZpZXcoKSkKICAgICAgICAgdmlldy0+ZGlzYWJsZUxheWVyRmx1c2hUaHJv
dHRsaW5nVGVtcG9yYXJpbHlGb3JJbnRlcmFjdGlvbigpOwogCi0gICAgUmVmPFRleHRFdmVudD4g
ZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygp
LCB0ZXh0LCBpbnB1dFR5cGUpOworICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50
OjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCB0ZXh0LCBpbnB1dFR5
cGUpOwogICAgIGV2ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQodW5kZXJseWluZ0V2ZW50KTsKIAog
ICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4
IGE4NDI2NWFhNzkzNmMzNDg5MmNjOWUwNzFhOTkwYjlhZDFlNTExNjguLjgyODRhNjUzMWRhM2Fh
MDFkMGZmYmNlZGIwODU4MTE3MjBiNjZiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0yMTIs
NiArMjEyLDcgQEAgUmVmPEZyYW1lPiBGcmFtZTo6Y3JlYXRlKFBhZ2UqIHBhZ2UsIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFtZUwKIAogRnJhbWU6On5GcmFtZSgpCiB7
CisgICAgd2luZG93UHJveHkoKS5kZXN0cm95QWxsSlNXaW5kb3dQcm94aWVzKCk7CiAgICAgc2V0
VmlldyhudWxscHRyKTsKICAgICBsb2FkZXIoKS5jYW5jZWxBbmRDbGVhcigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3cuY3BwCmluZGV4IDdiMDljODE4
N2M0NjQwMDY3MDZmYzNlY2E0NzdiNjk3MDM2NWJhMjIuLjY3N2Q2NmMxMjU0NDgzMTQxN2Q0ZDgx
NDQ0N2Y0MDViMWI1MzAzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01ET01XaW5kb3cuY3BwCkBAIC02NCw2ICs2NCwyMiBAQCBXZWJLaXRET01ET01XaW5kb3cqIGtp
dChXZWJDb3JlOjpET01XaW5kb3cqIG9iaikKICAgICByZXR1cm4gd3JhcERPTVdpbmRvdyhvYmop
OwogfQogCitXZWJLaXRET01ET01XaW5kb3cqIGtpdChXZWJDb3JlOjpXaW5kb3dQcm94eSogd2lu
ZG93UHJveHkpCit7CisgICAgaWYgKCF3aW5kb3dQcm94eSB8fCAhaXM8V2ViQ29yZTo6RE9NV2lu
ZG93Pih3aW5kb3dQcm94eS0+d2luZG93KCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBraXQoZG93bmNhc3Q8V2ViQ29yZTo6RE9NV2luZG93Pih3aW5kb3dQcm94eS0+
d2luZG93KCkpKTsKK30KKworV2ViQ29yZTo6V2luZG93UHJveHkqIHRvV2luZG93UHJveHkoV2Vi
S2l0RE9NRE9NV2luZG93KiB2aWV3KQoreworICAgIGF1dG8qIHdpbmRvdyA9IGNvcmUodmlldyk7
CisgICAgaWYgKCF3aW5kb3cgfHwgIXdpbmRvdy0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuICZ3aW5kb3ctPmZyYW1lKCktPndpbmRvd1Byb3h5KCk7Cit9CisK
IFdlYkNvcmU6OkRPTVdpbmRvdyogY29yZShXZWJLaXRET01ET01XaW5kb3cqIHJlcXVlc3QpCiB7
CiAgICAgcmV0dXJuIHJlcXVlc3QgPyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpET01XaW5kb3cqPihX
RUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCkgOiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTURPTVdpbmRvd1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3dQcml2YXRlLmgKaW5kZXggZTMx
ZDIyNzViOGI4MWNhZjgwZTIwMWU2ZGQ2YjFhZTk2MmNjZmY5Mi4uNjY4NGVjNjc4OGVkZWZiMGU4
NmQ1ZGQxNTQyNjhlNmZkMzVmNjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdpbmRvd1ByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NRE9NV2luZG93UHJpdmF0ZS5oCkBAIC0yMSwxMiArMjEsMTUgQEAKICNkZWZp
bmUgV2ViS2l0RE9NRE9NV2luZG93UHJpdmF0ZV9oCiAKICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdp
bmRvdy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93UHJveHkuaD4KICNpbmNsdWRlIDx3ZWJr
aXRkb20vV2ViS2l0RE9NRE9NV2luZG93Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogV2ViS2l0
RE9NRE9NV2luZG93KiB3cmFwRE9NV2luZG93KFdlYkNvcmU6OkRPTVdpbmRvdyopOwogV2ViS2l0
RE9NRE9NV2luZG93KiBraXQoV2ViQ29yZTo6RE9NV2luZG93Kik7CitXZWJLaXRET01ET01XaW5k
b3cqIGtpdChXZWJDb3JlOjpXaW5kb3dQcm94eSopOwogV2ViQ29yZTo6RE9NV2luZG93KiBjb3Jl
KFdlYktpdERPTURPTVdpbmRvdyopOworV2ViQ29yZTo6V2luZG93UHJveHkqIHRvV2luZG93UHJv
eHkoV2ViS2l0RE9NRE9NV2luZG93Kik7CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlm
IC8qIFdlYktpdERPTURPTVdpbmRvd1ByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3Vt
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudEd0ay5jcHAKaW5kZXggOTUwNTQxZjA5YjIyNzAxYTEz
OTU1ODFjZDFiNDMyOTcwMzQyMWVhNC4uMTNjOTZhNTcwZWQ5ZGRiMmUyZDEzMjc5M2M4NDc5ZmU3
MTdlYjdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1l
bnRHdGsuY3BwCkBAIC0xNDk0LDggKzE0OTQsNyBAQCBXZWJLaXRET01ET01XaW5kb3cqIHdlYmtp
dF9kb21fZG9jdW1lbnRfZ2V0X2RlZmF1bHRfdmlldyhXZWJLaXRET01Eb2N1bWVudCogc2VsZgog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKHNlbGYpLCAwKTsKICAgICBXZWJDb3Jl
OjpEb2N1bWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6RE9NV2luZG93PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+ZGVmYXVsdFZp
ZXcoKSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOworICAg
IHJldHVybiBXZWJLaXQ6OmtpdChpdGVtLT5kZWZhdWx0VmlldygpKTsKIH0KIAogV2ViS2l0RE9N
U3R5bGVTaGVldExpc3QqIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3N0eWxlX3NoZWV0cyhXZWJL
aXRET01Eb2N1bWVudCogc2VsZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRnJhbWVFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01IVE1MRnJhbWVFbGVtZW50LmNwcAppbmRleCBjMTVmNmE0ODY0Zjc4M2VjMDczNmI0
Y2EzNzk2YzZkZDY2YjM3NjJhLi41YjY3MTUyMzhjNjkzOWFhN2NkOTA3NmMyNWI5OTI1MWM2ZDE1
NTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTEZyYW1lRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxG
cmFtZUVsZW1lbnQuY3BwCkBAIC00OTIsOCArNDkyLDcgQEAgV2ViS2l0RE9NRE9NV2luZG93KiB3
ZWJraXRfZG9tX2h0bWxfZnJhbWVfZWxlbWVudF9nZXRfY29udGVudF93aW5kb3coV2ViS2l0RE9N
SFQKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1MX0ZSQU1FX0VMRU1FTlQoc2VsZiksIDAp
OwogICAgIFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2Vs
Zik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkRPTVdpbmRvdz4gZ29iamVjdFJlc3VsdCA9IFdURjo6
Z2V0UHRyKGl0ZW0tPmNvbnRlbnRXaW5kb3coKSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdv
YmplY3RSZXN1bHQuZ2V0KCkpOworICAgIHJldHVybiBXZWJLaXQ6OmtpdChpdGVtLT5jb250ZW50
V2luZG93KCkpOwogfQogCiBnbG9uZyB3ZWJraXRfZG9tX2h0bWxfZnJhbWVfZWxlbWVudF9nZXRf
d2lkdGgoV2ViS2l0RE9NSFRNTEZyYW1lRWxlbWVudCogc2VsZikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01I
VE1MSUZyYW1lRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1lbnQuY3BwCmluZGV4IDI4
YjUxY2U5MGU5ZjNmNTA0MGRiMTYxNzY2ZTc2MDRiY2Y0ZGZmOTQuLjNlNjc0YWYyZjE1MjA3MjIw
NjgyMzg3OTViODVkNTQ3ZjIyNTE2YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MSUZyYW1lRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTUhUTUxJRnJhbWVFbGVtZW50LmNwcApAQCAtNTM4LDggKzUzOCw3IEBA
IFdlYktpdERPTURPTVdpbmRvdyogd2Via2l0X2RvbV9odG1sX2lmcmFtZV9lbGVtZW50X2dldF9j
b250ZW50X3dpbmRvdyhXZWJLaXRET01ICiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfSFRNTF9J
RlJBTUVfRUxFTUVOVChzZWxmKSwgMCk7CiAgICAgV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkRPTVdpbmRv
dz4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmNvbnRlbnRXaW5kb3coKSk7Ci0g
ICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOworICAgIHJldHVybiBX
ZWJLaXQ6OmtpdChpdGVtLT5jb250ZW50V2luZG93KCkpOwogfQogCiBHX0dOVUNfRU5EX0lHTk9S
RV9ERVBSRUNBVElPTlM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NS2V5Ym9hcmRFdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
S2V5Ym9hcmRFdmVudC5jcHAKaW5kZXggNDFmY2M5NzgzNDNkNDIzOGRjNmI1MWE3MDQzOThhZjcz
YWJjODJkMC4uN2RhMzI2M2YwYmUzMmE1MTZiMGM5YzNhYWZmMTg0ODAzMzUxMjBjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTUtleWJvYXJkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01LZXlib2FyZEV2ZW50LmNwcApA
QCAtMjAyLDkgKzIwMiw4IEBAIHZvaWQgd2Via2l0X2RvbV9rZXlib2FyZF9ldmVudF9pbml0X2tl
eWJvYXJkX2V2ZW50KFdlYktpdERPTUtleWJvYXJkRXZlbnQqIHNlbGYsCiAgICAgZ19yZXR1cm5f
aWZfZmFpbChrZXlJZGVudGlmaWVyKTsKICAgICBXZWJDb3JlOjpLZXlib2FyZEV2ZW50KiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFR5cGUgPSBX
VEY6OlN0cmluZzo6ZnJvbVVURjgodHlwZSk7Ci0gICAgV2ViQ29yZTo6RE9NV2luZG93KiBjb252
ZXJ0ZWRWaWV3ID0gV2ViS2l0Ojpjb3JlKHZpZXcpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRl
ZEtleUlkZW50aWZpZXIgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoa2V5SWRlbnRpZmllcik7Ci0g
ICAgaXRlbS0+aW5pdEtleWJvYXJkRXZlbnQoY29udmVydGVkVHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCBjb252ZXJ0ZWRWaWV3LCBjb252ZXJ0ZWRLZXlJZGVudGlmaWVyLCBsb2NhdGlvbiwg
Y3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSwgYWx0R3JhcGhLZXkpOworICAgIGl0
ZW0tPmluaXRLZXlib2FyZEV2ZW50KGNvbnZlcnRlZFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJs
ZSwgV2ViS2l0Ojp0b1dpbmRvd1Byb3h5KHZpZXcpLCBjb252ZXJ0ZWRLZXlJZGVudGlmaWVyLCBs
b2NhdGlvbiwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSwgYWx0R3JhcGhLZXkp
OwogfQogCiBnY2hhciogd2Via2l0X2RvbV9rZXlib2FyZF9ldmVudF9nZXRfa2V5X2lkZW50aWZp
ZXIoV2ViS2l0RE9NS2V5Ym9hcmRFdmVudCogc2VsZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Nb3VzZUV2
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01Nb3VzZUV2ZW50LmNwcAppbmRleCAwNTgwMGEzNTdmYWM2NzRkYjhjM2Qz
MzY1ZTFjZTVjNjk2NWI2NzI4Li4yMTdlNTY1YTRhYjg2MzFlZWQyZjUxMTUxMTE0NmQ2YTIwMThl
YzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NTW91c2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1vdXNlRXZlbnQu
Y3BwCkBAIC0zMTksOSArMzE5LDggQEAgdm9pZCB3ZWJraXRfZG9tX21vdXNlX2V2ZW50X2luaXRf
bW91c2VfZXZlbnQoV2ViS2l0RE9NTW91c2VFdmVudCogc2VsZiwgY29uc3QgZ2MKICAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfRVZFTlRfVEFSR0VUKHJlbGF0ZWRUYXJnZXQpKTsK
ICAgICBXZWJDb3JlOjpNb3VzZUV2ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAg
IFdURjo6U3RyaW5nIGNvbnZlcnRlZFR5cGUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodHlwZSk7
Ci0gICAgV2ViQ29yZTo6RE9NV2luZG93KiBjb252ZXJ0ZWRWaWV3ID0gV2ViS2l0Ojpjb3JlKHZp
ZXcpOwogICAgIFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBjb252ZXJ0ZWRSZWxhdGVkVGFyZ2V0ID0g
V2ViS2l0Ojpjb3JlKHJlbGF0ZWRUYXJnZXQpOwotICAgIGl0ZW0tPmluaXRNb3VzZUV2ZW50KGNv
bnZlcnRlZFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29udmVydGVkVmlldywgZGV0YWls
LCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNo
aWZ0S2V5LCBtZXRhS2V5LCBidXR0b24sIGNvbnZlcnRlZFJlbGF0ZWRUYXJnZXQpOworICAgIGl0
ZW0tPmluaXRNb3VzZUV2ZW50KGNvbnZlcnRlZFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwg
V2ViS2l0Ojp0b1dpbmRvd1Byb3h5KHZpZXcpLCBkZXRhaWwsIHNjcmVlblgsIHNjcmVlblksIGNs
aWVudFgsIGNsaWVudFksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRv
biwgY29udmVydGVkUmVsYXRlZFRhcmdldCk7CiB9CiAKIGdsb25nIHdlYmtpdF9kb21fbW91c2Vf
ZXZlbnRfZ2V0X3NjcmVlbl94KFdlYktpdERPTU1vdXNlRXZlbnQqIHNlbGYpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NVUlFdmVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVUlFdmVudC5jcHAKaW5kZXggOWFlMDEyMzlhODI2Y2Y4
ZWYyZDQwNjIwZDVjNDM3NGI2MDI0OWRmYy4uYTBmNmE5MDEwNGQwZWVhM2RmZjM5OTUxN2ZjODhi
ODRiMzkxNGI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVVJRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01VSUV2ZW50
LmNwcApAQCAtMjA0LDggKzIwNCw3IEBAIHZvaWQgd2Via2l0X2RvbV91aV9ldmVudF9pbml0X3Vp
X2V2ZW50KFdlYktpdERPTVVJRXZlbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB0eXBlCiAgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0RPTV9XSU5ET1codmlldykpOwogICAgIFdlYkNv
cmU6OlVJRXZlbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcg
Y29udmVydGVkVHlwZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh0eXBlKTsKLSAgICBXZWJDb3Jl
OjpET01XaW5kb3cqIGNvbnZlcnRlZFZpZXcgPSBXZWJLaXQ6OmNvcmUodmlldyk7Ci0gICAgaXRl
bS0+aW5pdFVJRXZlbnQoY29udmVydGVkVHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBjb252
ZXJ0ZWRWaWV3LCBkZXRhaWwpOworICAgIGl0ZW0tPmluaXRVSUV2ZW50KGNvbnZlcnRlZFR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV2ViS2l0Ojp0b1dpbmRvd1Byb3h5KHZpZXcpLCBkZXRh
aWwpOwogfQogCiBXZWJLaXRET01ET01XaW5kb3cqIHdlYmtpdF9kb21fdWlfZXZlbnRfZ2V0X3Zp
ZXcoV2ViS2l0RE9NVUlFdmVudCogc2VsZikKQEAgLTIxMyw4ICsyMTIsNyBAQCBXZWJLaXRET01E
T01XaW5kb3cqIHdlYmtpdF9kb21fdWlfZXZlbnRfZ2V0X3ZpZXcoV2ViS2l0RE9NVUlFdmVudCog
c2VsZikKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19VSV9FVkVOVChzZWxmKSwgMCk7CiAgICAg
V2ViQ29yZTo6VUlFdmVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6RE9NV2luZG93PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+dmll
dygpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CisgICAg
cmV0dXJuIFdlYktpdDo6a2l0KGl0ZW0tPnZpZXcoKSk7CiB9CiAKIGdsb25nIHdlYmtpdF9kb21f
dWlfZXZlbnRfZ2V0X2RldGFpbChXZWJLaXRET01VSUV2ZW50KiBzZWxmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTVdoZWVsRXZlbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVdoZWVsRXZlbnQuY3BwCmluZGV4IDBlMWJhNmRhNTVj
MWM0M2VlZTY0YWU5YTFlZDVhYjY0NDRmOWY0ZjkuLmU3NzRjZDE2N2VjYjM0OTExNDE5MDhlMzg5
ZGQ1MGEyNTQ0NmNlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01XaGVlbEV2ZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
V2hlZWxFdmVudC5jcHAKQEAgLTEzMSw4ICsxMzEsNyBAQCB2b2lkIHdlYmtpdF9kb21fd2hlZWxf
ZXZlbnRfaW5pdF93aGVlbF9ldmVudChXZWJLaXRET01XaGVlbEV2ZW50KiBzZWxmLCBnbG9uZyB3
aAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19XSEVFTF9FVkVOVChzZWxmKSk7
CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0RPTV9XSU5ET1codmlldykpOwog
ICAgIFdlYkNvcmU6OldoZWVsRXZlbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAg
V2ViQ29yZTo6RE9NV2luZG93KiBjb252ZXJ0ZWRWaWV3ID0gV2ViS2l0Ojpjb3JlKHZpZXcpOwot
ICAgIGl0ZW0tPmluaXRXZWJLaXRXaGVlbEV2ZW50KHdoZWVsRGVsdGFYLCB3aGVlbERlbHRhWSwg
Y29udmVydGVkVmlldywgc2NyZWVuWCwgc2NyZWVuWSwgY2xpZW50WCwgY2xpZW50WSwgY3RybEtl
eSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSk7CisgICAgaXRlbS0+aW5pdFdlYktpdFdoZWVs
RXZlbnQod2hlZWxEZWx0YVgsIHdoZWVsRGVsdGFZLCBXZWJLaXQ6OnRvV2luZG93UHJveHkodmll
dyksIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVudFksIGN0cmxLZXksIGFsdEtleSwg
c2hpZnRLZXksIG1ldGFLZXkpOwogfQogCiBnbG9uZyB3ZWJraXRfZG9tX3doZWVsX2V2ZW50X2dl
dF93aGVlbF9kZWx0YV94KFdlYktpdERPTVdoZWVsRXZlbnQqIHNlbGYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlldy5tbQppbmRleCAxYTRjMjliMWIwZGRh
YzgyMjU3YmQ2ZjRiYTZkYzQ0ZmYzOTEyZTg5Li4xNjllNGFlNWZlNzc1Yjk4ZDI0Y2Q0ODA2YTVh
OWM1MDc4ZTEwZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
QWJzdHJhY3RWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0
cmFjdFZpZXcubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9XaW5kb3dQcm94eS5oPgogCiAj
ZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpGcmFtZSo+KF9pbnRlcm5hbCkK
IApAQCAtMTAwLDMgKzEwMSwxOSBAQCBET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpBYnN0
cmFjdERPTVdpbmRvdyogdmFsdWUpCiAKICAgICByZXR1cm4ga2l0KGRvd25jYXN0PFdlYkNvcmU6
OkRPTVdpbmRvdz4odmFsdWUpKTsKIH0KKworRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6
V2luZG93UHJveHkqIHdpbmRvd1Byb3h5KQoreworICAgIGlmICghd2luZG93UHJveHkpCisgICAg
ICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4ga2l0KHdpbmRvd1Byb3h5LT53aW5kb3coKSk7
Cit9CisKK1dlYkNvcmU6OldpbmRvd1Byb3h5KiB0b1dpbmRvd1Byb3h5KERPTUFic3RyYWN0Vmll
dyAqdmlldykKK3sKKyAgICBhdXRvKiB3aW5kb3cgPSBjb3JlKHZpZXcpOworICAgIGlmICghd2lu
ZG93IHx8ICF3aW5kb3ctPmZyYW1lKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJu
ICZ3aW5kb3ctPmZyYW1lKCktPndpbmRvd1Byb3h5KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oCmluZGV4IGM0ZDcz
MjVjN2YyNWJiNWI4NjEyNzQxNmUzZDkwZDI4MjE0YzExOTcuLjM1OWYwNWViNGQ0YTQzYWE1MjQy
MzNlNGJiZjY2MjhkYjM2ODg2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oCkBAIC0yOCwxMSArMjgsMTQgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFic3RyYWN0RE9NV2luZG93OwogY2xhc3MgRE9NV2lu
ZG93OworY2xhc3MgV2luZG93UHJveHk7CiB9CiAKIFdlYkNvcmU6OkRPTVdpbmRvdyogY29yZShE
T01BYnN0cmFjdFZpZXcgKik7CiBET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpET01XaW5k
b3cqKTsKIERPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OkFic3RyYWN0RE9NV2luZG93Kik7
CitET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpXaW5kb3dQcm94eSopOworV2ViQ29yZTo6
V2luZG93UHJveHkqIHRvV2luZG93UHJveHkoRE9NQWJzdHJhY3RWaWV3ICopOwogCiBAaW50ZXJm
YWNlIERPTUFic3RyYWN0VmlldyAoV2ViS2l0TGVnYWN5SW50ZXJuYWwpCiAtICh2b2lkKV9kaXNj
b25uZWN0RnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
RG9jdW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0K
aW5kZXggNmMyZjM2ZDgyNGE5NGE2ODIzYmYyYTgxYzliZWQyMjM0ZTdhNjhmNC4uYzkwZjllZmU0
MjM5ZDU0NGExZWM2MGVjMjY1NWE5YTg0OGM2ZTBmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01Eb2N1bWVudC5tbQpAQCAtNjg0LDcgKzY4NCw3IEBAIC0gKERPTUNTU1N0eWxl
RGVjbGFyYXRpb24gKilnZXRDb21wdXRlZFN0eWxlOihET01FbGVtZW50ICopZWxlbWVudCBwc2V1
ZG9FbGVtZW50CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAg
IGlmICghZWxlbWVudCkKICAgICAgICAgcmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKLSAgICBX
ZWJDb3JlOjpET01XaW5kb3cqIGR2ID0gSU1QTC0+ZGVmYXVsdFZpZXcoKTsKKyAgICBXZWJDb3Jl
OjpET01XaW5kb3cqIGR2ID0gSU1QTC0+ZG9tV2luZG93KCk7CiAgICAgaWYgKCFkdikKICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKGR2LT5nZXRDb21wdXRl
ZFN0eWxlKCpjb3JlKGVsZW1lbnQpLCBwc2V1ZG9FbGVtZW50KSkpOwpAQCAtNjk4LDcgKzY5OCw3
IEBAIC0gKERPTUNTU1J1bGVMaXN0ICopZ2V0TWF0Y2hlZENTU1J1bGVzOihET01FbGVtZW50ICop
ZWxlbWVudCBwc2V1ZG9FbGVtZW50OihOU1N0CiAtIChET01DU1NSdWxlTGlzdCAqKWdldE1hdGNo
ZWRDU1NSdWxlczooRE9NRWxlbWVudCAqKWVsZW1lbnQgcHNldWRvRWxlbWVudDooTlNTdHJpbmcg
Kilwc2V1ZG9FbGVtZW50IGF1dGhvck9ubHk6KEJPT0wpYXV0aG9yT25seQogewogICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpET01XaW5kb3cq
IGR2ID0gSU1QTC0+ZGVmYXVsdFZpZXcoKTsKKyAgICBXZWJDb3JlOjpET01XaW5kb3cqIGR2ID0g
SU1QTC0+ZG9tV2luZG93KCk7CiAgICAgaWYgKCFkdikKICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKGR2LT5nZXRNYXRjaGVkQ1NTUnVsZXMoY29yZShlbGVt
ZW50KSwgcHNldWRvRWxlbWVudCwgYXV0aG9yT25seSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01LZXlib2FyZEV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0KaW5kZXggZTlhYjFmZWZlNzRkOTczNGVh
YzI4NDE2YjA5ZWYyMzEwZmNmYzcxYi4uYmEyZmJlNGUxODlkNjEzNmVlZDczNWVmZmZlNzEyMGI3
Zjk2OTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJv
YXJkRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJk
RXZlbnQubW0KQEAgLTExMCwyNSArMTEwLDI1IEBAIC0gKEJPT0wpZ2V0TW9kaWZpZXJTdGF0ZToo
TlNTdHJpbmcgKilrZXlJZGVudGlmaWVyQXJnCiAtICh2b2lkKWluaXRLZXlib2FyZEV2ZW50OihO
U1N0cmluZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihCT09M
KWNhbmNlbGFibGUgdmlldzooRE9NQWJzdHJhY3RWaWV3ICopdmlldyBrZXlJZGVudGlmaWVyOihO
U1N0cmluZyAqKWluS2V5SWRlbnRpZmllciBsb2NhdGlvbjoodW5zaWduZWQpaW5Mb2NhdGlvbiBj
dHJsS2V5OihCT09MKWluQ3RybEtleSBhbHRLZXk6KEJPT0wpaW5BbHRLZXkgc2hpZnRLZXk6KEJP
T0wpaW5TaGlmdEtleSBtZXRhS2V5OihCT09MKWluTWV0YUtleSBhbHRHcmFwaEtleTooQk9PTClp
bkFsdEdyYXBoS2V5CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJs
ZSwgY29yZSh2aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBpbkxvY2F0aW9uLCBpbkN0cmxLZXksIGlu
QWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXksIGluQWx0R3JhcGhLZXkpOworICAgIElNUEwt
PmluaXRLZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQ
cm94eSh2aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBpbkxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0
S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXksIGluQWx0R3JhcGhLZXkpOwogfQogCiAtICh2b2lk
KWluaXRLZXlib2FyZEV2ZW50OihOU1N0cmluZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1
YmJsZSBjYW5jZWxhYmxlOihCT09MKWNhbmNlbGFibGUgdmlldzooRE9NQWJzdHJhY3RWaWV3ICop
dmlldyBrZXlJZGVudGlmaWVyOihOU1N0cmluZyAqKWluS2V5SWRlbnRpZmllciBsb2NhdGlvbjoo
dW5zaWduZWQpaW5Mb2NhdGlvbiBjdHJsS2V5OihCT09MKWluQ3RybEtleSBhbHRLZXk6KEJPT0wp
aW5BbHRLZXkgc2hpZnRLZXk6KEJPT0wpaW5TaGlmdEtleSBtZXRhS2V5OihCT09MKWluTWV0YUtl
eQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBM
LT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUodmll
dyksIGluS2V5SWRlbnRpZmllciwgaW5Mb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5T
aGlmdEtleSwgaW5NZXRhS2V5KTsKKyAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBj
YW5CdWJibGUsIGNhbmNlbGFibGUsIHRvV2luZG93UHJveHkodmlldyksIGluS2V5SWRlbnRpZmll
ciwgaW5Mb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5
KTsKIH0KIAogLSAodm9pZClpbml0S2V5Ym9hcmRFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1
YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERP
TUFic3RyYWN0VmlldyAqKXZpZXcga2V5SWRlbnRpZmllcjooTlNTdHJpbmcgKilpbktleUlkZW50
aWZpZXIga2V5TG9jYXRpb246KHVuc2lnbmVkKWluS2V5TG9jYXRpb24gY3RybEtleTooQk9PTClp
bkN0cmxLZXkgYWx0S2V5OihCT09MKWluQWx0S2V5IHNoaWZ0S2V5OihCT09MKWluU2hpZnRLZXkg
bWV0YUtleTooQk9PTClpbk1ldGFLZXkgYWx0R3JhcGhLZXk6KEJPT0wpaW5BbHRHcmFwaEtleQog
ewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5p
bml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUodmlldyks
IGluS2V5SWRlbnRpZmllciwgaW5LZXlMb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5T
aGlmdEtleSwgaW5NZXRhS2V5LCBpbkFsdEdyYXBoS2V5KTsKKyAgICBJTVBMLT5pbml0S2V5Ym9h
cmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRvV2luZG93UHJveHkodmlldyks
IGluS2V5SWRlbnRpZmllciwgaW5LZXlMb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5T
aGlmdEtleSwgaW5NZXRhS2V5LCBpbkFsdEdyYXBoS2V5KTsKIH0KIAogLSAodm9pZClpbml0S2V5
Ym9hcmRFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2Fu
Y2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKXZpZXcga2V5
SWRlbnRpZmllcjooTlNTdHJpbmcgKilpbktleUlkZW50aWZpZXIga2V5TG9jYXRpb246KHVuc2ln
bmVkKWluS2V5TG9jYXRpb24gY3RybEtleTooQk9PTClpbkN0cmxLZXkgYWx0S2V5OihCT09MKWlu
QWx0S2V5IHNoaWZ0S2V5OihCT09MKWluU2hpZnRLZXkgbWV0YUtleTooQk9PTClpbk1ldGFLZXkK
IHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+
aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBjb3JlKHZpZXcp
LCBpbktleUlkZW50aWZpZXIsIGluS2V5TG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGlu
U2hpZnRLZXksIGluTWV0YUtleSk7CisgICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwg
Y2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBpbktleUlkZW50aWZp
ZXIsIGluS2V5TG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0
YUtleSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01Nb3VzZUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNl
RXZlbnQubW0KaW5kZXggN2M3ZTBkZGZmMTQyMTYxZWU0OGU2Nzc3MDI1ZTdmNzBlODUzYTgxMy4u
ZTUxNWQ4OTM1YzE3N2Q0NzEwOTRhODRjNWNmYjhkNjRkYjI5NDM4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KQEAgLTE0NSw3ICsxNDUsNyBAQCAt
ICh2b2lkKWluaXRNb3VzZUV2ZW50OihOU1N0cmluZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNh
bkJ1YmJsZSBjYW5jZWxhYmxlOihCTwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKICAgICBET01Ob2RlKiBpblJlbGF0ZWRUYXJnZXRPYmpDID0gaW5SZWxhdGVkVGFy
Z2V0OwogICAgIFdlYkNvcmU6Ok5vZGUqIGluUmVsYXRlZFRhcmdldE5vZGUgPSBjb3JlKGluUmVs
YXRlZFRhcmdldE9iakMpOwotICAgIElNUEwtPmluaXRNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgY29yZSh2aWV3KSwgZGV0YWlsLCBpblNjcmVlblgsIGluU2NyZWVuWSwg
aW5DbGllbnRYLCBpbkNsaWVudFksIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGlu
TWV0YUtleSwgaW5CdXR0b24sIGluUmVsYXRlZFRhcmdldE5vZGUpOworICAgIElNUEwtPmluaXRN
b3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2aWV3
KSwgZGV0YWlsLCBpblNjcmVlblgsIGluU2NyZWVuWSwgaW5DbGllbnRYLCBpbkNsaWVudFksIGlu
Q3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwgaW5CdXR0b24sIGluUmVs
YXRlZFRhcmdldE5vZGUpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTVRleHRFdmVudC5tbQppbmRleCAyODY3YmM4MDIzOTE2YTdlNjc4MGZhM2ViNzEyMGM5Yzkx
YWQyYTQyLi5kZmE3NjIwMjRiNTY2MjJjZTViMjk5MWRmMzEyZGZkNTM4NzBkMGUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0KQEAgLTUwLDcgKzUwLDcg
QEAgLSAoTlNTdHJpbmcgKilkYXRhCiAtICh2b2lkKWluaXRUZXh0RXZlbnQ6KE5TU3RyaW5nICop
dHlwZUFyZyBjYW5CdWJibGVBcmc6KEJPT0wpY2FuQnViYmxlQXJnIGNhbmNlbGFibGVBcmc6KEJP
T0wpY2FuY2VsYWJsZUFyZyB2aWV3QXJnOihET01BYnN0cmFjdFZpZXcgKil2aWV3QXJnIGRhdGFB
cmc6KE5TU3RyaW5nICopZGF0YUFyZwogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0VGV4dEV2ZW50KHR5cGVBcmcsIGNhbkJ1YmJsZUFy
ZywgY2FuY2VsYWJsZUFyZywgY29yZSh2aWV3QXJnKSwgZGF0YUFyZyk7CisgICAgSU1QTC0+aW5p
dFRleHRFdmVudCh0eXBlQXJnLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsIHRvV2luZG93
UHJveHkodmlld0FyZyksIGRhdGFBcmcpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01VSUV2ZW50Lm1tCmluZGV4IGE0NjRkYWNmYmY1MTI2NmJhOTJlNTk3NzE5Mjlk
ODYzMWYyZjE2NDAuLjNkYzk3YjM5Mzc4NDdkMGFjYjBlMGNkMmVhOTljOTFmZDEyNmY2NmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCkBAIC0xMDMsNyArMTAz
LDcgQEAgLSAoaW50KXdoaWNoCiAtICh2b2lkKWluaXRVSUV2ZW50OihOU1N0cmluZyAqKXR5cGUg
Y2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihCT09MKWNhbmNlbGFibGUgdmll
dzooRE9NQWJzdHJhY3RWaWV3ICopaW5WaWV3IGRldGFpbDooaW50KWluRGV0YWlsCiB7CiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmluaXRVSUV2
ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29yZShpblZpZXcpLCBpbkRldGFpbCk7
CisgICAgSU1QTC0+aW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0b1dp
bmRvd1Byb3h5KGluVmlldyksIGluRGV0YWlsKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NV2hlZWxFdmVudC5tbQppbmRleCA4ZjA1NjljYTZhM2Y5NThjNzQx
ZjZkODgzNThmZmZkMTYwYjE4YWM4Li5kZDRhNTdiMGYzMmI3N2I0MzBiNmRkOWNkNWIxNTIzNGU1
YTQzNGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NV2hlZWxF
dmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NV2hlZWxFdmVudC5t
bQpAQCAtOTYsNyArOTYsNyBAQCAtIChCT09MKWlzSG9yaXpvbnRhbAogLSAodm9pZClpbml0V2hl
ZWxFdmVudDooaW50KWluV2hlZWxEZWx0YVggd2hlZWxEZWx0YVk6KGludClpbldoZWVsRGVsdGFZ
IHZpZXc6KERPTUFic3RyYWN0VmlldyAqKXZpZXcgc2NyZWVuWDooaW50KXNjcmVlblggc2NyZWVu
WTooaW50KXNjcmVlblkgY2xpZW50WDooaW50KWNsaWVudFggY2xpZW50WTooaW50KWNsaWVudFkg
Y3RybEtleTooQk9PTCljdHJsS2V5IGFsdEtleTooQk9PTClhbHRLZXkgc2hpZnRLZXk6KEJPT0wp
c2hpZnRLZXkgbWV0YUtleTooQk9PTCltZXRhS2V5CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmluaXRXZWJLaXRXaGVlbEV2ZW50KGluV2hl
ZWxEZWx0YVgsIGluV2hlZWxEZWx0YVksIGNvcmUodmlldyksIHNjcmVlblgsIHNjcmVlblksIGNs
aWVudFgsIGNsaWVudFksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpOworICAg
IElNUEwtPmluaXRXZWJLaXRXaGVlbEV2ZW50KGluV2hlZWxEZWx0YVgsIGluV2hlZWxEZWx0YVks
IHRvV2luZG93UHJveHkodmlldyksIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVudFks
IGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpOwogfQogCiBAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKaW5kZXggMWI0M2RkOWY0Y2ExMzVi
MmQxYzRkNGM0NjlmODY4NTU1YzQ3ZTk2Ni4uYjI1MjYxZjdkZmNlMWI3Y2Y0NzFhOWQxZjIzY2Iw
ODdiMjU3N2EwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNs
YXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2VzLmNw
cApAQCAtODAyLDcgKzgwMiw3IEBAIEhSRVNVTFQgRE9NRG9jdW1lbnQ6OmdldENvbXB1dGVkU3R5
bGUoX0luX29wdF8gSURPTUVsZW1lbnQqIGVsdCwgX0luXyBCU1RSIHBzZXVkCiAgICAgaWYgKCFl
bGVtZW50KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgV2ViQ29yZTo6RE9NV2luZG93
KiBkdiA9IG1fZG9jdW1lbnQtPmRlZmF1bHRWaWV3KCk7CisgICAgYXV0byogZHYgPSBtX2RvY3Vt
ZW50LT5kb21XaW5kb3coKTsKICAgICBTdHJpbmcgcHNldWRvRWx0U3RyaW5nKHBzZXVkb0VsdCk7
CiAgICAgCiAgICAgaWYgKCFkdikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338973</attachid>
            <date>2018-04-26 22:38:51 -0700</date>
            <delta_ts>2018-04-26 22:40:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185022-20180426223850.patch</filename>
            <type>text/plain</type>
            <size>152303</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNmYmU3ZTk5YzEwNmQx
NzM1Nzc3MGZmMTQxMzkwZjdlODNmNmU2My4uN2E5MTUyMTZjNTM4N2EyY2MwNGNiODJkMmZmNTFm
NDY2NWFmMmY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAxOC0wNC0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94eSBp
bnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHVzaW5nIERPTVdpbmRvdyBpbiBhbGwgb2Ygb3Vy
IElETCBmaWxlcyBhbmQgdXNlIFdpbmRvd1Byb3h5IGFzCisgICAgICAgIHBlciB0aGVpciByZXNw
ZWN0aXZlIHNwZWNpZmljYXRpb25zLiBBcyBhIHJlc3VsdCwgdGhlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGFzIGFsc28gdXBkYXRlZCB0byB1c2UgV2luZG93UHJveHkgdHlwZSBpbnN0ZWFkIG9m
IERPTVdpbmRvdy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXaW5kb3dQcm94eTo6d2luZG93UHJveHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9XaW5kb3dQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eTo6
Z2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2luZG93UHJveHk6OmZyYW1lIGNvbnN0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChJc0J1aWx0aW5UeXBlKToK
KyAgICAgICAgKENvbXB1dGVJc0NhbGxiYWNrSW50ZXJmYWNlKToKKyAgICAgICAgKENvbXB1dGVJ
c0NhbGxiYWNrRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtOgorICAgICAgICAoQWRkVG9JbmNsdWRlc0ZvcklETFR5cGUpOgorICAgICAgICAo
R2V0QmFzZUlETFR5cGUpOgorICAgICAgICAoTmF0aXZlVG9KU1ZhbHVlRE9NQ29udmVydE5lZWRz
U3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kOUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kT3ZlcmxvYWREaXNwYXRjaGVyKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisgICAgICAgICogZG9tL0NvbXBvc2l0aW9uRXZl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRpb25FdmVudDo6Q29tcG9zaXRpb25F
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50Ojppbml0Q29tcG9zaXRp
b25FdmVudCk6CisgICAgICAgICogZG9tL0NvbXBvc2l0aW9uRXZlbnQuaDoKKyAgICAgICAgKiBk
b20vQ29tcG9zaXRpb25FdmVudC5pZGw6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkZWZhdWx0VmlldyBjb25zdCk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBk
b20vRG9jdW1lbnRUb3VjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRvdWNoOjpj
cmVhdGVUb3VjaCk6CisgICAgICAgICogZG9tL0RvY3VtZW50VG91Y2guaDoKKyAgICAgICAgKiBk
b20vRG9jdW1lbnRUb3VjaC5pZGw6CisgICAgICAgICogZG9tL0ZvY3VzRXZlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9jdXNFdmVudDo6Rm9jdXNFdmVudCk6CisgICAgICAgICogZG9tL0Zv
Y3VzRXZlbnQuaDoKKyAgICAgICAgKiBkb20vSW5wdXRFdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dEV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFdmVudDo6
SW5wdXRFdmVudCk6CisgICAgICAgICogZG9tL0lucHV0RXZlbnQuaDoKKyAgICAgICAgKiBkb20v
S2V5Ym9hcmRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlib2FyZEV2ZW50OjpLZXli
b2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXlib2FyZEV2ZW50Ojppbml0S2V5Ym9hcmRFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpLZXlib2FyZEV2ZW50OjpjaGFyQ29kZSBjb25zdCk6CisgICAgICAgICog
ZG9tL0tleWJvYXJkRXZlbnQuaDoKKyAgICAgICAgKiBkb20vS2V5Ym9hcmRFdmVudC5pZGw6Cisg
ICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQu
aWRsOgorICAgICAgICAqIGRvbS9Nb3VzZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
dXNlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50OjpNb3VzZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmspOgorICAgICAg
ICAqIGRvbS9Nb3VzZUV2ZW50Lmg6CisgICAgICAgICogZG9tL01vdXNlRXZlbnQuaWRsOgorICAg
ICAgICAqIGRvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3Vz
ZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TW91
c2VSZWxhdGVkRXZlbnQ6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZl
bnQ6OmZyYW1lVmlld0Zyb21XaW5kb3dQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJl
bGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVs
YXRlZEV2ZW50Ojpkb2N1bWVudFRvQWJzb2x1dGVTY2FsZUZhY3RvciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVBhZ2VMb2NhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6bG9jYXRpb25JblJvb3RWaWV3Q29vcmRp
bmF0ZXMgY29uc3QpOgorICAgICAgICAqIGRvbS9Nb3VzZVJlbGF0ZWRFdmVudC5oOgorICAgICAg
ICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKiBkb20vU2ltdWxhdGVkQ2xpY2suY3BwOgorICAg
ICAgICAqIGRvbS9UZXh0RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50OjpjcmVhdGVGb3JQbGFpblRleHRQ
YXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFz
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50OjpjcmVhdGVGb3JEcm9wKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRFdmVudDo6Y3JlYXRlRm9yRGljdGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRFdmVudDo6VGV4dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVu
dDo6aW5pdFRleHRFdmVudCk6CisgICAgICAgICogZG9tL1RleHRFdmVudC5oOgorICAgICAgICAq
IGRvbS9UZXh0RXZlbnQuaWRsOgorICAgICAgICAqIGRvbS9Ub3VjaEV2ZW50LmlkbDoKKyAgICAg
ICAgKiBkb20vVUlFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVSUV2ZW50OjpVSUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlVJRXZlbnQ6OmluaXRVSUV2ZW50KToKKyAgICAgICAgKiBk
b20vVUlFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VUlFdmVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlVJRXZlbnQ6OnZpZXcgY29uc3QpOgorICAgICAgICAqIGRvbS9VSUV2ZW50
LmlkbDoKKyAgICAgICAgKiBkb20vVUlFdmVudEluaXQuaDoKKyAgICAgICAgKiBkb20vVUlFdmVu
dEluaXQuaWRsOgorICAgICAgICAqIGRvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmg6CisgICAgICAg
IChXZWJDb3JlOjpVSUV2ZW50V2l0aEtleVN0YXRlOjpVSUV2ZW50V2l0aEtleVN0YXRlKToKKyAg
ICAgICAgKiBkb20vV2hlZWxFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50
OjpXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50Ojppbml0V2ViS2l0V2hlZWxFdmVudCk6CisgICAg
ICAgICogZG9tL1doZWVsRXZlbnQuaDoKKyAgICAgICAgKiBkb20vV2hlZWxFdmVudC5pZGw6Cisg
ICAgICAgICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Omluc2VydERpY3RhdGVkVGV4dCk6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpwYXN0ZUFzUGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVBc0Zy
YWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAg
ICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1
bWVudDo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudC5oOgorICAgICAg
ICAqIGh0bWwvSFRNTERvY3VtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1l
bnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVudFdpbmRvdyBjb25zdCk6
CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0
RWxlbWVudDo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0
bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5j
cHA6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9z
dE1lc3NhZ2VUaW1lcjo6UG9zdE1lc3NhZ2VUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpQb3N0
TWVzc2FnZVRpbWVyOjpldmVudCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnBvc3RN
ZXNzYWdlKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1dEV2ZW50Rm9yKToKKyAgICAg
ICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmhhbmRsZVRleHRJbnB1dEV2ZW50KToKKwogMjAxOC0wNC0yMyAgTWljaGFlbCBDYXRhbnph
cm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSBSZW1vdmUg
V2xVbmlxdWVQdHI8d2xfZGlzcGxheT4gZm9vdGd1bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CmluZGV4IGYzMDg5NWFiYWY2NzAwMjA3NDJkNGVmYzAzOTAxOGRhMjc3ZTc2YWYuLjZhZDUyNWU5
ODEwZWEwMjY3MmZlMWUwOTM3NTYxMWI4ZjM4NjQwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0wNC0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94eSBpbnN0ZWFkIG9mIERPTVdpbmRv
dyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIERPTS9ET01BYnN0cmFjdFZpZXcubW06CisgICAgICAgIChraXQpOgorICAgICAgICAo
dG9XaW5kb3dQcm94eSk6CisgICAgICAgICogRE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmg6
CisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOgorICAgICAgICAoLVtET01Eb2N1bWVudCBk
ZWZhdWx0Vmlld10pOgorICAgICAgICAoLVtET01Eb2N1bWVudCBnZXRDb21wdXRlZFN0eWxlOnBz
ZXVkb0VsZW1lbnQ6XSk6CisgICAgICAgICgtW0RPTURvY3VtZW50IGdldE1hdGNoZWRDU1NSdWxl
czpwc2V1ZG9FbGVtZW50OmF1dGhvck9ubHk6XSk6CisgICAgICAgICogRE9NL0RPTUhUTUxGcmFt
ZUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUhUTUxGcmFtZUVsZW1lbnQgY29udGVudFdpbmRv
d10pOgorICAgICAgICAqIERPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbToKKyAgICAgICAgKC1b
RE9NSFRNTElGcmFtZUVsZW1lbnQgY29udGVudFdpbmRvd10pOgorICAgICAgICAqIERPTS9ET01L
ZXlib2FyZEV2ZW50Lm1tOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2Fy
ZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjpsb2NhdGlvbjpj
dHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdyYXBoS2V5Ol0pOgorICAgICAgICAo
LVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxl
OnZpZXc6a2V5SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRh
S2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNh
bkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjprZXlMb2NhdGlvbjpjdHJsS2V5
OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdyYXBoS2V5Ol0pOgorICAgICAgICAoLVtET01L
ZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6
a2V5SWRlbnRpZmllcjprZXlMb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5
Ol0pOgorICAgICAgICAqIERPTS9ET01Nb3VzZUV2ZW50Lm1tOgorICAgICAgICAoLVtET01Nb3Vz
ZUV2ZW50IGluaXRNb3VzZUV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6ZGV0YWlsOnNj
cmVlblg6c2NyZWVuWTpjbGllbnRYOmNsaWVudFk6Y3RybEtleTphbHRLZXk6c2hpZnRLZXk6bWV0
YUtleTpidXR0b246cmVsYXRlZFRhcmdldDpdKToKKyAgICAgICAgKiBET00vRE9NVGV4dEV2ZW50
Lm1tOgorICAgICAgICAoLVtET01UZXh0RXZlbnQgaW5pdFRleHRFdmVudDpjYW5CdWJibGVBcmc6
Y2FuY2VsYWJsZUFyZzp2aWV3QXJnOmRhdGFBcmc6XSk6CisgICAgICAgICogRE9NL0RPTVVJRXZl
bnQubW06CisgICAgICAgICgtW0RPTVVJRXZlbnQgdmlld10pOgorICAgICAgICAoLVtET01VSUV2
ZW50IGluaXRVSUV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6ZGV0YWlsOl0pOgorICAg
ICAgICAqIERPTS9ET01XaGVlbEV2ZW50Lm1tOgorICAgICAgICAoLVtET01XaGVlbEV2ZW50IGlu
aXRXaGVlbEV2ZW50OndoZWVsRGVsdGFZOnZpZXc6c2NyZWVuWDpzY3JlZW5ZOmNsaWVudFg6Y2xp
ZW50WTpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorCiAyMDE4LTA0LTIzICBD
b21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMjMwOTIxLCByMjMwOTIzLCByMjMwOTI0LCByMjMwOTMyLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGRkZTgwMDhkYzE4N2YzMDI0OTk1YjJhNGJjN2Q5
Y2QwY2E5ZWZjNGIuLmY5YjU5MDBmMTk5ZTU3Yzc0YWJkNDIzYTkzMzFhZGQ4ZjQ0N2M4ZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0wNC0yNiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94
eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVDbGFzc2VzLmNwcDoKKyAgICAgICAg
KERPTURvY3VtZW50OjpnZXRDb21wdXRlZFN0eWxlKToKKwogMjAxOC0wNC0yMyAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjIzMDkyMSwgcjIzMDkyMywgcjIzMDkyNCwgcjIzMDkzMiwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMGY2NDZl
Yzc4ODYwMDlkMDgwYjdmY2U4NzJmOTBjMzdjMGJjNjZmLi4wMTE0ZjIwNThmYWJhOWEyZGUwMTI4
NTk3MGE2NjBhZDc0OTQ5ZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzY1LDcgKzIzNjUsNiBAQAogCQk4M0IyRDE3NTFC
OEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOTU5RTExQjhCQzIyQjAwNEQ5Mzg1IC8qIE5h
dGl2ZU5vZGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVzdFRy
YWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
Qjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQjk2ODdCMTlG
OEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAv
KiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLzsgfTsKLQkJODNCOUU3MEIyMDg2QkE0MzAwRTVE
NzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I5RTcwOTIwODZCQTI3MDBFNUQ3NTYgLyogSlNET01D
b252ZXJ0V2luZG93UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4M0JCNUM4ODFENUQ2RjQ1MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHND
b2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmgg
Ki87IH07CiAJCTgzQzA1QTVCMUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1
bmN0aW9ucy5oICovOyB9OwogCQk4M0MxRDQyNTE3OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNl
Z0FyY0Ficy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODNDMUQ0MTMxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdBcmNBYnMuaCAqLzsgfTsKQEAg
LTk4NzcsNyArOTg3Niw2IEBACiAJCTgzQjc0RUYyMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxp
dmVSZXF1ZXN0VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0I5Njg3OTE5RjhBQjgzMDA0RUY3
QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk4M0I5RTcwOTIwODZCQTI3MDBFNUQ3NTYgLyogSlNET01Db252ZXJ0V2luZG93UHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Db252ZXJ0V2luZG93UHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCQjVDODcxRDVENkYzQTAwNUE3
MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODNDMDVBNTgxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9y
dGhhbmRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlUHJv
cGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE5ODM1LDcgKzE5ODMzLDYgQEAKIAkJCQk3QzhFMzRBQTFFNEEzMzhFMDA1NENFMjMgLyogSlNE
T01Db252ZXJ0VmFyaWFkaWMuaCAqLywKIAkJCQk3Q0JBNUJBNjFGMEI0QkRFMDAzNEQ3NDUgLyog
SlNET01Db252ZXJ0V2ViR0wuY3BwICovLAogCQkJCTdDOEUzNEFCMUU0QTMzOEUwMDU0Q0UyMyAv
KiBKU0RPTUNvbnZlcnRXZWJHTC5oICovLAotCQkJCTgzQjlFNzA5MjA4NkJBMjcwMEU1RDc1NiAv
KiBKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oICovLAogCQkJCTdDOEUzNEFDMUU0QTMzOEUwMDU0
Q0UyMyAvKiBKU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIuaCAqLywKIAkJCSk7CiAJCQluYW1l
ID0gQ29udmVyc2lvbnM7CkBAIC0yODQxNiw3ICsyODQxMyw2IEBACiAJCQkJN0M4RTM0QzQxRTRB
MzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFVuaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
QzhFMzRDNTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0VmFyaWFkaWMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdDOEUzNEM2MUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRXZWJH
TC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODNCOUU3MEIyMDg2QkE0MzAwRTVENzU2IC8qIEpTRE9N
Q29udmVydFdpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRDNzFFNEEzM0Iw
MDA1NENFMjMgLyogSlNET01Db252ZXJ0WFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGQzlFMEU0RDE2NDE5QzFFMDAzOTJCRTMgLyogSlNET01DU1NOYW1lc3BhY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNjBEN0MxMEQyOUE0NjMwMEI5OTE4RiAvKiBKU0RPTUV4Y2VwdGlv
bi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9J
RExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAppbmRleCA1ZmU3
N2U4M2YyM2RhMmIxYjQyMGQxZTM5MmRlYTlkYzA3ZmIxYzgwLi44MDU3ZGZhMTE1ODg4ZDNkYjRh
MGYwYmUyNmI0YzY2MmI2OWM3ODdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKQEAg
LTI3NCw3ICsyNzQsNiBAQCBzdHJ1Y3QgSURMU2NoZWR1bGVkQWN0aW9uIDogSURMVHlwZTxzdGQ6
OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPj4geyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IElETFdyYXBwZXI8VD4geyB9OwogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETEV2ZW50TGlzdGVuZXIgOiBJRExXcmFwcGVyPFQ+
IHsgfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExYUGF0aE5TUmVzb2x2ZXIgOiBJ
RExXcmFwcGVyPFQ+IHsgfTsKLXN0cnVjdCBJRExXaW5kb3dQcm94eSA6IElETFdyYXBwZXI8SlNX
aW5kb3dQcm94eT4geyB9OwogCiBzdHJ1Y3QgSURMSURCS2V5IDogSURMV3JhcHBlcjxJREJLZXk+
IHsgfTsKIHN0cnVjdCBJRExJREJLZXlEYXRhIDogSURMV3JhcHBlcjxJREJLZXlEYXRhPiB7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5k
b3dQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2luZG93
UHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJjMWZmNDgxOTJkZTVjMjA4
MmRiN2IzZGUwYWMzYmFhNGIzNGM3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5k
b3dQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZl
cnRCYXNlLmgiCi0jaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTQ29udmVydGVyPElETFdpbmRvd1Byb3h5PiB7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUgPSB0cnVlOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9IGZhbHNlOwotCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252ZXJ0KEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgVSYmIHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRl
LCBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsKLSAgICB9Ci19OwotCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCmluZGV4IDE4ODY3MWU0OWIxZjE0MzE1
Yzk4Njc3MWQwN2JhNmY4M2UxYWJkMjcuLmE0YjE4MDVjNjUyZTIzMjBiZmQ3OWEwOTc5Mjc5YWNj
MDg3YjY5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHku
Y3BwCkBAIC0xMTksNiArMTE5LDEyIEBAIHZvaWQgSlNXaW5kb3dQcm94eTo6c2V0V2luZG93KEFi
c3RyYWN0RE9NV2luZG93JiBkb21XaW5kb3cpCiAgICAgQVNTRVJUKHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkgPT0gd2luZG93KTsKIH0KIAorV2luZG93UHJveHkqIEpTV2luZG93UHJveHk6Ondp
bmRvd1Byb3h5KCkgY29uc3QKK3sKKyAgICBhdXRvJiB3aW5kb3cgPSB3cmFwcGVkKCk7CisgICAg
cmV0dXJuIHdpbmRvdy5mcmFtZSgpID8gJndpbmRvdy5mcmFtZSgpLT53aW5kb3dQcm94eSgpIDog
bnVsbHB0cjsKK30KKwogdm9pZCBKU1dpbmRvd1Byb3h5OjphdHRhY2hEZWJ1Z2dlcihKU0M6OkRl
YnVnZ2VyKiBkZWJ1Z2dlcikKIHsKICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB3aW5kb3coKTsK
QEAgLTEzOCwxMiArMTQ0LDYgQEAgQWJzdHJhY3RET01XaW5kb3cmIEpTV2luZG93UHJveHk6Ondy
YXBwZWQoKSBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4od2luZG93
KS0+d3JhcHBlZCgpOwogfQogCi1BYnN0cmFjdERPTVdpbmRvdyogSlNXaW5kb3dQcm94eTo6dG9X
cmFwcGVkKFZNJiB2bSwgSlNPYmplY3QqIHZhbHVlKQotewotICAgIGF1dG8qIHdyYXBwZXIgPSBq
c0R5bmFtaWNDYXN0PEpTV2luZG93UHJveHkqPih2bSwgdmFsdWUpOwotICAgIHJldHVybiB3cmFw
cGVyID8gJndyYXBwZXItPndyYXBwZWQoKSA6IG51bGxwdHI7Ci19Ci0KIEpTVmFsdWUgdG9KUyhF
eGVjU3RhdGUqIHN0YXRlLCBXaW5kb3dQcm94eSYgd2luZG93UHJveHkpCiB7CiAgICAgcmV0dXJu
ICZ3aW5kb3dQcm94eS5qc1dpbmRvd1Byb3h5KGN1cnJlbnRXb3JsZCgqc3RhdGUpKTsKQEAgLTE1
NCw0ICsxNTQsMTQgQEAgSlNXaW5kb3dQcm94eSYgdG9KU1dpbmRvd1Byb3h5KFdpbmRvd1Byb3h5
JiB3aW5kb3dQcm94eSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKICAgICByZXR1cm4gd2luZG93
UHJveHkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiB9CiAKK1dpbmRvd1Byb3h5KiBKU1dpbmRvd1By
b3h5Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmICghdmFsdWUu
aXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgSlNPYmplY3QqIG9iamVj
dCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBpZiAob2JqZWN0LT5pbmhlcml0czxKU1dpbmRvd1By
b3h5Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNXaW5kb3dQcm94eSo+KG9iamVjdCkt
PndpbmRvd1Byb3h5KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93
UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaAppbmRl
eCAxODVhNTQ1NzhiZjgxNzdjZmNhMTc1YzZlNGIxMWY0NzQ4YTQwOTQ4Li5lNmYxNzFjNjg2OTZh
OTFhMWRjZDQxZDIzODFjMDRjZTBkMzQ4Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXaW5kb3dQcm94eS5oCkBAIC0yOCw3ICsyOCw5IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cu
aCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
UHJveHkuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zOSw3ICs0MSw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJhY3RET01XaW5kb3c7CiBjbGFzcyBBYnN0cmFjdEZyYW1l
OwotY2xhc3MgV2luZG93UHJveHk7CiAKIGNsYXNzIEpTV2luZG93UHJveHkgZmluYWwgOiBwdWJs
aWMgSlNDOjpKU1Byb3h5IHsKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU1Byb3h5OwpAQCAtNDks
MTIgKzUwLDE0IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEpTRE9NR2xv
YmFsT2JqZWN0KiB3aW5kb3coKSBjb25zdCB7IHJldHVybiBKU0M6OmpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KHRhcmdldCgpKTsgfQorICAgIEpTRE9NR2xvYmFsT2JqZWN0KiB3aW5kb3coKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHRhcmdldCgpKTsg
fQogICAgIHZvaWQgc2V0V2luZG93KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAg
IHZvaWQgc2V0V2luZG93KEFic3RyYWN0RE9NV2luZG93Jik7CiAKKyAgICBXaW5kb3dQcm94eSog
d2luZG93UHJveHkoKSBjb25zdDsKKwogICAgIEFic3RyYWN0RE9NV2luZG93JiB3cmFwcGVkKCkg
Y29uc3Q7Ci0gICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIEFic3RyYWN0RE9NV2luZG93KiB0b1dy
YXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNPYmplY3QqKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBP
UlQgV2luZG93UHJveHkqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKIAogICAg
IERPTVdyYXBwZXJXb3JsZCYgd29ybGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CiAKQEAgLTcxLDEw
ICs3NCwxNiBAQCBwcml2YXRlOgogLy8gSXQgaXMsIGhvd2V2ZXIsIHN0cm9uZ2x5IG93bmVkIGJ5
IEFic3RyYWN0RnJhbWUgdmlhIGl0cyBXaW5kb3dQcm94eSwgc28gd2UgY2FuIGdldCBvbmUgZnJv
bSBhIFdpbmRvd1Byb3h5LgogV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqLCBXaW5kb3dQcm94eSYpOwogaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgV2luZG93UHJveHkqIHdpbmRvd1Byb3h5KSB7IHJldHVybiB3aW5k
b3dQcm94eSA/IHRvSlMoc3RhdGUsICp3aW5kb3dQcm94eSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1p
bmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBSZWZQ
dHI8V2luZG93UHJveHk+JiB3aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwgd2luZG93
UHJveHkuZ2V0KCkpOyB9CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCosIFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSkgeyBy
ZXR1cm4gdG9KUyhzdGF0ZSwgd2luZG93UHJveHkpOyB9CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBXaW5kb3dQcm94eSogd2luZG93UHJveHkpIHsgcmV0dXJuIHdpbmRvd1Byb3h5ID8gdG9KUyhz
dGF0ZSwgZ2xvYmFsT2JqZWN0LCAqd2luZG93UHJveHkpIDogSlNDOjpqc051bGwoKTsgfQogCiBK
U1dpbmRvd1Byb3h5JiB0b0pTV2luZG93UHJveHkoV2luZG93UHJveHkmLCBET01XcmFwcGVyV29y
bGQmKTsKIGlubGluZSBKU1dpbmRvd1Byb3h5KiB0b0pTV2luZG93UHJveHkoV2luZG93UHJveHkq
IHdpbmRvd1Byb3h5LCBET01XcmFwcGVyV29ybGQmIHdvcmxkKSB7IHJldHVybiB3aW5kb3dQcm94
eSA/ICZ0b0pTV2luZG93UHJveHkoKndpbmRvd1Byb3h5LCB3b3JsZCkgOiBudWxscHRyOyB9CiAK
IAordGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFdpbmRvd1By
b3h5PiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNXaW5kb3dQcm94eTsKKyAgICB1c2lu
ZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gV2luZG93UHJveHkqOworfTsKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwCmlu
ZGV4IDhlOGY1MTM1M2VkMWY3YTBiNWIzZjkzMDRjZjgxYzhhYWNiNzViNWUuLjkwMThkMjNkMjNj
YTFlOTQ3YWVkMjk5M2QxODRmOTEwMmRiNzE4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XaW5kb3dQcm94eS5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDb21tb25W
TS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCisjaW5j
bHVkZSAiSlNXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdl
Q29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtOTEsNiArOTIsMTEg
QEAgVmVjdG9yPEpTQzo6U3Ryb25nPEpTV2luZG93UHJveHk+PiBXaW5kb3dQcm94eTo6anNXaW5k
b3dQcm94aWVzQXNWZWN0b3IoKSBjb25zdAogICAgIHJldHVybiBjb3B5VG9WZWN0b3IobV9qc1dp
bmRvd1Byb3hpZXMudmFsdWVzKCkpOwogfQogCitKU0RPTUdsb2JhbE9iamVjdCogV2luZG93UHJv
eHk6Omdsb2JhbE9iamVjdChET01XcmFwcGVyV29ybGQmIHdvcmxkKQoreworICAgIHJldHVybiBq
c1dpbmRvd1Byb3h5KHdvcmxkKS53aW5kb3coKTsKK30KKwogSlNXaW5kb3dQcm94eSYgV2luZG93
UHJveHk6OmNyZWF0ZUpTV2luZG93UHJveHlXaXRoSW5pdGlhbGl6ZWRTY3JpcHQoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh3b3JsZC52bSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oCmluZGV4IDc3NzIyOTgzYjBhMzIy
Y2QwNjdkZmI1MDYyZGEwNzc3YTY4ZTY1ZjguLjExZjAyMjQ4YjdhY2FjNWU1ZmM3OWZmNDM0ZTE1
NDRjOGZiNTIwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRv
d1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaApA
QCAtMjAsNyArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTV2luZG93UHJv
eHkuaCIKKyNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC0zMCw3ICszMCwx
MCBAQCBjbGFzcyBEZWJ1Z2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBYnN0
cmFjdERPTVdpbmRvdzsKIGNsYXNzIEFic3RyYWN0RnJhbWU7CitjbGFzcyBKU0RPTUdsb2JhbE9i
amVjdDsKK2NsYXNzIEpTV2luZG93UHJveHk7CiAKIGNsYXNzIFdpbmRvd1Byb3h5IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQwLDYgKzQzLDggQEAgcHVibGljOgogICAgIGV4
cGxpY2l0IFdpbmRvd1Byb3h5KEFic3RyYWN0RnJhbWUmKTsKICAgICB+V2luZG93UHJveHkoKTsK
IAorICAgIEFic3RyYWN0RnJhbWUmIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQor
CiAgICAgdm9pZCBkZXN0cm95SlNXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmKTsKIAogICAg
IFByb3h5TWFwOjpWYWx1ZXNDb25zdEl0ZXJhdG9yUmFuZ2UganNXaW5kb3dQcm94aWVzKCkgY29u
c3QgeyByZXR1cm4gbV9qc1dpbmRvd1Byb3hpZXMudmFsdWVzKCk7IH0KQEAgLTYzLDEwICs2OCw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIChpdCAhPSBtX2pzV2luZG93UHJveGllcy5lbmQo
KSkgPyBpdC0+dmFsdWUuZ2V0KCkgOiBudWxscHRyOwogICAgIH0KIAotICAgIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBqc1dpbmRvd1Byb3h5KHdvcmxkKS53aW5kb3coKTsKLSAgICB9CisgICAgV0VC
Q09SRV9FWFBPUlQgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChET01XcmFwcGVyV29y
bGQmKTsKIAogICAgIHZvaWQgY2xlYXJKU1dpbmRvd1Byb3hpZXNOb3RNYXRjaGluZ0RPTVdpbmRv
dyhBYnN0cmFjdERPTVdpbmRvdyosIGJvb2wgZ29pbmdJbnRvUGFnZUNhY2hlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IDk1
MjQyOWEwZTQ5Nzc0YmFkMjJjMWU1OGViYjJlNGVkZGJhZDNiNjMuLjJmY2ZlZTNhN2FhOGYyMmYy
NmViZGRiNmE0ZTI4ZmEwMzhiMmY0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTg5MSw3ICs4OTEsNiBAQCBzdWIgSXNCdWls
dGluVHlwZQogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIi
OwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJhbnkiOwogICAgIHJldHVybiAxIGlm
ICR0eXBlLT5uYW1lIGVxICJvYmplY3QiOwotICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVx
ICJXaW5kb3dQcm94eSI7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTEwMDEsNiArMTAwMCw3IEBA
IHN1YiBDb21wdXRlSXNDYWxsYmFja0ludGVyZmFjZQogICAgIGFzc2VydCgiTm90IGEgdHlwZSIp
IGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5sZXNzICRvYmpl
Y3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUg
ZXEgIldpbmRvd1Byb3h5IjsKIAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1lOwogICAg
IG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlwZU5hbWUpIG9y
IGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlTmFt
ZVwiIVxuIik7CkBAIC0xMDM4LDYgKzEwMzgsNyBAQCBzdWIgQ29tcHV0ZUlzQ2FsbGJhY2tGdW5j
dGlvbgogICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUi
OwogCiAgICAgcmV0dXJuIDAgdW5sZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7
CisgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsKIAogICAgIG15
ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURM
RmlsZUZvckludGVyZmFjZSgkdHlwZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURM
IGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlTmFtZVwiIVxuIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDYyNmE5ZjBi
MmQ2ZjA0M2NmOTJiZGYzMmYyOTYyODkyNjExNmU1ZTQuLjMwYTM3NGMyODI0ZmEyNjA4MjQyYWEz
ODcxMDk4NDIwMmI1ZDBlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00MjEsMTMgKzQyMSw2IEBAIHN1YiBBZGRUb0lu
Y2x1ZGVzRm9ySURMVHlwZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCR0eXBl
LT5uYW1lIGVxICJXaW5kb3dQcm94eSIpIHsKLSAgICAgICAgQWRkVG9JbmNsdWRlcygiV2luZG93
UHJveHkuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAgQWRkVG9JbmNs
dWRlcygiSlNXaW5kb3dQcm94eS5oIiwgJGluY2x1ZGVzUmVmLCAkY29uZGl0aW9uYWwpOwotICAg
ICAgICBBZGRUb0luY2x1ZGVzKCJKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIiwgJGluY2x1ZGVz
UmVmLCAkY29uZGl0aW9uYWwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7CiAgICAgICAgIEFkZFRvSW5jbHVk
ZXMoIkpTRE9NQ29udmVydFN0cmluZ3MuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtNjM5Myw3ICs2Mzg2LDYgQEAgc3ViIEdldEJhc2VJRExUeXBl
CiAgICAgICAgICJKU09OIiA9PiAiSURMSlNPTiIsCiAgICAgICAgICJTY2hlZHVsZWRBY3Rpb24i
ID0+ICJJRExTY2hlZHVsZWRBY3Rpb24iLAogICAgICAgICAiU2VyaWFsaXplZFNjcmlwdFZhbHVl
IiA9PiAiSURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4iLAot
ICAgICAgICAiV2luZG93UHJveHkiID0+ICJJRExXaW5kb3dQcm94eSIsCiAgICAgICAgICJYUGF0
aE5TUmVzb2x2ZXIiID0+ICJJRExYUGF0aE5TUmVzb2x2ZXI8WFBhdGhOU1Jlc29sdmVyPiIsCiAg
ICAgKTsKIApAQCAtNjU1NCw3ICs2NTQ2LDYgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZURPTUNvbnZl
cnROZWVkc1N0YXRlCiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIkpTT04iOwogICAg
IHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiOwogICAg
IHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwotICAgIHJldHVy
biAxIGlmICR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAgICAgCiAgICAgcmV0dXJuIDA7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCmluZGV4IGJhNDViYjk4ZjIxYTYzMzkwOWQyYmU4ZTBhMWZlMmRjNzI2YTM0
NWYuLmMwNDY2YzI2NmI3MzdmNmM4ODVkMmFhZmQwNWI1ZjE2ZjY4MmQ1MDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CkBAIC01NSw3ICs1NSw2IEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRl
ICJKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCIKICNpbmNsdWRlICJKU0RPTVN0cmlu
Z0xpc3QuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93
QmFzZS5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNEb2N1
bWVudC5oIgpAQCAtNjk1Nyw3ICs2OTU2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDlCb2QKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8gd2luZG93ID0g
Y29udmVydDxJRExJbnRlcmZhY2U8RE9NV2luZG93Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgIndpbmRvdyIs
ICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiRE9NV2luZG93Iik7IH0pOworICAg
IGF1dG8gd2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8V2luZG93UHJveHk+Pigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNj
b3BlLCAwLCAid2luZG93IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJXaW5k
b3dQcm94eSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqd2luZG93KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNzAyOSw3ICs3MDI4LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZE92ZXIKICAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2Qm9keShzdGF0ZSwgY2FzdGVkVGhpcywg
dGhyb3dTY29wZSk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09iamVjdCgpICYm
IGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNUZXN0T2JqPih2bSkpCiAg
ICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kOEJvZHkoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwotICAgICAgICBpZiAoZGlz
dGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiAoYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcp
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkgfHwgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdB
cmcpLT5pbmhlcml0czxKU0RPTVdpbmRvdz4odm0pKSkKKyAgICAgICAgaWYgKGRpc3Rpbmd1aXNo
aW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0
czxKU1dpbmRvd1Byb3h5Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOUJvZHkoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93
U2NvcGUpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiBhc09i
amVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzPEpTQmxvYj4odm0pKQogICAgICAgICAg
ICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEzQm9k
eShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggYzgzZWVlZWRiZjQxNjNmODMy
YmNkMjUzZWMwNTc1Njg0NmVlZDY4NC4uNzFkZGZjNDg5ZWQyZDVkYTI1NmZiNWM0MzBiOTMyZWJk
YzRmODcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbApAQCAtMjg2LDcgKzI4Niw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGln
aCIsICJraW5kYS1sb3ciIH07CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmlu
Z0xpc3Q/IGxpc3RBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChzZXF1ZW5jZTxE
T01TdHJpbmc+PyBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFRlc3RP
Ymogb2JqQXJnKTsKLSAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoRE9NV2luZG93IHdpbmRv
dyk7CisgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFdpbmRvd1Byb3h5IHdpbmRvdyk7CiAg
ICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKHNlcXVlbmNlPERPTVN0cmluZz4gYXJyYXlBcmcp
OwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChzZXF1ZW5jZTx1bnNpZ25lZCBsb25nPiBh
cnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmluZyBzdHJBcmcp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCmluZGV4IDBlMzhhNjcxOGNk
MWRhZDJlNzkwMjhiODkwMDU2YTZmY2I2NDJjOTAuLjAwN2FmN2Q3MjRmNWMzZTRhMGEzNjExMjU2
NmM0ODJlZDZmZDU5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlv
bkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAK
QEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb21wb3NpdGlvbkV2ZW50
OjpDb21wb3NpdGlvbkV2ZW50KCkgPSBkZWZhdWx0OwogCi1Db21wb3NpdGlvbkV2ZW50OjpDb21w
b3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRE9NV2luZG93KiB2aWV3LCBj
b25zdCBTdHJpbmcmIGRhdGEpCi0gICAgOiBVSUV2ZW50KHR5cGUsIHRydWUsIHRydWUsIHZpZXcs
IDApCitDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkK
KyAgICA6IFVJRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCkKICAgICAs
IG1fZGF0YShkYXRhKQogewogfQpAQCAtNDUsMTIgKzQ1LDEyIEBAIENvbXBvc2l0aW9uRXZlbnQ6
OkNvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBp
bml0aWFsCiAKIENvbXBvc2l0aW9uRXZlbnQ6On5Db21wb3NpdGlvbkV2ZW50KCkgPSBkZWZhdWx0
OwogCi12b2lkIENvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2lu
ZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCit2b2lkIENvbXBvc2l0aW9uRXZlbnQ6Omlu
aXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0
cmluZyYgZGF0YSkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3
LCAwKTsKKyAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1v
dmUodmlldyksIDApOwogCiAgICAgbV9kYXRhID0gZGF0YTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29t
cG9zaXRpb25FdmVudC5oCmluZGV4IDhmZjAyZWM5Njk3NzhiODg1YTYzMTcwMjRjOTU3NDc2ZTAy
MWIyYTYuLjNiMWM0NmQ2MzVlY2FmNmNkMDkxOTA5OGY1MDhmYzQxZTY0Y2ViY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENvbXBvc2l0aW9uRXZlbnQgZmluYWwgOiBwdWJsaWMgVUlFdmVu
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0
YSkKKyAgICBzdGF0aWMgUmVmPENvbXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRh
dGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21wb3NpdGlvbkV2ZW50
KHR5cGUsIHZpZXcsIGRhdGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29tcG9z
aXRpb25FdmVudCh0eXBlLCBXVEZNb3ZlKHZpZXcpLCBkYXRhKSk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBAIC01Myw3ICs1
Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbXBvc2l0aW9uRXZlbnQoKTsKIAotICAg
IHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRh
dGEpOworICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+
JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAKICAgICBTdHJpbmcgZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YTsgfQogCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBDb21wb3NpdGlvbkV2ZW50KCk7Ci0gICAgQ29tcG9zaXRpb25FdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYpOworICAgIENvbXBvc2l0aW9u
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNv
bnN0IFN0cmluZyYpOwogICAgIENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJvb2wgaXNDb21wb3NpdGlvbkV2
ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29t
cG9zaXRpb25FdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5p
ZGwKaW5kZXggZDg3MjQwODgzZTI3ZDNiMzQ1ODUzOWViOTIwZjRkM2YyODcxNjZjNC4uMjBhYWM3
ZWE0NzcwZDU2NTllZDQwOTEwZDdhYTc5NTA4ZTY2MTgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NpdGlvbkV2ZW50LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIHZvaWQgaW5pdENvbXBv
c2l0aW9uRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZpbmVkIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlQXJn
ID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBib29sZWFu
IGNhbmNlbGFibGVBcmcgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
dGlvbmFsIERPTVdpbmRvdz8gdmlld0FyZyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlld0FyZyA9IG51bGwsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBET01TdHJpbmcgZGF0YUFyZyA9ICJ1bmRlZmlu
ZWQiKTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDg2ZjgzZTcyNjQyM2FjNDU0
MzVkMzJiZWYwNDk0ZTk5NDllMDU0OTkuLjdlN2VkYTAxNzcyZDRhOGJjOGJmMTYxMDViYzQ1ZTI1
ZmRiODIwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDI4MCw2ICs0MjgwLDEzIEBA
IHZvaWQgRG9jdW1lbnQ6OnRha2VET01XaW5kb3dGcm9tKERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICBBU1NFUlQobV9kb21XaW5kb3ctPmZyYW1lKCkgPT0gbV9mcmFtZSk7CiB9CiAKK1dpbmRvd1By
b3h5KiBEb2N1bWVudDo6d2luZG93UHJveHkoKSBjb25zdAoreworICAgIGlmICghbV9mcmFtZSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZtX2ZyYW1lLT53aW5kb3dQcm94
eSgpOworfQorCiBEb2N1bWVudCYgRG9jdW1lbnQ6OmNvbnRleHREb2N1bWVudCgpIGNvbnN0CiB7
CiAgICAgaWYgKG1fY29udGV4dERvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBhNGZi
MDJmOWUxYmNiZDQwMGIwY2M4NjUyYWJkNDA0ZjAxYzQ1OTVmLi5jZTM3ZjM3MjE3ODMzNjc1N2E3
N2U1MGY0ZWJkYzgyNDA2ZTNlMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNzk5LDcgKzc5
OSw3IEBAIHB1YmxpYzoKIAogICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29uc3QgeyByZXR1
cm4gbV9kb21XaW5kb3cuZ2V0KCk7IH0KICAgICAvLyBJbiBET00gTGV2ZWwgMiwgdGhlIERvY3Vt
ZW50J3MgRE9NV2luZG93IGlzIGNhbGxlZCB0aGUgZGVmYXVsdFZpZXcuCi0gICAgRE9NV2luZG93
KiBkZWZhdWx0VmlldygpIGNvbnN0IHsgcmV0dXJuIGRvbVdpbmRvdygpOyB9IAorICAgIFdFQkNP
UkVfRVhQT1JUIFdpbmRvd1Byb3h5KiB3aW5kb3dQcm94eSgpIGNvbnN0OwogCiAgICAgRG9jdW1l
bnQmIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4dERvY3VtZW50
KERvY3VtZW50JiBkb2N1bWVudCkgeyBtX2NvbnRleHREb2N1bWVudCA9IGRvY3VtZW50LmNyZWF0
ZVdlYWtQdHIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXggMmQ1YmFhZDhjNjA2NDRk
YTg5ZDEwN2ZkZGUxODI4Y2Q4YTQ5ZDgyYi4uNDEzZTUzZTIxNmZhNDFkM2EzZGY4MmUzMjI5ZWRh
Y2NiYjE0ZDVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0xMTMsNyArMTEzLDcgQEAg
dHlwZWRlZiAoCiAgICAgW0NFUmVhY3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJsZURvY3VtZW50
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB3cml0ZWxuKERPTVN0cmluZy4uLiB0ZXh0KTsKIAog
ICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24uCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVdpbmRv
dz8gZGVmYXVsdFZpZXc7CisgICAgW0ltcGxlbWVudGVkQXM9d2luZG93UHJveHldIHJlYWRvbmx5
IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gZGVmYXVsdFZpZXc7CiAgICAgYm9vbGVhbiBoYXNGb2N1
cygpOwogICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIERPTVN0cmluZyBkZXNpZ25Nb2RlOwog
ICAgIFtDRVJlYWN0aW9uc10gYm9vbGVhbiBleGVjQ29tbWFuZChET01TdHJpbmcgY29tbWFuZElk
LCBvcHRpb25hbCBib29sZWFuIHNob3dVSSA9IGZhbHNlLCBvcHRpb25hbCBET01TdHJpbmc/IHZh
bHVlID0gbnVsbCk7IC8vIEZJWE1FOiB2YWx1ZSBzaG91bGQgbm90IGJlIG51bGxhYmxlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3BwCmluZGV4IDNkOTEyM2Q4Zjc1MzJjYjRkYjc5YTRh
MTMzNWQ1ZjE3MjhjYzUwOWEuLjVkMTI2YzNjMzI0NzE0ZjM5ZjlmOTZlMTYzNjljMDE4Nzg0N2E4
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5jcHAKQEAgLTI4LDIwICsyOCwyNyBA
QAogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIAotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJUb3Vj
aC5oIgogI2luY2x1ZGUgIlRvdWNoTGlzdC5oIgorI2luY2x1ZGUgIldpbmRvd1Byb3h5LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFRvdWNoPiBEb2N1bWVudFRvdWNoOjpjcmVhdGVU
b3VjaChEb2N1bWVudCYgZG9jdW1lbnQsIERPTVdpbmRvdyogd2luZG93LCBFdmVudFRhcmdldCog
dGFyZ2V0LCBpbnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBzY3JlZW5Y
LCBpbnQgc2NyZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbkFu
Z2xlLCBmbG9hdCBmb3JjZSkKK1JlZjxUb3VjaD4gRG9jdW1lbnRUb3VjaDo6Y3JlYXRlVG91Y2go
RG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgd2luZG93LCBFdmVudFRh
cmdldCogdGFyZ2V0LCBpbnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBz
Y3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3Rh
dGlvbkFuZ2xlLCBmbG9hdCBmb3JjZSkKIHsKKyAgICBGcmFtZSogZnJhbWU7CisgICAgaWYgKHdp
bmRvdyAmJiBpczxGcmFtZT4od2luZG93LT5mcmFtZSgpKSkKKyAgICAgICAgZnJhbWUgPSAmZG93
bmNhc3Q8RnJhbWU+KHdpbmRvdy0+ZnJhbWUoKSk7CisgICAgZWxzZQorICAgICAgICBmcmFtZSA9
IGRvY3VtZW50LmZyYW1lKCk7CisKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgZnJvbSB0
aGUgZG9jdW1lbnRhdGlvbiBhdAogICAgIC8vIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xp
YnJhcnkvc2FmYXJpLyNkb2N1bWVudGF0aW9uL1VzZXJFeHBlcmllbmNlL1JlZmVyZW5jZS9Eb2N1
bWVudEFkZGl0aW9uc1JlZmVyZW5jZS9Eb2N1bWVudEFkZGl0aW9ucy9Eb2N1bWVudEFkZGl0aW9u
cy5odG1sCiAgICAgLy8gd2hlbiB0aGlzIG1ldGhvZCBzaG91bGQgdGhyb3cgYW5kIG5vciBpcyBp
dCBieSBpbnNwZWN0aW9uIG9mIGlPUyBiZWhhdmlvci4gSXQgd291bGQgYmUgbmljZSB0byB2ZXJp
ZnkgYW55IGNhc2VzIHdoZXJlIGl0IHRocm93cyB1bmRlciBpT1MKICAgICAvLyBhbmQgaW1wbGVt
ZW50IHRoZW0gaGVyZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NzgxOQotICAgIHJldHVybiBUb3VjaDo6Y3JlYXRlKHdpbmRvdyA/IHdpbmRvdy0+ZnJhbWUo
KSA6IGRvY3VtZW50LmZyYW1lKCksIHRhcmdldCwgaWRlbnRpZmllciwgc2NyZWVuWCwgc2NyZWVu
WSwgcGFnZVgsIHBhZ2VZLCByYWRpdXNYLCByYWRpdXNZLCByb3RhdGlvbkFuZ2xlLCBmb3JjZSk7
CisgICAgcmV0dXJuIFRvdWNoOjpjcmVhdGUoZnJhbWUsIHRhcmdldCwgaWRlbnRpZmllciwgc2Ny
ZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCByYWRpdXNYLCByYWRpdXNZLCByb3RhdGlvbkFu
Z2xlLCBmb3JjZSk7CiB9CiAKIFJlZjxUb3VjaExpc3Q+IERvY3VtZW50VG91Y2g6OmNyZWF0ZVRv
dWNoTGlzdChEb2N1bWVudCYsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFRvdWNoPj4m
JiB0b3VjaGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2gu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmgKaW5kZXggZTBkYWY1MDUyY2M5
Nzg1MmM4YTA0YmJhNzNlNWY2YTExNmYxMGU1MS4uNzJjNDg4OGI0NWFiNDAwZTI5YmM4YWVkODZk
ZTRjNTkwM2VhYzIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91
Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5oCkBAIC0zNCwxNSAr
MzQsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBET01XaW5kb3c7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIEV2ZW50VGFyZ2V0OwogY2xhc3MgVG91Y2g7CiBjbGFzcyBUb3Vj
aExpc3Q7CitjbGFzcyBXaW5kb3dQcm94eTsKIAogY2xhc3MgRG9jdW1lbnRUb3VjaCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxUb3VjaD4gY3JlYXRlVG91Y2goRG9jdW1lbnQmLCBET01XaW5k
b3cqLCBFdmVudFRhcmdldCosIGludCBpZGVudGlmaWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwg
aW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0
IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKTsKKyAgICBzdGF0aWMgUmVmPFRvdWNoPiBjcmVh
dGVUb3VjaChEb2N1bWVudCYsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgRXZlbnRUYXJnZXQqLCBp
bnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBzY3JlZW5YLCBpbnQgc2Ny
ZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9h
dCBmb3JjZSk7CiAgICAgc3RhdGljIFJlZjxUb3VjaExpc3Q+IGNyZWF0ZVRvdWNoTGlzdChEb2N1
bWVudCYsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFRvdWNoPj4mJik7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5pZGwKaW5kZXggN2EyNzM3NDU4NjU0OTkxYjExYjU1
NjMwODllMjE5NTdjYzRjNGU0YS4uMDQ4OWEzNmFkNmIxMjUwM2NkYjQ2YWYxNDhjYjU5Y2ZhZmQ2
NzViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmlkbApAQCAtMjIsNyArMjIsNyBA
QAogICAgIENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUwogXSBwYXJ0aWFsIGludGVyZmFjZSBEb2N1
bWVudCB7CiAgICAgLy8gRklYTUU6IFRoaXMgaGFzIGJlZW4gZHJvcHBlZCBmcm9tIHRoZSBzdGFu
ZGFyZCBub3cgdGhhdCBUb3VjaCBoYXMgYSBjb25zdHJ1Y3Rvci4KLSAgICBbTmV3T2JqZWN0XSBU
b3VjaCBjcmVhdGVUb3VjaChvcHRpb25hbCBET01XaW5kb3c/IHdpbmRvdyA9IG51bGwsIG9wdGlv
bmFsIEV2ZW50VGFyZ2V0PyB0YXJnZXQgPSBudWxsLAorICAgIFtOZXdPYmplY3RdIFRvdWNoIGNy
ZWF0ZVRvdWNoKG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB3aW5kb3cgPSBudWxsLCBvcHRpb25hbCBF
dmVudFRhcmdldD8gdGFyZ2V0ID0gbnVsbCwKICAgICAgICAgb3B0aW9uYWwgbG9uZyBpZGVudGlm
aWVyID0gMCwKICAgICAgICAgb3B0aW9uYWwgbG9uZyBwYWdlWCA9IDAsIG9wdGlvbmFsIGxvbmcg
cGFnZVkgPSAwLCBvcHRpb25hbCBsb25nIHNjcmVlblggPSAwLCBvcHRpb25hbCBsb25nIHNjcmVl
blkgPSAwLAogICAgICAgICBvcHRpb25hbCBsb25nIHdlYmtpdFJhZGl1c1ggPSAwLCBvcHRpb25h
bCBsb25nIHdlYmtpdFJhZGl1c1kgPSAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDBhMjMy
NjM5NmRkZmY5OTRlYmZhZTVjODU2MDBhN2M3NTMzNzg4Y2EuLmE0MzIzOTdkNzE3OWIxNDFkMjBk
ZjgwZmNiZTQ2OTUzY2IxODY0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTI3Myw3ICsy
NzMsNyBAQCBib29sIEVsZW1lbnQ6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIHBsYXRmb3JtRXZlbnQsIGNvbnN0CiAgICAgaWYgKGlzRm9yY2VFdmVudChwbGF0
Zm9ybUV2ZW50KSAmJiAhZG9jdW1lbnQoKS5oYXNMaXN0ZW5lclR5cGVGb3JFdmVudFR5cGUocGxh
dGZvcm1FdmVudC50eXBlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWY8TW91
c2VFdmVudD4gbW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGRvY3Vt
ZW50KCkuZGVmYXVsdFZpZXcoKSwgcGxhdGZvcm1FdmVudCwgZGV0YWlsLCByZWxhdGVkVGFyZ2V0
KTsKKyAgICBSZWY8TW91c2VFdmVudD4gbW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShl
dmVudFR5cGUsIGRvY3VtZW50KCkud2luZG93UHJveHkoKSwgcGxhdGZvcm1FdmVudCwgZGV0YWls
LCByZWxhdGVkVGFyZ2V0KTsKIAogICAgIGlmIChtb3VzZUV2ZW50LT50eXBlKCkuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gU2hvdWxkbid0IGhhcHBlbi4KQEAgLTMwNCw3ICsz
MDQsNyBAQCBib29sIEVsZW1lbnQ6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIHBsYXRmb3JtRXZlbnQsIGNvbnN0CiAKIGJvb2wgRWxlbWVudDo6ZGlzcGF0Y2hX
aGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgcGxhdGZvcm1FdmVudCkKIHsKLSAg
ICBhdXRvIGV2ZW50ID0gV2hlZWxFdmVudDo6Y3JlYXRlKHBsYXRmb3JtRXZlbnQsIGRvY3VtZW50
KCkuZGVmYXVsdFZpZXcoKSk7CisgICAgYXV0byBldmVudCA9IFdoZWVsRXZlbnQ6OmNyZWF0ZShw
bGF0Zm9ybUV2ZW50LCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCkpOwogCiAgICAgLy8gRXZlbnRz
IHdpdGggbm8gZGVsdGFzIGFyZSBpbXBvcnRhbnQgYmVjYXVzZSB0aGV5IGNvbnZleSBwbGF0Zm9y
bSBpbmZvcm1hdGlvbiBhYm91dCBzY3JvbGwgZ2VzdHVyZXMKICAgICAvLyBhbmQgbW9tZW50dW0g
YmVnaW5uaW5nIG9yIGVuZGluZy4gSG93ZXZlciwgdGhvc2UgZXZlbnRzIHNob3VsZCBub3QgYmUg
c2VudCB0byB0aGUgRE9NIHNpbmNlIHNvbWUKQEAgLTMyMSw3ICszMjEsNyBAQCBib29sIEVsZW1l
bnQ6OmRpc3BhdGNoV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHBsYXRmb3Jt
RXZlbnQpCiAKIGJvb2wgRWxlbWVudDo6ZGlzcGF0Y2hLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQmIHBsYXRmb3JtRXZlbnQpCiB7Ci0gICAgYXV0byBldmVudCA9IEtleWJvYXJk
RXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCBkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCkpOwor
ICAgIGF1dG8gZXZlbnQgPSBLZXlib2FyZEV2ZW50OjpjcmVhdGUocGxhdGZvcm1FdmVudCwgZG9j
dW1lbnQoKS53aW5kb3dQcm94eSgpKTsKIAogICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVu
dCgpLmZyYW1lKCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5ldmVudEhhbmRsZXIoKS5hY2Nlc3Np
YmlsaXR5UHJldmVudHNFdmVudFByb3BhZ2F0aW9uKGV2ZW50KSkKQEAgLTI1NDYsMjggKzI1NDYs
MjggQEAgdm9pZCBFbGVtZW50OjpkaXNwYXRjaEZvY3VzSW5FdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgUmVmUHRyPEVsZW1lbnQKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZDo6aXNTY3Jp
cHRBbGxvd2VkKCkpOwogICAgIEFTU0VSVChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmZvY3Vz
aW5FdmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLkRPTUZvY3VzSW5FdmVudCk7Ci0g
ICAgZGlzcGF0Y2hTY29wZWRFdmVudChGb2N1c0V2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCB0cnVl
LCBmYWxzZSwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCAwLCBXVEZNb3ZlKG9sZEZvY3VzZWRF
bGVtZW50KSkpOworICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoRm9jdXNFdmVudDo6Y3JlYXRlKGV2
ZW50VHlwZSwgdHJ1ZSwgZmFsc2UsIGRvY3VtZW50KCkud2luZG93UHJveHkoKSwgMCwgV1RGTW92
ZShvbGRGb2N1c2VkRWxlbWVudCkpKTsKIH0KIAogdm9pZCBFbGVtZW50OjpkaXNwYXRjaEZvY3Vz
T3V0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFbGVtZW50PiYm
IG5ld0ZvY3VzZWRFbGVtZW50KQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkOjppc1NjcmlwdEFsbG93ZWQo
KSk7CiAgICAgQVNTRVJUKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZm9jdXNvdXRFdmVudCB8
fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLkRPTUZvY3VzT3V0RXZlbnQpOwotICAgIGRpc3Bh
dGNoU2NvcGVkRXZlbnQoRm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgZmFsc2Us
IGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgMCwgV1RGTW92ZShuZXdGb2N1c2VkRWxlbWVudCkp
KTsKKyAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KEZvY3VzRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUs
IHRydWUsIGZhbHNlLCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIDAsIFdURk1vdmUobmV3Rm9j
dXNlZEVsZW1lbnQpKSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFJl
ZlB0cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50LCBGb2N1c0RpcmVjdGlvbikKIHsKICAg
ICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQogICAgICAgICBwYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS5lbGVtZW50RGlkRm9jdXMoKnRoaXMpOwotICAgIGRpc3BhdGNoRXZlbnQo
Rm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBmYWxzZSwgZmFsc2Us
IGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgMCwgV1RGTW92ZShvbGRGb2N1c2VkRWxlbWVudCkp
KTsKKyAgICBkaXNwYXRjaEV2ZW50KEZvY3VzRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZm9j
dXNFdmVudCwgZmFsc2UsIGZhbHNlLCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIDAsIFdURk1v
dmUob2xkRm9jdXNlZEVsZW1lbnQpKSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hCbHVy
RXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1lbnQpCiB7CiAgICAgaWYgKGF1
dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xp
ZW50KCkuZWxlbWVudERpZEJsdXIoKnRoaXMpOwotICAgIGRpc3BhdGNoRXZlbnQoRm9jdXNFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsIGZhbHNlLCBmYWxzZSwgZG9jdW1lbnQo
KS5kZWZhdWx0VmlldygpLCAwLCBXVEZNb3ZlKG5ld0ZvY3VzZWRFbGVtZW50KSkpOworICAgIGRp
c3BhdGNoRXZlbnQoRm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsIGZh
bHNlLCBmYWxzZSwgZG9jdW1lbnQoKS53aW5kb3dQcm94eSgpLCAwLCBXVEZNb3ZlKG5ld0ZvY3Vz
ZWRFbGVtZW50KSkpOwogfQogCiB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoV2ViS2l0SW1hZ2VSZWFk
eUV2ZW50Rm9yVGVzdGluZygpCkBAIC0yNTg3LDcgKzI1ODcsNyBAQCBib29sIEVsZW1lbnQ6OmRp
c3BhdGNoTW91c2VGb3JjZVdpbGxCZWdpbigpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IFBsYXRmb3JtTW91c2VFdmVudCBwbGF0Zm9ybU1vdXNlRXZlbnQgeyBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCkubGFzdEtub3duTW91c2VQb3NpdGlvbigpLCBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkubGFz
dEtub3duTW91c2VHbG9iYWxQb3NpdGlvbigpLCBOb0J1dHRvbiwgUGxhdGZvcm1FdmVudDo6Tm9U
eXBlLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2FsbFRpbWU6Om5vdygpLCBGb3Jj
ZUF0Q2xpY2ssIE5vVGFwIH07Ci0gICAgYXV0byBtb3VzZUZvcmNlV2lsbEJlZ2luRXZlbnQgPSBN
b3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG1vdXNlZm9yY2V3aWxsYmVnaW5F
dmVudCwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCBwbGF0Zm9ybU1vdXNlRXZlbnQsIDAsIG51
bGxwdHIpOworICAgIGF1dG8gbW91c2VGb3JjZVdpbGxCZWdpbkV2ZW50ID0gTW91c2VFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRtb3VzZWZvcmNld2lsbGJlZ2luRXZlbnQsIGRvY3Vt
ZW50KCkud2luZG93UHJveHkoKSwgcGxhdGZvcm1Nb3VzZUV2ZW50LCAwLCBudWxscHRyKTsKICAg
ICBtb3VzZUZvcmNlV2lsbEJlZ2luRXZlbnQtPnNldFRhcmdldCh0aGlzKTsKICAgICBkaXNwYXRj
aEV2ZW50KG1vdXNlRm9yY2VXaWxsQmVnaW5FdmVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50
LmNwcAppbmRleCAxNmQ4YjNmZjA3OGQwNWFkOTFlMmQ2OTE0NjcxOTEyODU1ZDdjNDg0Li45ODY4
NzczMjZjZTNmYWU0YmIwNTllN2MxNjRkN2JjMThhYTlkZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3Vz
RXZlbnQuY3BwCkBAIC00MCw4ICs0MCw4IEBAIGJvb2wgRm9jdXNFdmVudDo6aXNGb2N1c0V2ZW50
KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRm9jdXNFdmVudDo6Rm9jdXNFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmIHJlbGF0
ZWRUYXJnZXQpCi0gICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmll
dywgZGV0YWlsKQorRm9jdXNFdmVudDo6Rm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4m
JiB2aWV3LCBpbnQgZGV0YWlsLCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYgcmVsYXRlZFRhcmdldCkK
KyAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcp
LCBkZXRhaWwpCiAgICAgLCBtX3JlbGF0ZWRUYXJnZXQoV1RGTW92ZShyZWxhdGVkVGFyZ2V0KSkK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5oCmluZGV4IDA2NzI1NTc0YzA2YjkxZjI5ZmI0Zjk2
YTBiMWI1NjEzNGYxOTY4NTQuLmM3YTRkZjhlNzc0MzJjZmUzNjRhMTM0ZjhkZTUxNTE2YTA1N2I4
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuaApAQCAtMzUsOSArMzUsOSBAQCBjbGFzcyBOb2Rl
OwogCiBjbGFzcyBGb2N1c0V2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8Rm9jdXNFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBpbnQg
ZGV0YWlsLCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYgcmVsYXRlZFRhcmdldCkKKyAgICBzdGF0aWMg
UmVmPEZvY3VzRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQg
ZGV0YWlsLCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYgcmVsYXRlZFRhcmdldCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvY3VzRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCB2aWV3LCBkZXRhaWwsIFdURk1vdmUocmVsYXRlZFRhcmdldCkpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9jdXNFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIFdURk1vdmUodmlldyksIGRldGFpbCwgV1RGTW92ZShyZWxhdGVkVGFyZ2V0KSkpOwogICAg
IH0KIAogICAgIHN0YXRpYyBSZWY8Rm9jdXNFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKQpAQCAt
NTgsNyArNTgsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgRm9jdXNFdmVudCgpID0gZGVm
YXVsdDsKLSAgICBGb2N1c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50LCBSZWZQdHI8RXZlbnRUYXJn
ZXQ+JiYpOworICAgIEZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCwgUmVm
UHRyPEV2ZW50VGFyZ2V0PiYmKTsKICAgICBGb2N1c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBFdmVudEludGVyZmFjZSBldmVu
dEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0lucHV0RXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuY3BwCmluZGV4
IGQ0NDkyOTRmZWM2YmM3OTcwZDZjNDJjNGI5N2FiMTYxYzRmNWIxZjAuLmMxN2JmMThkODhhNjc2
NDcyYTE4NzE2M2U3YjQ1MTRmODQ0MDBhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9JbnB1dEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5jcHAK
QEAgLTI2LDIwICsyNiwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklucHV0
RXZlbnQuaCIKIAotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zl
ci5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8SW5wdXRFdmVu
dD4gSW5wdXRFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgV2Vi
Q29yZTo6RE9NV2luZG93ICp2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJh
bnNmZXI+JiYgZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4m
IHRhcmdldFJhbmdlcywgaW50IGRldGFpbCkKK1JlZjxJbnB1dEV2ZW50PiBJbnB1dEV2ZW50Ojpj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRU
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFU
cmFuc2ZlciwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMs
IGludCBkZXRhaWwpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5wdXRFdmVudChldmVu
dFR5cGUsIGlucHV0VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkYXRhLCBXVEZN
b3ZlKGRhdGFUcmFuc2ZlciksIHRhcmdldFJhbmdlcywgZGV0YWlsKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW5wdXRFdmVudChldmVudFR5cGUsIGlucHV0VHlwZSwgY2FuQnViYmxlLCBj
YW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkYXRhLCBXVEZNb3ZlKGRhdGFUcmFuc2ZlciksIHRh
cmdldFJhbmdlcywgZGV0YWlsKSk7CiB9CiAKLUlucHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYg
ZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiBkYXRhVHJhbnNmZXIsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKQotICAgIDogVUlF
dmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKQorSW5w
dXRFdmVudDo6SW5wdXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJh
bnNmZXI+JiYgZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4m
IHRhcmdldFJhbmdlcywgaW50IGRldGFpbCkKKyAgICA6IFVJRXZlbnQoZXZlbnRUeXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRldGFpbCkKICAgICAsIG1faW5wdXRU
eXBlKGlucHV0VHlwZSkKICAgICAsIG1fZGF0YShkYXRhKQogICAgICwgbV9kYXRhVHJhbnNmZXIo
ZGF0YVRyYW5zZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmgKaW5kZXggY2FkOGRjZTdiMzYyNmQ5
YTIyNzYzNGIzNTg5MjZjMWYxMjU0NjgxYi4uZDA1MDc2MzljNmM4OWM5OWQ0ZDMwYTFjZTkzNmY5
MTYxYjljNGVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5oCkBAIC0zMCw4ICszMCw4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRE9NV2luZG93OwogY2xhc3MgRGF0YVRyYW5z
ZmVyOworY2xhc3MgV2luZG93UHJveHk7CiAKIGNsYXNzIElucHV0RXZlbnQgZmluYWwgOiBwdWJs
aWMgVUlFdmVudCB7CiBwdWJsaWM6CkBAIC0zOSwxMyArMzksMTMgQEAgcHVibGljOgogICAgICAg
ICBTdHJpbmcgZGF0YTsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxJbnB1dEV2ZW50PiBjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0
IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwgY29uc3QgVmVjdG9yPFJlZlB0
cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpOworICAgIHN0YXRpYyBS
ZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFU
cmFuc2Zlcj4mJiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5n
ZXMsIGludCBkZXRhaWwpOwogICAgIHN0YXRpYyBSZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBp
c1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSW5wdXRFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiAgICAgfQog
Ci0gICAgSW5wdXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBpbnB1dFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRv
dyosIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwgY29uc3QgVmVj
dG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpOworICAg
IElucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYg
aW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93
UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwgY29u
c3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwp
OwogICAgIElucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IElu
aXQmLCBJc1RydXN0ZWQpOwogCiAgICAgYm9vbCBpc0lucHV0RXZlbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9h
cmRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKaW5kZXgg
NGRhMTAxNzcyNWZlODkyY2ZhOGRhY2YwZjViNzA4MWRjYzZjZmJlOS4uNGFjYjVmNGNlYjc2MGUx
NzBmMTA3Y2VhMzg2MDk4OWY2NzI2NGVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0tleWJvYXJkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50
LmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIktl
eWJvYXJkRXZlbnQuaCIKIAorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCkBA
IC05Miw4ICs5Myw4IEBAIHN0YXRpYyBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5TG9jYXRpb25D
b2RlIGtleUxvY2F0aW9uQ29kZShjb25zdCBQbGF0Zm9ybUtleWJvCiAKIGlubGluZSBLZXlib2Fy
ZEV2ZW50OjpLZXlib2FyZEV2ZW50KCkgPSBkZWZhdWx0OwogCi1pbmxpbmUgS2V5Ym9hcmRFdmVu
dDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwgRE9NV2lu
ZG93KiB2aWV3KQotICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGVGb3JLZXlib2Fy
ZEV2ZW50VHlwZShrZXkudHlwZSgpKSwgdHJ1ZSwgdHJ1ZSwga2V5LnRpbWVzdGFtcCgpLmFwcHJv
eGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LCAwLCBrZXkuY3RybEtleSgpLCBrZXkuYWx0S2V5
KCksIGtleS5zaGlmdEtleSgpLCBrZXkubWV0YUtleSgpLCBmYWxzZSwga2V5Lm1vZGlmaWVycygp
LmNvbnRhaW5zKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDYXBzTG9ja0tleSkpCitpbmxpbmUg
S2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQm
IGtleSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcpCisgICAgOiBVSUV2ZW50V2l0aEtleVN0
YXRlKGV2ZW50VHlwZUZvcktleWJvYXJkRXZlbnRUeXBlKGtleS50eXBlKCkpLCB0cnVlLCB0cnVl
LCBrZXkudGltZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCksIHZpZXcuY29weVJl
ZigpLCAwLCBrZXkuY3RybEtleSgpLCBrZXkuYWx0S2V5KCksIGtleS5zaGlmdEtleSgpLCBrZXku
bWV0YUtleSgpLCBmYWxzZSwga2V5Lm1vZGlmaWVycygpLmNvbnRhaW5zKFBsYXRmb3JtRXZlbnQ6
Ok1vZGlmaWVyOjpDYXBzTG9ja0tleSkpCiAgICAgLCBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50
KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1LZXlib2FyZEV2ZW50PihrZXkpKQogI2lmIEVOQUJM
RShLRVlCT0FSRF9LRVlfQVRUUklCVVRFKQogICAgICwgbV9rZXkoa2V5LmtleSgpKQpAQCAtMTA0
LDcgKzEwNSw3IEBAIGlubGluZSBLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KGNvbnN0IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudCYga2V5LCBET01XaW5kb3cqCiAgICAgLCBtX2tleUlkZW50aWZp
ZXIoa2V5LmtleUlkZW50aWZpZXIoKSkKICAgICAsIG1fbG9jYXRpb24oa2V5TG9jYXRpb25Db2Rl
KGtleSkpCiAgICAgLCBtX3JlcGVhdChrZXkuaXNBdXRvUmVwZWF0KCkpCi0gICAgLCBtX2lzQ29t
cG9zaW5nKHZpZXcgJiYgdmlldy0+ZnJhbWUoKSAmJiB2aWV3LT5mcmFtZSgpLT5lZGl0b3IoKS5o
YXNDb21wb3NpdGlvbigpKQorICAgICwgbV9pc0NvbXBvc2luZyh2aWV3ICYmIGlzPERPTVdpbmRv
dz4odmlldy0+d2luZG93KCkpICYmIGRvd25jYXN0PERPTVdpbmRvdz4oKnZpZXctPndpbmRvdygp
KS5mcmFtZSgpICYmIGRvd25jYXN0PERPTVdpbmRvdz4oKnZpZXctPndpbmRvdygpKS5mcmFtZSgp
LT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKQogI2lmIFVTRShBUFBLSVQpCiAgICAgLCBtX2hh
bmRsZWRCeUlucHV0TWV0aG9kKGtleS5oYW5kbGVkQnlJbnB1dE1ldGhvZCgpKQogICAgICwgbV9r
ZXlwcmVzc0NvbW1hbmRzKGtleS5jb21tYW5kcygpKQpAQCAtMTMyLDkgKzEzMyw5IEBAIGlubGlu
ZSBLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBjb25zdCBJbml0JiBpCiAKIEtleWJvYXJkRXZlbnQ6On5LZXlib2FyZEV2ZW50KCkgPSBk
ZWZhdWx0OwogCi1SZWY8S2V5Ym9hcmRFdmVudD4gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGNvbnN0
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgcGxhdGZvcm1FdmVudCwgRE9NV2luZG93KiB2aWV3KQor
UmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQmIHBsYXRmb3JtRXZlbnQsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3KQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEtleWJvYXJkRXZlbnQocGxhdGZvcm1FdmVudCwg
dmlldykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEtleWJvYXJkRXZlbnQocGxhdGZvcm1F
dmVudCwgV1RGTW92ZSh2aWV3KSkpOwogfQogCiBSZWY8S2V5Ym9hcmRFdmVudD4gS2V5Ym9hcmRF
dmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQpAQCAtMTQ3LDEzICsxNDgsMTMgQEAgUmVmPEtleWJv
YXJkRXZlbnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGNvbnN0IEluaXQmIGkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBLZXlib2FyZEV2ZW50KHR5
cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKIH0KIAotdm9pZCBLZXlib2FyZEV2ZW50Ojpp
bml0S2V5Ym9hcmRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywKK3ZvaWQgS2V5Ym9hcmRFdmVudDo6
aW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICBjb25z
dCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIHVuc2lnbmVkIGxvY2F0aW9uLCBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIGJvb2wgYWx0R3JhcGhL
ZXkpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgMCk7Cisg
ICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcp
LCAwKTsKIAogICAgIG1fa2V5SWRlbnRpZmllciA9IGtleUlkZW50aWZpZXI7CiAgICAgbV9sb2Nh
dGlvbiA9IGxvY2F0aW9uOwpAQCAtMjI3LDggKzIyOCw5IEBAIGludCBLZXlib2FyZEV2ZW50Ojpj
aGFyQ29kZSgpIGNvbnN0CiAgICAgLy8gRmlyZWZveDogMCBmb3Iga2V5ZG93bi9rZXl1cCBldmVu
dHMsIGNoYXJhY3RlciBjb2RlIGZvciBrZXlwcmVzcwogICAgIC8vIFdlIG1hdGNoIEZpcmVmb3gs
IHVubGVzcyBpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG1vZGUsIHdoZXJlIHdlIGFsd2F5cyBy
ZXR1cm4gdGhlIGNoYXJhY3RlciBjb2RlLgogICAgIGJvb2wgYmFja3dhcmRDb21wYXRpYmlsaXR5
TW9kZSA9IGZhbHNlOwotICAgIGlmICh2aWV3KCkgJiYgdmlldygpLT5mcmFtZSgpKQotICAgICAg
ICBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlID0gdmlldygpLT5mcmFtZSgpLT5ldmVudEhhbmRs
ZXIoKS5uZWVkc0tleWJvYXJkRXZlbnREaXNhbWJpZ3VhdGlvblF1aXJrcygpOworICAgIGF1dG8q
IHdpbmRvdyA9IHZpZXcoKSA/IHZpZXcoKS0+d2luZG93KCkgOiBudWxscHRyOworICAgIGlmIChp
czxET01XaW5kb3c+KHdpbmRvdykgJiYgZG93bmNhc3Q8RE9NV2luZG93Pigqd2luZG93KS5mcmFt
ZSgpKQorICAgICAgICBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlID0gZG93bmNhc3Q8RE9NV2lu
ZG93Pigqd2luZG93KS5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS5uZWVkc0tleWJvYXJkRXZlbnRE
aXNhbWJpZ3VhdGlvblF1aXJrcygpOwogCiAgICAgaWYgKCFtX3VuZGVybHlpbmdQbGF0Zm9ybUV2
ZW50IHx8ICh0eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQgJiYgIWJhY2t3YXJk
Q29tcGF0aWJpbGl0eU1vZGUpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9h
cmRFdmVudC5oCmluZGV4IDgyMTAzMzBlYWIwMzQxZjRjYTU0Y2QyNWM1OGI5OTU0NmYwYjE1YTku
LjFkM2NjMjQzNzk5YjE5YTc0NGVlOTc4YTE4N2VhZWFlYzg4MDVmYjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0tleWJvYXJkRXZlbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIERPTV9L
RVlfTE9DQVRJT05fTlVNUEFEID0gMHgwMwogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPEtleWJvYXJkRXZlbnQ+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQmLCBET01XaW5kb3cqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEtleWJvYXJk
RXZlbnQ+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmLCBSZWZQdHI8V2luZG93
UHJveHk+JiYpOwogICAgIHN0YXRpYyBSZWY8S2V5Ym9hcmRFdmVudD4gY3JlYXRlRm9yQmluZGlu
Z3MoKTsKIAogICAgIHN0cnVjdCBJbml0IDogcHVibGljIEV2ZW50TW9kaWZpZXJJbml0IHsKQEAg
LTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+S2V5Ym9hcmRFdmVudCgpOwog
ICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5k
b3cqLAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYsCiAgICAgICAgIGNvbnN0IFN0cmluZyYga2V5SWRlbnRpZmllciwgdW5z
aWduZWQgbG9jYXRpb24sCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSwgYm9vbCBhbHRHcmFwaEtleSA9IGZhbHNlKTsKICAgICAK
QEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgS2V5Ym9hcmRFdmVu
dCgpOwotICAgIEtleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgRE9N
V2luZG93Kik7CisgICAgS2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQm
LCBSZWZQdHI8V2luZG93UHJveHk+JiYpOwogICAgIEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1LZXlib2FyZEV2ZW50PiBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaWRsIGIvU291cmNlL1dlYkNv
cmUvZG9tL0tleWJvYXJkRXZlbnQuaWRsCmluZGV4IDc1N2MwNzc5M2Y1ZTVmMWUxODQzOGY3OGRk
NDQ3ZTlhM2ExZDUxMDkuLmNkZTQ1MGMzNDM1MzM1MDkyYTE3N2Q2ZGY2MzY4YmY2MzUxZDcxMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5pZGwKQEAgLTUyLDcgKzUyLDcgQEAKICAg
ICAvLyBGSVhNRTogdGhpcyBkb2VzIG5vdCBtYXRjaCB0aGUgdmVyc2lvbiBpbiB0aGUgRE9NIHNw
ZWMuCiAgICAgLy8gRklYTUU6IFVzaW5nICJ1bmRlZmluZWQiIGFzIGRlZmF1bHQgcGFyYW1ldGVy
IHZhbHVlIGlzIHdyb25nLgogICAgIHZvaWQgaW5pdEtleWJvYXJkRXZlbnQob3B0aW9uYWwgRE9N
U3RyaW5nIHR5cGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGUgPSBm
YWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlID0gZmFsc2UsCi0gICAgICAgIG9wdGlv
bmFsIERPTVdpbmRvdz8gdmlldyA9IG51bGwsIG9wdGlvbmFsIERPTVN0cmluZyBrZXlJZGVudGlm
aWVyID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbG9jYXRpb24gPSAwLAor
ICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlldyA9IG51bGwsIG9wdGlvbmFsIERPTVN0
cmluZyBrZXlJZGVudGlmaWVyID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcg
bG9jYXRpb24gPSAwLAogICAgICAgICBvcHRpb25hbCBib29sZWFuIGN0cmxLZXkgPSBmYWxzZSwg
b3B0aW9uYWwgYm9vbGVhbiBhbHRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBzaGlmdEtl
eSA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIG1ldGFLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9v
bGVhbiBhbHRHcmFwaEtleSA9IGZhbHNlKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQu
aAppbmRleCA1MTk3ZDViYWUxYWUzNWFhYjA0ZjBjYjUwZTc2ZTlkOGZhYTE4Yjc5Li4zMzA5Mjc4
N2QxNGFlNjU3M2VhMWI5ZDFmZDlhN2QwZWVlMGY0MDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5oCkBAIC0yNywxMiArMjcsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkpTVmFsdWVJbldyYXBw
ZWRPYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKKyNpbmNsdWRlICJX
aW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQwLDkgKzQwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYjsK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXVzaW5nIE1lc3NhZ2VFdmVudFNvdXJjZSA9
IFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxNZXNzYWdlUG9ydD4sIFJlZlB0cjxT
ZXJ2aWNlV29ya2VyPj47Cit1c2luZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0
cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxNZXNzYWdlUG9ydD4sIFJlZlB0cjxTZXJ2aWNlV29ya2Vy
Pj47CiAjZWxzZQotdXNpbmcgTWVzc2FnZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8RE9N
V2luZG93PiwgUmVmUHRyPE1lc3NhZ2VQb3J0Pj47Cit1c2luZyBNZXNzYWdlRXZlbnRTb3VyY2Ug
PSBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxNZXNzYWdlUG9ydD4+OwogI2Vu
ZGlmCiAKIGNsYXNzIE1lc3NhZ2VFdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlRXZlbnQuaWRsCmluZGV4IDAyNDM4ZmQ0YzQ3YzNmYzI5MmVhYmY0N2U1YzVl
ODNmODY5NTA4MjIuLmZhNDhjOGZhNWRhNWZkYzNlMGYyYzJmN2VmYmZhNzVjZDhmNTQwYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCkBAIC0yNyw5ICsyNyw5IEBACiAgKi8KIAog
I2lmIGRlZmluZWQoRU5BQkxFX1NFUlZJQ0VfV09SS0VSKSAmJiBFTkFCTEVfU0VSVklDRV9XT1JL
RVIKLXR5cGVkZWYgKERPTVdpbmRvdyBvciBNZXNzYWdlUG9ydCBvciBTZXJ2aWNlV29ya2VyKSBN
ZXNzYWdlRXZlbnRTb3VyY2U7Cit0eXBlZGVmIChXaW5kb3dQcm94eSBvciBNZXNzYWdlUG9ydCBv
ciBTZXJ2aWNlV29ya2VyKSBNZXNzYWdlRXZlbnRTb3VyY2U7CiAjZWxzZQotdHlwZWRlZiAoRE9N
V2luZG93IG9yIE1lc3NhZ2VQb3J0KSBNZXNzYWdlRXZlbnRTb3VyY2U7Cit0eXBlZGVmIChXaW5k
b3dQcm94eSBvciBNZXNzYWdlUG9ydCkgTWVzc2FnZUV2ZW50U291cmNlOwogI2VuZGlmCiAKIFsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAppbmRleCBhMTQ3ZTEyMThiYjZlMjRmMmFkNzY0NzA3
NDYwYzY2NzAyMWY2YzU5Li5jODk2Zjg2MzFhM2QyYmJkYTE5MzA2MjEwZmVkZGI4OTg2ZTRjYTYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCkBAIC00NCwxMyArNDQsMTMgQEAgUmVmPE1v
dXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNv
bnN0IE1vdXNlRXZlbnRJbmkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb3VzZUV2ZW50KHR5
cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKIH0KIAotUmVmPE1vdXNlRXZlbnQ+IE1vdXNl
RXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2
aWV3LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBpbnQgZGV0YWlsLCBOb2RlKiBy
ZWxhdGVkVGFyZ2V0KQorUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGludCBkZXRhaWwsIE5vZGUqIHJlbGF0ZWRUYXJn
ZXQpCiB7CiAgICAgYm9vbCBpc01vdXNlRW50ZXJPckxlYXZlID0gZXZlbnRUeXBlID09IGV2ZW50
TmFtZXMoKS5tb3VzZWVudGVyRXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5tb3Vz
ZWxlYXZlRXZlbnQ7CiAgICAgYm9vbCBpc0NhbmNlbGFibGUgPSBldmVudFR5cGUgIT0gZXZlbnRO
YW1lcygpLm1vdXNlbW92ZUV2ZW50ICYmICFpc01vdXNlRW50ZXJPckxlYXZlOwogICAgIGJvb2wg
Y2FuQnViYmxlID0gIWlzTW91c2VFbnRlck9yTGVhdmU7CiAKLSAgICByZXR1cm4gTW91c2VFdmVu
dDo6Y3JlYXRlKGV2ZW50VHlwZSwgY2FuQnViYmxlLCBpc0NhbmNlbGFibGUsIGV2ZW50LnRpbWVz
dGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LAorICAgIHJldHVybiBNb3Vz
ZUV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGlzQ2FuY2VsYWJsZSwgZXZlbnQu
dGltZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCksIFdURk1vdmUodmlldyksCiAg
ICAgICAgIGRldGFpbCwgZXZlbnQuZ2xvYmFsUG9zaXRpb24oKS54KCksIGV2ZW50Lmdsb2JhbFBv
c2l0aW9uKCkueSgpLCBldmVudC5wb3NpdGlvbigpLngoKSwgZXZlbnQucG9zaXRpb24oKS55KCks
CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgZXZlbnQubW92ZW1lbnREZWx0YSgp
LngoKSwgZXZlbnQubW92ZW1lbnREZWx0YSgpLnkoKSwKQEAgLTU5LDEzICs1OSwxMyBAQCBSZWY8
TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBET01XaW5kb3cqIHZpZQogICAgICAgICByZWxhdGVkVGFyZ2V0LCBldmVudC5mb3JjZSgp
LCBldmVudC5zeW50aGV0aWNDbGlja1R5cGUoKSk7CiB9CiAKLVJlZjxNb3VzZUV2ZW50PiBNb3Vz
ZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiB2aWV3
LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBh
Z2VZLAorUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUg
dGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNj
cmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKICNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQogICAgIGludCBtb3ZlbWVudFgsIGludCBtb3ZlbWVudFksCiAjZW5kaWYKICAg
ICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXks
IHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgRXZlbnRUYXJn
ZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwgdW5zaWduZWQgc2hvcnQgc3ludGhldGlj
Q2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIqIGRhdGFUcmFuc2ZlciwgYm9vbCBpc1NpbXVsYXRlZCkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwg
Y2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2aWV3LAorICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1v
dXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIFdURk1vdmUo
dmlldyksCiAgICAgICAgIGRldGFpbCwgeyBzY3JlZW5YLCBzY3JlZW5ZIH0sIHsgcGFnZVgsIHBh
Z2VZIH0sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgeyBtb3ZlbWVudFgsIG1v
dmVtZW50WSB9LApAQCAtNzMsMTkgKzczLDE5IEBAIFJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50
OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vCiAg
ICAgICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9u
cywgcmVsYXRlZFRhcmdldCwgZm9yY2UsIHN5bnRoZXRpY0NsaWNrVHlwZSwgZGF0YVRyYW5zZmVy
LCBpc1NpbXVsYXRlZCkpOwogfQogCi1SZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2Ny
ZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5
LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5z
aWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBF
dmVudFRhcmdldCogcmVsYXRlZFRhcmdldCkKK1JlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50Ojpj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBpbnQg
c2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJs
S2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBz
aG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVkIHNob3J0IHN5bnRo
ZXRpY0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJs
ZSwgdmlldywgZGV0YWlsLCB7IHNjcmVlblgsIHNjcmVlblkgfSwgeyBjbGllbnRYLCBjbGllbnRZ
IH0sIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9ucywg
c3ludGhldGljQ2xpY2tUeXBlLCByZWxhdGVkVGFyZ2V0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgTW91c2VFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92
ZSh2aWV3KSwgZGV0YWlsLCB7IHNjcmVlblgsIHNjcmVlblkgfSwgeyBjbGllbnRYLCBjbGllbnRZ
IH0sIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9ucywg
c3ludGhldGljQ2xpY2tUeXBlLCByZWxhdGVkVGFyZ2V0KSk7CiB9CiAKIE1vdXNlRXZlbnQ6Ok1v
dXNlRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLU1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1v
bm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGNvbnN0
IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9u
LAorTW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAs
IFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYg
c2NyZWVuTG9jYXRpb24sIGNvbnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwK
ICNlbmRpZgogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0
dG9ucywgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwgdW5zaWduZWQg
c2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIqIGRhdGFUcmFuc2ZlciwgYm9v
bCBpc1NpbXVsYXRlZCkKLSAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnVi
YmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIHZpZXcsIGRldGFpbCwgc2NyZWVuTG9jYXRpb24s
IHdpbmRvd0xvY2F0aW9uLAorICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZlbnRUeXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCBzY3Jl
ZW5Mb2NhdGlvbiwgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAg
ICAgICAgbW92ZW1lbnREZWx0YSwKICNlbmRpZgpAQCAtMTAwLDggKzEwMCw4IEBAIE1vdXNlRXZl
bnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlCiB7CiB9CiAKLU1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERP
TVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9u
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50TG9jYXRpb24sIGJvb2wgY3RybEtleSwgYm9vbCBhbHRL
ZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1
bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUs
IEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KQotICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZl
bnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWU6Om5vdygpLCB2aWV3
LCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB7IH0sCitNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgY29uc3QgSW50UG9p
bnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgY2xpZW50TG9jYXRpb24sIGJvb2wg
Y3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWdu
ZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBz
eW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KQorICAgIDogTW91
c2VSZWxhdGVkRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIE1vbm90b25p
Y1RpbWU6Om5vdygpLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB7IH0s
CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgeyB9LAogI2VuZGlmCkBAIC0xMjcs
MTIgKzEyNywxMiBAQCBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBjb25zdCBNb3VzZUV2ZW50SW5pdCYgaW5pdAogCiBNb3VzZUV2ZW50Ojp+TW91
c2VFdmVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBNb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBp
bnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBFdmVudFRhcmdl
dCogcmVsYXRlZFRhcmdldCkKK3ZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3Jl
ZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXks
IGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBFdmVu
dFRhcmdldCogcmVsYXRlZFRhcmdldCkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCB2aWV3LCBkZXRhaWwpOworICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwg
Y2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKTsKIAogICAgIG1fc2NyZWVuTG9jYXRp
b24gPSBJbnRQb2ludChzY3JlZW5YLCBzY3JlZW5ZKTsKICAgICBtX2N0cmxLZXkgPSBjdHJsS2V5
OwpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjCiAKIC8vIEZJWE1F
OiBXZSBuZWVkIHRoaXMgcXVpcmsgYmVjYXVzZSBpQWQgUHJvZHVjZXIgaXMgY2FsbGluZyB0aGlz
IGZ1bmN0aW9uIHdpdGggYSByZWxhdGVkVGFyZ2V0IHRoYXQgaXMgbm90IGFuIEV2ZW50VGFyZ2V0
IChyZGFyOi8vcHJvYmxlbS8zMDY0MDEwMSkuCiAvLyBXZSBzaG91bGQgcmVtb3ZlIHRoaXMgcXVp
cmsgd2hlbiBwb3NzaWJsZS4KLXZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayhF
eGVjU3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBz
Y3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRL
ZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBK
U1ZhbHVlIHJlbGF0ZWRUYXJnZXRWYWx1ZSkKK3ZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZl
bnRRdWlyayhFeGVjU3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWls
LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9v
bCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNp
Z25lZCBzaG9ydCBidXR0b24sIEpTVmFsdWUgcmVsYXRlZFRhcmdldFZhbHVlKQogewogICAgIEV2
ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0ID0gbnVsbHB0cjsKICNpZiBQTEFURk9STShNQUMpCkBA
IC0xNzYsNyArMTc2LDcgQEAgdm9pZCBNb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudFF1aXJrKEV4
ZWNTdGF0ZSYgc3RhdGUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHMKICNpZiBQTEFURk9STShN
QUMpCiAgICAgfQogI2VuZGlmCi0gICAgaW5pdE1vdXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBj
YW5jZWxhYmxlLCB2aWV3LCBkZXRhaWwsIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVu
dFksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgcmVsYXRlZFRh
cmdldCk7CisgICAgaW5pdE1vdXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBX
VEZNb3ZlKHZpZXcpLCBkZXRhaWwsIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVudFks
IGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgcmVsYXRlZFRhcmdl
dCk7CiB9CiAKIEV2ZW50SW50ZXJmYWNlIE1vdXNlRXZlbnQ6OmV2ZW50SW50ZXJmYWNlKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTW91c2VFdmVudC5oCmluZGV4IDI2Y2FmOGY2YjE5MTUxNjY4YjY4MDM1NTRh
MGIwMDE2NGQzZTFmY2YuLjRiMjgwNzk5NTViNGNiNzNhMmNlMTY4ZWI1YTEzOWQ3MzE1NmE5Zjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaApAQCAtMjksMTkgKzI5LDIwIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIERhdGFUcmFuc2ZlcjsKK2NsYXNzIE5vZGU7CiBjbGFzcyBQbGF0
Zm9ybU1vdXNlRXZlbnQ7CiAKIGNsYXNzIE1vdXNlRXZlbnQgOiBwdWJsaWMgTW91c2VSZWxhdGVk
RXZlbnQgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW91c2VFdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIERPTVdpbmRvdyosIGludCBkZXRh
aWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNU
aW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQgZGV0YWlsLCBpbnQgc2Ny
ZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogI2lmIEVOQUJMRShQT0lO
VEVSX0xPQ0spCiAgICAgICAgIGludCBtb3ZlbWVudFgsIGludCBtb3ZlbWVudFksCiAjZW5kaWYK
ICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBt
ZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIEV2
ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0LCBkb3VibGUgZm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5
bnRoZXRpY0NsaWNrVHlwZSwgRGF0YVRyYW5zZmVyKiA9IG51bGxwdHIsIGJvb2wgaXNTaW11bGF0
ZWQgPSBmYWxzZSk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+
IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiwgaW50IGRldGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiwgaW50IGRldGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCk7CiAKLSAgICBz
dGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFp
bCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJv
b2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5z
aWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9y
dCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KTsKKyAgICBz
dGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYm
LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQg
Y2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBt
ZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVu
c2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJn
ZXQpOwogCiAgICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudCk7IH0KIApAQCAtNDksOCArNTAsOCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIH5Nb3VzZUV2ZW50KCk7CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFpbCwgaW50IHNjcmVl
blgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQg
YnV0dG9uLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCk7Ci0gICAgdm9pZCBpbml0TW91c2VF
dmVudFF1aXJrKEpTQzo6RXhlY1N0YXRlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9N
V2luZG93KiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50
WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXks
IGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBKU0M6OkpTVmFsdWUgcmVsYXRl
ZFRhcmdldCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0TW91c2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBp
bnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBFdmVudFRhcmdl
dCogcmVsYXRlZFRhcmdldCk7CisgICAgdm9pZCBpbml0TW91c2VFdmVudFF1aXJrKEpTQzo6RXhl
Y1N0YXRlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYm
LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQg
Y2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBt
ZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIEpTQzo6SlNWYWx1ZSByZWxhdGVkVGFyZ2V0
KTsKIAogICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9u
OyB9CiAgICAgdW5zaWduZWQgc2hvcnQgYnV0dG9ucygpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9u
czsgfQpAQCAtNzAsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgaW50IHdoaWNoKCkgY29uc3QgZmlu
YWw7CiAKIHByb3RlY3RlZDoKLSAgICBNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3Rh
bXAsIERPTVdpbmRvdyosCisgICAgTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1w
LCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IEludFBv
aW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAogI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIGNvbnN0IEludFBvaW50JiBtb3ZlbWVudERl
bHRhLApAQCAtNzgsNyArNzksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQg
YnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLAogICAgICAgICBFdmVudFRhcmdldCogcmVs
YXRlZFRhcmdldCwgZG91YmxlIGZvcmNlLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5
cGUsIERhdGFUcmFuc2ZlciosIGJvb2wgaXNTaW11bGF0ZWQpOwogCi0gICAgTW91c2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IERPTVdpbmRvdyosCisgICAgTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKICAg
ICAgICAgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJ
bnRQb2ludCYgY2xpZW50TG9jYXRpb24sCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRL
ZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwKICAgICAgICAgdW5zaWduZWQgc2hvcnQg
YnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWND
bGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2
ZW50LmlkbAppbmRleCAwYmUwZjg4ZGQzNWQ3Y2RmYjhkMzU0MmRhZGUxNmUzMjk0ZmRjODNhLi42
MGM0NDY2NjcxZjA2MTlmZWUwOWQwZjAxOTNmOWE0MWY2YjNlODEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01v
dXNlRXZlbnQuaWRsCkBAIC00Myw3ICs0Myw3IEBACiAgICAgLy8gRklYTUU6IHJlbGF0ZWRUYXJn
ZXQgc2hvdWxkIGJlIG9mIHR5cGUgRXZlbnRUYXJnZXQ/IGJ1dCB3ZSBuZWVkIHRvIHVzZSBhbnkg
dG8gc3VwcG9ydCBhIHF1aXJrIGZvciBpQWQgUHJvZHVjZXIgKHJkYXI6Ly9wcm9ibGVtLzMwNjQw
MTAxKS4KICAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
SW1wbGVtZW50ZWRBcz1pbml0TW91c2VFdmVudFF1aXJrXSB2b2lkIGluaXRNb3VzZUV2ZW50KG9w
dGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsCiAgICAgICAgIG9wdGlvbmFsIGJv
b2xlYW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZh
bHNlLAotICAgICAgICBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBs
b25nIGRldGFpbCA9IDAsCisgICAgICAgIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVs
bCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAwLAogICAgICAgICBvcHRpb25hbCBsb25nIHNjcmVl
blggPSAwLCBvcHRpb25hbCBsb25nIHNjcmVlblkgPSAwLCBvcHRpb25hbCBsb25nIGNsaWVudFgg
PSAwLCBvcHRpb25hbCBsb25nIGNsaWVudFkgPSAwLAogICAgICAgICBvcHRpb25hbCBib29sZWFu
IGN0cmxLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBhbHRLZXkgPSBmYWxzZSwgb3B0aW9u
YWwgYm9vbGVhbiBzaGlmdEtleSA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIG1ldGFLZXkgPSBm
YWxzZSwKICAgICAgICAgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgYnV0dG9uID0gMCwgb3B0aW9u
YWwgYW55IHJlbGF0ZWRUYXJnZXQgPSBudWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxh
dGVkRXZlbnQuY3BwCmluZGV4IDg1MzcxNGQ2YWIxZjAxZThhNWVhY2UwZDBlNDM5NzVlYjNkNTg0
OWYuLjgwYTgyNjdkYzIxYmQ4YjNiZjUxODMwZmU0YjMwYTQyYTYxMjAxNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiBET01XaW5kb3csCitN
b3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUg
dGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9j
YXRpb24sIGNvbnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFBv
aW50JiBtb3ZlbWVudERlbHRhLAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBt
ZXRhS2V5LCBib29sIGlzU2ltdWxhdGVkKQotICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVu
dFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCBET01XaW5kb3csIGRldGFp
bCwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSwgZmFsc2UsIGZhbHNlKQorICAg
IDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwg
dGltZXN0YW1wLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIGN0cmxLZXksIGFsdEtleSwgc2hpZnRL
ZXksIG1ldGFLZXksIGZhbHNlLCBmYWxzZSkKICAgICAsIG1fc2NyZWVuTG9jYXRpb24oc2NyZWVu
TG9jYXRpb24pCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAsIG1fbW92ZW1lbnREZWx0
YShtb3ZlbWVudERlbHRhKQpAQCAtNjEsNyArNjEsNyBAQCBNb3VzZVJlbGF0ZWRFdmVudDo6TW91
c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IE1vdXNl
Ugogdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdChib29sIGlzU2ltdWxhdGVkLCBjb25zdCBJ
bnRQb2ludCYgd2luZG93TG9jYXRpb24pCiB7CiAgICAgaWYgKCFpc1NpbXVsYXRlZCkgewotICAg
ICAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJvbURPTVdpbmRvdyh2aWV3KCkp
KSB7CisgICAgICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9tV2luZG93UHJv
eHkodmlldygpKSkgewogICAgICAgICAgICAgRmxvYXRQb2ludCBhYnNvbHV0ZVBvaW50ID0gZnJh
bWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKHdpbmRvd0xvY2F0aW9uKTsKICAgICAgICAgICAgIEZs
b2F0UG9pbnQgZG9jdW1lbnRQb2ludCA9IGZyYW1lVmlldy0+YWJzb2x1dGVUb0RvY3VtZW50UG9p
bnQoYWJzb2x1dGVQb2ludCk7CiAgICAgICAgICAgICBtX3BhZ2VMb2NhdGlvbiA9IGZsb29yZWRM
YXlvdXRQb2ludChkb2N1bWVudFBvaW50KTsKQEAgLTgzLDEzICs4MywxMyBAQCB2b2lkIE1vdXNl
UmVsYXRlZEV2ZW50Ojppbml0Q29vcmRpbmF0ZXMoKQogICAgIG1faGFzQ2FjaGVkUmVsYXRpdmVQ
b3NpdGlvbiA9IGZhbHNlOwogfQogCi1GcmFtZVZpZXcqIE1vdXNlUmVsYXRlZEV2ZW50OjpmcmFt
ZVZpZXdGcm9tRE9NV2luZG93KERPTVdpbmRvdyogd2luZG93KQorRnJhbWVWaWV3KiBNb3VzZVJl
bGF0ZWRFdmVudDo6ZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KFdpbmRvd1Byb3h5KiB3aW5kb3dQ
cm94eSkKIHsKLSAgICBhdXRvKiBmcmFtZSA9IHdpbmRvdyA/IHdpbmRvdy0+ZnJhbWUoKSA6IG51
bGxwdHI7Ci0gICAgaWYgKCFmcmFtZSkKKyAgICBpZiAoIXdpbmRvd1Byb3h5IHx8ICFpczxET01X
aW5kb3c+KHdpbmRvd1Byb3h5LT53aW5kb3coKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIGZyYW1lLT52aWV3KCk7CisgICAgYXV0byogZnJhbWUgPSBkb3duY2FzdDxE
T01XaW5kb3c+KCp3aW5kb3dQcm94eS0+d2luZG93KCkpLmZyYW1lKCk7CisgICAgcmV0dXJuIGZy
YW1lID8gZnJhbWUtPnZpZXcoKSA6IG51bGxwdHI7CiB9CiAKIExheW91dFBvaW50IE1vdXNlUmVs
YXRlZEV2ZW50OjpwYWdlUG9pbnRUb0NsaWVudFBvaW50KExheW91dFBvaW50IHBhZ2VQb2ludCwg
RnJhbWVWaWV3KiBmcmFtZVZpZXcpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBNb3VzZVJlbGF0
ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVzKGNvbnN0IExheW91dFBvaW50JiBjbGllbnRMb2NhdGlv
bikKICAgICAvLyBTZXQgdXAgaW5pdGlhbCB2YWx1ZXMgZm9yIGNvb3JkaW5hdGVzLgogICAgIC8v
IENvcnJlY3QgdmFsdWVzIGFyZSBjb21wdXRlZCBsYXppbHksIHNlZSBjb21wdXRlUmVsYXRpdmVQ
b3NpdGlvbi4KICAgICBGbG9hdFNpemUgZG9jdW1lbnRUb0NsaWVudE9mZnNldDsKLSAgICBpZiAo
YXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJvbURPTVdpbmRvdyh2aWV3KCkpKQorICAgIGlm
IChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9tV2luZG93UHJveHkodmlldygpKSkKICAg
ICAgICAgZG9jdW1lbnRUb0NsaWVudE9mZnNldCA9IGZyYW1lVmlldy0+ZG9jdW1lbnRUb0NsaWVu
dE9mZnNldCgpOwogCiAgICAgbV9jbGllbnRMb2NhdGlvbiA9IGNsaWVudExvY2F0aW9uOwpAQCAt
MTI4LDcgKzEyOCw3IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGluYXRlcyhj
b25zdCBMYXlvdXRQb2ludCYgY2xpZW50TG9jYXRpb24pCiAKIGZsb2F0IE1vdXNlUmVsYXRlZEV2
ZW50Ojpkb2N1bWVudFRvQWJzb2x1dGVTY2FsZUZhY3RvcigpIGNvbnN0CiB7Ci0gICAgaWYgKGF1
dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSkKKyAgICBpZiAo
YXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpCiAgICAg
ICAgIHJldHVybiBmcmFtZVZpZXctPmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFjdG9yKCk7CiAK
ICAgICByZXR1cm4gMTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBmbG9hdCBNb3VzZVJlbGF0ZWRFdmVu
dDo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3IoKSBjb25zdAogCiB2b2lkIE1vdXNlUmVs
YXRlZEV2ZW50Ojpjb21wdXRlUGFnZUxvY2F0aW9uKCkKIHsKLSAgICBtX2Fic29sdXRlTG9jYXRp
b24gPSBwYWdlUG9pbnRUb0Fic29sdXRlUG9pbnQobV9wYWdlTG9jYXRpb24sIGZyYW1lVmlld0Zy
b21ET01XaW5kb3codmlldygpKSk7CisgICAgbV9hYnNvbHV0ZUxvY2F0aW9uID0gcGFnZVBvaW50
VG9BYnNvbHV0ZVBvaW50KG1fcGFnZUxvY2F0aW9uLCBmcmFtZVZpZXdGcm9tV2luZG93UHJveHko
dmlldygpKSk7CiB9CiAKIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OnJlY2VpdmVkVGFyZ2V0KCkK
QEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUmVsYXRp
dmVQb3NpdGlvbigpCiAgICAgCiBGbG9hdFBvaW50IE1vdXNlUmVsYXRlZEV2ZW50Ojpsb2NhdGlv
bkluUm9vdFZpZXdDb29yZGluYXRlcygpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmll
dyA9IGZyYW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSkKKyAgICBpZiAoYXV0byogZnJhbWVW
aWV3ID0gZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpCiAgICAgICAgIHJldHVybiBm
cmFtZVZpZXctPmNvbnRlbnRzVG9Sb290Vmlldyhyb3VuZGVkSW50UG9pbnQobV9hYnNvbHV0ZUxv
Y2F0aW9uKSk7CiAKICAgICByZXR1cm4gbV9hYnNvbHV0ZUxvY2F0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VSZWxhdGVkRXZlbnQuaAppbmRleCAwZDgzYzM2MDlmNzFlYWZlZjIxNzFhOWNkMGQ0
MzFhZTZkODU0ZjhiLi5hZDRlNWQwYzM1NmY1NDFlMDgyZTExYTI2YTJkMGNjMTE1ZmQ1OWM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaApAQCAtNjcsMTQgKzY3LDE0IEBA
IHB1YmxpYzoKICAgICAvLyB1c2FibGUgd2l0aCBSZW5kZXJPYmplY3Q6OmFic29sdXRlVG9Mb2Nh
bCkuCiAgICAgY29uc3QgTGF5b3V0UG9pbnQmIGFic29sdXRlTG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2Fic29sdXRlTG9jYXRpb247IH0KICAgICAKLSAgICBzdGF0aWMgRnJhbWVWaWV3KiBm
cmFtZVZpZXdGcm9tRE9NV2luZG93KERPTVdpbmRvdyopOworICAgIHN0YXRpYyBGcmFtZVZpZXcq
IGZyYW1lVmlld0Zyb21XaW5kb3dQcm94eShXaW5kb3dQcm94eSopOwogCiAgICAgc3RhdGljIExh
eW91dFBvaW50IHBhZ2VQb2ludFRvQ2xpZW50UG9pbnQoTGF5b3V0UG9pbnQgcGFnZVBvaW50LCBG
cmFtZVZpZXcqKTsKICAgICBzdGF0aWMgTGF5b3V0UG9pbnQgcGFnZVBvaW50VG9BYnNvbHV0ZVBv
aW50KExheW91dFBvaW50IHBhZ2VQb2ludCwgRnJhbWVWaWV3Kik7CiAKIHByb3RlY3RlZDoKICAg
ICBNb3VzZVJlbGF0ZWRFdmVudCgpID0gZGVmYXVsdDsKLSAgICBNb3VzZVJlbGF0ZWRFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqLAorICAgIE1vdXNlUmVsYXRlZEV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKICAg
ICAgICAgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJ
bnRQb2ludCYgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAg
ICAgY29uc3QgSW50UG9pbnQmIG1vdmVtZW50RGVsdGEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNGIx
ZTg3MjU3OTUzM2ZiZjc4NzEyZmQ2ZDIzZDJjODE1YjAzZWIzOC4uYmJhNjc4YTJhNzFiNjRlMjVi
MmYwMDc3ZGY5NjU0Y2RkYjFmYzYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIkNvbXBvc2VkVHJlZUFuY2VzdG9ySXRlcmF0b3IuaCIKICNpbmNsdWRlICJD
b250YWluZXJOb2RlQWxnb3JpdGhtcy5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlci5oIgog
I2luY2x1ZGUgIkRvY3VtZW50VHlwZS5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgpA
QCAtMjM1MCw3ICsyMzUxLDcgQEAgdm9pZCBOb2RlOjpkaXNwYXRjaERPTUFjdGl2YXRlRXZlbnQo
RXZlbnQmIHVuZGVybHlpbmdDbGlja0V2ZW50KQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkOjppc1Njcmlw
dEFsbG93ZWQoKSk7CiAgICAgaW50IGRldGFpbCA9IGlzPFVJRXZlbnQ+KHVuZGVybHlpbmdDbGlj
a0V2ZW50KSA/IGRvd25jYXN0PFVJRXZlbnQ+KHVuZGVybHlpbmdDbGlja0V2ZW50KS5kZXRhaWwo
KSA6IDA7Ci0gICAgYXV0byBldmVudCA9IFVJRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9N
QWN0aXZhdGVFdmVudCwgdHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCBkZXRh
aWwpOworICAgIGF1dG8gZXZlbnQgPSBVSUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTUFj
dGl2YXRlRXZlbnQsIHRydWUsIHRydWUsIGRvY3VtZW50KCkud2luZG93UHJveHkoKSwgZGV0YWls
KTsKICAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KCZ1bmRlcmx5aW5nQ2xpY2tFdmVudCk7
CiAgICAgZGlzcGF0Y2hTY29wZWRFdmVudChldmVudCk7CiAgICAgaWYgKGV2ZW50LT5kZWZhdWx0
SGFuZGxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRlZENsaWNr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAKaW5kZXggZTBmNGUz
NTJlY2ExOGRjZGM4NTkyNDkyZWM1MDg0MjkyOGFiNjU3NC4uZjQ2NDM5YWE2MGY2NmYxYTYyMjRh
ZmU3Y2E2OWFkOWU4NDJkMDZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXVs
YXRlZENsaWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltdWxhdGVkQ2xpY2suY3Bw
CkBAIC0zNywxNCArMzcsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaW11bGF0
ZWRNb3VzZUV2ZW50IGZpbmFsIDogcHVibGljIE1vdXNlRXZlbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8U2ltdWxhdGVkTW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZl
bnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVkQ2xpY2tTb3VyY2Ugc291cmNlKQorICAgIHN0
YXRpYyBSZWY8U2ltdWxhdGVkTW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgUmVmUHRyPEV2ZW50PiYmIHVu
ZGVybHlpbmdFdmVudCwgRWxlbWVudCYgdGFyZ2V0LCBTaW11bGF0ZWRDbGlja1NvdXJjZSBzb3Vy
Y2UpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW11bGF0ZWRNb3VzZUV2
ZW50KGV2ZW50VHlwZSwgdmlldywgV1RGTW92ZSh1bmRlcmx5aW5nRXZlbnQpLCB0YXJnZXQsIHNv
dXJjZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW11bGF0ZWRNb3VzZUV2ZW50
KGV2ZW50VHlwZSwgV1RGTW92ZSh2aWV3KSwgV1RGTW92ZSh1bmRlcmx5aW5nRXZlbnQpLCB0YXJn
ZXQsIHNvdXJjZSkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTaW11bGF0ZWRNb3VzZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxF
dmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVkQ2xpY2tT
b3VyY2Ugc291cmNlKQotICAgICAgICA6IE1vdXNlRXZlbnQoZXZlbnRUeXBlLCB0cnVlLCB0cnVl
LCB1bmRlcmx5aW5nRXZlbnQgPyB1bmRlcmx5aW5nRXZlbnQtPnRpbWVTdGFtcCgpIDogTW9ub3Rv
bmljVGltZTo6bm93KCksIHZpZXcsIDAsIHsgfSwgeyB9LAorICAgIFNpbXVsYXRlZE1vdXNlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3LCBSZWZQdHI8RXZlbnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQsIFNp
bXVsYXRlZENsaWNrU291cmNlIHNvdXJjZSkKKyAgICAgICAgOiBNb3VzZUV2ZW50KGV2ZW50VHlw
ZSwgdHJ1ZSwgdHJ1ZSwgdW5kZXJseWluZ0V2ZW50ID8gdW5kZXJseWluZ0V2ZW50LT50aW1lU3Rh
bXAoKSA6IE1vbm90b25pY1RpbWU6Om5vdygpLCBXVEZNb3ZlKHZpZXcpLCAwLCB7IH0sIHsgfSwK
ICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICAgICAgeyB9LAogI2VuZGlmCkBAIC03
OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAKIHN0YXRpYyB2b2lkIHNpbXVsYXRlTW91c2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYgZWxlbWVudCwgRXZlbnQqIHVu
ZGVybHlpbmdFdmVudCwgU2ltdWxhdGVkQ2xpY2tTb3VyY2Ugc291cmNlKQogewotICAgIGVsZW1l
bnQuZGlzcGF0Y2hFdmVudChTaW11bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBl
bGVtZW50LmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdW5kZXJseWluZ0V2ZW50LCBlbGVtZW50
LCBzb3VyY2UpKTsKKyAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoU2ltdWxhdGVkTW91c2VFdmVu
dDo6Y3JlYXRlKGV2ZW50VHlwZSwgZWxlbWVudC5kb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIHVu
ZGVybHlpbmdFdmVudCwgZWxlbWVudCwgc291cmNlKSk7CiB9CiAKIHZvaWQgc2ltdWxhdGVDbGlj
ayhFbGVtZW50JiBlbGVtZW50LCBFdmVudCogdW5kZXJseWluZ0V2ZW50LCBTaW11bGF0ZWRDbGlj
a01vdXNlRXZlbnRPcHRpb25zIG1vdXNlRXZlbnRPcHRpb25zLCBTaW11bGF0ZWRDbGlja1Zpc3Vh
bE9wdGlvbnMgdmlzdWFsT3B0aW9ucywgU2ltdWxhdGVkQ2xpY2tTb3VyY2UgY3JlYXRpb25PcHRp
b25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAppbmRleCBiZDAyNGVhNTVmNmJhODRlMzJjOTA0
NDZmY2JmODI4MjA0ZDJjMzBjLi5iMDk0NDkzYzFmODU1ODQ5ODg5M2MyY2I3YzBkMDc0NmI2YWI1
YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcApAQCAtMzgsMjkgKzM4LDI5IEBAIFJlZjxU
ZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFRleHRFdmVudCk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3Jl
YXRlKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5
cGUgaW5wdXRUeXBlKQorUmVmPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGUoUmVmUHRyPFdp
bmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBl
IGlucHV0VHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQodmlldywg
ZGF0YSwgaW5wdXRUeXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdU
Rk1vdmUodmlldyksIGRhdGEsIGlucHV0VHlwZSkpOwogfQogCi1SZWY8VGV4dEV2ZW50PiBUZXh0
RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKERPTVdpbmRvdyogdmlldywgY29uc3QgU3Ry
aW5nJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSkKK1JlZjxUZXh0RXZlbnQ+IFRleHRF
dmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcs
IGNvbnN0IFN0cmluZyYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KHZpZXcsIGRhdGEsIDAsIHNob3VsZFNtYXJ0UmVw
bGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdURk1vdmUodmlldyksIGRhdGEs
IDAsIHNob3VsZFNtYXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJl
c3BlY3RCbG9ja3F1b3RlKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRl
Rm9yRnJhZ21lbnRQYXN0ZShET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiYmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUs
IE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKK1JlZjxUZXh0
RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRT
bWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGlu
ZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRl
eHRFdmVudCh2aWV3LCBlbXB0eVN0cmluZygpLCBXVEZNb3ZlKGRhdGEpLCBzaG91bGRTbWFydFJl
cGxhY2UsIHNob3VsZE1hdGNoU3R5bGUsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZW1wdHlTdHJpbmco
KSwgV1RGTW92ZShkYXRhKSwgc2hvdWxkU21hcnRSZXBsYWNlLCBzaG91bGRNYXRjaFN0eWxlLCBt
YWlsQmxvY2txdW90ZUhhbmRsaW5nKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6
Y3JlYXRlRm9yRHJvcChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxU
ZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRl
eHRFdmVudCh2aWV3LCBkYXRhLCBUZXh0RXZlbnRJbnB1dERyb3ApKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZGF0YSwgVGV4dEV2ZW50SW5wdXRE
cm9wKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRGljdGF0aW9u
KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0
aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCitSZWY8VGV4dEV2ZW50PiBU
ZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3RhdGlvbihSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywg
Y29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBk
aWN0YXRpb25BbHRlcm5hdGl2ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2
ZW50KHZpZXcsIGRhdGEsIGRpY3RhdGlvbkFsdGVybmF0aXZlcykpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFRleHRFdmVudChXVEZNb3ZlKHZpZXcpLCBkYXRhLCBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMpKTsKIH0KIAogVGV4dEV2ZW50OjpUZXh0RXZlbnQoKQpAQCAtNzEsOCArNzEsOCBAQCBU
ZXh0RXZlbnQ6OlRleHRFdmVudCgpCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdp
bmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRU
eXBlKQotICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRy
dWUsIHZpZXcsIDApCitUZXh0RXZlbnQ6OlRleHRFdmVudChSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRUeXBlKQor
ICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIFdU
Rk1vdmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAgLCBtX2Rh
dGEoZGF0YSkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtODEsOCArODEs
OCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYg
ZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlIGlucAogewogfQogCi1UZXh0RXZlbnQ6OlRleHRFdmVu
dChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBz
aG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFu
ZGxpbmcpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwg
dHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQcm94eT4m
JiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIHBh
c3RpbmdGcmFnbWVudCwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hT
dHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQorICAg
IDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIFdURk1v
dmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShUZXh0RXZlbnRJbnB1dFBhc3RlKQogICAg
ICwgbV9kYXRhKGRhdGEpCiAgICAgLCBtX3Bhc3RpbmdGcmFnbWVudChXVEZNb3ZlKHBhc3RpbmdG
cmFnbWVudCkpCkBAIC05Miw4ICs5Miw4IEBAIFRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRv
dyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVuCiB7CiB9
CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBk
YXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwg
dHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQcm94eT4m
JiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5h
dGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcykKKyAgICA6IFVJRXZlbnQoZXZlbnROYW1lcygp
LnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0cnVlLCBXVEZNb3ZlKHZpZXcpLCAwKQogICAgICwgbV9p
bnB1dFR5cGUoVGV4dEV2ZW50SW5wdXREaWN0YXRpb24pCiAgICAgLCBtX2RhdGEoZGF0YSkKICAg
ICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtMTA1LDEyICsxMDUsMTIgQEAgVGV4
dEV2ZW50OjpUZXh0RXZlbnQoRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNv
bnN0IFZlY3RvcjxEaWN0YXRpb24KIAogVGV4dEV2ZW50Ojp+VGV4dEV2ZW50KCkgPSBkZWZhdWx0
OwogCi12b2lkIFRleHRFdmVudDo6aW5pdFRleHRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhKQordm9pZCBUZXh0RXZlbnQ6OmluaXRUZXh0RXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIGlmIChpc0Jl
aW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbml0VUlFdmVudCh0eXBl
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAgICBtX2lucHV0
VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaAppbmRl
eCAyOWViMjZkMGUwNzRiNTRkMzQ2MzU2MDQyODBkMTJhNjk4OGFmOGRhLi4wYWUyYWM4NjNmYjgx
YmJiMjg2Mzg1MTY1YjZiMTI1MWQyZGZiMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oCkBAIC0z
OCwxNiArMzgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgVGV4dEV2ZW50
IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJl
ZjxUZXh0RXZlbnQ+IGNyZWF0ZShET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRF
dmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOworICAgICAgICBzdGF0aWMg
UmVmPFRleHRFdmVudD4gY3JlYXRlKFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgU3RyaW5n
JiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJkKTsKICAg
ICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7Ci0gICAgICAg
IHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShET01XaW5kb3cq
LCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKLSAgICAgICAg
c3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoRE9NV2luZG93Kiwg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2Us
IGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0gICAgICAg
IHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEcm9wKERPTVdpbmRvdyosIGNvbnN0IFN0
cmluZyYgZGF0YSk7Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEaWN0
YXRpb24oRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0
aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgICAgICBzdGF0aWMg
UmVmPFRleHRFdmVudD4gY3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5
PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKKyAgICAg
ICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoUmVmUHRyPFdp
bmRvd1Byb3h5PiYmLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBkYXRhLCBib29sIHNob3Vs
ZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRs
aW5nKTsKKyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRyb3AoUmVmUHRy
PFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBzdGF0aWMgUmVm
PFRleHRFdmVudD4gY3JlYXRlRm9yRGljdGF0aW9uKFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29u
c3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0
YXRpb25BbHRlcm5hdGl2ZXMpOwogCiAgICAgICAgIHZpcnR1YWwgflRleHRFdmVudCgpOwogICAg
IAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cq
LCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRU
ZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBj
YW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAg
ICAgCiAgICAgICAgIFN0cmluZyBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKQEAg
LTcxLDkgKzcxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAg
IFRleHRFdmVudCgpOwogCi0gICAgICAgIFRleHRFdmVudChET01XaW5kb3cqLCBjb25zdCBTdHJp
bmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOwot
ICAgICAgICBUZXh0RXZlbnQoRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4mJiwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxk
TWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0gICAgICAgIFRleHRFdmVudChE
T01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRl
cm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgICAgIFRleHRFdmVudChSZWZQ
dHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBl
ID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7CisgICAgICAgIFRleHRFdmVudChSZWZQdHI8V2lu
ZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
JiYsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxC
bG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBUZXh0RXZlbnQoUmVmUHRyPFdpbmRvd1Byb3h5
PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2
ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAKICAgICAgICAgYm9vbCBpc1RleHRFdmVudCgp
IGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2
ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCmluZGV4IDM2NDA2NWZh
ODJkNDE4OTljMGM1MjMyNTBjMmYyNzk5NzcwZDNlMGUuLmNlOGIzMGFjYjNjNzFmZmRmODI4YjIx
ODEwNjVhYWExZjhhMTI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZl
bnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCkBAIC0zMiw3ICsz
Miw3IEBAIGludGVyZmFjZSBUZXh0RXZlbnQgOiBVSUV2ZW50IHsKICAgICB2b2lkIGluaXRUZXh0
RXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZpbmVkIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGVBcmcgPSBmYWxzZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlQXJnID0gZmFs
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlld0FyZyA9
IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3
QXJnID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3RyaW5nIGRh
dGFBcmcgPSAidW5kZWZpbmVkIik7CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVG91Y2hFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKaW5k
ZXggNjFjMDhmMjFkYTM4YmFhN2ExMTBmMjJkY2E2YTU3YmU5M2I2ODNlNy4uMDAyMzdjZGFkNTY4
Mzc5NTJkOTNhOTdkZTI2YTk5ZTllYWZjMzkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RvdWNoRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNw
cApAQCAtMzgsOSArMzgsOSBAQCBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KCkgPSBkZWZhdWx0Owog
CiBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91Y2hMaXN0KiB0
YXJnZXRUb3VjaGVzLAogICAgICAgICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzLCBjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICBET01XaW5kb3cqIHZpZXcsIGludCBzY3JlZW5Y
LCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAgICAgIFJlZlB0cjxXaW5k
b3dQcm94eT4mJiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50
IHBhZ2VZLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXkpCi0gICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVlLCB0cnVl
LCBNb25vdG9uaWNUaW1lOjpub3coKSwgdmlldywgMCwgSW50UG9pbnQoc2NyZWVuWCwgc2NyZWVu
WSksCisgICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCBNb25vdG9uaWNU
aW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwgMCwgSW50UG9pbnQoc2NyZWVuWCwgc2NyZWVuWSks
CiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChwYWdlWCwgcGFnZVkpLAogI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludCgwLCAw
KSwKQEAgLTY0LDEzICs2NCwxMyBAQCBUb3VjaEV2ZW50Ojp+VG91Y2hFdmVudCgpID0gZGVmYXVs
dDsKIAogdm9pZCBUb3VjaEV2ZW50Ojppbml0VG91Y2hFdmVudChUb3VjaExpc3QqIHRvdWNoZXMs
IFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywKICAgICAgICAgVG91Y2hMaXN0KiBjaGFuZ2VkVG91
Y2hlcywgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAKLSAgICAgICAgRE9NV2luZG93KiB2aWV3
LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwKKyAg
ICAgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVu
WSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wg
YWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAgICAgaWYgKGlzQmVpbmdE
aXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRVSUV2ZW50KHR5cGUsIHRy
dWUsIHRydWUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIHRydWUsIHRydWUsIFdU
Rk1vdmUodmlldyksIDApOwogCiAgICAgbV90b3VjaGVzID0gdG91Y2hlczsKICAgICBtX3Rhcmdl
dFRvdWNoZXMgPSB0YXJnZXRUb3VjaGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1RvdWNoRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKaW5kZXggZDMz
OWMwYjcyYjEzZDQ1NWE1ZTAzODY2ZTU1NzIwY2NmNmJmMWVkYi4uODVmYTE2MWYyMTk2ZDNmMmEw
NWQ5YTMxYTExN2IwYTFhZjg2NmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Rv
dWNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCkBAIC00MSwx
MiArNDEsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxUb3VjaEV2ZW50PiBjcmVhdGUo
VG91Y2hMaXN0KiB0b3VjaGVzLCAKICAgICAgICAgICAgIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hl
cywgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgCi0gICAgICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIERPTVdpbmRvdyogdmlldywKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgICAgICAgICBpbnQg
c2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogICAgICAgICAgICAg
Ym9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVG91Y2hFdmVudCh0b3VjaGVzLCB0
YXJnZXRUb3VjaGVzLCBjaGFuZ2VkVG91Y2hlcywKLSAgICAgICAgICAgICAgICB0eXBlLCB2aWV3
LCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksCisgICAgICAgICAgICAgICAgdHlwZSwg
V1RGTW92ZSh2aWV3KSwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLAogICAgICAgICAg
ICAgICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpKTsKICAgICB9CiAgICAg
c3RhdGljIFJlZjxUb3VjaEV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBAIC02Nyw3ICs2Nyw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVz
LCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3QqIGNoYW5n
ZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICAgICAgRE9NV2lu
ZG93KiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLAorICAgICAgICAgICAgUmVmUHRyPFdpbmRv
d1Byb3h5PiYmLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksCiAgICAgICAgICAgICBpbnQgY2xp
ZW50WCwgaW50IGNsaWVudFksCiAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5
LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZh
dGU6CiAgICAgVG91Y2hFdmVudCgpOwogICAgIFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVz
LCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3QqIGNoYW5n
ZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsCi0gICAgICAgICAgICBET01XaW5k
b3cqLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwKKyAgICAgICAgICAgIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgs
CiAgICAgICAgICAgICBpbnQgcGFnZVksCiAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wg
YWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogICAgIFRvdWNoRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91
Y2hFdmVudC5pZGwKaW5kZXggODEwNTgzNTdlZDNhYTc3NzRkMjZmYWZhZTE2MDNiMTVkZGUwZDYw
Yi4uNTRlOTlkYjQ4MzBmMzBkNDYyNjQyZTMzZDQzOTU2OTNiMTNmMmIwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ub3VjaEV2ZW50LmlkbApAQCAtNDAsNyArNDAsNyBAQAogICAgICAgICAgICAgICAgICAgICAg
ICAgb3B0aW9uYWwgVG91Y2hMaXN0PyB0YXJnZXRUb3VjaGVzID0gbnVsbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wdGlvbmFsIFRvdWNoTGlzdD8gY2hhbmdlZFRvdWNoZXMgPSBudWxsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5kZWZp
bmVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlldyA9
IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmll
dyA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBsb25nIHNjcmVlblgg
PSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGxvbmcgY2xpZW50WCA9IDAsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVUlFdmVudC5jcHAKaW5kZXggYWIyMGVlY2I5YzU4MzFkZWYwMjc5Y2E3OGEwZTdjYzVmYTg1
NjIxNy4uMGE2ZjgxYWY1MjM3MTZmNzU4MTc4ZjBmOTUzNDRjZGM2NTViODAwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9VSUV2ZW50LmNwcApAQCAtMzIsMTYgKzMyLDE2IEBAIFVJRXZlbnQ6OlVJRXZlbnQoKQogewog
fQogCi1VSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29s
IGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBET01XaW5kb3cqIHZpZXdBcmcsIGlu
dCBkZXRhaWxBcmcpCitVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwg
Y2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnKQotICAgICwgbV92aWV3KHZpZXdBcmcpCisgICAg
LCBtX3ZpZXcoV1RGTW92ZSh2aWV3QXJnKSkKICAgICAsIG1fZGV0YWlsKGRldGFpbEFyZykKIHsK
IH0KIAotVUlFdmVudDo6VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9v
bCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgTW9ub3RvbmljVGltZSB0aW1lc3Rh
bXAsIERPTVdpbmRvdyogdmlld0FyZywgaW50IGRldGFpbEFyZykKK1VJRXZlbnQ6OlVJRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNh
bmNlbGFibGVBcmcsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgY2FuQnVi
YmxlQXJnLCBjYW5jZWxhYmxlQXJnLCB0aW1lc3RhbXApCi0gICAgLCBtX3ZpZXcodmlld0FyZykK
KyAgICAsIG1fdmlldyhXVEZNb3ZlKHZpZXdBcmcpKQogICAgICwgbV9kZXRhaWwoZGV0YWlsQXJn
KQogewogfQpAQCAtNTUsNyArNTUsNyBAQCBVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBjb25zdCBVSUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIsCiAKIFVJRXZl
bnQ6On5VSUV2ZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFVJRXZlbnQ6OmluaXRVSUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZUFyZywgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2Vs
YWJsZUFyZywgRE9NV2luZG93KiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQordm9pZCBVSUV2ZW50
Ojppbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVBcmcsIGJvb2wgY2FuQnViYmxl
QXJnLCBib29sIGNhbmNlbGFibGVBcmcsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3QXJnLCBp
bnQgZGV0YWlsQXJnKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnQuaAppbmRleCBiYWE3MzFmY2Y4MWVlYmFmMjMxNTNkYTUxYmEw
YWVhZmQyNDU1ZmFjLi41MGYyZDE3NzE5OTQyZTQ3M2ZkZWM5YjFhODg0ODYwNTkzY2QxOWE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50LmgKQEAgLTIzLDIwICsyMywyMCBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiVUlF
dmVudEluaXQuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIG5vIG9uZSBpcyBkZXBlbmRpbmcgb24g
aXQgYW55bW9yZS4KLXR5cGVkZWYgRE9NV2luZG93IEFic3RyYWN0VmlldzsKK3R5cGVkZWYgV2lu
ZG93UHJveHkgQWJzdHJhY3RWaWV3OwogCiBjbGFzcyBVSUV2ZW50IDogcHVibGljIEV2ZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmll
dywgaW50IGRldGFpbCkKKyAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRl
dGFpbCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVSUV2ZW50KHR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKSk7CiAgICAgfQogICAgIHN0
YXRpYyBSZWY8VUlFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHsKQEAgLTQ4LDkgKzQ4
LDkgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5VSUV2ZW50KCk7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGluaXRVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4m
JiwgaW50IGRldGFpbCk7CiAKLSAgICBET01XaW5kb3cqIHZpZXcoKSBjb25zdCB7IHJldHVybiBt
X3ZpZXcuZ2V0KCk7IH0KKyAgICBXaW5kb3dQcm94eSogdmlldygpIGNvbnN0IHsgcmV0dXJuIG1f
dmlldy5nZXQoKTsgfQogICAgIGludCBkZXRhaWwoKSBjb25zdCB7IHJldHVybiBtX2RldGFpbDsg
fQogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsK
QEAgLTY1LDE0ICs2NSwxNCBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVSUV2ZW50KCk7
Ci0gICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwpOwotICAgIFVJRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBN
b25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7CisgICAgVUlF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCk7CisgICAgVUlFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRh
aWwpOwogICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVUlFdmVudEluaXQm
LCBJc1RydXN0ZWQpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNVSUV2ZW50KCkgY29uc3QgZmlu
YWw7CiAKLSAgICBSZWZQdHI8RE9NV2luZG93PiBtX3ZpZXc7CisgICAgUmVmUHRyPFdpbmRvd1By
b3h5PiBtX3ZpZXc7CiAgICAgaW50IG1fZGV0YWlsOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRs
CmluZGV4IDg3YjM5MTUyODMwMzE5N2UzNmM2NGMxZTcwOGZmYjYwY2JhZDk1MDMuLjZhMzVjNTdh
Mzg3NGJjOGVjNjNkNmQ5MjRkNDI4YjJiNTgxMDBmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5pZGwK
QEAgLTIwLDExICsyMCwxMSBAQAogWwogICAgIENvbnN0cnVjdG9yKERPTVN0cmluZyB0eXBlLCBv
cHRpb25hbCBVSUV2ZW50SW5pdCBldmVudEluaXREaWN0KQogXSBpbnRlcmZhY2UgVUlFdmVudCA6
IEV2ZW50IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IHZpZXc7CisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHZpZXc7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGxvbmcgZGV0YWlsOwogICAgIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBk
ZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICB2b2lkIGluaXRVSUV2ZW50KG9w
dGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIGJvb2xlYW4gY2Fu
QnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZhbHNlLCBvcHRp
b25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBsb25nIGRldGFpbCA9IDApOwor
ICAgIHZvaWQgaW5pdFVJRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5kZWZpbmVk
Iiwgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGUgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBj
YW5jZWxhYmxlID0gZmFsc2UsIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwgb3B0
aW9uYWwgbG9uZyBkZXRhaWwgPSAwKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxh
eWVyWDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsYXllclk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2
ZW50SW5pdC5oCmluZGV4IDAzMTZiYzA2ZjU2OGU1MzkxNmRmNjk2ZjQxNDQ1YmE5ZmMzMWZmMzYu
LmUxMTI4YTc2ZGU1ODYwMTYyZmE5NzZkY2RjODI3MTcwZDhmMmYzYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9V
SUV2ZW50SW5pdC5oCkBAIC0yNSwxNCArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudEluaXQuaCIKKyNpbmNsdWRlICJXaW5k
b3dQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdHJ1Y3QgVUlFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKLSAgICBSZWZQdHI8
RE9NV2luZG93PiB2aWV3OworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gdmlldzsKICAgICBpbnQg
ZGV0YWlsIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZl
bnRJbml0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5pZGwKaW5kZXggMGQ3
ZWI4ZWZjMWM1MzdhOTA1MTE3YjYxMjExMWFkMDFlYjFlMGFhMi4uM2NjYmJlZDYwNzU1ZjZmMjE2
NTJmNWJhNjFlNmYzODI0MGMxN2ZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VJ
RXZlbnRJbml0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaWRsCkBA
IC0yNCw2ICsyNCw2IEBACiAgKi8KIAogZGljdGlvbmFyeSBVSUV2ZW50SW5pdCA6IEV2ZW50SW5p
dCB7Ci0gICAgRE9NV2luZG93PyB2aWV3ID0gbnVsbDsKKyAgICBXaW5kb3dQcm94eT8gdmlldyA9
IG51bGw7CiAgICAgbG9uZyBkZXRhaWwgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVu
dFdpdGhLZXlTdGF0ZS5oCmluZGV4IDBhOGU0MDMxMjQ4ZDZmNzI2NTQ0MmU1YmY4MDAxMmJhMzBj
Y2NkZWIuLjA4NWEwMzE3ZWM4ZGNlM2E2MGZlMjZhZmE1YTE2MmVhMmE5YTA1MWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaApAQCAtNDAsOCArNDAsOCBAQCBwdWJs
aWM6CiBwcm90ZWN0ZWQ6CiAgICAgVUlFdmVudFdpdGhLZXlTdGF0ZSgpID0gZGVmYXVsdDsKIAot
ICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGJv
b2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSkKLSAg
ICAgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWls
KQorICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywg
aW50IGRldGFpbCwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9v
bCBtZXRhS2V5KQorICAgICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCiAg
ICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQogICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkp
CkBAIC00OSw5ICs0OSw5IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQogCi0gICAgVUlFdmVu
dFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqIHZpZXcs
CisgICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICAgICAgaW50IGRldGFpbCwgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBib29sIGFsdEdyYXBo
S2V5LCBib29sIGNhcHNMb2NrS2V5KQotICAgICAgICAgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2aWV3LCBkZXRhaWwpCisgICAgICAgICAgICA6
IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIFdURk1vdmUo
dmlldyksIGRldGFpbCkKICAgICAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCiAgICAgICAg
ICAgICAsIG1fYWx0S2V5KGFsdEtleSkKICAgICAgICAgICAgICwgbV9zaGlmdEtleShzaGlmdEtl
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAppbmRleCBkMmI4ZmI3MmQ5MTk4ZTE0YmY3NThj
YTNhZmJjMWVjMjQ3ZjcxY2JkLi41MzdjYjE5M2M4MTNmNTI3YWM1MzNjOTMwODkwODdiZGIzNjhi
ZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCkBAIC00Nyw4ICs0Nyw4IEBAIGlubGlu
ZSBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3Qg
SW5pdCYgaW5pdGlhbGl6ZXIsCiB7CiB9CiAKLWlubGluZSBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogdmlldykKLSAgICA6
IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUsIGV2ZW50LnRp
bWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LCAwLCBldmVudC5nbG9i
YWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCitpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxF
dmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlldykKKyAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUs
IHRydWUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCBXVEZN
b3ZlKHZpZXcpLCAwLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCiAj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgLCB7IH0KICNlbmRpZgpAQCAtNjEsOSAr
NjEsOSBAQCBpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHZpZXcpCiB7CiB9CiAKLVJlZjxXaGVlbEV2ZW50PiBX
aGVlbEV2ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgRE9NV2lu
ZG93KiB2aWV3KQorUmVmPFdoZWVsRXZlbnQ+IFdoZWVsRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXaGVlbEV2ZW50KGV2ZW50LCB2aWV3KSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2hlZWxFdmVudChldmVudCwgV1RGTW92ZSh2aWV3KSkpOwogfQog
CiBSZWY8V2hlZWxFdmVudD4gV2hlZWxFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQpAQCAtNzYs
MTIgKzc2LDEyIEBAIFJlZjxXaGVlbEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsCiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2hlZWxFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiB9CiAKLXZv
aWQgV2hlZWxFdmVudDo6aW5pdFdlYktpdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwgaW50IHJh
d0RlbHRhWSwgRE9NV2luZG93KiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBw
YWdlWCwgaW50IHBhZ2VZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXkpCit2b2lkIFdoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2ZW50KGlu
dCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBp
bnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29sIGN0cmxL
ZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAgICAgaWYg
KGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpbml0TW91
c2VFdmVudChldmVudE5hbWVzKCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCwgc2Ny
ZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBt
ZXRhS2V5LCAwLCBudWxscHRyKTsKKyAgICBpbml0TW91c2VFdmVudChldmVudE5hbWVzKCkud2hl
ZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCwgc2NyZWVuWCwgc2NyZWVuWSwg
cGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCAwLCBudWxs
cHRyKTsKIAogICAgIC8vIE5vcm1hbGl6ZSB0byAxMjAgbXVsdGlwbGUgZm9yIGNvbXBhdGliaWxp
dHkgd2l0aCBJRS4KICAgICBtX3doZWVsRGVsdGEgPSB7IHJhd0RlbHRhWCAqIFRpY2tNdWx0aXBs
aWVyLCByYXdEZWx0YVkgKiBUaWNrTXVsdGlwbGllciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1doZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgK
aW5kZXggNGQzNGIzMGQ2ZGVkNWVmMjgxNWE4MTM3ZTRjMjk3ZTY0MWFkZTZkYS4uMTBiNjJlMDVj
NzAxNTYwNzZmZmU1Y2YxMjczOTdlYzEzMjNkZDJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1doZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5o
CkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAgICAgRE9NX0RFTFRBX1BBR0UKICAgICB9
OwogCi0gICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAgICBz
dGF0aWMgUmVmPFdoZWVsRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBzdHJ1Y3Qg
SW5pdCA6IE1vdXNlRXZlbnRJbml0IHsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBj
b25zdCBJbml0JiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGluaXRXZWJLaXRXaGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0
YVksIERPTVdpbmRvdyosIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQg
cGFnZVksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0
YUtleSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChpbnQg
cmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBzY3Jl
ZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwgYm9v
bCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CiAKICAgICBjb25zdCBzdGQ6
Om9wdGlvbmFsPFBsYXRmb3JtV2hlZWxFdmVudD4mIHVuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KCkg
Y29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudDsgfQogCkBAIC03NSw3ICs3
NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2hlZWxFdmVudCgpOwogICAgIFdoZWVsRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7Ci0gICAgV2hl
ZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBET01XaW5kb3cqKTsKKyAgICBXaGVl
bEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFJlZlB0cjxXaW5kb3dQcm94eT4mJik7
CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vV2hlZWxFdmVudC5pZGwKaW5kZXggOTNjNTNhNGJmYjJkYWY0YmQ0NDI3Mzg2NmE5
MmNlZDRhMWMxYzM4Ni4uYjI4MWRhMWM2NjA0NGE4YTkzZDYwZDkwZWRkZjUxZDE0YzZjOTM0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmlkbApAQCAtMzksNyArMzksNyBAQAogCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0RGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNl
OwogCi0gICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRpb25hbCBsb25nIHdoZWVsRGVs
dGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAsIG9wdGlvbmFsIERPTVdpbmRv
dz8gdmlldyA9IG51bGwsCisgICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRpb25hbCBs
b25nIHdoZWVsRGVsdGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAsIG9wdGlv
bmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwKICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3Jl
ZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRY
ID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRZID0gMCwKICAgICAgICAgb3B0aW9uYWwgYm9vbGVh
biBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFsc2UsCiAgICAg
ICAgIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBt
ZXRhS2V5ID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZDE0NzI0Mjc3MjM3NDY4ZDRmNjFmZmUzM2M3
NWZlNDZhODE5MjNkYy4uZDQ1M2Y2NDQwYWQ0NmViZTMwYTBjYmE5ZWFlMjIyNzQxYTVhYmY0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwCkBAIC02MzIsNyArNjMyLDcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyOjppbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWMKICAg
ICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpCiAgICAgICAgIHZpZXctPmRp
c2FibGVMYXllckZsdXNoVGhyb3R0bGluZ1RlbXBvcmFyaWx5Rm9ySW50ZXJhY3Rpb24oKTsKIAot
ICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24o
bV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRp
dmVzKTsKKyAgICBhdXRvIGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24oJm1f
ZnJhbWUud2luZG93UHJveHkoKSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICBl
dmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KHRyaWdnZXJpbmdFdmVudCk7CiAKICAgICB0YXJnZXQt
PmRpc3BhdGNoRXZlbnQoZXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGNi
OGI2YjhiYmFjODViYzBlMzJkZWQyZWYzMzljMjQxMDI5MGQzMTkuLjZjNjY5MDc4MDhkN2IzMjFh
YTllNjE4NDE4OTYwNmFkZjQ5ZTdjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAg
LTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgYm9vbCBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnQoRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnB1dAogICAgIGlmICghZWxlbWVu
dC5kb2N1bWVudCgpLnNldHRpbmdzKCkuaW5wdXRFdmVudHNFbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgYXV0byBldmVudCA9IElucHV0RXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuYmVmb3JlaW5wdXRFdmVudCwgaW5wdXRUeXBlLCB0cnVlLCBjYW5jZWxhYmxlLCBlbGVt
ZW50LmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIp
LCB0YXJnZXRSYW5nZXMsIDApOworICAgIGF1dG8gZXZlbnQgPSBJbnB1dEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmJlZm9yZWlucHV0RXZlbnQsIGlucHV0VHlwZSwgdHJ1ZSwgY2FuY2VsYWJs
ZSwgZWxlbWVudC5kb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIGRhdGEsIFdURk1vdmUoZGF0YVRy
YW5zZmVyKSwgdGFyZ2V0UmFuZ2VzLCAwKTsKICAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoZXZl
bnQpOwogICAgIHJldHVybiAhZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0KQEAgLTEyNyw3
ICsxMjcsNyBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaElucHV0RXZlbnQoRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnB1dFR5cGUsCiAgICAgICAgIC8vIGJ1dCBUeXBpbmdD
b21tYW5kcyBhcmUgc3BlY2lhbCBpbiB0aGF0IGV4aXN0aW5nIFR5cGluZ0NvbW1hbmRzIHRoYXQg
YXJlIGFwcGxpZWQgYWdhaW4gZmlyZSBpbnB1dCBldmVudHMgKmZyb20gd2l0aGluKiB0aGUgc2Nv
cGUgYnkgY2FsbGluZyB0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQuCiAgICAgICAgIC8vIEluc3Rl
YWQsIFR5cGluZ0NvbW1hbmRzIHNob3VsZCBhbHdheXMgZGlzcGF0Y2ggZXZlbnRzIHN5bmNocm9u
b3VzbHkgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc2NvcGVkIHF1ZXVlIGluIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjphcHBseS4gVG8gd29yayBhcm91bmQgdGhpcyBmb3IgdGhlCiAgICAgICAgIC8vIHRp
bWUgYmVpbmcsIGp1c3QgcmV2ZXJ0IGJhY2sgdG8gY2FsbGluZyBkaXNwYXRjaFNjb3BlZEV2ZW50
LgotICAgICAgICBlbGVtZW50LmRpc3BhdGNoU2NvcGVkRXZlbnQoSW5wdXRFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50LCBpbnB1dFR5cGUsIHRydWUsIGZhbHNlLCBlbGVtZW50
LmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0
YXJnZXRSYW5nZXMsIDApKTsKKyAgICAgICAgZWxlbWVudC5kaXNwYXRjaFNjb3BlZEV2ZW50KElu
cHV0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuaW5wdXRFdmVudCwgaW5wdXRUeXBlLCB0cnVl
LCBmYWxzZSwgZWxlbWVudC5kb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIGRhdGEsIFdURk1vdmUo
ZGF0YVRyYW5zZmVyKSwgdGFyZ2V0UmFuZ2VzLCAwKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGVs
ZW1lbnQuZGlzcGF0Y2hJbnB1dEV2ZW50KCk7CiB9CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBF
ZGl0b3I6OnBhc3RlQXNQbGFpblRleHQoY29uc3QgU3RyaW5nJiBwYXN0aW5nVGV4dCwgYm9vbCBz
bWFydFJlcGxhY2UpCiAgICAgRWxlbWVudCogdGFyZ2V0ID0gZmluZEV2ZW50VGFyZ2V0RnJvbVNl
bGVjdGlvbigpOwogICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm47Ci0gICAgdGFyZ2V0
LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoZG9jdW1l
bnQoKS5kb21XaW5kb3coKSwgcGFzdGluZ1RleHQsIHNtYXJ0UmVwbGFjZSkpOworICAgIHRhcmdl
dC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKGRvY3Vt
ZW50KCkud2luZG93UHJveHkoKSwgcGFzdGluZ1RleHQsIHNtYXJ0UmVwbGFjZSkpOwogfQogCiB2
b2lkIEVkaXRvcjo6cGFzdGVBc0ZyYWdtZW50KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIHBhc3Rp
bmdGcmFnbWVudCwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSwgTWFpbEJsb2Nr
cXVvdGVIYW5kbGluZyByZXNwZWN0c01haWxCbG9ja3F1b3RlKQpAQCAtNTc3LDcgKzU3Nyw3IEBA
IHZvaWQgRWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgcGFz
dGluZ0ZyYWdtZW50LCBib29sIHNtYXJ0CiAgICAgRWxlbWVudCogdGFyZ2V0ID0gZmluZEV2ZW50
VGFyZ2V0RnJvbVNlbGVjdGlvbigpOwogICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm47
Ci0gICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQ
YXN0ZShkb2N1bWVudCgpLmRvbVdpbmRvdygpLCBXVEZNb3ZlKHBhc3RpbmdGcmFnbWVudCksIHNt
YXJ0UmVwbGFjZSwgbWF0Y2hTdHlsZSwgcmVzcGVjdHNNYWlsQmxvY2txdW90ZSkpOworICAgIHRh
cmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUoZG9j
dW1lbnQoKS53aW5kb3dQcm94eSgpLCBXVEZNb3ZlKHBhc3RpbmdGcmFnbWVudCksIHNtYXJ0UmVw
bGFjZSwgbWF0Y2hTdHlsZSwgcmVzcGVjdHNNYWlsQmxvY2txdW90ZSkpOwogfQogCiB2b2lkIEVk
aXRvcjo6cGFzdGVBc1BsYWluVGV4dEJ5cGFzc2luZ0RIVE1MKCkKQEAgLTE4NDgsNyArMTg0OCw3
IEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFNldENv
bXBvc2l0aW9uTW9kZSBtb2RlKQogICAgIGluc2VydFRleHRGb3JDb25maXJtZWRDb21wb3NpdGlv
bih0ZXh0KTsKIAogICAgIGlmIChhdXRvKiB0YXJnZXQgPSBkb2N1bWVudCgpLmZvY3VzZWRFbGVt
ZW50KCkpCi0gICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChDb21wb3NpdGlvbkV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uZW5kRXZlbnQsIGRvY3VtZW50KCkuZG9tV2lu
ZG93KCksIHRleHQpKTsKKyAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9u
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQo
KS53aW5kb3dQcm94eSgpLCB0ZXh0KSk7CiAKICAgICBpZiAobW9kZSA9PSBDYW5jZWxDb21wb3Np
dGlvbikgewogICAgICAgICAvLyBBbiBvcGVuIHR5cGluZyBjb21tYW5kIHRoYXQgZGlzYWdyZWVz
IGFib3V0IGN1cnJlbnQgc2VsZWN0aW9uIHdvdWxkIGNhdXNlIGlzc3VlcyB3aXRoIHR5cGluZyBs
YXRlciBvbi4KQEAgLTE5MDgsMTEgKzE5MDgsMTEgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0
aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4K
ICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBzZW5kIGEgY29tcG9zaXRpb25zdGFydCBldmVudCBv
bmx5IHdoZW4gdGhlIGdpdmVuIHRleHQgaXMgbm90IGVtcHR5IGJlY2F1c2UgdGhpcwogICAgICAg
ICAgICAgLy8gZnVuY3Rpb24gZG9lc24ndCBjcmVhdGUgYSBjb21wb3NpdGlvbiBub2RlIHdoZW4g
dGhlIHRleHQgaXMgZW1wdHkuCiAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25zdGFydEV2ZW50LCBkb2N1bWVudCgpLmRvbVdp
bmRvdygpLCBvcmlnaW5hbFRleHQpKTsKLSAgICAgICAgICAgICAgICBldmVudCA9IENvbXBvc2l0
aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb251cGRhdGVFdmVudCwgZG9j
dW1lbnQoKS5kb21XaW5kb3coKSwgdGV4dCk7CisgICAgICAgICAgICAgICAgdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRp
b25zdGFydEV2ZW50LCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIG9yaWdpbmFsVGV4dCkpOwor
ICAgICAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIHRl
eHQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKCF0ZXh0LmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBkb2N1bWVudCgpLmRvbVdpbmRvdygpLCB0ZXh0KTsK
KyAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIHRleHQp
OwogCiAgICAgICAgIGlmIChldmVudCkKICAgICAgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVu
dCgqZXZlbnQpOwpAQCAtMTkyMyw3ICsxOTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0
aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4K
ICAgICBpZiAodGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgVHlwaW5nQ29tbWFuZDo6ZGVsZXRl
U2VsZWN0aW9uKGRvY3VtZW50KCksIFR5cGluZ0NvbW1hbmQ6OlByZXZlbnRTcGVsbENoZWNraW5n
LCBUeXBpbmdDb21tYW5kOjpUZXh0Q29tcG9zaXRpb25QZW5kaW5nKTsKICAgICAgICAgaWYgKHRh
cmdldCkKLSAgICAgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChDb21wb3NpdGlvbkV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uZW5kRXZlbnQsIGRvY3VtZW50KCkuZG9t
V2luZG93KCksIHRleHQpKTsKKyAgICAgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChDb21w
b3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uZW5kRXZlbnQsIGRv
Y3VtZW50KCkud2luZG93UHJveHkoKSwgdGV4dCkpOwogICAgIH0KIAogICAgIG1fY29tcG9zaXRp
b25Ob2RlID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAppbmRleCBh
M2Q3ZDk3NzBjZWJkMDYyOGNhN2JlYzI0Y2ZhNjc1ZDNiOTdiYjU0Li45ZDU4MWNlZGZhODQxZTBh
ZGYxYWFjNDMyNTkxYzhiNmYyZjc2NTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
Y3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgUmVmPERvY3VtZW50UGFyc2VyPiBIVE1MRG9jdW1lbnQ6
OmNyZWF0ZVBhcnNlcigpCiB9CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL2RvbS5odG1sI2RvbS1kb2N1bWVudC1uYW1lZGl0ZW0KLXN0ZDo6b3B0aW9uYWw8VmFy
aWFudDxSZWZQdHI8RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxl
Y3Rpb24+Pj4gSFRNTERvY3VtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KQorc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVt
ZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IEhUTUxEb2N1bWVudDo6bmFtZWRJdGVtKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKICAgICBpZiAobmFtZS5pc051bGwoKSB8fCAhaGFz
RG9jdW1lbnROYW1lZEl0ZW0oKm5hbWUuaW1wbCgpKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTEyMiwxNiArMTIyLDE2IEBAIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8
RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+CiAgICAg
aWYgKFVOTElLRUxZKGRvY3VtZW50TmFtZWRJdGVtQ29udGFpbnNNdWx0aXBsZUVsZW1lbnRzKCpu
YW1lLmltcGwoKSkpKSB7CiAgICAgICAgIGF1dG8gY29sbGVjdGlvbiA9IGRvY3VtZW50TmFtZWRJ
dGVtcyhuYW1lKTsKICAgICAgICAgQVNTRVJUKGNvbGxlY3Rpb24tPmxlbmd0aCgpID4gMSk7Ci0g
ICAgICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4s
IFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiB7IFdURk1v
dmUoY29sbGVjdGlvbikgfSB9OworICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8V2luZG93
UHJveHk+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgUmVmUHRy
PEhUTUxDb2xsZWN0aW9uPiB7IFdURk1vdmUoY29sbGVjdGlvbikgfSB9OwogICAgIH0KIAogICAg
IGF1dG8mIGVsZW1lbnQgPSAqZG9jdW1lbnROYW1lZEl0ZW0oKm5hbWUuaW1wbCgpKTsKICAgICBp
ZiAoVU5MSUtFTFkoaXM8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQpKSkgewogICAgICAgICBp
ZiAoYXV0byBkb21XaW5kb3cgPSBtYWtlUmVmUHRyKGRvd25jYXN0PEhUTUxJRnJhbWVFbGVtZW50
PihlbGVtZW50KS5jb250ZW50V2luZG93KCkpKQotICAgICAgICAgICAgcmV0dXJuIFZhcmlhbnQ8
UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9u
Pj4geyBXVEZNb3ZlKGRvbVdpbmRvdykgfTsKKyAgICAgICAgICAgIHJldHVybiBWYXJpYW50PFJl
ZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9u
Pj4geyBXVEZNb3ZlKGRvbVdpbmRvdykgfTsKICAgICB9CiAKLSAgICByZXR1cm4gVmFyaWFudDxS
ZWZQdHI8RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+
PiB7IFJlZlB0cjxFbGVtZW50PiB7ICZlbGVtZW50IH0gfTsKKyAgICByZXR1cm4gVmFyaWFudDxS
ZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlv
bj4+IHsgUmVmUHRyPEVsZW1lbnQ+IHsgJmVsZW1lbnQgfSB9OwogfQogCiBWZWN0b3I8QXRvbWlj
U3RyaW5nPiBIVE1MRG9jdW1lbnQ6OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERvY3VtZW50LmgKaW5kZXggYTM2Mzk3NDA2ZDM0OWY1NzZmNDg5ZDNhMWY2
MDBhZGExYmRkY2ZlMS4uMGIzZDM0MTRhNGJlZmEwMzM1YzRlMjI5YTU5NTg1ZWIwNWViZDYwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgd2lkdGgoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQg
aGVpZ2h0KCk7CiAgICAgCi0gICAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxET01XaW5k
b3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+PiBuYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxX
aW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IG5h
bWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBz
dXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3Q7CiAKICAgICBFbGVtZW50KiBkb2N1bWVudE5h
bWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBuYW1lKSBjb25zdCB7IHJldHVybiBtX2Rv
Y3VtZW50TmFtZWRJdGVtLmdldEVsZW1lbnRCeURvY3VtZW50TmFtZWRJdGVtKG5hbWUsICp0aGlz
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsCmluZGV4IDEyN2YyNjQ1ZTAzMjJk
Yzc5ODgxMjgwNGZmNWQ3OTVkYWM4YTU4MGYuLmE5OTliMDNmNjIyOGIyNWViZDFiN2I5NDM4NmI5
OWUzOTViODVmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwKQEAgLTIzLDUg
KzIzLDUgQEAKICAgICBOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMsCiAgICAgT3Zl
cnJpZGVCdWlsdGlucywKIF0gaW50ZXJmYWNlIEhUTUxEb2N1bWVudCA6IERvY3VtZW50IHsgICAg
Ci0gICAgZ2V0dGVyIChET01XaW5kb3cgb3IgRWxlbWVudCBvciBIVE1MQ29sbGVjdGlvbikgKERP
TVN0cmluZyBuYW1lKTsKKyAgICBnZXR0ZXIgKFdpbmRvd1Byb3h5IG9yIEVsZW1lbnQgb3IgSFRN
TENvbGxlY3Rpb24pIChET01TdHJpbmcgbmFtZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudC5pZGwKaW5kZXggY2Q2M2EyMTJhZDQzMzE0YzViZTIzMDRkZGU3MDA5N2M3
YmY4ODM1My4uZWQ3YzBiNmUyNzcyOTliNjVjYTIxOGYyMWUxODI2MWU1MTNkZmMwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCkBAIC0yNiw3ICsyNiw3IEBAIGlu
dGVyZmFjZSBIVE1MRnJhbWVFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAgIFtSZWZsZWN0LCBV
UkxdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgbG9uZ0Rlc2M7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0
ZSBib29sZWFuIG5vUmVzaXplOwogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9ubHkg
YXR0cmlidXRlIERvY3VtZW50IGNvbnRlbnREb2N1bWVudDsKLSAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NV2luZG93IGNvbnRlbnRXaW5kb3c7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRv
d1Byb3h5IGNvbnRlbnRXaW5kb3c7CiAKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51
bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1hcmdpbkhlaWdodDsKICAgICBbUmVmbGVjdF0g
YXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1hcmdpbldpZHRo
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCmluZGV4
IDU4ODczOTg0N2NiYjA4YzM3MTdjMTNiZWJkM2FhOTFkOTliYjRjYzUuLmI5YmVmMTc2M2UyNjFk
N2M5ODJlMWYwNTU1MDljMTY5ZGY4NDA2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZU93bmVyRWxlbWVudC5jcHAKQEAgLTk5LDkgKzk5LDkgQEAgRG9jdW1lbnQqIEhUTUxG
cmFtZU93bmVyRWxlbWVudDo6Y29udGVudERvY3VtZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9j
b250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CiB9CiAK
LURPTVdpbmRvdyogSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50V2luZG93KCkgY29uc3QK
K1dpbmRvd1Byb3h5KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRXaW5kb3coKSBjb25z
dAogewotICAgIHJldHVybiBtX2NvbnRlbnRGcmFtZSA/IG1fY29udGVudEZyYW1lLT5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8g
Jm1fY29udGVudEZyYW1lLT53aW5kb3dQcm94eSgpIDogbnVsbHB0cjsKIH0KIAogdm9pZCBIVE1M
RnJhbWVPd25lckVsZW1lbnQ6OnNldFNhbmRib3hGbGFncyhTYW5kYm94RmxhZ3MgZmxhZ3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAppbmRleCA4NjVlZGRi
OTFmNTdlMzQ1YjRiNjg3Zjc2MGU4MzMyNTQyNWM0ZmMxLi44MGYxODIwMGRmMGQ0YTc0ZDdmMGUz
ZGJjYTE1MjQ1NjAyMjRhYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkhUTUxG
cmFtZU93bmVyRWxlbWVudCgpOwogCiAgICAgRnJhbWUqIGNvbnRlbnRGcmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGVudEZyYW1lOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgRE9NV2luZG93KiBj
b250ZW50V2luZG93KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgV2luZG93UHJveHkqIGNv
bnRlbnRXaW5kb3coKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudCogY29udGVu
dERvY3VtZW50KCkgY29uc3Q7CiAKICAgICB2b2lkIHNldENvbnRlbnRGcmFtZShGcmFtZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKaW5kZXggMjg1NjQy
NDk1MGEzNDljOWI3Mjk1MDNjNWY0ZjEyMWE4ZWM0YjJiNy4uNWQyMzdkNDgyNmM3MmY4ODdiN2Ri
MmZiNTFkNmU5Nzg2NTY3OWE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNl
dEVsZW1lbnQuY3BwCkBAIC0yMzEsMTUgKzIzMSwxMyBAQCB2b2lkIEhUTUxGcmFtZVNldEVsZW1l
bnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5l
cgogICAgIH0KIH0KIAotRE9NV2luZG93KiBIVE1MRnJhbWVTZXRFbGVtZW50OjpuYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorV2luZG93UHJveHkqIEhUTUxGcmFtZVNldEVsZW1l
bnQ6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7CiAgICAgYXV0byBmcmFt
ZUVsZW1lbnQgPSBtYWtlUmVmUHRyKGNoaWxkcmVuKCktPm5hbWVkSXRlbShuYW1lKSk7CiAgICAg
aWYgKCFpczxIVE1MRnJhbWVFbGVtZW50PihmcmFtZUVsZW1lbnQpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGlmIChhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihkb3duY2FzdDxI
VE1MRnJhbWVFbGVtZW50PihmcmFtZUVsZW1lbnQuZ2V0KCkpLT5jb250ZW50RG9jdW1lbnQoKSkp
Ci0gICAgICAgIHJldHVybiBkb2N1bWVudC0+ZG9tV2luZG93KCk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxGcmFtZUVsZW1lbnQ+KCpmcmFtZUVsZW1lbnQp
LmNvbnRlbnRXaW5kb3coKTsKIH0KIAogVmVjdG9yPEF0b21pY1N0cmluZz4gSFRNTEZyYW1lU2V0
RWxlbWVudDo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCmluZGV4IGQxZjM3OWI3MzVjYjc3ZjVlNWFkMmRlYzRl
YmYxNDQwYzdlZWEzMzIuLmMzYzY4YjU3YmY5NzdlN2FjZWE5MmZmM2FlYzA5NjQ5NmY3MTIyYjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCkBAIC00OCw3ICs0
OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEhUTUxGcmFtZVNldEVsZW1lbnQ+IGZp
bmRDb250YWluaW5nKEVsZW1lbnQqIGRlc2NlbmRhbnQpOwogICAgIAogICAgIFZlY3RvcjxBdG9t
aWNTdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdDsKLSAgICBET01XaW5kb3cq
IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBXaW5kb3dQcm94eSogbmFtZWRJ
dGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiBwcml2YXRlOgogICAgIEhUTUxGcmFtZVNldEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbAppbmRleCAzMjUwYjk0OTBlZGI4YmIxOGY0N2I5
ODJjYmI3ZjZiNDQwOGQzMTI1Li42OTQyMTczZTc0NDA5MjQ5YzIwNWIwYjNjNTI2MjllMmFjYzQ2
OTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwKQEAg
LTMzLDcgKzMzLDcgQEAgaW50ZXJmYWNlIEhUTUxGcmFtZVNldEVsZW1lbnQgOiBIVE1MRWxlbWVu
dCB7CiAKICAgICAvLyBOb24tc3RhbmRhcmQgbmFtZWQgZ2V0dGVyCiAgICAgLy8gRklYTUU6IFRo
aXMgaXMgbm90IGluIHRoZSBzdGFuZGFyZCwgY2FuIHdlIHJlbW92ZSB0aGlzPwotICAgIGdldHRl
ciBET01XaW5kb3cgKERPTVN0cmluZyBuYW1lKTsKKyAgICBnZXR0ZXIgV2luZG93UHJveHkgKERP
TVN0cmluZyBuYW1lKTsKIH07CiAKIEhUTUxGcmFtZVNldEVsZW1lbnQgaW1wbGVtZW50cyBXaW5k
b3dFdmVudEhhbmRsZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZy
YW1lRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50Lmlk
bAppbmRleCAzZTNiZGNjMTEwNDE4OGE3OGRkYmE4ZTI3NjQzNGU0ZTY2ZTY5MGJjLi5jMTYzOTIy
ZWU0MjBlNzVjMDRkZDEyODE5NGI1MzVmMzgzYzk1ZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJRnJhbWVFbGVtZW50LmlkbApAQCAtMzgsNyArMzgsNyBAQCBpbnRlcmZhY2UgSFRNTElG
cmFtZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAKICAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBEb2N1bWVudCBjb250ZW50RG9jdW1lbnQ7CiAKLSAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NV2luZG93IGNvbnRlbnRXaW5kb3c7CisgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFdpbmRvd1Byb3h5IGNvbnRlbnRXaW5kb3c7CiAKICAgICBbQ2hlY2tTZWN1cml0eUZv
ck5vZGUsIE1heVRocm93RXhjZXB0aW9uXSBEb2N1bWVudCBnZXRTVkdEb2N1bWVudCgpOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IGQxNTEyNzNhMzU5NDkzZTFi
NmM1MzhmMGYzZDkzMTY4ODAzNjRhMTcuLjg1YzEzZmY3ZjAyMGFhOWFjMmM2ZTRkZjE3MjQ2ZDQ0
MTE5YzVhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGIwMjNhNGUy
ZWYyODQzMDM3YmU1ZDA4YmYyYTRmZTM4MzFkNWZkOGYuLjNlMmE5MTY2ZjJjODAxYWU1NTY2M2Jj
Y2IxYjQ5MGFlMDlmYWYxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE0OCw3
ICsxNDgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBjbGFzcyBQb3N0TWVzc2Fn
ZVRpbWVyIDogcHVibGljIFRpbWVyQmFzZSB7CiBwdWJsaWM6Ci0gICAgUG9zdE1lc3NhZ2VUaW1l
cihET01XaW5kb3cmIHdpbmRvdywgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgRE9NV2luZG93JiBzb3VyY2UsIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4mJiB0YXJnZXRPcmlnaW4sIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3Rh
Y2tUcmFjZSkKKyAgICBQb3N0TWVzc2FnZVRpbWVyKERPTVdpbmRvdyYgd2luZG93LCBNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgc291cmNlLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgdGFy
Z2V0T3JpZ2luLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIHN0YWNrVHJhY2UpCiAgICAgICAg
IDogbV93aW5kb3cod2luZG93KQogICAgICAgICAsIG1fbWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2Up
KQogICAgICAgICAsIG1fb3JpZ2luKHNvdXJjZU9yaWdpbikKQEAgLTE2MSw3ICsxNjEsNyBAQCBw
dWJsaWM6CiAKICAgICBSZWY8TWVzc2FnZUV2ZW50PiBldmVudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKGNvbnRleHQsIFdURk1vdmUobV9tZXNzYWdlLnRy
YW5zZmVycmVkUG9ydHMpKSwgbV9tZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgbV9v
cmlnaW4sIHsgfSwgTWVzc2FnZUV2ZW50U291cmNlKFJlZlB0cjxET01XaW5kb3c+KFdURk1vdmUo
bV9zb3VyY2UpKSkpOworICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoTWVzc2Fn
ZVBvcnQ6OmVudGFuZ2xlUG9ydHMoY29udGV4dCwgV1RGTW92ZShtX21lc3NhZ2UudHJhbnNmZXJy
ZWRQb3J0cykpLCBtX21lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBtX29yaWdpbiwg
eyB9LCBtX3NvdXJjZSA/IHN0ZDo6bWFrZV9vcHRpb25hbChNZXNzYWdlRXZlbnRTb3VyY2UoV1RG
TW92ZShtX3NvdXJjZSkpKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgU2VjdXJpdHlP
cmlnaW4qIHRhcmdldE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0T3JpZ2luLmdldCgp
OyB9CkBAIC0xODAsNyArMTgwLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8RE9NV2luZG93PiBtX3dp
bmRvdzsKICAgICBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtX21lc3NhZ2U7CiAgICAgU3RyaW5n
IG1fb3JpZ2luOwotICAgIFJlZjxET01XaW5kb3c+IG1fc291cmNlOworICAgIFJlZlB0cjxXaW5k
b3dQcm94eT4gbV9zb3VyY2U7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX3RhcmdldE9y
aWdpbjsKICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBtX3N0YWNrVHJhY2U7CiAgICAgUmVm
UHRyPFVzZXJHZXN0dXJlVG9rZW4+IG1fdXNlckdlc3R1cmVUb0ZvcndhcmQ7CkBAIC05NjAsNyAr
OTYwLDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9NV2luZG93Ojpwb3N0TWVzc2FnZShKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIERPTVdpbmRvdyYgaW5jdW0KICAgICBNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyBtZXNzYWdlIHsgbWVzc2FnZURhdGEucmVsZWFzZVJldHVyblZhbHVlKCksIGRpc2VudGFu
Z2xlZFBvcnRzLnJlbGVhc2VSZXR1cm5WYWx1ZSgpIH07CiAKICAgICAvLyBTY2hlZHVsZSB0aGUg
bWVzc2FnZS4KLSAgICBhdXRvKiB0aW1lciA9IG5ldyBQb3N0TWVzc2FnZVRpbWVyKCp0aGlzLCBX
VEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4sIGluY3VtYmVudFdpbmRvdywgV1RGTW92ZSh0
YXJnZXQpLCBXVEZNb3ZlKHN0YWNrVHJhY2UpKTsKKyAgICBSZWZQdHI8V2luZG93UHJveHk+IGlu
Y3VtYmVudFdpbmRvd1Byb3h5ID0gaW5jdW1iZW50V2luZG93LmZyYW1lKCkgPyAmaW5jdW1iZW50
V2luZG93LmZyYW1lKCktPndpbmRvd1Byb3h5KCkgOiBudWxscHRyOworICAgIGF1dG8qIHRpbWVy
ID0gbmV3IFBvc3RNZXNzYWdlVGltZXIoKnRoaXMsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9y
aWdpbiwgV1RGTW92ZShpbmN1bWJlbnRXaW5kb3dQcm94eSksIFdURk1vdmUodGFyZ2V0KSwgV1RG
TW92ZShzdGFja1RyYWNlKSk7CiAgICAgdGltZXItPnN0YXJ0T25lU2hvdCgwX3MpOwogCiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQb3N0TWVzc2FnZSgqbV9mcmFtZSwgKnRpbWVy
LCBzdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDkxNzRh
ZmQ1MzIxNmMxMTJjNGI1ZTBkNTc1ODdjODZkMWZjOWM1YTEuLjM3ZjhmMDZiNGY2MzQxNWMzZTYz
ZjY3MmI1MTE0ZjU3NzM2ZjdhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwCkBAIC01MDgsNyArNTA4LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6ZGlzcGF0Y2hUZXh0
SW5wdXRFdmVudEZvcihGcmFtZSogaW5uZXJGcmFtZSwgY29uc3QgRHJhZ0RhdGEKICAgICBTdHJp
bmcgdGV4dCA9IG1fcGFnZS5kcmFnQ2FyZXRDb250cm9sbGVyKCkuaXNDb250ZW50UmljaGx5RWRp
dGFibGUoKSA/IGVtcHR5U3RyaW5nKCkgOiBkcmFnRGF0YS5hc1BsYWluVGV4dCgpOwogICAgIEVs
ZW1lbnQqIHRhcmdldCA9IGlubmVyRnJhbWUtPmVkaXRvcigpLmZpbmRFdmVudFRhcmdldEZyb20o
bV9wYWdlLmRyYWdDYXJldENvbnRyb2xsZXIoKS5jYXJldFBvc2l0aW9uKCkpOwogICAgIC8vIEZJ
WE1FOiBXaGF0IGd1YXJhbnRlZXMgdGFyZ2V0IGlzIG5vdCBudWxsPwotICAgIGF1dG8gZXZlbnQg
PSBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3AoaW5uZXJGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCksIHRleHQpOworICAgIGF1dG8gZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3Ao
JmlubmVyRnJhbWUtPndpbmRvd1Byb3h5KCksIHRleHQpOwogICAgIHRhcmdldC0+ZGlzcGF0Y2hF
dmVudChldmVudCk7CiAgICAgcmV0dXJuICFldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDg3ZDEyNzc0Y2M2ZjM0YWUwNzAx
MDBkMTllZWI3NjU2NWYyNTA3OWQuLjhiM2M2ZDFhZjhmODU0MWRhM2U1YTc0NDUwYmE4NWI0YzYz
NDNiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTIxOTgsNyArMjE5
OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYgZHJhCiAKICAgICB2aWV3LT5kaXNhYmxlTGF5ZXJG
bHVzaFRocm90dGxpbmdUZW1wb3JhcmlseUZvckludGVyYWN0aW9uKCk7CiAgICAgUmVmPE1vdXNl
RXZlbnQ+IG1lID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwKLSAgICAgICAgdHJ1ZSwg
dHJ1ZSwgZXZlbnQudGltZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCksIG1fZnJh
bWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwKKyAgICAgICAgdHJ1ZSwgdHJ1ZSwgZXZlbnQu
dGltZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCksICZtX2ZyYW1lLndpbmRvd1By
b3h5KCksCiAgICAgICAgIDAsIGV2ZW50Lmdsb2JhbFBvc2l0aW9uKCkueCgpLCBldmVudC5nbG9i
YWxQb3NpdGlvbigpLnkoKSwgZXZlbnQucG9zaXRpb24oKS54KCksIGV2ZW50LnBvc2l0aW9uKCku
eSgpLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIGV2ZW50Lm1vdmVtZW50RGVs
dGEoKS54KCksIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS55KCksCkBAIC0zMjQ4LDcgKzMyNDgsNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6aW50ZXJuYWxLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQmIGluaXRpYWxLZXlFdmVudAogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlE
b3duRXZlbnQgPSBpbml0aWFsS2V5RXZlbnQ7ICAgIAogICAgIGlmIChrZXlEb3duRXZlbnQudHlw
ZSgpICE9IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pCiAgICAgICAgIGtleURvd25FdmVudC5k
aXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93biwgYmFja3dh
cmRDb21wYXRpYmlsaXR5TW9kZSk7Ci0gICAgYXV0byBrZXlkb3duID0gS2V5Ym9hcmRFdmVudDo6
Y3JlYXRlKGtleURvd25FdmVudCwgbV9mcmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsK
KyAgICBhdXRvIGtleWRvd24gPSBLZXlib2FyZEV2ZW50OjpjcmVhdGUoa2V5RG93bkV2ZW50LCAm
bV9mcmFtZS53aW5kb3dQcm94eSgpKTsKICAgICBpZiAobWF0Y2hlZEFuQWNjZXNzS2V5KQogICAg
ICAgICBrZXlkb3duLT5wcmV2ZW50RGVmYXVsdCgpOwogICAgIGtleWRvd24tPnNldFRhcmdldChl
bGVtZW50KTsKQEAgLTMyNzEsNyArMzI3MSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjppbnRlcm5h
bEtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgaW5pdGlhbEtleUV2ZW50CiAg
ICAgCiAgICAgaWYgKGhhbmRsZWRCeUlucHV0TWV0aG9kKSB7CiAgICAgICAgIGtleURvd25FdmVu
dC5zZXRXaW5kb3dzVmlydHVhbEtleUNvZGUoQ29tcG9zaXRpb25FdmVudEtleUNvZGUpOwotICAg
ICAgICBrZXlkb3duID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGtleURvd25FdmVudCwgbV9mcmFt
ZS5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsKKyAgICAgICAga2V5ZG93biA9IEtleWJvYXJk
RXZlbnQ6OmNyZWF0ZShrZXlEb3duRXZlbnQsICZtX2ZyYW1lLndpbmRvd1Byb3h5KCkpOwogICAg
ICAgICBrZXlkb3duLT5zZXRUYXJnZXQoZWxlbWVudCk7CiAgICAgICAgIGtleWRvd24tPnNldERl
ZmF1bHRIYW5kbGVkKCk7CiAgICAgfQpAQCAtMzMwMSw3ICszMzAxLDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmludGVybmFsS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBpbml0
aWFsS2V5RXZlbnQKICAgICBrZXlQcmVzc0V2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQ
bGF0Zm9ybUV2ZW50OjpDaGFyLCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKTsKICAgICBpZiAo
a2V5UHJlc3NFdmVudC50ZXh0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4ga2V5ZG93blJl
c3VsdDsKLSAgICBhdXRvIGtleXByZXNzID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGtleVByZXNz
RXZlbnQsIG1fZnJhbWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CisgICAgYXV0byBrZXlw
cmVzcyA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShrZXlQcmVzc0V2ZW50LCAmbV9mcmFtZS53aW5k
b3dQcm94eSgpKTsKICAgICBrZXlwcmVzcy0+c2V0VGFyZ2V0KGVsZW1lbnQpOwogICAgIGlmIChr
ZXlkb3duUmVzdWx0KQogICAgICAgICBrZXlwcmVzcy0+cHJldmVudERlZmF1bHQoKTsKQEAgLTM4
MDIsNyArMzgwMiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVudChj
b25zdCBTdHJpbmcmIHRleHQsIEV2ZW50KiB1bmRlcmx5aW5nRXZlCiAgICAgaWYgKEZyYW1lVmll
dyogdmlldyA9IG1fZnJhbWUudmlldygpKQogICAgICAgICB2aWV3LT5kaXNhYmxlTGF5ZXJGbHVz
aFRocm90dGxpbmdUZW1wb3JhcmlseUZvckludGVyYWN0aW9uKCk7CiAKLSAgICBSZWY8VGV4dEV2
ZW50PiBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCksIHRleHQsIGlucHV0VHlwZSk7CisgICAgYXV0byBldmVudCA9IFRleHRFdmVudDo6Y3Jl
YXRlKCZtX2ZyYW1lLndpbmRvd1Byb3h5KCksIHRleHQsIGlucHV0VHlwZSk7CiAgICAgZXZlbnQt
PnNldFVuZGVybHlpbmdFdmVudCh1bmRlcmx5aW5nRXZlbnQpOwogCiAgICAgdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KGV2ZW50KTsKQEAgLTQyMTEsNyArNDIxMSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAKICAg
ICAgICAgICAgIFJlZjxUb3VjaEV2ZW50PiB0b3VjaEV2ZW50ID0KICAgICAgICAgICAgICAgICBU
b3VjaEV2ZW50OjpjcmVhdGUoZWZmZWN0aXZlVG91Y2hlcy5nZXQoKSwgdGFyZ2V0VG91Y2hlcy5n
ZXQoKSwgY2hhbmdlZFRvdWNoZXNbc3RhdGVdLm1fdG91Y2hlcy5nZXQoKSwKLSAgICAgICAgICAg
ICAgICAgICAgc3RhdGVOYW1lLCBkb3duY2FzdDxOb2RlPigqdGFyZ2V0KS5kb2N1bWVudCgpLmRl
ZmF1bHRWaWV3KCksCisgICAgICAgICAgICAgICAgICAgIHN0YXRlTmFtZSwgZG93bmNhc3Q8Tm9k
ZT4oKnRhcmdldCkuZG9jdW1lbnQoKS53aW5kb3dQcm94eSgpLAogICAgICAgICAgICAgICAgICAg
ICAwLCAwLCAwLCAwLCBldmVudC5jdHJsS2V5KCksIGV2ZW50LmFsdEtleSgpLCBldmVudC5zaGlm
dEtleSgpLCBldmVudC5tZXRhS2V5KCkpOwogICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2
ZW50KHRvdWNoRXZlbnQpOwogICAgICAgICAgICAgc3dhbGxvd2VkRXZlbnQgPSBzd2FsbG93ZWRF
dmVudCB8fCB0b3VjaEV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCkgfHwgdG91Y2hFdmVudC0+ZGVm
YXVsdEhhbmRsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3cuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdp
bmRvdy5jcHAKaW5kZXggN2IwOWM4MTg3YzQ2NDAwNjcwNmZjM2VjYTQ3N2I2OTcwMzY1YmEyMi4u
Njc3ZDY2YzEyNTQ0ODMxNDE3ZDRkODE0NDQ3ZjQwNWIxYjUzMDNkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TURPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdpbmRvdy5jcHAKQEAgLTY0LDYgKzY0LDIyIEBA
IFdlYktpdERPTURPTVdpbmRvdyoga2l0KFdlYkNvcmU6OkRPTVdpbmRvdyogb2JqKQogICAgIHJl
dHVybiB3cmFwRE9NV2luZG93KG9iaik7CiB9CiAKK1dlYktpdERPTURPTVdpbmRvdyoga2l0KFdl
YkNvcmU6OldpbmRvd1Byb3h5KiB3aW5kb3dQcm94eSkKK3sKKyAgICBpZiAoIXdpbmRvd1Byb3h5
IHx8ICFpczxXZWJDb3JlOjpET01XaW5kb3c+KHdpbmRvd1Byb3h5LT53aW5kb3coKSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGtpdChkb3duY2FzdDxXZWJDb3JlOjpE
T01XaW5kb3c+KHdpbmRvd1Byb3h5LT53aW5kb3coKSkpOworfQorCitXZWJDb3JlOjpXaW5kb3dQ
cm94eSogdG9XaW5kb3dQcm94eShXZWJLaXRET01ET01XaW5kb3cqIHZpZXcpCit7CisgICAgYXV0
byogd2luZG93ID0gY29yZSh2aWV3KTsKKyAgICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LT5mcmFt
ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJndpbmRvdy0+ZnJhbWUo
KS0+d2luZG93UHJveHkoKTsKK30KKwogV2ViQ29yZTo6RE9NV2luZG93KiBjb3JlKFdlYktpdERP
TURPTVdpbmRvdyogcmVxdWVzdCkKIHsKICAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0
PFdlYkNvcmU6OkRPTVdpbmRvdyo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2Jq
ZWN0KSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NV2luZG93UHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdp
bmRvd1ByaXZhdGUuaAppbmRleCBlMzFkMjI3NWI4YjgxY2FmODBlMjAxZTZkZDZiMWFlOTYyY2Nm
ZjkyLi42Njg0ZWM2Nzg4ZWRlZmIwZTg2ZDVkZDE1NDI2OGU2ZmQzNWY2MDY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NRE9NV2luZG93UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3dQcml2YXRlLmgKQEAg
LTIxLDEyICsyMSwxNSBAQAogI2RlZmluZSBXZWJLaXRET01ET01XaW5kb3dQcml2YXRlX2gKIAog
I2luY2x1ZGUgPFdlYkNvcmUvRE9NV2luZG93Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dQ
cm94eS5oPgogI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01ET01XaW5kb3cuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiBXZWJLaXRET01ET01XaW5kb3cqIHdyYXBET01XaW5kb3coV2ViQ29y
ZTo6RE9NV2luZG93Kik7CiBXZWJLaXRET01ET01XaW5kb3cqIGtpdChXZWJDb3JlOjpET01XaW5k
b3cqKTsKK1dlYktpdERPTURPTVdpbmRvdyoga2l0KFdlYkNvcmU6OldpbmRvd1Byb3h5Kik7CiBX
ZWJDb3JlOjpET01XaW5kb3cqIGNvcmUoV2ViS2l0RE9NRE9NV2luZG93Kik7CitXZWJDb3JlOjpX
aW5kb3dQcm94eSogdG9XaW5kb3dQcm94eShXZWJLaXRET01ET01XaW5kb3cqKTsKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLyogV2ViS2l0RE9NRE9NV2luZG93UHJpdmF0ZV9oICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50R3RrLmNwcApp
bmRleCA5NTA1NDFmMDliMjI3MDFhMTM5NTU4MWNkMWI0MzI5NzAzNDIxZWE0Li4xM2M5NmE1NzBl
ZDlkZGIyZTJkMTMyNzkzYzg0NzlmZTcxN2ViN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudEd0ay5jcHAKQEAgLTE0OTQsOCArMTQ5NCw3IEBAIFdl
YktpdERPTURPTVdpbmRvdyogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZGVmYXVsdF92aWV3KFdl
YktpdERPTURvY3VtZW50KiBzZWxmCiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfRE9DVU1FTlQo
c2VsZiksIDApOwogICAgIFdlYkNvcmU6OkRvY3VtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpET01XaW5kb3c+IGdvYmplY3RSZXN1bHQgPSBXVEY6
OmdldFB0cihpdGVtLT5kZWZhdWx0VmlldygpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29i
amVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0KGl0ZW0tPmRlZmF1bHRW
aWV3KCkpOwogfQogCiBXZWJLaXRET01TdHlsZVNoZWV0TGlzdCogd2Via2l0X2RvbV9kb2N1bWVu
dF9nZXRfc3R5bGVfc2hlZXRzKFdlYktpdERPTURvY3VtZW50KiBzZWxmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUhUTUxGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxGcmFtZUVsZW1lbnQuY3BwCmluZGV4
IGMxNWY2YTQ4NjRmNzgzZWMwNzM2YjRjYTM3OTZjNmRkNjZiMzc2MmEuLjViNjcxNTIzOGM2OTM5
YWE3Y2Q5MDc2YzI1Yjk5MjUxYzZkMTU1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRnJhbWVFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NSFRNTEZyYW1lRWxlbWVudC5jcHAKQEAgLTQ5Miw4ICs0OTIsNyBA
QCBXZWJLaXRET01ET01XaW5kb3cqIHdlYmtpdF9kb21faHRtbF9mcmFtZV9lbGVtZW50X2dldF9j
b250ZW50X3dpbmRvdyhXZWJLaXRET01IVAogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxf
RlJBTUVfRUxFTUVOVChzZWxmKSwgMCk7CiAgICAgV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudCog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RE9NV2luZG93
PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+Y29udGVudFdpbmRvdygpKTsKLSAg
ICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIFdl
YktpdDo6a2l0KGl0ZW0tPmNvbnRlbnRXaW5kb3coKSk7CiB9CiAKIGdsb25nIHdlYmtpdF9kb21f
aHRtbF9mcmFtZV9lbGVtZW50X2dldF93aWR0aChXZWJLaXRET01IVE1MRnJhbWVFbGVtZW50KiBz
ZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MSUZy
YW1lRWxlbWVudC5jcHAKaW5kZXggMjhiNTFjZTkwZTlmM2Y1MDQwZGIxNjE3NjZlNzYwNGJjZjRk
ZmY5NC4uM2U2NzRhZjJmMTUyMDcyMjA2ODIzODc5NWI4NWQ1NDdmMjI1MTZjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUhUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1lbnQu
Y3BwCkBAIC01MzgsOCArNTM4LDcgQEAgV2ViS2l0RE9NRE9NV2luZG93KiB3ZWJraXRfZG9tX2h0
bWxfaWZyYW1lX2VsZW1lbnRfZ2V0X2NvbnRlbnRfd2luZG93KFdlYktpdERPTUgKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19IVE1MX0lGUkFNRV9FTEVNRU5UKHNlbGYpLCAwKTsKICAgICBXZWJD
b3JlOjpIVE1MSUZyYW1lRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6RE9NV2luZG93PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRl
bS0+Y29udGVudFdpbmRvdygpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3Vs
dC5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0KGl0ZW0tPmNvbnRlbnRXaW5kb3coKSk7
CiB9CiAKIEdfR05VQ19FTkRfSUdOT1JFX0RFUFJFQ0FUSU9OUzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01L
ZXlib2FyZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01LZXlib2FyZEV2ZW50LmNwcAppbmRleCA0MWZjYzk3ODM0
M2Q0MjM4ZGM2YjUxYTcwNDM5OGFmNzNhYmM4MmQwLi43ZGEzMjYzZjBiZTMyYTUxNmIwYzljM2Fh
ZmYxODQ4MDMzNTEyMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NS2V5Ym9hcmRFdmVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUtleWJvYXJkRXZlbnQuY3BwCkBAIC0yMDIsOSArMjAyLDggQEAgdm9pZCB3ZWJraXRfZG9t
X2tleWJvYXJkX2V2ZW50X2luaXRfa2V5Ym9hcmRfZXZlbnQoV2ViS2l0RE9NS2V5Ym9hcmRFdmVu
dCogc2VsZiwKICAgICBnX3JldHVybl9pZl9mYWlsKGtleUlkZW50aWZpZXIpOwogICAgIFdlYkNv
cmU6OktleWJvYXJkRXZlbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpT
dHJpbmcgY29udmVydGVkVHlwZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh0eXBlKTsKLSAgICBX
ZWJDb3JlOjpET01XaW5kb3cqIGNvbnZlcnRlZFZpZXcgPSBXZWJLaXQ6OmNvcmUodmlldyk7CiAg
ICAgV1RGOjpTdHJpbmcgY29udmVydGVkS2V5SWRlbnRpZmllciA9IFdURjo6U3RyaW5nOjpmcm9t
VVRGOChrZXlJZGVudGlmaWVyKTsKLSAgICBpdGVtLT5pbml0S2V5Ym9hcmRFdmVudChjb252ZXJ0
ZWRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvbnZlcnRlZFZpZXcsIGNvbnZlcnRlZEtl
eUlkZW50aWZpZXIsIGxvY2F0aW9uLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5
LCBhbHRHcmFwaEtleSk7CisgICAgaXRlbS0+aW5pdEtleWJvYXJkRXZlbnQoY29udmVydGVkVHlw
ZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXZWJLaXQ6OnRvV2luZG93UHJveHkodmlldyksIGNv
bnZlcnRlZEtleUlkZW50aWZpZXIsIGxvY2F0aW9uLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBhbHRHcmFwaEtleSk7CiB9CiAKIGdjaGFyKiB3ZWJraXRfZG9tX2tleWJvYXJk
X2V2ZW50X2dldF9rZXlfaWRlbnRpZmllcihXZWJLaXRET01LZXlib2FyZEV2ZW50KiBzZWxmKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTU1vdXNlRXZlbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1vdXNlRXZlbnQuY3BwCmluZGV4
IDA1ODAwYTM1N2ZhYzY3NGRiOGMzZDMzNjVlMWNlNWM2OTY1YjY3MjguLjIxN2U1NjVhNGFiODYz
MWVlZDJmNTExNTExMTQ2ZDZhMjAxOGVjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Nb3VzZUV2ZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NTW91c2VFdmVudC5jcHAKQEAgLTMxOSw5ICszMTksOCBAQCB2b2lkIHdlYmtp
dF9kb21fbW91c2VfZXZlbnRfaW5pdF9tb3VzZV9ldmVudChXZWJLaXRET01Nb3VzZUV2ZW50KiBz
ZWxmLCBjb25zdCBnYwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19FVkVOVF9U
QVJHRVQocmVsYXRlZFRhcmdldCkpOwogICAgIFdlYkNvcmU6Ok1vdXNlRXZlbnQqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkVHlwZSA9IFdURjo6
U3RyaW5nOjpmcm9tVVRGOCh0eXBlKTsKLSAgICBXZWJDb3JlOjpET01XaW5kb3cqIGNvbnZlcnRl
ZFZpZXcgPSBXZWJLaXQ6OmNvcmUodmlldyk7CiAgICAgV2ViQ29yZTo6RXZlbnRUYXJnZXQqIGNv
bnZlcnRlZFJlbGF0ZWRUYXJnZXQgPSBXZWJLaXQ6OmNvcmUocmVsYXRlZFRhcmdldCk7Ci0gICAg
aXRlbS0+aW5pdE1vdXNlRXZlbnQoY29udmVydGVkVHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBjb252ZXJ0ZWRWaWV3LCBkZXRhaWwsIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVu
dFksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgY29udmVydGVk
UmVsYXRlZFRhcmdldCk7CisgICAgaXRlbS0+aW5pdE1vdXNlRXZlbnQoY29udmVydGVkVHlwZSwg
Y2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXZWJLaXQ6OnRvV2luZG93UHJveHkodmlldyksIGRldGFp
bCwgc2NyZWVuWCwgc2NyZWVuWSwgY2xpZW50WCwgY2xpZW50WSwgY3RybEtleSwgYWx0S2V5LCBz
aGlmdEtleSwgbWV0YUtleSwgYnV0dG9uLCBjb252ZXJ0ZWRSZWxhdGVkVGFyZ2V0KTsKIH0KIAog
Z2xvbmcgd2Via2l0X2RvbV9tb3VzZV9ldmVudF9nZXRfc2NyZWVuX3goV2ViS2l0RE9NTW91c2VF
dmVudCogc2VsZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01VSUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01VSUV2ZW50LmNw
cAppbmRleCA5YWUwMTIzOWE4MjZjZjhlZjJkNDA2MjBkNWM0Mzc0YjYwMjQ5ZGZjLi5hMGY2YTkw
MTA0ZDBlZWEzZGZmMzk5NTE3ZmM4OGI4NGIzOTE0YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVUlFdmVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTVVJRXZlbnQuY3BwCkBAIC0yMDQsOCArMjA0LDcgQEAgdm9pZCB3ZWJr
aXRfZG9tX3VpX2V2ZW50X2luaXRfdWlfZXZlbnQoV2ViS2l0RE9NVUlFdmVudCogc2VsZiwgY29u
c3QgZ2NoYXIqIHR5cGUKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfRE9NX1dJ
TkRPVyh2aWV3KSk7CiAgICAgV2ViQ29yZTo6VUlFdmVudCogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRUeXBlID0gV1RGOjpTdHJpbmc6OmZyb21V
VEY4KHR5cGUpOwotICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogY29udmVydGVkVmlldyA9IFdlYktp
dDo6Y29yZSh2aWV3KTsKLSAgICBpdGVtLT5pbml0VUlFdmVudChjb252ZXJ0ZWRUeXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIGNvbnZlcnRlZFZpZXcsIGRldGFpbCk7CisgICAgaXRlbS0+aW5p
dFVJRXZlbnQoY29udmVydGVkVHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXZWJLaXQ6OnRv
V2luZG93UHJveHkodmlldyksIGRldGFpbCk7CiB9CiAKIFdlYktpdERPTURPTVdpbmRvdyogd2Vi
a2l0X2RvbV91aV9ldmVudF9nZXRfdmlldyhXZWJLaXRET01VSUV2ZW50KiBzZWxmKQpAQCAtMjEz
LDggKzIxMiw3IEBAIFdlYktpdERPTURPTVdpbmRvdyogd2Via2l0X2RvbV91aV9ldmVudF9nZXRf
dmlldyhXZWJLaXRET01VSUV2ZW50KiBzZWxmKQogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1VJ
X0VWRU5UKHNlbGYpLCAwKTsKICAgICBXZWJDb3JlOjpVSUV2ZW50KiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpET01XaW5kb3c+IGdvYmplY3RSZXN1bHQg
PSBXVEY6OmdldFB0cihpdGVtLT52aWV3KCkpOwotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2Jq
ZWN0UmVzdWx0LmdldCgpKTsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQoaXRlbS0+dmlldygpKTsK
IH0KIAogZ2xvbmcgd2Via2l0X2RvbV91aV9ldmVudF9nZXRfZGV0YWlsKFdlYktpdERPTVVJRXZl
bnQqIHNlbGYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2hlZWxFdmVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2hlZWxFdmVu
dC5jcHAKaW5kZXggMGUxYmE2ZGE1NWMxYzQzZWVlNjRhZTlhMWVkNWFiNjQ0NGY5ZjRmOS4uZTc3
NGNkMTY3ZWNiMzQ5MTE0MTkwOGUzODlkZDUwYTI1NDQ2Y2VhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVdo
ZWVsRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01XaGVlbEV2ZW50LmNwcApAQCAtMTMxLDggKzEzMSw3IEBA
IHZvaWQgd2Via2l0X2RvbV93aGVlbF9ldmVudF9pbml0X3doZWVsX2V2ZW50KFdlYktpdERPTVdo
ZWVsRXZlbnQqIHNlbGYsIGdsb25nIHdoCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9N
X0lTX1dIRUVMX0VWRU5UKHNlbGYpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfRE9NX1dJTkRPVyh2aWV3KSk7CiAgICAgV2ViQ29yZTo6V2hlZWxFdmVudCogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKLSAgICBXZWJDb3JlOjpET01XaW5kb3cqIGNvbnZlcnRlZFZpZXcg
PSBXZWJLaXQ6OmNvcmUodmlldyk7Ci0gICAgaXRlbS0+aW5pdFdlYktpdFdoZWVsRXZlbnQod2hl
ZWxEZWx0YVgsIHdoZWVsRGVsdGFZLCBjb252ZXJ0ZWRWaWV3LCBzY3JlZW5YLCBzY3JlZW5ZLCBj
bGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KTsKKyAg
ICBpdGVtLT5pbml0V2ViS2l0V2hlZWxFdmVudCh3aGVlbERlbHRhWCwgd2hlZWxEZWx0YVksIFdl
YktpdDo6dG9XaW5kb3dQcm94eSh2aWV3KSwgc2NyZWVuWCwgc2NyZWVuWSwgY2xpZW50WCwgY2xp
ZW50WSwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSk7CiB9CiAKIGdsb25nIHdl
YmtpdF9kb21fd2hlZWxfZXZlbnRfZ2V0X3doZWVsX2RlbHRhX3goV2ViS2l0RE9NV2hlZWxFdmVu
dCogc2VsZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tCmluZGV4IDQ4MTY2NzY4ZjE0MTU4ZjAyMjAzZTJiMGI5MjVkMDcyY2Y1MzM4MDQu
LmZmOTQwMTY1ZTk0YTdjZmQxYWU0ZWFmYzNlYWMxMmE3N2MxMjNmYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTY4MCw3
ICsxNjgwLDcgQEAgdm9pZCBQREZQbHVnaW46OmNsaWNrZWRMaW5rKE5TVVJMICp1cmwpCiAKICAg
ICBSZWZQdHI8RXZlbnQ+IGNvcmVFdmVudDsKICAgICBpZiAobV9sYXN0TW91c2VFdmVudC50eXBl
KCkgIT0gV2ViRXZlbnQ6Ok5vVHlwZSkKLSAgICAgICAgY29yZUV2ZW50ID0gTW91c2VFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVs
dFZpZXcoKSwgcGxhdGZvcm0obV9sYXN0TW91c2VFdmVudCksIDAsIDApOworICAgICAgICBjb3Jl
RXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGZyYW1l
LT53aW5kb3dQcm94eSgpLCBwbGF0Zm9ybShtX2xhc3RNb3VzZUV2ZW50KSwgMCwgMCk7CiAKICAg
ICBmcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQoY29yZVVSTCwgZW1wdHlTdHJpbmcoKSwgY29y
ZUV2ZW50LmdldCgpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBN
YXliZVNlbmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxs
b3cpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCBlNDI0M2MwNzNkYTY0NjljNGI3NjY2ZmNiYTAzMWE5OGMyOWZjNDk1Li43MDRmNTJiMjIy
YzQ3NDcyNDNmMmVmY2RkY2NkMjgzMWI3OGEwYTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjcyOSw3ICsyNzI5LDcgQEAgdm9pZCBXZWJQ
YWdlOjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZh
bGlkLCBjb25zdCBXZWIKICAgICBpZiAoaXNLZXlib2FyZEV2ZW50VmFsaWQgJiYgZXZlbnQudHlw
ZSgpID09IFdlYkV2ZW50OjpLZXlEb3duKSB7CiAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dCBwbGF0Zm9ybUV2ZW50KHBsYXRmb3JtKGV2ZW50KSk7CiAgICAgICAgIHBsYXRmb3JtRXZlbnQu
ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pOwotICAg
ICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNldEluaXRpYWxGb2N1cyhmb3J3YXJkID8g
Rm9jdXNEaXJlY3Rpb25Gb3J3YXJkIDogRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCwgJktleWJvYXJk
RXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCBmcmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0Vmll
dygpKS5nZXQoKSk7CisgICAgICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0SW5pdGlh
bEZvY3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlvbkZvcndhcmQgOiBGb2N1c0RpcmVjdGlvbkJh
Y2t3YXJkLCAmS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKHBsYXRmb3JtRXZlbnQsIGZyYW1lLndpbmRv
d1Byb3h5KCkpLmdldCgpKTsKIAogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3Lm1tCmluZGV4IDFhNGMyOWIxYjBk
ZGFjODIyNTdiZDZmNGJhNmRjNDRmZjM5MTJlODkuLjE2OWU0YWU1ZmU3NzViOThkMjRjZDQ4MDZh
NWE5YzUwNzhlMTBlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01BYnN0cmFjdFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFi
c3RyYWN0Vmlldy5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dpbmRvd1Byb3h5Lmg+CiAK
ICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkZyYW1lKj4oX2ludGVybmFs
KQogCkBAIC0xMDAsMyArMTAxLDE5IEBAIERPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OkFi
c3RyYWN0RE9NV2luZG93KiB2YWx1ZSkKIAogICAgIHJldHVybiBraXQoZG93bmNhc3Q8V2ViQ29y
ZTo6RE9NV2luZG93Pih2YWx1ZSkpOwogfQorCitET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3Jl
OjpXaW5kb3dQcm94eSogd2luZG93UHJveHkpCit7CisgICAgaWYgKCF3aW5kb3dQcm94eSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBraXQod2luZG93UHJveHktPndpbmRvdygp
KTsKK30KKworV2ViQ29yZTo6V2luZG93UHJveHkqIHRvV2luZG93UHJveHkoRE9NQWJzdHJhY3RW
aWV3ICp2aWV3KQoreworICAgIGF1dG8qIHdpbmRvdyA9IGNvcmUodmlldyk7CisgICAgaWYgKCF3
aW5kb3cgfHwgIXdpbmRvdy0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1
cm4gJndpbmRvdy0+ZnJhbWUoKS0+d2luZG93UHJveHkoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmgKaW5kZXggYzRk
NzMyNWM3ZjI1YmI1Yjg2MTI3NDE2ZTNkOTBkMjgyMTRjMTE5Ny4uMzU5ZjA1ZWI0ZDRhNDNhYTUy
NDIzM2U0YmJmNjYyOGRiMzY4ODZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmgKQEAgLTI4LDExICsyOCwxNCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWJzdHJhY3RET01XaW5kb3c7CiBjbGFzcyBET01X
aW5kb3c7CitjbGFzcyBXaW5kb3dQcm94eTsKIH0KIAogV2ViQ29yZTo6RE9NV2luZG93KiBjb3Jl
KERPTUFic3RyYWN0VmlldyAqKTsKIERPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OkRPTVdp
bmRvdyopOwogRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6QWJzdHJhY3RET01XaW5kb3cq
KTsKK0RPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OldpbmRvd1Byb3h5Kik7CitXZWJDb3Jl
OjpXaW5kb3dQcm94eSogdG9XaW5kb3dQcm94eShET01BYnN0cmFjdFZpZXcgKik7CiAKIEBpbnRl
cmZhY2UgRE9NQWJzdHJhY3RWaWV3IChXZWJLaXRMZWdhY3lJbnRlcm5hbCkKIC0gKHZvaWQpX2Rp
c2Nvbm5lY3RGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01Eb2N1bWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5t
bQppbmRleCA2YzJmMzZkODI0YTk0YTY4MjNiZjJhODFjOWJlZDIyMzRlN2E2OGY0Li4zMGI4YzQ1
MzU0ODViNTYzMWUxYWViNjZlNDViMDVlNWYxYzE3Y2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCkBAIC0xNjIsNyArMTYyLDcgQEAgLSAodm9pZClzZXRE
b2N1bWVudFVSSTooTlNTdHJpbmcgKiluZXdEb2N1bWVudFVSSQogLSAoRE9NQWJzdHJhY3RWaWV3
ICopZGVmYXVsdFZpZXcKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5kZWZhdWx0VmlldygpKSk7Cisg
ICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT53aW5kb3dQcm94eSgpKSk7CiB9CiAKIC0g
KERPTVN0eWxlU2hlZXRMaXN0ICopc3R5bGVTaGVldHMKQEAgLTY4NCw3ICs2ODQsNyBAQCAtIChE
T01DU1NTdHlsZURlY2xhcmF0aW9uICopZ2V0Q29tcHV0ZWRTdHlsZTooRE9NRWxlbWVudCAqKWVs
ZW1lbnQgcHNldWRvRWxlbWVudAogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJhaXNlVHlwZUVycm9yRXhjZXB0aW9u
KCk7Ci0gICAgV2ViQ29yZTo6RE9NV2luZG93KiBkdiA9IElNUEwtPmRlZmF1bHRWaWV3KCk7Cisg
ICAgV2ViQ29yZTo6RE9NV2luZG93KiBkdiA9IElNUEwtPmRvbVdpbmRvdygpOwogICAgIGlmICgh
ZHYpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihkdi0+
Z2V0Q29tcHV0ZWRTdHlsZSgqY29yZShlbGVtZW50KSwgcHNldWRvRWxlbWVudCkpKTsKQEAgLTY5
OCw3ICs2OTgsNyBAQCAtIChET01DU1NSdWxlTGlzdCAqKWdldE1hdGNoZWRDU1NSdWxlczooRE9N
RWxlbWVudCAqKWVsZW1lbnQgcHNldWRvRWxlbWVudDooTlNTdAogLSAoRE9NQ1NTUnVsZUxpc3Qg
KilnZXRNYXRjaGVkQ1NTUnVsZXM6KERPTUVsZW1lbnQgKillbGVtZW50IHBzZXVkb0VsZW1lbnQ6
KE5TU3RyaW5nICopcHNldWRvRWxlbWVudCBhdXRob3JPbmx5OihCT09MKWF1dGhvck9ubHkKIHsK
ICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6
RE9NV2luZG93KiBkdiA9IElNUEwtPmRlZmF1bHRWaWV3KCk7CisgICAgV2ViQ29yZTo6RE9NV2lu
ZG93KiBkdiA9IElNUEwtPmRvbVdpbmRvdygpOwogICAgIGlmICghZHYpCiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihkdi0+Z2V0TWF0Y2hlZENTU1J1bGVz
KGNvcmUoZWxlbWVudCksIHBzZXVkb0VsZW1lbnQsIGF1dGhvck9ubHkpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01LZXlib2FyZEV2ZW50Lm1tCmluZGV4IGU5YWIxZmVm
ZTc0ZDk3MzRlYWMyODQxNmIwOWVmMjMxMGZjZmM3MWIuLmJhMmZiZTRlMTg5ZDYxMzZlZWQ3MzVl
ZmZmZTcxMjBiN2Y5Njk1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01LZXlib2FyZEV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01LZXlib2FyZEV2ZW50Lm1tCkBAIC0xMTAsMjUgKzExMCwyNSBAQCAtIChCT09MKWdldE1vZGlm
aWVyU3RhdGU6KE5TU3RyaW5nICopa2V5SWRlbnRpZmllckFyZwogLSAodm9pZClpbml0S2V5Ym9h
cmRFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2Vs
YWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKXZpZXcga2V5SWRl
bnRpZmllcjooTlNTdHJpbmcgKilpbktleUlkZW50aWZpZXIgbG9jYXRpb246KHVuc2lnbmVkKWlu
TG9jYXRpb24gY3RybEtleTooQk9PTClpbkN0cmxLZXkgYWx0S2V5OihCT09MKWluQWx0S2V5IHNo
aWZ0S2V5OihCT09MKWluU2hpZnRLZXkgbWV0YUtleTooQk9PTClpbk1ldGFLZXkgYWx0R3JhcGhL
ZXk6KEJPT0wpaW5BbHRHcmFwaEtleQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUs
IGNhbmNlbGFibGUsIGNvcmUodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5Mb2NhdGlvbiwgaW5D
dHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkFsdEdyYXBoS2V5KTsK
KyAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUs
IHRvV2luZG93UHJveHkodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5Mb2NhdGlvbiwgaW5DdHJs
S2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkFsdEdyYXBoS2V5KTsKIH0K
IAogLSAodm9pZClpbml0S2V5Ym9hcmRFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZToo
Qk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3Ry
YWN0VmlldyAqKXZpZXcga2V5SWRlbnRpZmllcjooTlNTdHJpbmcgKilpbktleUlkZW50aWZpZXIg
bG9jYXRpb246KHVuc2lnbmVkKWluTG9jYXRpb24gY3RybEtleTooQk9PTClpbkN0cmxLZXkgYWx0
S2V5OihCT09MKWluQWx0S2V5IHNoaWZ0S2V5OihCT09MKWluU2hpZnRLZXkgbWV0YUtleTooQk9P
TClpbk1ldGFLZXkKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
Ci0gICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBjb3JlKHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluTG9jYXRpb24sIGluQ3RybEtleSwgaW5B
bHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSk7CisgICAgSU1QTC0+aW5pdEtleWJvYXJkRXZl
bnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBpbktl
eUlkZW50aWZpZXIsIGluTG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXks
IGluTWV0YUtleSk7CiB9CiAKIC0gKHZvaWQpaW5pdEtleWJvYXJkRXZlbnQ6KE5TU3RyaW5nICop
dHlwZSBjYW5CdWJibGU6KEJPT0wpY2FuQnViYmxlIGNhbmNlbGFibGU6KEJPT0wpY2FuY2VsYWJs
ZSB2aWV3OihET01BYnN0cmFjdFZpZXcgKil2aWV3IGtleUlkZW50aWZpZXI6KE5TU3RyaW5nICop
aW5LZXlJZGVudGlmaWVyIGtleUxvY2F0aW9uOih1bnNpZ25lZClpbktleUxvY2F0aW9uIGN0cmxL
ZXk6KEJPT0wpaW5DdHJsS2V5IGFsdEtleTooQk9PTClpbkFsdEtleSBzaGlmdEtleTooQk9PTClp
blNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wpaW5NZXRhS2V5IGFsdEdyYXBoS2V5OihCT09MKWluQWx0
R3JhcGhLZXkKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0g
ICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBj
b3JlKHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluS2V5TG9jYXRpb24sIGluQ3RybEtleSwgaW5B
bHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwgaW5BbHRHcmFwaEtleSk7CisgICAgSU1QTC0+
aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRvd1By
b3h5KHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluS2V5TG9jYXRpb24sIGluQ3RybEtleSwgaW5B
bHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwgaW5BbHRHcmFwaEtleSk7CiB9CiAKIC0gKHZv
aWQpaW5pdEtleWJvYXJkRXZlbnQ6KE5TU3RyaW5nICopdHlwZSBjYW5CdWJibGU6KEJPT0wpY2Fu
QnViYmxlIGNhbmNlbGFibGU6KEJPT0wpY2FuY2VsYWJsZSB2aWV3OihET01BYnN0cmFjdFZpZXcg
Kil2aWV3IGtleUlkZW50aWZpZXI6KE5TU3RyaW5nICopaW5LZXlJZGVudGlmaWVyIGtleUxvY2F0
aW9uOih1bnNpZ25lZClpbktleUxvY2F0aW9uIGN0cmxLZXk6KEJPT0wpaW5DdHJsS2V5IGFsdEtl
eTooQk9PTClpbkFsdEtleSBzaGlmdEtleTooQk9PTClpblNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wp
aW5NZXRhS2V5CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwg
Y29yZSh2aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBpbktleUxvY2F0aW9uLCBpbkN0cmxLZXksIGlu
QWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXkpOworICAgIElNUEwtPmluaXRLZXlib2FyZEV2
ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2aWV3KSwgaW5L
ZXlJZGVudGlmaWVyLCBpbktleUxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0
S2V5LCBpbk1ldGFLZXkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NTW91c2VFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01Nb3VzZUV2ZW50Lm1tCmluZGV4IDdjN2UwZGRmZjE0MjE2MWVlNDhlNjc3NzAyNWU3Zjcw
ZTg1M2E4MTMuLmU1MTVkODkzNWMxNzdkNDcxMDk0YTg0YzVjZmI4ZDY0ZGIyOTQzODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tCkBAIC0xNDUsNyAr
MTQ1LDcgQEAgLSAodm9pZClpbml0TW91c2VFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJs
ZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk8KICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CiAgICAgRE9NTm9kZSogaW5SZWxhdGVkVGFyZ2V0T2JqQyA9IGlu
UmVsYXRlZFRhcmdldDsKICAgICBXZWJDb3JlOjpOb2RlKiBpblJlbGF0ZWRUYXJnZXROb2RlID0g
Y29yZShpblJlbGF0ZWRUYXJnZXRPYmpDKTsKLSAgICBJTVBMLT5pbml0TW91c2VFdmVudCh0eXBl
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUodmlldyksIGRldGFpbCwgaW5TY3JlZW5YLCBp
blNjcmVlblksIGluQ2xpZW50WCwgaW5DbGllbnRZLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNo
aWZ0S2V5LCBpbk1ldGFLZXksIGluQnV0dG9uLCBpblJlbGF0ZWRUYXJnZXROb2RlKTsKKyAgICBJ
TVBMLT5pbml0TW91c2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRvV2luZG93
UHJveHkodmlldyksIGRldGFpbCwgaW5TY3JlZW5YLCBpblNjcmVlblksIGluQ2xpZW50WCwgaW5D
bGllbnRZLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXksIGluQnV0
dG9uLCBpblJlbGF0ZWRUYXJnZXROb2RlKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0KaW5kZXggMjg2N2JjODAyMzkxNmE3ZTY3ODBmYTNl
YjcxMjBjOWM5MWFkMmE0Mi4uZGZhNzYyMDI0YjU2NjIyY2U1YjI5OTFkZjMxMmRmZDUzODcwZDBl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tCkBAIC01
MCw3ICs1MCw3IEBAIC0gKE5TU3RyaW5nICopZGF0YQogLSAodm9pZClpbml0VGV4dEV2ZW50OihO
U1N0cmluZyAqKXR5cGVBcmcgY2FuQnViYmxlQXJnOihCT09MKWNhbkJ1YmJsZUFyZyBjYW5jZWxh
YmxlQXJnOihCT09MKWNhbmNlbGFibGVBcmcgdmlld0FyZzooRE9NQWJzdHJhY3RWaWV3ICopdmll
d0FyZyBkYXRhQXJnOihOU1N0cmluZyAqKWRhdGFBcmcKIHsKICAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+aW5pdFRleHRFdmVudCh0eXBlQXJnLCBj
YW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsIGNvcmUodmlld0FyZyksIGRhdGFBcmcpOworICAg
IElNUEwtPmluaXRUZXh0RXZlbnQodHlwZUFyZywgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJn
LCB0b1dpbmRvd1Byb3h5KHZpZXdBcmcpLCBkYXRhQXJnKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJRXZlbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbQppbmRleCBhNDY0ZGFjZmJmNTEyNjZiYTky
ZTU5NzcxOTI5ZDg2MzFmMmYxNjQwLi4zZGM5N2IzOTM3ODQ3ZDBhY2IwZTBjZDJlYTk5YzkxZmQx
MjZmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbQpAQCAt
MTAzLDcgKzEwMyw3IEBAIC0gKGludCl3aGljaAogLSAodm9pZClpbml0VUlFdmVudDooTlNTdHJp
bmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5j
ZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKWluVmlldyBkZXRhaWw6KGludClpbkRldGFp
bAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBM
LT5pbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUoaW5WaWV3KSwg
aW5EZXRhaWwpOworICAgIElNUEwtPmluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2Vs
YWJsZSwgdG9XaW5kb3dQcm94eShpblZpZXcpLCBpbkRldGFpbCk7CiB9CiAKIEBlbmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01XaGVlbEV2ZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQubW0KaW5kZXggOGYwNTY5Y2E2
YTNmOTU4Yzc0MWY2ZDg4MzU4ZmZmZDE2MGIxOGFjOC4uZGQ0YTU3YjBmMzJiNzdiNDMwYjZkZDlj
ZDViMTUyMzRlNWE0MzRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTVdoZWVsRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdo
ZWVsRXZlbnQubW0KQEAgLTk2LDcgKzk2LDcgQEAgLSAoQk9PTClpc0hvcml6b250YWwKIC0gKHZv
aWQpaW5pdFdoZWVsRXZlbnQ6KGludClpbldoZWVsRGVsdGFYIHdoZWVsRGVsdGFZOihpbnQpaW5X
aGVlbERlbHRhWSB2aWV3OihET01BYnN0cmFjdFZpZXcgKil2aWV3IHNjcmVlblg6KGludClzY3Jl
ZW5YIHNjcmVlblk6KGludClzY3JlZW5ZIGNsaWVudFg6KGludCljbGllbnRYIGNsaWVudFk6KGlu
dCljbGllbnRZIGN0cmxLZXk6KEJPT0wpY3RybEtleSBhbHRLZXk6KEJPT0wpYWx0S2V5IHNoaWZ0
S2V5OihCT09MKXNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wpbWV0YUtleQogewogICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0V2ViS2l0V2hlZWxF
dmVudChpbldoZWVsRGVsdGFYLCBpbldoZWVsRGVsdGFZLCBjb3JlKHZpZXcpLCBzY3JlZW5YLCBz
Y3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRh
S2V5KTsKKyAgICBJTVBMLT5pbml0V2ViS2l0V2hlZWxFdmVudChpbldoZWVsRGVsdGFYLCBpbldo
ZWVsRGVsdGFZLCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRY
LCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KTsKIH0KIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5k
ZXggMmI3YjllMzc5YzFiODg4ZTFjM2UxMjRjNWRiM2YyZDczMGI3NmVlNy4uOWNhYTIwNGU2ZmE3
NjBhOGE2MTQ0MGFiYzgyMzkyYmFkYjJhOWI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC00NTMzLDEwICs0NTMzLDEwIEBAIHN0YXRp
YyBSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVG
cmFtZSkKICAgICBjYXNlIE5TRXZlbnRUeXBlS2V5RG93bjogewogICAgICAgICBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQgcGxhdGZvcm1FdmVudCA9IFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQoZXZlbnQpOwogICAgICAgICBwbGF0Zm9ybUV2ZW50LmRpc2Ft
YmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKLSAgICAgICAg
cmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCBjb3JlRnJhbWUtPmRv
Y3VtZW50KCktPmRlZmF1bHRWaWV3KCkpOworICAgICAgICByZXR1cm4gS2V5Ym9hcmRFdmVudDo6
Y3JlYXRlKHBsYXRmb3JtRXZlbnQsIGNvcmVGcmFtZS0+d2luZG93UHJveHkoKSk7CiAgICAgfQog
ICAgIGNhc2UgTlNFdmVudFR5cGVLZXlVcDoKLSAgICAgICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6
OmNyZWF0ZShQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50
KGV2ZW50KSwgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsKKyAgICAgICAg
cmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRl
UGxhdGZvcm1LZXlib2FyZEV2ZW50KGV2ZW50KSwgY29yZUZyYW1lLT53aW5kb3dQcm94eSgpKTsK
ICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC00NTQ3LDcg
KzQ1NDcsNyBAQCBzdGF0aWMgUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnRLZXlib2FyZEV2
ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiAgICAgV2ViRXZlbnRUeXBlIHR5cGUgPSBldmVudC50eXBl
OwogICAgIGlmICh0eXBlID09IFdlYkV2ZW50S2V5RG93biB8fCB0eXBlID09IFdlYkV2ZW50S2V5
VXApIHsKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgp
OwotICAgICAgICByZXR1cm4gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKFBsYXRmb3JtRXZlbnRGYWN0
b3J5OjpjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnQoZXZlbnQpLCBkb2N1bWVudCA/IGRvY3Vt
ZW50LT5kZWZhdWx0VmlldygpIDogMCk7CisgICAgICAgIHJldHVybiBLZXlib2FyZEV2ZW50Ojpj
cmVhdGUoUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudChl
dmVudCksIGRvY3VtZW50ID8gZG9jdW1lbnQtPndpbmRvd1Byb3h5KCkgOiAwKTsKICAgICB9CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0RPTUNvcmVDbGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNv
cmVDbGFzc2VzLmNwcAppbmRleCAxYjQzZGQ5ZjRjYTEzNWIyZDFjNGQ0YzQ2OWY4Njg1NTVjNDdl
OTY2Li5iMjUyNjFmN2RmY2UxYjdjZjQ3MWE5ZDFmMjNjYjA4N2IyNTc3YTBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCkBAIC04MDIsNyArODAyLDcgQEAg
SFJFU1VMVCBET01Eb2N1bWVudDo6Z2V0Q29tcHV0ZWRTdHlsZShfSW5fb3B0XyBJRE9NRWxlbWVu
dCogZWx0LCBfSW5fIEJTVFIgcHNldWQKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVy
biBFX0ZBSUw7CiAKLSAgICBXZWJDb3JlOjpET01XaW5kb3cqIGR2ID0gbV9kb2N1bWVudC0+ZGVm
YXVsdFZpZXcoKTsKKyAgICBhdXRvKiBkdiA9IG1fZG9jdW1lbnQtPmRvbVdpbmRvdygpOwogICAg
IFN0cmluZyBwc2V1ZG9FbHRTdHJpbmcocHNldWRvRWx0KTsKICAgICAKICAgICBpZiAoIWR2KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338974</attachid>
            <date>2018-04-26 22:40:03 -0700</date>
            <delta_ts>2018-04-26 22:56:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185022-20180426224002.patch</filename>
            <type>text/plain</type>
            <size>152304</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNmYmU3ZTk5YzEwNmQx
NzM1Nzc3MGZmMTQxMzkwZjdlODNmNmU2My4uN2E5MTUyMTZjNTM4N2EyY2MwNGNiODJkMmZmNTFm
NDY2NWFmMmY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAxOC0wNC0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94eSBp
bnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHVzaW5nIERPTVdpbmRvdyBpbiBhbGwgb2Ygb3Vy
IElETCBmaWxlcyBhbmQgdXNlIFdpbmRvd1Byb3h5IGFzCisgICAgICAgIHBlciB0aGVpciByZXNw
ZWN0aXZlIHNwZWNpZmljYXRpb25zLiBBcyBhIHJlc3VsdCwgdGhlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGFzIGFsc28gdXBkYXRlZCB0byB1c2UgV2luZG93UHJveHkgdHlwZSBpbnN0ZWFkIG9m
IERPTVdpbmRvdy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXaW5kb3dQcm94eTo6d2luZG93UHJveHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9XaW5kb3dQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eTo6
Z2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2luZG93UHJveHk6OmZyYW1lIGNvbnN0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChJc0J1aWx0aW5UeXBlKToK
KyAgICAgICAgKENvbXB1dGVJc0NhbGxiYWNrSW50ZXJmYWNlKToKKyAgICAgICAgKENvbXB1dGVJ
c0NhbGxiYWNrRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtOgorICAgICAgICAoQWRkVG9JbmNsdWRlc0ZvcklETFR5cGUpOgorICAgICAgICAo
R2V0QmFzZUlETFR5cGUpOgorICAgICAgICAoTmF0aXZlVG9KU1ZhbHVlRE9NQ29udmVydE5lZWRz
U3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kOUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kT3ZlcmxvYWREaXNwYXRjaGVyKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisgICAgICAgICogZG9tL0NvbXBvc2l0aW9uRXZl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRpb25FdmVudDo6Q29tcG9zaXRpb25F
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50Ojppbml0Q29tcG9zaXRp
b25FdmVudCk6CisgICAgICAgICogZG9tL0NvbXBvc2l0aW9uRXZlbnQuaDoKKyAgICAgICAgKiBk
b20vQ29tcG9zaXRpb25FdmVudC5pZGw6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkZWZhdWx0VmlldyBjb25zdCk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBk
b20vRG9jdW1lbnRUb3VjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRvdWNoOjpj
cmVhdGVUb3VjaCk6CisgICAgICAgICogZG9tL0RvY3VtZW50VG91Y2guaDoKKyAgICAgICAgKiBk
b20vRG9jdW1lbnRUb3VjaC5pZGw6CisgICAgICAgICogZG9tL0ZvY3VzRXZlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9jdXNFdmVudDo6Rm9jdXNFdmVudCk6CisgICAgICAgICogZG9tL0Zv
Y3VzRXZlbnQuaDoKKyAgICAgICAgKiBkb20vSW5wdXRFdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dEV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFdmVudDo6
SW5wdXRFdmVudCk6CisgICAgICAgICogZG9tL0lucHV0RXZlbnQuaDoKKyAgICAgICAgKiBkb20v
S2V5Ym9hcmRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlib2FyZEV2ZW50OjpLZXli
b2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXlib2FyZEV2ZW50Ojppbml0S2V5Ym9hcmRFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpLZXlib2FyZEV2ZW50OjpjaGFyQ29kZSBjb25zdCk6CisgICAgICAgICog
ZG9tL0tleWJvYXJkRXZlbnQuaDoKKyAgICAgICAgKiBkb20vS2V5Ym9hcmRFdmVudC5pZGw6Cisg
ICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQu
aWRsOgorICAgICAgICAqIGRvbS9Nb3VzZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
dXNlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50OjpNb3VzZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmspOgorICAgICAg
ICAqIGRvbS9Nb3VzZUV2ZW50Lmg6CisgICAgICAgICogZG9tL01vdXNlRXZlbnQuaWRsOgorICAg
ICAgICAqIGRvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3Vz
ZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TW91
c2VSZWxhdGVkRXZlbnQ6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZl
bnQ6OmZyYW1lVmlld0Zyb21XaW5kb3dQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJl
bGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVs
YXRlZEV2ZW50Ojpkb2N1bWVudFRvQWJzb2x1dGVTY2FsZUZhY3RvciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVBhZ2VMb2NhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6bG9jYXRpb25JblJvb3RWaWV3Q29vcmRp
bmF0ZXMgY29uc3QpOgorICAgICAgICAqIGRvbS9Nb3VzZVJlbGF0ZWRFdmVudC5oOgorICAgICAg
ICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKiBkb20vU2ltdWxhdGVkQ2xpY2suY3BwOgorICAg
ICAgICAqIGRvbS9UZXh0RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50OjpjcmVhdGVGb3JQbGFpblRleHRQ
YXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFz
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50OjpjcmVhdGVGb3JEcm9wKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRFdmVudDo6Y3JlYXRlRm9yRGljdGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRFdmVudDo6VGV4dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVu
dDo6aW5pdFRleHRFdmVudCk6CisgICAgICAgICogZG9tL1RleHRFdmVudC5oOgorICAgICAgICAq
IGRvbS9UZXh0RXZlbnQuaWRsOgorICAgICAgICAqIGRvbS9Ub3VjaEV2ZW50LmlkbDoKKyAgICAg
ICAgKiBkb20vVUlFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVSUV2ZW50OjpVSUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlVJRXZlbnQ6OmluaXRVSUV2ZW50KToKKyAgICAgICAgKiBk
b20vVUlFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VUlFdmVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlVJRXZlbnQ6OnZpZXcgY29uc3QpOgorICAgICAgICAqIGRvbS9VSUV2ZW50
LmlkbDoKKyAgICAgICAgKiBkb20vVUlFdmVudEluaXQuaDoKKyAgICAgICAgKiBkb20vVUlFdmVu
dEluaXQuaWRsOgorICAgICAgICAqIGRvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmg6CisgICAgICAg
IChXZWJDb3JlOjpVSUV2ZW50V2l0aEtleVN0YXRlOjpVSUV2ZW50V2l0aEtleVN0YXRlKToKKyAg
ICAgICAgKiBkb20vV2hlZWxFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50
OjpXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50Ojppbml0V2ViS2l0V2hlZWxFdmVudCk6CisgICAg
ICAgICogZG9tL1doZWVsRXZlbnQuaDoKKyAgICAgICAgKiBkb20vV2hlZWxFdmVudC5pZGw6Cisg
ICAgICAgICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Omluc2VydERpY3RhdGVkVGV4dCk6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpwYXN0ZUFzUGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVBc0Zy
YWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAg
ICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1
bWVudDo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudC5oOgorICAgICAg
ICAqIGh0bWwvSFRNTERvY3VtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1l
bnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVudFdpbmRvdyBjb25zdCk6
CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0
RWxlbWVudDo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0
bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5j
cHA6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9z
dE1lc3NhZ2VUaW1lcjo6UG9zdE1lc3NhZ2VUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpQb3N0
TWVzc2FnZVRpbWVyOjpldmVudCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnBvc3RN
ZXNzYWdlKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1dEV2ZW50Rm9yKToKKyAgICAg
ICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmhhbmRsZVRleHRJbnB1dEV2ZW50KToKKwogMjAxOC0wNC0yMyAgTWljaGFlbCBDYXRhbnph
cm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSBSZW1vdmUg
V2xVbmlxdWVQdHI8d2xfZGlzcGxheT4gZm9vdGd1bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CmluZGV4IGYzMDg5NWFiYWY2NzAwMjA3NDJkNGVmYzAzOTAxOGRhMjc3ZTc2YWYuLjZhZDUyNWU5
ODEwZWEwMjY3MmZlMWUwOTM3NTYxMWI4ZjM4NjQwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0wNC0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94eSBpbnN0ZWFkIG9mIERPTVdpbmRv
dyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIERPTS9ET01BYnN0cmFjdFZpZXcubW06CisgICAgICAgIChraXQpOgorICAgICAgICAo
dG9XaW5kb3dQcm94eSk6CisgICAgICAgICogRE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmg6
CisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOgorICAgICAgICAoLVtET01Eb2N1bWVudCBk
ZWZhdWx0Vmlld10pOgorICAgICAgICAoLVtET01Eb2N1bWVudCBnZXRDb21wdXRlZFN0eWxlOnBz
ZXVkb0VsZW1lbnQ6XSk6CisgICAgICAgICgtW0RPTURvY3VtZW50IGdldE1hdGNoZWRDU1NSdWxl
czpwc2V1ZG9FbGVtZW50OmF1dGhvck9ubHk6XSk6CisgICAgICAgICogRE9NL0RPTUhUTUxGcmFt
ZUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUhUTUxGcmFtZUVsZW1lbnQgY29udGVudFdpbmRv
d10pOgorICAgICAgICAqIERPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbToKKyAgICAgICAgKC1b
RE9NSFRNTElGcmFtZUVsZW1lbnQgY29udGVudFdpbmRvd10pOgorICAgICAgICAqIERPTS9ET01L
ZXlib2FyZEV2ZW50Lm1tOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2Fy
ZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjpsb2NhdGlvbjpj
dHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdyYXBoS2V5Ol0pOgorICAgICAgICAo
LVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxl
OnZpZXc6a2V5SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRh
S2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNh
bkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjprZXlMb2NhdGlvbjpjdHJsS2V5
OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdyYXBoS2V5Ol0pOgorICAgICAgICAoLVtET01L
ZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6
a2V5SWRlbnRpZmllcjprZXlMb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5
Ol0pOgorICAgICAgICAqIERPTS9ET01Nb3VzZUV2ZW50Lm1tOgorICAgICAgICAoLVtET01Nb3Vz
ZUV2ZW50IGluaXRNb3VzZUV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6ZGV0YWlsOnNj
cmVlblg6c2NyZWVuWTpjbGllbnRYOmNsaWVudFk6Y3RybEtleTphbHRLZXk6c2hpZnRLZXk6bWV0
YUtleTpidXR0b246cmVsYXRlZFRhcmdldDpdKToKKyAgICAgICAgKiBET00vRE9NVGV4dEV2ZW50
Lm1tOgorICAgICAgICAoLVtET01UZXh0RXZlbnQgaW5pdFRleHRFdmVudDpjYW5CdWJibGVBcmc6
Y2FuY2VsYWJsZUFyZzp2aWV3QXJnOmRhdGFBcmc6XSk6CisgICAgICAgICogRE9NL0RPTVVJRXZl
bnQubW06CisgICAgICAgICgtW0RPTVVJRXZlbnQgdmlld10pOgorICAgICAgICAoLVtET01VSUV2
ZW50IGluaXRVSUV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6ZGV0YWlsOl0pOgorICAg
ICAgICAqIERPTS9ET01XaGVlbEV2ZW50Lm1tOgorICAgICAgICAoLVtET01XaGVlbEV2ZW50IGlu
aXRXaGVlbEV2ZW50OndoZWVsRGVsdGFZOnZpZXc6c2NyZWVuWDpzY3JlZW5ZOmNsaWVudFg6Y2xp
ZW50WTpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorCiAyMDE4LTA0LTIzICBD
b21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMjMwOTIxLCByMjMwOTIzLCByMjMwOTI0LCByMjMwOTMyLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGRkZTgwMDhkYzE4N2YzMDI0OTk1YjJhNGJjN2Q5
Y2QwY2E5ZWZjNGIuLmY5YjU5MDBmMTk5ZTU3Yzc0YWJkNDIzYTkzMzFhZGQ4ZjQ0N2M4ZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0wNC0yNiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94
eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVDbGFzc2VzLmNwcDoKKyAgICAgICAg
KERPTURvY3VtZW50OjpnZXRDb21wdXRlZFN0eWxlKToKKwogMjAxOC0wNC0yMyAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjIzMDkyMSwgcjIzMDkyMywgcjIzMDkyNCwgcjIzMDkzMiwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMGY2NDZl
Yzc4ODYwMDlkMDgwYjdmY2U4NzJmOTBjMzdjMGJjNjZmLi4wMTE0ZjIwNThmYWJhOWEyZGUwMTI4
NTk3MGE2NjBhZDc0OTQ5ZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzY1LDcgKzIzNjUsNiBAQAogCQk4M0IyRDE3NTFC
OEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOTU5RTExQjhCQzIyQjAwNEQ5Mzg1IC8qIE5h
dGl2ZU5vZGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVzdFRy
YWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
Qjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQjk2ODdCMTlG
OEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAv
KiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLzsgfTsKLQkJODNCOUU3MEIyMDg2QkE0MzAwRTVE
NzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I5RTcwOTIwODZCQTI3MDBFNUQ3NTYgLyogSlNET01D
b252ZXJ0V2luZG93UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4M0JCNUM4ODFENUQ2RjQ1MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHND
b2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmgg
Ki87IH07CiAJCTgzQzA1QTVCMUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1
bmN0aW9ucy5oICovOyB9OwogCQk4M0MxRDQyNTE3OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNl
Z0FyY0Ficy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODNDMUQ0MTMxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdBcmNBYnMuaCAqLzsgfTsKQEAg
LTk4NzcsNyArOTg3Niw2IEBACiAJCTgzQjc0RUYyMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxp
dmVSZXF1ZXN0VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0I5Njg3OTE5RjhBQjgzMDA0RUY3
QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk4M0I5RTcwOTIwODZCQTI3MDBFNUQ3NTYgLyogSlNET01Db252ZXJ0V2luZG93UHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Db252ZXJ0V2luZG93UHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCQjVDODcxRDVENkYzQTAwNUE3
MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODNDMDVBNTgxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9y
dGhhbmRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlUHJv
cGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE5ODM1LDcgKzE5ODMzLDYgQEAKIAkJCQk3QzhFMzRBQTFFNEEzMzhFMDA1NENFMjMgLyogSlNE
T01Db252ZXJ0VmFyaWFkaWMuaCAqLywKIAkJCQk3Q0JBNUJBNjFGMEI0QkRFMDAzNEQ3NDUgLyog
SlNET01Db252ZXJ0V2ViR0wuY3BwICovLAogCQkJCTdDOEUzNEFCMUU0QTMzOEUwMDU0Q0UyMyAv
KiBKU0RPTUNvbnZlcnRXZWJHTC5oICovLAotCQkJCTgzQjlFNzA5MjA4NkJBMjcwMEU1RDc1NiAv
KiBKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oICovLAogCQkJCTdDOEUzNEFDMUU0QTMzOEUwMDU0
Q0UyMyAvKiBKU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIuaCAqLywKIAkJCSk7CiAJCQluYW1l
ID0gQ29udmVyc2lvbnM7CkBAIC0yODQxNiw3ICsyODQxMyw2IEBACiAJCQkJN0M4RTM0QzQxRTRB
MzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFVuaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
QzhFMzRDNTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0VmFyaWFkaWMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdDOEUzNEM2MUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRXZWJH
TC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODNCOUU3MEIyMDg2QkE0MzAwRTVENzU2IC8qIEpTRE9N
Q29udmVydFdpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRDNzFFNEEzM0Iw
MDA1NENFMjMgLyogSlNET01Db252ZXJ0WFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGQzlFMEU0RDE2NDE5QzFFMDAzOTJCRTMgLyogSlNET01DU1NOYW1lc3BhY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNjBEN0MxMEQyOUE0NjMwMEI5OTE4RiAvKiBKU0RPTUV4Y2VwdGlv
bi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9J
RExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAppbmRleCA1ZmU3
N2U4M2YyM2RhMmIxYjQyMGQxZTM5MmRlYTlkYzA3ZmIxYzgwLi44MDU3ZGZhMTE1ODg4ZDNkYjRh
MGYwYmUyNmI0YzY2MmI2OWM3ODdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKQEAg
LTI3NCw3ICsyNzQsNiBAQCBzdHJ1Y3QgSURMU2NoZWR1bGVkQWN0aW9uIDogSURMVHlwZTxzdGQ6
OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPj4geyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IElETFdyYXBwZXI8VD4geyB9OwogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETEV2ZW50TGlzdGVuZXIgOiBJRExXcmFwcGVyPFQ+
IHsgfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExYUGF0aE5TUmVzb2x2ZXIgOiBJ
RExXcmFwcGVyPFQ+IHsgfTsKLXN0cnVjdCBJRExXaW5kb3dQcm94eSA6IElETFdyYXBwZXI8SlNX
aW5kb3dQcm94eT4geyB9OwogCiBzdHJ1Y3QgSURMSURCS2V5IDogSURMV3JhcHBlcjxJREJLZXk+
IHsgfTsKIHN0cnVjdCBJRExJREJLZXlEYXRhIDogSURMV3JhcHBlcjxJREJLZXlEYXRhPiB7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5k
b3dQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2luZG93
UHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJjMWZmNDgxOTJkZTVjMjA4
MmRiN2IzZGUwYWMzYmFhNGIzNGM3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5k
b3dQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZl
cnRCYXNlLmgiCi0jaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTQ29udmVydGVyPElETFdpbmRvd1Byb3h5PiB7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUgPSB0cnVlOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9IGZhbHNlOwotCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252ZXJ0KEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgVSYmIHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRl
LCBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsKLSAgICB9Ci19OwotCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCmluZGV4IDE4ODY3MWU0OWIxZjE0MzE1
Yzk4Njc3MWQwN2JhNmY4M2UxYWJkMjcuLmE0YjE4MDVjNjUyZTIzMjBiZmQ3OWEwOTc5Mjc5YWNj
MDg3YjY5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHku
Y3BwCkBAIC0xMTksNiArMTE5LDEyIEBAIHZvaWQgSlNXaW5kb3dQcm94eTo6c2V0V2luZG93KEFi
c3RyYWN0RE9NV2luZG93JiBkb21XaW5kb3cpCiAgICAgQVNTRVJUKHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkgPT0gd2luZG93KTsKIH0KIAorV2luZG93UHJveHkqIEpTV2luZG93UHJveHk6Ondp
bmRvd1Byb3h5KCkgY29uc3QKK3sKKyAgICBhdXRvJiB3aW5kb3cgPSB3cmFwcGVkKCk7CisgICAg
cmV0dXJuIHdpbmRvdy5mcmFtZSgpID8gJndpbmRvdy5mcmFtZSgpLT53aW5kb3dQcm94eSgpIDog
bnVsbHB0cjsKK30KKwogdm9pZCBKU1dpbmRvd1Byb3h5OjphdHRhY2hEZWJ1Z2dlcihKU0M6OkRl
YnVnZ2VyKiBkZWJ1Z2dlcikKIHsKICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB3aW5kb3coKTsK
QEAgLTEzOCwxMiArMTQ0LDYgQEAgQWJzdHJhY3RET01XaW5kb3cmIEpTV2luZG93UHJveHk6Ondy
YXBwZWQoKSBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4od2luZG93
KS0+d3JhcHBlZCgpOwogfQogCi1BYnN0cmFjdERPTVdpbmRvdyogSlNXaW5kb3dQcm94eTo6dG9X
cmFwcGVkKFZNJiB2bSwgSlNPYmplY3QqIHZhbHVlKQotewotICAgIGF1dG8qIHdyYXBwZXIgPSBq
c0R5bmFtaWNDYXN0PEpTV2luZG93UHJveHkqPih2bSwgdmFsdWUpOwotICAgIHJldHVybiB3cmFw
cGVyID8gJndyYXBwZXItPndyYXBwZWQoKSA6IG51bGxwdHI7Ci19Ci0KIEpTVmFsdWUgdG9KUyhF
eGVjU3RhdGUqIHN0YXRlLCBXaW5kb3dQcm94eSYgd2luZG93UHJveHkpCiB7CiAgICAgcmV0dXJu
ICZ3aW5kb3dQcm94eS5qc1dpbmRvd1Byb3h5KGN1cnJlbnRXb3JsZCgqc3RhdGUpKTsKQEAgLTE1
NCw0ICsxNTQsMTQgQEAgSlNXaW5kb3dQcm94eSYgdG9KU1dpbmRvd1Byb3h5KFdpbmRvd1Byb3h5
JiB3aW5kb3dQcm94eSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKICAgICByZXR1cm4gd2luZG93
UHJveHkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiB9CiAKK1dpbmRvd1Byb3h5KiBKU1dpbmRvd1By
b3h5Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmICghdmFsdWUu
aXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgSlNPYmplY3QqIG9iamVj
dCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBpZiAob2JqZWN0LT5pbmhlcml0czxKU1dpbmRvd1By
b3h5Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNXaW5kb3dQcm94eSo+KG9iamVjdCkt
PndpbmRvd1Byb3h5KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93
UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaAppbmRl
eCAxODVhNTQ1NzhiZjgxNzdjZmNhMTc1YzZlNGIxMWY0NzQ4YTQwOTQ4Li5lNmYxNzFjNjg2OTZh
OTFhMWRjZDQxZDIzODFjMDRjZTBkMzQ4Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXaW5kb3dQcm94eS5oCkBAIC0yOCw3ICsyOCw5IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cu
aCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
UHJveHkuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zOSw3ICs0MSw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJhY3RET01XaW5kb3c7CiBjbGFzcyBBYnN0cmFjdEZyYW1l
OwotY2xhc3MgV2luZG93UHJveHk7CiAKIGNsYXNzIEpTV2luZG93UHJveHkgZmluYWwgOiBwdWJs
aWMgSlNDOjpKU1Byb3h5IHsKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU1Byb3h5OwpAQCAtNDks
MTIgKzUwLDE0IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEpTRE9NR2xv
YmFsT2JqZWN0KiB3aW5kb3coKSBjb25zdCB7IHJldHVybiBKU0M6OmpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KHRhcmdldCgpKTsgfQorICAgIEpTRE9NR2xvYmFsT2JqZWN0KiB3aW5kb3coKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHRhcmdldCgpKTsg
fQogICAgIHZvaWQgc2V0V2luZG93KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAg
IHZvaWQgc2V0V2luZG93KEFic3RyYWN0RE9NV2luZG93Jik7CiAKKyAgICBXaW5kb3dQcm94eSog
d2luZG93UHJveHkoKSBjb25zdDsKKwogICAgIEFic3RyYWN0RE9NV2luZG93JiB3cmFwcGVkKCkg
Y29uc3Q7Ci0gICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIEFic3RyYWN0RE9NV2luZG93KiB0b1dy
YXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNPYmplY3QqKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBP
UlQgV2luZG93UHJveHkqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKIAogICAg
IERPTVdyYXBwZXJXb3JsZCYgd29ybGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CiAKQEAgLTcxLDEw
ICs3NCwxNiBAQCBwcml2YXRlOgogLy8gSXQgaXMsIGhvd2V2ZXIsIHN0cm9uZ2x5IG93bmVkIGJ5
IEFic3RyYWN0RnJhbWUgdmlhIGl0cyBXaW5kb3dQcm94eSwgc28gd2UgY2FuIGdldCBvbmUgZnJv
bSBhIFdpbmRvd1Byb3h5LgogV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqLCBXaW5kb3dQcm94eSYpOwogaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgV2luZG93UHJveHkqIHdpbmRvd1Byb3h5KSB7IHJldHVybiB3aW5k
b3dQcm94eSA/IHRvSlMoc3RhdGUsICp3aW5kb3dQcm94eSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1p
bmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBSZWZQ
dHI8V2luZG93UHJveHk+JiB3aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwgd2luZG93
UHJveHkuZ2V0KCkpOyB9CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCosIFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSkgeyBy
ZXR1cm4gdG9KUyhzdGF0ZSwgd2luZG93UHJveHkpOyB9CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBXaW5kb3dQcm94eSogd2luZG93UHJveHkpIHsgcmV0dXJuIHdpbmRvd1Byb3h5ID8gdG9KUyhz
dGF0ZSwgZ2xvYmFsT2JqZWN0LCAqd2luZG93UHJveHkpIDogSlNDOjpqc051bGwoKTsgfQogCiBK
U1dpbmRvd1Byb3h5JiB0b0pTV2luZG93UHJveHkoV2luZG93UHJveHkmLCBET01XcmFwcGVyV29y
bGQmKTsKIGlubGluZSBKU1dpbmRvd1Byb3h5KiB0b0pTV2luZG93UHJveHkoV2luZG93UHJveHkq
IHdpbmRvd1Byb3h5LCBET01XcmFwcGVyV29ybGQmIHdvcmxkKSB7IHJldHVybiB3aW5kb3dQcm94
eSA/ICZ0b0pTV2luZG93UHJveHkoKndpbmRvd1Byb3h5LCB3b3JsZCkgOiBudWxscHRyOyB9CiAK
IAordGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFdpbmRvd1By
b3h5PiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNXaW5kb3dQcm94eTsKKyAgICB1c2lu
ZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gV2luZG93UHJveHkqOworfTsKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwCmlu
ZGV4IDhlOGY1MTM1M2VkMWY3YTBiNWIzZjkzMDRjZjgxYzhhYWNiNzViNWUuLjkwMThkMjNkMjNj
YTFlOTQ3YWVkMjk5M2QxODRmOTEwMmRiNzE4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XaW5kb3dQcm94eS5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDb21tb25W
TS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCisjaW5j
bHVkZSAiSlNXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdl
Q29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtOTEsNiArOTIsMTEg
QEAgVmVjdG9yPEpTQzo6U3Ryb25nPEpTV2luZG93UHJveHk+PiBXaW5kb3dQcm94eTo6anNXaW5k
b3dQcm94aWVzQXNWZWN0b3IoKSBjb25zdAogICAgIHJldHVybiBjb3B5VG9WZWN0b3IobV9qc1dp
bmRvd1Byb3hpZXMudmFsdWVzKCkpOwogfQogCitKU0RPTUdsb2JhbE9iamVjdCogV2luZG93UHJv
eHk6Omdsb2JhbE9iamVjdChET01XcmFwcGVyV29ybGQmIHdvcmxkKQoreworICAgIHJldHVybiBq
c1dpbmRvd1Byb3h5KHdvcmxkKS53aW5kb3coKTsKK30KKwogSlNXaW5kb3dQcm94eSYgV2luZG93
UHJveHk6OmNyZWF0ZUpTV2luZG93UHJveHlXaXRoSW5pdGlhbGl6ZWRTY3JpcHQoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh3b3JsZC52bSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oCmluZGV4IDc3NzIyOTgzYjBhMzIy
Y2QwNjdkZmI1MDYyZGEwNzc3YTY4ZTY1ZjguLjExZjAyMjQ4YjdhY2FjNWU1ZmM3OWZmNDM0ZTE1
NDRjOGZiNTIwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRv
d1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaApA
QCAtMjAsNyArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTV2luZG93UHJv
eHkuaCIKKyNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC0zMCw3ICszMCwx
MCBAQCBjbGFzcyBEZWJ1Z2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBYnN0
cmFjdERPTVdpbmRvdzsKIGNsYXNzIEFic3RyYWN0RnJhbWU7CitjbGFzcyBKU0RPTUdsb2JhbE9i
amVjdDsKK2NsYXNzIEpTV2luZG93UHJveHk7CiAKIGNsYXNzIFdpbmRvd1Byb3h5IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQwLDYgKzQzLDggQEAgcHVibGljOgogICAgIGV4
cGxpY2l0IFdpbmRvd1Byb3h5KEFic3RyYWN0RnJhbWUmKTsKICAgICB+V2luZG93UHJveHkoKTsK
IAorICAgIEFic3RyYWN0RnJhbWUmIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQor
CiAgICAgdm9pZCBkZXN0cm95SlNXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmKTsKIAogICAg
IFByb3h5TWFwOjpWYWx1ZXNDb25zdEl0ZXJhdG9yUmFuZ2UganNXaW5kb3dQcm94aWVzKCkgY29u
c3QgeyByZXR1cm4gbV9qc1dpbmRvd1Byb3hpZXMudmFsdWVzKCk7IH0KQEAgLTYzLDEwICs2OCw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIChpdCAhPSBtX2pzV2luZG93UHJveGllcy5lbmQo
KSkgPyBpdC0+dmFsdWUuZ2V0KCkgOiBudWxscHRyOwogICAgIH0KIAotICAgIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBqc1dpbmRvd1Byb3h5KHdvcmxkKS53aW5kb3coKTsKLSAgICB9CisgICAgV0VC
Q09SRV9FWFBPUlQgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChET01XcmFwcGVyV29y
bGQmKTsKIAogICAgIHZvaWQgY2xlYXJKU1dpbmRvd1Byb3hpZXNOb3RNYXRjaGluZ0RPTVdpbmRv
dyhBYnN0cmFjdERPTVdpbmRvdyosIGJvb2wgZ29pbmdJbnRvUGFnZUNhY2hlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IDk1
MjQyOWEwZTQ5Nzc0YmFkMjJjMWU1OGViYjJlNGVkZGJhZDNiNjMuLjJmY2ZlZTNhN2FhOGYyMmYy
NmViZGRiNmE0ZTI4ZmEwMzhiMmY0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTg5MSw3ICs4OTEsNiBAQCBzdWIgSXNCdWls
dGluVHlwZQogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIi
OwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJhbnkiOwogICAgIHJldHVybiAxIGlm
ICR0eXBlLT5uYW1lIGVxICJvYmplY3QiOwotICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVx
ICJXaW5kb3dQcm94eSI7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTEwMDEsNiArMTAwMCw3IEBA
IHN1YiBDb21wdXRlSXNDYWxsYmFja0ludGVyZmFjZQogICAgIGFzc2VydCgiTm90IGEgdHlwZSIp
IGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5sZXNzICRvYmpl
Y3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUg
ZXEgIldpbmRvd1Byb3h5IjsKIAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1lOwogICAg
IG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlwZU5hbWUpIG9y
IGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlTmFt
ZVwiIVxuIik7CkBAIC0xMDM4LDYgKzEwMzgsNyBAQCBzdWIgQ29tcHV0ZUlzQ2FsbGJhY2tGdW5j
dGlvbgogICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUi
OwogCiAgICAgcmV0dXJuIDAgdW5sZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7
CisgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsKIAogICAgIG15
ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURM
RmlsZUZvckludGVyZmFjZSgkdHlwZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURM
IGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlTmFtZVwiIVxuIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDYyNmE5ZjBi
MmQ2ZjA0M2NmOTJiZGYzMmYyOTYyODkyNjExNmU1ZTQuLjMwYTM3NGMyODI0ZmEyNjA4MjQyYWEz
ODcxMDk4NDIwMmI1ZDBlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00MjEsMTMgKzQyMSw2IEBAIHN1YiBBZGRUb0lu
Y2x1ZGVzRm9ySURMVHlwZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCR0eXBl
LT5uYW1lIGVxICJXaW5kb3dQcm94eSIpIHsKLSAgICAgICAgQWRkVG9JbmNsdWRlcygiV2luZG93
UHJveHkuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAgQWRkVG9JbmNs
dWRlcygiSlNXaW5kb3dQcm94eS5oIiwgJGluY2x1ZGVzUmVmLCAkY29uZGl0aW9uYWwpOwotICAg
ICAgICBBZGRUb0luY2x1ZGVzKCJKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIiwgJGluY2x1ZGVz
UmVmLCAkY29uZGl0aW9uYWwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7CiAgICAgICAgIEFkZFRvSW5jbHVk
ZXMoIkpTRE9NQ29udmVydFN0cmluZ3MuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtNjM5Myw3ICs2Mzg2LDYgQEAgc3ViIEdldEJhc2VJRExUeXBl
CiAgICAgICAgICJKU09OIiA9PiAiSURMSlNPTiIsCiAgICAgICAgICJTY2hlZHVsZWRBY3Rpb24i
ID0+ICJJRExTY2hlZHVsZWRBY3Rpb24iLAogICAgICAgICAiU2VyaWFsaXplZFNjcmlwdFZhbHVl
IiA9PiAiSURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4iLAot
ICAgICAgICAiV2luZG93UHJveHkiID0+ICJJRExXaW5kb3dQcm94eSIsCiAgICAgICAgICJYUGF0
aE5TUmVzb2x2ZXIiID0+ICJJRExYUGF0aE5TUmVzb2x2ZXI8WFBhdGhOU1Jlc29sdmVyPiIsCiAg
ICAgKTsKIApAQCAtNjU1NCw3ICs2NTQ2LDYgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZURPTUNvbnZl
cnROZWVkc1N0YXRlCiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIkpTT04iOwogICAg
IHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiOwogICAg
IHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwotICAgIHJldHVy
biAxIGlmICR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAgICAgCiAgICAgcmV0dXJuIDA7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCmluZGV4IGJhNDViYjk4ZjIxYTYzMzkwOWQyYmU4ZTBhMWZlMmRjNzI2YTM0
NWYuLmMwNDY2YzI2NmI3MzdmNmM4ODVkMmFhZmQwNWI1ZjE2ZjY4MmQ1MDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CkBAIC01NSw3ICs1NSw2IEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRl
ICJKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCIKICNpbmNsdWRlICJKU0RPTVN0cmlu
Z0xpc3QuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93
QmFzZS5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNEb2N1
bWVudC5oIgpAQCAtNjk1Nyw3ICs2OTU2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDlCb2QKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8gd2luZG93ID0g
Y29udmVydDxJRExJbnRlcmZhY2U8RE9NV2luZG93Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgIndpbmRvdyIs
ICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiRE9NV2luZG93Iik7IH0pOworICAg
IGF1dG8gd2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8V2luZG93UHJveHk+Pigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNj
b3BlLCAwLCAid2luZG93IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJXaW5k
b3dQcm94eSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqd2luZG93KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNzAyOSw3ICs3MDI4LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZE92ZXIKICAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2Qm9keShzdGF0ZSwgY2FzdGVkVGhpcywg
dGhyb3dTY29wZSk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09iamVjdCgpICYm
IGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNUZXN0T2JqPih2bSkpCiAg
ICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kOEJvZHkoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwotICAgICAgICBpZiAoZGlz
dGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiAoYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcp
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkgfHwgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdB
cmcpLT5pbmhlcml0czxKU0RPTVdpbmRvdz4odm0pKSkKKyAgICAgICAgaWYgKGRpc3Rpbmd1aXNo
aW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0
czxKU1dpbmRvd1Byb3h5Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOUJvZHkoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93
U2NvcGUpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiBhc09i
amVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzPEpTQmxvYj4odm0pKQogICAgICAgICAg
ICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEzQm9k
eShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggYzgzZWVlZWRiZjQxNjNmODMy
YmNkMjUzZWMwNTc1Njg0NmVlZDY4NC4uNzFkZGZjNDg5ZWQyZDVkYTI1NmZiNWM0MzBiOTMyZWJk
YzRmODcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbApAQCAtMjg2LDcgKzI4Niw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGln
aCIsICJraW5kYS1sb3ciIH07CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmlu
Z0xpc3Q/IGxpc3RBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChzZXF1ZW5jZTxE
T01TdHJpbmc+PyBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFRlc3RP
Ymogb2JqQXJnKTsKLSAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoRE9NV2luZG93IHdpbmRv
dyk7CisgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFdpbmRvd1Byb3h5IHdpbmRvdyk7CiAg
ICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKHNlcXVlbmNlPERPTVN0cmluZz4gYXJyYXlBcmcp
OwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChzZXF1ZW5jZTx1bnNpZ25lZCBsb25nPiBh
cnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmluZyBzdHJBcmcp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCmluZGV4IDBlMzhhNjcxOGNk
MWRhZDJlNzkwMjhiODkwMDU2YTZmY2I2NDJjOTAuLjAwN2FmN2Q3MjRmNWMzZTRhMGEzNjExMjU2
NmM0ODJlZDZmZDU5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlv
bkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAK
QEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb21wb3NpdGlvbkV2ZW50
OjpDb21wb3NpdGlvbkV2ZW50KCkgPSBkZWZhdWx0OwogCi1Db21wb3NpdGlvbkV2ZW50OjpDb21w
b3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRE9NV2luZG93KiB2aWV3LCBj
b25zdCBTdHJpbmcmIGRhdGEpCi0gICAgOiBVSUV2ZW50KHR5cGUsIHRydWUsIHRydWUsIHZpZXcs
IDApCitDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkK
KyAgICA6IFVJRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCkKICAgICAs
IG1fZGF0YShkYXRhKQogewogfQpAQCAtNDUsMTIgKzQ1LDEyIEBAIENvbXBvc2l0aW9uRXZlbnQ6
OkNvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBp
bml0aWFsCiAKIENvbXBvc2l0aW9uRXZlbnQ6On5Db21wb3NpdGlvbkV2ZW50KCkgPSBkZWZhdWx0
OwogCi12b2lkIENvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2lu
ZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCit2b2lkIENvbXBvc2l0aW9uRXZlbnQ6Omlu
aXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0
cmluZyYgZGF0YSkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3
LCAwKTsKKyAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1v
dmUodmlldyksIDApOwogCiAgICAgbV9kYXRhID0gZGF0YTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29t
cG9zaXRpb25FdmVudC5oCmluZGV4IDhmZjAyZWM5Njk3NzhiODg1YTYzMTcwMjRjOTU3NDc2ZTAy
MWIyYTYuLjNiMWM0NmQ2MzVlY2FmNmNkMDkxOTA5OGY1MDhmYzQxZTY0Y2ViY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENvbXBvc2l0aW9uRXZlbnQgZmluYWwgOiBwdWJsaWMgVUlFdmVu
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0
YSkKKyAgICBzdGF0aWMgUmVmPENvbXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRh
dGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21wb3NpdGlvbkV2ZW50
KHR5cGUsIHZpZXcsIGRhdGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29tcG9z
aXRpb25FdmVudCh0eXBlLCBXVEZNb3ZlKHZpZXcpLCBkYXRhKSk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBAIC01Myw3ICs1
Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbXBvc2l0aW9uRXZlbnQoKTsKIAotICAg
IHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRh
dGEpOworICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+
JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAKICAgICBTdHJpbmcgZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YTsgfQogCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBDb21wb3NpdGlvbkV2ZW50KCk7Ci0gICAgQ29tcG9zaXRpb25FdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYpOworICAgIENvbXBvc2l0aW9u
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNv
bnN0IFN0cmluZyYpOwogICAgIENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJvb2wgaXNDb21wb3NpdGlvbkV2
ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29t
cG9zaXRpb25FdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5p
ZGwKaW5kZXggZDg3MjQwODgzZTI3ZDNiMzQ1ODUzOWViOTIwZjRkM2YyODcxNjZjNC4uMjBhYWM3
ZWE0NzcwZDU2NTllZDQwOTEwZDdhYTc5NTA4ZTY2MTgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NpdGlvbkV2ZW50LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIHZvaWQgaW5pdENvbXBv
c2l0aW9uRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZpbmVkIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlQXJn
ID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBib29sZWFu
IGNhbmNlbGFibGVBcmcgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
dGlvbmFsIERPTVdpbmRvdz8gdmlld0FyZyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlld0FyZyA9IG51bGwsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBET01TdHJpbmcgZGF0YUFyZyA9ICJ1bmRlZmlu
ZWQiKTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDg2ZjgzZTcyNjQyM2FjNDU0
MzVkMzJiZWYwNDk0ZTk5NDllMDU0OTkuLjdlN2VkYTAxNzcyZDRhOGJjOGJmMTYxMDViYzQ1ZTI1
ZmRiODIwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDI4MCw2ICs0MjgwLDEzIEBA
IHZvaWQgRG9jdW1lbnQ6OnRha2VET01XaW5kb3dGcm9tKERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICBBU1NFUlQobV9kb21XaW5kb3ctPmZyYW1lKCkgPT0gbV9mcmFtZSk7CiB9CiAKK1dpbmRvd1By
b3h5KiBEb2N1bWVudDo6d2luZG93UHJveHkoKSBjb25zdAoreworICAgIGlmICghbV9mcmFtZSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZtX2ZyYW1lLT53aW5kb3dQcm94
eSgpOworfQorCiBEb2N1bWVudCYgRG9jdW1lbnQ6OmNvbnRleHREb2N1bWVudCgpIGNvbnN0CiB7
CiAgICAgaWYgKG1fY29udGV4dERvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBhNGZi
MDJmOWUxYmNiZDQwMGIwY2M4NjUyYWJkNDA0ZjAxYzQ1OTVmLi5jZTM3ZjM3MjE3ODMzNjc1N2E3
N2U1MGY0ZWJkYzgyNDA2ZTNlMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNzk5LDcgKzc5
OSw3IEBAIHB1YmxpYzoKIAogICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29uc3QgeyByZXR1
cm4gbV9kb21XaW5kb3cuZ2V0KCk7IH0KICAgICAvLyBJbiBET00gTGV2ZWwgMiwgdGhlIERvY3Vt
ZW50J3MgRE9NV2luZG93IGlzIGNhbGxlZCB0aGUgZGVmYXVsdFZpZXcuCi0gICAgRE9NV2luZG93
KiBkZWZhdWx0VmlldygpIGNvbnN0IHsgcmV0dXJuIGRvbVdpbmRvdygpOyB9IAorICAgIFdFQkNP
UkVfRVhQT1JUIFdpbmRvd1Byb3h5KiB3aW5kb3dQcm94eSgpIGNvbnN0OwogCiAgICAgRG9jdW1l
bnQmIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4dERvY3VtZW50
KERvY3VtZW50JiBkb2N1bWVudCkgeyBtX2NvbnRleHREb2N1bWVudCA9IGRvY3VtZW50LmNyZWF0
ZVdlYWtQdHIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXggMmQ1YmFhZDhjNjA2NDRk
YTg5ZDEwN2ZkZGUxODI4Y2Q4YTQ5ZDgyYi4uNDEzZTUzZTIxNmZhNDFkM2EzZGY4MmUzMjI5ZWRh
Y2NiYjE0ZDVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0xMTMsNyArMTEzLDcgQEAg
dHlwZWRlZiAoCiAgICAgW0NFUmVhY3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJsZURvY3VtZW50
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB3cml0ZWxuKERPTVN0cmluZy4uLiB0ZXh0KTsKIAog
ICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24uCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVdpbmRv
dz8gZGVmYXVsdFZpZXc7CisgICAgW0ltcGxlbWVudGVkQXM9d2luZG93UHJveHldIHJlYWRvbmx5
IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gZGVmYXVsdFZpZXc7CiAgICAgYm9vbGVhbiBoYXNGb2N1
cygpOwogICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIERPTVN0cmluZyBkZXNpZ25Nb2RlOwog
ICAgIFtDRVJlYWN0aW9uc10gYm9vbGVhbiBleGVjQ29tbWFuZChET01TdHJpbmcgY29tbWFuZElk
LCBvcHRpb25hbCBib29sZWFuIHNob3dVSSA9IGZhbHNlLCBvcHRpb25hbCBET01TdHJpbmc/IHZh
bHVlID0gbnVsbCk7IC8vIEZJWE1FOiB2YWx1ZSBzaG91bGQgbm90IGJlIG51bGxhYmxlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3BwCmluZGV4IDNkOTEyM2Q4Zjc1MzJjYjRkYjc5YTRh
MTMzNWQ1ZjE3MjhjYzUwOWEuLjVkMTI2YzNjMzI0NzE0ZjM5ZjlmOTZlMTYzNjljMDE4Nzg0N2E4
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5jcHAKQEAgLTI4LDIwICsyOCwyNyBA
QAogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIAotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJUb3Vj
aC5oIgogI2luY2x1ZGUgIlRvdWNoTGlzdC5oIgorI2luY2x1ZGUgIldpbmRvd1Byb3h5LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFRvdWNoPiBEb2N1bWVudFRvdWNoOjpjcmVhdGVU
b3VjaChEb2N1bWVudCYgZG9jdW1lbnQsIERPTVdpbmRvdyogd2luZG93LCBFdmVudFRhcmdldCog
dGFyZ2V0LCBpbnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBzY3JlZW5Y
LCBpbnQgc2NyZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbkFu
Z2xlLCBmbG9hdCBmb3JjZSkKK1JlZjxUb3VjaD4gRG9jdW1lbnRUb3VjaDo6Y3JlYXRlVG91Y2go
RG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgd2luZG93LCBFdmVudFRh
cmdldCogdGFyZ2V0LCBpbnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBz
Y3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3Rh
dGlvbkFuZ2xlLCBmbG9hdCBmb3JjZSkKIHsKKyAgICBGcmFtZSogZnJhbWU7CisgICAgaWYgKHdp
bmRvdyAmJiBpczxGcmFtZT4od2luZG93LT5mcmFtZSgpKSkKKyAgICAgICAgZnJhbWUgPSAmZG93
bmNhc3Q8RnJhbWU+KHdpbmRvdy0+ZnJhbWUoKSk7CisgICAgZWxzZQorICAgICAgICBmcmFtZSA9
IGRvY3VtZW50LmZyYW1lKCk7CisKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgZnJvbSB0
aGUgZG9jdW1lbnRhdGlvbiBhdAogICAgIC8vIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xp
YnJhcnkvc2FmYXJpLyNkb2N1bWVudGF0aW9uL1VzZXJFeHBlcmllbmNlL1JlZmVyZW5jZS9Eb2N1
bWVudEFkZGl0aW9uc1JlZmVyZW5jZS9Eb2N1bWVudEFkZGl0aW9ucy9Eb2N1bWVudEFkZGl0aW9u
cy5odG1sCiAgICAgLy8gd2hlbiB0aGlzIG1ldGhvZCBzaG91bGQgdGhyb3cgYW5kIG5vciBpcyBp
dCBieSBpbnNwZWN0aW9uIG9mIGlPUyBiZWhhdmlvci4gSXQgd291bGQgYmUgbmljZSB0byB2ZXJp
ZnkgYW55IGNhc2VzIHdoZXJlIGl0IHRocm93cyB1bmRlciBpT1MKICAgICAvLyBhbmQgaW1wbGVt
ZW50IHRoZW0gaGVyZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NzgxOQotICAgIHJldHVybiBUb3VjaDo6Y3JlYXRlKHdpbmRvdyA/IHdpbmRvdy0+ZnJhbWUo
KSA6IGRvY3VtZW50LmZyYW1lKCksIHRhcmdldCwgaWRlbnRpZmllciwgc2NyZWVuWCwgc2NyZWVu
WSwgcGFnZVgsIHBhZ2VZLCByYWRpdXNYLCByYWRpdXNZLCByb3RhdGlvbkFuZ2xlLCBmb3JjZSk7
CisgICAgcmV0dXJuIFRvdWNoOjpjcmVhdGUoZnJhbWUsIHRhcmdldCwgaWRlbnRpZmllciwgc2Ny
ZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCByYWRpdXNYLCByYWRpdXNZLCByb3RhdGlvbkFu
Z2xlLCBmb3JjZSk7CiB9CiAKIFJlZjxUb3VjaExpc3Q+IERvY3VtZW50VG91Y2g6OmNyZWF0ZVRv
dWNoTGlzdChEb2N1bWVudCYsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFRvdWNoPj4m
JiB0b3VjaGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2gu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmgKaW5kZXggZTBkYWY1MDUyY2M5
Nzg1MmM4YTA0YmJhNzNlNWY2YTExNmYxMGU1MS4uNzJjNDg4OGI0NWFiNDAwZTI5YmM4YWVkODZk
ZTRjNTkwM2VhYzIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91
Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5oCkBAIC0zNCwxNSAr
MzQsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBET01XaW5kb3c7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIEV2ZW50VGFyZ2V0OwogY2xhc3MgVG91Y2g7CiBjbGFzcyBUb3Vj
aExpc3Q7CitjbGFzcyBXaW5kb3dQcm94eTsKIAogY2xhc3MgRG9jdW1lbnRUb3VjaCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxUb3VjaD4gY3JlYXRlVG91Y2goRG9jdW1lbnQmLCBET01XaW5k
b3cqLCBFdmVudFRhcmdldCosIGludCBpZGVudGlmaWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwg
aW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0
IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKTsKKyAgICBzdGF0aWMgUmVmPFRvdWNoPiBjcmVh
dGVUb3VjaChEb2N1bWVudCYsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgRXZlbnRUYXJnZXQqLCBp
bnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBzY3JlZW5YLCBpbnQgc2Ny
ZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9h
dCBmb3JjZSk7CiAgICAgc3RhdGljIFJlZjxUb3VjaExpc3Q+IGNyZWF0ZVRvdWNoTGlzdChEb2N1
bWVudCYsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFRvdWNoPj4mJik7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5pZGwKaW5kZXggN2EyNzM3NDU4NjU0OTkxYjExYjU1
NjMwODllMjE5NTdjYzRjNGU0YS4uMDQ4OWEzNmFkNmIxMjUwM2NkYjQ2YWYxNDhjYjU5Y2ZhZmQ2
NzViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmlkbApAQCAtMjIsNyArMjIsNyBA
QAogICAgIENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUwogXSBwYXJ0aWFsIGludGVyZmFjZSBEb2N1
bWVudCB7CiAgICAgLy8gRklYTUU6IFRoaXMgaGFzIGJlZW4gZHJvcHBlZCBmcm9tIHRoZSBzdGFu
ZGFyZCBub3cgdGhhdCBUb3VjaCBoYXMgYSBjb25zdHJ1Y3Rvci4KLSAgICBbTmV3T2JqZWN0XSBU
b3VjaCBjcmVhdGVUb3VjaChvcHRpb25hbCBET01XaW5kb3c/IHdpbmRvdyA9IG51bGwsIG9wdGlv
bmFsIEV2ZW50VGFyZ2V0PyB0YXJnZXQgPSBudWxsLAorICAgIFtOZXdPYmplY3RdIFRvdWNoIGNy
ZWF0ZVRvdWNoKG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB3aW5kb3cgPSBudWxsLCBvcHRpb25hbCBF
dmVudFRhcmdldD8gdGFyZ2V0ID0gbnVsbCwKICAgICAgICAgb3B0aW9uYWwgbG9uZyBpZGVudGlm
aWVyID0gMCwKICAgICAgICAgb3B0aW9uYWwgbG9uZyBwYWdlWCA9IDAsIG9wdGlvbmFsIGxvbmcg
cGFnZVkgPSAwLCBvcHRpb25hbCBsb25nIHNjcmVlblggPSAwLCBvcHRpb25hbCBsb25nIHNjcmVl
blkgPSAwLAogICAgICAgICBvcHRpb25hbCBsb25nIHdlYmtpdFJhZGl1c1ggPSAwLCBvcHRpb25h
bCBsb25nIHdlYmtpdFJhZGl1c1kgPSAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDBhMjMy
NjM5NmRkZmY5OTRlYmZhZTVjODU2MDBhN2M3NTMzNzg4Y2EuLmE0MzIzOTdkNzE3OWIxNDFkMjBk
ZjgwZmNiZTQ2OTUzY2IxODY0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTI3Myw3ICsy
NzMsNyBAQCBib29sIEVsZW1lbnQ6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIHBsYXRmb3JtRXZlbnQsIGNvbnN0CiAgICAgaWYgKGlzRm9yY2VFdmVudChwbGF0
Zm9ybUV2ZW50KSAmJiAhZG9jdW1lbnQoKS5oYXNMaXN0ZW5lclR5cGVGb3JFdmVudFR5cGUocGxh
dGZvcm1FdmVudC50eXBlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWY8TW91
c2VFdmVudD4gbW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGRvY3Vt
ZW50KCkuZGVmYXVsdFZpZXcoKSwgcGxhdGZvcm1FdmVudCwgZGV0YWlsLCByZWxhdGVkVGFyZ2V0
KTsKKyAgICBSZWY8TW91c2VFdmVudD4gbW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShl
dmVudFR5cGUsIGRvY3VtZW50KCkud2luZG93UHJveHkoKSwgcGxhdGZvcm1FdmVudCwgZGV0YWls
LCByZWxhdGVkVGFyZ2V0KTsKIAogICAgIGlmIChtb3VzZUV2ZW50LT50eXBlKCkuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gU2hvdWxkbid0IGhhcHBlbi4KQEAgLTMwNCw3ICsz
MDQsNyBAQCBib29sIEVsZW1lbnQ6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIHBsYXRmb3JtRXZlbnQsIGNvbnN0CiAKIGJvb2wgRWxlbWVudDo6ZGlzcGF0Y2hX
aGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgcGxhdGZvcm1FdmVudCkKIHsKLSAg
ICBhdXRvIGV2ZW50ID0gV2hlZWxFdmVudDo6Y3JlYXRlKHBsYXRmb3JtRXZlbnQsIGRvY3VtZW50
KCkuZGVmYXVsdFZpZXcoKSk7CisgICAgYXV0byBldmVudCA9IFdoZWVsRXZlbnQ6OmNyZWF0ZShw
bGF0Zm9ybUV2ZW50LCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCkpOwogCiAgICAgLy8gRXZlbnRz
IHdpdGggbm8gZGVsdGFzIGFyZSBpbXBvcnRhbnQgYmVjYXVzZSB0aGV5IGNvbnZleSBwbGF0Zm9y
bSBpbmZvcm1hdGlvbiBhYm91dCBzY3JvbGwgZ2VzdHVyZXMKICAgICAvLyBhbmQgbW9tZW50dW0g
YmVnaW5uaW5nIG9yIGVuZGluZy4gSG93ZXZlciwgdGhvc2UgZXZlbnRzIHNob3VsZCBub3QgYmUg
c2VudCB0byB0aGUgRE9NIHNpbmNlIHNvbWUKQEAgLTMyMSw3ICszMjEsNyBAQCBib29sIEVsZW1l
bnQ6OmRpc3BhdGNoV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHBsYXRmb3Jt
RXZlbnQpCiAKIGJvb2wgRWxlbWVudDo6ZGlzcGF0Y2hLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQmIHBsYXRmb3JtRXZlbnQpCiB7Ci0gICAgYXV0byBldmVudCA9IEtleWJvYXJk
RXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCBkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCkpOwor
ICAgIGF1dG8gZXZlbnQgPSBLZXlib2FyZEV2ZW50OjpjcmVhdGUocGxhdGZvcm1FdmVudCwgZG9j
dW1lbnQoKS53aW5kb3dQcm94eSgpKTsKIAogICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVu
dCgpLmZyYW1lKCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5ldmVudEhhbmRsZXIoKS5hY2Nlc3Np
YmlsaXR5UHJldmVudHNFdmVudFByb3BhZ2F0aW9uKGV2ZW50KSkKQEAgLTI1NDYsMjggKzI1NDYs
MjggQEAgdm9pZCBFbGVtZW50OjpkaXNwYXRjaEZvY3VzSW5FdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgUmVmUHRyPEVsZW1lbnQKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZDo6aXNTY3Jp
cHRBbGxvd2VkKCkpOwogICAgIEFTU0VSVChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmZvY3Vz
aW5FdmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLkRPTUZvY3VzSW5FdmVudCk7Ci0g
ICAgZGlzcGF0Y2hTY29wZWRFdmVudChGb2N1c0V2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCB0cnVl
LCBmYWxzZSwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCAwLCBXVEZNb3ZlKG9sZEZvY3VzZWRF
bGVtZW50KSkpOworICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoRm9jdXNFdmVudDo6Y3JlYXRlKGV2
ZW50VHlwZSwgdHJ1ZSwgZmFsc2UsIGRvY3VtZW50KCkud2luZG93UHJveHkoKSwgMCwgV1RGTW92
ZShvbGRGb2N1c2VkRWxlbWVudCkpKTsKIH0KIAogdm9pZCBFbGVtZW50OjpkaXNwYXRjaEZvY3Vz
T3V0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFbGVtZW50PiYm
IG5ld0ZvY3VzZWRFbGVtZW50KQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkOjppc1NjcmlwdEFsbG93ZWQo
KSk7CiAgICAgQVNTRVJUKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZm9jdXNvdXRFdmVudCB8
fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLkRPTUZvY3VzT3V0RXZlbnQpOwotICAgIGRpc3Bh
dGNoU2NvcGVkRXZlbnQoRm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgZmFsc2Us
IGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgMCwgV1RGTW92ZShuZXdGb2N1c2VkRWxlbWVudCkp
KTsKKyAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KEZvY3VzRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUs
IHRydWUsIGZhbHNlLCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIDAsIFdURk1vdmUobmV3Rm9j
dXNlZEVsZW1lbnQpKSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFJl
ZlB0cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50LCBGb2N1c0RpcmVjdGlvbikKIHsKICAg
ICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQogICAgICAgICBwYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS5lbGVtZW50RGlkRm9jdXMoKnRoaXMpOwotICAgIGRpc3BhdGNoRXZlbnQo
Rm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBmYWxzZSwgZmFsc2Us
IGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgMCwgV1RGTW92ZShvbGRGb2N1c2VkRWxlbWVudCkp
KTsKKyAgICBkaXNwYXRjaEV2ZW50KEZvY3VzRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZm9j
dXNFdmVudCwgZmFsc2UsIGZhbHNlLCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIDAsIFdURk1v
dmUob2xkRm9jdXNlZEVsZW1lbnQpKSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hCbHVy
RXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1lbnQpCiB7CiAgICAgaWYgKGF1
dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xp
ZW50KCkuZWxlbWVudERpZEJsdXIoKnRoaXMpOwotICAgIGRpc3BhdGNoRXZlbnQoRm9jdXNFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsIGZhbHNlLCBmYWxzZSwgZG9jdW1lbnQo
KS5kZWZhdWx0VmlldygpLCAwLCBXVEZNb3ZlKG5ld0ZvY3VzZWRFbGVtZW50KSkpOworICAgIGRp
c3BhdGNoRXZlbnQoRm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsIGZh
bHNlLCBmYWxzZSwgZG9jdW1lbnQoKS53aW5kb3dQcm94eSgpLCAwLCBXVEZNb3ZlKG5ld0ZvY3Vz
ZWRFbGVtZW50KSkpOwogfQogCiB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoV2ViS2l0SW1hZ2VSZWFk
eUV2ZW50Rm9yVGVzdGluZygpCkBAIC0yNTg3LDcgKzI1ODcsNyBAQCBib29sIEVsZW1lbnQ6OmRp
c3BhdGNoTW91c2VGb3JjZVdpbGxCZWdpbigpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IFBsYXRmb3JtTW91c2VFdmVudCBwbGF0Zm9ybU1vdXNlRXZlbnQgeyBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCkubGFzdEtub3duTW91c2VQb3NpdGlvbigpLCBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkubGFz
dEtub3duTW91c2VHbG9iYWxQb3NpdGlvbigpLCBOb0J1dHRvbiwgUGxhdGZvcm1FdmVudDo6Tm9U
eXBlLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2FsbFRpbWU6Om5vdygpLCBGb3Jj
ZUF0Q2xpY2ssIE5vVGFwIH07Ci0gICAgYXV0byBtb3VzZUZvcmNlV2lsbEJlZ2luRXZlbnQgPSBN
b3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG1vdXNlZm9yY2V3aWxsYmVnaW5F
dmVudCwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCBwbGF0Zm9ybU1vdXNlRXZlbnQsIDAsIG51
bGxwdHIpOworICAgIGF1dG8gbW91c2VGb3JjZVdpbGxCZWdpbkV2ZW50ID0gTW91c2VFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRtb3VzZWZvcmNld2lsbGJlZ2luRXZlbnQsIGRvY3Vt
ZW50KCkud2luZG93UHJveHkoKSwgcGxhdGZvcm1Nb3VzZUV2ZW50LCAwLCBudWxscHRyKTsKICAg
ICBtb3VzZUZvcmNlV2lsbEJlZ2luRXZlbnQtPnNldFRhcmdldCh0aGlzKTsKICAgICBkaXNwYXRj
aEV2ZW50KG1vdXNlRm9yY2VXaWxsQmVnaW5FdmVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50
LmNwcAppbmRleCAxNmQ4YjNmZjA3OGQwNWFkOTFlMmQ2OTE0NjcxOTEyODU1ZDdjNDg0Li45ODY4
NzczMjZjZTNmYWU0YmIwNTllN2MxNjRkN2JjMThhYTlkZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3Vz
RXZlbnQuY3BwCkBAIC00MCw4ICs0MCw4IEBAIGJvb2wgRm9jdXNFdmVudDo6aXNGb2N1c0V2ZW50
KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRm9jdXNFdmVudDo6Rm9jdXNFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmIHJlbGF0
ZWRUYXJnZXQpCi0gICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmll
dywgZGV0YWlsKQorRm9jdXNFdmVudDo6Rm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4m
JiB2aWV3LCBpbnQgZGV0YWlsLCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYgcmVsYXRlZFRhcmdldCkK
KyAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcp
LCBkZXRhaWwpCiAgICAgLCBtX3JlbGF0ZWRUYXJnZXQoV1RGTW92ZShyZWxhdGVkVGFyZ2V0KSkK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5oCmluZGV4IDA2NzI1NTc0YzA2YjkxZjI5ZmI0Zjk2
YTBiMWI1NjEzNGYxOTY4NTQuLmM3YTRkZjhlNzc0MzJjZmUzNjRhMTM0ZjhkZTUxNTE2YTA1N2I4
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuaApAQCAtMzUsOSArMzUsOSBAQCBjbGFzcyBOb2Rl
OwogCiBjbGFzcyBGb2N1c0V2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8Rm9jdXNFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBpbnQg
ZGV0YWlsLCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYgcmVsYXRlZFRhcmdldCkKKyAgICBzdGF0aWMg
UmVmPEZvY3VzRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQg
ZGV0YWlsLCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYgcmVsYXRlZFRhcmdldCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvY3VzRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCB2aWV3LCBkZXRhaWwsIFdURk1vdmUocmVsYXRlZFRhcmdldCkpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9jdXNFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIFdURk1vdmUodmlldyksIGRldGFpbCwgV1RGTW92ZShyZWxhdGVkVGFyZ2V0KSkpOwogICAg
IH0KIAogICAgIHN0YXRpYyBSZWY8Rm9jdXNFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKQpAQCAt
NTgsNyArNTgsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgRm9jdXNFdmVudCgpID0gZGVm
YXVsdDsKLSAgICBGb2N1c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50LCBSZWZQdHI8RXZlbnRUYXJn
ZXQ+JiYpOworICAgIEZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCwgUmVm
UHRyPEV2ZW50VGFyZ2V0PiYmKTsKICAgICBGb2N1c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBFdmVudEludGVyZmFjZSBldmVu
dEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0lucHV0RXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuY3BwCmluZGV4
IGQ0NDkyOTRmZWM2YmM3OTcwZDZjNDJjNGI5N2FiMTYxYzRmNWIxZjAuLmMxN2JmMThkODhhNjc2
NDcyYTE4NzE2M2U3YjQ1MTRmODQ0MDBhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9JbnB1dEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5jcHAK
QEAgLTI2LDIwICsyNiwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklucHV0
RXZlbnQuaCIKIAotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zl
ci5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8SW5wdXRFdmVu
dD4gSW5wdXRFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgV2Vi
Q29yZTo6RE9NV2luZG93ICp2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJh
bnNmZXI+JiYgZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4m
IHRhcmdldFJhbmdlcywgaW50IGRldGFpbCkKK1JlZjxJbnB1dEV2ZW50PiBJbnB1dEV2ZW50Ojpj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRU
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFU
cmFuc2ZlciwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMs
IGludCBkZXRhaWwpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5wdXRFdmVudChldmVu
dFR5cGUsIGlucHV0VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkYXRhLCBXVEZN
b3ZlKGRhdGFUcmFuc2ZlciksIHRhcmdldFJhbmdlcywgZGV0YWlsKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW5wdXRFdmVudChldmVudFR5cGUsIGlucHV0VHlwZSwgY2FuQnViYmxlLCBj
YW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkYXRhLCBXVEZNb3ZlKGRhdGFUcmFuc2ZlciksIHRh
cmdldFJhbmdlcywgZGV0YWlsKSk7CiB9CiAKLUlucHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYg
ZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiBkYXRhVHJhbnNmZXIsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKQotICAgIDogVUlF
dmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKQorSW5w
dXRFdmVudDo6SW5wdXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJh
bnNmZXI+JiYgZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4m
IHRhcmdldFJhbmdlcywgaW50IGRldGFpbCkKKyAgICA6IFVJRXZlbnQoZXZlbnRUeXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRldGFpbCkKICAgICAsIG1faW5wdXRU
eXBlKGlucHV0VHlwZSkKICAgICAsIG1fZGF0YShkYXRhKQogICAgICwgbV9kYXRhVHJhbnNmZXIo
ZGF0YVRyYW5zZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmgKaW5kZXggY2FkOGRjZTdiMzYyNmQ5
YTIyNzYzNGIzNTg5MjZjMWYxMjU0NjgxYi4uZDA1MDc2MzljNmM4OWM5OWQ0ZDMwYTFjZTkzNmY5
MTYxYjljNGVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5oCkBAIC0zMCw4ICszMCw4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRE9NV2luZG93OwogY2xhc3MgRGF0YVRyYW5z
ZmVyOworY2xhc3MgV2luZG93UHJveHk7CiAKIGNsYXNzIElucHV0RXZlbnQgZmluYWwgOiBwdWJs
aWMgVUlFdmVudCB7CiBwdWJsaWM6CkBAIC0zOSwxMyArMzksMTMgQEAgcHVibGljOgogICAgICAg
ICBTdHJpbmcgZGF0YTsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxJbnB1dEV2ZW50PiBjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0
IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwgY29uc3QgVmVjdG9yPFJlZlB0
cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpOworICAgIHN0YXRpYyBS
ZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFU
cmFuc2Zlcj4mJiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5n
ZXMsIGludCBkZXRhaWwpOwogICAgIHN0YXRpYyBSZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBp
c1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSW5wdXRFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiAgICAgfQog
Ci0gICAgSW5wdXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBpbnB1dFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRv
dyosIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwgY29uc3QgVmVj
dG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpOworICAg
IElucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYg
aW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93
UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwgY29u
c3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwp
OwogICAgIElucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IElu
aXQmLCBJc1RydXN0ZWQpOwogCiAgICAgYm9vbCBpc0lucHV0RXZlbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9h
cmRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKaW5kZXgg
NGRhMTAxNzcyNWZlODkyY2ZhOGRhY2YwZjViNzA4MWRjYzZjZmJlOS4uNGFjYjVmNGNlYjc2MGUx
NzBmMTA3Y2VhMzg2MDk4OWY2NzI2NGVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0tleWJvYXJkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50
LmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIktl
eWJvYXJkRXZlbnQuaCIKIAorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCkBA
IC05Miw4ICs5Myw4IEBAIHN0YXRpYyBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5TG9jYXRpb25D
b2RlIGtleUxvY2F0aW9uQ29kZShjb25zdCBQbGF0Zm9ybUtleWJvCiAKIGlubGluZSBLZXlib2Fy
ZEV2ZW50OjpLZXlib2FyZEV2ZW50KCkgPSBkZWZhdWx0OwogCi1pbmxpbmUgS2V5Ym9hcmRFdmVu
dDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwgRE9NV2lu
ZG93KiB2aWV3KQotICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGVGb3JLZXlib2Fy
ZEV2ZW50VHlwZShrZXkudHlwZSgpKSwgdHJ1ZSwgdHJ1ZSwga2V5LnRpbWVzdGFtcCgpLmFwcHJv
eGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LCAwLCBrZXkuY3RybEtleSgpLCBrZXkuYWx0S2V5
KCksIGtleS5zaGlmdEtleSgpLCBrZXkubWV0YUtleSgpLCBmYWxzZSwga2V5Lm1vZGlmaWVycygp
LmNvbnRhaW5zKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDYXBzTG9ja0tleSkpCitpbmxpbmUg
S2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQm
IGtleSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcpCisgICAgOiBVSUV2ZW50V2l0aEtleVN0
YXRlKGV2ZW50VHlwZUZvcktleWJvYXJkRXZlbnRUeXBlKGtleS50eXBlKCkpLCB0cnVlLCB0cnVl
LCBrZXkudGltZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCksIHZpZXcuY29weVJl
ZigpLCAwLCBrZXkuY3RybEtleSgpLCBrZXkuYWx0S2V5KCksIGtleS5zaGlmdEtleSgpLCBrZXku
bWV0YUtleSgpLCBmYWxzZSwga2V5Lm1vZGlmaWVycygpLmNvbnRhaW5zKFBsYXRmb3JtRXZlbnQ6
Ok1vZGlmaWVyOjpDYXBzTG9ja0tleSkpCiAgICAgLCBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50
KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1LZXlib2FyZEV2ZW50PihrZXkpKQogI2lmIEVOQUJM
RShLRVlCT0FSRF9LRVlfQVRUUklCVVRFKQogICAgICwgbV9rZXkoa2V5LmtleSgpKQpAQCAtMTA0
LDcgKzEwNSw3IEBAIGlubGluZSBLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KGNvbnN0IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudCYga2V5LCBET01XaW5kb3cqCiAgICAgLCBtX2tleUlkZW50aWZp
ZXIoa2V5LmtleUlkZW50aWZpZXIoKSkKICAgICAsIG1fbG9jYXRpb24oa2V5TG9jYXRpb25Db2Rl
KGtleSkpCiAgICAgLCBtX3JlcGVhdChrZXkuaXNBdXRvUmVwZWF0KCkpCi0gICAgLCBtX2lzQ29t
cG9zaW5nKHZpZXcgJiYgdmlldy0+ZnJhbWUoKSAmJiB2aWV3LT5mcmFtZSgpLT5lZGl0b3IoKS5o
YXNDb21wb3NpdGlvbigpKQorICAgICwgbV9pc0NvbXBvc2luZyh2aWV3ICYmIGlzPERPTVdpbmRv
dz4odmlldy0+d2luZG93KCkpICYmIGRvd25jYXN0PERPTVdpbmRvdz4oKnZpZXctPndpbmRvdygp
KS5mcmFtZSgpICYmIGRvd25jYXN0PERPTVdpbmRvdz4oKnZpZXctPndpbmRvdygpKS5mcmFtZSgp
LT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKQogI2lmIFVTRShBUFBLSVQpCiAgICAgLCBtX2hh
bmRsZWRCeUlucHV0TWV0aG9kKGtleS5oYW5kbGVkQnlJbnB1dE1ldGhvZCgpKQogICAgICwgbV9r
ZXlwcmVzc0NvbW1hbmRzKGtleS5jb21tYW5kcygpKQpAQCAtMTMyLDkgKzEzMyw5IEBAIGlubGlu
ZSBLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBjb25zdCBJbml0JiBpCiAKIEtleWJvYXJkRXZlbnQ6On5LZXlib2FyZEV2ZW50KCkgPSBk
ZWZhdWx0OwogCi1SZWY8S2V5Ym9hcmRFdmVudD4gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGNvbnN0
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgcGxhdGZvcm1FdmVudCwgRE9NV2luZG93KiB2aWV3KQor
UmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQmIHBsYXRmb3JtRXZlbnQsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3KQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEtleWJvYXJkRXZlbnQocGxhdGZvcm1FdmVudCwg
dmlldykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEtleWJvYXJkRXZlbnQocGxhdGZvcm1F
dmVudCwgV1RGTW92ZSh2aWV3KSkpOwogfQogCiBSZWY8S2V5Ym9hcmRFdmVudD4gS2V5Ym9hcmRF
dmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQpAQCAtMTQ3LDEzICsxNDgsMTMgQEAgUmVmPEtleWJv
YXJkRXZlbnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGNvbnN0IEluaXQmIGkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBLZXlib2FyZEV2ZW50KHR5
cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKIH0KIAotdm9pZCBLZXlib2FyZEV2ZW50Ojpp
bml0S2V5Ym9hcmRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywKK3ZvaWQgS2V5Ym9hcmRFdmVudDo6
aW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICBjb25z
dCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIHVuc2lnbmVkIGxvY2F0aW9uLCBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIGJvb2wgYWx0R3JhcGhL
ZXkpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgMCk7Cisg
ICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcp
LCAwKTsKIAogICAgIG1fa2V5SWRlbnRpZmllciA9IGtleUlkZW50aWZpZXI7CiAgICAgbV9sb2Nh
dGlvbiA9IGxvY2F0aW9uOwpAQCAtMjI3LDggKzIyOCw5IEBAIGludCBLZXlib2FyZEV2ZW50Ojpj
aGFyQ29kZSgpIGNvbnN0CiAgICAgLy8gRmlyZWZveDogMCBmb3Iga2V5ZG93bi9rZXl1cCBldmVu
dHMsIGNoYXJhY3RlciBjb2RlIGZvciBrZXlwcmVzcwogICAgIC8vIFdlIG1hdGNoIEZpcmVmb3gs
IHVubGVzcyBpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG1vZGUsIHdoZXJlIHdlIGFsd2F5cyBy
ZXR1cm4gdGhlIGNoYXJhY3RlciBjb2RlLgogICAgIGJvb2wgYmFja3dhcmRDb21wYXRpYmlsaXR5
TW9kZSA9IGZhbHNlOwotICAgIGlmICh2aWV3KCkgJiYgdmlldygpLT5mcmFtZSgpKQotICAgICAg
ICBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlID0gdmlldygpLT5mcmFtZSgpLT5ldmVudEhhbmRs
ZXIoKS5uZWVkc0tleWJvYXJkRXZlbnREaXNhbWJpZ3VhdGlvblF1aXJrcygpOworICAgIGF1dG8q
IHdpbmRvdyA9IHZpZXcoKSA/IHZpZXcoKS0+d2luZG93KCkgOiBudWxscHRyOworICAgIGlmIChp
czxET01XaW5kb3c+KHdpbmRvdykgJiYgZG93bmNhc3Q8RE9NV2luZG93Pigqd2luZG93KS5mcmFt
ZSgpKQorICAgICAgICBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlID0gZG93bmNhc3Q8RE9NV2lu
ZG93Pigqd2luZG93KS5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS5uZWVkc0tleWJvYXJkRXZlbnRE
aXNhbWJpZ3VhdGlvblF1aXJrcygpOwogCiAgICAgaWYgKCFtX3VuZGVybHlpbmdQbGF0Zm9ybUV2
ZW50IHx8ICh0eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQgJiYgIWJhY2t3YXJk
Q29tcGF0aWJpbGl0eU1vZGUpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9h
cmRFdmVudC5oCmluZGV4IDgyMTAzMzBlYWIwMzQxZjRjYTU0Y2QyNWM1OGI5OTU0NmYwYjE1YTku
LjFkM2NjMjQzNzk5YjE5YTc0NGVlOTc4YTE4N2VhZWFlYzg4MDVmYjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0tleWJvYXJkRXZlbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIERPTV9L
RVlfTE9DQVRJT05fTlVNUEFEID0gMHgwMwogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPEtleWJvYXJkRXZlbnQ+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQmLCBET01XaW5kb3cqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEtleWJvYXJk
RXZlbnQ+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmLCBSZWZQdHI8V2luZG93
UHJveHk+JiYpOwogICAgIHN0YXRpYyBSZWY8S2V5Ym9hcmRFdmVudD4gY3JlYXRlRm9yQmluZGlu
Z3MoKTsKIAogICAgIHN0cnVjdCBJbml0IDogcHVibGljIEV2ZW50TW9kaWZpZXJJbml0IHsKQEAg
LTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+S2V5Ym9hcmRFdmVudCgpOwog
ICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5k
b3cqLAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYsCiAgICAgICAgIGNvbnN0IFN0cmluZyYga2V5SWRlbnRpZmllciwgdW5z
aWduZWQgbG9jYXRpb24sCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSwgYm9vbCBhbHRHcmFwaEtleSA9IGZhbHNlKTsKICAgICAK
QEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgS2V5Ym9hcmRFdmVu
dCgpOwotICAgIEtleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgRE9N
V2luZG93Kik7CisgICAgS2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQm
LCBSZWZQdHI8V2luZG93UHJveHk+JiYpOwogICAgIEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1LZXlib2FyZEV2ZW50PiBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaWRsIGIvU291cmNlL1dlYkNv
cmUvZG9tL0tleWJvYXJkRXZlbnQuaWRsCmluZGV4IDc1N2MwNzc5M2Y1ZTVmMWUxODQzOGY3OGRk
NDQ3ZTlhM2ExZDUxMDkuLmNkZTQ1MGMzNDM1MzM1MDkyYTE3N2Q2ZGY2MzY4YmY2MzUxZDcxMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5pZGwKQEAgLTUyLDcgKzUyLDcgQEAKICAg
ICAvLyBGSVhNRTogdGhpcyBkb2VzIG5vdCBtYXRjaCB0aGUgdmVyc2lvbiBpbiB0aGUgRE9NIHNw
ZWMuCiAgICAgLy8gRklYTUU6IFVzaW5nICJ1bmRlZmluZWQiIGFzIGRlZmF1bHQgcGFyYW1ldGVy
IHZhbHVlIGlzIHdyb25nLgogICAgIHZvaWQgaW5pdEtleWJvYXJkRXZlbnQob3B0aW9uYWwgRE9N
U3RyaW5nIHR5cGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGUgPSBm
YWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlID0gZmFsc2UsCi0gICAgICAgIG9wdGlv
bmFsIERPTVdpbmRvdz8gdmlldyA9IG51bGwsIG9wdGlvbmFsIERPTVN0cmluZyBrZXlJZGVudGlm
aWVyID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbG9jYXRpb24gPSAwLAor
ICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlldyA9IG51bGwsIG9wdGlvbmFsIERPTVN0
cmluZyBrZXlJZGVudGlmaWVyID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcg
bG9jYXRpb24gPSAwLAogICAgICAgICBvcHRpb25hbCBib29sZWFuIGN0cmxLZXkgPSBmYWxzZSwg
b3B0aW9uYWwgYm9vbGVhbiBhbHRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBzaGlmdEtl
eSA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIG1ldGFLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9v
bGVhbiBhbHRHcmFwaEtleSA9IGZhbHNlKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQu
aAppbmRleCA1MTk3ZDViYWUxYWUzNWFhYjA0ZjBjYjUwZTc2ZTlkOGZhYTE4Yjc5Li4zMzA5Mjc4
N2QxNGFlNjU3M2VhMWI5ZDFmZDlhN2QwZWVlMGY0MDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5oCkBAIC0yNywxMiArMjcsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkpTVmFsdWVJbldyYXBw
ZWRPYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKKyNpbmNsdWRlICJX
aW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQwLDkgKzQwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYjsK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXVzaW5nIE1lc3NhZ2VFdmVudFNvdXJjZSA9
IFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxNZXNzYWdlUG9ydD4sIFJlZlB0cjxT
ZXJ2aWNlV29ya2VyPj47Cit1c2luZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0
cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxNZXNzYWdlUG9ydD4sIFJlZlB0cjxTZXJ2aWNlV29ya2Vy
Pj47CiAjZWxzZQotdXNpbmcgTWVzc2FnZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8RE9N
V2luZG93PiwgUmVmUHRyPE1lc3NhZ2VQb3J0Pj47Cit1c2luZyBNZXNzYWdlRXZlbnRTb3VyY2Ug
PSBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxNZXNzYWdlUG9ydD4+OwogI2Vu
ZGlmCiAKIGNsYXNzIE1lc3NhZ2VFdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlRXZlbnQuaWRsCmluZGV4IDAyNDM4ZmQ0YzQ3YzNmYzI5MmVhYmY0N2U1YzVl
ODNmODY5NTA4MjIuLmZhNDhjOGZhNWRhNWZkYzNlMGYyYzJmN2VmYmZhNzVjZDhmNTQwYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCkBAIC0yNyw5ICsyNyw5IEBACiAgKi8KIAog
I2lmIGRlZmluZWQoRU5BQkxFX1NFUlZJQ0VfV09SS0VSKSAmJiBFTkFCTEVfU0VSVklDRV9XT1JL
RVIKLXR5cGVkZWYgKERPTVdpbmRvdyBvciBNZXNzYWdlUG9ydCBvciBTZXJ2aWNlV29ya2VyKSBN
ZXNzYWdlRXZlbnRTb3VyY2U7Cit0eXBlZGVmIChXaW5kb3dQcm94eSBvciBNZXNzYWdlUG9ydCBv
ciBTZXJ2aWNlV29ya2VyKSBNZXNzYWdlRXZlbnRTb3VyY2U7CiAjZWxzZQotdHlwZWRlZiAoRE9N
V2luZG93IG9yIE1lc3NhZ2VQb3J0KSBNZXNzYWdlRXZlbnRTb3VyY2U7Cit0eXBlZGVmIChXaW5k
b3dQcm94eSBvciBNZXNzYWdlUG9ydCkgTWVzc2FnZUV2ZW50U291cmNlOwogI2VuZGlmCiAKIFsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAppbmRleCBhMTQ3ZTEyMThiYjZlMjRmMmFkNzY0NzA3
NDYwYzY2NzAyMWY2YzU5Li5jODk2Zjg2MzFhM2QyYmJkYTE5MzA2MjEwZmVkZGI4OTg2ZTRjYTYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCkBAIC00NCwxMyArNDQsMTMgQEAgUmVmPE1v
dXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNv
bnN0IE1vdXNlRXZlbnRJbmkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb3VzZUV2ZW50KHR5
cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKIH0KIAotUmVmPE1vdXNlRXZlbnQ+IE1vdXNl
RXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2
aWV3LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBpbnQgZGV0YWlsLCBOb2RlKiBy
ZWxhdGVkVGFyZ2V0KQorUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGludCBkZXRhaWwsIE5vZGUqIHJlbGF0ZWRUYXJn
ZXQpCiB7CiAgICAgYm9vbCBpc01vdXNlRW50ZXJPckxlYXZlID0gZXZlbnRUeXBlID09IGV2ZW50
TmFtZXMoKS5tb3VzZWVudGVyRXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5tb3Vz
ZWxlYXZlRXZlbnQ7CiAgICAgYm9vbCBpc0NhbmNlbGFibGUgPSBldmVudFR5cGUgIT0gZXZlbnRO
YW1lcygpLm1vdXNlbW92ZUV2ZW50ICYmICFpc01vdXNlRW50ZXJPckxlYXZlOwogICAgIGJvb2wg
Y2FuQnViYmxlID0gIWlzTW91c2VFbnRlck9yTGVhdmU7CiAKLSAgICByZXR1cm4gTW91c2VFdmVu
dDo6Y3JlYXRlKGV2ZW50VHlwZSwgY2FuQnViYmxlLCBpc0NhbmNlbGFibGUsIGV2ZW50LnRpbWVz
dGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LAorICAgIHJldHVybiBNb3Vz
ZUV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGlzQ2FuY2VsYWJsZSwgZXZlbnQu
dGltZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCksIFdURk1vdmUodmlldyksCiAg
ICAgICAgIGRldGFpbCwgZXZlbnQuZ2xvYmFsUG9zaXRpb24oKS54KCksIGV2ZW50Lmdsb2JhbFBv
c2l0aW9uKCkueSgpLCBldmVudC5wb3NpdGlvbigpLngoKSwgZXZlbnQucG9zaXRpb24oKS55KCks
CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgZXZlbnQubW92ZW1lbnREZWx0YSgp
LngoKSwgZXZlbnQubW92ZW1lbnREZWx0YSgpLnkoKSwKQEAgLTU5LDEzICs1OSwxMyBAQCBSZWY8
TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBET01XaW5kb3cqIHZpZQogICAgICAgICByZWxhdGVkVGFyZ2V0LCBldmVudC5mb3JjZSgp
LCBldmVudC5zeW50aGV0aWNDbGlja1R5cGUoKSk7CiB9CiAKLVJlZjxNb3VzZUV2ZW50PiBNb3Vz
ZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiB2aWV3
LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBh
Z2VZLAorUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUg
dGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNj
cmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKICNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQogICAgIGludCBtb3ZlbWVudFgsIGludCBtb3ZlbWVudFksCiAjZW5kaWYKICAg
ICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXks
IHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgRXZlbnRUYXJn
ZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwgdW5zaWduZWQgc2hvcnQgc3ludGhldGlj
Q2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIqIGRhdGFUcmFuc2ZlciwgYm9vbCBpc1NpbXVsYXRlZCkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwg
Y2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2aWV3LAorICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1v
dXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIFdURk1vdmUo
dmlldyksCiAgICAgICAgIGRldGFpbCwgeyBzY3JlZW5YLCBzY3JlZW5ZIH0sIHsgcGFnZVgsIHBh
Z2VZIH0sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgeyBtb3ZlbWVudFgsIG1v
dmVtZW50WSB9LApAQCAtNzMsMTkgKzczLDE5IEBAIFJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50
OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vCiAg
ICAgICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9u
cywgcmVsYXRlZFRhcmdldCwgZm9yY2UsIHN5bnRoZXRpY0NsaWNrVHlwZSwgZGF0YVRyYW5zZmVy
LCBpc1NpbXVsYXRlZCkpOwogfQogCi1SZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2Ny
ZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5
LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5z
aWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBF
dmVudFRhcmdldCogcmVsYXRlZFRhcmdldCkKK1JlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50Ojpj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBpbnQg
c2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJs
S2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBz
aG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVkIHNob3J0IHN5bnRo
ZXRpY0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJs
ZSwgdmlldywgZGV0YWlsLCB7IHNjcmVlblgsIHNjcmVlblkgfSwgeyBjbGllbnRYLCBjbGllbnRZ
IH0sIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9ucywg
c3ludGhldGljQ2xpY2tUeXBlLCByZWxhdGVkVGFyZ2V0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgTW91c2VFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92
ZSh2aWV3KSwgZGV0YWlsLCB7IHNjcmVlblgsIHNjcmVlblkgfSwgeyBjbGllbnRYLCBjbGllbnRZ
IH0sIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9ucywg
c3ludGhldGljQ2xpY2tUeXBlLCByZWxhdGVkVGFyZ2V0KSk7CiB9CiAKIE1vdXNlRXZlbnQ6Ok1v
dXNlRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLU1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1v
bm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGNvbnN0
IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9u
LAorTW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAs
IFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYg
c2NyZWVuTG9jYXRpb24sIGNvbnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwK
ICNlbmRpZgogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0
dG9ucywgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwgdW5zaWduZWQg
c2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIqIGRhdGFUcmFuc2ZlciwgYm9v
bCBpc1NpbXVsYXRlZCkKLSAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnVi
YmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIHZpZXcsIGRldGFpbCwgc2NyZWVuTG9jYXRpb24s
IHdpbmRvd0xvY2F0aW9uLAorICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZlbnRUeXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCBzY3Jl
ZW5Mb2NhdGlvbiwgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAg
ICAgICAgbW92ZW1lbnREZWx0YSwKICNlbmRpZgpAQCAtMTAwLDggKzEwMCw4IEBAIE1vdXNlRXZl
bnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlCiB7CiB9CiAKLU1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERP
TVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9u
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50TG9jYXRpb24sIGJvb2wgY3RybEtleSwgYm9vbCBhbHRL
ZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1
bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUs
IEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KQotICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZl
bnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWU6Om5vdygpLCB2aWV3
LCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB7IH0sCitNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgY29uc3QgSW50UG9p
bnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgY2xpZW50TG9jYXRpb24sIGJvb2wg
Y3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWdu
ZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBz
eW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KQorICAgIDogTW91
c2VSZWxhdGVkRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIE1vbm90b25p
Y1RpbWU6Om5vdygpLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB7IH0s
CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgeyB9LAogI2VuZGlmCkBAIC0xMjcs
MTIgKzEyNywxMiBAQCBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBjb25zdCBNb3VzZUV2ZW50SW5pdCYgaW5pdAogCiBNb3VzZUV2ZW50Ojp+TW91
c2VFdmVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBNb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBp
bnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBFdmVudFRhcmdl
dCogcmVsYXRlZFRhcmdldCkKK3ZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3Jl
ZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXks
IGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBFdmVu
dFRhcmdldCogcmVsYXRlZFRhcmdldCkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCB2aWV3LCBkZXRhaWwpOworICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwg
Y2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKTsKIAogICAgIG1fc2NyZWVuTG9jYXRp
b24gPSBJbnRQb2ludChzY3JlZW5YLCBzY3JlZW5ZKTsKICAgICBtX2N0cmxLZXkgPSBjdHJsS2V5
OwpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjCiAKIC8vIEZJWE1F
OiBXZSBuZWVkIHRoaXMgcXVpcmsgYmVjYXVzZSBpQWQgUHJvZHVjZXIgaXMgY2FsbGluZyB0aGlz
IGZ1bmN0aW9uIHdpdGggYSByZWxhdGVkVGFyZ2V0IHRoYXQgaXMgbm90IGFuIEV2ZW50VGFyZ2V0
IChyZGFyOi8vcHJvYmxlbS8zMDY0MDEwMSkuCiAvLyBXZSBzaG91bGQgcmVtb3ZlIHRoaXMgcXVp
cmsgd2hlbiBwb3NzaWJsZS4KLXZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayhF
eGVjU3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBz
Y3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRL
ZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBK
U1ZhbHVlIHJlbGF0ZWRUYXJnZXRWYWx1ZSkKK3ZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZl
bnRRdWlyayhFeGVjU3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWls
LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9v
bCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNp
Z25lZCBzaG9ydCBidXR0b24sIEpTVmFsdWUgcmVsYXRlZFRhcmdldFZhbHVlKQogewogICAgIEV2
ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0ID0gbnVsbHB0cjsKICNpZiBQTEFURk9STShNQUMpCkBA
IC0xNzYsNyArMTc2LDcgQEAgdm9pZCBNb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudFF1aXJrKEV4
ZWNTdGF0ZSYgc3RhdGUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHMKICNpZiBQTEFURk9STShN
QUMpCiAgICAgfQogI2VuZGlmCi0gICAgaW5pdE1vdXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBj
YW5jZWxhYmxlLCB2aWV3LCBkZXRhaWwsIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVu
dFksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgcmVsYXRlZFRh
cmdldCk7CisgICAgaW5pdE1vdXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBX
VEZNb3ZlKHZpZXcpLCBkZXRhaWwsIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVudFks
IGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgcmVsYXRlZFRhcmdl
dCk7CiB9CiAKIEV2ZW50SW50ZXJmYWNlIE1vdXNlRXZlbnQ6OmV2ZW50SW50ZXJmYWNlKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTW91c2VFdmVudC5oCmluZGV4IDI2Y2FmOGY2YjE5MTUxNjY4YjY4MDM1NTRh
MGIwMDE2NGQzZTFmY2YuLjRiMjgwNzk5NTViNGNiNzNhMmNlMTY4ZWI1YTEzOWQ3MzE1NmE5Zjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaApAQCAtMjksMTkgKzI5LDIwIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIERhdGFUcmFuc2ZlcjsKK2NsYXNzIE5vZGU7CiBjbGFzcyBQbGF0
Zm9ybU1vdXNlRXZlbnQ7CiAKIGNsYXNzIE1vdXNlRXZlbnQgOiBwdWJsaWMgTW91c2VSZWxhdGVk
RXZlbnQgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW91c2VFdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIERPTVdpbmRvdyosIGludCBkZXRh
aWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNU
aW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQgZGV0YWlsLCBpbnQgc2Ny
ZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogI2lmIEVOQUJMRShQT0lO
VEVSX0xPQ0spCiAgICAgICAgIGludCBtb3ZlbWVudFgsIGludCBtb3ZlbWVudFksCiAjZW5kaWYK
ICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBt
ZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIEV2
ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0LCBkb3VibGUgZm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5
bnRoZXRpY0NsaWNrVHlwZSwgRGF0YVRyYW5zZmVyKiA9IG51bGxwdHIsIGJvb2wgaXNTaW11bGF0
ZWQgPSBmYWxzZSk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+
IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiwgaW50IGRldGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiwgaW50IGRldGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCk7CiAKLSAgICBz
dGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFp
bCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJv
b2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5z
aWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9y
dCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KTsKKyAgICBz
dGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYm
LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQg
Y2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBt
ZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVu
c2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJn
ZXQpOwogCiAgICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudCk7IH0KIApAQCAtNDksOCArNTAsOCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIH5Nb3VzZUV2ZW50KCk7CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFpbCwgaW50IHNjcmVl
blgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQg
YnV0dG9uLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCk7Ci0gICAgdm9pZCBpbml0TW91c2VF
dmVudFF1aXJrKEpTQzo6RXhlY1N0YXRlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9N
V2luZG93KiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50
WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXks
IGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBKU0M6OkpTVmFsdWUgcmVsYXRl
ZFRhcmdldCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0TW91c2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBp
bnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBFdmVudFRhcmdl
dCogcmVsYXRlZFRhcmdldCk7CisgICAgdm9pZCBpbml0TW91c2VFdmVudFF1aXJrKEpTQzo6RXhl
Y1N0YXRlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYm
LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQg
Y2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBt
ZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIEpTQzo6SlNWYWx1ZSByZWxhdGVkVGFyZ2V0
KTsKIAogICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9u
OyB9CiAgICAgdW5zaWduZWQgc2hvcnQgYnV0dG9ucygpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9u
czsgfQpAQCAtNzAsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgaW50IHdoaWNoKCkgY29uc3QgZmlu
YWw7CiAKIHByb3RlY3RlZDoKLSAgICBNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3Rh
bXAsIERPTVdpbmRvdyosCisgICAgTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1w
LCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IEludFBv
aW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAogI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIGNvbnN0IEludFBvaW50JiBtb3ZlbWVudERl
bHRhLApAQCAtNzgsNyArNzksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQg
YnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLAogICAgICAgICBFdmVudFRhcmdldCogcmVs
YXRlZFRhcmdldCwgZG91YmxlIGZvcmNlLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5
cGUsIERhdGFUcmFuc2ZlciosIGJvb2wgaXNTaW11bGF0ZWQpOwogCi0gICAgTW91c2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IERPTVdpbmRvdyosCisgICAgTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKICAg
ICAgICAgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJ
bnRQb2ludCYgY2xpZW50TG9jYXRpb24sCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRL
ZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwKICAgICAgICAgdW5zaWduZWQgc2hvcnQg
YnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWND
bGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2
ZW50LmlkbAppbmRleCAwYmUwZjg4ZGQzNWQ3Y2RmYjhkMzU0MmRhZGUxNmUzMjk0ZmRjODNhLi42
MGM0NDY2NjcxZjA2MTlmZWUwOWQwZjAxOTNmOWE0MWY2YjNlODEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01v
dXNlRXZlbnQuaWRsCkBAIC00Myw3ICs0Myw3IEBACiAgICAgLy8gRklYTUU6IHJlbGF0ZWRUYXJn
ZXQgc2hvdWxkIGJlIG9mIHR5cGUgRXZlbnRUYXJnZXQ/IGJ1dCB3ZSBuZWVkIHRvIHVzZSBhbnkg
dG8gc3VwcG9ydCBhIHF1aXJrIGZvciBpQWQgUHJvZHVjZXIgKHJkYXI6Ly9wcm9ibGVtLzMwNjQw
MTAxKS4KICAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
SW1wbGVtZW50ZWRBcz1pbml0TW91c2VFdmVudFF1aXJrXSB2b2lkIGluaXRNb3VzZUV2ZW50KG9w
dGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsCiAgICAgICAgIG9wdGlvbmFsIGJv
b2xlYW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZh
bHNlLAotICAgICAgICBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBs
b25nIGRldGFpbCA9IDAsCisgICAgICAgIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVs
bCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAwLAogICAgICAgICBvcHRpb25hbCBsb25nIHNjcmVl
blggPSAwLCBvcHRpb25hbCBsb25nIHNjcmVlblkgPSAwLCBvcHRpb25hbCBsb25nIGNsaWVudFgg
PSAwLCBvcHRpb25hbCBsb25nIGNsaWVudFkgPSAwLAogICAgICAgICBvcHRpb25hbCBib29sZWFu
IGN0cmxLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBhbHRLZXkgPSBmYWxzZSwgb3B0aW9u
YWwgYm9vbGVhbiBzaGlmdEtleSA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIG1ldGFLZXkgPSBm
YWxzZSwKICAgICAgICAgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgYnV0dG9uID0gMCwgb3B0aW9u
YWwgYW55IHJlbGF0ZWRUYXJnZXQgPSBudWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxh
dGVkRXZlbnQuY3BwCmluZGV4IDg1MzcxNGQ2YWIxZjAxZThhNWVhY2UwZDBlNDM5NzVlYjNkNTg0
OWYuLjgwYTgyNjdkYzIxYmQ4YjNiZjUxODMwZmU0YjMwYTQyYTYxMjAxNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiBET01XaW5kb3csCitN
b3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUg
dGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9j
YXRpb24sIGNvbnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFBv
aW50JiBtb3ZlbWVudERlbHRhLAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBt
ZXRhS2V5LCBib29sIGlzU2ltdWxhdGVkKQotICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVu
dFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCBET01XaW5kb3csIGRldGFp
bCwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSwgZmFsc2UsIGZhbHNlKQorICAg
IDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwg
dGltZXN0YW1wLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIGN0cmxLZXksIGFsdEtleSwgc2hpZnRL
ZXksIG1ldGFLZXksIGZhbHNlLCBmYWxzZSkKICAgICAsIG1fc2NyZWVuTG9jYXRpb24oc2NyZWVu
TG9jYXRpb24pCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAsIG1fbW92ZW1lbnREZWx0
YShtb3ZlbWVudERlbHRhKQpAQCAtNjEsNyArNjEsNyBAQCBNb3VzZVJlbGF0ZWRFdmVudDo6TW91
c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IE1vdXNl
Ugogdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdChib29sIGlzU2ltdWxhdGVkLCBjb25zdCBJ
bnRQb2ludCYgd2luZG93TG9jYXRpb24pCiB7CiAgICAgaWYgKCFpc1NpbXVsYXRlZCkgewotICAg
ICAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJvbURPTVdpbmRvdyh2aWV3KCkp
KSB7CisgICAgICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9tV2luZG93UHJv
eHkodmlldygpKSkgewogICAgICAgICAgICAgRmxvYXRQb2ludCBhYnNvbHV0ZVBvaW50ID0gZnJh
bWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKHdpbmRvd0xvY2F0aW9uKTsKICAgICAgICAgICAgIEZs
b2F0UG9pbnQgZG9jdW1lbnRQb2ludCA9IGZyYW1lVmlldy0+YWJzb2x1dGVUb0RvY3VtZW50UG9p
bnQoYWJzb2x1dGVQb2ludCk7CiAgICAgICAgICAgICBtX3BhZ2VMb2NhdGlvbiA9IGZsb29yZWRM
YXlvdXRQb2ludChkb2N1bWVudFBvaW50KTsKQEAgLTgzLDEzICs4MywxMyBAQCB2b2lkIE1vdXNl
UmVsYXRlZEV2ZW50Ojppbml0Q29vcmRpbmF0ZXMoKQogICAgIG1faGFzQ2FjaGVkUmVsYXRpdmVQ
b3NpdGlvbiA9IGZhbHNlOwogfQogCi1GcmFtZVZpZXcqIE1vdXNlUmVsYXRlZEV2ZW50OjpmcmFt
ZVZpZXdGcm9tRE9NV2luZG93KERPTVdpbmRvdyogd2luZG93KQorRnJhbWVWaWV3KiBNb3VzZVJl
bGF0ZWRFdmVudDo6ZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KFdpbmRvd1Byb3h5KiB3aW5kb3dQ
cm94eSkKIHsKLSAgICBhdXRvKiBmcmFtZSA9IHdpbmRvdyA/IHdpbmRvdy0+ZnJhbWUoKSA6IG51
bGxwdHI7Ci0gICAgaWYgKCFmcmFtZSkKKyAgICBpZiAoIXdpbmRvd1Byb3h5IHx8ICFpczxET01X
aW5kb3c+KHdpbmRvd1Byb3h5LT53aW5kb3coKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIGZyYW1lLT52aWV3KCk7CisgICAgYXV0byogZnJhbWUgPSBkb3duY2FzdDxE
T01XaW5kb3c+KCp3aW5kb3dQcm94eS0+d2luZG93KCkpLmZyYW1lKCk7CisgICAgcmV0dXJuIGZy
YW1lID8gZnJhbWUtPnZpZXcoKSA6IG51bGxwdHI7CiB9CiAKIExheW91dFBvaW50IE1vdXNlUmVs
YXRlZEV2ZW50OjpwYWdlUG9pbnRUb0NsaWVudFBvaW50KExheW91dFBvaW50IHBhZ2VQb2ludCwg
RnJhbWVWaWV3KiBmcmFtZVZpZXcpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBNb3VzZVJlbGF0
ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVzKGNvbnN0IExheW91dFBvaW50JiBjbGllbnRMb2NhdGlv
bikKICAgICAvLyBTZXQgdXAgaW5pdGlhbCB2YWx1ZXMgZm9yIGNvb3JkaW5hdGVzLgogICAgIC8v
IENvcnJlY3QgdmFsdWVzIGFyZSBjb21wdXRlZCBsYXppbHksIHNlZSBjb21wdXRlUmVsYXRpdmVQ
b3NpdGlvbi4KICAgICBGbG9hdFNpemUgZG9jdW1lbnRUb0NsaWVudE9mZnNldDsKLSAgICBpZiAo
YXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJvbURPTVdpbmRvdyh2aWV3KCkpKQorICAgIGlm
IChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9tV2luZG93UHJveHkodmlldygpKSkKICAg
ICAgICAgZG9jdW1lbnRUb0NsaWVudE9mZnNldCA9IGZyYW1lVmlldy0+ZG9jdW1lbnRUb0NsaWVu
dE9mZnNldCgpOwogCiAgICAgbV9jbGllbnRMb2NhdGlvbiA9IGNsaWVudExvY2F0aW9uOwpAQCAt
MTI4LDcgKzEyOCw3IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGluYXRlcyhj
b25zdCBMYXlvdXRQb2ludCYgY2xpZW50TG9jYXRpb24pCiAKIGZsb2F0IE1vdXNlUmVsYXRlZEV2
ZW50Ojpkb2N1bWVudFRvQWJzb2x1dGVTY2FsZUZhY3RvcigpIGNvbnN0CiB7Ci0gICAgaWYgKGF1
dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSkKKyAgICBpZiAo
YXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpCiAgICAg
ICAgIHJldHVybiBmcmFtZVZpZXctPmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFjdG9yKCk7CiAK
ICAgICByZXR1cm4gMTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBmbG9hdCBNb3VzZVJlbGF0ZWRFdmVu
dDo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3IoKSBjb25zdAogCiB2b2lkIE1vdXNlUmVs
YXRlZEV2ZW50Ojpjb21wdXRlUGFnZUxvY2F0aW9uKCkKIHsKLSAgICBtX2Fic29sdXRlTG9jYXRp
b24gPSBwYWdlUG9pbnRUb0Fic29sdXRlUG9pbnQobV9wYWdlTG9jYXRpb24sIGZyYW1lVmlld0Zy
b21ET01XaW5kb3codmlldygpKSk7CisgICAgbV9hYnNvbHV0ZUxvY2F0aW9uID0gcGFnZVBvaW50
VG9BYnNvbHV0ZVBvaW50KG1fcGFnZUxvY2F0aW9uLCBmcmFtZVZpZXdGcm9tV2luZG93UHJveHko
dmlldygpKSk7CiB9CiAKIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OnJlY2VpdmVkVGFyZ2V0KCkK
QEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUmVsYXRp
dmVQb3NpdGlvbigpCiAgICAgCiBGbG9hdFBvaW50IE1vdXNlUmVsYXRlZEV2ZW50Ojpsb2NhdGlv
bkluUm9vdFZpZXdDb29yZGluYXRlcygpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmll
dyA9IGZyYW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSkKKyAgICBpZiAoYXV0byogZnJhbWVW
aWV3ID0gZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpCiAgICAgICAgIHJldHVybiBm
cmFtZVZpZXctPmNvbnRlbnRzVG9Sb290Vmlldyhyb3VuZGVkSW50UG9pbnQobV9hYnNvbHV0ZUxv
Y2F0aW9uKSk7CiAKICAgICByZXR1cm4gbV9hYnNvbHV0ZUxvY2F0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VSZWxhdGVkRXZlbnQuaAppbmRleCAwZDgzYzM2MDlmNzFlYWZlZjIxNzFhOWNkMGQ0
MzFhZTZkODU0ZjhiLi5hZDRlNWQwYzM1NmY1NDFlMDgyZTExYTI2YTJkMGNjMTE1ZmQ1OWM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaApAQCAtNjcsMTQgKzY3LDE0IEBA
IHB1YmxpYzoKICAgICAvLyB1c2FibGUgd2l0aCBSZW5kZXJPYmplY3Q6OmFic29sdXRlVG9Mb2Nh
bCkuCiAgICAgY29uc3QgTGF5b3V0UG9pbnQmIGFic29sdXRlTG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2Fic29sdXRlTG9jYXRpb247IH0KICAgICAKLSAgICBzdGF0aWMgRnJhbWVWaWV3KiBm
cmFtZVZpZXdGcm9tRE9NV2luZG93KERPTVdpbmRvdyopOworICAgIHN0YXRpYyBGcmFtZVZpZXcq
IGZyYW1lVmlld0Zyb21XaW5kb3dQcm94eShXaW5kb3dQcm94eSopOwogCiAgICAgc3RhdGljIExh
eW91dFBvaW50IHBhZ2VQb2ludFRvQ2xpZW50UG9pbnQoTGF5b3V0UG9pbnQgcGFnZVBvaW50LCBG
cmFtZVZpZXcqKTsKICAgICBzdGF0aWMgTGF5b3V0UG9pbnQgcGFnZVBvaW50VG9BYnNvbHV0ZVBv
aW50KExheW91dFBvaW50IHBhZ2VQb2ludCwgRnJhbWVWaWV3Kik7CiAKIHByb3RlY3RlZDoKICAg
ICBNb3VzZVJlbGF0ZWRFdmVudCgpID0gZGVmYXVsdDsKLSAgICBNb3VzZVJlbGF0ZWRFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqLAorICAgIE1vdXNlUmVsYXRlZEV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKICAg
ICAgICAgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJ
bnRQb2ludCYgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAg
ICAgY29uc3QgSW50UG9pbnQmIG1vdmVtZW50RGVsdGEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNGIx
ZTg3MjU3OTUzM2ZiZjc4NzEyZmQ2ZDIzZDJjODE1YjAzZWIzOC4uYmJhNjc4YTJhNzFiNjRlMjVi
MmYwMDc3ZGY5NjU0Y2RkYjFmYzYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIkNvbXBvc2VkVHJlZUFuY2VzdG9ySXRlcmF0b3IuaCIKICNpbmNsdWRlICJD
b250YWluZXJOb2RlQWxnb3JpdGhtcy5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlci5oIgog
I2luY2x1ZGUgIkRvY3VtZW50VHlwZS5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgpA
QCAtMjM1MCw3ICsyMzUxLDcgQEAgdm9pZCBOb2RlOjpkaXNwYXRjaERPTUFjdGl2YXRlRXZlbnQo
RXZlbnQmIHVuZGVybHlpbmdDbGlja0V2ZW50KQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkOjppc1Njcmlw
dEFsbG93ZWQoKSk7CiAgICAgaW50IGRldGFpbCA9IGlzPFVJRXZlbnQ+KHVuZGVybHlpbmdDbGlj
a0V2ZW50KSA/IGRvd25jYXN0PFVJRXZlbnQ+KHVuZGVybHlpbmdDbGlja0V2ZW50KS5kZXRhaWwo
KSA6IDA7Ci0gICAgYXV0byBldmVudCA9IFVJRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9N
QWN0aXZhdGVFdmVudCwgdHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCBkZXRh
aWwpOworICAgIGF1dG8gZXZlbnQgPSBVSUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTUFj
dGl2YXRlRXZlbnQsIHRydWUsIHRydWUsIGRvY3VtZW50KCkud2luZG93UHJveHkoKSwgZGV0YWls
KTsKICAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KCZ1bmRlcmx5aW5nQ2xpY2tFdmVudCk7
CiAgICAgZGlzcGF0Y2hTY29wZWRFdmVudChldmVudCk7CiAgICAgaWYgKGV2ZW50LT5kZWZhdWx0
SGFuZGxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRlZENsaWNr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAKaW5kZXggZTBmNGUz
NTJlY2ExOGRjZGM4NTkyNDkyZWM1MDg0MjkyOGFiNjU3NC4uZjQ2NDM5YWE2MGY2NmYxYTYyMjRh
ZmU3Y2E2OWFkOWU4NDJkMDZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXVs
YXRlZENsaWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltdWxhdGVkQ2xpY2suY3Bw
CkBAIC0zNywxNCArMzcsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaW11bGF0
ZWRNb3VzZUV2ZW50IGZpbmFsIDogcHVibGljIE1vdXNlRXZlbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8U2ltdWxhdGVkTW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZl
bnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVkQ2xpY2tTb3VyY2Ugc291cmNlKQorICAgIHN0
YXRpYyBSZWY8U2ltdWxhdGVkTW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgUmVmUHRyPEV2ZW50PiYmIHVu
ZGVybHlpbmdFdmVudCwgRWxlbWVudCYgdGFyZ2V0LCBTaW11bGF0ZWRDbGlja1NvdXJjZSBzb3Vy
Y2UpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW11bGF0ZWRNb3VzZUV2
ZW50KGV2ZW50VHlwZSwgdmlldywgV1RGTW92ZSh1bmRlcmx5aW5nRXZlbnQpLCB0YXJnZXQsIHNv
dXJjZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW11bGF0ZWRNb3VzZUV2ZW50
KGV2ZW50VHlwZSwgV1RGTW92ZSh2aWV3KSwgV1RGTW92ZSh1bmRlcmx5aW5nRXZlbnQpLCB0YXJn
ZXQsIHNvdXJjZSkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTaW11bGF0ZWRNb3VzZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxF
dmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVkQ2xpY2tT
b3VyY2Ugc291cmNlKQotICAgICAgICA6IE1vdXNlRXZlbnQoZXZlbnRUeXBlLCB0cnVlLCB0cnVl
LCB1bmRlcmx5aW5nRXZlbnQgPyB1bmRlcmx5aW5nRXZlbnQtPnRpbWVTdGFtcCgpIDogTW9ub3Rv
bmljVGltZTo6bm93KCksIHZpZXcsIDAsIHsgfSwgeyB9LAorICAgIFNpbXVsYXRlZE1vdXNlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3LCBSZWZQdHI8RXZlbnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQsIFNp
bXVsYXRlZENsaWNrU291cmNlIHNvdXJjZSkKKyAgICAgICAgOiBNb3VzZUV2ZW50KGV2ZW50VHlw
ZSwgdHJ1ZSwgdHJ1ZSwgdW5kZXJseWluZ0V2ZW50ID8gdW5kZXJseWluZ0V2ZW50LT50aW1lU3Rh
bXAoKSA6IE1vbm90b25pY1RpbWU6Om5vdygpLCBXVEZNb3ZlKHZpZXcpLCAwLCB7IH0sIHsgfSwK
ICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICAgICAgeyB9LAogI2VuZGlmCkBAIC03
OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAKIHN0YXRpYyB2b2lkIHNpbXVsYXRlTW91c2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYgZWxlbWVudCwgRXZlbnQqIHVu
ZGVybHlpbmdFdmVudCwgU2ltdWxhdGVkQ2xpY2tTb3VyY2Ugc291cmNlKQogewotICAgIGVsZW1l
bnQuZGlzcGF0Y2hFdmVudChTaW11bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBl
bGVtZW50LmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdW5kZXJseWluZ0V2ZW50LCBlbGVtZW50
LCBzb3VyY2UpKTsKKyAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoU2ltdWxhdGVkTW91c2VFdmVu
dDo6Y3JlYXRlKGV2ZW50VHlwZSwgZWxlbWVudC5kb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIHVu
ZGVybHlpbmdFdmVudCwgZWxlbWVudCwgc291cmNlKSk7CiB9CiAKIHZvaWQgc2ltdWxhdGVDbGlj
ayhFbGVtZW50JiBlbGVtZW50LCBFdmVudCogdW5kZXJseWluZ0V2ZW50LCBTaW11bGF0ZWRDbGlj
a01vdXNlRXZlbnRPcHRpb25zIG1vdXNlRXZlbnRPcHRpb25zLCBTaW11bGF0ZWRDbGlja1Zpc3Vh
bE9wdGlvbnMgdmlzdWFsT3B0aW9ucywgU2ltdWxhdGVkQ2xpY2tTb3VyY2UgY3JlYXRpb25PcHRp
b25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAppbmRleCBiZDAyNGVhNTVmNmJhODRlMzJjOTA0
NDZmY2JmODI4MjA0ZDJjMzBjLi5iMDk0NDkzYzFmODU1ODQ5ODg5M2MyY2I3YzBkMDc0NmI2YWI1
YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcApAQCAtMzgsMjkgKzM4LDI5IEBAIFJlZjxU
ZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFRleHRFdmVudCk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3Jl
YXRlKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5
cGUgaW5wdXRUeXBlKQorUmVmPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGUoUmVmUHRyPFdp
bmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBl
IGlucHV0VHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQodmlldywg
ZGF0YSwgaW5wdXRUeXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdU
Rk1vdmUodmlldyksIGRhdGEsIGlucHV0VHlwZSkpOwogfQogCi1SZWY8VGV4dEV2ZW50PiBUZXh0
RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKERPTVdpbmRvdyogdmlldywgY29uc3QgU3Ry
aW5nJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSkKK1JlZjxUZXh0RXZlbnQ+IFRleHRF
dmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcs
IGNvbnN0IFN0cmluZyYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KHZpZXcsIGRhdGEsIDAsIHNob3VsZFNtYXJ0UmVw
bGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdURk1vdmUodmlldyksIGRhdGEs
IDAsIHNob3VsZFNtYXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJl
c3BlY3RCbG9ja3F1b3RlKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRl
Rm9yRnJhZ21lbnRQYXN0ZShET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiYmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUs
IE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKK1JlZjxUZXh0
RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRT
bWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGlu
ZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRl
eHRFdmVudCh2aWV3LCBlbXB0eVN0cmluZygpLCBXVEZNb3ZlKGRhdGEpLCBzaG91bGRTbWFydFJl
cGxhY2UsIHNob3VsZE1hdGNoU3R5bGUsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZW1wdHlTdHJpbmco
KSwgV1RGTW92ZShkYXRhKSwgc2hvdWxkU21hcnRSZXBsYWNlLCBzaG91bGRNYXRjaFN0eWxlLCBt
YWlsQmxvY2txdW90ZUhhbmRsaW5nKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6
Y3JlYXRlRm9yRHJvcChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxU
ZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRl
eHRFdmVudCh2aWV3LCBkYXRhLCBUZXh0RXZlbnRJbnB1dERyb3ApKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZGF0YSwgVGV4dEV2ZW50SW5wdXRE
cm9wKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRGljdGF0aW9u
KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0
aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCitSZWY8VGV4dEV2ZW50PiBU
ZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3RhdGlvbihSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywg
Y29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBk
aWN0YXRpb25BbHRlcm5hdGl2ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2
ZW50KHZpZXcsIGRhdGEsIGRpY3RhdGlvbkFsdGVybmF0aXZlcykpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFRleHRFdmVudChXVEZNb3ZlKHZpZXcpLCBkYXRhLCBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMpKTsKIH0KIAogVGV4dEV2ZW50OjpUZXh0RXZlbnQoKQpAQCAtNzEsOCArNzEsOCBAQCBU
ZXh0RXZlbnQ6OlRleHRFdmVudCgpCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdp
bmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRU
eXBlKQotICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRy
dWUsIHZpZXcsIDApCitUZXh0RXZlbnQ6OlRleHRFdmVudChSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRUeXBlKQor
ICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIFdU
Rk1vdmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAgLCBtX2Rh
dGEoZGF0YSkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtODEsOCArODEs
OCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYg
ZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlIGlucAogewogfQogCi1UZXh0RXZlbnQ6OlRleHRFdmVu
dChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBz
aG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFu
ZGxpbmcpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwg
dHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQcm94eT4m
JiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIHBh
c3RpbmdGcmFnbWVudCwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hT
dHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQorICAg
IDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIFdURk1v
dmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShUZXh0RXZlbnRJbnB1dFBhc3RlKQogICAg
ICwgbV9kYXRhKGRhdGEpCiAgICAgLCBtX3Bhc3RpbmdGcmFnbWVudChXVEZNb3ZlKHBhc3RpbmdG
cmFnbWVudCkpCkBAIC05Miw4ICs5Miw4IEBAIFRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRv
dyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVuCiB7CiB9
CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBk
YXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwg
dHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQcm94eT4m
JiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5h
dGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcykKKyAgICA6IFVJRXZlbnQoZXZlbnROYW1lcygp
LnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0cnVlLCBXVEZNb3ZlKHZpZXcpLCAwKQogICAgICwgbV9p
bnB1dFR5cGUoVGV4dEV2ZW50SW5wdXREaWN0YXRpb24pCiAgICAgLCBtX2RhdGEoZGF0YSkKICAg
ICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtMTA1LDEyICsxMDUsMTIgQEAgVGV4
dEV2ZW50OjpUZXh0RXZlbnQoRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNv
bnN0IFZlY3RvcjxEaWN0YXRpb24KIAogVGV4dEV2ZW50Ojp+VGV4dEV2ZW50KCkgPSBkZWZhdWx0
OwogCi12b2lkIFRleHRFdmVudDo6aW5pdFRleHRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhKQordm9pZCBUZXh0RXZlbnQ6OmluaXRUZXh0RXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIGlmIChpc0Jl
aW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbml0VUlFdmVudCh0eXBl
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAgICBtX2lucHV0
VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaAppbmRl
eCAyOWViMjZkMGUwNzRiNTRkMzQ2MzU2MDQyODBkMTJhNjk4OGFmOGRhLi4wYWUyYWM4NjNmYjgx
YmJiMjg2Mzg1MTY1YjZiMTI1MWQyZGZiMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oCkBAIC0z
OCwxNiArMzgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgVGV4dEV2ZW50
IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJl
ZjxUZXh0RXZlbnQ+IGNyZWF0ZShET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRF
dmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOworICAgICAgICBzdGF0aWMg
UmVmPFRleHRFdmVudD4gY3JlYXRlKFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgU3RyaW5n
JiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJkKTsKICAg
ICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7Ci0gICAgICAg
IHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShET01XaW5kb3cq
LCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKLSAgICAgICAg
c3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoRE9NV2luZG93Kiwg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2Us
IGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0gICAgICAg
IHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEcm9wKERPTVdpbmRvdyosIGNvbnN0IFN0
cmluZyYgZGF0YSk7Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEaWN0
YXRpb24oRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0
aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgICAgICBzdGF0aWMg
UmVmPFRleHRFdmVudD4gY3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5
PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKKyAgICAg
ICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoUmVmUHRyPFdp
bmRvd1Byb3h5PiYmLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBkYXRhLCBib29sIHNob3Vs
ZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRs
aW5nKTsKKyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRyb3AoUmVmUHRy
PFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBzdGF0aWMgUmVm
PFRleHRFdmVudD4gY3JlYXRlRm9yRGljdGF0aW9uKFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29u
c3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0
YXRpb25BbHRlcm5hdGl2ZXMpOwogCiAgICAgICAgIHZpcnR1YWwgflRleHRFdmVudCgpOwogICAg
IAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cq
LCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRU
ZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBj
YW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAg
ICAgCiAgICAgICAgIFN0cmluZyBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKQEAg
LTcxLDkgKzcxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAg
IFRleHRFdmVudCgpOwogCi0gICAgICAgIFRleHRFdmVudChET01XaW5kb3cqLCBjb25zdCBTdHJp
bmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOwot
ICAgICAgICBUZXh0RXZlbnQoRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4mJiwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxk
TWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0gICAgICAgIFRleHRFdmVudChE
T01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRl
cm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgICAgIFRleHRFdmVudChSZWZQ
dHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBl
ID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7CisgICAgICAgIFRleHRFdmVudChSZWZQdHI8V2lu
ZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
JiYsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxC
bG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBUZXh0RXZlbnQoUmVmUHRyPFdpbmRvd1Byb3h5
PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2
ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAKICAgICAgICAgYm9vbCBpc1RleHRFdmVudCgp
IGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2
ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCmluZGV4IDM2NDA2NWZh
ODJkNDE4OTljMGM1MjMyNTBjMmYyNzk5NzcwZDNlMGUuLmNlOGIzMGFjYjNjNzFmZmRmODI4YjIx
ODEwNjVhYWExZjhhMTI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZl
bnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCkBAIC0zMiw3ICsz
Miw3IEBAIGludGVyZmFjZSBUZXh0RXZlbnQgOiBVSUV2ZW50IHsKICAgICB2b2lkIGluaXRUZXh0
RXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZpbmVkIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGVBcmcgPSBmYWxzZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlQXJnID0gZmFs
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlld0FyZyA9
IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3
QXJnID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3RyaW5nIGRh
dGFBcmcgPSAidW5kZWZpbmVkIik7CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVG91Y2hFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKaW5k
ZXggNjFjMDhmMjFkYTM4YmFhN2ExMTBmMjJkY2E2YTU3YmU5M2I2ODNlNy4uMDAyMzdjZGFkNTY4
Mzc5NTJkOTNhOTdkZTI2YTk5ZTllYWZjMzkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RvdWNoRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNw
cApAQCAtMzgsOSArMzgsOSBAQCBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KCkgPSBkZWZhdWx0Owog
CiBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91Y2hMaXN0KiB0
YXJnZXRUb3VjaGVzLAogICAgICAgICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzLCBjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICBET01XaW5kb3cqIHZpZXcsIGludCBzY3JlZW5Y
LCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAgICAgIFJlZlB0cjxXaW5k
b3dQcm94eT4mJiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50
IHBhZ2VZLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXkpCi0gICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVlLCB0cnVl
LCBNb25vdG9uaWNUaW1lOjpub3coKSwgdmlldywgMCwgSW50UG9pbnQoc2NyZWVuWCwgc2NyZWVu
WSksCisgICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCBNb25vdG9uaWNU
aW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwgMCwgSW50UG9pbnQoc2NyZWVuWCwgc2NyZWVuWSks
CiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChwYWdlWCwgcGFnZVkpLAogI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludCgwLCAw
KSwKQEAgLTY0LDEzICs2NCwxMyBAQCBUb3VjaEV2ZW50Ojp+VG91Y2hFdmVudCgpID0gZGVmYXVs
dDsKIAogdm9pZCBUb3VjaEV2ZW50Ojppbml0VG91Y2hFdmVudChUb3VjaExpc3QqIHRvdWNoZXMs
IFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywKICAgICAgICAgVG91Y2hMaXN0KiBjaGFuZ2VkVG91
Y2hlcywgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAKLSAgICAgICAgRE9NV2luZG93KiB2aWV3
LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwKKyAg
ICAgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVu
WSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wg
YWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAgICAgaWYgKGlzQmVpbmdE
aXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRVSUV2ZW50KHR5cGUsIHRy
dWUsIHRydWUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIHRydWUsIHRydWUsIFdU
Rk1vdmUodmlldyksIDApOwogCiAgICAgbV90b3VjaGVzID0gdG91Y2hlczsKICAgICBtX3Rhcmdl
dFRvdWNoZXMgPSB0YXJnZXRUb3VjaGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1RvdWNoRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKaW5kZXggZDMz
OWMwYjcyYjEzZDQ1NWE1ZTAzODY2ZTU1NzIwY2NmNmJmMWVkYi4uODVmYTE2MWYyMTk2ZDNmMmEw
NWQ5YTMxYTExN2IwYTFhZjg2NmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Rv
dWNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCkBAIC00MSwx
MiArNDEsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxUb3VjaEV2ZW50PiBjcmVhdGUo
VG91Y2hMaXN0KiB0b3VjaGVzLCAKICAgICAgICAgICAgIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hl
cywgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgCi0gICAgICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIERPTVdpbmRvdyogdmlldywKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgICAgICAgICBpbnQg
c2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogICAgICAgICAgICAg
Ym9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVG91Y2hFdmVudCh0b3VjaGVzLCB0
YXJnZXRUb3VjaGVzLCBjaGFuZ2VkVG91Y2hlcywKLSAgICAgICAgICAgICAgICB0eXBlLCB2aWV3
LCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksCisgICAgICAgICAgICAgICAgdHlwZSwg
V1RGTW92ZSh2aWV3KSwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLAogICAgICAgICAg
ICAgICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpKTsKICAgICB9CiAgICAg
c3RhdGljIFJlZjxUb3VjaEV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBAIC02Nyw3ICs2Nyw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVz
LCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3QqIGNoYW5n
ZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICAgICAgRE9NV2lu
ZG93KiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLAorICAgICAgICAgICAgUmVmUHRyPFdpbmRv
d1Byb3h5PiYmLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksCiAgICAgICAgICAgICBpbnQgY2xp
ZW50WCwgaW50IGNsaWVudFksCiAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5
LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZh
dGU6CiAgICAgVG91Y2hFdmVudCgpOwogICAgIFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVz
LCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3QqIGNoYW5n
ZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsCi0gICAgICAgICAgICBET01XaW5k
b3cqLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwKKyAgICAgICAgICAgIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgs
CiAgICAgICAgICAgICBpbnQgcGFnZVksCiAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wg
YWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogICAgIFRvdWNoRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91
Y2hFdmVudC5pZGwKaW5kZXggODEwNTgzNTdlZDNhYTc3NzRkMjZmYWZhZTE2MDNiMTVkZGUwZDYw
Yi4uNTRlOTlkYjQ4MzBmMzBkNDYyNjQyZTMzZDQzOTU2OTNiMTNmMmIwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ub3VjaEV2ZW50LmlkbApAQCAtNDAsNyArNDAsNyBAQAogICAgICAgICAgICAgICAgICAgICAg
ICAgb3B0aW9uYWwgVG91Y2hMaXN0PyB0YXJnZXRUb3VjaGVzID0gbnVsbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wdGlvbmFsIFRvdWNoTGlzdD8gY2hhbmdlZFRvdWNoZXMgPSBudWxsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5kZWZp
bmVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlldyA9
IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmll
dyA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBsb25nIHNjcmVlblgg
PSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGxvbmcgY2xpZW50WCA9IDAsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVUlFdmVudC5jcHAKaW5kZXggYWIyMGVlY2I5YzU4MzFkZWYwMjc5Y2E3OGEwZTdjYzVmYTg1
NjIxNy4uMGE2ZjgxYWY1MjM3MTZmNzU4MTc4ZjBmOTUzNDRjZGM2NTViODAwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9VSUV2ZW50LmNwcApAQCAtMzIsMTYgKzMyLDE2IEBAIFVJRXZlbnQ6OlVJRXZlbnQoKQogewog
fQogCi1VSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29s
IGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBET01XaW5kb3cqIHZpZXdBcmcsIGlu
dCBkZXRhaWxBcmcpCitVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwg
Y2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnKQotICAgICwgbV92aWV3KHZpZXdBcmcpCisgICAg
LCBtX3ZpZXcoV1RGTW92ZSh2aWV3QXJnKSkKICAgICAsIG1fZGV0YWlsKGRldGFpbEFyZykKIHsK
IH0KIAotVUlFdmVudDo6VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9v
bCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgTW9ub3RvbmljVGltZSB0aW1lc3Rh
bXAsIERPTVdpbmRvdyogdmlld0FyZywgaW50IGRldGFpbEFyZykKK1VJRXZlbnQ6OlVJRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNh
bmNlbGFibGVBcmcsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgY2FuQnVi
YmxlQXJnLCBjYW5jZWxhYmxlQXJnLCB0aW1lc3RhbXApCi0gICAgLCBtX3ZpZXcodmlld0FyZykK
KyAgICAsIG1fdmlldyhXVEZNb3ZlKHZpZXdBcmcpKQogICAgICwgbV9kZXRhaWwoZGV0YWlsQXJn
KQogewogfQpAQCAtNTUsNyArNTUsNyBAQCBVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBjb25zdCBVSUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIsCiAKIFVJRXZl
bnQ6On5VSUV2ZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFVJRXZlbnQ6OmluaXRVSUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZUFyZywgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2Vs
YWJsZUFyZywgRE9NV2luZG93KiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQordm9pZCBVSUV2ZW50
Ojppbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVBcmcsIGJvb2wgY2FuQnViYmxl
QXJnLCBib29sIGNhbmNlbGFibGVBcmcsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3QXJnLCBp
bnQgZGV0YWlsQXJnKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnQuaAppbmRleCBiYWE3MzFmY2Y4MWVlYmFmMjMxNTNkYTUxYmEw
YWVhZmQyNDU1ZmFjLi41MGYyZDE3NzE5OTQyZTQ3M2ZkZWM5YjFhODg0ODYwNTkzY2QxOWE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50LmgKQEAgLTIzLDIwICsyMywyMCBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiVUlF
dmVudEluaXQuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIG5vIG9uZSBpcyBkZXBlbmRpbmcgb24g
aXQgYW55bW9yZS4KLXR5cGVkZWYgRE9NV2luZG93IEFic3RyYWN0VmlldzsKK3R5cGVkZWYgV2lu
ZG93UHJveHkgQWJzdHJhY3RWaWV3OwogCiBjbGFzcyBVSUV2ZW50IDogcHVibGljIEV2ZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmll
dywgaW50IGRldGFpbCkKKyAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRl
dGFpbCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVSUV2ZW50KHR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKSk7CiAgICAgfQogICAgIHN0
YXRpYyBSZWY8VUlFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHsKQEAgLTQ4LDkgKzQ4
LDkgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5VSUV2ZW50KCk7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGluaXRVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4m
JiwgaW50IGRldGFpbCk7CiAKLSAgICBET01XaW5kb3cqIHZpZXcoKSBjb25zdCB7IHJldHVybiBt
X3ZpZXcuZ2V0KCk7IH0KKyAgICBXaW5kb3dQcm94eSogdmlldygpIGNvbnN0IHsgcmV0dXJuIG1f
dmlldy5nZXQoKTsgfQogICAgIGludCBkZXRhaWwoKSBjb25zdCB7IHJldHVybiBtX2RldGFpbDsg
fQogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsK
QEAgLTY1LDE0ICs2NSwxNCBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVSUV2ZW50KCk7
Ci0gICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwpOwotICAgIFVJRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBN
b25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7CisgICAgVUlF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCk7CisgICAgVUlFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRh
aWwpOwogICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVUlFdmVudEluaXQm
LCBJc1RydXN0ZWQpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNVSUV2ZW50KCkgY29uc3QgZmlu
YWw7CiAKLSAgICBSZWZQdHI8RE9NV2luZG93PiBtX3ZpZXc7CisgICAgUmVmUHRyPFdpbmRvd1By
b3h5PiBtX3ZpZXc7CiAgICAgaW50IG1fZGV0YWlsOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRs
CmluZGV4IDg3YjM5MTUyODMwMzE5N2UzNmM2NGMxZTcwOGZmYjYwY2JhZDk1MDMuLjZhMzVjNTdh
Mzg3NGJjOGVjNjNkNmQ5MjRkNDI4YjJiNTgxMDBmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5pZGwK
QEAgLTIwLDExICsyMCwxMSBAQAogWwogICAgIENvbnN0cnVjdG9yKERPTVN0cmluZyB0eXBlLCBv
cHRpb25hbCBVSUV2ZW50SW5pdCBldmVudEluaXREaWN0KQogXSBpbnRlcmZhY2UgVUlFdmVudCA6
IEV2ZW50IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IHZpZXc7CisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHZpZXc7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGxvbmcgZGV0YWlsOwogICAgIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBk
ZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICB2b2lkIGluaXRVSUV2ZW50KG9w
dGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIGJvb2xlYW4gY2Fu
QnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZhbHNlLCBvcHRp
b25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBsb25nIGRldGFpbCA9IDApOwor
ICAgIHZvaWQgaW5pdFVJRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5kZWZpbmVk
Iiwgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGUgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBj
YW5jZWxhYmxlID0gZmFsc2UsIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwgb3B0
aW9uYWwgbG9uZyBkZXRhaWwgPSAwKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxh
eWVyWDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsYXllclk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2
ZW50SW5pdC5oCmluZGV4IDAzMTZiYzA2ZjU2OGU1MzkxNmRmNjk2ZjQxNDQ1YmE5ZmMzMWZmMzYu
LmUxMTI4YTc2ZGU1ODYwMTYyZmE5NzZkY2RjODI3MTcwZDhmMmYzYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9V
SUV2ZW50SW5pdC5oCkBAIC0yNSwxNCArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudEluaXQuaCIKKyNpbmNsdWRlICJXaW5k
b3dQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdHJ1Y3QgVUlFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKLSAgICBSZWZQdHI8
RE9NV2luZG93PiB2aWV3OworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gdmlldzsKICAgICBpbnQg
ZGV0YWlsIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZl
bnRJbml0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5pZGwKaW5kZXggMGQ3
ZWI4ZWZjMWM1MzdhOTA1MTE3YjYxMjExMWFkMDFlYjFlMGFhMi4uM2NjYmJlZDYwNzU1ZjZmMjE2
NTJmNWJhNjFlNmYzODI0MGMxN2ZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VJ
RXZlbnRJbml0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaWRsCkBA
IC0yNCw2ICsyNCw2IEBACiAgKi8KIAogZGljdGlvbmFyeSBVSUV2ZW50SW5pdCA6IEV2ZW50SW5p
dCB7Ci0gICAgRE9NV2luZG93PyB2aWV3ID0gbnVsbDsKKyAgICBXaW5kb3dQcm94eT8gdmlldyA9
IG51bGw7CiAgICAgbG9uZyBkZXRhaWwgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVu
dFdpdGhLZXlTdGF0ZS5oCmluZGV4IDBhOGU0MDMxMjQ4ZDZmNzI2NTQ0MmU1YmY4MDAxMmJhMzBj
Y2NkZWIuLjA4NWEwMzE3ZWM4ZGNlM2E2MGZlMjZhZmE1YTE2MmVhMmE5YTA1MWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaApAQCAtNDAsOCArNDAsOCBAQCBwdWJs
aWM6CiBwcm90ZWN0ZWQ6CiAgICAgVUlFdmVudFdpdGhLZXlTdGF0ZSgpID0gZGVmYXVsdDsKIAot
ICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGJv
b2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSkKLSAg
ICAgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWls
KQorICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywg
aW50IGRldGFpbCwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9v
bCBtZXRhS2V5KQorICAgICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCiAg
ICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQogICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkp
CkBAIC00OSw5ICs0OSw5IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQogCi0gICAgVUlFdmVu
dFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqIHZpZXcs
CisgICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICAgICAgaW50IGRldGFpbCwgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBib29sIGFsdEdyYXBo
S2V5LCBib29sIGNhcHNMb2NrS2V5KQotICAgICAgICAgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2aWV3LCBkZXRhaWwpCisgICAgICAgICAgICA6
IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIFdURk1vdmUo
dmlldyksIGRldGFpbCkKICAgICAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCiAgICAgICAg
ICAgICAsIG1fYWx0S2V5KGFsdEtleSkKICAgICAgICAgICAgICwgbV9zaGlmdEtleShzaGlmdEtl
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAppbmRleCBkMmI4ZmI3MmQ5MTk4ZTE0YmY3NThj
YTNhZmJjMWVjMjQ3ZjcxY2JkLi41MzdjYjE5M2M4MTNmNTI3YWM1MzNjOTMwODkwODdiZGIzNjhi
ZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCkBAIC00Nyw4ICs0Nyw4IEBAIGlubGlu
ZSBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3Qg
SW5pdCYgaW5pdGlhbGl6ZXIsCiB7CiB9CiAKLWlubGluZSBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogdmlldykKLSAgICA6
IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUsIGV2ZW50LnRp
bWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LCAwLCBldmVudC5nbG9i
YWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCitpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxF
dmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlldykKKyAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUs
IHRydWUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCBXVEZN
b3ZlKHZpZXcpLCAwLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCiAj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgLCB7IH0KICNlbmRpZgpAQCAtNjEsOSAr
NjEsOSBAQCBpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHZpZXcpCiB7CiB9CiAKLVJlZjxXaGVlbEV2ZW50PiBX
aGVlbEV2ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgRE9NV2lu
ZG93KiB2aWV3KQorUmVmPFdoZWVsRXZlbnQ+IFdoZWVsRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXaGVlbEV2ZW50KGV2ZW50LCB2aWV3KSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2hlZWxFdmVudChldmVudCwgV1RGTW92ZSh2aWV3KSkpOwogfQog
CiBSZWY8V2hlZWxFdmVudD4gV2hlZWxFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQpAQCAtNzYs
MTIgKzc2LDEyIEBAIFJlZjxXaGVlbEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsCiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2hlZWxFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiB9CiAKLXZv
aWQgV2hlZWxFdmVudDo6aW5pdFdlYktpdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwgaW50IHJh
d0RlbHRhWSwgRE9NV2luZG93KiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBw
YWdlWCwgaW50IHBhZ2VZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXkpCit2b2lkIFdoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2ZW50KGlu
dCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBp
bnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29sIGN0cmxL
ZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAgICAgaWYg
KGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpbml0TW91
c2VFdmVudChldmVudE5hbWVzKCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCwgc2Ny
ZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBt
ZXRhS2V5LCAwLCBudWxscHRyKTsKKyAgICBpbml0TW91c2VFdmVudChldmVudE5hbWVzKCkud2hl
ZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCwgc2NyZWVuWCwgc2NyZWVuWSwg
cGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCAwLCBudWxs
cHRyKTsKIAogICAgIC8vIE5vcm1hbGl6ZSB0byAxMjAgbXVsdGlwbGUgZm9yIGNvbXBhdGliaWxp
dHkgd2l0aCBJRS4KICAgICBtX3doZWVsRGVsdGEgPSB7IHJhd0RlbHRhWCAqIFRpY2tNdWx0aXBs
aWVyLCByYXdEZWx0YVkgKiBUaWNrTXVsdGlwbGllciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1doZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgK
aW5kZXggNGQzNGIzMGQ2ZGVkNWVmMjgxNWE4MTM3ZTRjMjk3ZTY0MWFkZTZkYS4uMTBiNjJlMDVj
NzAxNTYwNzZmZmU1Y2YxMjczOTdlYzEzMjNkZDJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1doZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5o
CkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAgICAgRE9NX0RFTFRBX1BBR0UKICAgICB9
OwogCi0gICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAgICBz
dGF0aWMgUmVmPFdoZWVsRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBzdHJ1Y3Qg
SW5pdCA6IE1vdXNlRXZlbnRJbml0IHsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBj
b25zdCBJbml0JiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGluaXRXZWJLaXRXaGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0
YVksIERPTVdpbmRvdyosIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQg
cGFnZVksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0
YUtleSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChpbnQg
cmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBzY3Jl
ZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwgYm9v
bCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CiAKICAgICBjb25zdCBzdGQ6
Om9wdGlvbmFsPFBsYXRmb3JtV2hlZWxFdmVudD4mIHVuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KCkg
Y29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudDsgfQogCkBAIC03NSw3ICs3
NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2hlZWxFdmVudCgpOwogICAgIFdoZWVsRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7Ci0gICAgV2hl
ZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBET01XaW5kb3cqKTsKKyAgICBXaGVl
bEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFJlZlB0cjxXaW5kb3dQcm94eT4mJik7
CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vV2hlZWxFdmVudC5pZGwKaW5kZXggOTNjNTNhNGJmYjJkYWY0YmQ0NDI3Mzg2NmE5
MmNlZDRhMWMxYzM4Ni4uYjI4MWRhMWM2NjA0NGE4YTkzZDYwZDkwZWRkZjUxZDE0YzZjOTM0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmlkbApAQCAtMzksNyArMzksNyBAQAogCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0RGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNl
OwogCi0gICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRpb25hbCBsb25nIHdoZWVsRGVs
dGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAsIG9wdGlvbmFsIERPTVdpbmRv
dz8gdmlldyA9IG51bGwsCisgICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRpb25hbCBs
b25nIHdoZWVsRGVsdGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAsIG9wdGlv
bmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwKICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3Jl
ZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRY
ID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRZID0gMCwKICAgICAgICAgb3B0aW9uYWwgYm9vbGVh
biBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFsc2UsCiAgICAg
ICAgIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBt
ZXRhS2V5ID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZDE0NzI0Mjc3MjM3NDY4ZDRmNjFmZmUzM2M3
NWZlNDZhODE5MjNkYy4uZDQ1M2Y2NDQwYWQ0NmViZTMwYTBjYmE5ZWFlMjIyNzQxYTVhYmY0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwCkBAIC02MzIsNyArNjMyLDcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyOjppbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWMKICAg
ICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpCiAgICAgICAgIHZpZXctPmRp
c2FibGVMYXllckZsdXNoVGhyb3R0bGluZ1RlbXBvcmFyaWx5Rm9ySW50ZXJhY3Rpb24oKTsKIAot
ICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24o
bV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRp
dmVzKTsKKyAgICBhdXRvIGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24oJm1f
ZnJhbWUud2luZG93UHJveHkoKSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICBl
dmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KHRyaWdnZXJpbmdFdmVudCk7CiAKICAgICB0YXJnZXQt
PmRpc3BhdGNoRXZlbnQoZXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGNi
OGI2YjhiYmFjODViYzBlMzJkZWQyZWYzMzljMjQxMDI5MGQzMTkuLjZjNjY5MDc4MDhkN2IzMjFh
YTllNjE4NDE4OTYwNmFkZjQ5ZTdjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAg
LTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgYm9vbCBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnQoRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnB1dAogICAgIGlmICghZWxlbWVu
dC5kb2N1bWVudCgpLnNldHRpbmdzKCkuaW5wdXRFdmVudHNFbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgYXV0byBldmVudCA9IElucHV0RXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuYmVmb3JlaW5wdXRFdmVudCwgaW5wdXRUeXBlLCB0cnVlLCBjYW5jZWxhYmxlLCBlbGVt
ZW50LmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIp
LCB0YXJnZXRSYW5nZXMsIDApOworICAgIGF1dG8gZXZlbnQgPSBJbnB1dEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmJlZm9yZWlucHV0RXZlbnQsIGlucHV0VHlwZSwgdHJ1ZSwgY2FuY2VsYWJs
ZSwgZWxlbWVudC5kb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIGRhdGEsIFdURk1vdmUoZGF0YVRy
YW5zZmVyKSwgdGFyZ2V0UmFuZ2VzLCAwKTsKICAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoZXZl
bnQpOwogICAgIHJldHVybiAhZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0KQEAgLTEyNyw3
ICsxMjcsNyBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaElucHV0RXZlbnQoRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnB1dFR5cGUsCiAgICAgICAgIC8vIGJ1dCBUeXBpbmdD
b21tYW5kcyBhcmUgc3BlY2lhbCBpbiB0aGF0IGV4aXN0aW5nIFR5cGluZ0NvbW1hbmRzIHRoYXQg
YXJlIGFwcGxpZWQgYWdhaW4gZmlyZSBpbnB1dCBldmVudHMgKmZyb20gd2l0aGluKiB0aGUgc2Nv
cGUgYnkgY2FsbGluZyB0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQuCiAgICAgICAgIC8vIEluc3Rl
YWQsIFR5cGluZ0NvbW1hbmRzIHNob3VsZCBhbHdheXMgZGlzcGF0Y2ggZXZlbnRzIHN5bmNocm9u
b3VzbHkgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc2NvcGVkIHF1ZXVlIGluIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjphcHBseS4gVG8gd29yayBhcm91bmQgdGhpcyBmb3IgdGhlCiAgICAgICAgIC8vIHRp
bWUgYmVpbmcsIGp1c3QgcmV2ZXJ0IGJhY2sgdG8gY2FsbGluZyBkaXNwYXRjaFNjb3BlZEV2ZW50
LgotICAgICAgICBlbGVtZW50LmRpc3BhdGNoU2NvcGVkRXZlbnQoSW5wdXRFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50LCBpbnB1dFR5cGUsIHRydWUsIGZhbHNlLCBlbGVtZW50
LmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0
YXJnZXRSYW5nZXMsIDApKTsKKyAgICAgICAgZWxlbWVudC5kaXNwYXRjaFNjb3BlZEV2ZW50KElu
cHV0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuaW5wdXRFdmVudCwgaW5wdXRUeXBlLCB0cnVl
LCBmYWxzZSwgZWxlbWVudC5kb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIGRhdGEsIFdURk1vdmUo
ZGF0YVRyYW5zZmVyKSwgdGFyZ2V0UmFuZ2VzLCAwKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGVs
ZW1lbnQuZGlzcGF0Y2hJbnB1dEV2ZW50KCk7CiB9CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBF
ZGl0b3I6OnBhc3RlQXNQbGFpblRleHQoY29uc3QgU3RyaW5nJiBwYXN0aW5nVGV4dCwgYm9vbCBz
bWFydFJlcGxhY2UpCiAgICAgRWxlbWVudCogdGFyZ2V0ID0gZmluZEV2ZW50VGFyZ2V0RnJvbVNl
bGVjdGlvbigpOwogICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm47Ci0gICAgdGFyZ2V0
LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoZG9jdW1l
bnQoKS5kb21XaW5kb3coKSwgcGFzdGluZ1RleHQsIHNtYXJ0UmVwbGFjZSkpOworICAgIHRhcmdl
dC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKGRvY3Vt
ZW50KCkud2luZG93UHJveHkoKSwgcGFzdGluZ1RleHQsIHNtYXJ0UmVwbGFjZSkpOwogfQogCiB2
b2lkIEVkaXRvcjo6cGFzdGVBc0ZyYWdtZW50KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIHBhc3Rp
bmdGcmFnbWVudCwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSwgTWFpbEJsb2Nr
cXVvdGVIYW5kbGluZyByZXNwZWN0c01haWxCbG9ja3F1b3RlKQpAQCAtNTc3LDcgKzU3Nyw3IEBA
IHZvaWQgRWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgcGFz
dGluZ0ZyYWdtZW50LCBib29sIHNtYXJ0CiAgICAgRWxlbWVudCogdGFyZ2V0ID0gZmluZEV2ZW50
VGFyZ2V0RnJvbVNlbGVjdGlvbigpOwogICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm47
Ci0gICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQ
YXN0ZShkb2N1bWVudCgpLmRvbVdpbmRvdygpLCBXVEZNb3ZlKHBhc3RpbmdGcmFnbWVudCksIHNt
YXJ0UmVwbGFjZSwgbWF0Y2hTdHlsZSwgcmVzcGVjdHNNYWlsQmxvY2txdW90ZSkpOworICAgIHRh
cmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUoZG9j
dW1lbnQoKS53aW5kb3dQcm94eSgpLCBXVEZNb3ZlKHBhc3RpbmdGcmFnbWVudCksIHNtYXJ0UmVw
bGFjZSwgbWF0Y2hTdHlsZSwgcmVzcGVjdHNNYWlsQmxvY2txdW90ZSkpOwogfQogCiB2b2lkIEVk
aXRvcjo6cGFzdGVBc1BsYWluVGV4dEJ5cGFzc2luZ0RIVE1MKCkKQEAgLTE4NDgsNyArMTg0OCw3
IEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFNldENv
bXBvc2l0aW9uTW9kZSBtb2RlKQogICAgIGluc2VydFRleHRGb3JDb25maXJtZWRDb21wb3NpdGlv
bih0ZXh0KTsKIAogICAgIGlmIChhdXRvKiB0YXJnZXQgPSBkb2N1bWVudCgpLmZvY3VzZWRFbGVt
ZW50KCkpCi0gICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChDb21wb3NpdGlvbkV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uZW5kRXZlbnQsIGRvY3VtZW50KCkuZG9tV2lu
ZG93KCksIHRleHQpKTsKKyAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9u
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQo
KS53aW5kb3dQcm94eSgpLCB0ZXh0KSk7CiAKICAgICBpZiAobW9kZSA9PSBDYW5jZWxDb21wb3Np
dGlvbikgewogICAgICAgICAvLyBBbiBvcGVuIHR5cGluZyBjb21tYW5kIHRoYXQgZGlzYWdyZWVz
IGFib3V0IGN1cnJlbnQgc2VsZWN0aW9uIHdvdWxkIGNhdXNlIGlzc3VlcyB3aXRoIHR5cGluZyBs
YXRlciBvbi4KQEAgLTE5MDgsMTEgKzE5MDgsMTEgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0
aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4K
ICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBzZW5kIGEgY29tcG9zaXRpb25zdGFydCBldmVudCBv
bmx5IHdoZW4gdGhlIGdpdmVuIHRleHQgaXMgbm90IGVtcHR5IGJlY2F1c2UgdGhpcwogICAgICAg
ICAgICAgLy8gZnVuY3Rpb24gZG9lc24ndCBjcmVhdGUgYSBjb21wb3NpdGlvbiBub2RlIHdoZW4g
dGhlIHRleHQgaXMgZW1wdHkuCiAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25zdGFydEV2ZW50LCBkb2N1bWVudCgpLmRvbVdp
bmRvdygpLCBvcmlnaW5hbFRleHQpKTsKLSAgICAgICAgICAgICAgICBldmVudCA9IENvbXBvc2l0
aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb251cGRhdGVFdmVudCwgZG9j
dW1lbnQoKS5kb21XaW5kb3coKSwgdGV4dCk7CisgICAgICAgICAgICAgICAgdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRp
b25zdGFydEV2ZW50LCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIG9yaWdpbmFsVGV4dCkpOwor
ICAgICAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIHRl
eHQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKCF0ZXh0LmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBkb2N1bWVudCgpLmRvbVdpbmRvdygpLCB0ZXh0KTsK
KyAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIHRleHQp
OwogCiAgICAgICAgIGlmIChldmVudCkKICAgICAgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVu
dCgqZXZlbnQpOwpAQCAtMTkyMyw3ICsxOTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0
aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4K
ICAgICBpZiAodGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgVHlwaW5nQ29tbWFuZDo6ZGVsZXRl
U2VsZWN0aW9uKGRvY3VtZW50KCksIFR5cGluZ0NvbW1hbmQ6OlByZXZlbnRTcGVsbENoZWNraW5n
LCBUeXBpbmdDb21tYW5kOjpUZXh0Q29tcG9zaXRpb25QZW5kaW5nKTsKICAgICAgICAgaWYgKHRh
cmdldCkKLSAgICAgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChDb21wb3NpdGlvbkV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uZW5kRXZlbnQsIGRvY3VtZW50KCkuZG9t
V2luZG93KCksIHRleHQpKTsKKyAgICAgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChDb21w
b3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uZW5kRXZlbnQsIGRv
Y3VtZW50KCkud2luZG93UHJveHkoKSwgdGV4dCkpOwogICAgIH0KIAogICAgIG1fY29tcG9zaXRp
b25Ob2RlID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAppbmRleCBh
M2Q3ZDk3NzBjZWJkMDYyOGNhN2JlYzI0Y2ZhNjc1ZDNiOTdiYjU0Li45ZDU4MWNlZGZhODQxZTBh
ZGYxYWFjNDMyNTkxYzhiNmYyZjc2NTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
Y3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgUmVmPERvY3VtZW50UGFyc2VyPiBIVE1MRG9jdW1lbnQ6
OmNyZWF0ZVBhcnNlcigpCiB9CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL2RvbS5odG1sI2RvbS1kb2N1bWVudC1uYW1lZGl0ZW0KLXN0ZDo6b3B0aW9uYWw8VmFy
aWFudDxSZWZQdHI8RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxl
Y3Rpb24+Pj4gSFRNTERvY3VtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KQorc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVt
ZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IEhUTUxEb2N1bWVudDo6bmFtZWRJdGVtKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKICAgICBpZiAobmFtZS5pc051bGwoKSB8fCAhaGFz
RG9jdW1lbnROYW1lZEl0ZW0oKm5hbWUuaW1wbCgpKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTEyMiwxNiArMTIyLDE2IEBAIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8
RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+CiAgICAg
aWYgKFVOTElLRUxZKGRvY3VtZW50TmFtZWRJdGVtQ29udGFpbnNNdWx0aXBsZUVsZW1lbnRzKCpu
YW1lLmltcGwoKSkpKSB7CiAgICAgICAgIGF1dG8gY29sbGVjdGlvbiA9IGRvY3VtZW50TmFtZWRJ
dGVtcyhuYW1lKTsKICAgICAgICAgQVNTRVJUKGNvbGxlY3Rpb24tPmxlbmd0aCgpID4gMSk7Ci0g
ICAgICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4s
IFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiB7IFdURk1v
dmUoY29sbGVjdGlvbikgfSB9OworICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8V2luZG93
UHJveHk+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgUmVmUHRy
PEhUTUxDb2xsZWN0aW9uPiB7IFdURk1vdmUoY29sbGVjdGlvbikgfSB9OwogICAgIH0KIAogICAg
IGF1dG8mIGVsZW1lbnQgPSAqZG9jdW1lbnROYW1lZEl0ZW0oKm5hbWUuaW1wbCgpKTsKICAgICBp
ZiAoVU5MSUtFTFkoaXM8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQpKSkgewogICAgICAgICBp
ZiAoYXV0byBkb21XaW5kb3cgPSBtYWtlUmVmUHRyKGRvd25jYXN0PEhUTUxJRnJhbWVFbGVtZW50
PihlbGVtZW50KS5jb250ZW50V2luZG93KCkpKQotICAgICAgICAgICAgcmV0dXJuIFZhcmlhbnQ8
UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9u
Pj4geyBXVEZNb3ZlKGRvbVdpbmRvdykgfTsKKyAgICAgICAgICAgIHJldHVybiBWYXJpYW50PFJl
ZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9u
Pj4geyBXVEZNb3ZlKGRvbVdpbmRvdykgfTsKICAgICB9CiAKLSAgICByZXR1cm4gVmFyaWFudDxS
ZWZQdHI8RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+
PiB7IFJlZlB0cjxFbGVtZW50PiB7ICZlbGVtZW50IH0gfTsKKyAgICByZXR1cm4gVmFyaWFudDxS
ZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlv
bj4+IHsgUmVmUHRyPEVsZW1lbnQ+IHsgJmVsZW1lbnQgfSB9OwogfQogCiBWZWN0b3I8QXRvbWlj
U3RyaW5nPiBIVE1MRG9jdW1lbnQ6OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERvY3VtZW50LmgKaW5kZXggYTM2Mzk3NDA2ZDM0OWY1NzZmNDg5ZDNhMWY2
MDBhZGExYmRkY2ZlMS4uMGIzZDM0MTRhNGJlZmEwMzM1YzRlMjI5YTU5NTg1ZWIwNWViZDYwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgd2lkdGgoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQg
aGVpZ2h0KCk7CiAgICAgCi0gICAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxET01XaW5k
b3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+PiBuYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxX
aW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IG5h
bWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBz
dXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3Q7CiAKICAgICBFbGVtZW50KiBkb2N1bWVudE5h
bWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBuYW1lKSBjb25zdCB7IHJldHVybiBtX2Rv
Y3VtZW50TmFtZWRJdGVtLmdldEVsZW1lbnRCeURvY3VtZW50TmFtZWRJdGVtKG5hbWUsICp0aGlz
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsCmluZGV4IDEyN2YyNjQ1ZTAzMjJk
Yzc5ODgxMjgwNGZmNWQ3OTVkYWM4YTU4MGYuLmE5OTliMDNmNjIyOGIyNWViZDFiN2I5NDM4NmI5
OWUzOTViODVmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwKQEAgLTIzLDUg
KzIzLDUgQEAKICAgICBOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMsCiAgICAgT3Zl
cnJpZGVCdWlsdGlucywKIF0gaW50ZXJmYWNlIEhUTUxEb2N1bWVudCA6IERvY3VtZW50IHsgICAg
Ci0gICAgZ2V0dGVyIChET01XaW5kb3cgb3IgRWxlbWVudCBvciBIVE1MQ29sbGVjdGlvbikgKERP
TVN0cmluZyBuYW1lKTsKKyAgICBnZXR0ZXIgKFdpbmRvd1Byb3h5IG9yIEVsZW1lbnQgb3IgSFRN
TENvbGxlY3Rpb24pIChET01TdHJpbmcgbmFtZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudC5pZGwKaW5kZXggY2Q2M2EyMTJhZDQzMzE0YzViZTIzMDRkZGU3MDA5N2M3
YmY4ODM1My4uZWQ3YzBiNmUyNzcyOTliNjVjYTIxOGYyMWUxODI2MWU1MTNkZmMwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCkBAIC0yNiw3ICsyNiw3IEBAIGlu
dGVyZmFjZSBIVE1MRnJhbWVFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAgIFtSZWZsZWN0LCBV
UkxdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgbG9uZ0Rlc2M7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0
ZSBib29sZWFuIG5vUmVzaXplOwogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9ubHkg
YXR0cmlidXRlIERvY3VtZW50IGNvbnRlbnREb2N1bWVudDsKLSAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NV2luZG93IGNvbnRlbnRXaW5kb3c7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRv
d1Byb3h5IGNvbnRlbnRXaW5kb3c7CiAKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51
bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1hcmdpbkhlaWdodDsKICAgICBbUmVmbGVjdF0g
YXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1hcmdpbldpZHRo
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCmluZGV4
IDU4ODczOTg0N2NiYjA4YzM3MTdjMTNiZWJkM2FhOTFkOTliYjRjYzUuLmI5YmVmMTc2M2UyNjFk
N2M5ODJlMWYwNTU1MDljMTY5ZGY4NDA2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZU93bmVyRWxlbWVudC5jcHAKQEAgLTk5LDkgKzk5LDkgQEAgRG9jdW1lbnQqIEhUTUxG
cmFtZU93bmVyRWxlbWVudDo6Y29udGVudERvY3VtZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9j
b250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CiB9CiAK
LURPTVdpbmRvdyogSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50V2luZG93KCkgY29uc3QK
K1dpbmRvd1Byb3h5KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRXaW5kb3coKSBjb25z
dAogewotICAgIHJldHVybiBtX2NvbnRlbnRGcmFtZSA/IG1fY29udGVudEZyYW1lLT5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8g
Jm1fY29udGVudEZyYW1lLT53aW5kb3dQcm94eSgpIDogbnVsbHB0cjsKIH0KIAogdm9pZCBIVE1M
RnJhbWVPd25lckVsZW1lbnQ6OnNldFNhbmRib3hGbGFncyhTYW5kYm94RmxhZ3MgZmxhZ3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAppbmRleCA4NjVlZGRi
OTFmNTdlMzQ1YjRiNjg3Zjc2MGU4MzMyNTQyNWM0ZmMxLi44MGYxODIwMGRmMGQ0YTc0ZDdmMGUz
ZGJjYTE1MjQ1NjAyMjRhYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkhUTUxG
cmFtZU93bmVyRWxlbWVudCgpOwogCiAgICAgRnJhbWUqIGNvbnRlbnRGcmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGVudEZyYW1lOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgRE9NV2luZG93KiBj
b250ZW50V2luZG93KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgV2luZG93UHJveHkqIGNv
bnRlbnRXaW5kb3coKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudCogY29udGVu
dERvY3VtZW50KCkgY29uc3Q7CiAKICAgICB2b2lkIHNldENvbnRlbnRGcmFtZShGcmFtZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKaW5kZXggMjg1NjQy
NDk1MGEzNDljOWI3Mjk1MDNjNWY0ZjEyMWE4ZWM0YjJiNy4uNWQyMzdkNDgyNmM3MmY4ODdiN2Ri
MmZiNTFkNmU5Nzg2NTY3OWE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNl
dEVsZW1lbnQuY3BwCkBAIC0yMzEsMTUgKzIzMSwxMyBAQCB2b2lkIEhUTUxGcmFtZVNldEVsZW1l
bnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5l
cgogICAgIH0KIH0KIAotRE9NV2luZG93KiBIVE1MRnJhbWVTZXRFbGVtZW50OjpuYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorV2luZG93UHJveHkqIEhUTUxGcmFtZVNldEVsZW1l
bnQ6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7CiAgICAgYXV0byBmcmFt
ZUVsZW1lbnQgPSBtYWtlUmVmUHRyKGNoaWxkcmVuKCktPm5hbWVkSXRlbShuYW1lKSk7CiAgICAg
aWYgKCFpczxIVE1MRnJhbWVFbGVtZW50PihmcmFtZUVsZW1lbnQpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGlmIChhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihkb3duY2FzdDxI
VE1MRnJhbWVFbGVtZW50PihmcmFtZUVsZW1lbnQuZ2V0KCkpLT5jb250ZW50RG9jdW1lbnQoKSkp
Ci0gICAgICAgIHJldHVybiBkb2N1bWVudC0+ZG9tV2luZG93KCk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxGcmFtZUVsZW1lbnQ+KCpmcmFtZUVsZW1lbnQp
LmNvbnRlbnRXaW5kb3coKTsKIH0KIAogVmVjdG9yPEF0b21pY1N0cmluZz4gSFRNTEZyYW1lU2V0
RWxlbWVudDo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCmluZGV4IGQxZjM3OWI3MzVjYjc3ZjVlNWFkMmRlYzRl
YmYxNDQwYzdlZWEzMzIuLmMzYzY4YjU3YmY5NzdlN2FjZWE5MmZmM2FlYzA5NjQ5NmY3MTIyYjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCkBAIC00OCw3ICs0
OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEhUTUxGcmFtZVNldEVsZW1lbnQ+IGZp
bmRDb250YWluaW5nKEVsZW1lbnQqIGRlc2NlbmRhbnQpOwogICAgIAogICAgIFZlY3RvcjxBdG9t
aWNTdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdDsKLSAgICBET01XaW5kb3cq
IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBXaW5kb3dQcm94eSogbmFtZWRJ
dGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiBwcml2YXRlOgogICAgIEhUTUxGcmFtZVNldEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbAppbmRleCAzMjUwYjk0OTBlZGI4YmIxOGY0N2I5
ODJjYmI3ZjZiNDQwOGQzMTI1Li42OTQyMTczZTc0NDA5MjQ5YzIwNWIwYjNjNTI2MjllMmFjYzQ2
OTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwKQEAg
LTMzLDcgKzMzLDcgQEAgaW50ZXJmYWNlIEhUTUxGcmFtZVNldEVsZW1lbnQgOiBIVE1MRWxlbWVu
dCB7CiAKICAgICAvLyBOb24tc3RhbmRhcmQgbmFtZWQgZ2V0dGVyCiAgICAgLy8gRklYTUU6IFRo
aXMgaXMgbm90IGluIHRoZSBzdGFuZGFyZCwgY2FuIHdlIHJlbW92ZSB0aGlzPwotICAgIGdldHRl
ciBET01XaW5kb3cgKERPTVN0cmluZyBuYW1lKTsKKyAgICBnZXR0ZXIgV2luZG93UHJveHkgKERP
TVN0cmluZyBuYW1lKTsKIH07CiAKIEhUTUxGcmFtZVNldEVsZW1lbnQgaW1wbGVtZW50cyBXaW5k
b3dFdmVudEhhbmRsZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZy
YW1lRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50Lmlk
bAppbmRleCAzZTNiZGNjMTEwNDE4OGE3OGRkYmE4ZTI3NjQzNGU0ZTY2ZTY5MGJjLi5jMTYzOTIy
ZWU0MjBlNzVjMDRkZDEyODE5NGI1MzVmMzgzYzk1ZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJRnJhbWVFbGVtZW50LmlkbApAQCAtMzgsNyArMzgsNyBAQCBpbnRlcmZhY2UgSFRNTElG
cmFtZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAKICAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBEb2N1bWVudCBjb250ZW50RG9jdW1lbnQ7CiAKLSAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NV2luZG93IGNvbnRlbnRXaW5kb3c7CisgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFdpbmRvd1Byb3h5IGNvbnRlbnRXaW5kb3c7CiAKICAgICBbQ2hlY2tTZWN1cml0eUZv
ck5vZGUsIE1heVRocm93RXhjZXB0aW9uXSBEb2N1bWVudCBnZXRTVkdEb2N1bWVudCgpOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IGQxNTEyNzNhMzU5NDkzZTFi
NmM1MzhmMGYzZDkzMTY4ODAzNjRhMTcuLjg1YzEzZmY3ZjAyMGFhOWFjMmM2ZTRkZjE3MjQ2ZDQ0
MTE5YzVhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGIwMjNhNGUy
ZWYyODQzMDM3YmU1ZDA4YmYyYTRmZTM4MzFkNWZkOGYuLjNlMmE5MTY2ZjJjODAxYWU1NTY2M2Jj
Y2IxYjQ5MGFlMDlmYWYxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE0OCw3
ICsxNDgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBjbGFzcyBQb3N0TWVzc2Fn
ZVRpbWVyIDogcHVibGljIFRpbWVyQmFzZSB7CiBwdWJsaWM6Ci0gICAgUG9zdE1lc3NhZ2VUaW1l
cihET01XaW5kb3cmIHdpbmRvdywgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgRE9NV2luZG93JiBzb3VyY2UsIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4mJiB0YXJnZXRPcmlnaW4sIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3Rh
Y2tUcmFjZSkKKyAgICBQb3N0TWVzc2FnZVRpbWVyKERPTVdpbmRvdyYgd2luZG93LCBNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgc291cmNlLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgdGFy
Z2V0T3JpZ2luLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIHN0YWNrVHJhY2UpCiAgICAgICAg
IDogbV93aW5kb3cod2luZG93KQogICAgICAgICAsIG1fbWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2Up
KQogICAgICAgICAsIG1fb3JpZ2luKHNvdXJjZU9yaWdpbikKQEAgLTE2MSw3ICsxNjEsNyBAQCBw
dWJsaWM6CiAKICAgICBSZWY8TWVzc2FnZUV2ZW50PiBldmVudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKGNvbnRleHQsIFdURk1vdmUobV9tZXNzYWdlLnRy
YW5zZmVycmVkUG9ydHMpKSwgbV9tZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgbV9v
cmlnaW4sIHsgfSwgTWVzc2FnZUV2ZW50U291cmNlKFJlZlB0cjxET01XaW5kb3c+KFdURk1vdmUo
bV9zb3VyY2UpKSkpOworICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoTWVzc2Fn
ZVBvcnQ6OmVudGFuZ2xlUG9ydHMoY29udGV4dCwgV1RGTW92ZShtX21lc3NhZ2UudHJhbnNmZXJy
ZWRQb3J0cykpLCBtX21lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBtX29yaWdpbiwg
eyB9LCBtX3NvdXJjZSA/IHN0ZDo6bWFrZV9vcHRpb25hbChNZXNzYWdlRXZlbnRTb3VyY2UoV1RG
TW92ZShtX3NvdXJjZSkpKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgU2VjdXJpdHlP
cmlnaW4qIHRhcmdldE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0T3JpZ2luLmdldCgp
OyB9CkBAIC0xODAsNyArMTgwLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8RE9NV2luZG93PiBtX3dp
bmRvdzsKICAgICBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtX21lc3NhZ2U7CiAgICAgU3RyaW5n
IG1fb3JpZ2luOwotICAgIFJlZjxET01XaW5kb3c+IG1fc291cmNlOworICAgIFJlZlB0cjxXaW5k
b3dQcm94eT4gbV9zb3VyY2U7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX3RhcmdldE9y
aWdpbjsKICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBtX3N0YWNrVHJhY2U7CiAgICAgUmVm
UHRyPFVzZXJHZXN0dXJlVG9rZW4+IG1fdXNlckdlc3R1cmVUb0ZvcndhcmQ7CkBAIC05NjAsNyAr
OTYwLDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9NV2luZG93Ojpwb3N0TWVzc2FnZShKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIERPTVdpbmRvdyYgaW5jdW0KICAgICBNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyBtZXNzYWdlIHsgbWVzc2FnZURhdGEucmVsZWFzZVJldHVyblZhbHVlKCksIGRpc2VudGFu
Z2xlZFBvcnRzLnJlbGVhc2VSZXR1cm5WYWx1ZSgpIH07CiAKICAgICAvLyBTY2hlZHVsZSB0aGUg
bWVzc2FnZS4KLSAgICBhdXRvKiB0aW1lciA9IG5ldyBQb3N0TWVzc2FnZVRpbWVyKCp0aGlzLCBX
VEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4sIGluY3VtYmVudFdpbmRvdywgV1RGTW92ZSh0
YXJnZXQpLCBXVEZNb3ZlKHN0YWNrVHJhY2UpKTsKKyAgICBSZWZQdHI8V2luZG93UHJveHk+IGlu
Y3VtYmVudFdpbmRvd1Byb3h5ID0gaW5jdW1iZW50V2luZG93LmZyYW1lKCkgPyAmaW5jdW1iZW50
V2luZG93LmZyYW1lKCktPndpbmRvd1Byb3h5KCkgOiBudWxscHRyOworICAgIGF1dG8qIHRpbWVy
ID0gbmV3IFBvc3RNZXNzYWdlVGltZXIoKnRoaXMsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9y
aWdpbiwgV1RGTW92ZShpbmN1bWJlbnRXaW5kb3dQcm94eSksIFdURk1vdmUodGFyZ2V0KSwgV1RG
TW92ZShzdGFja1RyYWNlKSk7CiAgICAgdGltZXItPnN0YXJ0T25lU2hvdCgwX3MpOwogCiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQb3N0TWVzc2FnZSgqbV9mcmFtZSwgKnRpbWVy
LCBzdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDkxNzRh
ZmQ1MzIxNmMxMTJjNGI1ZTBkNTc1ODdjODZkMWZjOWM1YTEuLjM3ZjhmMDZiNGY2MzQxNWMzZTYz
ZjY3MmI1MTE0ZjU3NzM2ZjdhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwCkBAIC01MDgsNyArNTA4LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6ZGlzcGF0Y2hUZXh0
SW5wdXRFdmVudEZvcihGcmFtZSogaW5uZXJGcmFtZSwgY29uc3QgRHJhZ0RhdGEKICAgICBTdHJp
bmcgdGV4dCA9IG1fcGFnZS5kcmFnQ2FyZXRDb250cm9sbGVyKCkuaXNDb250ZW50UmljaGx5RWRp
dGFibGUoKSA/IGVtcHR5U3RyaW5nKCkgOiBkcmFnRGF0YS5hc1BsYWluVGV4dCgpOwogICAgIEVs
ZW1lbnQqIHRhcmdldCA9IGlubmVyRnJhbWUtPmVkaXRvcigpLmZpbmRFdmVudFRhcmdldEZyb20o
bV9wYWdlLmRyYWdDYXJldENvbnRyb2xsZXIoKS5jYXJldFBvc2l0aW9uKCkpOwogICAgIC8vIEZJ
WE1FOiBXaGF0IGd1YXJhbnRlZXMgdGFyZ2V0IGlzIG5vdCBudWxsPwotICAgIGF1dG8gZXZlbnQg
PSBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3AoaW5uZXJGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCksIHRleHQpOworICAgIGF1dG8gZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3Ao
JmlubmVyRnJhbWUtPndpbmRvd1Byb3h5KCksIHRleHQpOwogICAgIHRhcmdldC0+ZGlzcGF0Y2hF
dmVudChldmVudCk7CiAgICAgcmV0dXJuICFldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDg3ZDEyNzc0Y2M2ZjM0YWUwNzAx
MDBkMTllZWI3NjU2NWYyNTA3OWQuLjhiM2M2ZDFhZjhmODU0MWRhM2U1YTc0NDUwYmE4NWI0YzYz
NDNiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTIxOTgsNyArMjE5
OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYgZHJhCiAKICAgICB2aWV3LT5kaXNhYmxlTGF5ZXJG
bHVzaFRocm90dGxpbmdUZW1wb3JhcmlseUZvckludGVyYWN0aW9uKCk7CiAgICAgUmVmPE1vdXNl
RXZlbnQ+IG1lID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwKLSAgICAgICAgdHJ1ZSwg
dHJ1ZSwgZXZlbnQudGltZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCksIG1fZnJh
bWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwKKyAgICAgICAgdHJ1ZSwgdHJ1ZSwgZXZlbnQu
dGltZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCksICZtX2ZyYW1lLndpbmRvd1By
b3h5KCksCiAgICAgICAgIDAsIGV2ZW50Lmdsb2JhbFBvc2l0aW9uKCkueCgpLCBldmVudC5nbG9i
YWxQb3NpdGlvbigpLnkoKSwgZXZlbnQucG9zaXRpb24oKS54KCksIGV2ZW50LnBvc2l0aW9uKCku
eSgpLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIGV2ZW50Lm1vdmVtZW50RGVs
dGEoKS54KCksIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS55KCksCkBAIC0zMjQ4LDcgKzMyNDgsNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6aW50ZXJuYWxLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQmIGluaXRpYWxLZXlFdmVudAogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlE
b3duRXZlbnQgPSBpbml0aWFsS2V5RXZlbnQ7ICAgIAogICAgIGlmIChrZXlEb3duRXZlbnQudHlw
ZSgpICE9IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pCiAgICAgICAgIGtleURvd25FdmVudC5k
aXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93biwgYmFja3dh
cmRDb21wYXRpYmlsaXR5TW9kZSk7Ci0gICAgYXV0byBrZXlkb3duID0gS2V5Ym9hcmRFdmVudDo6
Y3JlYXRlKGtleURvd25FdmVudCwgbV9mcmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsK
KyAgICBhdXRvIGtleWRvd24gPSBLZXlib2FyZEV2ZW50OjpjcmVhdGUoa2V5RG93bkV2ZW50LCAm
bV9mcmFtZS53aW5kb3dQcm94eSgpKTsKICAgICBpZiAobWF0Y2hlZEFuQWNjZXNzS2V5KQogICAg
ICAgICBrZXlkb3duLT5wcmV2ZW50RGVmYXVsdCgpOwogICAgIGtleWRvd24tPnNldFRhcmdldChl
bGVtZW50KTsKQEAgLTMyNzEsNyArMzI3MSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjppbnRlcm5h
bEtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgaW5pdGlhbEtleUV2ZW50CiAg
ICAgCiAgICAgaWYgKGhhbmRsZWRCeUlucHV0TWV0aG9kKSB7CiAgICAgICAgIGtleURvd25FdmVu
dC5zZXRXaW5kb3dzVmlydHVhbEtleUNvZGUoQ29tcG9zaXRpb25FdmVudEtleUNvZGUpOwotICAg
ICAgICBrZXlkb3duID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGtleURvd25FdmVudCwgbV9mcmFt
ZS5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsKKyAgICAgICAga2V5ZG93biA9IEtleWJvYXJk
RXZlbnQ6OmNyZWF0ZShrZXlEb3duRXZlbnQsICZtX2ZyYW1lLndpbmRvd1Byb3h5KCkpOwogICAg
ICAgICBrZXlkb3duLT5zZXRUYXJnZXQoZWxlbWVudCk7CiAgICAgICAgIGtleWRvd24tPnNldERl
ZmF1bHRIYW5kbGVkKCk7CiAgICAgfQpAQCAtMzMwMSw3ICszMzAxLDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmludGVybmFsS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBpbml0
aWFsS2V5RXZlbnQKICAgICBrZXlQcmVzc0V2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQ
bGF0Zm9ybUV2ZW50OjpDaGFyLCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKTsKICAgICBpZiAo
a2V5UHJlc3NFdmVudC50ZXh0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4ga2V5ZG93blJl
c3VsdDsKLSAgICBhdXRvIGtleXByZXNzID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGtleVByZXNz
RXZlbnQsIG1fZnJhbWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CisgICAgYXV0byBrZXlw
cmVzcyA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShrZXlQcmVzc0V2ZW50LCAmbV9mcmFtZS53aW5k
b3dQcm94eSgpKTsKICAgICBrZXlwcmVzcy0+c2V0VGFyZ2V0KGVsZW1lbnQpOwogICAgIGlmIChr
ZXlkb3duUmVzdWx0KQogICAgICAgICBrZXlwcmVzcy0+cHJldmVudERlZmF1bHQoKTsKQEAgLTM4
MDIsNyArMzgwMiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVudChj
b25zdCBTdHJpbmcmIHRleHQsIEV2ZW50KiB1bmRlcmx5aW5nRXZlCiAgICAgaWYgKEZyYW1lVmll
dyogdmlldyA9IG1fZnJhbWUudmlldygpKQogICAgICAgICB2aWV3LT5kaXNhYmxlTGF5ZXJGbHVz
aFRocm90dGxpbmdUZW1wb3JhcmlseUZvckludGVyYWN0aW9uKCk7CiAKLSAgICBSZWY8VGV4dEV2
ZW50PiBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCksIHRleHQsIGlucHV0VHlwZSk7CisgICAgYXV0byBldmVudCA9IFRleHRFdmVudDo6Y3Jl
YXRlKCZtX2ZyYW1lLndpbmRvd1Byb3h5KCksIHRleHQsIGlucHV0VHlwZSk7CiAgICAgZXZlbnQt
PnNldFVuZGVybHlpbmdFdmVudCh1bmRlcmx5aW5nRXZlbnQpOwogCiAgICAgdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KGV2ZW50KTsKQEAgLTQyMTEsNyArNDIxMSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAKICAg
ICAgICAgICAgIFJlZjxUb3VjaEV2ZW50PiB0b3VjaEV2ZW50ID0KICAgICAgICAgICAgICAgICBU
b3VjaEV2ZW50OjpjcmVhdGUoZWZmZWN0aXZlVG91Y2hlcy5nZXQoKSwgdGFyZ2V0VG91Y2hlcy5n
ZXQoKSwgY2hhbmdlZFRvdWNoZXNbc3RhdGVdLm1fdG91Y2hlcy5nZXQoKSwKLSAgICAgICAgICAg
ICAgICAgICAgc3RhdGVOYW1lLCBkb3duY2FzdDxOb2RlPigqdGFyZ2V0KS5kb2N1bWVudCgpLmRl
ZmF1bHRWaWV3KCksCisgICAgICAgICAgICAgICAgICAgIHN0YXRlTmFtZSwgZG93bmNhc3Q8Tm9k
ZT4oKnRhcmdldCkuZG9jdW1lbnQoKS53aW5kb3dQcm94eSgpLAogICAgICAgICAgICAgICAgICAg
ICAwLCAwLCAwLCAwLCBldmVudC5jdHJsS2V5KCksIGV2ZW50LmFsdEtleSgpLCBldmVudC5zaGlm
dEtleSgpLCBldmVudC5tZXRhS2V5KCkpOwogICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2
ZW50KHRvdWNoRXZlbnQpOwogICAgICAgICAgICAgc3dhbGxvd2VkRXZlbnQgPSBzd2FsbG93ZWRF
dmVudCB8fCB0b3VjaEV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCkgfHwgdG91Y2hFdmVudC0+ZGVm
YXVsdEhhbmRsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3cuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdp
bmRvdy5jcHAKaW5kZXggN2IwOWM4MTg3YzQ2NDAwNjcwNmZjM2VjYTQ3N2I2OTcwMzY1YmEyMi4u
Njc3ZDY2YzEyNTQ0ODMxNDE3ZDRkODE0NDQ3ZjQwNWIxYjUzMDNkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TURPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdpbmRvdy5jcHAKQEAgLTY0LDYgKzY0LDIyIEBA
IFdlYktpdERPTURPTVdpbmRvdyoga2l0KFdlYkNvcmU6OkRPTVdpbmRvdyogb2JqKQogICAgIHJl
dHVybiB3cmFwRE9NV2luZG93KG9iaik7CiB9CiAKK1dlYktpdERPTURPTVdpbmRvdyoga2l0KFdl
YkNvcmU6OldpbmRvd1Byb3h5KiB3aW5kb3dQcm94eSkKK3sKKyAgICBpZiAoIXdpbmRvd1Byb3h5
IHx8ICFpczxXZWJDb3JlOjpET01XaW5kb3c+KHdpbmRvd1Byb3h5LT53aW5kb3coKSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGtpdChkb3duY2FzdDxXZWJDb3JlOjpE
T01XaW5kb3c+KHdpbmRvd1Byb3h5LT53aW5kb3coKSkpOworfQorCitXZWJDb3JlOjpXaW5kb3dQ
cm94eSogdG9XaW5kb3dQcm94eShXZWJLaXRET01ET01XaW5kb3cqIHZpZXcpCit7CisgICAgYXV0
byogd2luZG93ID0gY29yZSh2aWV3KTsKKyAgICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LT5mcmFt
ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJndpbmRvdy0+ZnJhbWUo
KS0+d2luZG93UHJveHkoKTsKK30KKwogV2ViQ29yZTo6RE9NV2luZG93KiBjb3JlKFdlYktpdERP
TURPTVdpbmRvdyogcmVxdWVzdCkKIHsKICAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0
PFdlYkNvcmU6OkRPTVdpbmRvdyo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2Jq
ZWN0KSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NV2luZG93UHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdp
bmRvd1ByaXZhdGUuaAppbmRleCBlMzFkMjI3NWI4YjgxY2FmODBlMjAxZTZkZDZiMWFlOTYyY2Nm
ZjkyLi42Njg0ZWM2Nzg4ZWRlZmIwZTg2ZDVkZDE1NDI2OGU2ZmQzNWY2MDY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NRE9NV2luZG93UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3dQcml2YXRlLmgKQEAg
LTIxLDEyICsyMSwxNSBAQAogI2RlZmluZSBXZWJLaXRET01ET01XaW5kb3dQcml2YXRlX2gKIAog
I2luY2x1ZGUgPFdlYkNvcmUvRE9NV2luZG93Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dQ
cm94eS5oPgogI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01ET01XaW5kb3cuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiBXZWJLaXRET01ET01XaW5kb3cqIHdyYXBET01XaW5kb3coV2ViQ29y
ZTo6RE9NV2luZG93Kik7CiBXZWJLaXRET01ET01XaW5kb3cqIGtpdChXZWJDb3JlOjpET01XaW5k
b3cqKTsKK1dlYktpdERPTURPTVdpbmRvdyoga2l0KFdlYkNvcmU6OldpbmRvd1Byb3h5Kik7CiBX
ZWJDb3JlOjpET01XaW5kb3cqIGNvcmUoV2ViS2l0RE9NRE9NV2luZG93Kik7CitXZWJDb3JlOjpX
aW5kb3dQcm94eSogdG9XaW5kb3dQcm94eShXZWJLaXRET01ET01XaW5kb3cqKTsKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLyogV2ViS2l0RE9NRE9NV2luZG93UHJpdmF0ZV9oICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50R3RrLmNwcApp
bmRleCA5NTA1NDFmMDliMjI3MDFhMTM5NTU4MWNkMWI0MzI5NzAzNDIxZWE0Li4xM2M5NmE1NzBl
ZDlkZGIyZTJkMTMyNzkzYzg0NzlmZTcxN2ViN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudEd0ay5jcHAKQEAgLTE0OTQsOCArMTQ5NCw3IEBAIFdl
YktpdERPTURPTVdpbmRvdyogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZGVmYXVsdF92aWV3KFdl
YktpdERPTURvY3VtZW50KiBzZWxmCiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfRE9DVU1FTlQo
c2VsZiksIDApOwogICAgIFdlYkNvcmU6OkRvY3VtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpET01XaW5kb3c+IGdvYmplY3RSZXN1bHQgPSBXVEY6
OmdldFB0cihpdGVtLT5kZWZhdWx0VmlldygpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29i
amVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0KGl0ZW0tPmRlZmF1bHRW
aWV3KCkpOwogfQogCiBXZWJLaXRET01TdHlsZVNoZWV0TGlzdCogd2Via2l0X2RvbV9kb2N1bWVu
dF9nZXRfc3R5bGVfc2hlZXRzKFdlYktpdERPTURvY3VtZW50KiBzZWxmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUhUTUxGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxGcmFtZUVsZW1lbnQuY3BwCmluZGV4
IGMxNWY2YTQ4NjRmNzgzZWMwNzM2YjRjYTM3OTZjNmRkNjZiMzc2MmEuLjViNjcxNTIzOGM2OTM5
YWE3Y2Q5MDc2YzI1Yjk5MjUxYzZkMTU1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRnJhbWVFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NSFRNTEZyYW1lRWxlbWVudC5jcHAKQEAgLTQ5Miw4ICs0OTIsNyBA
QCBXZWJLaXRET01ET01XaW5kb3cqIHdlYmtpdF9kb21faHRtbF9mcmFtZV9lbGVtZW50X2dldF9j
b250ZW50X3dpbmRvdyhXZWJLaXRET01IVAogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxf
RlJBTUVfRUxFTUVOVChzZWxmKSwgMCk7CiAgICAgV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudCog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RE9NV2luZG93
PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+Y29udGVudFdpbmRvdygpKTsKLSAg
ICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIFdl
YktpdDo6a2l0KGl0ZW0tPmNvbnRlbnRXaW5kb3coKSk7CiB9CiAKIGdsb25nIHdlYmtpdF9kb21f
aHRtbF9mcmFtZV9lbGVtZW50X2dldF93aWR0aChXZWJLaXRET01IVE1MRnJhbWVFbGVtZW50KiBz
ZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MSUZy
YW1lRWxlbWVudC5jcHAKaW5kZXggMjhiNTFjZTkwZTlmM2Y1MDQwZGIxNjE3NjZlNzYwNGJjZjRk
ZmY5NC4uM2U2NzRhZjJmMTUyMDcyMjA2ODIzODc5NWI4NWQ1NDdmMjI1MTZjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUhUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1lbnQu
Y3BwCkBAIC01MzgsOCArNTM4LDcgQEAgV2ViS2l0RE9NRE9NV2luZG93KiB3ZWJraXRfZG9tX2h0
bWxfaWZyYW1lX2VsZW1lbnRfZ2V0X2NvbnRlbnRfd2luZG93KFdlYktpdERPTUgKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19IVE1MX0lGUkFNRV9FTEVNRU5UKHNlbGYpLCAwKTsKICAgICBXZWJD
b3JlOjpIVE1MSUZyYW1lRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6RE9NV2luZG93PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRl
bS0+Y29udGVudFdpbmRvdygpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3Vs
dC5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0KGl0ZW0tPmNvbnRlbnRXaW5kb3coKSk7
CiB9CiAKIEdfR05VQ19FTkRfSUdOT1JFX0RFUFJFQ0FUSU9OUzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01L
ZXlib2FyZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01LZXlib2FyZEV2ZW50LmNwcAppbmRleCA0MWZjYzk3ODM0
M2Q0MjM4ZGM2YjUxYTcwNDM5OGFmNzNhYmM4MmQwLi43ZGEzMjYzZjBiZTMyYTUxNmIwYzljM2Fh
ZmYxODQ4MDMzNTEyMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NS2V5Ym9hcmRFdmVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUtleWJvYXJkRXZlbnQuY3BwCkBAIC0yMDIsOSArMjAyLDggQEAgdm9pZCB3ZWJraXRfZG9t
X2tleWJvYXJkX2V2ZW50X2luaXRfa2V5Ym9hcmRfZXZlbnQoV2ViS2l0RE9NS2V5Ym9hcmRFdmVu
dCogc2VsZiwKICAgICBnX3JldHVybl9pZl9mYWlsKGtleUlkZW50aWZpZXIpOwogICAgIFdlYkNv
cmU6OktleWJvYXJkRXZlbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpT
dHJpbmcgY29udmVydGVkVHlwZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh0eXBlKTsKLSAgICBX
ZWJDb3JlOjpET01XaW5kb3cqIGNvbnZlcnRlZFZpZXcgPSBXZWJLaXQ6OmNvcmUodmlldyk7CiAg
ICAgV1RGOjpTdHJpbmcgY29udmVydGVkS2V5SWRlbnRpZmllciA9IFdURjo6U3RyaW5nOjpmcm9t
VVRGOChrZXlJZGVudGlmaWVyKTsKLSAgICBpdGVtLT5pbml0S2V5Ym9hcmRFdmVudChjb252ZXJ0
ZWRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvbnZlcnRlZFZpZXcsIGNvbnZlcnRlZEtl
eUlkZW50aWZpZXIsIGxvY2F0aW9uLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5
LCBhbHRHcmFwaEtleSk7CisgICAgaXRlbS0+aW5pdEtleWJvYXJkRXZlbnQoY29udmVydGVkVHlw
ZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXZWJLaXQ6OnRvV2luZG93UHJveHkodmlldyksIGNv
bnZlcnRlZEtleUlkZW50aWZpZXIsIGxvY2F0aW9uLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBhbHRHcmFwaEtleSk7CiB9CiAKIGdjaGFyKiB3ZWJraXRfZG9tX2tleWJvYXJk
X2V2ZW50X2dldF9rZXlfaWRlbnRpZmllcihXZWJLaXRET01LZXlib2FyZEV2ZW50KiBzZWxmKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTU1vdXNlRXZlbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1vdXNlRXZlbnQuY3BwCmluZGV4
IDA1ODAwYTM1N2ZhYzY3NGRiOGMzZDMzNjVlMWNlNWM2OTY1YjY3MjguLjIxN2U1NjVhNGFiODYz
MWVlZDJmNTExNTExMTQ2ZDZhMjAxOGVjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Nb3VzZUV2ZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NTW91c2VFdmVudC5jcHAKQEAgLTMxOSw5ICszMTksOCBAQCB2b2lkIHdlYmtp
dF9kb21fbW91c2VfZXZlbnRfaW5pdF9tb3VzZV9ldmVudChXZWJLaXRET01Nb3VzZUV2ZW50KiBz
ZWxmLCBjb25zdCBnYwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19FVkVOVF9U
QVJHRVQocmVsYXRlZFRhcmdldCkpOwogICAgIFdlYkNvcmU6Ok1vdXNlRXZlbnQqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkVHlwZSA9IFdURjo6
U3RyaW5nOjpmcm9tVVRGOCh0eXBlKTsKLSAgICBXZWJDb3JlOjpET01XaW5kb3cqIGNvbnZlcnRl
ZFZpZXcgPSBXZWJLaXQ6OmNvcmUodmlldyk7CiAgICAgV2ViQ29yZTo6RXZlbnRUYXJnZXQqIGNv
bnZlcnRlZFJlbGF0ZWRUYXJnZXQgPSBXZWJLaXQ6OmNvcmUocmVsYXRlZFRhcmdldCk7Ci0gICAg
aXRlbS0+aW5pdE1vdXNlRXZlbnQoY29udmVydGVkVHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBjb252ZXJ0ZWRWaWV3LCBkZXRhaWwsIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVu
dFksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgY29udmVydGVk
UmVsYXRlZFRhcmdldCk7CisgICAgaXRlbS0+aW5pdE1vdXNlRXZlbnQoY29udmVydGVkVHlwZSwg
Y2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXZWJLaXQ6OnRvV2luZG93UHJveHkodmlldyksIGRldGFp
bCwgc2NyZWVuWCwgc2NyZWVuWSwgY2xpZW50WCwgY2xpZW50WSwgY3RybEtleSwgYWx0S2V5LCBz
aGlmdEtleSwgbWV0YUtleSwgYnV0dG9uLCBjb252ZXJ0ZWRSZWxhdGVkVGFyZ2V0KTsKIH0KIAog
Z2xvbmcgd2Via2l0X2RvbV9tb3VzZV9ldmVudF9nZXRfc2NyZWVuX3goV2ViS2l0RE9NTW91c2VF
dmVudCogc2VsZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01VSUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01VSUV2ZW50LmNw
cAppbmRleCA5YWUwMTIzOWE4MjZjZjhlZjJkNDA2MjBkNWM0Mzc0YjYwMjQ5ZGZjLi5hMGY2YTkw
MTA0ZDBlZWEzZGZmMzk5NTE3ZmM4OGI4NGIzOTE0YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVUlFdmVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTVVJRXZlbnQuY3BwCkBAIC0yMDQsOCArMjA0LDcgQEAgdm9pZCB3ZWJr
aXRfZG9tX3VpX2V2ZW50X2luaXRfdWlfZXZlbnQoV2ViS2l0RE9NVUlFdmVudCogc2VsZiwgY29u
c3QgZ2NoYXIqIHR5cGUKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfRE9NX1dJ
TkRPVyh2aWV3KSk7CiAgICAgV2ViQ29yZTo6VUlFdmVudCogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRUeXBlID0gV1RGOjpTdHJpbmc6OmZyb21V
VEY4KHR5cGUpOwotICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogY29udmVydGVkVmlldyA9IFdlYktp
dDo6Y29yZSh2aWV3KTsKLSAgICBpdGVtLT5pbml0VUlFdmVudChjb252ZXJ0ZWRUeXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIGNvbnZlcnRlZFZpZXcsIGRldGFpbCk7CisgICAgaXRlbS0+aW5p
dFVJRXZlbnQoY29udmVydGVkVHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXZWJLaXQ6OnRv
V2luZG93UHJveHkodmlldyksIGRldGFpbCk7CiB9CiAKIFdlYktpdERPTURPTVdpbmRvdyogd2Vi
a2l0X2RvbV91aV9ldmVudF9nZXRfdmlldyhXZWJLaXRET01VSUV2ZW50KiBzZWxmKQpAQCAtMjEz
LDggKzIxMiw3IEBAIFdlYktpdERPTURPTVdpbmRvdyogd2Via2l0X2RvbV91aV9ldmVudF9nZXRf
dmlldyhXZWJLaXRET01VSUV2ZW50KiBzZWxmKQogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1VJ
X0VWRU5UKHNlbGYpLCAwKTsKICAgICBXZWJDb3JlOjpVSUV2ZW50KiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpET01XaW5kb3c+IGdvYmplY3RSZXN1bHQg
PSBXVEY6OmdldFB0cihpdGVtLT52aWV3KCkpOwotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2Jq
ZWN0UmVzdWx0LmdldCgpKTsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQoaXRlbS0+dmlldygpKTsK
IH0KIAogZ2xvbmcgd2Via2l0X2RvbV91aV9ldmVudF9nZXRfZGV0YWlsKFdlYktpdERPTVVJRXZl
bnQqIHNlbGYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2hlZWxFdmVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2hlZWxFdmVu
dC5jcHAKaW5kZXggMGUxYmE2ZGE1NWMxYzQzZWVlNjRhZTlhMWVkNWFiNjQ0NGY5ZjRmOS4uZTc3
NGNkMTY3ZWNiMzQ5MTE0MTkwOGUzODlkZDUwYTI1NDQ2Y2VhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVdo
ZWVsRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01XaGVlbEV2ZW50LmNwcApAQCAtMTMxLDggKzEzMSw3IEBA
IHZvaWQgd2Via2l0X2RvbV93aGVlbF9ldmVudF9pbml0X3doZWVsX2V2ZW50KFdlYktpdERPTVdo
ZWVsRXZlbnQqIHNlbGYsIGdsb25nIHdoCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9N
X0lTX1dIRUVMX0VWRU5UKHNlbGYpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfRE9NX1dJTkRPVyh2aWV3KSk7CiAgICAgV2ViQ29yZTo6V2hlZWxFdmVudCogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKLSAgICBXZWJDb3JlOjpET01XaW5kb3cqIGNvbnZlcnRlZFZpZXcg
PSBXZWJLaXQ6OmNvcmUodmlldyk7Ci0gICAgaXRlbS0+aW5pdFdlYktpdFdoZWVsRXZlbnQod2hl
ZWxEZWx0YVgsIHdoZWVsRGVsdGFZLCBjb252ZXJ0ZWRWaWV3LCBzY3JlZW5YLCBzY3JlZW5ZLCBj
bGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KTsKKyAg
ICBpdGVtLT5pbml0V2ViS2l0V2hlZWxFdmVudCh3aGVlbERlbHRhWCwgd2hlZWxEZWx0YVksIFdl
YktpdDo6dG9XaW5kb3dQcm94eSh2aWV3KSwgc2NyZWVuWCwgc2NyZWVuWSwgY2xpZW50WCwgY2xp
ZW50WSwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSk7CiB9CiAKIGdsb25nIHdl
YmtpdF9kb21fd2hlZWxfZXZlbnRfZ2V0X3doZWVsX2RlbHRhX3goV2ViS2l0RE9NV2hlZWxFdmVu
dCogc2VsZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tCmluZGV4IDQ4MTY2NzY4ZjE0MTU4ZjAyMjAzZTJiMGI5MjVkMDcyY2Y1MzM4MDQu
LmZmOTQwMTY1ZTk0YTdjZmQxYWU0ZWFmYzNlYWMxMmE3N2MxMjNmYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTY4MCw3
ICsxNjgwLDcgQEAgdm9pZCBQREZQbHVnaW46OmNsaWNrZWRMaW5rKE5TVVJMICp1cmwpCiAKICAg
ICBSZWZQdHI8RXZlbnQ+IGNvcmVFdmVudDsKICAgICBpZiAobV9sYXN0TW91c2VFdmVudC50eXBl
KCkgIT0gV2ViRXZlbnQ6Ok5vVHlwZSkKLSAgICAgICAgY29yZUV2ZW50ID0gTW91c2VFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVs
dFZpZXcoKSwgcGxhdGZvcm0obV9sYXN0TW91c2VFdmVudCksIDAsIDApOworICAgICAgICBjb3Jl
RXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGZyYW1l
LT53aW5kb3dQcm94eSgpLCBwbGF0Zm9ybShtX2xhc3RNb3VzZUV2ZW50KSwgMCwgMCk7CiAKICAg
ICBmcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQoY29yZVVSTCwgZW1wdHlTdHJpbmcoKSwgY29y
ZUV2ZW50LmdldCgpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBN
YXliZVNlbmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxs
b3cpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCBlNDI0M2MwNzNkYTY0NjljNGI3NjY2ZmNiYTAzMWE5OGMyOWZjNDk1Li43MDRmNTJiMjIy
YzQ3NDcyNDNmMmVmY2RkY2NkMjgzMWI3OGEwYTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjcyOSw3ICsyNzI5LDcgQEAgdm9pZCBXZWJQ
YWdlOjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZh
bGlkLCBjb25zdCBXZWIKICAgICBpZiAoaXNLZXlib2FyZEV2ZW50VmFsaWQgJiYgZXZlbnQudHlw
ZSgpID09IFdlYkV2ZW50OjpLZXlEb3duKSB7CiAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dCBwbGF0Zm9ybUV2ZW50KHBsYXRmb3JtKGV2ZW50KSk7CiAgICAgICAgIHBsYXRmb3JtRXZlbnQu
ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pOwotICAg
ICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNldEluaXRpYWxGb2N1cyhmb3J3YXJkID8g
Rm9jdXNEaXJlY3Rpb25Gb3J3YXJkIDogRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCwgJktleWJvYXJk
RXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCBmcmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0Vmll
dygpKS5nZXQoKSk7CisgICAgICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0SW5pdGlh
bEZvY3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlvbkZvcndhcmQgOiBGb2N1c0RpcmVjdGlvbkJh
Y2t3YXJkLCAmS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKHBsYXRmb3JtRXZlbnQsIGZyYW1lLndpbmRv
d1Byb3h5KCkpLmdldCgpKTsKIAogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3Lm1tCmluZGV4IDFhNGMyOWIxYjBk
ZGFjODIyNTdiZDZmNGJhNmRjNDRmZjM5MTJlODkuLjE2OWU0YWU1ZmU3NzViOThkMjRjZDQ4MDZh
NWE5YzUwNzhlMTBlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01BYnN0cmFjdFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFi
c3RyYWN0Vmlldy5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dpbmRvd1Byb3h5Lmg+CiAK
ICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkZyYW1lKj4oX2ludGVybmFs
KQogCkBAIC0xMDAsMyArMTAxLDE5IEBAIERPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OkFi
c3RyYWN0RE9NV2luZG93KiB2YWx1ZSkKIAogICAgIHJldHVybiBraXQoZG93bmNhc3Q8V2ViQ29y
ZTo6RE9NV2luZG93Pih2YWx1ZSkpOwogfQorCitET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3Jl
OjpXaW5kb3dQcm94eSogd2luZG93UHJveHkpCit7CisgICAgaWYgKCF3aW5kb3dQcm94eSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBraXQod2luZG93UHJveHktPndpbmRvdygp
KTsKK30KKworV2ViQ29yZTo6V2luZG93UHJveHkqIHRvV2luZG93UHJveHkoRE9NQWJzdHJhY3RW
aWV3ICp2aWV3KQoreworICAgIGF1dG8qIHdpbmRvdyA9IGNvcmUodmlldyk7CisgICAgaWYgKCF3
aW5kb3cgfHwgIXdpbmRvdy0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1
cm4gJndpbmRvdy0+ZnJhbWUoKS0+d2luZG93UHJveHkoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmgKaW5kZXggYzRk
NzMyNWM3ZjI1YmI1Yjg2MTI3NDE2ZTNkOTBkMjgyMTRjMTE5Ny4uMzU5ZjA1ZWI0ZDRhNDNhYTUy
NDIzM2U0YmJmNjYyOGRiMzY4ODZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmgKQEAgLTI4LDExICsyOCwxNCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWJzdHJhY3RET01XaW5kb3c7CiBjbGFzcyBET01X
aW5kb3c7CitjbGFzcyBXaW5kb3dQcm94eTsKIH0KIAogV2ViQ29yZTo6RE9NV2luZG93KiBjb3Jl
KERPTUFic3RyYWN0VmlldyAqKTsKIERPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OkRPTVdp
bmRvdyopOwogRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6QWJzdHJhY3RET01XaW5kb3cq
KTsKK0RPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OldpbmRvd1Byb3h5Kik7CitXZWJDb3Jl
OjpXaW5kb3dQcm94eSogdG9XaW5kb3dQcm94eShET01BYnN0cmFjdFZpZXcgKik7CiAKIEBpbnRl
cmZhY2UgRE9NQWJzdHJhY3RWaWV3IChXZWJLaXRMZWdhY3lJbnRlcm5hbCkKIC0gKHZvaWQpX2Rp
c2Nvbm5lY3RGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01Eb2N1bWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5t
bQppbmRleCA2YzJmMzZkODI0YTk0YTY4MjNiZjJhODFjOWJlZDIyMzRlN2E2OGY0Li4zMGI4YzQ1
MzU0ODViNTYzMWUxYWViNjZlNDViMDVlNWYxYzE3Y2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCkBAIC0xNjIsNyArMTYyLDcgQEAgLSAodm9pZClzZXRE
b2N1bWVudFVSSTooTlNTdHJpbmcgKiluZXdEb2N1bWVudFVSSQogLSAoRE9NQWJzdHJhY3RWaWV3
ICopZGVmYXVsdFZpZXcKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5kZWZhdWx0VmlldygpKSk7Cisg
ICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT53aW5kb3dQcm94eSgpKSk7CiB9CiAKIC0g
KERPTVN0eWxlU2hlZXRMaXN0ICopc3R5bGVTaGVldHMKQEAgLTY4NCw3ICs2ODQsNyBAQCAtIChE
T01DU1NTdHlsZURlY2xhcmF0aW9uICopZ2V0Q29tcHV0ZWRTdHlsZTooRE9NRWxlbWVudCAqKWVs
ZW1lbnQgcHNldWRvRWxlbWVudAogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJhaXNlVHlwZUVycm9yRXhjZXB0aW9u
KCk7Ci0gICAgV2ViQ29yZTo6RE9NV2luZG93KiBkdiA9IElNUEwtPmRlZmF1bHRWaWV3KCk7Cisg
ICAgV2ViQ29yZTo6RE9NV2luZG93KiBkdiA9IElNUEwtPmRvbVdpbmRvdygpOwogICAgIGlmICgh
ZHYpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihkdi0+
Z2V0Q29tcHV0ZWRTdHlsZSgqY29yZShlbGVtZW50KSwgcHNldWRvRWxlbWVudCkpKTsKQEAgLTY5
OCw3ICs2OTgsNyBAQCAtIChET01DU1NSdWxlTGlzdCAqKWdldE1hdGNoZWRDU1NSdWxlczooRE9N
RWxlbWVudCAqKWVsZW1lbnQgcHNldWRvRWxlbWVudDooTlNTdAogLSAoRE9NQ1NTUnVsZUxpc3Qg
KilnZXRNYXRjaGVkQ1NTUnVsZXM6KERPTUVsZW1lbnQgKillbGVtZW50IHBzZXVkb0VsZW1lbnQ6
KE5TU3RyaW5nICopcHNldWRvRWxlbWVudCBhdXRob3JPbmx5OihCT09MKWF1dGhvck9ubHkKIHsK
ICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6
RE9NV2luZG93KiBkdiA9IElNUEwtPmRlZmF1bHRWaWV3KCk7CisgICAgV2ViQ29yZTo6RE9NV2lu
ZG93KiBkdiA9IElNUEwtPmRvbVdpbmRvdygpOwogICAgIGlmICghZHYpCiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihkdi0+Z2V0TWF0Y2hlZENTU1J1bGVz
KGNvcmUoZWxlbWVudCksIHBzZXVkb0VsZW1lbnQsIGF1dGhvck9ubHkpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01LZXlib2FyZEV2ZW50Lm1tCmluZGV4IGU5YWIxZmVm
ZTc0ZDk3MzRlYWMyODQxNmIwOWVmMjMxMGZjZmM3MWIuLmJhMmZiZTRlMTg5ZDYxMzZlZWQ3MzVl
ZmZmZTcxMjBiN2Y5Njk1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01LZXlib2FyZEV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01LZXlib2FyZEV2ZW50Lm1tCkBAIC0xMTAsMjUgKzExMCwyNSBAQCAtIChCT09MKWdldE1vZGlm
aWVyU3RhdGU6KE5TU3RyaW5nICopa2V5SWRlbnRpZmllckFyZwogLSAodm9pZClpbml0S2V5Ym9h
cmRFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2Vs
YWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKXZpZXcga2V5SWRl
bnRpZmllcjooTlNTdHJpbmcgKilpbktleUlkZW50aWZpZXIgbG9jYXRpb246KHVuc2lnbmVkKWlu
TG9jYXRpb24gY3RybEtleTooQk9PTClpbkN0cmxLZXkgYWx0S2V5OihCT09MKWluQWx0S2V5IHNo
aWZ0S2V5OihCT09MKWluU2hpZnRLZXkgbWV0YUtleTooQk9PTClpbk1ldGFLZXkgYWx0R3JhcGhL
ZXk6KEJPT0wpaW5BbHRHcmFwaEtleQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUs
IGNhbmNlbGFibGUsIGNvcmUodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5Mb2NhdGlvbiwgaW5D
dHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkFsdEdyYXBoS2V5KTsK
KyAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUs
IHRvV2luZG93UHJveHkodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5Mb2NhdGlvbiwgaW5DdHJs
S2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkFsdEdyYXBoS2V5KTsKIH0K
IAogLSAodm9pZClpbml0S2V5Ym9hcmRFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZToo
Qk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3Ry
YWN0VmlldyAqKXZpZXcga2V5SWRlbnRpZmllcjooTlNTdHJpbmcgKilpbktleUlkZW50aWZpZXIg
bG9jYXRpb246KHVuc2lnbmVkKWluTG9jYXRpb24gY3RybEtleTooQk9PTClpbkN0cmxLZXkgYWx0
S2V5OihCT09MKWluQWx0S2V5IHNoaWZ0S2V5OihCT09MKWluU2hpZnRLZXkgbWV0YUtleTooQk9P
TClpbk1ldGFLZXkKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
Ci0gICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBjb3JlKHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluTG9jYXRpb24sIGluQ3RybEtleSwgaW5B
bHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSk7CisgICAgSU1QTC0+aW5pdEtleWJvYXJkRXZl
bnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBpbktl
eUlkZW50aWZpZXIsIGluTG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXks
IGluTWV0YUtleSk7CiB9CiAKIC0gKHZvaWQpaW5pdEtleWJvYXJkRXZlbnQ6KE5TU3RyaW5nICop
dHlwZSBjYW5CdWJibGU6KEJPT0wpY2FuQnViYmxlIGNhbmNlbGFibGU6KEJPT0wpY2FuY2VsYWJs
ZSB2aWV3OihET01BYnN0cmFjdFZpZXcgKil2aWV3IGtleUlkZW50aWZpZXI6KE5TU3RyaW5nICop
aW5LZXlJZGVudGlmaWVyIGtleUxvY2F0aW9uOih1bnNpZ25lZClpbktleUxvY2F0aW9uIGN0cmxL
ZXk6KEJPT0wpaW5DdHJsS2V5IGFsdEtleTooQk9PTClpbkFsdEtleSBzaGlmdEtleTooQk9PTClp
blNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wpaW5NZXRhS2V5IGFsdEdyYXBoS2V5OihCT09MKWluQWx0
R3JhcGhLZXkKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0g
ICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBj
b3JlKHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluS2V5TG9jYXRpb24sIGluQ3RybEtleSwgaW5B
bHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwgaW5BbHRHcmFwaEtleSk7CisgICAgSU1QTC0+
aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRvd1By
b3h5KHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluS2V5TG9jYXRpb24sIGluQ3RybEtleSwgaW5B
bHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwgaW5BbHRHcmFwaEtleSk7CiB9CiAKIC0gKHZv
aWQpaW5pdEtleWJvYXJkRXZlbnQ6KE5TU3RyaW5nICopdHlwZSBjYW5CdWJibGU6KEJPT0wpY2Fu
QnViYmxlIGNhbmNlbGFibGU6KEJPT0wpY2FuY2VsYWJsZSB2aWV3OihET01BYnN0cmFjdFZpZXcg
Kil2aWV3IGtleUlkZW50aWZpZXI6KE5TU3RyaW5nICopaW5LZXlJZGVudGlmaWVyIGtleUxvY2F0
aW9uOih1bnNpZ25lZClpbktleUxvY2F0aW9uIGN0cmxLZXk6KEJPT0wpaW5DdHJsS2V5IGFsdEtl
eTooQk9PTClpbkFsdEtleSBzaGlmdEtleTooQk9PTClpblNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wp
aW5NZXRhS2V5CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwg
Y29yZSh2aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBpbktleUxvY2F0aW9uLCBpbkN0cmxLZXksIGlu
QWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXkpOworICAgIElNUEwtPmluaXRLZXlib2FyZEV2
ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2aWV3KSwgaW5L
ZXlJZGVudGlmaWVyLCBpbktleUxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0
S2V5LCBpbk1ldGFLZXkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NTW91c2VFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01Nb3VzZUV2ZW50Lm1tCmluZGV4IDdjN2UwZGRmZjE0MjE2MWVlNDhlNjc3NzAyNWU3Zjcw
ZTg1M2E4MTMuLmU1MTVkODkzNWMxNzdkNDcxMDk0YTg0YzVjZmI4ZDY0ZGIyOTQzODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tCkBAIC0xNDUsNyAr
MTQ1LDcgQEAgLSAodm9pZClpbml0TW91c2VFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJs
ZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk8KICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CiAgICAgRE9NTm9kZSogaW5SZWxhdGVkVGFyZ2V0T2JqQyA9IGlu
UmVsYXRlZFRhcmdldDsKICAgICBXZWJDb3JlOjpOb2RlKiBpblJlbGF0ZWRUYXJnZXROb2RlID0g
Y29yZShpblJlbGF0ZWRUYXJnZXRPYmpDKTsKLSAgICBJTVBMLT5pbml0TW91c2VFdmVudCh0eXBl
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUodmlldyksIGRldGFpbCwgaW5TY3JlZW5YLCBp
blNjcmVlblksIGluQ2xpZW50WCwgaW5DbGllbnRZLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNo
aWZ0S2V5LCBpbk1ldGFLZXksIGluQnV0dG9uLCBpblJlbGF0ZWRUYXJnZXROb2RlKTsKKyAgICBJ
TVBMLT5pbml0TW91c2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRvV2luZG93
UHJveHkodmlldyksIGRldGFpbCwgaW5TY3JlZW5YLCBpblNjcmVlblksIGluQ2xpZW50WCwgaW5D
bGllbnRZLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXksIGluQnV0
dG9uLCBpblJlbGF0ZWRUYXJnZXROb2RlKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0KaW5kZXggMjg2N2JjODAyMzkxNmE3ZTY3ODBmYTNl
YjcxMjBjOWM5MWFkMmE0Mi4uZGZhNzYyMDI0YjU2NjIyY2U1YjI5OTFkZjMxMmRmZDUzODcwZDBl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tCkBAIC01
MCw3ICs1MCw3IEBAIC0gKE5TU3RyaW5nICopZGF0YQogLSAodm9pZClpbml0VGV4dEV2ZW50OihO
U1N0cmluZyAqKXR5cGVBcmcgY2FuQnViYmxlQXJnOihCT09MKWNhbkJ1YmJsZUFyZyBjYW5jZWxh
YmxlQXJnOihCT09MKWNhbmNlbGFibGVBcmcgdmlld0FyZzooRE9NQWJzdHJhY3RWaWV3ICopdmll
d0FyZyBkYXRhQXJnOihOU1N0cmluZyAqKWRhdGFBcmcKIHsKICAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+aW5pdFRleHRFdmVudCh0eXBlQXJnLCBj
YW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsIGNvcmUodmlld0FyZyksIGRhdGFBcmcpOworICAg
IElNUEwtPmluaXRUZXh0RXZlbnQodHlwZUFyZywgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJn
LCB0b1dpbmRvd1Byb3h5KHZpZXdBcmcpLCBkYXRhQXJnKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJRXZlbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbQppbmRleCBhNDY0ZGFjZmJmNTEyNjZiYTky
ZTU5NzcxOTI5ZDg2MzFmMmYxNjQwLi4zZGM5N2IzOTM3ODQ3ZDBhY2IwZTBjZDJlYTk5YzkxZmQx
MjZmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbQpAQCAt
MTAzLDcgKzEwMyw3IEBAIC0gKGludCl3aGljaAogLSAodm9pZClpbml0VUlFdmVudDooTlNTdHJp
bmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5j
ZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKWluVmlldyBkZXRhaWw6KGludClpbkRldGFp
bAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBM
LT5pbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUoaW5WaWV3KSwg
aW5EZXRhaWwpOworICAgIElNUEwtPmluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2Vs
YWJsZSwgdG9XaW5kb3dQcm94eShpblZpZXcpLCBpbkRldGFpbCk7CiB9CiAKIEBlbmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01XaGVlbEV2ZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQubW0KaW5kZXggOGYwNTY5Y2E2
YTNmOTU4Yzc0MWY2ZDg4MzU4ZmZmZDE2MGIxOGFjOC4uZGQ0YTU3YjBmMzJiNzdiNDMwYjZkZDlj
ZDViMTUyMzRlNWE0MzRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTVdoZWVsRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdo
ZWVsRXZlbnQubW0KQEAgLTk2LDcgKzk2LDcgQEAgLSAoQk9PTClpc0hvcml6b250YWwKIC0gKHZv
aWQpaW5pdFdoZWVsRXZlbnQ6KGludClpbldoZWVsRGVsdGFYIHdoZWVsRGVsdGFZOihpbnQpaW5X
aGVlbERlbHRhWSB2aWV3OihET01BYnN0cmFjdFZpZXcgKil2aWV3IHNjcmVlblg6KGludClzY3Jl
ZW5YIHNjcmVlblk6KGludClzY3JlZW5ZIGNsaWVudFg6KGludCljbGllbnRYIGNsaWVudFk6KGlu
dCljbGllbnRZIGN0cmxLZXk6KEJPT0wpY3RybEtleSBhbHRLZXk6KEJPT0wpYWx0S2V5IHNoaWZ0
S2V5OihCT09MKXNoaWZ0S2V5IG1ldGFLZXk6KEJPT0wpbWV0YUtleQogewogICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0V2ViS2l0V2hlZWxF
dmVudChpbldoZWVsRGVsdGFYLCBpbldoZWVsRGVsdGFZLCBjb3JlKHZpZXcpLCBzY3JlZW5YLCBz
Y3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRh
S2V5KTsKKyAgICBJTVBMLT5pbml0V2ViS2l0V2hlZWxFdmVudChpbldoZWVsRGVsdGFYLCBpbldo
ZWVsRGVsdGFZLCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRY
LCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KTsKIH0KIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5k
ZXggMmI3YjllMzc5YzFiODg4ZTFjM2UxMjRjNWRiM2YyZDczMGI3NmVlNy4uODMzZTVhOTU5ODFl
MzYzZTViMmU4NTZjNzAyNmU3MTJjNGNhN2IzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC00NTMzLDEwICs0NTMzLDEwIEBAIHN0YXRp
YyBSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVG
cmFtZSkKICAgICBjYXNlIE5TRXZlbnRUeXBlS2V5RG93bjogewogICAgICAgICBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQgcGxhdGZvcm1FdmVudCA9IFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQoZXZlbnQpOwogICAgICAgICBwbGF0Zm9ybUV2ZW50LmRpc2Ft
YmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKLSAgICAgICAg
cmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCBjb3JlRnJhbWUtPmRv
Y3VtZW50KCktPmRlZmF1bHRWaWV3KCkpOworICAgICAgICByZXR1cm4gS2V5Ym9hcmRFdmVudDo6
Y3JlYXRlKHBsYXRmb3JtRXZlbnQsICZjb3JlRnJhbWUtPndpbmRvd1Byb3h5KCkpOwogICAgIH0K
ICAgICBjYXNlIE5TRXZlbnRUeXBlS2V5VXA6Ci0gICAgICAgIHJldHVybiBLZXlib2FyZEV2ZW50
OjpjcmVhdGUoUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVu
dChldmVudCksIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CisgICAgICAg
IHJldHVybiBLZXlib2FyZEV2ZW50OjpjcmVhdGUoUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0
ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudChldmVudCksIGNvcmVGcmFtZS0+d2luZG93UHJveHkoKSk7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtNDU0Nyw3
ICs0NTQ3LDcgQEAgc3RhdGljIFJlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRF
dmVudChGcmFtZSogY29yZUZyYW1lKQogICAgIFdlYkV2ZW50VHlwZSB0eXBlID0gZXZlbnQudHlw
ZTsKICAgICBpZiAodHlwZSA9PSBXZWJFdmVudEtleURvd24gfHwgdHlwZSA9PSBXZWJFdmVudEtl
eVVwKSB7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQo
KTsKLSAgICAgICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShQbGF0Zm9ybUV2ZW50RmFj
dG9yeTo6Y3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50KGV2ZW50KSwgZG9jdW1lbnQgPyBkb2N1
bWVudC0+ZGVmYXVsdFZpZXcoKSA6IDApOworICAgICAgICByZXR1cm4gS2V5Ym9hcmRFdmVudDo6
Y3JlYXRlKFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
ZXZlbnQpLCBkb2N1bWVudCA/IGRvY3VtZW50LT53aW5kb3dQcm94eSgpIDogMCk7CiAgICAgfQog
ICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01D
b3JlQ2xhc3Nlcy5jcHAKaW5kZXggMWI0M2RkOWY0Y2ExMzViMmQxYzRkNGM0NjlmODY4NTU1YzQ3
ZTk2Ni4uYjI1MjYxZjdkZmNlMWI3Y2Y0NzFhOWQxZjIzY2IwODdiMjU3N2EwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2VzLmNwcApAQCAtODAyLDcgKzgwMiw3IEBA
IEhSRVNVTFQgRE9NRG9jdW1lbnQ6OmdldENvbXB1dGVkU3R5bGUoX0luX29wdF8gSURPTUVsZW1l
bnQqIGVsdCwgX0luXyBCU1RSIHBzZXVkCiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1
cm4gRV9GQUlMOwogCi0gICAgV2ViQ29yZTo6RE9NV2luZG93KiBkdiA9IG1fZG9jdW1lbnQtPmRl
ZmF1bHRWaWV3KCk7CisgICAgYXV0byogZHYgPSBtX2RvY3VtZW50LT5kb21XaW5kb3coKTsKICAg
ICBTdHJpbmcgcHNldWRvRWx0U3RyaW5nKHBzZXVkb0VsdCk7CiAgICAgCiAgICAgaWYgKCFkdikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338976</attachid>
            <date>2018-04-26 22:57:00 -0700</date>
            <delta_ts>2018-04-27 08:46:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185022-20180426225659.patch</filename>
            <type>text/plain</type>
            <size>152307</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNmYmU3ZTk5YzEwNmQx
NzM1Nzc3MGZmMTQxMzkwZjdlODNmNmU2My4uN2E5MTUyMTZjNTM4N2EyY2MwNGNiODJkMmZmNTFm
NDY2NWFmMmY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAxOC0wNC0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94eSBp
bnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHVzaW5nIERPTVdpbmRvdyBpbiBhbGwgb2Ygb3Vy
IElETCBmaWxlcyBhbmQgdXNlIFdpbmRvd1Byb3h5IGFzCisgICAgICAgIHBlciB0aGVpciByZXNw
ZWN0aXZlIHNwZWNpZmljYXRpb25zLiBBcyBhIHJlc3VsdCwgdGhlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGFzIGFsc28gdXBkYXRlZCB0byB1c2UgV2luZG93UHJveHkgdHlwZSBpbnN0ZWFkIG9m
IERPTVdpbmRvdy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXaW5kb3dQcm94eTo6d2luZG93UHJveHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9XaW5kb3dQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eTo6
Z2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2luZG93UHJveHk6OmZyYW1lIGNvbnN0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChJc0J1aWx0aW5UeXBlKToK
KyAgICAgICAgKENvbXB1dGVJc0NhbGxiYWNrSW50ZXJmYWNlKToKKyAgICAgICAgKENvbXB1dGVJ
c0NhbGxiYWNrRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtOgorICAgICAgICAoQWRkVG9JbmNsdWRlc0ZvcklETFR5cGUpOgorICAgICAgICAo
R2V0QmFzZUlETFR5cGUpOgorICAgICAgICAoTmF0aXZlVG9KU1ZhbHVlRE9NQ29udmVydE5lZWRz
U3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kOUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kT3ZlcmxvYWREaXNwYXRjaGVyKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisgICAgICAgICogZG9tL0NvbXBvc2l0aW9uRXZl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRpb25FdmVudDo6Q29tcG9zaXRpb25F
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlvbkV2ZW50Ojppbml0Q29tcG9zaXRp
b25FdmVudCk6CisgICAgICAgICogZG9tL0NvbXBvc2l0aW9uRXZlbnQuaDoKKyAgICAgICAgKiBk
b20vQ29tcG9zaXRpb25FdmVudC5pZGw6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkZWZhdWx0VmlldyBjb25zdCk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBk
b20vRG9jdW1lbnRUb3VjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRvdWNoOjpj
cmVhdGVUb3VjaCk6CisgICAgICAgICogZG9tL0RvY3VtZW50VG91Y2guaDoKKyAgICAgICAgKiBk
b20vRG9jdW1lbnRUb3VjaC5pZGw6CisgICAgICAgICogZG9tL0ZvY3VzRXZlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9jdXNFdmVudDo6Rm9jdXNFdmVudCk6CisgICAgICAgICogZG9tL0Zv
Y3VzRXZlbnQuaDoKKyAgICAgICAgKiBkb20vSW5wdXRFdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dEV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFdmVudDo6
SW5wdXRFdmVudCk6CisgICAgICAgICogZG9tL0lucHV0RXZlbnQuaDoKKyAgICAgICAgKiBkb20v
S2V5Ym9hcmRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlib2FyZEV2ZW50OjpLZXli
b2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXlib2FyZEV2ZW50Ojppbml0S2V5Ym9hcmRFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpLZXlib2FyZEV2ZW50OjpjaGFyQ29kZSBjb25zdCk6CisgICAgICAgICog
ZG9tL0tleWJvYXJkRXZlbnQuaDoKKyAgICAgICAgKiBkb20vS2V5Ym9hcmRFdmVudC5pZGw6Cisg
ICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQu
aWRsOgorICAgICAgICAqIGRvbS9Nb3VzZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
dXNlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50OjpNb3VzZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmspOgorICAgICAg
ICAqIGRvbS9Nb3VzZUV2ZW50Lmg6CisgICAgICAgICogZG9tL01vdXNlRXZlbnQuaWRsOgorICAg
ICAgICAqIGRvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3Vz
ZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TW91
c2VSZWxhdGVkRXZlbnQ6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZl
bnQ6OmZyYW1lVmlld0Zyb21XaW5kb3dQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJl
bGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVs
YXRlZEV2ZW50Ojpkb2N1bWVudFRvQWJzb2x1dGVTY2FsZUZhY3RvciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVBhZ2VMb2NhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6bG9jYXRpb25JblJvb3RWaWV3Q29vcmRp
bmF0ZXMgY29uc3QpOgorICAgICAgICAqIGRvbS9Nb3VzZVJlbGF0ZWRFdmVudC5oOgorICAgICAg
ICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKiBkb20vU2ltdWxhdGVkQ2xpY2suY3BwOgorICAg
ICAgICAqIGRvbS9UZXh0RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50OjpjcmVhdGVGb3JQbGFpblRleHRQ
YXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFz
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50OjpjcmVhdGVGb3JEcm9wKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRFdmVudDo6Y3JlYXRlRm9yRGljdGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRFdmVudDo6VGV4dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVu
dDo6aW5pdFRleHRFdmVudCk6CisgICAgICAgICogZG9tL1RleHRFdmVudC5oOgorICAgICAgICAq
IGRvbS9UZXh0RXZlbnQuaWRsOgorICAgICAgICAqIGRvbS9Ub3VjaEV2ZW50LmlkbDoKKyAgICAg
ICAgKiBkb20vVUlFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVSUV2ZW50OjpVSUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlVJRXZlbnQ6OmluaXRVSUV2ZW50KToKKyAgICAgICAgKiBk
b20vVUlFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VUlFdmVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlVJRXZlbnQ6OnZpZXcgY29uc3QpOgorICAgICAgICAqIGRvbS9VSUV2ZW50
LmlkbDoKKyAgICAgICAgKiBkb20vVUlFdmVudEluaXQuaDoKKyAgICAgICAgKiBkb20vVUlFdmVu
dEluaXQuaWRsOgorICAgICAgICAqIGRvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmg6CisgICAgICAg
IChXZWJDb3JlOjpVSUV2ZW50V2l0aEtleVN0YXRlOjpVSUV2ZW50V2l0aEtleVN0YXRlKToKKyAg
ICAgICAgKiBkb20vV2hlZWxFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50
OjpXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50Ojppbml0V2ViS2l0V2hlZWxFdmVudCk6CisgICAg
ICAgICogZG9tL1doZWVsRXZlbnQuaDoKKyAgICAgICAgKiBkb20vV2hlZWxFdmVudC5pZGw6Cisg
ICAgICAgICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Omluc2VydERpY3RhdGVkVGV4dCk6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpwYXN0ZUFzUGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVBc0Zy
YWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAg
ICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1
bWVudDo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudC5oOgorICAgICAg
ICAqIGh0bWwvSFRNTERvY3VtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1l
bnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVudFdpbmRvdyBjb25zdCk6
CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0
RWxlbWVudDo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0
bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5j
cHA6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9z
dE1lc3NhZ2VUaW1lcjo6UG9zdE1lc3NhZ2VUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpQb3N0
TWVzc2FnZVRpbWVyOjpldmVudCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnBvc3RN
ZXNzYWdlKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1dEV2ZW50Rm9yKToKKyAgICAg
ICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmhhbmRsZVRleHRJbnB1dEV2ZW50KToKKwogMjAxOC0wNC0yMyAgTWljaGFlbCBDYXRhbnph
cm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSBSZW1vdmUg
V2xVbmlxdWVQdHI8d2xfZGlzcGxheT4gZm9vdGd1bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CmluZGV4IGYzMDg5NWFiYWY2NzAwMjA3NDJkNGVmYzAzOTAxOGRhMjc3ZTc2YWYuLjZhZDUyNWU5
ODEwZWEwMjY3MmZlMWUwOTM3NTYxMWI4ZjM4NjQwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0wNC0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94eSBpbnN0ZWFkIG9mIERPTVdpbmRv
dyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIERPTS9ET01BYnN0cmFjdFZpZXcubW06CisgICAgICAgIChraXQpOgorICAgICAgICAo
dG9XaW5kb3dQcm94eSk6CisgICAgICAgICogRE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmg6
CisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOgorICAgICAgICAoLVtET01Eb2N1bWVudCBk
ZWZhdWx0Vmlld10pOgorICAgICAgICAoLVtET01Eb2N1bWVudCBnZXRDb21wdXRlZFN0eWxlOnBz
ZXVkb0VsZW1lbnQ6XSk6CisgICAgICAgICgtW0RPTURvY3VtZW50IGdldE1hdGNoZWRDU1NSdWxl
czpwc2V1ZG9FbGVtZW50OmF1dGhvck9ubHk6XSk6CisgICAgICAgICogRE9NL0RPTUhUTUxGcmFt
ZUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUhUTUxGcmFtZUVsZW1lbnQgY29udGVudFdpbmRv
d10pOgorICAgICAgICAqIERPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbToKKyAgICAgICAgKC1b
RE9NSFRNTElGcmFtZUVsZW1lbnQgY29udGVudFdpbmRvd10pOgorICAgICAgICAqIERPTS9ET01L
ZXlib2FyZEV2ZW50Lm1tOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2Fy
ZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjpsb2NhdGlvbjpj
dHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdyYXBoS2V5Ol0pOgorICAgICAgICAo
LVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxl
OnZpZXc6a2V5SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRh
S2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNh
bkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjprZXlMb2NhdGlvbjpjdHJsS2V5
OmFsdEtleTpzaGlmdEtleTptZXRhS2V5OmFsdEdyYXBoS2V5Ol0pOgorICAgICAgICAoLVtET01L
ZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6
a2V5SWRlbnRpZmllcjprZXlMb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5
Ol0pOgorICAgICAgICAqIERPTS9ET01Nb3VzZUV2ZW50Lm1tOgorICAgICAgICAoLVtET01Nb3Vz
ZUV2ZW50IGluaXRNb3VzZUV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6ZGV0YWlsOnNj
cmVlblg6c2NyZWVuWTpjbGllbnRYOmNsaWVudFk6Y3RybEtleTphbHRLZXk6c2hpZnRLZXk6bWV0
YUtleTpidXR0b246cmVsYXRlZFRhcmdldDpdKToKKyAgICAgICAgKiBET00vRE9NVGV4dEV2ZW50
Lm1tOgorICAgICAgICAoLVtET01UZXh0RXZlbnQgaW5pdFRleHRFdmVudDpjYW5CdWJibGVBcmc6
Y2FuY2VsYWJsZUFyZzp2aWV3QXJnOmRhdGFBcmc6XSk6CisgICAgICAgICogRE9NL0RPTVVJRXZl
bnQubW06CisgICAgICAgICgtW0RPTVVJRXZlbnQgdmlld10pOgorICAgICAgICAoLVtET01VSUV2
ZW50IGluaXRVSUV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6ZGV0YWlsOl0pOgorICAg
ICAgICAqIERPTS9ET01XaGVlbEV2ZW50Lm1tOgorICAgICAgICAoLVtET01XaGVlbEV2ZW50IGlu
aXRXaGVlbEV2ZW50OndoZWVsRGVsdGFZOnZpZXc6c2NyZWVuWDpzY3JlZW5ZOmNsaWVudFg6Y2xp
ZW50WTpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorCiAyMDE4LTA0LTIzICBD
b21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMjMwOTIxLCByMjMwOTIzLCByMjMwOTI0LCByMjMwOTMyLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGRkZTgwMDhkYzE4N2YzMDI0OTk1YjJhNGJjN2Q5
Y2QwY2E5ZWZjNGIuLmY5YjU5MDBmMTk5ZTU3Yzc0YWJkNDIzYTkzMzFhZGQ4ZjQ0N2M4ZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0wNC0yNiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94
eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVDbGFzc2VzLmNwcDoKKyAgICAgICAg
KERPTURvY3VtZW50OjpnZXRDb21wdXRlZFN0eWxlKToKKwogMjAxOC0wNC0yMyAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjIzMDkyMSwgcjIzMDkyMywgcjIzMDkyNCwgcjIzMDkzMiwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMGY2NDZl
Yzc4ODYwMDlkMDgwYjdmY2U4NzJmOTBjMzdjMGJjNjZmLi4wMTE0ZjIwNThmYWJhOWEyZGUwMTI4
NTk3MGE2NjBhZDc0OTQ5ZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzY1LDcgKzIzNjUsNiBAQAogCQk4M0IyRDE3NTFC
OEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOTU5RTExQjhCQzIyQjAwNEQ5Mzg1IC8qIE5h
dGl2ZU5vZGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVzdFRy
YWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
Qjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQjk2ODdCMTlG
OEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAv
KiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLzsgfTsKLQkJODNCOUU3MEIyMDg2QkE0MzAwRTVE
NzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I5RTcwOTIwODZCQTI3MDBFNUQ3NTYgLyogSlNET01D
b252ZXJ0V2luZG93UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4M0JCNUM4ODFENUQ2RjQ1MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHND
b2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmgg
Ki87IH07CiAJCTgzQzA1QTVCMUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1
bmN0aW9ucy5oICovOyB9OwogCQk4M0MxRDQyNTE3OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNl
Z0FyY0Ficy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODNDMUQ0MTMxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdBcmNBYnMuaCAqLzsgfTsKQEAg
LTk4NzcsNyArOTg3Niw2IEBACiAJCTgzQjc0RUYyMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxp
dmVSZXF1ZXN0VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0I5Njg3OTE5RjhBQjgzMDA0RUY3
QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk4M0I5RTcwOTIwODZCQTI3MDBFNUQ3NTYgLyogSlNET01Db252ZXJ0V2luZG93UHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Db252ZXJ0V2luZG93UHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCQjVDODcxRDVENkYzQTAwNUE3
MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODNDMDVBNTgxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9y
dGhhbmRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlUHJv
cGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE5ODM1LDcgKzE5ODMzLDYgQEAKIAkJCQk3QzhFMzRBQTFFNEEzMzhFMDA1NENFMjMgLyogSlNE
T01Db252ZXJ0VmFyaWFkaWMuaCAqLywKIAkJCQk3Q0JBNUJBNjFGMEI0QkRFMDAzNEQ3NDUgLyog
SlNET01Db252ZXJ0V2ViR0wuY3BwICovLAogCQkJCTdDOEUzNEFCMUU0QTMzOEUwMDU0Q0UyMyAv
KiBKU0RPTUNvbnZlcnRXZWJHTC5oICovLAotCQkJCTgzQjlFNzA5MjA4NkJBMjcwMEU1RDc1NiAv
KiBKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oICovLAogCQkJCTdDOEUzNEFDMUU0QTMzOEUwMDU0
Q0UyMyAvKiBKU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIuaCAqLywKIAkJCSk7CiAJCQluYW1l
ID0gQ29udmVyc2lvbnM7CkBAIC0yODQxNiw3ICsyODQxMyw2IEBACiAJCQkJN0M4RTM0QzQxRTRB
MzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFVuaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
QzhFMzRDNTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0VmFyaWFkaWMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdDOEUzNEM2MUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRXZWJH
TC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODNCOUU3MEIyMDg2QkE0MzAwRTVENzU2IC8qIEpTRE9N
Q29udmVydFdpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRDNzFFNEEzM0Iw
MDA1NENFMjMgLyogSlNET01Db252ZXJ0WFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGQzlFMEU0RDE2NDE5QzFFMDAzOTJCRTMgLyogSlNET01DU1NOYW1lc3BhY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNjBEN0MxMEQyOUE0NjMwMEI5OTE4RiAvKiBKU0RPTUV4Y2VwdGlv
bi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9J
RExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAppbmRleCA1ZmU3
N2U4M2YyM2RhMmIxYjQyMGQxZTM5MmRlYTlkYzA3ZmIxYzgwLi44MDU3ZGZhMTE1ODg4ZDNkYjRh
MGYwYmUyNmI0YzY2MmI2OWM3ODdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKQEAg
LTI3NCw3ICsyNzQsNiBAQCBzdHJ1Y3QgSURMU2NoZWR1bGVkQWN0aW9uIDogSURMVHlwZTxzdGQ6
OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPj4geyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IElETFdyYXBwZXI8VD4geyB9OwogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETEV2ZW50TGlzdGVuZXIgOiBJRExXcmFwcGVyPFQ+
IHsgfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExYUGF0aE5TUmVzb2x2ZXIgOiBJ
RExXcmFwcGVyPFQ+IHsgfTsKLXN0cnVjdCBJRExXaW5kb3dQcm94eSA6IElETFdyYXBwZXI8SlNX
aW5kb3dQcm94eT4geyB9OwogCiBzdHJ1Y3QgSURMSURCS2V5IDogSURMV3JhcHBlcjxJREJLZXk+
IHsgfTsKIHN0cnVjdCBJRExJREJLZXlEYXRhIDogSURMV3JhcHBlcjxJREJLZXlEYXRhPiB7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5k
b3dQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2luZG93
UHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJjMWZmNDgxOTJkZTVjMjA4
MmRiN2IzZGUwYWMzYmFhNGIzNGM3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5k
b3dQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZl
cnRCYXNlLmgiCi0jaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTQ29udmVydGVyPElETFdpbmRvd1Byb3h5PiB7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUgPSB0cnVlOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBuZWVkc0dsb2JhbE9iamVjdCA9IGZhbHNlOwotCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb252ZXJ0KEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgVSYmIHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRl
LCBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsKLSAgICB9Ci19OwotCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCmluZGV4IDE4ODY3MWU0OWIxZjE0MzE1
Yzk4Njc3MWQwN2JhNmY4M2UxYWJkMjcuLmE0YjE4MDVjNjUyZTIzMjBiZmQ3OWEwOTc5Mjc5YWNj
MDg3YjY5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHku
Y3BwCkBAIC0xMTksNiArMTE5LDEyIEBAIHZvaWQgSlNXaW5kb3dQcm94eTo6c2V0V2luZG93KEFi
c3RyYWN0RE9NV2luZG93JiBkb21XaW5kb3cpCiAgICAgQVNTRVJUKHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkgPT0gd2luZG93KTsKIH0KIAorV2luZG93UHJveHkqIEpTV2luZG93UHJveHk6Ondp
bmRvd1Byb3h5KCkgY29uc3QKK3sKKyAgICBhdXRvJiB3aW5kb3cgPSB3cmFwcGVkKCk7CisgICAg
cmV0dXJuIHdpbmRvdy5mcmFtZSgpID8gJndpbmRvdy5mcmFtZSgpLT53aW5kb3dQcm94eSgpIDog
bnVsbHB0cjsKK30KKwogdm9pZCBKU1dpbmRvd1Byb3h5OjphdHRhY2hEZWJ1Z2dlcihKU0M6OkRl
YnVnZ2VyKiBkZWJ1Z2dlcikKIHsKICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB3aW5kb3coKTsK
QEAgLTEzOCwxMiArMTQ0LDYgQEAgQWJzdHJhY3RET01XaW5kb3cmIEpTV2luZG93UHJveHk6Ondy
YXBwZWQoKSBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4od2luZG93
KS0+d3JhcHBlZCgpOwogfQogCi1BYnN0cmFjdERPTVdpbmRvdyogSlNXaW5kb3dQcm94eTo6dG9X
cmFwcGVkKFZNJiB2bSwgSlNPYmplY3QqIHZhbHVlKQotewotICAgIGF1dG8qIHdyYXBwZXIgPSBq
c0R5bmFtaWNDYXN0PEpTV2luZG93UHJveHkqPih2bSwgdmFsdWUpOwotICAgIHJldHVybiB3cmFw
cGVyID8gJndyYXBwZXItPndyYXBwZWQoKSA6IG51bGxwdHI7Ci19Ci0KIEpTVmFsdWUgdG9KUyhF
eGVjU3RhdGUqIHN0YXRlLCBXaW5kb3dQcm94eSYgd2luZG93UHJveHkpCiB7CiAgICAgcmV0dXJu
ICZ3aW5kb3dQcm94eS5qc1dpbmRvd1Byb3h5KGN1cnJlbnRXb3JsZCgqc3RhdGUpKTsKQEAgLTE1
NCw0ICsxNTQsMTQgQEAgSlNXaW5kb3dQcm94eSYgdG9KU1dpbmRvd1Byb3h5KFdpbmRvd1Byb3h5
JiB3aW5kb3dQcm94eSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKICAgICByZXR1cm4gd2luZG93
UHJveHkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiB9CiAKK1dpbmRvd1Byb3h5KiBKU1dpbmRvd1By
b3h5Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmICghdmFsdWUu
aXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgSlNPYmplY3QqIG9iamVj
dCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBpZiAob2JqZWN0LT5pbmhlcml0czxKU1dpbmRvd1By
b3h5Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNXaW5kb3dQcm94eSo+KG9iamVjdCkt
PndpbmRvd1Byb3h5KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93
UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaAppbmRl
eCAxODVhNTQ1NzhiZjgxNzdjZmNhMTc1YzZlNGIxMWY0NzQ4YTQwOTQ4Li5lNmYxNzFjNjg2OTZh
OTFhMWRjZDQxZDIzODFjMDRjZTBkMzQ4Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXaW5kb3dQcm94eS5oCkBAIC0yOCw3ICsyOCw5IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cu
aCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
UHJveHkuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zOSw3ICs0MSw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJhY3RET01XaW5kb3c7CiBjbGFzcyBBYnN0cmFjdEZyYW1l
OwotY2xhc3MgV2luZG93UHJveHk7CiAKIGNsYXNzIEpTV2luZG93UHJveHkgZmluYWwgOiBwdWJs
aWMgSlNDOjpKU1Byb3h5IHsKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU1Byb3h5OwpAQCAtNDks
MTIgKzUwLDE0IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEpTRE9NR2xv
YmFsT2JqZWN0KiB3aW5kb3coKSBjb25zdCB7IHJldHVybiBKU0M6OmpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KHRhcmdldCgpKTsgfQorICAgIEpTRE9NR2xvYmFsT2JqZWN0KiB3aW5kb3coKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHRhcmdldCgpKTsg
fQogICAgIHZvaWQgc2V0V2luZG93KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAg
IHZvaWQgc2V0V2luZG93KEFic3RyYWN0RE9NV2luZG93Jik7CiAKKyAgICBXaW5kb3dQcm94eSog
d2luZG93UHJveHkoKSBjb25zdDsKKwogICAgIEFic3RyYWN0RE9NV2luZG93JiB3cmFwcGVkKCkg
Y29uc3Q7Ci0gICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIEFic3RyYWN0RE9NV2luZG93KiB0b1dy
YXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNPYmplY3QqKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBP
UlQgV2luZG93UHJveHkqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKIAogICAg
IERPTVdyYXBwZXJXb3JsZCYgd29ybGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CiAKQEAgLTcxLDEw
ICs3NCwxNiBAQCBwcml2YXRlOgogLy8gSXQgaXMsIGhvd2V2ZXIsIHN0cm9uZ2x5IG93bmVkIGJ5
IEFic3RyYWN0RnJhbWUgdmlhIGl0cyBXaW5kb3dQcm94eSwgc28gd2UgY2FuIGdldCBvbmUgZnJv
bSBhIFdpbmRvd1Byb3h5LgogV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqLCBXaW5kb3dQcm94eSYpOwogaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgV2luZG93UHJveHkqIHdpbmRvd1Byb3h5KSB7IHJldHVybiB3aW5k
b3dQcm94eSA/IHRvSlMoc3RhdGUsICp3aW5kb3dQcm94eSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1p
bmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBSZWZQ
dHI8V2luZG93UHJveHk+JiB3aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwgd2luZG93
UHJveHkuZ2V0KCkpOyB9CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCosIFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSkgeyBy
ZXR1cm4gdG9KUyhzdGF0ZSwgd2luZG93UHJveHkpOyB9CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBXaW5kb3dQcm94eSogd2luZG93UHJveHkpIHsgcmV0dXJuIHdpbmRvd1Byb3h5ID8gdG9KUyhz
dGF0ZSwgZ2xvYmFsT2JqZWN0LCAqd2luZG93UHJveHkpIDogSlNDOjpqc051bGwoKTsgfQogCiBK
U1dpbmRvd1Byb3h5JiB0b0pTV2luZG93UHJveHkoV2luZG93UHJveHkmLCBET01XcmFwcGVyV29y
bGQmKTsKIGlubGluZSBKU1dpbmRvd1Byb3h5KiB0b0pTV2luZG93UHJveHkoV2luZG93UHJveHkq
IHdpbmRvd1Byb3h5LCBET01XcmFwcGVyV29ybGQmIHdvcmxkKSB7IHJldHVybiB3aW5kb3dQcm94
eSA/ICZ0b0pTV2luZG93UHJveHkoKndpbmRvd1Byb3h5LCB3b3JsZCkgOiBudWxscHRyOyB9CiAK
IAordGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFdpbmRvd1By
b3h5PiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNXaW5kb3dQcm94eTsKKyAgICB1c2lu
ZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gV2luZG93UHJveHkqOworfTsKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwCmlu
ZGV4IDhlOGY1MTM1M2VkMWY3YTBiNWIzZjkzMDRjZjgxYzhhYWNiNzViNWUuLjkwMThkMjNkMjNj
YTFlOTQ3YWVkMjk5M2QxODRmOTEwMmRiNzE4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XaW5kb3dQcm94eS5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDb21tb25W
TS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCisjaW5j
bHVkZSAiSlNXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdl
Q29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtOTEsNiArOTIsMTEg
QEAgVmVjdG9yPEpTQzo6U3Ryb25nPEpTV2luZG93UHJveHk+PiBXaW5kb3dQcm94eTo6anNXaW5k
b3dQcm94aWVzQXNWZWN0b3IoKSBjb25zdAogICAgIHJldHVybiBjb3B5VG9WZWN0b3IobV9qc1dp
bmRvd1Byb3hpZXMudmFsdWVzKCkpOwogfQogCitKU0RPTUdsb2JhbE9iamVjdCogV2luZG93UHJv
eHk6Omdsb2JhbE9iamVjdChET01XcmFwcGVyV29ybGQmIHdvcmxkKQoreworICAgIHJldHVybiBq
c1dpbmRvd1Byb3h5KHdvcmxkKS53aW5kb3coKTsKK30KKwogSlNXaW5kb3dQcm94eSYgV2luZG93
UHJveHk6OmNyZWF0ZUpTV2luZG93UHJveHlXaXRoSW5pdGlhbGl6ZWRTY3JpcHQoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh3b3JsZC52bSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oCmluZGV4IDc3NzIyOTgzYjBhMzIy
Y2QwNjdkZmI1MDYyZGEwNzc3YTY4ZTY1ZjguLjExZjAyMjQ4YjdhY2FjNWU1ZmM3OWZmNDM0ZTE1
NDRjOGZiNTIwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRv
d1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaApA
QCAtMjAsNyArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTV2luZG93UHJv
eHkuaCIKKyNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC0zMCw3ICszMCwx
MCBAQCBjbGFzcyBEZWJ1Z2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBYnN0
cmFjdERPTVdpbmRvdzsKIGNsYXNzIEFic3RyYWN0RnJhbWU7CitjbGFzcyBKU0RPTUdsb2JhbE9i
amVjdDsKK2NsYXNzIEpTV2luZG93UHJveHk7CiAKIGNsYXNzIFdpbmRvd1Byb3h5IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQwLDYgKzQzLDggQEAgcHVibGljOgogICAgIGV4
cGxpY2l0IFdpbmRvd1Byb3h5KEFic3RyYWN0RnJhbWUmKTsKICAgICB+V2luZG93UHJveHkoKTsK
IAorICAgIEFic3RyYWN0RnJhbWUmIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQor
CiAgICAgdm9pZCBkZXN0cm95SlNXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmKTsKIAogICAg
IFByb3h5TWFwOjpWYWx1ZXNDb25zdEl0ZXJhdG9yUmFuZ2UganNXaW5kb3dQcm94aWVzKCkgY29u
c3QgeyByZXR1cm4gbV9qc1dpbmRvd1Byb3hpZXMudmFsdWVzKCk7IH0KQEAgLTYzLDEwICs2OCw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIChpdCAhPSBtX2pzV2luZG93UHJveGllcy5lbmQo
KSkgPyBpdC0+dmFsdWUuZ2V0KCkgOiBudWxscHRyOwogICAgIH0KIAotICAgIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBqc1dpbmRvd1Byb3h5KHdvcmxkKS53aW5kb3coKTsKLSAgICB9CisgICAgV0VC
Q09SRV9FWFBPUlQgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChET01XcmFwcGVyV29y
bGQmKTsKIAogICAgIHZvaWQgY2xlYXJKU1dpbmRvd1Byb3hpZXNOb3RNYXRjaGluZ0RPTVdpbmRv
dyhBYnN0cmFjdERPTVdpbmRvdyosIGJvb2wgZ29pbmdJbnRvUGFnZUNhY2hlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IDk1
MjQyOWEwZTQ5Nzc0YmFkMjJjMWU1OGViYjJlNGVkZGJhZDNiNjMuLjJmY2ZlZTNhN2FhOGYyMmYy
NmViZGRiNmE0ZTI4ZmEwMzhiMmY0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTg5MSw3ICs4OTEsNiBAQCBzdWIgSXNCdWls
dGluVHlwZQogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIi
OwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJhbnkiOwogICAgIHJldHVybiAxIGlm
ICR0eXBlLT5uYW1lIGVxICJvYmplY3QiOwotICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVx
ICJXaW5kb3dQcm94eSI7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTEwMDEsNiArMTAwMCw3IEBA
IHN1YiBDb21wdXRlSXNDYWxsYmFja0ludGVyZmFjZQogICAgIGFzc2VydCgiTm90IGEgdHlwZSIp
IGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5sZXNzICRvYmpl
Y3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUg
ZXEgIldpbmRvd1Byb3h5IjsKIAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1lOwogICAg
IG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlwZU5hbWUpIG9y
IGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlTmFt
ZVwiIVxuIik7CkBAIC0xMDM4LDYgKzEwMzgsNyBAQCBzdWIgQ29tcHV0ZUlzQ2FsbGJhY2tGdW5j
dGlvbgogICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUi
OwogCiAgICAgcmV0dXJuIDAgdW5sZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7
CisgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsKIAogICAgIG15
ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURM
RmlsZUZvckludGVyZmFjZSgkdHlwZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURM
IGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlTmFtZVwiIVxuIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDYyNmE5ZjBi
MmQ2ZjA0M2NmOTJiZGYzMmYyOTYyODkyNjExNmU1ZTQuLjMwYTM3NGMyODI0ZmEyNjA4MjQyYWEz
ODcxMDk4NDIwMmI1ZDBlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00MjEsMTMgKzQyMSw2IEBAIHN1YiBBZGRUb0lu
Y2x1ZGVzRm9ySURMVHlwZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCR0eXBl
LT5uYW1lIGVxICJXaW5kb3dQcm94eSIpIHsKLSAgICAgICAgQWRkVG9JbmNsdWRlcygiV2luZG93
UHJveHkuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAgQWRkVG9JbmNs
dWRlcygiSlNXaW5kb3dQcm94eS5oIiwgJGluY2x1ZGVzUmVmLCAkY29uZGl0aW9uYWwpOwotICAg
ICAgICBBZGRUb0luY2x1ZGVzKCJKU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIiwgJGluY2x1ZGVz
UmVmLCAkY29uZGl0aW9uYWwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7CiAgICAgICAgIEFkZFRvSW5jbHVk
ZXMoIkpTRE9NQ29udmVydFN0cmluZ3MuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtNjM5Myw3ICs2Mzg2LDYgQEAgc3ViIEdldEJhc2VJRExUeXBl
CiAgICAgICAgICJKU09OIiA9PiAiSURMSlNPTiIsCiAgICAgICAgICJTY2hlZHVsZWRBY3Rpb24i
ID0+ICJJRExTY2hlZHVsZWRBY3Rpb24iLAogICAgICAgICAiU2VyaWFsaXplZFNjcmlwdFZhbHVl
IiA9PiAiSURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4iLAot
ICAgICAgICAiV2luZG93UHJveHkiID0+ICJJRExXaW5kb3dQcm94eSIsCiAgICAgICAgICJYUGF0
aE5TUmVzb2x2ZXIiID0+ICJJRExYUGF0aE5TUmVzb2x2ZXI8WFBhdGhOU1Jlc29sdmVyPiIsCiAg
ICAgKTsKIApAQCAtNjU1NCw3ICs2NTQ2LDYgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZURPTUNvbnZl
cnROZWVkc1N0YXRlCiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIkpTT04iOwogICAg
IHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiOwogICAg
IHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwotICAgIHJldHVy
biAxIGlmICR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAgICAgCiAgICAgcmV0dXJuIDA7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCmluZGV4IGJhNDViYjk4ZjIxYTYzMzkwOWQyYmU4ZTBhMWZlMmRjNzI2YTM0
NWYuLmMwNDY2YzI2NmI3MzdmNmM4ODVkMmFhZmQwNWI1ZjE2ZjY4MmQ1MDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CkBAIC01NSw3ICs1NSw2IEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRl
ICJKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCIKICNpbmNsdWRlICJKU0RPTVN0cmlu
Z0xpc3QuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93
QmFzZS5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNEb2N1
bWVudC5oIgpAQCAtNjk1Nyw3ICs2OTU2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDlCb2QKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8gd2luZG93ID0g
Y29udmVydDxJRExJbnRlcmZhY2U8RE9NV2luZG93Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCksIFtdKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgIndpbmRvdyIs
ICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiRE9NV2luZG93Iik7IH0pOworICAg
IGF1dG8gd2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8V2luZG93UHJveHk+Pigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNj
b3BlLCAwLCAid2luZG93IiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJXaW5k
b3dQcm94eSIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqd2luZG93KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNzAyOSw3ICs3MDI4LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZE92ZXIKICAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2Qm9keShzdGF0ZSwgY2FzdGVkVGhpcywg
dGhyb3dTY29wZSk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09iamVjdCgpICYm
IGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNUZXN0T2JqPih2bSkpCiAg
ICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kOEJvZHkoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwotICAgICAgICBpZiAoZGlz
dGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiAoYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcp
LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkgfHwgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdB
cmcpLT5pbmhlcml0czxKU0RPTVdpbmRvdz4odm0pKSkKKyAgICAgICAgaWYgKGRpc3Rpbmd1aXNo
aW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0
czxKU1dpbmRvd1Byb3h5Pih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOUJvZHkoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93
U2NvcGUpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiBhc09i
amVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzPEpTQmxvYj4odm0pKQogICAgICAgICAg
ICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEzQm9k
eShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggYzgzZWVlZWRiZjQxNjNmODMy
YmNkMjUzZWMwNTc1Njg0NmVlZDY4NC4uNzFkZGZjNDg5ZWQyZDVkYTI1NmZiNWM0MzBiOTMyZWJk
YzRmODcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbApAQCAtMjg2LDcgKzI4Niw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGln
aCIsICJraW5kYS1sb3ciIH07CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmlu
Z0xpc3Q/IGxpc3RBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChzZXF1ZW5jZTxE
T01TdHJpbmc+PyBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFRlc3RP
Ymogb2JqQXJnKTsKLSAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoRE9NV2luZG93IHdpbmRv
dyk7CisgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFdpbmRvd1Byb3h5IHdpbmRvdyk7CiAg
ICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKHNlcXVlbmNlPERPTVN0cmluZz4gYXJyYXlBcmcp
OwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChzZXF1ZW5jZTx1bnNpZ25lZCBsb25nPiBh
cnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmluZyBzdHJBcmcp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwCmluZGV4IDBlMzhhNjcxOGNk
MWRhZDJlNzkwMjhiODkwMDU2YTZmY2I2NDJjOTAuLjAwN2FmN2Q3MjRmNWMzZTRhMGEzNjExMjU2
NmM0ODJlZDZmZDU5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlv
bkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAK
QEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb21wb3NpdGlvbkV2ZW50
OjpDb21wb3NpdGlvbkV2ZW50KCkgPSBkZWZhdWx0OwogCi1Db21wb3NpdGlvbkV2ZW50OjpDb21w
b3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRE9NV2luZG93KiB2aWV3LCBj
b25zdCBTdHJpbmcmIGRhdGEpCi0gICAgOiBVSUV2ZW50KHR5cGUsIHRydWUsIHRydWUsIHZpZXcs
IDApCitDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkK
KyAgICA6IFVJRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCkKICAgICAs
IG1fZGF0YShkYXRhKQogewogfQpAQCAtNDUsMTIgKzQ1LDEyIEBAIENvbXBvc2l0aW9uRXZlbnQ6
OkNvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBp
bml0aWFsCiAKIENvbXBvc2l0aW9uRXZlbnQ6On5Db21wb3NpdGlvbkV2ZW50KCkgPSBkZWZhdWx0
OwogCi12b2lkIENvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2lu
ZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCit2b2lkIENvbXBvc2l0aW9uRXZlbnQ6Omlu
aXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0
cmluZyYgZGF0YSkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3
LCAwKTsKKyAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1v
dmUodmlldyksIDApOwogCiAgICAgbV9kYXRhID0gZGF0YTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29t
cG9zaXRpb25FdmVudC5oCmluZGV4IDhmZjAyZWM5Njk3NzhiODg1YTYzMTcwMjRjOTU3NDc2ZTAy
MWIyYTYuLjNiMWM0NmQ2MzVlY2FmNmNkMDkxOTA5OGY1MDhmYzQxZTY0Y2ViY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENvbXBvc2l0aW9uRXZlbnQgZmluYWwgOiBwdWJsaWMgVUlFdmVu
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0
YSkKKyAgICBzdGF0aWMgUmVmPENvbXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRh
dGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21wb3NpdGlvbkV2ZW50
KHR5cGUsIHZpZXcsIGRhdGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29tcG9z
aXRpb25FdmVudCh0eXBlLCBXVEZNb3ZlKHZpZXcpLCBkYXRhKSk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBAIC01Myw3ICs1
Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbXBvc2l0aW9uRXZlbnQoKTsKIAotICAg
IHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRh
dGEpOworICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+
JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAKICAgICBTdHJpbmcgZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YTsgfQogCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBDb21wb3NpdGlvbkV2ZW50KCk7Ci0gICAgQ29tcG9zaXRpb25FdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYpOworICAgIENvbXBvc2l0aW9u
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNv
bnN0IFN0cmluZyYpOwogICAgIENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVkKTsKIAogICAgIGJvb2wgaXNDb21wb3NpdGlvbkV2
ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29t
cG9zaXRpb25FdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5p
ZGwKaW5kZXggZDg3MjQwODgzZTI3ZDNiMzQ1ODUzOWViOTIwZjRkM2YyODcxNjZjNC4uMjBhYWM3
ZWE0NzcwZDU2NTllZDQwOTEwZDdhYTc5NTA4ZTY2MTgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NpdGlvbkV2ZW50LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIHZvaWQgaW5pdENvbXBv
c2l0aW9uRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZpbmVkIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlQXJn
ID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBib29sZWFu
IGNhbmNlbGFibGVBcmcgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
dGlvbmFsIERPTVdpbmRvdz8gdmlld0FyZyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlld0FyZyA9IG51bGwsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBET01TdHJpbmcgZGF0YUFyZyA9ICJ1bmRlZmlu
ZWQiKTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDg2ZjgzZTcyNjQyM2FjNDU0
MzVkMzJiZWYwNDk0ZTk5NDllMDU0OTkuLjdlN2VkYTAxNzcyZDRhOGJjOGJmMTYxMDViYzQ1ZTI1
ZmRiODIwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDI4MCw2ICs0MjgwLDEzIEBA
IHZvaWQgRG9jdW1lbnQ6OnRha2VET01XaW5kb3dGcm9tKERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICBBU1NFUlQobV9kb21XaW5kb3ctPmZyYW1lKCkgPT0gbV9mcmFtZSk7CiB9CiAKK1dpbmRvd1By
b3h5KiBEb2N1bWVudDo6d2luZG93UHJveHkoKSBjb25zdAoreworICAgIGlmICghbV9mcmFtZSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZtX2ZyYW1lLT53aW5kb3dQcm94
eSgpOworfQorCiBEb2N1bWVudCYgRG9jdW1lbnQ6OmNvbnRleHREb2N1bWVudCgpIGNvbnN0CiB7
CiAgICAgaWYgKG1fY29udGV4dERvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBhNGZi
MDJmOWUxYmNiZDQwMGIwY2M4NjUyYWJkNDA0ZjAxYzQ1OTVmLi5jZTM3ZjM3MjE3ODMzNjc1N2E3
N2U1MGY0ZWJkYzgyNDA2ZTNlMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNzk5LDcgKzc5
OSw3IEBAIHB1YmxpYzoKIAogICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29uc3QgeyByZXR1
cm4gbV9kb21XaW5kb3cuZ2V0KCk7IH0KICAgICAvLyBJbiBET00gTGV2ZWwgMiwgdGhlIERvY3Vt
ZW50J3MgRE9NV2luZG93IGlzIGNhbGxlZCB0aGUgZGVmYXVsdFZpZXcuCi0gICAgRE9NV2luZG93
KiBkZWZhdWx0VmlldygpIGNvbnN0IHsgcmV0dXJuIGRvbVdpbmRvdygpOyB9IAorICAgIFdFQkNP
UkVfRVhQT1JUIFdpbmRvd1Byb3h5KiB3aW5kb3dQcm94eSgpIGNvbnN0OwogCiAgICAgRG9jdW1l
bnQmIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4dERvY3VtZW50
KERvY3VtZW50JiBkb2N1bWVudCkgeyBtX2NvbnRleHREb2N1bWVudCA9IGRvY3VtZW50LmNyZWF0
ZVdlYWtQdHIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXggMmQ1YmFhZDhjNjA2NDRk
YTg5ZDEwN2ZkZGUxODI4Y2Q4YTQ5ZDgyYi4uNDEzZTUzZTIxNmZhNDFkM2EzZGY4MmUzMjI5ZWRh
Y2NiYjE0ZDVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0xMTMsNyArMTEzLDcgQEAg
dHlwZWRlZiAoCiAgICAgW0NFUmVhY3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJsZURvY3VtZW50
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCB3cml0ZWxuKERPTVN0cmluZy4uLiB0ZXh0KTsKIAog
ICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24uCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVdpbmRv
dz8gZGVmYXVsdFZpZXc7CisgICAgW0ltcGxlbWVudGVkQXM9d2luZG93UHJveHldIHJlYWRvbmx5
IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gZGVmYXVsdFZpZXc7CiAgICAgYm9vbGVhbiBoYXNGb2N1
cygpOwogICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIERPTVN0cmluZyBkZXNpZ25Nb2RlOwog
ICAgIFtDRVJlYWN0aW9uc10gYm9vbGVhbiBleGVjQ29tbWFuZChET01TdHJpbmcgY29tbWFuZElk
LCBvcHRpb25hbCBib29sZWFuIHNob3dVSSA9IGZhbHNlLCBvcHRpb25hbCBET01TdHJpbmc/IHZh
bHVlID0gbnVsbCk7IC8vIEZJWE1FOiB2YWx1ZSBzaG91bGQgbm90IGJlIG51bGxhYmxlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50VG91Y2guY3BwCmluZGV4IDNkOTEyM2Q4Zjc1MzJjYjRkYjc5YTRh
MTMzNWQ1ZjE3MjhjYzUwOWEuLjVkMTI2YzNjMzI0NzE0ZjM5ZjlmOTZlMTYzNjljMDE4Nzg0N2E4
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5jcHAKQEAgLTI4LDIwICsyOCwyNyBA
QAogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIAotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJUb3Vj
aC5oIgogI2luY2x1ZGUgIlRvdWNoTGlzdC5oIgorI2luY2x1ZGUgIldpbmRvd1Byb3h5LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFRvdWNoPiBEb2N1bWVudFRvdWNoOjpjcmVhdGVU
b3VjaChEb2N1bWVudCYgZG9jdW1lbnQsIERPTVdpbmRvdyogd2luZG93LCBFdmVudFRhcmdldCog
dGFyZ2V0LCBpbnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBzY3JlZW5Y
LCBpbnQgc2NyZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbkFu
Z2xlLCBmbG9hdCBmb3JjZSkKK1JlZjxUb3VjaD4gRG9jdW1lbnRUb3VjaDo6Y3JlYXRlVG91Y2go
RG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgd2luZG93LCBFdmVudFRh
cmdldCogdGFyZ2V0LCBpbnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBz
Y3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3Rh
dGlvbkFuZ2xlLCBmbG9hdCBmb3JjZSkKIHsKKyAgICBGcmFtZSogZnJhbWU7CisgICAgaWYgKHdp
bmRvdyAmJiBpczxGcmFtZT4od2luZG93LT5mcmFtZSgpKSkKKyAgICAgICAgZnJhbWUgPSAmZG93
bmNhc3Q8RnJhbWU+KHdpbmRvdy0+ZnJhbWUoKSk7CisgICAgZWxzZQorICAgICAgICBmcmFtZSA9
IGRvY3VtZW50LmZyYW1lKCk7CisKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgZnJvbSB0
aGUgZG9jdW1lbnRhdGlvbiBhdAogICAgIC8vIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xp
YnJhcnkvc2FmYXJpLyNkb2N1bWVudGF0aW9uL1VzZXJFeHBlcmllbmNlL1JlZmVyZW5jZS9Eb2N1
bWVudEFkZGl0aW9uc1JlZmVyZW5jZS9Eb2N1bWVudEFkZGl0aW9ucy9Eb2N1bWVudEFkZGl0aW9u
cy5odG1sCiAgICAgLy8gd2hlbiB0aGlzIG1ldGhvZCBzaG91bGQgdGhyb3cgYW5kIG5vciBpcyBp
dCBieSBpbnNwZWN0aW9uIG9mIGlPUyBiZWhhdmlvci4gSXQgd291bGQgYmUgbmljZSB0byB2ZXJp
ZnkgYW55IGNhc2VzIHdoZXJlIGl0IHRocm93cyB1bmRlciBpT1MKICAgICAvLyBhbmQgaW1wbGVt
ZW50IHRoZW0gaGVyZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NzgxOQotICAgIHJldHVybiBUb3VjaDo6Y3JlYXRlKHdpbmRvdyA/IHdpbmRvdy0+ZnJhbWUo
KSA6IGRvY3VtZW50LmZyYW1lKCksIHRhcmdldCwgaWRlbnRpZmllciwgc2NyZWVuWCwgc2NyZWVu
WSwgcGFnZVgsIHBhZ2VZLCByYWRpdXNYLCByYWRpdXNZLCByb3RhdGlvbkFuZ2xlLCBmb3JjZSk7
CisgICAgcmV0dXJuIFRvdWNoOjpjcmVhdGUoZnJhbWUsIHRhcmdldCwgaWRlbnRpZmllciwgc2Ny
ZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCByYWRpdXNYLCByYWRpdXNZLCByb3RhdGlvbkFu
Z2xlLCBmb3JjZSk7CiB9CiAKIFJlZjxUb3VjaExpc3Q+IERvY3VtZW50VG91Y2g6OmNyZWF0ZVRv
dWNoTGlzdChEb2N1bWVudCYsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFRvdWNoPj4m
JiB0b3VjaGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2gu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmgKaW5kZXggZTBkYWY1MDUyY2M5
Nzg1MmM4YTA0YmJhNzNlNWY2YTExNmYxMGU1MS4uNzJjNDg4OGI0NWFiNDAwZTI5YmM4YWVkODZk
ZTRjNTkwM2VhYzIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91
Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5oCkBAIC0zNCwxNSAr
MzQsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBET01XaW5kb3c7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIEV2ZW50VGFyZ2V0OwogY2xhc3MgVG91Y2g7CiBjbGFzcyBUb3Vj
aExpc3Q7CitjbGFzcyBXaW5kb3dQcm94eTsKIAogY2xhc3MgRG9jdW1lbnRUb3VjaCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxUb3VjaD4gY3JlYXRlVG91Y2goRG9jdW1lbnQmLCBET01XaW5k
b3cqLCBFdmVudFRhcmdldCosIGludCBpZGVudGlmaWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwg
aW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0
IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKTsKKyAgICBzdGF0aWMgUmVmPFRvdWNoPiBjcmVh
dGVUb3VjaChEb2N1bWVudCYsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgRXZlbnRUYXJnZXQqLCBp
bnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBzY3JlZW5YLCBpbnQgc2Ny
ZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9h
dCBmb3JjZSk7CiAgICAgc3RhdGljIFJlZjxUb3VjaExpc3Q+IGNyZWF0ZVRvdWNoTGlzdChEb2N1
bWVudCYsIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFRvdWNoPj4mJik7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRUb3VjaC5pZGwKaW5kZXggN2EyNzM3NDU4NjU0OTkxYjExYjU1
NjMwODllMjE5NTdjYzRjNGU0YS4uMDQ4OWEzNmFkNmIxMjUwM2NkYjQ2YWYxNDhjYjU5Y2ZhZmQ2
NzViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmlkbApAQCAtMjIsNyArMjIsNyBA
QAogICAgIENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUwogXSBwYXJ0aWFsIGludGVyZmFjZSBEb2N1
bWVudCB7CiAgICAgLy8gRklYTUU6IFRoaXMgaGFzIGJlZW4gZHJvcHBlZCBmcm9tIHRoZSBzdGFu
ZGFyZCBub3cgdGhhdCBUb3VjaCBoYXMgYSBjb25zdHJ1Y3Rvci4KLSAgICBbTmV3T2JqZWN0XSBU
b3VjaCBjcmVhdGVUb3VjaChvcHRpb25hbCBET01XaW5kb3c/IHdpbmRvdyA9IG51bGwsIG9wdGlv
bmFsIEV2ZW50VGFyZ2V0PyB0YXJnZXQgPSBudWxsLAorICAgIFtOZXdPYmplY3RdIFRvdWNoIGNy
ZWF0ZVRvdWNoKG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB3aW5kb3cgPSBudWxsLCBvcHRpb25hbCBF
dmVudFRhcmdldD8gdGFyZ2V0ID0gbnVsbCwKICAgICAgICAgb3B0aW9uYWwgbG9uZyBpZGVudGlm
aWVyID0gMCwKICAgICAgICAgb3B0aW9uYWwgbG9uZyBwYWdlWCA9IDAsIG9wdGlvbmFsIGxvbmcg
cGFnZVkgPSAwLCBvcHRpb25hbCBsb25nIHNjcmVlblggPSAwLCBvcHRpb25hbCBsb25nIHNjcmVl
blkgPSAwLAogICAgICAgICBvcHRpb25hbCBsb25nIHdlYmtpdFJhZGl1c1ggPSAwLCBvcHRpb25h
bCBsb25nIHdlYmtpdFJhZGl1c1kgPSAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDBhMjMy
NjM5NmRkZmY5OTRlYmZhZTVjODU2MDBhN2M3NTMzNzg4Y2EuLmE0MzIzOTdkNzE3OWIxNDFkMjBk
ZjgwZmNiZTQ2OTUzY2IxODY0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTI3Myw3ICsy
NzMsNyBAQCBib29sIEVsZW1lbnQ6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIHBsYXRmb3JtRXZlbnQsIGNvbnN0CiAgICAgaWYgKGlzRm9yY2VFdmVudChwbGF0
Zm9ybUV2ZW50KSAmJiAhZG9jdW1lbnQoKS5oYXNMaXN0ZW5lclR5cGVGb3JFdmVudFR5cGUocGxh
dGZvcm1FdmVudC50eXBlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWY8TW91
c2VFdmVudD4gbW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGRvY3Vt
ZW50KCkuZGVmYXVsdFZpZXcoKSwgcGxhdGZvcm1FdmVudCwgZGV0YWlsLCByZWxhdGVkVGFyZ2V0
KTsKKyAgICBSZWY8TW91c2VFdmVudD4gbW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShl
dmVudFR5cGUsIGRvY3VtZW50KCkud2luZG93UHJveHkoKSwgcGxhdGZvcm1FdmVudCwgZGV0YWls
LCByZWxhdGVkVGFyZ2V0KTsKIAogICAgIGlmIChtb3VzZUV2ZW50LT50eXBlKCkuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gU2hvdWxkbid0IGhhcHBlbi4KQEAgLTMwNCw3ICsz
MDQsNyBAQCBib29sIEVsZW1lbnQ6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIHBsYXRmb3JtRXZlbnQsIGNvbnN0CiAKIGJvb2wgRWxlbWVudDo6ZGlzcGF0Y2hX
aGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgcGxhdGZvcm1FdmVudCkKIHsKLSAg
ICBhdXRvIGV2ZW50ID0gV2hlZWxFdmVudDo6Y3JlYXRlKHBsYXRmb3JtRXZlbnQsIGRvY3VtZW50
KCkuZGVmYXVsdFZpZXcoKSk7CisgICAgYXV0byBldmVudCA9IFdoZWVsRXZlbnQ6OmNyZWF0ZShw
bGF0Zm9ybUV2ZW50LCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCkpOwogCiAgICAgLy8gRXZlbnRz
IHdpdGggbm8gZGVsdGFzIGFyZSBpbXBvcnRhbnQgYmVjYXVzZSB0aGV5IGNvbnZleSBwbGF0Zm9y
bSBpbmZvcm1hdGlvbiBhYm91dCBzY3JvbGwgZ2VzdHVyZXMKICAgICAvLyBhbmQgbW9tZW50dW0g
YmVnaW5uaW5nIG9yIGVuZGluZy4gSG93ZXZlciwgdGhvc2UgZXZlbnRzIHNob3VsZCBub3QgYmUg
c2VudCB0byB0aGUgRE9NIHNpbmNlIHNvbWUKQEAgLTMyMSw3ICszMjEsNyBAQCBib29sIEVsZW1l
bnQ6OmRpc3BhdGNoV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHBsYXRmb3Jt
RXZlbnQpCiAKIGJvb2wgRWxlbWVudDo6ZGlzcGF0Y2hLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQmIHBsYXRmb3JtRXZlbnQpCiB7Ci0gICAgYXV0byBldmVudCA9IEtleWJvYXJk
RXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCBkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCkpOwor
ICAgIGF1dG8gZXZlbnQgPSBLZXlib2FyZEV2ZW50OjpjcmVhdGUocGxhdGZvcm1FdmVudCwgZG9j
dW1lbnQoKS53aW5kb3dQcm94eSgpKTsKIAogICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVu
dCgpLmZyYW1lKCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5ldmVudEhhbmRsZXIoKS5hY2Nlc3Np
YmlsaXR5UHJldmVudHNFdmVudFByb3BhZ2F0aW9uKGV2ZW50KSkKQEAgLTI1NDYsMjggKzI1NDYs
MjggQEAgdm9pZCBFbGVtZW50OjpkaXNwYXRjaEZvY3VzSW5FdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgUmVmUHRyPEVsZW1lbnQKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZDo6aXNTY3Jp
cHRBbGxvd2VkKCkpOwogICAgIEFTU0VSVChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmZvY3Vz
aW5FdmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLkRPTUZvY3VzSW5FdmVudCk7Ci0g
ICAgZGlzcGF0Y2hTY29wZWRFdmVudChGb2N1c0V2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCB0cnVl
LCBmYWxzZSwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCAwLCBXVEZNb3ZlKG9sZEZvY3VzZWRF
bGVtZW50KSkpOworICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoRm9jdXNFdmVudDo6Y3JlYXRlKGV2
ZW50VHlwZSwgdHJ1ZSwgZmFsc2UsIGRvY3VtZW50KCkud2luZG93UHJveHkoKSwgMCwgV1RGTW92
ZShvbGRGb2N1c2VkRWxlbWVudCkpKTsKIH0KIAogdm9pZCBFbGVtZW50OjpkaXNwYXRjaEZvY3Vz
T3V0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFbGVtZW50PiYm
IG5ld0ZvY3VzZWRFbGVtZW50KQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkOjppc1NjcmlwdEFsbG93ZWQo
KSk7CiAgICAgQVNTRVJUKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZm9jdXNvdXRFdmVudCB8
fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLkRPTUZvY3VzT3V0RXZlbnQpOwotICAgIGRpc3Bh
dGNoU2NvcGVkRXZlbnQoRm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgZmFsc2Us
IGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgMCwgV1RGTW92ZShuZXdGb2N1c2VkRWxlbWVudCkp
KTsKKyAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KEZvY3VzRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUs
IHRydWUsIGZhbHNlLCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIDAsIFdURk1vdmUobmV3Rm9j
dXNlZEVsZW1lbnQpKSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFJl
ZlB0cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50LCBGb2N1c0RpcmVjdGlvbikKIHsKICAg
ICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQogICAgICAgICBwYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS5lbGVtZW50RGlkRm9jdXMoKnRoaXMpOwotICAgIGRpc3BhdGNoRXZlbnQo
Rm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBmYWxzZSwgZmFsc2Us
IGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgMCwgV1RGTW92ZShvbGRGb2N1c2VkRWxlbWVudCkp
KTsKKyAgICBkaXNwYXRjaEV2ZW50KEZvY3VzRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZm9j
dXNFdmVudCwgZmFsc2UsIGZhbHNlLCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIDAsIFdURk1v
dmUob2xkRm9jdXNlZEVsZW1lbnQpKSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hCbHVy
RXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1lbnQpCiB7CiAgICAgaWYgKGF1
dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xp
ZW50KCkuZWxlbWVudERpZEJsdXIoKnRoaXMpOwotICAgIGRpc3BhdGNoRXZlbnQoRm9jdXNFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsIGZhbHNlLCBmYWxzZSwgZG9jdW1lbnQo
KS5kZWZhdWx0VmlldygpLCAwLCBXVEZNb3ZlKG5ld0ZvY3VzZWRFbGVtZW50KSkpOworICAgIGRp
c3BhdGNoRXZlbnQoRm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsIGZh
bHNlLCBmYWxzZSwgZG9jdW1lbnQoKS53aW5kb3dQcm94eSgpLCAwLCBXVEZNb3ZlKG5ld0ZvY3Vz
ZWRFbGVtZW50KSkpOwogfQogCiB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoV2ViS2l0SW1hZ2VSZWFk
eUV2ZW50Rm9yVGVzdGluZygpCkBAIC0yNTg3LDcgKzI1ODcsNyBAQCBib29sIEVsZW1lbnQ6OmRp
c3BhdGNoTW91c2VGb3JjZVdpbGxCZWdpbigpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IFBsYXRmb3JtTW91c2VFdmVudCBwbGF0Zm9ybU1vdXNlRXZlbnQgeyBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCkubGFzdEtub3duTW91c2VQb3NpdGlvbigpLCBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkubGFz
dEtub3duTW91c2VHbG9iYWxQb3NpdGlvbigpLCBOb0J1dHRvbiwgUGxhdGZvcm1FdmVudDo6Tm9U
eXBlLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2FsbFRpbWU6Om5vdygpLCBGb3Jj
ZUF0Q2xpY2ssIE5vVGFwIH07Ci0gICAgYXV0byBtb3VzZUZvcmNlV2lsbEJlZ2luRXZlbnQgPSBN
b3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG1vdXNlZm9yY2V3aWxsYmVnaW5F
dmVudCwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCBwbGF0Zm9ybU1vdXNlRXZlbnQsIDAsIG51
bGxwdHIpOworICAgIGF1dG8gbW91c2VGb3JjZVdpbGxCZWdpbkV2ZW50ID0gTW91c2VFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRtb3VzZWZvcmNld2lsbGJlZ2luRXZlbnQsIGRvY3Vt
ZW50KCkud2luZG93UHJveHkoKSwgcGxhdGZvcm1Nb3VzZUV2ZW50LCAwLCBudWxscHRyKTsKICAg
ICBtb3VzZUZvcmNlV2lsbEJlZ2luRXZlbnQtPnNldFRhcmdldCh0aGlzKTsKICAgICBkaXNwYXRj
aEV2ZW50KG1vdXNlRm9yY2VXaWxsQmVnaW5FdmVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50
LmNwcAppbmRleCAxNmQ4YjNmZjA3OGQwNWFkOTFlMmQ2OTE0NjcxOTEyODU1ZDdjNDg0Li45ODY4
NzczMjZjZTNmYWU0YmIwNTllN2MxNjRkN2JjMThhYTlkZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3Vz
RXZlbnQuY3BwCkBAIC00MCw4ICs0MCw4IEBAIGJvb2wgRm9jdXNFdmVudDo6aXNGb2N1c0V2ZW50
KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRm9jdXNFdmVudDo6Rm9jdXNFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmIHJlbGF0
ZWRUYXJnZXQpCi0gICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmll
dywgZGV0YWlsKQorRm9jdXNFdmVudDo6Rm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4m
JiB2aWV3LCBpbnQgZGV0YWlsLCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYgcmVsYXRlZFRhcmdldCkK
KyAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcp
LCBkZXRhaWwpCiAgICAgLCBtX3JlbGF0ZWRUYXJnZXQoV1RGTW92ZShyZWxhdGVkVGFyZ2V0KSkK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5oCmluZGV4IDA2NzI1NTc0YzA2YjkxZjI5ZmI0Zjk2
YTBiMWI1NjEzNGYxOTY4NTQuLmM3YTRkZjhlNzc0MzJjZmUzNjRhMTM0ZjhkZTUxNTE2YTA1N2I4
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuaApAQCAtMzUsOSArMzUsOSBAQCBjbGFzcyBOb2Rl
OwogCiBjbGFzcyBGb2N1c0V2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8Rm9jdXNFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBpbnQg
ZGV0YWlsLCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYgcmVsYXRlZFRhcmdldCkKKyAgICBzdGF0aWMg
UmVmPEZvY3VzRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQg
ZGV0YWlsLCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYgcmVsYXRlZFRhcmdldCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvY3VzRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCB2aWV3LCBkZXRhaWwsIFdURk1vdmUocmVsYXRlZFRhcmdldCkpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9jdXNFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIFdURk1vdmUodmlldyksIGRldGFpbCwgV1RGTW92ZShyZWxhdGVkVGFyZ2V0KSkpOwogICAg
IH0KIAogICAgIHN0YXRpYyBSZWY8Rm9jdXNFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKQpAQCAt
NTgsNyArNTgsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgRm9jdXNFdmVudCgpID0gZGVm
YXVsdDsKLSAgICBGb2N1c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50LCBSZWZQdHI8RXZlbnRUYXJn
ZXQ+JiYpOworICAgIEZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCwgUmVm
UHRyPEV2ZW50VGFyZ2V0PiYmKTsKICAgICBGb2N1c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBFdmVudEludGVyZmFjZSBldmVu
dEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0lucHV0RXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuY3BwCmluZGV4
IGQ0NDkyOTRmZWM2YmM3OTcwZDZjNDJjNGI5N2FiMTYxYzRmNWIxZjAuLmMxN2JmMThkODhhNjc2
NDcyYTE4NzE2M2U3YjQ1MTRmODQ0MDBhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9JbnB1dEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5jcHAK
QEAgLTI2LDIwICsyNiwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklucHV0
RXZlbnQuaCIKIAotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zl
ci5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8SW5wdXRFdmVu
dD4gSW5wdXRFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgV2Vi
Q29yZTo6RE9NV2luZG93ICp2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJh
bnNmZXI+JiYgZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4m
IHRhcmdldFJhbmdlcywgaW50IGRldGFpbCkKK1JlZjxJbnB1dEV2ZW50PiBJbnB1dEV2ZW50Ojpj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRU
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFU
cmFuc2ZlciwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMs
IGludCBkZXRhaWwpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5wdXRFdmVudChldmVu
dFR5cGUsIGlucHV0VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkYXRhLCBXVEZN
b3ZlKGRhdGFUcmFuc2ZlciksIHRhcmdldFJhbmdlcywgZGV0YWlsKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW5wdXRFdmVudChldmVudFR5cGUsIGlucHV0VHlwZSwgY2FuQnViYmxlLCBj
YW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkYXRhLCBXVEZNb3ZlKGRhdGFUcmFuc2ZlciksIHRh
cmdldFJhbmdlcywgZGV0YWlsKSk7CiB9CiAKLUlucHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYg
ZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiBkYXRhVHJhbnNmZXIsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U3RhdGljUmFuZ2U+PiYgdGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKQotICAgIDogVUlF
dmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKQorSW5w
dXRFdmVudDo6SW5wdXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJh
bnNmZXI+JiYgZGF0YVRyYW5zZmVyLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4m
IHRhcmdldFJhbmdlcywgaW50IGRldGFpbCkKKyAgICA6IFVJRXZlbnQoZXZlbnRUeXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRldGFpbCkKICAgICAsIG1faW5wdXRU
eXBlKGlucHV0VHlwZSkKICAgICAsIG1fZGF0YShkYXRhKQogICAgICwgbV9kYXRhVHJhbnNmZXIo
ZGF0YVRyYW5zZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmgKaW5kZXggY2FkOGRjZTdiMzYyNmQ5
YTIyNzYzNGIzNTg5MjZjMWYxMjU0NjgxYi4uZDA1MDc2MzljNmM4OWM5OWQ0ZDMwYTFjZTkzNmY5
MTYxYjljNGVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5oCkBAIC0zMCw4ICszMCw4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRE9NV2luZG93OwogY2xhc3MgRGF0YVRyYW5z
ZmVyOworY2xhc3MgV2luZG93UHJveHk7CiAKIGNsYXNzIElucHV0RXZlbnQgZmluYWwgOiBwdWJs
aWMgVUlFdmVudCB7CiBwdWJsaWM6CkBAIC0zOSwxMyArMzksMTMgQEAgcHVibGljOgogICAgICAg
ICBTdHJpbmcgZGF0YTsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxJbnB1dEV2ZW50PiBjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0
IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwgY29uc3QgVmVjdG9yPFJlZlB0
cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpOworICAgIHN0YXRpYyBS
ZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFU
cmFuc2Zlcj4mJiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5n
ZXMsIGludCBkZXRhaWwpOwogICAgIHN0YXRpYyBSZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBp
c1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSW5wdXRFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiAgICAgfQog
Ci0gICAgSW5wdXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBpbnB1dFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRv
dyosIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwgY29uc3QgVmVj
dG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpOworICAg
IElucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYg
aW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93
UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwgY29u
c3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwp
OwogICAgIElucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IElu
aXQmLCBJc1RydXN0ZWQpOwogCiAgICAgYm9vbCBpc0lucHV0RXZlbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9h
cmRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKaW5kZXgg
NGRhMTAxNzcyNWZlODkyY2ZhOGRhY2YwZjViNzA4MWRjYzZjZmJlOS4uNGFjYjVmNGNlYjc2MGUx
NzBmMTA3Y2VhMzg2MDk4OWY2NzI2NGVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0tleWJvYXJkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50
LmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIktl
eWJvYXJkRXZlbnQuaCIKIAorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCkBA
IC05Miw4ICs5Myw4IEBAIHN0YXRpYyBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5TG9jYXRpb25D
b2RlIGtleUxvY2F0aW9uQ29kZShjb25zdCBQbGF0Zm9ybUtleWJvCiAKIGlubGluZSBLZXlib2Fy
ZEV2ZW50OjpLZXlib2FyZEV2ZW50KCkgPSBkZWZhdWx0OwogCi1pbmxpbmUgS2V5Ym9hcmRFdmVu
dDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwgRE9NV2lu
ZG93KiB2aWV3KQotICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGVGb3JLZXlib2Fy
ZEV2ZW50VHlwZShrZXkudHlwZSgpKSwgdHJ1ZSwgdHJ1ZSwga2V5LnRpbWVzdGFtcCgpLmFwcHJv
eGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LCAwLCBrZXkuY3RybEtleSgpLCBrZXkuYWx0S2V5
KCksIGtleS5zaGlmdEtleSgpLCBrZXkubWV0YUtleSgpLCBmYWxzZSwga2V5Lm1vZGlmaWVycygp
LmNvbnRhaW5zKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDYXBzTG9ja0tleSkpCitpbmxpbmUg
S2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQm
IGtleSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcpCisgICAgOiBVSUV2ZW50V2l0aEtleVN0
YXRlKGV2ZW50VHlwZUZvcktleWJvYXJkRXZlbnRUeXBlKGtleS50eXBlKCkpLCB0cnVlLCB0cnVl
LCBrZXkudGltZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCksIHZpZXcuY29weVJl
ZigpLCAwLCBrZXkuY3RybEtleSgpLCBrZXkuYWx0S2V5KCksIGtleS5zaGlmdEtleSgpLCBrZXku
bWV0YUtleSgpLCBmYWxzZSwga2V5Lm1vZGlmaWVycygpLmNvbnRhaW5zKFBsYXRmb3JtRXZlbnQ6
Ok1vZGlmaWVyOjpDYXBzTG9ja0tleSkpCiAgICAgLCBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50
KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1LZXlib2FyZEV2ZW50PihrZXkpKQogI2lmIEVOQUJM
RShLRVlCT0FSRF9LRVlfQVRUUklCVVRFKQogICAgICwgbV9rZXkoa2V5LmtleSgpKQpAQCAtMTA0
LDcgKzEwNSw3IEBAIGlubGluZSBLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KGNvbnN0IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudCYga2V5LCBET01XaW5kb3cqCiAgICAgLCBtX2tleUlkZW50aWZp
ZXIoa2V5LmtleUlkZW50aWZpZXIoKSkKICAgICAsIG1fbG9jYXRpb24oa2V5TG9jYXRpb25Db2Rl
KGtleSkpCiAgICAgLCBtX3JlcGVhdChrZXkuaXNBdXRvUmVwZWF0KCkpCi0gICAgLCBtX2lzQ29t
cG9zaW5nKHZpZXcgJiYgdmlldy0+ZnJhbWUoKSAmJiB2aWV3LT5mcmFtZSgpLT5lZGl0b3IoKS5o
YXNDb21wb3NpdGlvbigpKQorICAgICwgbV9pc0NvbXBvc2luZyh2aWV3ICYmIGlzPERPTVdpbmRv
dz4odmlldy0+d2luZG93KCkpICYmIGRvd25jYXN0PERPTVdpbmRvdz4oKnZpZXctPndpbmRvdygp
KS5mcmFtZSgpICYmIGRvd25jYXN0PERPTVdpbmRvdz4oKnZpZXctPndpbmRvdygpKS5mcmFtZSgp
LT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKQogI2lmIFVTRShBUFBLSVQpCiAgICAgLCBtX2hh
bmRsZWRCeUlucHV0TWV0aG9kKGtleS5oYW5kbGVkQnlJbnB1dE1ldGhvZCgpKQogICAgICwgbV9r
ZXlwcmVzc0NvbW1hbmRzKGtleS5jb21tYW5kcygpKQpAQCAtMTMyLDkgKzEzMyw5IEBAIGlubGlu
ZSBLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBjb25zdCBJbml0JiBpCiAKIEtleWJvYXJkRXZlbnQ6On5LZXlib2FyZEV2ZW50KCkgPSBk
ZWZhdWx0OwogCi1SZWY8S2V5Ym9hcmRFdmVudD4gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGNvbnN0
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgcGxhdGZvcm1FdmVudCwgRE9NV2luZG93KiB2aWV3KQor
UmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQmIHBsYXRmb3JtRXZlbnQsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3KQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEtleWJvYXJkRXZlbnQocGxhdGZvcm1FdmVudCwg
dmlldykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEtleWJvYXJkRXZlbnQocGxhdGZvcm1F
dmVudCwgV1RGTW92ZSh2aWV3KSkpOwogfQogCiBSZWY8S2V5Ym9hcmRFdmVudD4gS2V5Ym9hcmRF
dmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQpAQCAtMTQ3LDEzICsxNDgsMTMgQEAgUmVmPEtleWJv
YXJkRXZlbnQ+IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGNvbnN0IEluaXQmIGkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBLZXlib2FyZEV2ZW50KHR5
cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKIH0KIAotdm9pZCBLZXlib2FyZEV2ZW50Ojpp
bml0S2V5Ym9hcmRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywKK3ZvaWQgS2V5Ym9hcmRFdmVudDo6
aW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICBjb25z
dCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIHVuc2lnbmVkIGxvY2F0aW9uLCBib29sIGN0cmxLZXks
IGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIGJvb2wgYWx0R3JhcGhL
ZXkpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgMCk7Cisg
ICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcp
LCAwKTsKIAogICAgIG1fa2V5SWRlbnRpZmllciA9IGtleUlkZW50aWZpZXI7CiAgICAgbV9sb2Nh
dGlvbiA9IGxvY2F0aW9uOwpAQCAtMjI3LDggKzIyOCw5IEBAIGludCBLZXlib2FyZEV2ZW50Ojpj
aGFyQ29kZSgpIGNvbnN0CiAgICAgLy8gRmlyZWZveDogMCBmb3Iga2V5ZG93bi9rZXl1cCBldmVu
dHMsIGNoYXJhY3RlciBjb2RlIGZvciBrZXlwcmVzcwogICAgIC8vIFdlIG1hdGNoIEZpcmVmb3gs
IHVubGVzcyBpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG1vZGUsIHdoZXJlIHdlIGFsd2F5cyBy
ZXR1cm4gdGhlIGNoYXJhY3RlciBjb2RlLgogICAgIGJvb2wgYmFja3dhcmRDb21wYXRpYmlsaXR5
TW9kZSA9IGZhbHNlOwotICAgIGlmICh2aWV3KCkgJiYgdmlldygpLT5mcmFtZSgpKQotICAgICAg
ICBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlID0gdmlldygpLT5mcmFtZSgpLT5ldmVudEhhbmRs
ZXIoKS5uZWVkc0tleWJvYXJkRXZlbnREaXNhbWJpZ3VhdGlvblF1aXJrcygpOworICAgIGF1dG8q
IHdpbmRvdyA9IHZpZXcoKSA/IHZpZXcoKS0+d2luZG93KCkgOiBudWxscHRyOworICAgIGlmIChp
czxET01XaW5kb3c+KHdpbmRvdykgJiYgZG93bmNhc3Q8RE9NV2luZG93Pigqd2luZG93KS5mcmFt
ZSgpKQorICAgICAgICBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlID0gZG93bmNhc3Q8RE9NV2lu
ZG93Pigqd2luZG93KS5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS5uZWVkc0tleWJvYXJkRXZlbnRE
aXNhbWJpZ3VhdGlvblF1aXJrcygpOwogCiAgICAgaWYgKCFtX3VuZGVybHlpbmdQbGF0Zm9ybUV2
ZW50IHx8ICh0eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQgJiYgIWJhY2t3YXJk
Q29tcGF0aWJpbGl0eU1vZGUpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9h
cmRFdmVudC5oCmluZGV4IDgyMTAzMzBlYWIwMzQxZjRjYTU0Y2QyNWM1OGI5OTU0NmYwYjE1YTku
LjFkM2NjMjQzNzk5YjE5YTc0NGVlOTc4YTE4N2VhZWFlYzg4MDVmYjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0tleWJvYXJkRXZlbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIERPTV9L
RVlfTE9DQVRJT05fTlVNUEFEID0gMHgwMwogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPEtleWJvYXJkRXZlbnQ+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQmLCBET01XaW5kb3cqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEtleWJvYXJk
RXZlbnQ+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmLCBSZWZQdHI8V2luZG93
UHJveHk+JiYpOwogICAgIHN0YXRpYyBSZWY8S2V5Ym9hcmRFdmVudD4gY3JlYXRlRm9yQmluZGlu
Z3MoKTsKIAogICAgIHN0cnVjdCBJbml0IDogcHVibGljIEV2ZW50TW9kaWZpZXJJbml0IHsKQEAg
LTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+S2V5Ym9hcmRFdmVudCgpOwog
ICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5k
b3cqLAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYsCiAgICAgICAgIGNvbnN0IFN0cmluZyYga2V5SWRlbnRpZmllciwgdW5z
aWduZWQgbG9jYXRpb24sCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSwgYm9vbCBhbHRHcmFwaEtleSA9IGZhbHNlKTsKICAgICAK
QEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgS2V5Ym9hcmRFdmVu
dCgpOwotICAgIEtleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgRE9N
V2luZG93Kik7CisgICAgS2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQm
LCBSZWZQdHI8V2luZG93UHJveHk+JiYpOwogICAgIEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1LZXlib2FyZEV2ZW50PiBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaWRsIGIvU291cmNlL1dlYkNv
cmUvZG9tL0tleWJvYXJkRXZlbnQuaWRsCmluZGV4IDc1N2MwNzc5M2Y1ZTVmMWUxODQzOGY3OGRk
NDQ3ZTlhM2ExZDUxMDkuLmNkZTQ1MGMzNDM1MzM1MDkyYTE3N2Q2ZGY2MzY4YmY2MzUxZDcxMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5pZGwKQEAgLTUyLDcgKzUyLDcgQEAKICAg
ICAvLyBGSVhNRTogdGhpcyBkb2VzIG5vdCBtYXRjaCB0aGUgdmVyc2lvbiBpbiB0aGUgRE9NIHNw
ZWMuCiAgICAgLy8gRklYTUU6IFVzaW5nICJ1bmRlZmluZWQiIGFzIGRlZmF1bHQgcGFyYW1ldGVy
IHZhbHVlIGlzIHdyb25nLgogICAgIHZvaWQgaW5pdEtleWJvYXJkRXZlbnQob3B0aW9uYWwgRE9N
U3RyaW5nIHR5cGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGUgPSBm
YWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlID0gZmFsc2UsCi0gICAgICAgIG9wdGlv
bmFsIERPTVdpbmRvdz8gdmlldyA9IG51bGwsIG9wdGlvbmFsIERPTVN0cmluZyBrZXlJZGVudGlm
aWVyID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbG9jYXRpb24gPSAwLAor
ICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlldyA9IG51bGwsIG9wdGlvbmFsIERPTVN0
cmluZyBrZXlJZGVudGlmaWVyID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcg
bG9jYXRpb24gPSAwLAogICAgICAgICBvcHRpb25hbCBib29sZWFuIGN0cmxLZXkgPSBmYWxzZSwg
b3B0aW9uYWwgYm9vbGVhbiBhbHRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBzaGlmdEtl
eSA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIG1ldGFLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9v
bGVhbiBhbHRHcmFwaEtleSA9IGZhbHNlKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQu
aAppbmRleCA1MTk3ZDViYWUxYWUzNWFhYjA0ZjBjYjUwZTc2ZTlkOGZhYTE4Yjc5Li4zMzA5Mjc4
N2QxNGFlNjU3M2VhMWI5ZDFmZDlhN2QwZWVlMGY0MDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5oCkBAIC0yNywxMiArMjcsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkpTVmFsdWVJbldyYXBw
ZWRPYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKKyNpbmNsdWRlICJX
aW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQwLDkgKzQwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYjsK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXVzaW5nIE1lc3NhZ2VFdmVudFNvdXJjZSA9
IFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxNZXNzYWdlUG9ydD4sIFJlZlB0cjxT
ZXJ2aWNlV29ya2VyPj47Cit1c2luZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0
cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxNZXNzYWdlUG9ydD4sIFJlZlB0cjxTZXJ2aWNlV29ya2Vy
Pj47CiAjZWxzZQotdXNpbmcgTWVzc2FnZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8RE9N
V2luZG93PiwgUmVmUHRyPE1lc3NhZ2VQb3J0Pj47Cit1c2luZyBNZXNzYWdlRXZlbnRTb3VyY2Ug
PSBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxNZXNzYWdlUG9ydD4+OwogI2Vu
ZGlmCiAKIGNsYXNzIE1lc3NhZ2VFdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlRXZlbnQuaWRsCmluZGV4IDAyNDM4ZmQ0YzQ3YzNmYzI5MmVhYmY0N2U1YzVl
ODNmODY5NTA4MjIuLmZhNDhjOGZhNWRhNWZkYzNlMGYyYzJmN2VmYmZhNzVjZDhmNTQwYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCkBAIC0yNyw5ICsyNyw5IEBACiAgKi8KIAog
I2lmIGRlZmluZWQoRU5BQkxFX1NFUlZJQ0VfV09SS0VSKSAmJiBFTkFCTEVfU0VSVklDRV9XT1JL
RVIKLXR5cGVkZWYgKERPTVdpbmRvdyBvciBNZXNzYWdlUG9ydCBvciBTZXJ2aWNlV29ya2VyKSBN
ZXNzYWdlRXZlbnRTb3VyY2U7Cit0eXBlZGVmIChXaW5kb3dQcm94eSBvciBNZXNzYWdlUG9ydCBv
ciBTZXJ2aWNlV29ya2VyKSBNZXNzYWdlRXZlbnRTb3VyY2U7CiAjZWxzZQotdHlwZWRlZiAoRE9N
V2luZG93IG9yIE1lc3NhZ2VQb3J0KSBNZXNzYWdlRXZlbnRTb3VyY2U7Cit0eXBlZGVmIChXaW5k
b3dQcm94eSBvciBNZXNzYWdlUG9ydCkgTWVzc2FnZUV2ZW50U291cmNlOwogI2VuZGlmCiAKIFsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAppbmRleCBhMTQ3ZTEyMThiYjZlMjRmMmFkNzY0NzA3
NDYwYzY2NzAyMWY2YzU5Li5jODk2Zjg2MzFhM2QyYmJkYTE5MzA2MjEwZmVkZGI4OTg2ZTRjYTYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCkBAIC00NCwxMyArNDQsMTMgQEAgUmVmPE1v
dXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNv
bnN0IE1vdXNlRXZlbnRJbmkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb3VzZUV2ZW50KHR5
cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsKIH0KIAotUmVmPE1vdXNlRXZlbnQ+IE1vdXNl
RXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2
aWV3LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBpbnQgZGV0YWlsLCBOb2RlKiBy
ZWxhdGVkVGFyZ2V0KQorUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGludCBkZXRhaWwsIE5vZGUqIHJlbGF0ZWRUYXJn
ZXQpCiB7CiAgICAgYm9vbCBpc01vdXNlRW50ZXJPckxlYXZlID0gZXZlbnRUeXBlID09IGV2ZW50
TmFtZXMoKS5tb3VzZWVudGVyRXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5tb3Vz
ZWxlYXZlRXZlbnQ7CiAgICAgYm9vbCBpc0NhbmNlbGFibGUgPSBldmVudFR5cGUgIT0gZXZlbnRO
YW1lcygpLm1vdXNlbW92ZUV2ZW50ICYmICFpc01vdXNlRW50ZXJPckxlYXZlOwogICAgIGJvb2wg
Y2FuQnViYmxlID0gIWlzTW91c2VFbnRlck9yTGVhdmU7CiAKLSAgICByZXR1cm4gTW91c2VFdmVu
dDo6Y3JlYXRlKGV2ZW50VHlwZSwgY2FuQnViYmxlLCBpc0NhbmNlbGFibGUsIGV2ZW50LnRpbWVz
dGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LAorICAgIHJldHVybiBNb3Vz
ZUV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGlzQ2FuY2VsYWJsZSwgZXZlbnQu
dGltZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCksIFdURk1vdmUodmlldyksCiAg
ICAgICAgIGRldGFpbCwgZXZlbnQuZ2xvYmFsUG9zaXRpb24oKS54KCksIGV2ZW50Lmdsb2JhbFBv
c2l0aW9uKCkueSgpLCBldmVudC5wb3NpdGlvbigpLngoKSwgZXZlbnQucG9zaXRpb24oKS55KCks
CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgZXZlbnQubW92ZW1lbnREZWx0YSgp
LngoKSwgZXZlbnQubW92ZW1lbnREZWx0YSgpLnkoKSwKQEAgLTU5LDEzICs1OSwxMyBAQCBSZWY8
TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBET01XaW5kb3cqIHZpZQogICAgICAgICByZWxhdGVkVGFyZ2V0LCBldmVudC5mb3JjZSgp
LCBldmVudC5zeW50aGV0aWNDbGlja1R5cGUoKSk7CiB9CiAKLVJlZjxNb3VzZUV2ZW50PiBNb3Vz
ZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiB2aWV3
LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBh
Z2VZLAorUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUg
dGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNj
cmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKICNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQogICAgIGludCBtb3ZlbWVudFgsIGludCBtb3ZlbWVudFksCiAjZW5kaWYKICAg
ICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXks
IHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgRXZlbnRUYXJn
ZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwgdW5zaWduZWQgc2hvcnQgc3ludGhldGlj
Q2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIqIGRhdGFUcmFuc2ZlciwgYm9vbCBpc1NpbXVsYXRlZCkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwg
Y2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2aWV3LAorICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1v
dXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIFdURk1vdmUo
dmlldyksCiAgICAgICAgIGRldGFpbCwgeyBzY3JlZW5YLCBzY3JlZW5ZIH0sIHsgcGFnZVgsIHBh
Z2VZIH0sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgeyBtb3ZlbWVudFgsIG1v
dmVtZW50WSB9LApAQCAtNzMsMTkgKzczLDE5IEBAIFJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50
OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vCiAg
ICAgICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9u
cywgcmVsYXRlZFRhcmdldCwgZm9yY2UsIHN5bnRoZXRpY0NsaWNrVHlwZSwgZGF0YVRyYW5zZmVy
LCBpc1NpbXVsYXRlZCkpOwogfQogCi1SZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2Ny
ZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5
LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5z
aWduZWQgc2hvcnQgYnV0dG9ucywgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBF
dmVudFRhcmdldCogcmVsYXRlZFRhcmdldCkKK1JlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50Ojpj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBpbnQg
c2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJs
S2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBz
aG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVkIHNob3J0IHN5bnRo
ZXRpY0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJs
ZSwgdmlldywgZGV0YWlsLCB7IHNjcmVlblgsIHNjcmVlblkgfSwgeyBjbGllbnRYLCBjbGllbnRZ
IH0sIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9ucywg
c3ludGhldGljQ2xpY2tUeXBlLCByZWxhdGVkVGFyZ2V0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgTW91c2VFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92
ZSh2aWV3KSwgZGV0YWlsLCB7IHNjcmVlblgsIHNjcmVlblkgfSwgeyBjbGllbnRYLCBjbGllbnRZ
IH0sIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9ucywg
c3ludGhldGljQ2xpY2tUeXBlLCByZWxhdGVkVGFyZ2V0KSk7CiB9CiAKIE1vdXNlRXZlbnQ6Ok1v
dXNlRXZlbnQoKSA9IGRlZmF1bHQ7CiAKLU1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1v
bm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGNvbnN0
IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9u
LAorTW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAs
IFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYg
c2NyZWVuTG9jYXRpb24sIGNvbnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwK
ICNlbmRpZgogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0
dG9ucywgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwgdW5zaWduZWQg
c2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBEYXRhVHJhbnNmZXIqIGRhdGFUcmFuc2ZlciwgYm9v
bCBpc1NpbXVsYXRlZCkKLSAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnVi
YmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIHZpZXcsIGRldGFpbCwgc2NyZWVuTG9jYXRpb24s
IHdpbmRvd0xvY2F0aW9uLAorICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZlbnRUeXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIHRpbWVzdGFtcCwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCBzY3Jl
ZW5Mb2NhdGlvbiwgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAg
ICAgICAgbW92ZW1lbnREZWx0YSwKICNlbmRpZgpAQCAtMTAwLDggKzEwMCw4IEBAIE1vdXNlRXZl
bnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlCiB7CiB9CiAKLU1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERP
TVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9u
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50TG9jYXRpb24sIGJvb2wgY3RybEtleSwgYm9vbCBhbHRL
ZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1
bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUs
IEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KQotICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZl
bnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWU6Om5vdygpLCB2aWV3
LCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB7IH0sCitNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgY29uc3QgSW50UG9p
bnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgY2xpZW50TG9jYXRpb24sIGJvb2wg
Y3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWdu
ZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBz
eW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KQorICAgIDogTW91
c2VSZWxhdGVkRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIE1vbm90b25p
Y1RpbWU6Om5vdygpLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB7IH0s
CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgeyB9LAogI2VuZGlmCkBAIC0xMjcs
MTIgKzEyNywxMiBAQCBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBjb25zdCBNb3VzZUV2ZW50SW5pdCYgaW5pdAogCiBNb3VzZUV2ZW50Ojp+TW91
c2VFdmVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBNb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBp
bnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBFdmVudFRhcmdl
dCogcmVsYXRlZFRhcmdldCkKK3ZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3Jl
ZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXks
IGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBFdmVu
dFRhcmdldCogcmVsYXRlZFRhcmdldCkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCB2aWV3LCBkZXRhaWwpOworICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwg
Y2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKTsKIAogICAgIG1fc2NyZWVuTG9jYXRp
b24gPSBJbnRQb2ludChzY3JlZW5YLCBzY3JlZW5ZKTsKICAgICBtX2N0cmxLZXkgPSBjdHJsS2V5
OwpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjCiAKIC8vIEZJWE1F
OiBXZSBuZWVkIHRoaXMgcXVpcmsgYmVjYXVzZSBpQWQgUHJvZHVjZXIgaXMgY2FsbGluZyB0aGlz
IGZ1bmN0aW9uIHdpdGggYSByZWxhdGVkVGFyZ2V0IHRoYXQgaXMgbm90IGFuIEV2ZW50VGFyZ2V0
IChyZGFyOi8vcHJvYmxlbS8zMDY0MDEwMSkuCiAvLyBXZSBzaG91bGQgcmVtb3ZlIHRoaXMgcXVp
cmsgd2hlbiBwb3NzaWJsZS4KLXZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayhF
eGVjU3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBz
Y3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRL
ZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBK
U1ZhbHVlIHJlbGF0ZWRUYXJnZXRWYWx1ZSkKK3ZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZl
bnRRdWlyayhFeGVjU3RhdGUmIHN0YXRlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWls
LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9v
bCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNp
Z25lZCBzaG9ydCBidXR0b24sIEpTVmFsdWUgcmVsYXRlZFRhcmdldFZhbHVlKQogewogICAgIEV2
ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0ID0gbnVsbHB0cjsKICNpZiBQTEFURk9STShNQUMpCkBA
IC0xNzYsNyArMTc2LDcgQEAgdm9pZCBNb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudFF1aXJrKEV4
ZWNTdGF0ZSYgc3RhdGUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHMKICNpZiBQTEFURk9STShN
QUMpCiAgICAgfQogI2VuZGlmCi0gICAgaW5pdE1vdXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBj
YW5jZWxhYmxlLCB2aWV3LCBkZXRhaWwsIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVu
dFksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgcmVsYXRlZFRh
cmdldCk7CisgICAgaW5pdE1vdXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBX
VEZNb3ZlKHZpZXcpLCBkZXRhaWwsIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVudFks
IGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgcmVsYXRlZFRhcmdl
dCk7CiB9CiAKIEV2ZW50SW50ZXJmYWNlIE1vdXNlRXZlbnQ6OmV2ZW50SW50ZXJmYWNlKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTW91c2VFdmVudC5oCmluZGV4IDI2Y2FmOGY2YjE5MTUxNjY4YjY4MDM1NTRh
MGIwMDE2NGQzZTFmY2YuLjRiMjgwNzk5NTViNGNiNzNhMmNlMTY4ZWI1YTEzOWQ3MzE1NmE5Zjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaApAQCAtMjksMTkgKzI5LDIwIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIERhdGFUcmFuc2ZlcjsKK2NsYXNzIE5vZGU7CiBjbGFzcyBQbGF0
Zm9ybU1vdXNlRXZlbnQ7CiAKIGNsYXNzIE1vdXNlRXZlbnQgOiBwdWJsaWMgTW91c2VSZWxhdGVk
RXZlbnQgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW91c2VFdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIERPTVdpbmRvdyosIGludCBkZXRh
aWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNU
aW1lIHRpbWVzdGFtcCwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQgZGV0YWlsLCBpbnQgc2Ny
ZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogI2lmIEVOQUJMRShQT0lO
VEVSX0xPQ0spCiAgICAgICAgIGludCBtb3ZlbWVudFgsIGludCBtb3ZlbWVudFksCiAjZW5kaWYK
ICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBt
ZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIEV2
ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0LCBkb3VibGUgZm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5
bnRoZXRpY0NsaWNrVHlwZSwgRGF0YVRyYW5zZmVyKiA9IG51bGxwdHIsIGJvb2wgaXNTaW11bGF0
ZWQgPSBmYWxzZSk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+
IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiwgaW50IGRldGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiwgaW50IGRldGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCk7CiAKLSAgICBz
dGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFp
bCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJv
b2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5z
aWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9y
dCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KTsKKyAgICBz
dGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYm
LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQg
Y2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBt
ZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVu
c2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJn
ZXQpOwogCiAgICAgc3RhdGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudCk7IH0KIApAQCAtNDksOCArNTAsOCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIH5Nb3VzZUV2ZW50KCk7CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGluaXRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFpbCwgaW50IHNjcmVl
blgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQg
YnV0dG9uLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCk7Ci0gICAgdm9pZCBpbml0TW91c2VF
dmVudFF1aXJrKEpTQzo6RXhlY1N0YXRlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9N
V2luZG93KiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50
WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXks
IGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBKU0M6OkpTVmFsdWUgcmVsYXRl
ZFRhcmdldCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0TW91c2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBp
bnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBFdmVudFRhcmdl
dCogcmVsYXRlZFRhcmdldCk7CisgICAgdm9pZCBpbml0TW91c2VFdmVudFF1aXJrKEpTQzo6RXhl
Y1N0YXRlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYm
LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQg
Y2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBt
ZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIEpTQzo6SlNWYWx1ZSByZWxhdGVkVGFyZ2V0
KTsKIAogICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9u
OyB9CiAgICAgdW5zaWduZWQgc2hvcnQgYnV0dG9ucygpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9u
czsgfQpAQCAtNzAsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgaW50IHdoaWNoKCkgY29uc3QgZmlu
YWw7CiAKIHByb3RlY3RlZDoKLSAgICBNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3Rh
bXAsIERPTVdpbmRvdyosCisgICAgTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1w
LCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IEludFBv
aW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAogI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIGNvbnN0IEludFBvaW50JiBtb3ZlbWVudERl
bHRhLApAQCAtNzgsNyArNzksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQg
YnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLAogICAgICAgICBFdmVudFRhcmdldCogcmVs
YXRlZFRhcmdldCwgZG91YmxlIGZvcmNlLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5
cGUsIERhdGFUcmFuc2ZlciosIGJvb2wgaXNTaW11bGF0ZWQpOwogCi0gICAgTW91c2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IERPTVdpbmRvdyosCisgICAgTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKICAg
ICAgICAgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJ
bnRQb2ludCYgY2xpZW50TG9jYXRpb24sCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRL
ZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwKICAgICAgICAgdW5zaWduZWQgc2hvcnQg
YnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWND
bGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2
ZW50LmlkbAppbmRleCAwYmUwZjg4ZGQzNWQ3Y2RmYjhkMzU0MmRhZGUxNmUzMjk0ZmRjODNhLi42
MGM0NDY2NjcxZjA2MTlmZWUwOWQwZjAxOTNmOWE0MWY2YjNlODEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01v
dXNlRXZlbnQuaWRsCkBAIC00Myw3ICs0Myw3IEBACiAgICAgLy8gRklYTUU6IHJlbGF0ZWRUYXJn
ZXQgc2hvdWxkIGJlIG9mIHR5cGUgRXZlbnRUYXJnZXQ/IGJ1dCB3ZSBuZWVkIHRvIHVzZSBhbnkg
dG8gc3VwcG9ydCBhIHF1aXJrIGZvciBpQWQgUHJvZHVjZXIgKHJkYXI6Ly9wcm9ibGVtLzMwNjQw
MTAxKS4KICAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
SW1wbGVtZW50ZWRBcz1pbml0TW91c2VFdmVudFF1aXJrXSB2b2lkIGluaXRNb3VzZUV2ZW50KG9w
dGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsCiAgICAgICAgIG9wdGlvbmFsIGJv
b2xlYW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZh
bHNlLAotICAgICAgICBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBs
b25nIGRldGFpbCA9IDAsCisgICAgICAgIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVs
bCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAwLAogICAgICAgICBvcHRpb25hbCBsb25nIHNjcmVl
blggPSAwLCBvcHRpb25hbCBsb25nIHNjcmVlblkgPSAwLCBvcHRpb25hbCBsb25nIGNsaWVudFgg
PSAwLCBvcHRpb25hbCBsb25nIGNsaWVudFkgPSAwLAogICAgICAgICBvcHRpb25hbCBib29sZWFu
IGN0cmxLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBhbHRLZXkgPSBmYWxzZSwgb3B0aW9u
YWwgYm9vbGVhbiBzaGlmdEtleSA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIG1ldGFLZXkgPSBm
YWxzZSwKICAgICAgICAgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgYnV0dG9uID0gMCwgb3B0aW9u
YWwgYW55IHJlbGF0ZWRUYXJnZXQgPSBudWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxh
dGVkRXZlbnQuY3BwCmluZGV4IDg1MzcxNGQ2YWIxZjAxZThhNWVhY2UwZDBlNDM5NzVlYjNkNTg0
OWYuLjgwYTgyNjdkYzIxYmQ4YjNiZjUxODMwZmU0YjMwYTQyYTYxMjAxNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiBET01XaW5kb3csCitN
b3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUg
dGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9j
YXRpb24sIGNvbnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFBv
aW50JiBtb3ZlbWVudERlbHRhLAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBt
ZXRhS2V5LCBib29sIGlzU2ltdWxhdGVkKQotICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVu
dFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCBET01XaW5kb3csIGRldGFp
bCwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSwgZmFsc2UsIGZhbHNlKQorICAg
IDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwg
dGltZXN0YW1wLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwsIGN0cmxLZXksIGFsdEtleSwgc2hpZnRL
ZXksIG1ldGFLZXksIGZhbHNlLCBmYWxzZSkKICAgICAsIG1fc2NyZWVuTG9jYXRpb24oc2NyZWVu
TG9jYXRpb24pCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAsIG1fbW92ZW1lbnREZWx0
YShtb3ZlbWVudERlbHRhKQpAQCAtNjEsNyArNjEsNyBAQCBNb3VzZVJlbGF0ZWRFdmVudDo6TW91
c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IE1vdXNl
Ugogdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdChib29sIGlzU2ltdWxhdGVkLCBjb25zdCBJ
bnRQb2ludCYgd2luZG93TG9jYXRpb24pCiB7CiAgICAgaWYgKCFpc1NpbXVsYXRlZCkgewotICAg
ICAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJvbURPTVdpbmRvdyh2aWV3KCkp
KSB7CisgICAgICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9tV2luZG93UHJv
eHkodmlldygpKSkgewogICAgICAgICAgICAgRmxvYXRQb2ludCBhYnNvbHV0ZVBvaW50ID0gZnJh
bWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKHdpbmRvd0xvY2F0aW9uKTsKICAgICAgICAgICAgIEZs
b2F0UG9pbnQgZG9jdW1lbnRQb2ludCA9IGZyYW1lVmlldy0+YWJzb2x1dGVUb0RvY3VtZW50UG9p
bnQoYWJzb2x1dGVQb2ludCk7CiAgICAgICAgICAgICBtX3BhZ2VMb2NhdGlvbiA9IGZsb29yZWRM
YXlvdXRQb2ludChkb2N1bWVudFBvaW50KTsKQEAgLTgzLDEzICs4MywxMyBAQCB2b2lkIE1vdXNl
UmVsYXRlZEV2ZW50Ojppbml0Q29vcmRpbmF0ZXMoKQogICAgIG1faGFzQ2FjaGVkUmVsYXRpdmVQ
b3NpdGlvbiA9IGZhbHNlOwogfQogCi1GcmFtZVZpZXcqIE1vdXNlUmVsYXRlZEV2ZW50OjpmcmFt
ZVZpZXdGcm9tRE9NV2luZG93KERPTVdpbmRvdyogd2luZG93KQorRnJhbWVWaWV3KiBNb3VzZVJl
bGF0ZWRFdmVudDo6ZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KFdpbmRvd1Byb3h5KiB3aW5kb3dQ
cm94eSkKIHsKLSAgICBhdXRvKiBmcmFtZSA9IHdpbmRvdyA/IHdpbmRvdy0+ZnJhbWUoKSA6IG51
bGxwdHI7Ci0gICAgaWYgKCFmcmFtZSkKKyAgICBpZiAoIXdpbmRvd1Byb3h5IHx8ICFpczxET01X
aW5kb3c+KHdpbmRvd1Byb3h5LT53aW5kb3coKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIGZyYW1lLT52aWV3KCk7CisgICAgYXV0byogZnJhbWUgPSBkb3duY2FzdDxE
T01XaW5kb3c+KCp3aW5kb3dQcm94eS0+d2luZG93KCkpLmZyYW1lKCk7CisgICAgcmV0dXJuIGZy
YW1lID8gZnJhbWUtPnZpZXcoKSA6IG51bGxwdHI7CiB9CiAKIExheW91dFBvaW50IE1vdXNlUmVs
YXRlZEV2ZW50OjpwYWdlUG9pbnRUb0NsaWVudFBvaW50KExheW91dFBvaW50IHBhZ2VQb2ludCwg
RnJhbWVWaWV3KiBmcmFtZVZpZXcpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBNb3VzZVJlbGF0
ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVzKGNvbnN0IExheW91dFBvaW50JiBjbGllbnRMb2NhdGlv
bikKICAgICAvLyBTZXQgdXAgaW5pdGlhbCB2YWx1ZXMgZm9yIGNvb3JkaW5hdGVzLgogICAgIC8v
IENvcnJlY3QgdmFsdWVzIGFyZSBjb21wdXRlZCBsYXppbHksIHNlZSBjb21wdXRlUmVsYXRpdmVQ
b3NpdGlvbi4KICAgICBGbG9hdFNpemUgZG9jdW1lbnRUb0NsaWVudE9mZnNldDsKLSAgICBpZiAo
YXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJvbURPTVdpbmRvdyh2aWV3KCkpKQorICAgIGlm
IChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9tV2luZG93UHJveHkodmlldygpKSkKICAg
ICAgICAgZG9jdW1lbnRUb0NsaWVudE9mZnNldCA9IGZyYW1lVmlldy0+ZG9jdW1lbnRUb0NsaWVu
dE9mZnNldCgpOwogCiAgICAgbV9jbGllbnRMb2NhdGlvbiA9IGNsaWVudExvY2F0aW9uOwpAQCAt
MTI4LDcgKzEyOCw3IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGluYXRlcyhj
b25zdCBMYXlvdXRQb2ludCYgY2xpZW50TG9jYXRpb24pCiAKIGZsb2F0IE1vdXNlUmVsYXRlZEV2
ZW50Ojpkb2N1bWVudFRvQWJzb2x1dGVTY2FsZUZhY3RvcigpIGNvbnN0CiB7Ci0gICAgaWYgKGF1
dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSkKKyAgICBpZiAo
YXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpCiAgICAg
ICAgIHJldHVybiBmcmFtZVZpZXctPmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFjdG9yKCk7CiAK
ICAgICByZXR1cm4gMTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBmbG9hdCBNb3VzZVJlbGF0ZWRFdmVu
dDo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3IoKSBjb25zdAogCiB2b2lkIE1vdXNlUmVs
YXRlZEV2ZW50Ojpjb21wdXRlUGFnZUxvY2F0aW9uKCkKIHsKLSAgICBtX2Fic29sdXRlTG9jYXRp
b24gPSBwYWdlUG9pbnRUb0Fic29sdXRlUG9pbnQobV9wYWdlTG9jYXRpb24sIGZyYW1lVmlld0Zy
b21ET01XaW5kb3codmlldygpKSk7CisgICAgbV9hYnNvbHV0ZUxvY2F0aW9uID0gcGFnZVBvaW50
VG9BYnNvbHV0ZVBvaW50KG1fcGFnZUxvY2F0aW9uLCBmcmFtZVZpZXdGcm9tV2luZG93UHJveHko
dmlldygpKSk7CiB9CiAKIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OnJlY2VpdmVkVGFyZ2V0KCkK
QEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUmVsYXRp
dmVQb3NpdGlvbigpCiAgICAgCiBGbG9hdFBvaW50IE1vdXNlUmVsYXRlZEV2ZW50Ojpsb2NhdGlv
bkluUm9vdFZpZXdDb29yZGluYXRlcygpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmll
dyA9IGZyYW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSkKKyAgICBpZiAoYXV0byogZnJhbWVW
aWV3ID0gZnJhbWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpCiAgICAgICAgIHJldHVybiBm
cmFtZVZpZXctPmNvbnRlbnRzVG9Sb290Vmlldyhyb3VuZGVkSW50UG9pbnQobV9hYnNvbHV0ZUxv
Y2F0aW9uKSk7CiAKICAgICByZXR1cm4gbV9hYnNvbHV0ZUxvY2F0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VSZWxhdGVkRXZlbnQuaAppbmRleCAwZDgzYzM2MDlmNzFlYWZlZjIxNzFhOWNkMGQ0
MzFhZTZkODU0ZjhiLi5hZDRlNWQwYzM1NmY1NDFlMDgyZTExYTI2YTJkMGNjMTE1ZmQ1OWM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaApAQCAtNjcsMTQgKzY3LDE0IEBA
IHB1YmxpYzoKICAgICAvLyB1c2FibGUgd2l0aCBSZW5kZXJPYmplY3Q6OmFic29sdXRlVG9Mb2Nh
bCkuCiAgICAgY29uc3QgTGF5b3V0UG9pbnQmIGFic29sdXRlTG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2Fic29sdXRlTG9jYXRpb247IH0KICAgICAKLSAgICBzdGF0aWMgRnJhbWVWaWV3KiBm
cmFtZVZpZXdGcm9tRE9NV2luZG93KERPTVdpbmRvdyopOworICAgIHN0YXRpYyBGcmFtZVZpZXcq
IGZyYW1lVmlld0Zyb21XaW5kb3dQcm94eShXaW5kb3dQcm94eSopOwogCiAgICAgc3RhdGljIExh
eW91dFBvaW50IHBhZ2VQb2ludFRvQ2xpZW50UG9pbnQoTGF5b3V0UG9pbnQgcGFnZVBvaW50LCBG
cmFtZVZpZXcqKTsKICAgICBzdGF0aWMgTGF5b3V0UG9pbnQgcGFnZVBvaW50VG9BYnNvbHV0ZVBv
aW50KExheW91dFBvaW50IHBhZ2VQb2ludCwgRnJhbWVWaWV3Kik7CiAKIHByb3RlY3RlZDoKICAg
ICBNb3VzZVJlbGF0ZWRFdmVudCgpID0gZGVmYXVsdDsKLSAgICBNb3VzZVJlbGF0ZWRFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqLAorICAgIE1vdXNlUmVsYXRlZEV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKICAg
ICAgICAgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJ
bnRQb2ludCYgd2luZG93TG9jYXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAg
ICAgY29uc3QgSW50UG9pbnQmIG1vdmVtZW50RGVsdGEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNGIx
ZTg3MjU3OTUzM2ZiZjc4NzEyZmQ2ZDIzZDJjODE1YjAzZWIzOC4uYmJhNjc4YTJhNzFiNjRlMjVi
MmYwMDc3ZGY5NjU0Y2RkYjFmYzYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIkNvbXBvc2VkVHJlZUFuY2VzdG9ySXRlcmF0b3IuaCIKICNpbmNsdWRlICJD
b250YWluZXJOb2RlQWxnb3JpdGhtcy5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlci5oIgog
I2luY2x1ZGUgIkRvY3VtZW50VHlwZS5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgpA
QCAtMjM1MCw3ICsyMzUxLDcgQEAgdm9pZCBOb2RlOjpkaXNwYXRjaERPTUFjdGl2YXRlRXZlbnQo
RXZlbnQmIHVuZGVybHlpbmdDbGlja0V2ZW50KQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkOjppc1Njcmlw
dEFsbG93ZWQoKSk7CiAgICAgaW50IGRldGFpbCA9IGlzPFVJRXZlbnQ+KHVuZGVybHlpbmdDbGlj
a0V2ZW50KSA/IGRvd25jYXN0PFVJRXZlbnQ+KHVuZGVybHlpbmdDbGlja0V2ZW50KS5kZXRhaWwo
KSA6IDA7Ci0gICAgYXV0byBldmVudCA9IFVJRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9N
QWN0aXZhdGVFdmVudCwgdHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCBkZXRh
aWwpOworICAgIGF1dG8gZXZlbnQgPSBVSUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTUFj
dGl2YXRlRXZlbnQsIHRydWUsIHRydWUsIGRvY3VtZW50KCkud2luZG93UHJveHkoKSwgZGV0YWls
KTsKICAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KCZ1bmRlcmx5aW5nQ2xpY2tFdmVudCk7
CiAgICAgZGlzcGF0Y2hTY29wZWRFdmVudChldmVudCk7CiAgICAgaWYgKGV2ZW50LT5kZWZhdWx0
SGFuZGxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRlZENsaWNr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAKaW5kZXggZTBmNGUz
NTJlY2ExOGRjZGM4NTkyNDkyZWM1MDg0MjkyOGFiNjU3NC4uZjQ2NDM5YWE2MGY2NmYxYTYyMjRh
ZmU3Y2E2OWFkOWU4NDJkMDZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXVs
YXRlZENsaWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltdWxhdGVkQ2xpY2suY3Bw
CkBAIC0zNywxNCArMzcsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaW11bGF0
ZWRNb3VzZUV2ZW50IGZpbmFsIDogcHVibGljIE1vdXNlRXZlbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8U2ltdWxhdGVkTW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZl
bnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVkQ2xpY2tTb3VyY2Ugc291cmNlKQorICAgIHN0
YXRpYyBSZWY8U2ltdWxhdGVkTW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgUmVmUHRyPEV2ZW50PiYmIHVu
ZGVybHlpbmdFdmVudCwgRWxlbWVudCYgdGFyZ2V0LCBTaW11bGF0ZWRDbGlja1NvdXJjZSBzb3Vy
Y2UpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW11bGF0ZWRNb3VzZUV2
ZW50KGV2ZW50VHlwZSwgdmlldywgV1RGTW92ZSh1bmRlcmx5aW5nRXZlbnQpLCB0YXJnZXQsIHNv
dXJjZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW11bGF0ZWRNb3VzZUV2ZW50
KGV2ZW50VHlwZSwgV1RGTW92ZSh2aWV3KSwgV1RGTW92ZSh1bmRlcmx5aW5nRXZlbnQpLCB0YXJn
ZXQsIHNvdXJjZSkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTaW11bGF0ZWRNb3VzZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxF
dmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVkQ2xpY2tT
b3VyY2Ugc291cmNlKQotICAgICAgICA6IE1vdXNlRXZlbnQoZXZlbnRUeXBlLCB0cnVlLCB0cnVl
LCB1bmRlcmx5aW5nRXZlbnQgPyB1bmRlcmx5aW5nRXZlbnQtPnRpbWVTdGFtcCgpIDogTW9ub3Rv
bmljVGltZTo6bm93KCksIHZpZXcsIDAsIHsgfSwgeyB9LAorICAgIFNpbXVsYXRlZE1vdXNlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3LCBSZWZQdHI8RXZlbnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQsIFNp
bXVsYXRlZENsaWNrU291cmNlIHNvdXJjZSkKKyAgICAgICAgOiBNb3VzZUV2ZW50KGV2ZW50VHlw
ZSwgdHJ1ZSwgdHJ1ZSwgdW5kZXJseWluZ0V2ZW50ID8gdW5kZXJseWluZ0V2ZW50LT50aW1lU3Rh
bXAoKSA6IE1vbm90b25pY1RpbWU6Om5vdygpLCBXVEZNb3ZlKHZpZXcpLCAwLCB7IH0sIHsgfSwK
ICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICAgICAgeyB9LAogI2VuZGlmCkBAIC03
OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAKIHN0YXRpYyB2b2lkIHNpbXVsYXRlTW91c2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYgZWxlbWVudCwgRXZlbnQqIHVu
ZGVybHlpbmdFdmVudCwgU2ltdWxhdGVkQ2xpY2tTb3VyY2Ugc291cmNlKQogewotICAgIGVsZW1l
bnQuZGlzcGF0Y2hFdmVudChTaW11bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBl
bGVtZW50LmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdW5kZXJseWluZ0V2ZW50LCBlbGVtZW50
LCBzb3VyY2UpKTsKKyAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoU2ltdWxhdGVkTW91c2VFdmVu
dDo6Y3JlYXRlKGV2ZW50VHlwZSwgZWxlbWVudC5kb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIHVu
ZGVybHlpbmdFdmVudCwgZWxlbWVudCwgc291cmNlKSk7CiB9CiAKIHZvaWQgc2ltdWxhdGVDbGlj
ayhFbGVtZW50JiBlbGVtZW50LCBFdmVudCogdW5kZXJseWluZ0V2ZW50LCBTaW11bGF0ZWRDbGlj
a01vdXNlRXZlbnRPcHRpb25zIG1vdXNlRXZlbnRPcHRpb25zLCBTaW11bGF0ZWRDbGlja1Zpc3Vh
bE9wdGlvbnMgdmlzdWFsT3B0aW9ucywgU2ltdWxhdGVkQ2xpY2tTb3VyY2UgY3JlYXRpb25PcHRp
b25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAppbmRleCBiZDAyNGVhNTVmNmJhODRlMzJjOTA0
NDZmY2JmODI4MjA0ZDJjMzBjLi5iMDk0NDkzYzFmODU1ODQ5ODg5M2MyY2I3YzBkMDc0NmI2YWI1
YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcApAQCAtMzgsMjkgKzM4LDI5IEBAIFJlZjxU
ZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFRleHRFdmVudCk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3Jl
YXRlKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5
cGUgaW5wdXRUeXBlKQorUmVmPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGUoUmVmUHRyPFdp
bmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBl
IGlucHV0VHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQodmlldywg
ZGF0YSwgaW5wdXRUeXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdU
Rk1vdmUodmlldyksIGRhdGEsIGlucHV0VHlwZSkpOwogfQogCi1SZWY8VGV4dEV2ZW50PiBUZXh0
RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKERPTVdpbmRvdyogdmlldywgY29uc3QgU3Ry
aW5nJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSkKK1JlZjxUZXh0RXZlbnQ+IFRleHRF
dmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcs
IGNvbnN0IFN0cmluZyYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KHZpZXcsIGRhdGEsIDAsIHNob3VsZFNtYXJ0UmVw
bGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdURk1vdmUodmlldyksIGRhdGEs
IDAsIHNob3VsZFNtYXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJl
c3BlY3RCbG9ja3F1b3RlKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRl
Rm9yRnJhZ21lbnRQYXN0ZShET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiYmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUs
IE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKK1JlZjxUZXh0
RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRT
bWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGlu
ZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRl
eHRFdmVudCh2aWV3LCBlbXB0eVN0cmluZygpLCBXVEZNb3ZlKGRhdGEpLCBzaG91bGRTbWFydFJl
cGxhY2UsIHNob3VsZE1hdGNoU3R5bGUsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZW1wdHlTdHJpbmco
KSwgV1RGTW92ZShkYXRhKSwgc2hvdWxkU21hcnRSZXBsYWNlLCBzaG91bGRNYXRjaFN0eWxlLCBt
YWlsQmxvY2txdW90ZUhhbmRsaW5nKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6
Y3JlYXRlRm9yRHJvcChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxU
ZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRl
eHRFdmVudCh2aWV3LCBkYXRhLCBUZXh0RXZlbnRJbnB1dERyb3ApKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBUZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZGF0YSwgVGV4dEV2ZW50SW5wdXRE
cm9wKSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRGljdGF0aW9u
KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0
aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCitSZWY8VGV4dEV2ZW50PiBU
ZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3RhdGlvbihSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywg
Y29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBk
aWN0YXRpb25BbHRlcm5hdGl2ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2
ZW50KHZpZXcsIGRhdGEsIGRpY3RhdGlvbkFsdGVybmF0aXZlcykpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFRleHRFdmVudChXVEZNb3ZlKHZpZXcpLCBkYXRhLCBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMpKTsKIH0KIAogVGV4dEV2ZW50OjpUZXh0RXZlbnQoKQpAQCAtNzEsOCArNzEsOCBAQCBU
ZXh0RXZlbnQ6OlRleHRFdmVudCgpCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdp
bmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRU
eXBlKQotICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRy
dWUsIHZpZXcsIDApCitUZXh0RXZlbnQ6OlRleHRFdmVudChSZWZQdHI8V2luZG93UHJveHk+JiYg
dmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRUeXBlKQor
ICAgIDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIFdU
Rk1vdmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAgLCBtX2Rh
dGEoZGF0YSkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtODEsOCArODEs
OCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYg
ZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlIGlucAogewogfQogCi1UZXh0RXZlbnQ6OlRleHRFdmVu
dChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBz
aG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFu
ZGxpbmcpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwg
dHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQcm94eT4m
JiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIHBh
c3RpbmdGcmFnbWVudCwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hT
dHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQorICAg
IDogVUlFdmVudChldmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIFdURk1v
dmUodmlldyksIDApCiAgICAgLCBtX2lucHV0VHlwZShUZXh0RXZlbnRJbnB1dFBhc3RlKQogICAg
ICwgbV9kYXRhKGRhdGEpCiAgICAgLCBtX3Bhc3RpbmdGcmFnbWVudChXVEZNb3ZlKHBhc3RpbmdG
cmFnbWVudCkpCkBAIC05Miw4ICs5Miw4IEBAIFRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRv
dyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVuCiB7CiB9
CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBk
YXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMpCi0gICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwg
dHJ1ZSwgdmlldywgMCkKK1RleHRFdmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQcm94eT4m
JiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5h
dGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcykKKyAgICA6IFVJRXZlbnQoZXZlbnROYW1lcygp
LnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0cnVlLCBXVEZNb3ZlKHZpZXcpLCAwKQogICAgICwgbV9p
bnB1dFR5cGUoVGV4dEV2ZW50SW5wdXREaWN0YXRpb24pCiAgICAgLCBtX2RhdGEoZGF0YSkKICAg
ICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtMTA1LDEyICsxMDUsMTIgQEAgVGV4
dEV2ZW50OjpUZXh0RXZlbnQoRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNv
bnN0IFZlY3RvcjxEaWN0YXRpb24KIAogVGV4dEV2ZW50Ojp+VGV4dEV2ZW50KCkgPSBkZWZhdWx0
OwogCi12b2lkIFRleHRFdmVudDo6aW5pdFRleHRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhKQordm9pZCBUZXh0RXZlbnQ6OmluaXRUZXh0RXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8
V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIGlmIChpc0Jl
aW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbml0VUlFdmVudCh0eXBl
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAgICBtX2lucHV0
VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaAppbmRl
eCAyOWViMjZkMGUwNzRiNTRkMzQ2MzU2MDQyODBkMTJhNjk4OGFmOGRhLi4wYWUyYWM4NjNmYjgx
YmJiMjg2Mzg1MTY1YjZiMTI1MWQyZGZiMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oCkBAIC0z
OCwxNiArMzgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgVGV4dEV2ZW50
IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJl
ZjxUZXh0RXZlbnQ+IGNyZWF0ZShET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRF
dmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOworICAgICAgICBzdGF0aWMg
UmVmPFRleHRFdmVudD4gY3JlYXRlKFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgU3RyaW5n
JiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJkKTsKICAg
ICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7Ci0gICAgICAg
IHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShET01XaW5kb3cq
LCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKLSAgICAgICAg
c3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoRE9NV2luZG93Kiwg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2Us
IGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0gICAgICAg
IHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEcm9wKERPTVdpbmRvdyosIGNvbnN0IFN0
cmluZyYgZGF0YSk7Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEaWN0
YXRpb24oRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0
aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgICAgICBzdGF0aWMg
UmVmPFRleHRFdmVudD4gY3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5
PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKKyAgICAg
ICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoUmVmUHRyPFdp
bmRvd1Byb3h5PiYmLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBkYXRhLCBib29sIHNob3Vs
ZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRs
aW5nKTsKKyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRyb3AoUmVmUHRy
PFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBzdGF0aWMgUmVm
PFRleHRFdmVudD4gY3JlYXRlRm9yRGljdGF0aW9uKFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29u
c3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0
YXRpb25BbHRlcm5hdGl2ZXMpOwogCiAgICAgICAgIHZpcnR1YWwgflRleHRFdmVudCgpOwogICAg
IAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cq
LCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRU
ZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBj
YW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAg
ICAgCiAgICAgICAgIFN0cmluZyBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKQEAg
LTcxLDkgKzcxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAg
IFRleHRFdmVudCgpOwogCi0gICAgICAgIFRleHRFdmVudChET01XaW5kb3cqLCBjb25zdCBTdHJp
bmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOwot
ICAgICAgICBUZXh0RXZlbnQoRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4mJiwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxk
TWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0gICAgICAgIFRleHRFdmVudChE
T01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRl
cm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgICAgIFRleHRFdmVudChSZWZQ
dHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBl
ID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7CisgICAgICAgIFRleHRFdmVudChSZWZQdHI8V2lu
ZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
JiYsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxC
bG9ja3F1b3RlSGFuZGxpbmcpOworICAgICAgICBUZXh0RXZlbnQoUmVmUHRyPFdpbmRvd1Byb3h5
PiYmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2
ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAKICAgICAgICAgYm9vbCBpc1RleHRFdmVudCgp
IGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2
ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCmluZGV4IDM2NDA2NWZh
ODJkNDE4OTljMGM1MjMyNTBjMmYyNzk5NzcwZDNlMGUuLmNlOGIzMGFjYjNjNzFmZmRmODI4YjIx
ODEwNjVhYWExZjhhMTI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZl
bnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCkBAIC0zMiw3ICsz
Miw3IEBAIGludGVyZmFjZSBUZXh0RXZlbnQgOiBVSUV2ZW50IHsKICAgICB2b2lkIGluaXRUZXh0
RXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZpbmVkIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGVBcmcgPSBmYWxzZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlQXJnID0gZmFs
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlld0FyZyA9
IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3
QXJnID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3RyaW5nIGRh
dGFBcmcgPSAidW5kZWZpbmVkIik7CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVG91Y2hFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKaW5k
ZXggNjFjMDhmMjFkYTM4YmFhN2ExMTBmMjJkY2E2YTU3YmU5M2I2ODNlNy4uMDAyMzdjZGFkNTY4
Mzc5NTJkOTNhOTdkZTI2YTk5ZTllYWZjMzkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RvdWNoRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNw
cApAQCAtMzgsOSArMzgsOSBAQCBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KCkgPSBkZWZhdWx0Owog
CiBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91Y2hMaXN0KiB0
YXJnZXRUb3VjaGVzLAogICAgICAgICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzLCBjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICBET01XaW5kb3cqIHZpZXcsIGludCBzY3JlZW5Y
LCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAgICAgIFJlZlB0cjxXaW5k
b3dQcm94eT4mJiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50
IHBhZ2VZLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXkpCi0gICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVlLCB0cnVl
LCBNb25vdG9uaWNUaW1lOjpub3coKSwgdmlldywgMCwgSW50UG9pbnQoc2NyZWVuWCwgc2NyZWVu
WSksCisgICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCBNb25vdG9uaWNU
aW1lOjpub3coKSwgV1RGTW92ZSh2aWV3KSwgMCwgSW50UG9pbnQoc2NyZWVuWCwgc2NyZWVuWSks
CiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChwYWdlWCwgcGFnZVkpLAogI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludCgwLCAw
KSwKQEAgLTY0LDEzICs2NCwxMyBAQCBUb3VjaEV2ZW50Ojp+VG91Y2hFdmVudCgpID0gZGVmYXVs
dDsKIAogdm9pZCBUb3VjaEV2ZW50Ojppbml0VG91Y2hFdmVudChUb3VjaExpc3QqIHRvdWNoZXMs
IFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywKICAgICAgICAgVG91Y2hMaXN0KiBjaGFuZ2VkVG91
Y2hlcywgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAKLSAgICAgICAgRE9NV2luZG93KiB2aWV3
LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwKKyAg
ICAgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVu
WSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wg
YWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAgICAgaWYgKGlzQmVpbmdE
aXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRVSUV2ZW50KHR5cGUsIHRy
dWUsIHRydWUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIHRydWUsIHRydWUsIFdU
Rk1vdmUodmlldyksIDApOwogCiAgICAgbV90b3VjaGVzID0gdG91Y2hlczsKICAgICBtX3Rhcmdl
dFRvdWNoZXMgPSB0YXJnZXRUb3VjaGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1RvdWNoRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKaW5kZXggZDMz
OWMwYjcyYjEzZDQ1NWE1ZTAzODY2ZTU1NzIwY2NmNmJmMWVkYi4uODVmYTE2MWYyMTk2ZDNmMmEw
NWQ5YTMxYTExN2IwYTFhZjg2NmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Rv
dWNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCkBAIC00MSwx
MiArNDEsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxUb3VjaEV2ZW50PiBjcmVhdGUo
VG91Y2hMaXN0KiB0b3VjaGVzLCAKICAgICAgICAgICAgIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hl
cywgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgCi0gICAgICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIERPTVdpbmRvdyogdmlldywKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgICAgICAgICBpbnQg
c2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogICAgICAgICAgICAg
Ym9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVG91Y2hFdmVudCh0b3VjaGVzLCB0
YXJnZXRUb3VjaGVzLCBjaGFuZ2VkVG91Y2hlcywKLSAgICAgICAgICAgICAgICB0eXBlLCB2aWV3
LCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksCisgICAgICAgICAgICAgICAgdHlwZSwg
V1RGTW92ZSh2aWV3KSwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLAogICAgICAgICAg
ICAgICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpKTsKICAgICB9CiAgICAg
c3RhdGljIFJlZjxUb3VjaEV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBAIC02Nyw3ICs2Nyw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVz
LCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3QqIGNoYW5n
ZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAotICAgICAgICAgICAgRE9NV2lu
ZG93KiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLAorICAgICAgICAgICAgUmVmUHRyPFdpbmRv
d1Byb3h5PiYmLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksCiAgICAgICAgICAgICBpbnQgY2xp
ZW50WCwgaW50IGNsaWVudFksCiAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5
LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZh
dGU6CiAgICAgVG91Y2hFdmVudCgpOwogICAgIFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVz
LCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3QqIGNoYW5n
ZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsCi0gICAgICAgICAgICBET01XaW5k
b3cqLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwKKyAgICAgICAgICAgIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgs
CiAgICAgICAgICAgICBpbnQgcGFnZVksCiAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wg
YWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogICAgIFRvdWNoRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91
Y2hFdmVudC5pZGwKaW5kZXggODEwNTgzNTdlZDNhYTc3NzRkMjZmYWZhZTE2MDNiMTVkZGUwZDYw
Yi4uNTRlOTlkYjQ4MzBmMzBkNDYyNjQyZTMzZDQzOTU2OTNiMTNmMmIwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ub3VjaEV2ZW50LmlkbApAQCAtNDAsNyArNDAsNyBAQAogICAgICAgICAgICAgICAgICAgICAg
ICAgb3B0aW9uYWwgVG91Y2hMaXN0PyB0YXJnZXRUb3VjaGVzID0gbnVsbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wdGlvbmFsIFRvdWNoTGlzdD8gY2hhbmdlZFRvdWNoZXMgPSBudWxsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5kZWZp
bmVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlldyA9
IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmll
dyA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBsb25nIHNjcmVlblgg
PSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGxvbmcgY2xpZW50WCA9IDAsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVUlFdmVudC5jcHAKaW5kZXggYWIyMGVlY2I5YzU4MzFkZWYwMjc5Y2E3OGEwZTdjYzVmYTg1
NjIxNy4uMGE2ZjgxYWY1MjM3MTZmNzU4MTc4ZjBmOTUzNDRjZGM2NTViODAwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9VSUV2ZW50LmNwcApAQCAtMzIsMTYgKzMyLDE2IEBAIFVJRXZlbnQ6OlVJRXZlbnQoKQogewog
fQogCi1VSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29s
IGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBET01XaW5kb3cqIHZpZXdBcmcsIGlu
dCBkZXRhaWxBcmcpCitVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwg
Y2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnKQotICAgICwgbV92aWV3KHZpZXdBcmcpCisgICAg
LCBtX3ZpZXcoV1RGTW92ZSh2aWV3QXJnKSkKICAgICAsIG1fZGV0YWlsKGRldGFpbEFyZykKIHsK
IH0KIAotVUlFdmVudDo6VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9v
bCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgTW9ub3RvbmljVGltZSB0aW1lc3Rh
bXAsIERPTVdpbmRvdyogdmlld0FyZywgaW50IGRldGFpbEFyZykKK1VJRXZlbnQ6OlVJRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNh
bmNlbGFibGVBcmcsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlld0FyZywgaW50IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgY2FuQnVi
YmxlQXJnLCBjYW5jZWxhYmxlQXJnLCB0aW1lc3RhbXApCi0gICAgLCBtX3ZpZXcodmlld0FyZykK
KyAgICAsIG1fdmlldyhXVEZNb3ZlKHZpZXdBcmcpKQogICAgICwgbV9kZXRhaWwoZGV0YWlsQXJn
KQogewogfQpAQCAtNTUsNyArNTUsNyBAQCBVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBjb25zdCBVSUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIsCiAKIFVJRXZl
bnQ6On5VSUV2ZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFVJRXZlbnQ6OmluaXRVSUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZUFyZywgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2Vs
YWJsZUFyZywgRE9NV2luZG93KiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQordm9pZCBVSUV2ZW50
Ojppbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVBcmcsIGJvb2wgY2FuQnViYmxl
QXJnLCBib29sIGNhbmNlbGFibGVBcmcsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3QXJnLCBp
bnQgZGV0YWlsQXJnKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnQuaAppbmRleCBiYWE3MzFmY2Y4MWVlYmFmMjMxNTNkYTUxYmEw
YWVhZmQyNDU1ZmFjLi41MGYyZDE3NzE5OTQyZTQ3M2ZkZWM5YjFhODg0ODYwNTkzY2QxOWE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50LmgKQEAgLTIzLDIwICsyMywyMCBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiVUlF
dmVudEluaXQuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIG5vIG9uZSBpcyBkZXBlbmRpbmcgb24g
aXQgYW55bW9yZS4KLXR5cGVkZWYgRE9NV2luZG93IEFic3RyYWN0VmlldzsKK3R5cGVkZWYgV2lu
ZG93UHJveHkgQWJzdHJhY3RWaWV3OwogCiBjbGFzcyBVSUV2ZW50IDogcHVibGljIEV2ZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmll
dywgaW50IGRldGFpbCkKKyAgICBzdGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRl
dGFpbCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVSUV2ZW50KHR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsKSk7CiAgICAgfQogICAgIHN0
YXRpYyBSZWY8VUlFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHsKQEAgLTQ4LDkgKzQ4
LDkgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5VSUV2ZW50KCk7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGluaXRVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4m
JiwgaW50IGRldGFpbCk7CiAKLSAgICBET01XaW5kb3cqIHZpZXcoKSBjb25zdCB7IHJldHVybiBt
X3ZpZXcuZ2V0KCk7IH0KKyAgICBXaW5kb3dQcm94eSogdmlldygpIGNvbnN0IHsgcmV0dXJuIG1f
dmlldy5nZXQoKTsgfQogICAgIGludCBkZXRhaWwoKSBjb25zdCB7IHJldHVybiBtX2RldGFpbDsg
fQogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsK
QEAgLTY1LDE0ICs2NSwxNCBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVSUV2ZW50KCk7
Ci0gICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGludCBkZXRhaWwpOwotICAgIFVJRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBN
b25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7CisgICAgVUlF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCk7CisgICAgVUlFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRh
aWwpOwogICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVUlFdmVudEluaXQm
LCBJc1RydXN0ZWQpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNVSUV2ZW50KCkgY29uc3QgZmlu
YWw7CiAKLSAgICBSZWZQdHI8RE9NV2luZG93PiBtX3ZpZXc7CisgICAgUmVmUHRyPFdpbmRvd1By
b3h5PiBtX3ZpZXc7CiAgICAgaW50IG1fZGV0YWlsOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRs
CmluZGV4IDg3YjM5MTUyODMwMzE5N2UzNmM2NGMxZTcwOGZmYjYwY2JhZDk1MDMuLjZhMzVjNTdh
Mzg3NGJjOGVjNjNkNmQ5MjRkNDI4YjJiNTgxMDBmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5pZGwK
QEAgLTIwLDExICsyMCwxMSBAQAogWwogICAgIENvbnN0cnVjdG9yKERPTVN0cmluZyB0eXBlLCBv
cHRpb25hbCBVSUV2ZW50SW5pdCBldmVudEluaXREaWN0KQogXSBpbnRlcmZhY2UgVUlFdmVudCA6
IEV2ZW50IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IHZpZXc7CisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IHZpZXc7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGxvbmcgZGV0YWlsOwogICAgIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBk
ZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICB2b2lkIGluaXRVSUV2ZW50KG9w
dGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIGJvb2xlYW4gY2Fu
QnViYmxlID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZhbHNlLCBvcHRp
b25hbCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBsb25nIGRldGFpbCA9IDApOwor
ICAgIHZvaWQgaW5pdFVJRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5kZWZpbmVk
Iiwgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGUgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBj
YW5jZWxhYmxlID0gZmFsc2UsIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwgb3B0
aW9uYWwgbG9uZyBkZXRhaWwgPSAwKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxh
eWVyWDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsYXllclk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2
ZW50SW5pdC5oCmluZGV4IDAzMTZiYzA2ZjU2OGU1MzkxNmRmNjk2ZjQxNDQ1YmE5ZmMzMWZmMzYu
LmUxMTI4YTc2ZGU1ODYwMTYyZmE5NzZkY2RjODI3MTcwZDhmMmYzYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9V
SUV2ZW50SW5pdC5oCkBAIC0yNSwxNCArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudEluaXQuaCIKKyNpbmNsdWRlICJXaW5k
b3dQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdHJ1Y3QgVUlFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKLSAgICBSZWZQdHI8
RE9NV2luZG93PiB2aWV3OworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gdmlldzsKICAgICBpbnQg
ZGV0YWlsIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZl
bnRJbml0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5pZGwKaW5kZXggMGQ3
ZWI4ZWZjMWM1MzdhOTA1MTE3YjYxMjExMWFkMDFlYjFlMGFhMi4uM2NjYmJlZDYwNzU1ZjZmMjE2
NTJmNWJhNjFlNmYzODI0MGMxN2ZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VJ
RXZlbnRJbml0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaWRsCkBA
IC0yNCw2ICsyNCw2IEBACiAgKi8KIAogZGljdGlvbmFyeSBVSUV2ZW50SW5pdCA6IEV2ZW50SW5p
dCB7Ci0gICAgRE9NV2luZG93PyB2aWV3ID0gbnVsbDsKKyAgICBXaW5kb3dQcm94eT8gdmlldyA9
IG51bGw7CiAgICAgbG9uZyBkZXRhaWwgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVu
dFdpdGhLZXlTdGF0ZS5oCmluZGV4IDBhOGU0MDMxMjQ4ZDZmNzI2NTQ0MmU1YmY4MDAxMmJhMzBj
Y2NkZWIuLjA4NWEwMzE3ZWM4ZGNlM2E2MGZlMjZhZmE1YTE2MmVhMmE5YTA1MWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaApAQCAtNDAsOCArNDAsOCBAQCBwdWJs
aWM6CiBwcm90ZWN0ZWQ6CiAgICAgVUlFdmVudFdpdGhLZXlTdGF0ZSgpID0gZGVmYXVsdDsKIAot
ICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGJv
b2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSkKLSAg
ICAgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWls
KQorICAgIFVJRXZlbnRXaXRoS2V5U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywg
aW50IGRldGFpbCwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9v
bCBtZXRhS2V5KQorICAgICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCiAg
ICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQogICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkp
CkBAIC00OSw5ICs0OSw5IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQogCi0gICAgVUlFdmVu
dFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqIHZpZXcs
CisgICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQ
dHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICAgICAgaW50IGRldGFpbCwgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBib29sIGFsdEdyYXBo
S2V5LCBib29sIGNhcHNMb2NrS2V5KQotICAgICAgICAgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCB2aWV3LCBkZXRhaWwpCisgICAgICAgICAgICA6
IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIFdURk1vdmUo
dmlldyksIGRldGFpbCkKICAgICAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCiAgICAgICAg
ICAgICAsIG1fYWx0S2V5KGFsdEtleSkKICAgICAgICAgICAgICwgbV9zaGlmdEtleShzaGlmdEtl
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAppbmRleCBkMmI4ZmI3MmQ5MTk4ZTE0YmY3NThj
YTNhZmJjMWVjMjQ3ZjcxY2JkLi41MzdjYjE5M2M4MTNmNTI3YWM1MzNjOTMwODkwODdiZGIzNjhi
ZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCkBAIC00Nyw4ICs0Nyw4IEBAIGlubGlu
ZSBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3Qg
SW5pdCYgaW5pdGlhbGl6ZXIsCiB7CiB9CiAKLWlubGluZSBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogdmlldykKLSAgICA6
IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUsIGV2ZW50LnRp
bWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LCAwLCBldmVudC5nbG9i
YWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCitpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxF
dmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+
JiYgdmlldykKKyAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUs
IHRydWUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCBXVEZN
b3ZlKHZpZXcpLCAwLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCiAj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgLCB7IH0KICNlbmRpZgpAQCAtNjEsOSAr
NjEsOSBAQCBpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHZpZXcpCiB7CiB9CiAKLVJlZjxXaGVlbEV2ZW50PiBX
aGVlbEV2ZW50OjpjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgRE9NV2lu
ZG93KiB2aWV3KQorUmVmPFdoZWVsRXZlbnQ+IFdoZWVsRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXaGVlbEV2ZW50KGV2ZW50LCB2aWV3KSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2hlZWxFdmVudChldmVudCwgV1RGTW92ZSh2aWV3KSkpOwogfQog
CiBSZWY8V2hlZWxFdmVudD4gV2hlZWxFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQpAQCAtNzYs
MTIgKzc2LDEyIEBAIFJlZjxXaGVlbEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsCiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2hlZWxFdmVudCh0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiB9CiAKLXZv
aWQgV2hlZWxFdmVudDo6aW5pdFdlYktpdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwgaW50IHJh
d0RlbHRhWSwgRE9NV2luZG93KiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBw
YWdlWCwgaW50IHBhZ2VZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXkpCit2b2lkIFdoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2ZW50KGlu
dCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBp
bnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29sIGN0cmxL
ZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAgICAgaWYg
KGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpbml0TW91
c2VFdmVudChldmVudE5hbWVzKCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCwgc2Ny
ZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBt
ZXRhS2V5LCAwLCBudWxscHRyKTsKKyAgICBpbml0TW91c2VFdmVudChldmVudE5hbWVzKCkud2hl
ZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCwgc2NyZWVuWCwgc2NyZWVuWSwg
cGFnZVgsIHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCAwLCBudWxs
cHRyKTsKIAogICAgIC8vIE5vcm1hbGl6ZSB0byAxMjAgbXVsdGlwbGUgZm9yIGNvbXBhdGliaWxp
dHkgd2l0aCBJRS4KICAgICBtX3doZWVsRGVsdGEgPSB7IHJhd0RlbHRhWCAqIFRpY2tNdWx0aXBs
aWVyLCByYXdEZWx0YVkgKiBUaWNrTXVsdGlwbGllciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1doZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgK
aW5kZXggNGQzNGIzMGQ2ZGVkNWVmMjgxNWE4MTM3ZTRjMjk3ZTY0MWFkZTZkYS4uMTBiNjJlMDVj
NzAxNTYwNzZmZmU1Y2YxMjczOTdlYzEzMjNkZDJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1doZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5o
CkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAgICAgRE9NX0RFTFRBX1BBR0UKICAgICB9
OwogCi0gICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAgICBz
dGF0aWMgUmVmPFdoZWVsRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBzdHJ1Y3Qg
SW5pdCA6IE1vdXNlRXZlbnRJbml0IHsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBj
b25zdCBJbml0JiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGluaXRXZWJLaXRXaGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0
YVksIERPTVdpbmRvdyosIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQg
cGFnZVksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0
YUtleSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChpbnQg
cmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBzY3Jl
ZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwgYm9v
bCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CiAKICAgICBjb25zdCBzdGQ6
Om9wdGlvbmFsPFBsYXRmb3JtV2hlZWxFdmVudD4mIHVuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KCkg
Y29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudDsgfQogCkBAIC03NSw3ICs3
NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2hlZWxFdmVudCgpOwogICAgIFdoZWVsRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7Ci0gICAgV2hl
ZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBET01XaW5kb3cqKTsKKyAgICBXaGVl
bEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFJlZlB0cjxXaW5kb3dQcm94eT4mJik7
CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vV2hlZWxFdmVudC5pZGwKaW5kZXggOTNjNTNhNGJmYjJkYWY0YmQ0NDI3Mzg2NmE5
MmNlZDRhMWMxYzM4Ni4uYjI4MWRhMWM2NjA0NGE4YTkzZDYwZDkwZWRkZjUxZDE0YzZjOTM0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmlkbApAQCAtMzksNyArMzksNyBAQAogCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0RGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNl
OwogCi0gICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRpb25hbCBsb25nIHdoZWVsRGVs
dGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAsIG9wdGlvbmFsIERPTVdpbmRv
dz8gdmlldyA9IG51bGwsCisgICAgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRpb25hbCBs
b25nIHdoZWVsRGVsdGFYID0gMCwgb3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAsIG9wdGlv
bmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwKICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3Jl
ZW5YID0gMCwgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRY
ID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRZID0gMCwKICAgICAgICAgb3B0aW9uYWwgYm9vbGVh
biBjdHJsS2V5ID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFsc2UsCiAgICAg
ICAgIG9wdGlvbmFsIGJvb2xlYW4gc2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBt
ZXRhS2V5ID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZDE0NzI0Mjc3MjM3NDY4ZDRmNjFmZmUzM2M3
NWZlNDZhODE5MjNkYy4uZDQ1M2Y2NDQwYWQ0NmViZTMwYTBjYmE5ZWFlMjIyNzQxYTVhYmY0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwCkBAIC02MzIsNyArNjMyLDcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyOjppbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWMKICAg
ICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpCiAgICAgICAgIHZpZXctPmRp
c2FibGVMYXllckZsdXNoVGhyb3R0bGluZ1RlbXBvcmFyaWx5Rm9ySW50ZXJhY3Rpb24oKTsKIAot
ICAgIFJlZjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24o
bV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRp
dmVzKTsKKyAgICBhdXRvIGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24oJm1f
ZnJhbWUud2luZG93UHJveHkoKSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICBl
dmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KHRyaWdnZXJpbmdFdmVudCk7CiAKICAgICB0YXJnZXQt
PmRpc3BhdGNoRXZlbnQoZXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGNi
OGI2YjhiYmFjODViYzBlMzJkZWQyZWYzMzljMjQxMDI5MGQzMTkuLjZjNjY5MDc4MDhkN2IzMjFh
YTllNjE4NDE4OTYwNmFkZjQ5ZTdjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAg
LTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgYm9vbCBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnQoRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnB1dAogICAgIGlmICghZWxlbWVu
dC5kb2N1bWVudCgpLnNldHRpbmdzKCkuaW5wdXRFdmVudHNFbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgYXV0byBldmVudCA9IElucHV0RXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuYmVmb3JlaW5wdXRFdmVudCwgaW5wdXRUeXBlLCB0cnVlLCBjYW5jZWxhYmxlLCBlbGVt
ZW50LmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIp
LCB0YXJnZXRSYW5nZXMsIDApOworICAgIGF1dG8gZXZlbnQgPSBJbnB1dEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmJlZm9yZWlucHV0RXZlbnQsIGlucHV0VHlwZSwgdHJ1ZSwgY2FuY2VsYWJs
ZSwgZWxlbWVudC5kb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIGRhdGEsIFdURk1vdmUoZGF0YVRy
YW5zZmVyKSwgdGFyZ2V0UmFuZ2VzLCAwKTsKICAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoZXZl
bnQpOwogICAgIHJldHVybiAhZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0KQEAgLTEyNyw3
ICsxMjcsNyBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaElucHV0RXZlbnQoRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnB1dFR5cGUsCiAgICAgICAgIC8vIGJ1dCBUeXBpbmdD
b21tYW5kcyBhcmUgc3BlY2lhbCBpbiB0aGF0IGV4aXN0aW5nIFR5cGluZ0NvbW1hbmRzIHRoYXQg
YXJlIGFwcGxpZWQgYWdhaW4gZmlyZSBpbnB1dCBldmVudHMgKmZyb20gd2l0aGluKiB0aGUgc2Nv
cGUgYnkgY2FsbGluZyB0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQuCiAgICAgICAgIC8vIEluc3Rl
YWQsIFR5cGluZ0NvbW1hbmRzIHNob3VsZCBhbHdheXMgZGlzcGF0Y2ggZXZlbnRzIHN5bmNocm9u
b3VzbHkgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc2NvcGVkIHF1ZXVlIGluIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjphcHBseS4gVG8gd29yayBhcm91bmQgdGhpcyBmb3IgdGhlCiAgICAgICAgIC8vIHRp
bWUgYmVpbmcsIGp1c3QgcmV2ZXJ0IGJhY2sgdG8gY2FsbGluZyBkaXNwYXRjaFNjb3BlZEV2ZW50
LgotICAgICAgICBlbGVtZW50LmRpc3BhdGNoU2NvcGVkRXZlbnQoSW5wdXRFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50LCBpbnB1dFR5cGUsIHRydWUsIGZhbHNlLCBlbGVtZW50
LmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0
YXJnZXRSYW5nZXMsIDApKTsKKyAgICAgICAgZWxlbWVudC5kaXNwYXRjaFNjb3BlZEV2ZW50KElu
cHV0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuaW5wdXRFdmVudCwgaW5wdXRUeXBlLCB0cnVl
LCBmYWxzZSwgZWxlbWVudC5kb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIGRhdGEsIFdURk1vdmUo
ZGF0YVRyYW5zZmVyKSwgdGFyZ2V0UmFuZ2VzLCAwKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGVs
ZW1lbnQuZGlzcGF0Y2hJbnB1dEV2ZW50KCk7CiB9CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBF
ZGl0b3I6OnBhc3RlQXNQbGFpblRleHQoY29uc3QgU3RyaW5nJiBwYXN0aW5nVGV4dCwgYm9vbCBz
bWFydFJlcGxhY2UpCiAgICAgRWxlbWVudCogdGFyZ2V0ID0gZmluZEV2ZW50VGFyZ2V0RnJvbVNl
bGVjdGlvbigpOwogICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm47Ci0gICAgdGFyZ2V0
LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoZG9jdW1l
bnQoKS5kb21XaW5kb3coKSwgcGFzdGluZ1RleHQsIHNtYXJ0UmVwbGFjZSkpOworICAgIHRhcmdl
dC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKGRvY3Vt
ZW50KCkud2luZG93UHJveHkoKSwgcGFzdGluZ1RleHQsIHNtYXJ0UmVwbGFjZSkpOwogfQogCiB2
b2lkIEVkaXRvcjo6cGFzdGVBc0ZyYWdtZW50KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIHBhc3Rp
bmdGcmFnbWVudCwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSwgTWFpbEJsb2Nr
cXVvdGVIYW5kbGluZyByZXNwZWN0c01haWxCbG9ja3F1b3RlKQpAQCAtNTc3LDcgKzU3Nyw3IEBA
IHZvaWQgRWRpdG9yOjpwYXN0ZUFzRnJhZ21lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgcGFz
dGluZ0ZyYWdtZW50LCBib29sIHNtYXJ0CiAgICAgRWxlbWVudCogdGFyZ2V0ID0gZmluZEV2ZW50
VGFyZ2V0RnJvbVNlbGVjdGlvbigpOwogICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm47
Ci0gICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQ
YXN0ZShkb2N1bWVudCgpLmRvbVdpbmRvdygpLCBXVEZNb3ZlKHBhc3RpbmdGcmFnbWVudCksIHNt
YXJ0UmVwbGFjZSwgbWF0Y2hTdHlsZSwgcmVzcGVjdHNNYWlsQmxvY2txdW90ZSkpOworICAgIHRh
cmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUoZG9j
dW1lbnQoKS53aW5kb3dQcm94eSgpLCBXVEZNb3ZlKHBhc3RpbmdGcmFnbWVudCksIHNtYXJ0UmVw
bGFjZSwgbWF0Y2hTdHlsZSwgcmVzcGVjdHNNYWlsQmxvY2txdW90ZSkpOwogfQogCiB2b2lkIEVk
aXRvcjo6cGFzdGVBc1BsYWluVGV4dEJ5cGFzc2luZ0RIVE1MKCkKQEAgLTE4NDgsNyArMTg0OCw3
IEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFNldENv
bXBvc2l0aW9uTW9kZSBtb2RlKQogICAgIGluc2VydFRleHRGb3JDb25maXJtZWRDb21wb3NpdGlv
bih0ZXh0KTsKIAogICAgIGlmIChhdXRvKiB0YXJnZXQgPSBkb2N1bWVudCgpLmZvY3VzZWRFbGVt
ZW50KCkpCi0gICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChDb21wb3NpdGlvbkV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uZW5kRXZlbnQsIGRvY3VtZW50KCkuZG9tV2lu
ZG93KCksIHRleHQpKTsKKyAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9u
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQo
KS53aW5kb3dQcm94eSgpLCB0ZXh0KSk7CiAKICAgICBpZiAobW9kZSA9PSBDYW5jZWxDb21wb3Np
dGlvbikgewogICAgICAgICAvLyBBbiBvcGVuIHR5cGluZyBjb21tYW5kIHRoYXQgZGlzYWdyZWVz
IGFib3V0IGN1cnJlbnQgc2VsZWN0aW9uIHdvdWxkIGNhdXNlIGlzc3VlcyB3aXRoIHR5cGluZyBs
YXRlciBvbi4KQEAgLTE5MDgsMTEgKzE5MDgsMTEgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0
aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4K
ICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBzZW5kIGEgY29tcG9zaXRpb25zdGFydCBldmVudCBv
bmx5IHdoZW4gdGhlIGdpdmVuIHRleHQgaXMgbm90IGVtcHR5IGJlY2F1c2UgdGhpcwogICAgICAg
ICAgICAgLy8gZnVuY3Rpb24gZG9lc24ndCBjcmVhdGUgYSBjb21wb3NpdGlvbiBub2RlIHdoZW4g
dGhlIHRleHQgaXMgZW1wdHkuCiAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25zdGFydEV2ZW50LCBkb2N1bWVudCgpLmRvbVdp
bmRvdygpLCBvcmlnaW5hbFRleHQpKTsKLSAgICAgICAgICAgICAgICBldmVudCA9IENvbXBvc2l0
aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb251cGRhdGVFdmVudCwgZG9j
dW1lbnQoKS5kb21XaW5kb3coKSwgdGV4dCk7CisgICAgICAgICAgICAgICAgdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRp
b25zdGFydEV2ZW50LCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIG9yaWdpbmFsVGV4dCkpOwor
ICAgICAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIHRl
eHQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKCF0ZXh0LmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBkb2N1bWVudCgpLmRvbVdpbmRvdygpLCB0ZXh0KTsK
KyAgICAgICAgICAgIGV2ZW50ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5jb21wb3NpdGlvbnVwZGF0ZUV2ZW50LCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIHRleHQp
OwogCiAgICAgICAgIGlmIChldmVudCkKICAgICAgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVu
dCgqZXZlbnQpOwpAQCAtMTkyMyw3ICsxOTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0
aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4K
ICAgICBpZiAodGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgVHlwaW5nQ29tbWFuZDo6ZGVsZXRl
U2VsZWN0aW9uKGRvY3VtZW50KCksIFR5cGluZ0NvbW1hbmQ6OlByZXZlbnRTcGVsbENoZWNraW5n
LCBUeXBpbmdDb21tYW5kOjpUZXh0Q29tcG9zaXRpb25QZW5kaW5nKTsKICAgICAgICAgaWYgKHRh
cmdldCkKLSAgICAgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChDb21wb3NpdGlvbkV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uZW5kRXZlbnQsIGRvY3VtZW50KCkuZG9t
V2luZG93KCksIHRleHQpKTsKKyAgICAgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChDb21w
b3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uZW5kRXZlbnQsIGRv
Y3VtZW50KCkud2luZG93UHJveHkoKSwgdGV4dCkpOwogICAgIH0KIAogICAgIG1fY29tcG9zaXRp
b25Ob2RlID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAppbmRleCBh
M2Q3ZDk3NzBjZWJkMDYyOGNhN2JlYzI0Y2ZhNjc1ZDNiOTdiYjU0Li45ZDU4MWNlZGZhODQxZTBh
ZGYxYWFjNDMyNTkxYzhiNmYyZjc2NTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
Y3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgUmVmPERvY3VtZW50UGFyc2VyPiBIVE1MRG9jdW1lbnQ6
OmNyZWF0ZVBhcnNlcigpCiB9CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL2RvbS5odG1sI2RvbS1kb2N1bWVudC1uYW1lZGl0ZW0KLXN0ZDo6b3B0aW9uYWw8VmFy
aWFudDxSZWZQdHI8RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxl
Y3Rpb24+Pj4gSFRNTERvY3VtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KQorc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVt
ZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IEhUTUxEb2N1bWVudDo6bmFtZWRJdGVtKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKICAgICBpZiAobmFtZS5pc051bGwoKSB8fCAhaGFz
RG9jdW1lbnROYW1lZEl0ZW0oKm5hbWUuaW1wbCgpKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTEyMiwxNiArMTIyLDE2IEBAIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8
RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+CiAgICAg
aWYgKFVOTElLRUxZKGRvY3VtZW50TmFtZWRJdGVtQ29udGFpbnNNdWx0aXBsZUVsZW1lbnRzKCpu
YW1lLmltcGwoKSkpKSB7CiAgICAgICAgIGF1dG8gY29sbGVjdGlvbiA9IGRvY3VtZW50TmFtZWRJ
dGVtcyhuYW1lKTsKICAgICAgICAgQVNTRVJUKGNvbGxlY3Rpb24tPmxlbmd0aCgpID4gMSk7Ci0g
ICAgICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4s
IFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiB7IFdURk1v
dmUoY29sbGVjdGlvbikgfSB9OworICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8V2luZG93
UHJveHk+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgUmVmUHRy
PEhUTUxDb2xsZWN0aW9uPiB7IFdURk1vdmUoY29sbGVjdGlvbikgfSB9OwogICAgIH0KIAogICAg
IGF1dG8mIGVsZW1lbnQgPSAqZG9jdW1lbnROYW1lZEl0ZW0oKm5hbWUuaW1wbCgpKTsKICAgICBp
ZiAoVU5MSUtFTFkoaXM8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQpKSkgewogICAgICAgICBp
ZiAoYXV0byBkb21XaW5kb3cgPSBtYWtlUmVmUHRyKGRvd25jYXN0PEhUTUxJRnJhbWVFbGVtZW50
PihlbGVtZW50KS5jb250ZW50V2luZG93KCkpKQotICAgICAgICAgICAgcmV0dXJuIFZhcmlhbnQ8
UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9u
Pj4geyBXVEZNb3ZlKGRvbVdpbmRvdykgfTsKKyAgICAgICAgICAgIHJldHVybiBWYXJpYW50PFJl
ZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9u
Pj4geyBXVEZNb3ZlKGRvbVdpbmRvdykgfTsKICAgICB9CiAKLSAgICByZXR1cm4gVmFyaWFudDxS
ZWZQdHI8RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+
PiB7IFJlZlB0cjxFbGVtZW50PiB7ICZlbGVtZW50IH0gfTsKKyAgICByZXR1cm4gVmFyaWFudDxS
ZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlv
bj4+IHsgUmVmUHRyPEVsZW1lbnQ+IHsgJmVsZW1lbnQgfSB9OwogfQogCiBWZWN0b3I8QXRvbWlj
U3RyaW5nPiBIVE1MRG9jdW1lbnQ6OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERvY3VtZW50LmgKaW5kZXggYTM2Mzk3NDA2ZDM0OWY1NzZmNDg5ZDNhMWY2
MDBhZGExYmRkY2ZlMS4uMGIzZDM0MTRhNGJlZmEwMzM1YzRlMjI5YTU5NTg1ZWIwNWViZDYwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgd2lkdGgoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQg
aGVpZ2h0KCk7CiAgICAgCi0gICAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxET01XaW5k
b3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+PiBuYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxX
aW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IG5h
bWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBz
dXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3Q7CiAKICAgICBFbGVtZW50KiBkb2N1bWVudE5h
bWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBuYW1lKSBjb25zdCB7IHJldHVybiBtX2Rv
Y3VtZW50TmFtZWRJdGVtLmdldEVsZW1lbnRCeURvY3VtZW50TmFtZWRJdGVtKG5hbWUsICp0aGlz
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsCmluZGV4IDEyN2YyNjQ1ZTAzMjJk
Yzc5ODgxMjgwNGZmNWQ3OTVkYWM4YTU4MGYuLmE5OTliMDNmNjIyOGIyNWViZDFiN2I5NDM4NmI5
OWUzOTViODVmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwKQEAgLTIzLDUg
KzIzLDUgQEAKICAgICBOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMsCiAgICAgT3Zl
cnJpZGVCdWlsdGlucywKIF0gaW50ZXJmYWNlIEhUTUxEb2N1bWVudCA6IERvY3VtZW50IHsgICAg
Ci0gICAgZ2V0dGVyIChET01XaW5kb3cgb3IgRWxlbWVudCBvciBIVE1MQ29sbGVjdGlvbikgKERP
TVN0cmluZyBuYW1lKTsKKyAgICBnZXR0ZXIgKFdpbmRvd1Byb3h5IG9yIEVsZW1lbnQgb3IgSFRN
TENvbGxlY3Rpb24pIChET01TdHJpbmcgbmFtZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudC5pZGwKaW5kZXggY2Q2M2EyMTJhZDQzMzE0YzViZTIzMDRkZGU3MDA5N2M3
YmY4ODM1My4uZWQ3YzBiNmUyNzcyOTliNjVjYTIxOGYyMWUxODI2MWU1MTNkZmMwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCkBAIC0yNiw3ICsyNiw3IEBAIGlu
dGVyZmFjZSBIVE1MRnJhbWVFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAgIFtSZWZsZWN0LCBV
UkxdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgbG9uZ0Rlc2M7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0
ZSBib29sZWFuIG5vUmVzaXplOwogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9ubHkg
YXR0cmlidXRlIERvY3VtZW50IGNvbnRlbnREb2N1bWVudDsKLSAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NV2luZG93IGNvbnRlbnRXaW5kb3c7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRv
d1Byb3h5IGNvbnRlbnRXaW5kb3c7CiAKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51
bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1hcmdpbkhlaWdodDsKICAgICBbUmVmbGVjdF0g
YXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1hcmdpbldpZHRo
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCmluZGV4
IDU4ODczOTg0N2NiYjA4YzM3MTdjMTNiZWJkM2FhOTFkOTliYjRjYzUuLmI5YmVmMTc2M2UyNjFk
N2M5ODJlMWYwNTU1MDljMTY5ZGY4NDA2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZU93bmVyRWxlbWVudC5jcHAKQEAgLTk5LDkgKzk5LDkgQEAgRG9jdW1lbnQqIEhUTUxG
cmFtZU93bmVyRWxlbWVudDo6Y29udGVudERvY3VtZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9j
b250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CiB9CiAK
LURPTVdpbmRvdyogSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb250ZW50V2luZG93KCkgY29uc3QK
K1dpbmRvd1Byb3h5KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRXaW5kb3coKSBjb25z
dAogewotICAgIHJldHVybiBtX2NvbnRlbnRGcmFtZSA/IG1fY29udGVudEZyYW1lLT5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8g
Jm1fY29udGVudEZyYW1lLT53aW5kb3dQcm94eSgpIDogbnVsbHB0cjsKIH0KIAogdm9pZCBIVE1M
RnJhbWVPd25lckVsZW1lbnQ6OnNldFNhbmRib3hGbGFncyhTYW5kYm94RmxhZ3MgZmxhZ3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAppbmRleCA4NjVlZGRi
OTFmNTdlMzQ1YjRiNjg3Zjc2MGU4MzMyNTQyNWM0ZmMxLi44MGYxODIwMGRmMGQ0YTc0ZDdmMGUz
ZGJjYTE1MjQ1NjAyMjRhYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkhUTUxG
cmFtZU93bmVyRWxlbWVudCgpOwogCiAgICAgRnJhbWUqIGNvbnRlbnRGcmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGVudEZyYW1lOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgRE9NV2luZG93KiBj
b250ZW50V2luZG93KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgV2luZG93UHJveHkqIGNv
bnRlbnRXaW5kb3coKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudCogY29udGVu
dERvY3VtZW50KCkgY29uc3Q7CiAKICAgICB2b2lkIHNldENvbnRlbnRGcmFtZShGcmFtZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKaW5kZXggMjg1NjQy
NDk1MGEzNDljOWI3Mjk1MDNjNWY0ZjEyMWE4ZWM0YjJiNy4uNWQyMzdkNDgyNmM3MmY4ODdiN2Ri
MmZiNTFkNmU5Nzg2NTY3OWE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNl
dEVsZW1lbnQuY3BwCkBAIC0yMzEsMTUgKzIzMSwxMyBAQCB2b2lkIEhUTUxGcmFtZVNldEVsZW1l
bnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5l
cgogICAgIH0KIH0KIAotRE9NV2luZG93KiBIVE1MRnJhbWVTZXRFbGVtZW50OjpuYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorV2luZG93UHJveHkqIEhUTUxGcmFtZVNldEVsZW1l
bnQ6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7CiAgICAgYXV0byBmcmFt
ZUVsZW1lbnQgPSBtYWtlUmVmUHRyKGNoaWxkcmVuKCktPm5hbWVkSXRlbShuYW1lKSk7CiAgICAg
aWYgKCFpczxIVE1MRnJhbWVFbGVtZW50PihmcmFtZUVsZW1lbnQpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGlmIChhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihkb3duY2FzdDxI
VE1MRnJhbWVFbGVtZW50PihmcmFtZUVsZW1lbnQuZ2V0KCkpLT5jb250ZW50RG9jdW1lbnQoKSkp
Ci0gICAgICAgIHJldHVybiBkb2N1bWVudC0+ZG9tV2luZG93KCk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxGcmFtZUVsZW1lbnQ+KCpmcmFtZUVsZW1lbnQp
LmNvbnRlbnRXaW5kb3coKTsKIH0KIAogVmVjdG9yPEF0b21pY1N0cmluZz4gSFRNTEZyYW1lU2V0
RWxlbWVudDo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCmluZGV4IGQxZjM3OWI3MzVjYjc3ZjVlNWFkMmRlYzRl
YmYxNDQwYzdlZWEzMzIuLmMzYzY4YjU3YmY5NzdlN2FjZWE5MmZmM2FlYzA5NjQ5NmY3MTIyYjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCkBAIC00OCw3ICs0
OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEhUTUxGcmFtZVNldEVsZW1lbnQ+IGZp
bmRDb250YWluaW5nKEVsZW1lbnQqIGRlc2NlbmRhbnQpOwogICAgIAogICAgIFZlY3RvcjxBdG9t
aWNTdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdDsKLSAgICBET01XaW5kb3cq
IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBXaW5kb3dQcm94eSogbmFtZWRJ
dGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiBwcml2YXRlOgogICAgIEhUTUxGcmFtZVNldEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbAppbmRleCAzMjUwYjk0OTBlZGI4YmIxOGY0N2I5
ODJjYmI3ZjZiNDQwOGQzMTI1Li42OTQyMTczZTc0NDA5MjQ5YzIwNWIwYjNjNTI2MjllMmFjYzQ2
OTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwKQEAg
LTMzLDcgKzMzLDcgQEAgaW50ZXJmYWNlIEhUTUxGcmFtZVNldEVsZW1lbnQgOiBIVE1MRWxlbWVu
dCB7CiAKICAgICAvLyBOb24tc3RhbmRhcmQgbmFtZWQgZ2V0dGVyCiAgICAgLy8gRklYTUU6IFRo
aXMgaXMgbm90IGluIHRoZSBzdGFuZGFyZCwgY2FuIHdlIHJlbW92ZSB0aGlzPwotICAgIGdldHRl
ciBET01XaW5kb3cgKERPTVN0cmluZyBuYW1lKTsKKyAgICBnZXR0ZXIgV2luZG93UHJveHkgKERP
TVN0cmluZyBuYW1lKTsKIH07CiAKIEhUTUxGcmFtZVNldEVsZW1lbnQgaW1wbGVtZW50cyBXaW5k
b3dFdmVudEhhbmRsZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZy
YW1lRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50Lmlk
bAppbmRleCAzZTNiZGNjMTEwNDE4OGE3OGRkYmE4ZTI3NjQzNGU0ZTY2ZTY5MGJjLi5jMTYzOTIy
ZWU0MjBlNzVjMDRkZDEyODE5NGI1MzVmMzgzYzk1ZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJRnJhbWVFbGVtZW50LmlkbApAQCAtMzgsNyArMzgsNyBAQCBpbnRlcmZhY2UgSFRNTElG
cmFtZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAKICAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBEb2N1bWVudCBjb250ZW50RG9jdW1lbnQ7CiAKLSAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NV2luZG93IGNvbnRlbnRXaW5kb3c7CisgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFdpbmRvd1Byb3h5IGNvbnRlbnRXaW5kb3c7CiAKICAgICBbQ2hlY2tTZWN1cml0eUZv
ck5vZGUsIE1heVRocm93RXhjZXB0aW9uXSBEb2N1bWVudCBnZXRTVkdEb2N1bWVudCgpOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IGQxNTEyNzNhMzU5NDkzZTFi
NmM1MzhmMGYzZDkzMTY4ODAzNjRhMTcuLjg1YzEzZmY3ZjAyMGFhOWFjMmM2ZTRkZjE3MjQ2ZDQ0
MTE5YzVhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGIwMjNhNGUy
ZWYyODQzMDM3YmU1ZDA4YmYyYTRmZTM4MzFkNWZkOGYuLjNlMmE5MTY2ZjJjODAxYWU1NTY2M2Jj
Y2IxYjQ5MGFlMDlmYWYxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE0OCw3
ICsxNDgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBjbGFzcyBQb3N0TWVzc2Fn
ZVRpbWVyIDogcHVibGljIFRpbWVyQmFzZSB7CiBwdWJsaWM6Ci0gICAgUG9zdE1lc3NhZ2VUaW1l
cihET01XaW5kb3cmIHdpbmRvdywgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgRE9NV2luZG93JiBzb3VyY2UsIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4mJiB0YXJnZXRPcmlnaW4sIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3Rh
Y2tUcmFjZSkKKyAgICBQb3N0TWVzc2FnZVRpbWVyKERPTVdpbmRvdyYgd2luZG93LCBNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgc291cmNlLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgdGFy
Z2V0T3JpZ2luLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIHN0YWNrVHJhY2UpCiAgICAgICAg
IDogbV93aW5kb3cod2luZG93KQogICAgICAgICAsIG1fbWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2Up
KQogICAgICAgICAsIG1fb3JpZ2luKHNvdXJjZU9yaWdpbikKQEAgLTE2MSw3ICsxNjEsNyBAQCBw
dWJsaWM6CiAKICAgICBSZWY8TWVzc2FnZUV2ZW50PiBldmVudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKGNvbnRleHQsIFdURk1vdmUobV9tZXNzYWdlLnRy
YW5zZmVycmVkUG9ydHMpKSwgbV9tZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgbV9v
cmlnaW4sIHsgfSwgTWVzc2FnZUV2ZW50U291cmNlKFJlZlB0cjxET01XaW5kb3c+KFdURk1vdmUo
bV9zb3VyY2UpKSkpOworICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoTWVzc2Fn
ZVBvcnQ6OmVudGFuZ2xlUG9ydHMoY29udGV4dCwgV1RGTW92ZShtX21lc3NhZ2UudHJhbnNmZXJy
ZWRQb3J0cykpLCBtX21lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBtX29yaWdpbiwg
eyB9LCBtX3NvdXJjZSA/IHN0ZDo6bWFrZV9vcHRpb25hbChNZXNzYWdlRXZlbnRTb3VyY2UoV1RG
TW92ZShtX3NvdXJjZSkpKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgU2VjdXJpdHlP
cmlnaW4qIHRhcmdldE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0T3JpZ2luLmdldCgp
OyB9CkBAIC0xODAsNyArMTgwLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8RE9NV2luZG93PiBtX3dp
bmRvdzsKICAgICBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtX21lc3NhZ2U7CiAgICAgU3RyaW5n
IG1fb3JpZ2luOwotICAgIFJlZjxET01XaW5kb3c+IG1fc291cmNlOworICAgIFJlZlB0cjxXaW5k
b3dQcm94eT4gbV9zb3VyY2U7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX3RhcmdldE9y
aWdpbjsKICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBtX3N0YWNrVHJhY2U7CiAgICAgUmVm
UHRyPFVzZXJHZXN0dXJlVG9rZW4+IG1fdXNlckdlc3R1cmVUb0ZvcndhcmQ7CkBAIC05NjAsNyAr
OTYwLDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9NV2luZG93Ojpwb3N0TWVzc2FnZShKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIERPTVdpbmRvdyYgaW5jdW0KICAgICBNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyBtZXNzYWdlIHsgbWVzc2FnZURhdGEucmVsZWFzZVJldHVyblZhbHVlKCksIGRpc2VudGFu
Z2xlZFBvcnRzLnJlbGVhc2VSZXR1cm5WYWx1ZSgpIH07CiAKICAgICAvLyBTY2hlZHVsZSB0aGUg
bWVzc2FnZS4KLSAgICBhdXRvKiB0aW1lciA9IG5ldyBQb3N0TWVzc2FnZVRpbWVyKCp0aGlzLCBX
VEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4sIGluY3VtYmVudFdpbmRvdywgV1RGTW92ZSh0
YXJnZXQpLCBXVEZNb3ZlKHN0YWNrVHJhY2UpKTsKKyAgICBSZWZQdHI8V2luZG93UHJveHk+IGlu
Y3VtYmVudFdpbmRvd1Byb3h5ID0gaW5jdW1iZW50V2luZG93LmZyYW1lKCkgPyAmaW5jdW1iZW50
V2luZG93LmZyYW1lKCktPndpbmRvd1Byb3h5KCkgOiBudWxscHRyOworICAgIGF1dG8qIHRpbWVy
ID0gbmV3IFBvc3RNZXNzYWdlVGltZXIoKnRoaXMsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9y
aWdpbiwgV1RGTW92ZShpbmN1bWJlbnRXaW5kb3dQcm94eSksIFdURk1vdmUodGFyZ2V0KSwgV1RG
TW92ZShzdGFja1RyYWNlKSk7CiAgICAgdGltZXItPnN0YXJ0T25lU2hvdCgwX3MpOwogCiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQb3N0TWVzc2FnZSgqbV9mcmFtZSwgKnRpbWVy
LCBzdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDkxNzRh
ZmQ1MzIxNmMxMTJjNGI1ZTBkNTc1ODdjODZkMWZjOWM1YTEuLjM3ZjhmMDZiNGY2MzQxNWMzZTYz
ZjY3MmI1MTE0ZjU3NzM2ZjdhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwCkBAIC01MDgsNyArNTA4LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6ZGlzcGF0Y2hUZXh0
SW5wdXRFdmVudEZvcihGcmFtZSogaW5uZXJGcmFtZSwgY29uc3QgRHJhZ0RhdGEKICAgICBTdHJp
bmcgdGV4dCA9IG1fcGFnZS5kcmFnQ2FyZXRDb250cm9sbGVyKCkuaXNDb250ZW50UmljaGx5RWRp
dGFibGUoKSA/IGVtcHR5U3RyaW5nKCkgOiBkcmFnRGF0YS5hc1BsYWluVGV4dCgpOwogICAgIEVs
ZW1lbnQqIHRhcmdldCA9IGlubmVyRnJhbWUtPmVkaXRvcigpLmZpbmRFdmVudFRhcmdldEZyb20o
bV9wYWdlLmRyYWdDYXJldENvbnRyb2xsZXIoKS5jYXJldFBvc2l0aW9uKCkpOwogICAgIC8vIEZJ
WE1FOiBXaGF0IGd1YXJhbnRlZXMgdGFyZ2V0IGlzIG5vdCBudWxsPwotICAgIGF1dG8gZXZlbnQg
PSBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3AoaW5uZXJGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCksIHRleHQpOworICAgIGF1dG8gZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3Ao
JmlubmVyRnJhbWUtPndpbmRvd1Byb3h5KCksIHRleHQpOwogICAgIHRhcmdldC0+ZGlzcGF0Y2hF
dmVudChldmVudCk7CiAgICAgcmV0dXJuICFldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDg3ZDEyNzc0Y2M2ZjM0YWUwNzAx
MDBkMTllZWI3NjU2NWYyNTA3OWQuLjhiM2M2ZDFhZjhmODU0MWRhM2U1YTc0NDUwYmE4NWI0YzYz
NDNiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTIxOTgsNyArMjE5
OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYgZHJhCiAKICAgICB2aWV3LT5kaXNhYmxlTGF5ZXJG
bHVzaFRocm90dGxpbmdUZW1wb3JhcmlseUZvckludGVyYWN0aW9uKCk7CiAgICAgUmVmPE1vdXNl
RXZlbnQ+IG1lID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwKLSAgICAgICAgdHJ1ZSwg
dHJ1ZSwgZXZlbnQudGltZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCksIG1fZnJh
bWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwKKyAgICAgICAgdHJ1ZSwgdHJ1ZSwgZXZlbnQu
dGltZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCksICZtX2ZyYW1lLndpbmRvd1By
b3h5KCksCiAgICAgICAgIDAsIGV2ZW50Lmdsb2JhbFBvc2l0aW9uKCkueCgpLCBldmVudC5nbG9i
YWxQb3NpdGlvbigpLnkoKSwgZXZlbnQucG9zaXRpb24oKS54KCksIGV2ZW50LnBvc2l0aW9uKCku
eSgpLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIGV2ZW50Lm1vdmVtZW50RGVs
dGEoKS54KCksIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS55KCksCkBAIC0zMjQ4LDcgKzMyNDgsNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6aW50ZXJuYWxLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQmIGluaXRpYWxLZXlFdmVudAogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlE
b3duRXZlbnQgPSBpbml0aWFsS2V5RXZlbnQ7ICAgIAogICAgIGlmIChrZXlEb3duRXZlbnQudHlw
ZSgpICE9IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pCiAgICAgICAgIGtleURvd25FdmVudC5k
aXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93biwgYmFja3dh
cmRDb21wYXRpYmlsaXR5TW9kZSk7Ci0gICAgYXV0byBrZXlkb3duID0gS2V5Ym9hcmRFdmVudDo6
Y3JlYXRlKGtleURvd25FdmVudCwgbV9mcmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsK
KyAgICBhdXRvIGtleWRvd24gPSBLZXlib2FyZEV2ZW50OjpjcmVhdGUoa2V5RG93bkV2ZW50LCAm
bV9mcmFtZS53aW5kb3dQcm94eSgpKTsKICAgICBpZiAobWF0Y2hlZEFuQWNjZXNzS2V5KQogICAg
ICAgICBrZXlkb3duLT5wcmV2ZW50RGVmYXVsdCgpOwogICAgIGtleWRvd24tPnNldFRhcmdldChl
bGVtZW50KTsKQEAgLTMyNzEsNyArMzI3MSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjppbnRlcm5h
bEtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgaW5pdGlhbEtleUV2ZW50CiAg
ICAgCiAgICAgaWYgKGhhbmRsZWRCeUlucHV0TWV0aG9kKSB7CiAgICAgICAgIGtleURvd25FdmVu
dC5zZXRXaW5kb3dzVmlydHVhbEtleUNvZGUoQ29tcG9zaXRpb25FdmVudEtleUNvZGUpOwotICAg
ICAgICBrZXlkb3duID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGtleURvd25FdmVudCwgbV9mcmFt
ZS5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsKKyAgICAgICAga2V5ZG93biA9IEtleWJvYXJk
RXZlbnQ6OmNyZWF0ZShrZXlEb3duRXZlbnQsICZtX2ZyYW1lLndpbmRvd1Byb3h5KCkpOwogICAg
ICAgICBrZXlkb3duLT5zZXRUYXJnZXQoZWxlbWVudCk7CiAgICAgICAgIGtleWRvd24tPnNldERl
ZmF1bHRIYW5kbGVkKCk7CiAgICAgfQpAQCAtMzMwMSw3ICszMzAxLDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmludGVybmFsS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBpbml0
aWFsS2V5RXZlbnQKICAgICBrZXlQcmVzc0V2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQ
bGF0Zm9ybUV2ZW50OjpDaGFyLCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKTsKICAgICBpZiAo
a2V5UHJlc3NFdmVudC50ZXh0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4ga2V5ZG93blJl
c3VsdDsKLSAgICBhdXRvIGtleXByZXNzID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGtleVByZXNz
RXZlbnQsIG1fZnJhbWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CisgICAgYXV0byBrZXlw
cmVzcyA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShrZXlQcmVzc0V2ZW50LCAmbV9mcmFtZS53aW5k
b3dQcm94eSgpKTsKICAgICBrZXlwcmVzcy0+c2V0VGFyZ2V0KGVsZW1lbnQpOwogICAgIGlmIChr
ZXlkb3duUmVzdWx0KQogICAgICAgICBrZXlwcmVzcy0+cHJldmVudERlZmF1bHQoKTsKQEAgLTM4
MDIsNyArMzgwMiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVudChj
b25zdCBTdHJpbmcmIHRleHQsIEV2ZW50KiB1bmRlcmx5aW5nRXZlCiAgICAgaWYgKEZyYW1lVmll
dyogdmlldyA9IG1fZnJhbWUudmlldygpKQogICAgICAgICB2aWV3LT5kaXNhYmxlTGF5ZXJGbHVz
aFRocm90dGxpbmdUZW1wb3JhcmlseUZvckludGVyYWN0aW9uKCk7CiAKLSAgICBSZWY8VGV4dEV2
ZW50PiBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCksIHRleHQsIGlucHV0VHlwZSk7CisgICAgYXV0byBldmVudCA9IFRleHRFdmVudDo6Y3Jl
YXRlKCZtX2ZyYW1lLndpbmRvd1Byb3h5KCksIHRleHQsIGlucHV0VHlwZSk7CiAgICAgZXZlbnQt
PnNldFVuZGVybHlpbmdFdmVudCh1bmRlcmx5aW5nRXZlbnQpOwogCiAgICAgdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KGV2ZW50KTsKQEAgLTQyMTEsNyArNDIxMSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAKICAg
ICAgICAgICAgIFJlZjxUb3VjaEV2ZW50PiB0b3VjaEV2ZW50ID0KICAgICAgICAgICAgICAgICBU
b3VjaEV2ZW50OjpjcmVhdGUoZWZmZWN0aXZlVG91Y2hlcy5nZXQoKSwgdGFyZ2V0VG91Y2hlcy5n
ZXQoKSwgY2hhbmdlZFRvdWNoZXNbc3RhdGVdLm1fdG91Y2hlcy5nZXQoKSwKLSAgICAgICAgICAg
ICAgICAgICAgc3RhdGVOYW1lLCBkb3duY2FzdDxOb2RlPigqdGFyZ2V0KS5kb2N1bWVudCgpLmRl
ZmF1bHRWaWV3KCksCisgICAgICAgICAgICAgICAgICAgIHN0YXRlTmFtZSwgZG93bmNhc3Q8Tm9k
ZT4oKnRhcmdldCkuZG9jdW1lbnQoKS53aW5kb3dQcm94eSgpLAogICAgICAgICAgICAgICAgICAg
ICAwLCAwLCAwLCAwLCBldmVudC5jdHJsS2V5KCksIGV2ZW50LmFsdEtleSgpLCBldmVudC5zaGlm
dEtleSgpLCBldmVudC5tZXRhS2V5KCkpOwogICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2
ZW50KHRvdWNoRXZlbnQpOwogICAgICAgICAgICAgc3dhbGxvd2VkRXZlbnQgPSBzd2FsbG93ZWRF
dmVudCB8fCB0b3VjaEV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCkgfHwgdG91Y2hFdmVudC0+ZGVm
YXVsdEhhbmRsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3cuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdp
bmRvdy5jcHAKaW5kZXggN2IwOWM4MTg3YzQ2NDAwNjcwNmZjM2VjYTQ3N2I2OTcwMzY1YmEyMi4u
Njc3ZDY2YzEyNTQ0ODMxNDE3ZDRkODE0NDQ3ZjQwNWIxYjUzMDNkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TURPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdpbmRvdy5jcHAKQEAgLTY0LDYgKzY0LDIyIEBA
IFdlYktpdERPTURPTVdpbmRvdyoga2l0KFdlYkNvcmU6OkRPTVdpbmRvdyogb2JqKQogICAgIHJl
dHVybiB3cmFwRE9NV2luZG93KG9iaik7CiB9CiAKK1dlYktpdERPTURPTVdpbmRvdyoga2l0KFdl
YkNvcmU6OldpbmRvd1Byb3h5KiB3aW5kb3dQcm94eSkKK3sKKyAgICBpZiAoIXdpbmRvd1Byb3h5
IHx8ICFpczxXZWJDb3JlOjpET01XaW5kb3c+KHdpbmRvd1Byb3h5LT53aW5kb3coKSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGtpdChkb3duY2FzdDxXZWJDb3JlOjpE
T01XaW5kb3c+KHdpbmRvd1Byb3h5LT53aW5kb3coKSkpOworfQorCitXZWJDb3JlOjpXaW5kb3dQ
cm94eSogdG9XaW5kb3dQcm94eShXZWJLaXRET01ET01XaW5kb3cqIHZpZXcpCit7CisgICAgYXV0
byogd2luZG93ID0gY29yZSh2aWV3KTsKKyAgICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LT5mcmFt
ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJndpbmRvdy0+ZnJhbWUo
KS0+d2luZG93UHJveHkoKTsKK30KKwogV2ViQ29yZTo6RE9NV2luZG93KiBjb3JlKFdlYktpdERP
TURPTVdpbmRvdyogcmVxdWVzdCkKIHsKICAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0
PFdlYkNvcmU6OkRPTVdpbmRvdyo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2Jq
ZWN0KSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NV2luZG93UHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdp
bmRvd1ByaXZhdGUuaAppbmRleCBlMzFkMjI3NWI4YjgxY2FmODBlMjAxZTZkZDZiMWFlOTYyY2Nm
ZjkyLi42Njg0ZWM2Nzg4ZWRlZmIwZTg2ZDVkZDE1NDI2OGU2ZmQzNWY2MDY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NRE9NV2luZG93UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3dQcml2YXRlLmgKQEAg
LTIxLDEyICsyMSwxNSBAQAogI2RlZmluZSBXZWJLaXRET01ET01XaW5kb3dQcml2YXRlX2gKIAog
I2luY2x1ZGUgPFdlYkNvcmUvRE9NV2luZG93Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dQ
cm94eS5oPgogI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01ET01XaW5kb3cuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiBXZWJLaXRET01ET01XaW5kb3cqIHdyYXBET01XaW5kb3coV2ViQ29y
ZTo6RE9NV2luZG93Kik7CiBXZWJLaXRET01ET01XaW5kb3cqIGtpdChXZWJDb3JlOjpET01XaW5k
b3cqKTsKK1dlYktpdERPTURPTVdpbmRvdyoga2l0KFdlYkNvcmU6OldpbmRvd1Byb3h5Kik7CiBX
ZWJDb3JlOjpET01XaW5kb3cqIGNvcmUoV2ViS2l0RE9NRE9NV2luZG93Kik7CitXZWJDb3JlOjpX
aW5kb3dQcm94eSogdG9XaW5kb3dQcm94eShXZWJLaXRET01ET01XaW5kb3cqKTsKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLyogV2ViS2l0RE9NRE9NV2luZG93UHJpdmF0ZV9oICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50R3RrLmNwcApp
bmRleCA5NTA1NDFmMDliMjI3MDFhMTM5NTU4MWNkMWI0MzI5NzAzNDIxZWE0Li4xM2M5NmE1NzBl
ZDlkZGIyZTJkMTMyNzkzYzg0NzlmZTcxN2ViN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudEd0ay5jcHAKQEAgLTE0OTQsOCArMTQ5NCw3IEBAIFdl
YktpdERPTURPTVdpbmRvdyogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZGVmYXVsdF92aWV3KFdl
YktpdERPTURvY3VtZW50KiBzZWxmCiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfRE9DVU1FTlQo
c2VsZiksIDApOwogICAgIFdlYkNvcmU6OkRvY3VtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpET01XaW5kb3c+IGdvYmplY3RSZXN1bHQgPSBXVEY6
OmdldFB0cihpdGVtLT5kZWZhdWx0VmlldygpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29i
amVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0KGl0ZW0tPmRlZmF1bHRW
aWV3KCkpOwogfQogCiBXZWJLaXRET01TdHlsZVNoZWV0TGlzdCogd2Via2l0X2RvbV9kb2N1bWVu
dF9nZXRfc3R5bGVfc2hlZXRzKFdlYktpdERPTURvY3VtZW50KiBzZWxmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUhUTUxGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxGcmFtZUVsZW1lbnQuY3BwCmluZGV4
IGMxNWY2YTQ4NjRmNzgzZWMwNzM2YjRjYTM3OTZjNmRkNjZiMzc2MmEuLjViNjcxNTIzOGM2OTM5
YWE3Y2Q5MDc2YzI1Yjk5MjUxYzZkMTU1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRnJhbWVFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NSFRNTEZyYW1lRWxlbWVudC5jcHAKQEAgLTQ5Miw4ICs0OTIsNyBA
QCBXZWJLaXRET01ET01XaW5kb3cqIHdlYmtpdF9kb21faHRtbF9mcmFtZV9lbGVtZW50X2dldF9j
b250ZW50X3dpbmRvdyhXZWJLaXRET01IVAogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxf
RlJBTUVfRUxFTUVOVChzZWxmKSwgMCk7CiAgICAgV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudCog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RE9NV2luZG93
PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+Y29udGVudFdpbmRvdygpKTsKLSAg
ICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIFdl
YktpdDo6a2l0KGl0ZW0tPmNvbnRlbnRXaW5kb3coKSk7CiB9CiAKIGdsb25nIHdlYmtpdF9kb21f
aHRtbF9mcmFtZV9lbGVtZW50X2dldF93aWR0aChXZWJLaXRET01IVE1MRnJhbWVFbGVtZW50KiBz
ZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MSUZy
YW1lRWxlbWVudC5jcHAKaW5kZXggMjhiNTFjZTkwZTlmM2Y1MDQwZGIxNjE3NjZlNzYwNGJjZjRk
ZmY5NC4uM2U2NzRhZjJmMTUyMDcyMjA2ODIzODc5NWI4NWQ1NDdmMjI1MTZjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUhUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1lbnQu
Y3BwCkBAIC01MzgsOCArNTM4LDcgQEAgV2ViS2l0RE9NRE9NV2luZG93KiB3ZWJraXRfZG9tX2h0
bWxfaWZyYW1lX2VsZW1lbnRfZ2V0X2NvbnRlbnRfd2luZG93KFdlYktpdERPTUgKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19IVE1MX0lGUkFNRV9FTEVNRU5UKHNlbGYpLCAwKTsKICAgICBXZWJD
b3JlOjpIVE1MSUZyYW1lRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6RE9NV2luZG93PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRl
bS0+Y29udGVudFdpbmRvdygpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3Vs
dC5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0KGl0ZW0tPmNvbnRlbnRXaW5kb3coKSk7
CiB9CiAKIEdfR05VQ19FTkRfSUdOT1JFX0RFUFJFQ0FUSU9OUzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01L
ZXlib2FyZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01LZXlib2FyZEV2ZW50LmNwcAppbmRleCA0MWZjYzk3ODM0
M2Q0MjM4ZGM2YjUxYTcwNDM5OGFmNzNhYmM4MmQwLi43ZGEzMjYzZjBiZTMyYTUxNmIwYzljM2Fh
ZmYxODQ4MDMzNTEyMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NS2V5Ym9hcmRFdmVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUtleWJvYXJkRXZlbnQuY3BwCkBAIC0yMDIsOSArMjAyLDggQEAgdm9pZCB3ZWJraXRfZG9t
X2tleWJvYXJkX2V2ZW50X2luaXRfa2V5Ym9hcmRfZXZlbnQoV2ViS2l0RE9NS2V5Ym9hcmRFdmVu
dCogc2VsZiwKICAgICBnX3JldHVybl9pZl9mYWlsKGtleUlkZW50aWZpZXIpOwogICAgIFdlYkNv
cmU6OktleWJvYXJkRXZlbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpT
dHJpbmcgY29udmVydGVkVHlwZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh0eXBlKTsKLSAgICBX
ZWJDb3JlOjpET01XaW5kb3cqIGNvbnZlcnRlZFZpZXcgPSBXZWJLaXQ6OmNvcmUodmlldyk7CiAg
ICAgV1RGOjpTdHJpbmcgY29udmVydGVkS2V5SWRlbnRpZmllciA9IFdURjo6U3RyaW5nOjpmcm9t
VVRGOChrZXlJZGVudGlmaWVyKTsKLSAgICBpdGVtLT5pbml0S2V5Ym9hcmRFdmVudChjb252ZXJ0
ZWRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvbnZlcnRlZFZpZXcsIGNvbnZlcnRlZEtl
eUlkZW50aWZpZXIsIGxvY2F0aW9uLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5
LCBhbHRHcmFwaEtleSk7CisgICAgaXRlbS0+aW5pdEtleWJvYXJkRXZlbnQoY29udmVydGVkVHlw
ZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXZWJLaXQ6OnRvV2luZG93UHJveHkodmlldyksIGNv
bnZlcnRlZEtleUlkZW50aWZpZXIsIGxvY2F0aW9uLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBhbHRHcmFwaEtleSk7CiB9CiAKIGdjaGFyKiB3ZWJraXRfZG9tX2tleWJvYXJk
X2V2ZW50X2dldF9rZXlfaWRlbnRpZmllcihXZWJLaXRET01LZXlib2FyZEV2ZW50KiBzZWxmKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTU1vdXNlRXZlbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1vdXNlRXZlbnQuY3BwCmluZGV4
IDA1ODAwYTM1N2ZhYzY3NGRiOGMzZDMzNjVlMWNlNWM2OTY1YjY3MjguLjIxN2U1NjVhNGFiODYz
MWVlZDJmNTExNTExMTQ2ZDZhMjAxOGVjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Nb3VzZUV2ZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NTW91c2VFdmVudC5jcHAKQEAgLTMxOSw5ICszMTksOCBAQCB2b2lkIHdlYmtp
dF9kb21fbW91c2VfZXZlbnRfaW5pdF9tb3VzZV9ldmVudChXZWJLaXRET01Nb3VzZUV2ZW50KiBz
ZWxmLCBjb25zdCBnYwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19FVkVOVF9U
QVJHRVQocmVsYXRlZFRhcmdldCkpOwogICAgIFdlYkNvcmU6Ok1vdXNlRXZlbnQqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkVHlwZSA9IFdURjo6
U3RyaW5nOjpmcm9tVVRGOCh0eXBlKTsKLSAgICBXZWJDb3JlOjpET01XaW5kb3cqIGNvbnZlcnRl
ZFZpZXcgPSBXZWJLaXQ6OmNvcmUodmlldyk7CiAgICAgV2ViQ29yZTo6RXZlbnRUYXJnZXQqIGNv
bnZlcnRlZFJlbGF0ZWRUYXJnZXQgPSBXZWJLaXQ6OmNvcmUocmVsYXRlZFRhcmdldCk7Ci0gICAg
aXRlbS0+aW5pdE1vdXNlRXZlbnQoY29udmVydGVkVHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBjb252ZXJ0ZWRWaWV3LCBkZXRhaWwsIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVu
dFksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgY29udmVydGVk
UmVsYXRlZFRhcmdldCk7CisgICAgaXRlbS0+aW5pdE1vdXNlRXZlbnQoY29udmVydGVkVHlwZSwg
Y2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXZWJLaXQ6OnRvV2luZG93UHJveHkodmlldyksIGRldGFp
bCwgc2NyZWVuWCwgc2NyZWVuWSwgY2xpZW50WCwgY2xpZW50WSwgY3RybEtleSwgYWx0S2V5LCBz
aGlmdEtleSwgbWV0YUtleSwgYnV0dG9uLCBjb252ZXJ0ZWRSZWxhdGVkVGFyZ2V0KTsKIH0KIAog
Z2xvbmcgd2Via2l0X2RvbV9tb3VzZV9ldmVudF9nZXRfc2NyZWVuX3goV2ViS2l0RE9NTW91c2VF
dmVudCogc2VsZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01VSUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01VSUV2ZW50LmNw
cAppbmRleCA5YWUwMTIzOWE4MjZjZjhlZjJkNDA2MjBkNWM0Mzc0YjYwMjQ5ZGZjLi5hMGY2YTkw
MTA0ZDBlZWEzZGZmMzk5NTE3ZmM4OGI4NGIzOTE0YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVUlFdmVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTVVJRXZlbnQuY3BwCkBAIC0yMDQsOCArMjA0LDcgQEAgdm9pZCB3ZWJr
aXRfZG9tX3VpX2V2ZW50X2luaXRfdWlfZXZlbnQoV2ViS2l0RE9NVUlFdmVudCogc2VsZiwgY29u
c3QgZ2NoYXIqIHR5cGUKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfRE9NX1dJ
TkRPVyh2aWV3KSk7CiAgICAgV2ViQ29yZTo6VUlFdmVudCogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRUeXBlID0gV1RGOjpTdHJpbmc6OmZyb21V
VEY4KHR5cGUpOwotICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogY29udmVydGVkVmlldyA9IFdlYktp
dDo6Y29yZSh2aWV3KTsKLSAgICBpdGVtLT5pbml0VUlFdmVudChjb252ZXJ0ZWRUeXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIGNvbnZlcnRlZFZpZXcsIGRldGFpbCk7CisgICAgaXRlbS0+aW5p
dFVJRXZlbnQoY29udmVydGVkVHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXZWJLaXQ6OnRv
V2luZG93UHJveHkodmlldyksIGRldGFpbCk7CiB9CiAKIFdlYktpdERPTURPTVdpbmRvdyogd2Vi
a2l0X2RvbV91aV9ldmVudF9nZXRfdmlldyhXZWJLaXRET01VSUV2ZW50KiBzZWxmKQpAQCAtMjEz
LDggKzIxMiw3IEBAIFdlYktpdERPTURPTVdpbmRvdyogd2Via2l0X2RvbV91aV9ldmVudF9nZXRf
dmlldyhXZWJLaXRET01VSUV2ZW50KiBzZWxmKQogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1VJ
X0VWRU5UKHNlbGYpLCAwKTsKICAgICBXZWJDb3JlOjpVSUV2ZW50KiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpET01XaW5kb3c+IGdvYmplY3RSZXN1bHQg
PSBXVEY6OmdldFB0cihpdGVtLT52aWV3KCkpOwotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2Jq
ZWN0UmVzdWx0LmdldCgpKTsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQoaXRlbS0+dmlldygpKTsK
IH0KIAogZ2xvbmcgd2Via2l0X2RvbV91aV9ldmVudF9nZXRfZGV0YWlsKFdlYktpdERPTVVJRXZl
bnQqIHNlbGYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2hlZWxFdmVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2hlZWxFdmVu
dC5jcHAKaW5kZXggMGUxYmE2ZGE1NWMxYzQzZWVlNjRhZTlhMWVkNWFiNjQ0NGY5ZjRmOS4uZTc3
NGNkMTY3ZWNiMzQ5MTE0MTkwOGUzODlkZDUwYTI1NDQ2Y2VhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVdo
ZWVsRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01XaGVlbEV2ZW50LmNwcApAQCAtMTMxLDggKzEzMSw3IEBA
IHZvaWQgd2Via2l0X2RvbV93aGVlbF9ldmVudF9pbml0X3doZWVsX2V2ZW50KFdlYktpdERPTVdo
ZWVsRXZlbnQqIHNlbGYsIGdsb25nIHdoCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9N
X0lTX1dIRUVMX0VWRU5UKHNlbGYpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfRE9NX1dJTkRPVyh2aWV3KSk7CiAgICAgV2ViQ29yZTo6V2hlZWxFdmVudCogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKLSAgICBXZWJDb3JlOjpET01XaW5kb3cqIGNvbnZlcnRlZFZpZXcg
PSBXZWJLaXQ6OmNvcmUodmlldyk7Ci0gICAgaXRlbS0+aW5pdFdlYktpdFdoZWVsRXZlbnQod2hl
ZWxEZWx0YVgsIHdoZWVsRGVsdGFZLCBjb252ZXJ0ZWRWaWV3LCBzY3JlZW5YLCBzY3JlZW5ZLCBj
bGllbnRYLCBjbGllbnRZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KTsKKyAg
ICBpdGVtLT5pbml0V2ViS2l0V2hlZWxFdmVudCh3aGVlbERlbHRhWCwgd2hlZWxEZWx0YVksIFdl
YktpdDo6dG9XaW5kb3dQcm94eSh2aWV3KSwgc2NyZWVuWCwgc2NyZWVuWSwgY2xpZW50WCwgY2xp
ZW50WSwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSk7CiB9CiAKIGdsb25nIHdl
YmtpdF9kb21fd2hlZWxfZXZlbnRfZ2V0X3doZWVsX2RlbHRhX3goV2ViS2l0RE9NV2hlZWxFdmVu
dCogc2VsZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tCmluZGV4IDQ4MTY2NzY4ZjE0MTU4ZjAyMjAzZTJiMGI5MjVkMDcyY2Y1MzM4MDQu
LmE3NDllYTYzNDk3ODJkZGJiZGEzMDAzMmI4NmQxYmM3NWMwZDYyNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTY4MCw3
ICsxNjgwLDcgQEAgdm9pZCBQREZQbHVnaW46OmNsaWNrZWRMaW5rKE5TVVJMICp1cmwpCiAKICAg
ICBSZWZQdHI8RXZlbnQ+IGNvcmVFdmVudDsKICAgICBpZiAobV9sYXN0TW91c2VFdmVudC50eXBl
KCkgIT0gV2ViRXZlbnQ6Ok5vVHlwZSkKLSAgICAgICAgY29yZUV2ZW50ID0gTW91c2VFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVs
dFZpZXcoKSwgcGxhdGZvcm0obV9sYXN0TW91c2VFdmVudCksIDAsIDApOworICAgICAgICBjb3Jl
RXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsICZmcmFt
ZS0+d2luZG93UHJveHkoKSwgcGxhdGZvcm0obV9sYXN0TW91c2VFdmVudCksIDAsIDApOwogCiAg
ICAgZnJhbWUtPmxvYWRlcigpLnVybFNlbGVjdGVkKGNvcmVVUkwsIGVtcHR5U3RyaW5nKCksIGNv
cmVFdmVudC5nZXQoKSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywg
TWF5YmVTZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFs
bG93KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggZTQyNDNjMDczZGE2NDY5YzRiNzY2NmZjYmEwMzFhOThjMjlmYzQ5NS4uOGI0Y2U1ZGMx
MDgwZDkwYjhlNjU1NWRlMTEyNTFhMTlmZDRlZDQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI3MjksNyArMjcyOSw3IEBAIHZvaWQgV2Vi
UGFnZTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRW
YWxpZCwgY29uc3QgV2ViCiAgICAgaWYgKGlzS2V5Ym9hcmRFdmVudFZhbGlkICYmIGV2ZW50LnR5
cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93bikgewogICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQgcGxhdGZvcm1FdmVudChwbGF0Zm9ybShldmVudCkpOwogICAgICAgICBwbGF0Zm9ybUV2ZW50
LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKLSAg
ICAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRJbml0aWFsRm9jdXMoZm9yd2FyZCA/
IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCA6IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQsICZLZXlib2Fy
ZEV2ZW50OjpjcmVhdGUocGxhdGZvcm1FdmVudCwgZnJhbWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZp
ZXcoKSkuZ2V0KCkpOworICAgICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNldEluaXRp
YWxGb2N1cyhmb3J3YXJkID8gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkIDogRm9jdXNEaXJlY3Rpb25C
YWNrd2FyZCwgJktleWJvYXJkRXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCAmZnJhbWUud2lu
ZG93UHJveHkoKSkuZ2V0KCkpOwogCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BYnN0cmFjdFZpZXcubW0KaW5kZXggMWE0YzI5YjFi
MGRkYWM4MjI1N2JkNmY0YmE2ZGM0NGZmMzkxMmU4OS4uMTY5ZTRhZTVmZTc3NWI5OGQyNGNkNDgw
NmE1YTljNTA3OGUxMGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUFic3RyYWN0Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
QWJzdHJhY3RWaWV3Lm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1l
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YlNjcmlwdE9iamVjdFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2luZG93UHJveHkuaD4K
IAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RnJhbWUqPihfaW50ZXJu
YWwpCiAKQEAgLTEwMCwzICsxMDEsMTkgQEAgRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6
QWJzdHJhY3RET01XaW5kb3cqIHZhbHVlKQogCiAgICAgcmV0dXJuIGtpdChkb3duY2FzdDxXZWJD
b3JlOjpET01XaW5kb3c+KHZhbHVlKSk7CiB9CisKK0RPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNv
cmU6OldpbmRvd1Byb3h5KiB3aW5kb3dQcm94eSkKK3sKKyAgICBpZiAoIXdpbmRvd1Byb3h5KQor
ICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIGtpdCh3aW5kb3dQcm94eS0+d2luZG93
KCkpOworfQorCitXZWJDb3JlOjpXaW5kb3dQcm94eSogdG9XaW5kb3dQcm94eShET01BYnN0cmFj
dFZpZXcgKnZpZXcpCit7CisgICAgYXV0byogd2luZG93ID0gY29yZSh2aWV3KTsKKyAgICBpZiAo
IXdpbmRvdyB8fCAhd2luZG93LT5mcmFtZSgpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJl
dHVybiAmd2luZG93LT5mcmFtZSgpLT53aW5kb3dQcm94eSgpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaAppbmRleCBj
NGQ3MzI1YzdmMjViYjViODYxMjc0MTZlM2Q5MGQyODIxNGMxMTk3Li4zNTlmMDVlYjRkNGE0M2Fh
NTI0MjMzZTRiYmY2NjI4ZGIzNjg4NmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaApAQCAtMjgsMTEgKzI4LDE0IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBYnN0cmFjdERPTVdpbmRvdzsKIGNsYXNzIERP
TVdpbmRvdzsKK2NsYXNzIFdpbmRvd1Byb3h5OwogfQogCiBXZWJDb3JlOjpET01XaW5kb3cqIGNv
cmUoRE9NQWJzdHJhY3RWaWV3ICopOwogRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6RE9N
V2luZG93Kik7CiBET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3JlOjpBYnN0cmFjdERPTVdpbmRv
dyopOworRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6V2luZG93UHJveHkqKTsKK1dlYkNv
cmU6OldpbmRvd1Byb3h5KiB0b1dpbmRvd1Byb3h5KERPTUFic3RyYWN0VmlldyAqKTsKIAogQGlu
dGVyZmFjZSBET01BYnN0cmFjdFZpZXcgKFdlYktpdExlZ2FjeUludGVybmFsKQogLSAodm9pZClf
ZGlzY29ubmVjdEZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTURvY3VtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50
Lm1tCmluZGV4IDZjMmYzNmQ4MjRhOTRhNjgyM2JmMmE4MWM5YmVkMjIzNGU3YTY4ZjQuLjMwYjhj
NDUzNTQ4NWI1NjMxZTFhZWI2NmU0NWIwNWU1ZjFjMTdjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KQEAgLTE2Miw3ICsxNjIsNyBAQCAtICh2b2lkKXNl
dERvY3VtZW50VVJJOihOU1N0cmluZyAqKW5ld0RvY3VtZW50VVJJCiAtIChET01BYnN0cmFjdFZp
ZXcgKilkZWZhdWx0VmlldwogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmRlZmF1bHRWaWV3KCkpKTsK
KyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPndpbmRvd1Byb3h5KCkpKTsKIH0KIAog
LSAoRE9NU3R5bGVTaGVldExpc3QgKilzdHlsZVNoZWV0cwpAQCAtNjg0LDcgKzY4NCw3IEBAIC0g
KERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilnZXRDb21wdXRlZFN0eWxlOihET01FbGVtZW50ICop
ZWxlbWVudCBwc2V1ZG9FbGVtZW50CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmFpc2VUeXBlRXJyb3JFeGNlcHRp
b24oKTsKLSAgICBXZWJDb3JlOjpET01XaW5kb3cqIGR2ID0gSU1QTC0+ZGVmYXVsdFZpZXcoKTsK
KyAgICBXZWJDb3JlOjpET01XaW5kb3cqIGR2ID0gSU1QTC0+ZG9tV2luZG93KCk7CiAgICAgaWYg
KCFkdikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKGR2
LT5nZXRDb21wdXRlZFN0eWxlKCpjb3JlKGVsZW1lbnQpLCBwc2V1ZG9FbGVtZW50KSkpOwpAQCAt
Njk4LDcgKzY5OCw3IEBAIC0gKERPTUNTU1J1bGVMaXN0ICopZ2V0TWF0Y2hlZENTU1J1bGVzOihE
T01FbGVtZW50ICopZWxlbWVudCBwc2V1ZG9FbGVtZW50OihOU1N0CiAtIChET01DU1NSdWxlTGlz
dCAqKWdldE1hdGNoZWRDU1NSdWxlczooRE9NRWxlbWVudCAqKWVsZW1lbnQgcHNldWRvRWxlbWVu
dDooTlNTdHJpbmcgKilwc2V1ZG9FbGVtZW50IGF1dGhvck9ubHk6KEJPT0wpYXV0aG9yT25seQog
ewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3Jl
OjpET01XaW5kb3cqIGR2ID0gSU1QTC0+ZGVmYXVsdFZpZXcoKTsKKyAgICBXZWJDb3JlOjpET01X
aW5kb3cqIGR2ID0gSU1QTC0+ZG9tV2luZG93KCk7CiAgICAgaWYgKCFkdikKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKGR2LT5nZXRNYXRjaGVkQ1NTUnVs
ZXMoY29yZShlbGVtZW50KSwgcHNldWRvRWxlbWVudCwgYXV0aG9yT25seSkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01LZXlib2FyZEV2ZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0KaW5kZXggZTlhYjFm
ZWZlNzRkOTczNGVhYzI4NDE2YjA5ZWYyMzEwZmNmYzcxYi4uYmEyZmJlNGUxODlkNjEzNmVlZDcz
NWVmZmZlNzEyMGI3Zjk2OTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUtleWJvYXJkRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUtleWJvYXJkRXZlbnQubW0KQEAgLTExMCwyNSArMTEwLDI1IEBAIC0gKEJPT0wpZ2V0TW9k
aWZpZXJTdGF0ZTooTlNTdHJpbmcgKilrZXlJZGVudGlmaWVyQXJnCiAtICh2b2lkKWluaXRLZXli
b2FyZEV2ZW50OihOU1N0cmluZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5j
ZWxhYmxlOihCT09MKWNhbmNlbGFibGUgdmlldzooRE9NQWJzdHJhY3RWaWV3ICopdmlldyBrZXlJ
ZGVudGlmaWVyOihOU1N0cmluZyAqKWluS2V5SWRlbnRpZmllciBsb2NhdGlvbjoodW5zaWduZWQp
aW5Mb2NhdGlvbiBjdHJsS2V5OihCT09MKWluQ3RybEtleSBhbHRLZXk6KEJPT0wpaW5BbHRLZXkg
c2hpZnRLZXk6KEJPT0wpaW5TaGlmdEtleSBtZXRhS2V5OihCT09MKWluTWV0YUtleSBhbHRHcmFw
aEtleTooQk9PTClpbkFsdEdyYXBoS2V5CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSwgY29yZSh2aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBpbkxvY2F0aW9uLCBp
bkN0cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXksIGluQWx0R3JhcGhLZXkp
OworICAgIElNUEwtPmluaXRLZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJs
ZSwgdG9XaW5kb3dQcm94eSh2aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBpbkxvY2F0aW9uLCBpbkN0
cmxLZXksIGluQWx0S2V5LCBpblNoaWZ0S2V5LCBpbk1ldGFLZXksIGluQWx0R3JhcGhLZXkpOwog
fQogCiAtICh2b2lkKWluaXRLZXlib2FyZEV2ZW50OihOU1N0cmluZyAqKXR5cGUgY2FuQnViYmxl
OihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihCT09MKWNhbmNlbGFibGUgdmlldzooRE9NQWJz
dHJhY3RWaWV3ICopdmlldyBrZXlJZGVudGlmaWVyOihOU1N0cmluZyAqKWluS2V5SWRlbnRpZmll
ciBsb2NhdGlvbjoodW5zaWduZWQpaW5Mb2NhdGlvbiBjdHJsS2V5OihCT09MKWluQ3RybEtleSBh
bHRLZXk6KEJPT0wpaW5BbHRLZXkgc2hpZnRLZXk6KEJPT0wpaW5TaGlmdEtleSBtZXRhS2V5OihC
T09MKWluTWV0YUtleQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIGNvcmUodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5Mb2NhdGlvbiwgaW5DdHJsS2V5LCBp
bkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5KTsKKyAgICBJTVBMLT5pbml0S2V5Ym9hcmRF
dmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRvV2luZG93UHJveHkodmlldyksIGlu
S2V5SWRlbnRpZmllciwgaW5Mb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtl
eSwgaW5NZXRhS2V5KTsKIH0KIAogLSAodm9pZClpbml0S2V5Ym9hcmRFdmVudDooTlNTdHJpbmcg
Kil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxh
YmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKXZpZXcga2V5SWRlbnRpZmllcjooTlNTdHJpbmcg
KilpbktleUlkZW50aWZpZXIga2V5TG9jYXRpb246KHVuc2lnbmVkKWluS2V5TG9jYXRpb24gY3Ry
bEtleTooQk9PTClpbkN0cmxLZXkgYWx0S2V5OihCT09MKWluQWx0S2V5IHNoaWZ0S2V5OihCT09M
KWluU2hpZnRLZXkgbWV0YUtleTooQk9PTClpbk1ldGFLZXkgYWx0R3JhcGhLZXk6KEJPT0wpaW5B
bHRHcmFwaEtleQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUs
IGNvcmUodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5LZXlMb2NhdGlvbiwgaW5DdHJsS2V5LCBp
bkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkFsdEdyYXBoS2V5KTsKKyAgICBJTVBM
LT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRvV2luZG93
UHJveHkodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5LZXlMb2NhdGlvbiwgaW5DdHJsS2V5LCBp
bkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5LCBpbkFsdEdyYXBoS2V5KTsKIH0KIAogLSAo
dm9pZClpbml0S2V5Ym9hcmRFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTClj
YW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0Vmll
dyAqKXZpZXcga2V5SWRlbnRpZmllcjooTlNTdHJpbmcgKilpbktleUlkZW50aWZpZXIga2V5TG9j
YXRpb246KHVuc2lnbmVkKWluS2V5TG9jYXRpb24gY3RybEtleTooQk9PTClpbkN0cmxLZXkgYWx0
S2V5OihCT09MKWluQWx0S2V5IHNoaWZ0S2V5OihCT09MKWluU2hpZnRLZXkgbWV0YUtleTooQk9P
TClpbk1ldGFLZXkKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
Ci0gICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBjb3JlKHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluS2V5TG9jYXRpb24sIGluQ3RybEtleSwg
aW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSk7CisgICAgSU1QTC0+aW5pdEtleWJvYXJk
RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBp
bktleUlkZW50aWZpZXIsIGluS2V5TG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hp
ZnRLZXksIGluTWV0YUtleSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTU1vdXNlRXZlbnQubW0KaW5kZXggN2M3ZTBkZGZmMTQyMTYxZWU0OGU2Nzc3MDI1ZTdm
NzBlODUzYTgxMy4uZTUxNWQ4OTM1YzE3N2Q0NzEwOTRhODRjNWNmYjhkNjRkYjI5NDM4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KQEAgLTE0NSw3
ICsxNDUsNyBAQCAtICh2b2lkKWluaXRNb3VzZUV2ZW50OihOU1N0cmluZyAqKXR5cGUgY2FuQnVi
YmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihCTwogICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBET01Ob2RlKiBpblJlbGF0ZWRUYXJnZXRPYmpDID0g
aW5SZWxhdGVkVGFyZ2V0OwogICAgIFdlYkNvcmU6Ok5vZGUqIGluUmVsYXRlZFRhcmdldE5vZGUg
PSBjb3JlKGluUmVsYXRlZFRhcmdldE9iakMpOwotICAgIElNUEwtPmluaXRNb3VzZUV2ZW50KHR5
cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29yZSh2aWV3KSwgZGV0YWlsLCBpblNjcmVlblgs
IGluU2NyZWVuWSwgaW5DbGllbnRYLCBpbkNsaWVudFksIGluQ3RybEtleSwgaW5BbHRLZXksIGlu
U2hpZnRLZXksIGluTWV0YUtleSwgaW5CdXR0b24sIGluUmVsYXRlZFRhcmdldE5vZGUpOworICAg
IElNUEwtPmluaXRNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5k
b3dQcm94eSh2aWV3KSwgZGV0YWlsLCBpblNjcmVlblgsIGluU2NyZWVuWSwgaW5DbGllbnRYLCBp
bkNsaWVudFksIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwgaW5C
dXR0b24sIGluUmVsYXRlZFRhcmdldE5vZGUpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbQppbmRleCAyODY3YmM4MDIzOTE2YTdlNjc4MGZh
M2ViNzEyMGM5YzkxYWQyYTQyLi5kZmE3NjIwMjRiNTY2MjJjZTViMjk5MWRmMzEyZGZkNTM4NzBk
MGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0KQEAg
LTUwLDcgKzUwLDcgQEAgLSAoTlNTdHJpbmcgKilkYXRhCiAtICh2b2lkKWluaXRUZXh0RXZlbnQ6
KE5TU3RyaW5nICopdHlwZUFyZyBjYW5CdWJibGVBcmc6KEJPT0wpY2FuQnViYmxlQXJnIGNhbmNl
bGFibGVBcmc6KEJPT0wpY2FuY2VsYWJsZUFyZyB2aWV3QXJnOihET01BYnN0cmFjdFZpZXcgKil2
aWV3QXJnIGRhdGFBcmc6KE5TU3RyaW5nICopZGF0YUFyZwogewogICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0VGV4dEV2ZW50KHR5cGVBcmcs
IGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywgY29yZSh2aWV3QXJnKSwgZGF0YUFyZyk7Cisg
ICAgSU1QTC0+aW5pdFRleHRFdmVudCh0eXBlQXJnLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVB
cmcsIHRvV2luZG93UHJveHkodmlld0FyZyksIGRhdGFBcmcpOwogfQogCiBAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCmluZGV4IGE0NjRkYWNmYmY1MTI2NmJh
OTJlNTk3NzE5MjlkODYzMWYyZjE2NDAuLjNkYzk3YjM5Mzc4NDdkMGFjYjBlMGNkMmVhOTljOTFm
ZDEyNmY2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCkBA
IC0xMDMsNyArMTAzLDcgQEAgLSAoaW50KXdoaWNoCiAtICh2b2lkKWluaXRVSUV2ZW50OihOU1N0
cmluZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihCT09MKWNh
bmNlbGFibGUgdmlldzooRE9NQWJzdHJhY3RWaWV3ICopaW5WaWV3IGRldGFpbDooaW50KWluRGV0
YWlsCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElN
UEwtPmluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29yZShpblZpZXcp
LCBpbkRldGFpbCk7CisgICAgSU1QTC0+aW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5j
ZWxhYmxlLCB0b1dpbmRvd1Byb3h5KGluVmlldyksIGluRGV0YWlsKTsKIH0KIAogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NV2hlZWxFdmVudC5tbQppbmRleCA4ZjA1Njlj
YTZhM2Y5NThjNzQxZjZkODgzNThmZmZkMTYwYjE4YWM4Li5kZDRhNTdiMGYzMmI3N2I0MzBiNmRk
OWNkNWIxNTIzNGU1YTQzNGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NV2hlZWxFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
V2hlZWxFdmVudC5tbQpAQCAtOTYsNyArOTYsNyBAQCAtIChCT09MKWlzSG9yaXpvbnRhbAogLSAo
dm9pZClpbml0V2hlZWxFdmVudDooaW50KWluV2hlZWxEZWx0YVggd2hlZWxEZWx0YVk6KGludClp
bldoZWVsRGVsdGFZIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKXZpZXcgc2NyZWVuWDooaW50KXNj
cmVlblggc2NyZWVuWTooaW50KXNjcmVlblkgY2xpZW50WDooaW50KWNsaWVudFggY2xpZW50WToo
aW50KWNsaWVudFkgY3RybEtleTooQk9PTCljdHJsS2V5IGFsdEtleTooQk9PTClhbHRLZXkgc2hp
ZnRLZXk6KEJPT0wpc2hpZnRLZXkgbWV0YUtleTooQk9PTCltZXRhS2V5CiB7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmluaXRXZWJLaXRXaGVl
bEV2ZW50KGluV2hlZWxEZWx0YVgsIGluV2hlZWxEZWx0YVksIGNvcmUodmlldyksIHNjcmVlblgs
IHNjcmVlblksIGNsaWVudFgsIGNsaWVudFksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1l
dGFLZXkpOworICAgIElNUEwtPmluaXRXZWJLaXRXaGVlbEV2ZW50KGluV2hlZWxEZWx0YVgsIGlu
V2hlZWxEZWx0YVksIHRvV2luZG93UHJveHkodmlldyksIHNjcmVlblgsIHNjcmVlblksIGNsaWVu
dFgsIGNsaWVudFksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpOwogfQogCiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpp
bmRleCAyYjdiOWUzNzljMWI4ODhlMWMzZTEyNGM1ZGIzZjJkNzMwYjc2ZWU3Li40MWI3YmM3YTVj
ZTU3NzdkNjFlZGE2YzA5M2E1MDJmZTBjZGMwZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTQ1MzMsMTAgKzQ1MzMsMTAgQEAgc3Rh
dGljIFJlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29y
ZUZyYW1lKQogICAgIGNhc2UgTlNFdmVudFR5cGVLZXlEb3duOiB7CiAgICAgICAgIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCBwbGF0Zm9ybUV2ZW50ID0gUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0
ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudChldmVudCk7CiAgICAgICAgIHBsYXRmb3JtRXZlbnQuZGlz
YW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pOwotICAgICAg
ICByZXR1cm4gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKHBsYXRmb3JtRXZlbnQsIGNvcmVGcmFtZS0+
ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CisgICAgICAgIHJldHVybiBLZXlib2FyZEV2ZW50
OjpjcmVhdGUocGxhdGZvcm1FdmVudCwgJmNvcmVGcmFtZS0+d2luZG93UHJveHkoKSk7CiAgICAg
fQogICAgIGNhc2UgTlNFdmVudFR5cGVLZXlVcDoKLSAgICAgICAgcmV0dXJuIEtleWJvYXJkRXZl
bnQ6OmNyZWF0ZShQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2
ZW50KGV2ZW50KSwgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsKKyAgICAg
ICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3Jl
YXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50KGV2ZW50KSwgJmNvcmVGcmFtZS0+d2luZG93UHJveHko
KSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtNDU0
Nyw3ICs0NTQ3LDcgQEAgc3RhdGljIFJlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9h
cmRFdmVudChGcmFtZSogY29yZUZyYW1lKQogICAgIFdlYkV2ZW50VHlwZSB0eXBlID0gZXZlbnQu
dHlwZTsKICAgICBpZiAodHlwZSA9PSBXZWJFdmVudEtleURvd24gfHwgdHlwZSA9PSBXZWJFdmVu
dEtleVVwKSB7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1l
bnQoKTsKLSAgICAgICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShQbGF0Zm9ybUV2ZW50
RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50KGV2ZW50KSwgZG9jdW1lbnQgPyBk
b2N1bWVudC0+ZGVmYXVsdFZpZXcoKSA6IDApOworICAgICAgICByZXR1cm4gS2V5Ym9hcmRFdmVu
dDo6Y3JlYXRlKFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZl
bnQoZXZlbnQpLCBkb2N1bWVudCA/IGRvY3VtZW50LT53aW5kb3dQcm94eSgpIDogMCk7CiAgICAg
fQogICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9E
T01Db3JlQ2xhc3Nlcy5jcHAKaW5kZXggMWI0M2RkOWY0Y2ExMzViMmQxYzRkNGM0NjlmODY4NTU1
YzQ3ZTk2Ni4uYjI1MjYxZjdkZmNlMWI3Y2Y0NzFhOWQxZjIzY2IwODdiMjU3N2EwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2VzLmNwcApAQCAtODAyLDcgKzgwMiw3
IEBAIEhSRVNVTFQgRE9NRG9jdW1lbnQ6OmdldENvbXB1dGVkU3R5bGUoX0luX29wdF8gSURPTUVs
ZW1lbnQqIGVsdCwgX0luXyBCU1RSIHBzZXVkCiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCi0gICAgV2ViQ29yZTo6RE9NV2luZG93KiBkdiA9IG1fZG9jdW1lbnQt
PmRlZmF1bHRWaWV3KCk7CisgICAgYXV0byogZHYgPSBtX2RvY3VtZW50LT5kb21XaW5kb3coKTsK
ICAgICBTdHJpbmcgcHNldWRvRWx0U3RyaW5nKHBzZXVkb0VsdCk7CiAgICAgCiAgICAgaWYgKCFk
dikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338993</attachid>
            <date>2018-04-27 08:46:42 -0700</date>
            <delta_ts>2018-04-27 15:11:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185022-20180427084641.patch</filename>
            <type>text/plain</type>
            <size>152685</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNmYmU3ZTk5YzEwNmQx
NzM1Nzc3MGZmMTQxMzkwZjdlODNmNmU2My4uNTQ3ZGY3ODQ2NDM5MGIxMTZiNWVkNzhjMmM3YWVm
ODI2MTdmNDM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OCBAQAorMjAxOC0wNC0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94eSBp
bnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHVzaW5nIERPTVdpbmRvdyBpbiBhbGwgb2Ygb3Vy
IElETCBmaWxlcyBhbmQgdXNlIFdpbmRvd1Byb3h5IGFzCisgICAgICAgIHBlciB0aGVpciByZXNw
ZWN0aXZlIHNwZWNpZmljYXRpb25zLiBBcyBhIHJlc3VsdCwgdGhlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGFzIGFsc28gdXBkYXRlZCB0byB1c2UgV2luZG93UHJveHkgdHlwZSBpbnN0ZWFkIG9m
IERPTVdpbmRvdy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXaW5kb3dQcm94eTo6d2luZG93UHJveHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1dpbmRvd1Byb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjp3aW5kb3cpOgorICAgICAgICBVc2Ug
c3RhdGljX2Nhc3Q8PigpIGluc3RlYWQgb2YganNDYXN0PD4oKSBiZWNhdXNlIGpzQ2FzdDw+KCkK
KyAgICAgICAgcmVsaWVzIG9uIGNsYXNzSW5mbygpIHdoaWNoIGlzIG5vdCBhbGxvd2VkIHRvIGJl
IGNhbGxlZCBkdXJpbmcKKyAgICAgICAgSlMgc3dlZXAgZHVlIHRvIGFuIGFzc2VydGlvbiBpbnNp
ZGUgY2xhc3NJbmZvKCkuIFRoZSBKU1dpbmRvd1Byb3h5CisgICAgICAgIG9iamVjdHMgYXJlIGhl
bGQgc3Ryb25nbHkgYnkgdGhlIFdpbmRvd1Byb3h5IHNvIHdlIGtub3cgdGhlIEpTV2luZG93UHJv
eHkKKyAgICAgICAgb2JqZWN0IGlzIG5vdCBnZXR0aW5nIGRlc3Ryb3llZCBoZXJlLgorCisgICAg
ICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eTo6Z2xvYmFsT2JqZWN0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93
UHJveHk6OmZyYW1lIGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3IucG06CisgICAgICAgIChJc0J1aWx0aW5UeXBlKToKKyAgICAgICAgKENvbXB1dGVJc0Nh
bGxiYWNrSW50ZXJmYWNlKToKKyAgICAgICAgKENvbXB1dGVJc0NhbGxiYWNrRnVuY3Rpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
QWRkVG9JbmNsdWRlc0ZvcklETFR5cGUpOgorICAgICAgICAoR2V0QmFzZUlETFR5cGUpOgorICAg
ICAgICAoTmF0aXZlVG9KU1ZhbHVlRE9NQ29udmVydE5lZWRzU3RhdGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOUJvZHkpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kT3Zl
cmxvYWREaXNwYXRjaGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGw6CisgICAgICAgICogZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tcG9zaXRpb25FdmVudDo6Q29tcG9zaXRpb25FdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpDb21wb3NpdGlvbkV2ZW50Ojppbml0Q29tcG9zaXRpb25FdmVudCk6CisgICAgICAgICog
ZG9tL0NvbXBvc2l0aW9uRXZlbnQuaDoKKyAgICAgICAgKiBkb20vQ29tcG9zaXRpb25FdmVudC5p
ZGw6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpkZWZhdWx0VmlldyBjb25zdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRUb3VjaC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRvdWNoOjpjcmVhdGVUb3VjaCk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50VG91Y2guaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRUb3VjaC5pZGw6
CisgICAgICAgICogZG9tL0ZvY3VzRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNF
dmVudDo6Rm9jdXNFdmVudCk6CisgICAgICAgICogZG9tL0ZvY3VzRXZlbnQuaDoKKyAgICAgICAg
KiBkb20vSW5wdXRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEV2ZW50OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFdmVudDo6SW5wdXRFdmVudCk6CisgICAgICAg
ICogZG9tL0lucHV0RXZlbnQuaDoKKyAgICAgICAgKiBkb20vS2V5Ym9hcmRFdmVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpLZXli
b2FyZEV2ZW50Ojppbml0S2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpLZXlib2Fy
ZEV2ZW50OjpjaGFyQ29kZSBjb25zdCk6CisgICAgICAgICogZG9tL0tleWJvYXJkRXZlbnQuaDoK
KyAgICAgICAgKiBkb20vS2V5Ym9hcmRFdmVudC5pZGw6CisgICAgICAgICogZG9tL01lc3NhZ2VF
dmVudC5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaWRsOgorICAgICAgICAqIGRvbS9N
b3VzZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNl
RXZlbnQ6OmluaXRNb3VzZUV2ZW50UXVpcmspOgorICAgICAgICAqIGRvbS9Nb3VzZUV2ZW50Lmg6
CisgICAgICAgICogZG9tL01vdXNlRXZlbnQuaWRsOgorICAgICAgICAqIGRvbS9Nb3VzZVJlbGF0
ZWRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VS
ZWxhdGVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6OmluaXQp
OgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6OmZyYW1lVmlld0Zyb21XaW5k
b3dQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3Jk
aW5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpkb2N1bWVudFRv
QWJzb2x1dGVTY2FsZUZhY3RvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0
ZWRFdmVudDo6Y29tcHV0ZVBhZ2VMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJl
bGF0ZWRFdmVudDo6bG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMgY29uc3QpOgorICAgICAg
ICAqIGRvbS9Nb3VzZVJlbGF0ZWRFdmVudC5oOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAg
ICAgICAgKiBkb20vU2ltdWxhdGVkQ2xpY2suY3BwOgorICAgICAgICAqIGRvbS9UZXh0RXZlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEV2ZW50OjpjcmVhdGVGb3JQbGFpblRleHRQYXN0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dEV2ZW50OjpjcmVhdGVGb3JEcm9wKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVu
dDo6Y3JlYXRlRm9yRGljdGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVudDo6VGV4
dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVudDo6aW5pdFRleHRFdmVudCk6Cisg
ICAgICAgICogZG9tL1RleHRFdmVudC5oOgorICAgICAgICAqIGRvbS9UZXh0RXZlbnQuaWRsOgor
ICAgICAgICAqIGRvbS9Ub3VjaEV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vVUlFdmVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpVSUV2ZW50OjpVSUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlVJRXZlbnQ6OmluaXRVSUV2ZW50KToKKyAgICAgICAgKiBkb20vVUlFdmVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6VUlFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlVJRXZlbnQ6
OnZpZXcgY29uc3QpOgorICAgICAgICAqIGRvbS9VSUV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20v
VUlFdmVudEluaXQuaDoKKyAgICAgICAgKiBkb20vVUlFdmVudEluaXQuaWRsOgorICAgICAgICAq
IGRvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpVSUV2ZW50V2l0
aEtleVN0YXRlOjpVSUV2ZW50V2l0aEtleVN0YXRlKToKKyAgICAgICAgKiBkb20vV2hlZWxFdmVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXaGVl
bEV2ZW50Ojppbml0V2ViS2l0V2hlZWxFdmVudCk6CisgICAgICAgICogZG9tL1doZWVsRXZlbnQu
aDoKKyAgICAgICAgKiBkb20vV2hlZWxFdmVudC5pZGw6CisgICAgICAgICogZWRpdGluZy9BbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6Omluc2VydERpY3RhdGVkVGV4dCk6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZUFzUGxhaW5UZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVBc0ZyYWdtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAqIGh0bWwvSFRNTERvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6bmFtZWRJdGVtKToKKyAg
ICAgICAgKiBodG1sL0hUTUxEb2N1bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50
LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFt
ZU93bmVyRWxlbWVudDo6Y29udGVudFdpbmRvdyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1M
RnJhbWVPd25lckVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZWRJdGVtKToK
KyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxGcmFtZVNldEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQu
aWRsOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgICogcGFnZS9E
T01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zdE1lc3NhZ2VUaW1lcjo6UG9zdE1l
c3NhZ2VUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpQb3N0TWVzc2FnZVRpbWVyOjpldmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBw
YWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVy
OjpkaXNwYXRjaFRleHRJbnB1dEV2ZW50Rm9yKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRleHRJbnB1dEV2
ZW50KToKKwogMjAxOC0wNC0yMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSBSZW1vdmUgV2xVbmlxdWVQdHI8d2xfZGlzcGxh
eT4gZm9vdGd1bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGYzMDg5NWFiYWY2NzAw
MjA3NDJkNGVmYzAzOTAxOGRhMjc3ZTc2YWYuLjZhZDUyNWU5ODEwZWEwMjY3MmZlMWUwOTM3NTYx
MWI4ZjM4NjQwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBA
QAorMjAxOC0wNC0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IFVzZSBXaW5kb3dQcm94eSBpbnN0ZWFkIG9mIERPTVdpbmRvdyBpbiBvdXIgSURMCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwMjIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01BYnN0cmFj
dFZpZXcubW06CisgICAgICAgIChraXQpOgorICAgICAgICAodG9XaW5kb3dQcm94eSk6CisgICAg
ICAgICogRE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmg6CisgICAgICAgICogRE9NL0RPTURv
Y3VtZW50Lm1tOgorICAgICAgICAoLVtET01Eb2N1bWVudCBkZWZhdWx0Vmlld10pOgorICAgICAg
ICAoLVtET01Eb2N1bWVudCBnZXRDb21wdXRlZFN0eWxlOnBzZXVkb0VsZW1lbnQ6XSk6CisgICAg
ICAgICgtW0RPTURvY3VtZW50IGdldE1hdGNoZWRDU1NSdWxlczpwc2V1ZG9FbGVtZW50OmF1dGhv
ck9ubHk6XSk6CisgICAgICAgICogRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW06CisgICAgICAg
ICgtW0RPTUhUTUxGcmFtZUVsZW1lbnQgY29udGVudFdpbmRvd10pOgorICAgICAgICAqIERPTS9E
T01IVE1MSUZyYW1lRWxlbWVudC5tbToKKyAgICAgICAgKC1bRE9NSFRNTElGcmFtZUVsZW1lbnQg
Y29udGVudFdpbmRvd10pOgorICAgICAgICAqIERPTS9ET01LZXlib2FyZEV2ZW50Lm1tOgorICAg
ICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5j
ZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjpsb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtl
eTptZXRhS2V5OmFsdEdyYXBoS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGlu
aXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjps
b2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAoLVtE
T01LZXlib2FyZEV2ZW50IGluaXRLZXlib2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZp
ZXc6a2V5SWRlbnRpZmllcjprZXlMb2NhdGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRh
S2V5OmFsdEdyYXBoS2V5Ol0pOgorICAgICAgICAoLVtET01LZXlib2FyZEV2ZW50IGluaXRLZXli
b2FyZEV2ZW50OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6a2V5SWRlbnRpZmllcjprZXlMb2Nh
dGlvbjpjdHJsS2V5OmFsdEtleTpzaGlmdEtleTptZXRhS2V5Ol0pOgorICAgICAgICAqIERPTS9E
T01Nb3VzZUV2ZW50Lm1tOgorICAgICAgICAoLVtET01Nb3VzZUV2ZW50IGluaXRNb3VzZUV2ZW50
OmNhbkJ1YmJsZTpjYW5jZWxhYmxlOnZpZXc6ZGV0YWlsOnNjcmVlblg6c2NyZWVuWTpjbGllbnRY
OmNsaWVudFk6Y3RybEtleTphbHRLZXk6c2hpZnRLZXk6bWV0YUtleTpidXR0b246cmVsYXRlZFRh
cmdldDpdKToKKyAgICAgICAgKiBET00vRE9NVGV4dEV2ZW50Lm1tOgorICAgICAgICAoLVtET01U
ZXh0RXZlbnQgaW5pdFRleHRFdmVudDpjYW5CdWJibGVBcmc6Y2FuY2VsYWJsZUFyZzp2aWV3QXJn
OmRhdGFBcmc6XSk6CisgICAgICAgICogRE9NL0RPTVVJRXZlbnQubW06CisgICAgICAgICgtW0RP
TVVJRXZlbnQgdmlld10pOgorICAgICAgICAoLVtET01VSUV2ZW50IGluaXRVSUV2ZW50OmNhbkJ1
YmJsZTpjYW5jZWxhYmxlOnZpZXc6ZGV0YWlsOl0pOgorICAgICAgICAqIERPTS9ET01XaGVlbEV2
ZW50Lm1tOgorICAgICAgICAoLVtET01XaGVlbEV2ZW50IGluaXRXaGVlbEV2ZW50OndoZWVsRGVs
dGFZOnZpZXc6c2NyZWVuWDpzY3JlZW5ZOmNsaWVudFg6Y2xpZW50WTpjdHJsS2V5OmFsdEtleTpz
aGlmdEtleTptZXRhS2V5Ol0pOgorCiAyMDE4LTA0LTIzICBDb21taXQgUXVldWUgIDxjb21taXQt
cXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjMw
OTIxLCByMjMwOTIzLCByMjMwOTI0LCByMjMwOTMyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CmluZGV4IGRkZTgwMDhkYzE4N2YzMDI0OTk1YjJhNGJjN2Q5Y2QwY2E5ZWZjNGIuLmY5YjU5MDBm
MTk5ZTU3Yzc0YWJkNDIzYTkzMzFhZGQ4ZjQ0N2M4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0wNC0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXaW5kb3dQcm94eSBpbnN0ZWFkIG9mIERPTVdpbmRv
dyBpbiBvdXIgSURMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODUwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIERPTUNvcmVDbGFzc2VzLmNwcDoKKyAgICAgICAgKERPTURvY3VtZW50OjpnZXRDb21w
dXRlZFN0eWxlKToKKwogMjAxOC0wNC0yMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzMDkyMSwgcjIz
MDkyMywgcjIzMDkyNCwgcjIzMDkzMiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMGY2NDZlYzc4ODYwMDlkMDgwYjdmY2U4NzJm
OTBjMzdjMGJjNjZmLi4wMTE0ZjIwNThmYWJhOWEyZGUwMTI4NTk3MGE2NjBhZDc0OTQ5ZGQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yMzY1LDcgKzIzNjUsNiBAQAogCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0
aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODNFOTU5RTExQjhCQzIyQjAwNEQ5Mzg1IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0I3NEVGNjFG
M0UwQkYyMDA5OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjc0RUYzMUYzRTBCRDcwMDk5NkJD
NyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQjk2ODdCMTlGOEFCODMwMDRFRjdBRiAvKiBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaCAqLzsgfTsKLQkJODNCOUU3MEIyMDg2QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdp
bmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4M0I5RTcwOTIwODZCQTI3MDBFNUQ3NTYgLyogSlNET01Db252ZXJ0V2luZG93UHJveHkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0JCNUM4
ODFENUQ2RjQ1MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JCNUM4NzFENUQ2RjNBMDA1
QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggKi87IH07CiAJCTgzQzA1QTVCMUE2
ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFBNjg2MjEy
MDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9OwogCQk4
M0MxRDQyNTE3OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0FyY0Ficy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNDMUQ0MTMxNzhENUFCNDAwMTQx
RTY4IC8qIFNWR1BhdGhTZWdBcmNBYnMuaCAqLzsgfTsKQEAgLTk4NzcsNyArOTg3Niw2IEBACiAJ
CTgzQjc0RUYyMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJh
Y2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjc0RUYzMUYzRTBCRDcw
MDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4M0I5Njg3OTE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29u
dmVydGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQnVpbGRlckNv
bnZlcnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0I5RTcwOTIwODZCQTI3
MDBFNUQ3NTYgLyogSlNET01Db252ZXJ0V2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNET01Db252ZXJ0V2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRz
Q29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxEZXNjZW5k
YW50c0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNDMDVBNTgx
QTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQzA1QTU5MUE2
ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5ODM1LDcgKzE5ODMzLDYgQEAK
IAkJCQk3QzhFMzRBQTFFNEEzMzhFMDA1NENFMjMgLyogSlNET01Db252ZXJ0VmFyaWFkaWMuaCAq
LywKIAkJCQk3Q0JBNUJBNjFGMEI0QkRFMDAzNEQ3NDUgLyogSlNET01Db252ZXJ0V2ViR0wuY3Bw
ICovLAogCQkJCTdDOEUzNEFCMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5o
ICovLAotCQkJCTgzQjlFNzA5MjA4NkJBMjcwMEU1RDc1NiAvKiBKU0RPTUNvbnZlcnRXaW5kb3dQ
cm94eS5oICovLAogCQkJCTdDOEUzNEFDMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRY
UGF0aE5TUmVzb2x2ZXIuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gQ29udmVyc2lvbnM7CkBAIC0y
ODQxNiw3ICsyODQxMyw2IEBACiAJCQkJN0M4RTM0QzQxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9N
Q29udmVydFVuaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRDNTFFNEEzM0IwMDA1NENF
MjMgLyogSlNET01Db252ZXJ0VmFyaWFkaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOEUzNEM2
MUU0QTMzQjAwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRXZWJHTC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJODNCOUU3MEIyMDg2QkE0MzAwRTVENzU2IC8qIEpTRE9NQ29udmVydFdpbmRvd1Byb3h5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRDNzFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252
ZXJ0WFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQzlFMEU0RDE2NDE5QzFF
MDAzOTJCRTMgLyogSlNET01DU1NOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBE
N0MxMEQyOUE0NjMwMEI5OTE4RiAvKiBKU0RPTUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAppbmRleCA1ZmU3N2U4M2YyM2RhMmIxYjQyMGQxZTM5
MmRlYTlkYzA3ZmIxYzgwLi44MDU3ZGZhMTE1ODg4ZDNkYjRhMGYwYmUyNmI0YzY2MmI2OWM3ODdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKQEAgLTI3NCw3ICsyNzQsNiBAQCBzdHJ1
Y3QgSURMU2NoZWR1bGVkQWN0aW9uIDogSURMVHlwZTxzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVk
QWN0aW9uPj4geyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSA6IElETFdyYXBwZXI8VD4geyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IElETEV2ZW50TGlzdGVuZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBJRExYUGF0aE5TUmVzb2x2ZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKLXN0
cnVjdCBJRExXaW5kb3dQcm94eSA6IElETFdyYXBwZXI8SlNXaW5kb3dQcm94eT4geyB9OwogCiBz
dHJ1Y3QgSURMSURCS2V5IDogSURMV3JhcHBlcjxJREJLZXk+IHsgfTsKIHN0cnVjdCBJRExJREJL
ZXlEYXRhIDogSURMV3JhcHBlcjxJREJLZXlEYXRhPiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2luZG93UHJveHkuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggODJjMWZmNDgxOTJkZTVjMjA4MmRiN2IzZGUwYWMzYmFhNGIzNGM3
Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCi0jaW5jbHVkZSAi
SlNXaW5kb3dQcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPD4gc3Ry
dWN0IEpTQ29udmVydGVyPElETFdpbmRvd1Byb3h5PiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIG5lZWRzU3RhdGUgPSB0cnVlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0ds
b2JhbE9iamVjdCA9IGZhbHNlOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgVSYmIHZhbHVl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBzdGQ6OmZvcndhcmQ8VT4odmFs
dWUpKTsKLSAgICB9Ci19OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dpbmRvd1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2lu
ZG93UHJveHkuY3BwCmluZGV4IDE4ODY3MWU0OWIxZjE0MzE1Yzk4Njc3MWQwN2JhNmY4M2UxYWJk
MjcuLmE0YjE4MDVjNjUyZTIzMjBiZmQ3OWEwOTc5Mjc5YWNjMDg3YjY5NDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCkBAIC0xMTksNiArMTE5LDEy
IEBAIHZvaWQgSlNXaW5kb3dQcm94eTo6c2V0V2luZG93KEFic3RyYWN0RE9NV2luZG93JiBkb21X
aW5kb3cpCiAgICAgQVNTRVJUKHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkgPT0gd2luZG93KTsK
IH0KIAorV2luZG93UHJveHkqIEpTV2luZG93UHJveHk6OndpbmRvd1Byb3h5KCkgY29uc3QKK3sK
KyAgICBhdXRvJiB3aW5kb3cgPSB3cmFwcGVkKCk7CisgICAgcmV0dXJuIHdpbmRvdy5mcmFtZSgp
ID8gJndpbmRvdy5mcmFtZSgpLT53aW5kb3dQcm94eSgpIDogbnVsbHB0cjsKK30KKwogdm9pZCBK
U1dpbmRvd1Byb3h5OjphdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKIHsK
ICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB3aW5kb3coKTsKQEAgLTEzOCwxMiArMTQ0LDYgQEAg
QWJzdHJhY3RET01XaW5kb3cmIEpTV2luZG93UHJveHk6OndyYXBwZWQoKSBjb25zdAogICAgIHJl
dHVybiBqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4od2luZG93KS0+d3JhcHBlZCgpOwogfQogCi1B
YnN0cmFjdERPTVdpbmRvdyogSlNXaW5kb3dQcm94eTo6dG9XcmFwcGVkKFZNJiB2bSwgSlNPYmpl
Y3QqIHZhbHVlKQotewotICAgIGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTV2luZG93
UHJveHkqPih2bSwgdmFsdWUpOwotICAgIHJldHVybiB3cmFwcGVyID8gJndyYXBwZXItPndyYXBw
ZWQoKSA6IG51bGxwdHI7Ci19Ci0KIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIHN0YXRlLCBXaW5k
b3dQcm94eSYgd2luZG93UHJveHkpCiB7CiAgICAgcmV0dXJuICZ3aW5kb3dQcm94eS5qc1dpbmRv
d1Byb3h5KGN1cnJlbnRXb3JsZCgqc3RhdGUpKTsKQEAgLTE1NCw0ICsxNTQsMTQgQEAgSlNXaW5k
b3dQcm94eSYgdG9KU1dpbmRvd1Byb3h5KFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSwgRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCkKICAgICByZXR1cm4gd2luZG93UHJveHkuanNXaW5kb3dQcm94eSh3
b3JsZCk7CiB9CiAKK1dpbmRvd1Byb3h5KiBKU1dpbmRvd1Byb3h5Ojp0b1dyYXBwZWQoVk0mIHZt
LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsK
KyAgICBpZiAob2JqZWN0LT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkpCisgICAgICAgIHJl
dHVybiBqc0Nhc3Q8SlNXaW5kb3dQcm94eSo+KG9iamVjdCktPndpbmRvd1Byb3h5KCk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaAppbmRleCAxODVhNTQ1NzhiZjgxNzdjZmNh
MTc1YzZlNGIxMWY0NzQ4YTQwOTQ4Li5lNmYxNzFjNjg2OTZhOTFhMWRjZDQxZDIzODFjMDRjZTBk
MzQ4Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1By
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oCkBA
IC0yOCw3ICsyOCw5IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiSlNET01Db252ZXJ0
SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRlICJXaW5kb3dQ
cm94eS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUHJveHkuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC0zOSw3ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJz
dHJhY3RET01XaW5kb3c7CiBjbGFzcyBBYnN0cmFjdEZyYW1lOwotY2xhc3MgV2luZG93UHJveHk7
CiAKIGNsYXNzIEpTV2luZG93UHJveHkgZmluYWwgOiBwdWJsaWMgSlNDOjpKU1Byb3h5IHsKICAg
ICB1c2luZyBCYXNlID0gSlNDOjpKU1Byb3h5OwpAQCAtNDksMTIgKzUwLDE0IEBAIHB1YmxpYzoK
IAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEpTRE9NR2xvYmFsT2JqZWN0KiB3aW5kb3coKSBj
b25zdCB7IHJldHVybiBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHRhcmdldCgpKTsg
fQorICAgIEpTRE9NR2xvYmFsT2JqZWN0KiB3aW5kb3coKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHRhcmdldCgpKTsgfQogICAgIHZvaWQgc2V0V2luZG93
KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgc2V0V2luZG93KEFic3Ry
YWN0RE9NV2luZG93Jik7CiAKKyAgICBXaW5kb3dQcm94eSogd2luZG93UHJveHkoKSBjb25zdDsK
KwogICAgIEFic3RyYWN0RE9NV2luZG93JiB3cmFwcGVkKCkgY29uc3Q7Ci0gICAgc3RhdGljIFdF
QkNPUkVfRVhQT1JUIEFic3RyYWN0RE9NV2luZG93KiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6
SlNPYmplY3QqKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgV2luZG93UHJveHkqIHRvV3Jh
cHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKIAogICAgIERPTVdyYXBwZXJXb3JsZCYgd29y
bGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CiAKQEAgLTcxLDEwICs3NCwxNiBAQCBwcml2YXRlOgog
Ly8gSXQgaXMsIGhvd2V2ZXIsIHN0cm9uZ2x5IG93bmVkIGJ5IEFic3RyYWN0RnJhbWUgdmlhIGl0
cyBXaW5kb3dQcm94eSwgc28gd2UgY2FuIGdldCBvbmUgZnJvbSBhIFdpbmRvd1Byb3h5LgogV0VC
Q09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBXaW5kb3dQcm94
eSYpOwogaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgV2lu
ZG93UHJveHkqIHdpbmRvd1Byb3h5KSB7IHJldHVybiB3aW5kb3dQcm94eSA/IHRvSlMoc3RhdGUs
ICp3aW5kb3dQcm94eSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBSZWZQdHI8V2luZG93UHJveHk+JiB3aW5k
b3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwgd2luZG93UHJveHkuZ2V0KCkpOyB9Citpbmxp
bmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9i
amVjdCosIFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSkgeyByZXR1cm4gdG9KUyhzdGF0ZSwgd2lu
ZG93UHJveHkpOyB9CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXaW5kb3dQcm94eSogd2luZG93
UHJveHkpIHsgcmV0dXJuIHdpbmRvd1Byb3h5ID8gdG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0LCAq
d2luZG93UHJveHkpIDogSlNDOjpqc051bGwoKTsgfQogCiBKU1dpbmRvd1Byb3h5JiB0b0pTV2lu
ZG93UHJveHkoV2luZG93UHJveHkmLCBET01XcmFwcGVyV29ybGQmKTsKIGlubGluZSBKU1dpbmRv
d1Byb3h5KiB0b0pTV2luZG93UHJveHkoV2luZG93UHJveHkqIHdpbmRvd1Byb3h5LCBET01XcmFw
cGVyV29ybGQmIHdvcmxkKSB7IHJldHVybiB3aW5kb3dQcm94eSA/ICZ0b0pTV2luZG93UHJveHko
KndpbmRvd1Byb3h5LCB3b3JsZCkgOiBudWxscHRyOyB9CiAKIAordGVtcGxhdGU8PiBzdHJ1Y3Qg
SlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFdpbmRvd1Byb3h5PiB7CisgICAgdXNpbmcgV3Jh
cHBlckNsYXNzID0gSlNXaW5kb3dQcm94eTsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBl
ID0gV2luZG93UHJveHkqOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwCmluZGV4IDhlOGY1MTM1M2VkMWY3YTBi
NWIzZjkzMDRjZjgxYzhhYWNiNzViNWUuLjkwMThkMjNkMjNjYTFlOTQ3YWVkMjk5M2QxODRmOTEw
MmRiNzE4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5jcHAK
QEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtOTEsNiArOTIsMTEgQEAgVmVjdG9yPEpTQzo6U3Ryb25n
PEpTV2luZG93UHJveHk+PiBXaW5kb3dQcm94eTo6anNXaW5kb3dQcm94aWVzQXNWZWN0b3IoKSBj
b25zdAogICAgIHJldHVybiBjb3B5VG9WZWN0b3IobV9qc1dpbmRvd1Byb3hpZXMudmFsdWVzKCkp
OwogfQogCitKU0RPTUdsb2JhbE9iamVjdCogV2luZG93UHJveHk6Omdsb2JhbE9iamVjdChET01X
cmFwcGVyV29ybGQmIHdvcmxkKQoreworICAgIHJldHVybiBqc1dpbmRvd1Byb3h5KHdvcmxkKS53
aW5kb3coKTsKK30KKwogSlNXaW5kb3dQcm94eSYgV2luZG93UHJveHk6OmNyZWF0ZUpTV2luZG93
UHJveHlXaXRoSW5pdGlhbGl6ZWRTY3JpcHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayh3b3JsZC52bSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9XaW5kb3dQcm94eS5oCmluZGV4IDc3NzIyOTgzYjBhMzIyY2QwNjdkZmI1MDYyZGEwNzc3YTY4
ZTY1ZjguLjExZjAyMjQ4YjdhY2FjNWU1ZmM3OWZmNDM0ZTE1NDRjOGZiNTIwNTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaApAQCAtMjAsNyArMjAsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTV2luZG93UHJveHkuaCIKKyNpbmNsdWRlICJET01X
cmFwcGVyV29ybGQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC0zMCw3ICszMCwxMCBAQCBjbGFzcyBEZWJ1Z2dlcjsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBYnN0cmFjdERPTVdpbmRvdzsKIGNsYXNz
IEFic3RyYWN0RnJhbWU7CitjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKK2NsYXNzIEpTV2luZG93
UHJveHk7CiAKIGNsYXNzIFdpbmRvd1Byb3h5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKQEAgLTQwLDYgKzQzLDggQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdpbmRvd1Byb3h5KEFi
c3RyYWN0RnJhbWUmKTsKICAgICB+V2luZG93UHJveHkoKTsKIAorICAgIEFic3RyYWN0RnJhbWUm
IGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQorCiAgICAgdm9pZCBkZXN0cm95SlNX
aW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmKTsKIAogICAgIFByb3h5TWFwOjpWYWx1ZXNDb25z
dEl0ZXJhdG9yUmFuZ2UganNXaW5kb3dQcm94aWVzKCkgY29uc3QgeyByZXR1cm4gbV9qc1dpbmRv
d1Byb3hpZXMudmFsdWVzKCk7IH0KQEAgLTYzLDEwICs2OCw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIChpdCAhPSBtX2pzV2luZG93UHJveGllcy5lbmQoKSkgPyBpdC0+dmFsdWUuZ2V0KCkg
OiBudWxscHRyOwogICAgIH0KIAotICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBqc1dpbmRvd1By
b3h5KHdvcmxkKS53aW5kb3coKTsKLSAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdChET01XcmFwcGVyV29ybGQmKTsKIAogICAgIHZvaWQgY2xl
YXJKU1dpbmRvd1Byb3hpZXNOb3RNYXRjaGluZ0RPTVdpbmRvdyhBYnN0cmFjdERPTVdpbmRvdyos
IGJvb2wgZ29pbmdJbnRvUGFnZUNhY2hlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IDk1MjQyOWEwZTQ5Nzc0YmFkMjJjMWU1
OGViYjJlNGVkZGJhZDNiNjMuLjJmY2ZlZTNhN2FhOGYyMmYyNmViZGRiNmE0ZTI4ZmEwMzhiMmY0
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3IucG0KQEAgLTg5MSw3ICs4OTEsNiBAQCBzdWIgSXNCdWlsdGluVHlwZQogICAgIHJldHVybiAx
IGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwogICAgIHJldHVybiAxIGlmICR0
eXBlLT5uYW1lIGVxICJhbnkiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJvYmpl
Y3QiOwotICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94eSI7CiAKICAg
ICByZXR1cm4gMDsKIH0KQEAgLTEwMDEsNiArMTAwMCw3IEBAIHN1YiBDb21wdXRlSXNDYWxsYmFj
a0ludGVyZmFjZQogICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklE
TFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5sZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlwZSgk
dHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsKIAog
ICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9iamVj
dC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlwZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZp
bmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiR0eXBlTmFtZVwiIVxuIik7CkBAIC0xMDM4LDYg
KzEwMzgsNyBAQCBzdWIgQ29tcHV0ZUlzQ2FsbGJhY2tGdW5jdGlvbgogICAgIGFzc2VydCgiTm90
IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIDAgdW5s
ZXNzICRvYmplY3QtPklzSW50ZXJmYWNlVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJHR5
cGUtPm5hbWUgZXEgIldpbmRvd1Byb3h5IjsKIAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5u
YW1lOwogICAgIG15ICRpZGxGaWxlID0gJG9iamVjdC0+SURMRmlsZUZvckludGVyZmFjZSgkdHlw
ZU5hbWUpIG9yIGFzc2VydCgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBc
IiR0eXBlTmFtZVwiIVxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDYyNmE5ZjBiMmQ2ZjA0M2NmOTJiZGYzMmYyOTYy
ODkyNjExNmU1ZTQuLjMwYTM3NGMyODI0ZmEyNjA4MjQyYWEzODcxMDk4NDIwMmI1ZDBlYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCkBAIC00MjEsMTMgKzQyMSw2IEBAIHN1YiBBZGRUb0luY2x1ZGVzRm9ySURMVHlwZQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCR0eXBlLT5uYW1lIGVxICJXaW5kb3dQcm94
eSIpIHsKLSAgICAgICAgQWRkVG9JbmNsdWRlcygiV2luZG93UHJveHkuaCIsICRpbmNsdWRlc1Jl
ZiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAgQWRkVG9JbmNsdWRlcygiSlNXaW5kb3dQcm94eS5o
IiwgJGluY2x1ZGVzUmVmLCAkY29uZGl0aW9uYWwpOwotICAgICAgICBBZGRUb0luY2x1ZGVzKCJK
U0RPTUNvbnZlcnRXaW5kb3dQcm94eS5oIiwgJGluY2x1ZGVzUmVmLCAkY29uZGl0aW9uYWwpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmlu
Z1R5cGUoJHR5cGUpKSB7CiAgICAgICAgIEFkZFRvSW5jbHVkZXMoIkpTRE9NQ29udmVydFN0cmlu
Z3MuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
NjM5Myw3ICs2Mzg2LDYgQEAgc3ViIEdldEJhc2VJRExUeXBlCiAgICAgICAgICJKU09OIiA9PiAi
SURMSlNPTiIsCiAgICAgICAgICJTY2hlZHVsZWRBY3Rpb24iID0+ICJJRExTY2hlZHVsZWRBY3Rp
b24iLAogICAgICAgICAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIiA9PiAiSURMU2VyaWFsaXplZFNj
cmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4iLAotICAgICAgICAiV2luZG93UHJveHki
ID0+ICJJRExXaW5kb3dQcm94eSIsCiAgICAgICAgICJYUGF0aE5TUmVzb2x2ZXIiID0+ICJJRExY
UGF0aE5TUmVzb2x2ZXI8WFBhdGhOU1Jlc29sdmVyPiIsCiAgICAgKTsKIApAQCAtNjU1NCw3ICs2
NTQ2LDYgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZURPTUNvbnZlcnROZWVkc1N0YXRlCiAgICAgcmV0
dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIkpTT04iOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5u
YW1lIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5u
YW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwotICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVx
ICJXaW5kb3dQcm94eSI7CiAgICAgCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGJh
NDViYjk4ZjIxYTYzMzkwOWQyYmU4ZTBhMWZlMmRjNzI2YTM0NWYuLmMwNDY2YzI2NmI3MzdmNmM4
ODVkMmFhZmQwNWI1ZjE2ZjY4MmQ1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC01NSw3ICs1NSw2IEBACiAj
aW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvblJldHVy
bmluZ1Byb21pc2UuaCIKICNpbmNsdWRlICJKU0RPTVN0cmluZ0xpc3QuaCIKLSNpbmNsdWRlICJK
U0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgpAQCAtNjk1Nyw3ICs2
OTU2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDlCb2QKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8gd2luZG93ID0gY29udmVydDxJRExJbnRlcmZhY2U8
RE9NV2luZG93Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgIndpbmRvdyIsICJUZXN0T2JqZWN0IiwgIm92ZXJs
b2FkZWRNZXRob2QiLCAiRE9NV2luZG93Iik7IH0pOworICAgIGF1dG8gd2luZG93ID0gY29udmVy
dDxJRExJbnRlcmZhY2U8V2luZG93UHJveHk+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3Bl
KSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAid2luZG93IiwgIlRl
c3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJXaW5kb3dQcm94eSIpOyB9KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlt
cGwub3ZlcmxvYWRlZE1ldGhvZCgqd2luZG93KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpAQCAtNzAyOSw3ICs3MDI4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZE92ZXIKICAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2Q2Qm9keShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CiAgICAgICAg
IGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNo
aW5nQXJnKS0+aW5oZXJpdHM8SlNUZXN0T2JqPih2bSkpCiAgICAgICAgICAgICByZXR1cm4ganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOEJvZHkoc3RhdGUsIGNhc3Rl
ZFRoaXMsIHRocm93U2NvcGUpOwotICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmpl
Y3QoKSAmJiAoYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU1dpbmRvd1By
b3h5Pih2bSkgfHwgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU0RPTVdp
bmRvdz4odm0pKSkKKyAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYg
YXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0czxKU1dpbmRvd1Byb3h5Pih2bSkp
CiAgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kOUJvZHkoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwogICAgICAgICBpZiAo
ZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0Fy
ZyktPmluaGVyaXRzPEpTQmxvYj4odm0pKQogICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEzQm9keShzdGF0ZSwgY2FzdGVkVGhpcywg
dGhyb3dTY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdE9iai5pZGwKaW5kZXggYzgzZWVlZWRiZjQxNjNmODMyYmNkMjUzZWMwNTc1Njg0NmVlZDY4
NC4uNzFkZGZjNDg5ZWQyZDVkYTI1NmZiNWM0MzBiOTMyZWJkYzRmODcwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMjg2LDcg
KzI4Niw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3ciIH07CiAg
ICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmluZ0xpc3Q/IGxpc3RBcmcpOwogICAg
IHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChzZXF1ZW5jZTxET01TdHJpbmc+PyBhcnJheUFyZyk7
CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFRlc3RPYmogb2JqQXJnKTsKLSAgICB2b2lk
ICAgIG92ZXJsb2FkZWRNZXRob2QoRE9NV2luZG93IHdpbmRvdyk7CisgICAgdm9pZCAgICBvdmVy
bG9hZGVkTWV0aG9kKFdpbmRvd1Byb3h5IHdpbmRvdyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVk
TWV0aG9kKHNlcXVlbmNlPERPTVN0cmluZz4gYXJyYXlBcmcpOwogICAgIHZvaWQgICAgb3Zlcmxv
YWRlZE1ldGhvZChzZXF1ZW5jZTx1bnNpZ25lZCBsb25nPiBhcnJheUFyZyk7CiAgICAgdm9pZCAg
ICBvdmVybG9hZGVkTWV0aG9kKERPTVN0cmluZyBzdHJBcmcpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9uRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bXBvc2l0aW9uRXZlbnQuY3BwCmluZGV4IDBlMzhhNjcxOGNkMWRhZDJlNzkwMjhiODkwMDU2YTZm
Y2I2NDJjOTAuLjAwN2FmN2Q3MjRmNWMzZTRhMGEzNjExMjU2NmM0ODJlZDZmZDU5MjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5jcHAKQEAgLTMxLDggKzMxLDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBDb21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KCkg
PSBkZWZhdWx0OwogCi1Db21wb3NpdGlvbkV2ZW50OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCi0g
ICAgOiBVSUV2ZW50KHR5cGUsIHRydWUsIHRydWUsIHZpZXcsIDApCitDb21wb3NpdGlvbkV2ZW50
OjpDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdpbmRv
d1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKKyAgICA6IFVJRXZlbnQodHlwZSwg
dHJ1ZSwgdHJ1ZSwgV1RGTW92ZSh2aWV3KSwgMCkKICAgICAsIG1fZGF0YShkYXRhKQogewogfQpA
QCAtNDUsMTIgKzQ1LDEyIEBAIENvbXBvc2l0aW9uRXZlbnQ6OkNvbXBvc2l0aW9uRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsCiAKIENvbXBvc2l0aW9u
RXZlbnQ6On5Db21wb3NpdGlvbkV2ZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIENvbXBvc2l0aW9u
RXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBTdHJp
bmcmIGRhdGEpCit2b2lkIENvbXBvc2l0aW9uRXZlbnQ6OmluaXRDb21wb3NpdGlvbkV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
UmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICBp
ZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW5pdFVJRXZl
bnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCAwKTsKKyAgICBpbml0VUlFdmVu
dCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIDApOwogCiAgICAg
bV9kYXRhID0gZGF0YTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3Np
dGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5oCmluZGV4
IDhmZjAyZWM5Njk3NzhiODg1YTYzMTcwMjRjOTU3NDc2ZTAyMWIyYTYuLjNiMWM0NmQ2MzVlY2Fm
NmNkMDkxOTA5OGY1MDhmYzQxZTY0Y2ViY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db21wb3NpdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9u
RXZlbnQuaApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENv
bXBvc2l0aW9uRXZlbnQgZmluYWwgOiBwdWJsaWMgVUlFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxDb21wb3NpdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKKyAgICBzdGF0aWMgUmVmPENv
bXBvc2l0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21wb3NpdGlvbkV2ZW50KHR5cGUsIHZpZXcsIGRhdGEpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29tcG9zaXRpb25FdmVudCh0eXBlLCBXVEZN
b3ZlKHZpZXcpLCBkYXRhKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZjxDb21wb3NpdGlvbkV2
ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgfkNvbXBvc2l0aW9uRXZlbnQoKTsKIAotICAgIHZvaWQgaW5pdENvbXBvc2l0aW9u
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgIHZvaWQgaW5pdENv
bXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0
YSk7CiAKICAgICBTdHJpbmcgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC02
MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBDb21wb3NpdGlvbkV2ZW50KCk7
Ci0gICAgQ29tcG9zaXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIERPTVdpbmRv
dyosIGNvbnN0IFN0cmluZyYpOworICAgIENvbXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYpOwogICAgIENv
bXBvc2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNU
cnVzdGVkKTsKIAogICAgIGJvb2wgaXNDb21wb3NpdGlvbkV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5pZGwKaW5kZXggZDg3MjQwODgzZTI3
ZDNiMzQ1ODUzOWViOTIwZjRkM2YyODcxNjZjNC4uMjBhYWM3ZWE0NzcwZDU2NTllZDQwOTEwZDdh
YTc5NTA4ZTY2MTgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2l0aW9u
RXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbApA
QCAtMzMsNyArMzMsNyBAQAogICAgIHZvaWQgaW5pdENvbXBvc2l0aW9uRXZlbnQob3B0aW9uYWwg
RE9NU3RyaW5nIHR5cGVBcmcgPSAidW5kZWZpbmVkIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlQXJnID0gZmFsc2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBib29sZWFuIGNhbmNlbGFibGVBcmcgPSBmYWxz
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmll
d0FyZyA9IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBXaW5k
b3dQcm94eT8gdmlld0FyZyA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
cHRpb25hbCBET01TdHJpbmcgZGF0YUFyZyA9ICJ1bmRlZmluZWQiKTsKIAogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCmluZGV4IDg2ZjgzZTcyNjQyM2FjNDU0MzVkMzJiZWYwNDk0ZTk5NDllMDU0
OTkuLjdlN2VkYTAxNzcyZDRhOGJjOGJmMTYxMDViYzQ1ZTI1ZmRiODIwYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtNDI4MCw2ICs0MjgwLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnRha2VE
T01XaW5kb3dGcm9tKERvY3VtZW50KiBkb2N1bWVudCkKICAgICBBU1NFUlQobV9kb21XaW5kb3ct
PmZyYW1lKCkgPT0gbV9mcmFtZSk7CiB9CiAKK1dpbmRvd1Byb3h5KiBEb2N1bWVudDo6d2luZG93
UHJveHkoKSBjb25zdAoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuICZtX2ZyYW1lLT53aW5kb3dQcm94eSgpOworfQorCiBEb2N1bWVudCYg
RG9jdW1lbnQ6OmNvbnRleHREb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fY29udGV4dERv
Y3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBhNGZiMDJmOWUxYmNiZDQwMGIwY2M4NjUy
YWJkNDA0ZjAxYzQ1OTVmLi5jZTM3ZjM3MjE3ODMzNjc1N2E3N2U1MGY0ZWJkYzgyNDA2ZTNlMzhk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNzk5LDcgKzc5OSw3IEBAIHB1YmxpYzoKIAogICAg
IERPTVdpbmRvdyogZG9tV2luZG93KCkgY29uc3QgeyByZXR1cm4gbV9kb21XaW5kb3cuZ2V0KCk7
IH0KICAgICAvLyBJbiBET00gTGV2ZWwgMiwgdGhlIERvY3VtZW50J3MgRE9NV2luZG93IGlzIGNh
bGxlZCB0aGUgZGVmYXVsdFZpZXcuCi0gICAgRE9NV2luZG93KiBkZWZhdWx0VmlldygpIGNvbnN0
IHsgcmV0dXJuIGRvbVdpbmRvdygpOyB9IAorICAgIFdFQkNPUkVfRVhQT1JUIFdpbmRvd1Byb3h5
KiB3aW5kb3dQcm94eSgpIGNvbnN0OwogCiAgICAgRG9jdW1lbnQmIGNvbnRleHREb2N1bWVudCgp
IGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4dERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkg
eyBtX2NvbnRleHREb2N1bWVudCA9IGRvY3VtZW50LmNyZWF0ZVdlYWtQdHIoKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5pZGwKaW5kZXggMmQ1YmFhZDhjNjA2NDRkYTg5ZDEwN2ZkZGUxODI4Y2Q4YTQ5
ZDgyYi4uNDEzZTUzZTIxNmZhNDFkM2EzZGY4MmUzMjI5ZWRhY2NiYjE0ZDVkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaWRsCkBAIC0xMTMsNyArMTEzLDcgQEAgdHlwZWRlZiAoCiAgICAgW0NFUmVh
Y3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJsZURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCB3cml0ZWxuKERPTVN0cmluZy4uLiB0ZXh0KTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rp
b24uCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVdpbmRvdz8gZGVmYXVsdFZpZXc7CisgICAg
W0ltcGxlbWVudGVkQXM9d2luZG93UHJveHldIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94
eT8gZGVmYXVsdFZpZXc7CiAgICAgYm9vbGVhbiBoYXNGb2N1cygpOwogICAgIFtDRVJlYWN0aW9u
c10gYXR0cmlidXRlIERPTVN0cmluZyBkZXNpZ25Nb2RlOwogICAgIFtDRVJlYWN0aW9uc10gYm9v
bGVhbiBleGVjQ29tbWFuZChET01TdHJpbmcgY29tbWFuZElkLCBvcHRpb25hbCBib29sZWFuIHNo
b3dVSSA9IGZhbHNlLCBvcHRpb25hbCBET01TdHJpbmc/IHZhbHVlID0gbnVsbCk7IC8vIEZJWE1F
OiB2YWx1ZSBzaG91bGQgbm90IGJlIG51bGxhYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50VG91Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91
Y2guY3BwCmluZGV4IDNkOTEyM2Q4Zjc1MzJjYjRkYjc5YTRhMTMzNWQ1ZjE3MjhjYzUwOWEuLjVk
MTI2YzNjMzI0NzE0ZjM5ZjlmOTZlMTYzNjljMDE4Nzg0N2E4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFRvdWNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRUb3VjaC5jcHAKQEAgLTI4LDIwICsyOCwyNyBAQAogCiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKIAotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJUb3VjaC5oIgogI2luY2x1ZGUgIlRvdWNo
TGlzdC5oIgorI2luY2x1ZGUgIldpbmRvd1Byb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVmPFRvdWNoPiBEb2N1bWVudFRvdWNoOjpjcmVhdGVUb3VjaChEb2N1bWVudCYgZG9jdW1l
bnQsIERPTVdpbmRvdyogd2luZG93LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgaWRlbnRpZmll
ciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHJh
ZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9hdCBmb3JjZSkKK1Jl
ZjxUb3VjaD4gRG9jdW1lbnRUb3VjaDo6Y3JlYXRlVG91Y2goRG9jdW1lbnQmIGRvY3VtZW50LCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgd2luZG93LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgaWRl
bnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwg
aW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9hdCBmb3Jj
ZSkKIHsKKyAgICBGcmFtZSogZnJhbWU7CisgICAgaWYgKHdpbmRvdyAmJiBpczxGcmFtZT4od2lu
ZG93LT5mcmFtZSgpKSkKKyAgICAgICAgZnJhbWUgPSAmZG93bmNhc3Q8RnJhbWU+KHdpbmRvdy0+
ZnJhbWUoKSk7CisgICAgZWxzZQorICAgICAgICBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CisK
ICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgZnJvbSB0aGUgZG9jdW1lbnRhdGlvbiBhdAog
ICAgIC8vIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xpYnJhcnkvc2FmYXJpLyNkb2N1bWVu
dGF0aW9uL1VzZXJFeHBlcmllbmNlL1JlZmVyZW5jZS9Eb2N1bWVudEFkZGl0aW9uc1JlZmVyZW5j
ZS9Eb2N1bWVudEFkZGl0aW9ucy9Eb2N1bWVudEFkZGl0aW9ucy5odG1sCiAgICAgLy8gd2hlbiB0
aGlzIG1ldGhvZCBzaG91bGQgdGhyb3cgYW5kIG5vciBpcyBpdCBieSBpbnNwZWN0aW9uIG9mIGlP
UyBiZWhhdmlvci4gSXQgd291bGQgYmUgbmljZSB0byB2ZXJpZnkgYW55IGNhc2VzIHdoZXJlIGl0
IHRocm93cyB1bmRlciBpT1MKICAgICAvLyBhbmQgaW1wbGVtZW50IHRoZW0gaGVyZS4gU2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzgxOQotICAgIHJldHVybiBU
b3VjaDo6Y3JlYXRlKHdpbmRvdyA/IHdpbmRvdy0+ZnJhbWUoKSA6IGRvY3VtZW50LmZyYW1lKCks
IHRhcmdldCwgaWRlbnRpZmllciwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCByYWRp
dXNYLCByYWRpdXNZLCByb3RhdGlvbkFuZ2xlLCBmb3JjZSk7CisgICAgcmV0dXJuIFRvdWNoOjpj
cmVhdGUoZnJhbWUsIHRhcmdldCwgaWRlbnRpZmllciwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgs
IHBhZ2VZLCByYWRpdXNYLCByYWRpdXNZLCByb3RhdGlvbkFuZ2xlLCBmb3JjZSk7CiB9CiAKIFJl
ZjxUb3VjaExpc3Q+IERvY3VtZW50VG91Y2g6OmNyZWF0ZVRvdWNoTGlzdChEb2N1bWVudCYsIFZl
Y3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFRvdWNoPj4mJiB0b3VjaGVzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFRvdWNoLmgKaW5kZXggZTBkYWY1MDUyY2M5Nzg1MmM4YTA0YmJhNzNlNWY2YTEx
NmYxMGU1MS4uNzJjNDg4OGI0NWFiNDAwZTI5YmM4YWVkODZkZTRjNTkwM2VhYzIyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRUb3VjaC5oCkBAIC0zNCwxNSArMzQsMTUgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBET01XaW5kb3c7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEV2
ZW50VGFyZ2V0OwogY2xhc3MgVG91Y2g7CiBjbGFzcyBUb3VjaExpc3Q7CitjbGFzcyBXaW5kb3dQ
cm94eTsKIAogY2xhc3MgRG9jdW1lbnRUb3VjaCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxU
b3VjaD4gY3JlYXRlVG91Y2goRG9jdW1lbnQmLCBET01XaW5kb3cqLCBFdmVudFRhcmdldCosIGlu
dCBpZGVudGlmaWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3Jl
ZW5ZLCBpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0
IGZvcmNlKTsKKyAgICBzdGF0aWMgUmVmPFRvdWNoPiBjcmVhdGVUb3VjaChEb2N1bWVudCYsIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiwgRXZlbnRUYXJnZXQqLCBpbnQgaWRlbnRpZmllciwgaW50IHBh
Z2VYLCBpbnQgcGFnZVksIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHJhZGl1c1gsIGlu
dCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9hdCBmb3JjZSk7CiAgICAgc3RhdGlj
IFJlZjxUb3VjaExpc3Q+IGNyZWF0ZVRvdWNoTGlzdChEb2N1bWVudCYsIFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFRvdWNoPj4mJik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRUb3VjaC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRU
b3VjaC5pZGwKaW5kZXggN2EyNzM3NDU4NjU0OTkxYjExYjU1NjMwODllMjE5NTdjYzRjNGU0YS4u
MDQ4OWEzNmFkNmIxMjUwM2NkYjQ2YWYxNDhjYjU5Y2ZhZmQ2NzViYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VG91Y2guaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFRvdWNoLmlkbApAQCAtMjIsNyArMjIsNyBAQAogICAgIENvbmRpdGlvbmFsPVRP
VUNIX0VWRU5UUwogXSBwYXJ0aWFsIGludGVyZmFjZSBEb2N1bWVudCB7CiAgICAgLy8gRklYTUU6
IFRoaXMgaGFzIGJlZW4gZHJvcHBlZCBmcm9tIHRoZSBzdGFuZGFyZCBub3cgdGhhdCBUb3VjaCBo
YXMgYSBjb25zdHJ1Y3Rvci4KLSAgICBbTmV3T2JqZWN0XSBUb3VjaCBjcmVhdGVUb3VjaChvcHRp
b25hbCBET01XaW5kb3c/IHdpbmRvdyA9IG51bGwsIG9wdGlvbmFsIEV2ZW50VGFyZ2V0PyB0YXJn
ZXQgPSBudWxsLAorICAgIFtOZXdPYmplY3RdIFRvdWNoIGNyZWF0ZVRvdWNoKG9wdGlvbmFsIFdp
bmRvd1Byb3h5PyB3aW5kb3cgPSBudWxsLCBvcHRpb25hbCBFdmVudFRhcmdldD8gdGFyZ2V0ID0g
bnVsbCwKICAgICAgICAgb3B0aW9uYWwgbG9uZyBpZGVudGlmaWVyID0gMCwKICAgICAgICAgb3B0
aW9uYWwgbG9uZyBwYWdlWCA9IDAsIG9wdGlvbmFsIGxvbmcgcGFnZVkgPSAwLCBvcHRpb25hbCBs
b25nIHNjcmVlblggPSAwLCBvcHRpb25hbCBsb25nIHNjcmVlblkgPSAwLAogICAgICAgICBvcHRp
b25hbCBsb25nIHdlYmtpdFJhZGl1c1ggPSAwLCBvcHRpb25hbCBsb25nIHdlYmtpdFJhZGl1c1kg
PSAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDBhMjMyNjM5NmRkZmY5OTRlYmZhZTVjODU2
MDBhN2M3NTMzNzg4Y2EuLmE0MzIzOTdkNzE3OWIxNDFkMjBkZjgwZmNiZTQ2OTUzY2IxODY0OTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCBib29sIEVsZW1lbnQ6
OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtRXZl
bnQsIGNvbnN0CiAgICAgaWYgKGlzRm9yY2VFdmVudChwbGF0Zm9ybUV2ZW50KSAmJiAhZG9jdW1l
bnQoKS5oYXNMaXN0ZW5lclR5cGVGb3JFdmVudFR5cGUocGxhdGZvcm1FdmVudC50eXBlKCkpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWY8TW91c2VFdmVudD4gbW91c2VFdmVudCA9
IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwg
cGxhdGZvcm1FdmVudCwgZGV0YWlsLCByZWxhdGVkVGFyZ2V0KTsKKyAgICBSZWY8TW91c2VFdmVu
dD4gbW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGRvY3VtZW50KCku
d2luZG93UHJveHkoKSwgcGxhdGZvcm1FdmVudCwgZGV0YWlsLCByZWxhdGVkVGFyZ2V0KTsKIAog
ICAgIGlmIChtb3VzZUV2ZW50LT50eXBlKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsgLy8gU2hvdWxkbid0IGhhcHBlbi4KQEAgLTMwNCw3ICszMDQsNyBAQCBib29sIEVsZW1lbnQ6
OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtRXZl
bnQsIGNvbnN0CiAKIGJvb2wgRWxlbWVudDo6ZGlzcGF0Y2hXaGVlbEV2ZW50KGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgcGxhdGZvcm1FdmVudCkKIHsKLSAgICBhdXRvIGV2ZW50ID0gV2hlZWxF
dmVudDo6Y3JlYXRlKHBsYXRmb3JtRXZlbnQsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSk7Cisg
ICAgYXV0byBldmVudCA9IFdoZWVsRXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCBkb2N1bWVu
dCgpLndpbmRvd1Byb3h5KCkpOwogCiAgICAgLy8gRXZlbnRzIHdpdGggbm8gZGVsdGFzIGFyZSBp
bXBvcnRhbnQgYmVjYXVzZSB0aGV5IGNvbnZleSBwbGF0Zm9ybSBpbmZvcm1hdGlvbiBhYm91dCBz
Y3JvbGwgZ2VzdHVyZXMKICAgICAvLyBhbmQgbW9tZW50dW0gYmVnaW5uaW5nIG9yIGVuZGluZy4g
SG93ZXZlciwgdGhvc2UgZXZlbnRzIHNob3VsZCBub3QgYmUgc2VudCB0byB0aGUgRE9NIHNpbmNl
IHNvbWUKQEAgLTMyMSw3ICszMjEsNyBAQCBib29sIEVsZW1lbnQ6OmRpc3BhdGNoV2hlZWxFdmVu
dChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHBsYXRmb3JtRXZlbnQpCiAKIGJvb2wgRWxlbWVu
dDo6ZGlzcGF0Y2hLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIHBsYXRmb3Jt
RXZlbnQpCiB7Ci0gICAgYXV0byBldmVudCA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShwbGF0Zm9y
bUV2ZW50LCBkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCkpOworICAgIGF1dG8gZXZlbnQgPSBLZXli
b2FyZEV2ZW50OjpjcmVhdGUocGxhdGZvcm1FdmVudCwgZG9jdW1lbnQoKS53aW5kb3dQcm94eSgp
KTsKIAogICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpIHsKICAgICAg
ICAgaWYgKGZyYW1lLT5ldmVudEhhbmRsZXIoKS5hY2Nlc3NpYmlsaXR5UHJldmVudHNFdmVudFBy
b3BhZ2F0aW9uKGV2ZW50KSkKQEAgLTI1NDYsMjggKzI1NDYsMjggQEAgdm9pZCBFbGVtZW50Ojpk
aXNwYXRjaEZvY3VzSW5FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRy
PEVsZW1lbnQKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihTY3JpcHRE
aXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZDo6aXNTY3JpcHRBbGxvd2VkKCkpOwogICAgIEFT
U0VSVChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmZvY3VzaW5FdmVudCB8fCBldmVudFR5cGUg
PT0gZXZlbnROYW1lcygpLkRPTUZvY3VzSW5FdmVudCk7Ci0gICAgZGlzcGF0Y2hTY29wZWRFdmVu
dChGb2N1c0V2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCB0cnVlLCBmYWxzZSwgZG9jdW1lbnQoKS5k
ZWZhdWx0VmlldygpLCAwLCBXVEZNb3ZlKG9sZEZvY3VzZWRFbGVtZW50KSkpOworICAgIGRpc3Bh
dGNoU2NvcGVkRXZlbnQoRm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgZmFsc2Us
IGRvY3VtZW50KCkud2luZG93UHJveHkoKSwgMCwgV1RGTW92ZShvbGRGb2N1c2VkRWxlbWVudCkp
KTsKIH0KIAogdm9pZCBFbGVtZW50OjpkaXNwYXRjaEZvY3VzT3V0RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFbGVtZW50PiYmIG5ld0ZvY3VzZWRFbGVtZW50KQog
ewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKFNjcmlwdERpc2FsbG93ZWRT
Y29wZTo6SW5NYWluVGhyZWFkOjppc1NjcmlwdEFsbG93ZWQoKSk7CiAgICAgQVNTRVJUKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzKCkuZm9jdXNvdXRFdmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnRO
YW1lcygpLkRPTUZvY3VzT3V0RXZlbnQpOwotICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoRm9jdXNF
dmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgZmFsc2UsIGRvY3VtZW50KCkuZGVmYXVsdFZp
ZXcoKSwgMCwgV1RGTW92ZShuZXdGb2N1c2VkRWxlbWVudCkpKTsKKyAgICBkaXNwYXRjaFNjb3Bl
ZEV2ZW50KEZvY3VzRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIHRydWUsIGZhbHNlLCBkb2N1bWVu
dCgpLndpbmRvd1Byb3h5KCksIDAsIFdURk1vdmUobmV3Rm9jdXNlZEVsZW1lbnQpKSk7CiB9CiAK
IHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFJlZlB0cjxFbGVtZW50PiYmIG9sZEZv
Y3VzZWRFbGVtZW50LCBGb2N1c0RpcmVjdGlvbikKIHsKICAgICBpZiAoYXV0byogcGFnZSA9IGRv
Y3VtZW50KCkucGFnZSgpKQogICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5lbGVtZW50
RGlkRm9jdXMoKnRoaXMpOwotICAgIGRpc3BhdGNoRXZlbnQoRm9jdXNFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBmYWxzZSwgZmFsc2UsIGRvY3VtZW50KCkuZGVmYXVsdFZp
ZXcoKSwgMCwgV1RGTW92ZShvbGRGb2N1c2VkRWxlbWVudCkpKTsKKyAgICBkaXNwYXRjaEV2ZW50
KEZvY3VzRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZm9jdXNFdmVudCwgZmFsc2UsIGZhbHNl
LCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIDAsIFdURk1vdmUob2xkRm9jdXNlZEVsZW1lbnQp
KSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoUmVmUHRyPEVsZW1lbnQ+
JiYgbmV3Rm9jdXNlZEVsZW1lbnQpCiB7CiAgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgp
LnBhZ2UoKSkKICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuZWxlbWVudERpZEJsdXIo
KnRoaXMpOwotICAgIGRpc3BhdGNoRXZlbnQoRm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5ibHVyRXZlbnQsIGZhbHNlLCBmYWxzZSwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCAwLCBX
VEZNb3ZlKG5ld0ZvY3VzZWRFbGVtZW50KSkpOworICAgIGRpc3BhdGNoRXZlbnQoRm9jdXNFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsIGZhbHNlLCBmYWxzZSwgZG9jdW1lbnQo
KS53aW5kb3dQcm94eSgpLCAwLCBXVEZNb3ZlKG5ld0ZvY3VzZWRFbGVtZW50KSkpOwogfQogCiB2
b2lkIEVsZW1lbnQ6OmRpc3BhdGNoV2ViS2l0SW1hZ2VSZWFkeUV2ZW50Rm9yVGVzdGluZygpCkBA
IC0yNTg3LDcgKzI1ODcsNyBAQCBib29sIEVsZW1lbnQ6OmRpc3BhdGNoTW91c2VGb3JjZVdpbGxC
ZWdpbigpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFBsYXRmb3JtTW91c2VFdmVudCBw
bGF0Zm9ybU1vdXNlRXZlbnQgeyBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkubGFzdEtub3duTW91c2VQ
b3NpdGlvbigpLCBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkubGFzdEtub3duTW91c2VHbG9iYWxQb3Np
dGlvbigpLCBOb0J1dHRvbiwgUGxhdGZvcm1FdmVudDo6Tm9UeXBlLCAxLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgV2FsbFRpbWU6Om5vdygpLCBGb3JjZUF0Q2xpY2ssIE5vVGFwIH07Ci0g
ICAgYXV0byBtb3VzZUZvcmNlV2lsbEJlZ2luRXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLndlYmtpdG1vdXNlZm9yY2V3aWxsYmVnaW5FdmVudCwgZG9jdW1lbnQoKS5kZWZh
dWx0VmlldygpLCBwbGF0Zm9ybU1vdXNlRXZlbnQsIDAsIG51bGxwdHIpOworICAgIGF1dG8gbW91
c2VGb3JjZVdpbGxCZWdpbkV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53
ZWJraXRtb3VzZWZvcmNld2lsbGJlZ2luRXZlbnQsIGRvY3VtZW50KCkud2luZG93UHJveHkoKSwg
cGxhdGZvcm1Nb3VzZUV2ZW50LCAwLCBudWxscHRyKTsKICAgICBtb3VzZUZvcmNlV2lsbEJlZ2lu
RXZlbnQtPnNldFRhcmdldCh0aGlzKTsKICAgICBkaXNwYXRjaEV2ZW50KG1vdXNlRm9yY2VXaWxs
QmVnaW5FdmVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcAppbmRleCAxNmQ4YjNmZjA3
OGQwNWFkOTFlMmQ2OTE0NjcxOTEyODU1ZDdjNDg0Li45ODY4NzczMjZjZTNmYWU0YmIwNTllN2Mx
NjRkN2JjMThhYTlkZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3BwCkBAIC00MCw4ICs0
MCw4IEBAIGJvb2wgRm9jdXNFdmVudDo6aXNGb2N1c0V2ZW50KCkgY29uc3QKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotRm9jdXNFdmVudDo6Rm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50
IGRldGFpbCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpCi0gICAgOiBVSUV2
ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKQorRm9jdXNFdmVu
dDo6Rm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBS
ZWZQdHI8RXZlbnRUYXJnZXQ+JiYgcmVsYXRlZFRhcmdldCkKKyAgICA6IFVJRXZlbnQodHlwZSwg
Y2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCiAgICAgLCBtX3Jl
bGF0ZWRUYXJnZXQoV1RGTW92ZShyZWxhdGVkVGFyZ2V0KSkKIHsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNF
dmVudC5oCmluZGV4IDA2NzI1NTc0YzA2YjkxZjI5ZmI0Zjk2YTBiMWI1NjEzNGYxOTY4NTQuLmM3
YTRkZjhlNzc0MzJjZmUzNjRhMTM0ZjhkZTUxNTE2YTA1N2I4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3Vz
RXZlbnQuaApAQCAtMzUsOSArMzUsOSBAQCBjbGFzcyBOb2RlOwogCiBjbGFzcyBGb2N1c0V2ZW50
IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Rm9jdXNF
dmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBpbnQgZGV0YWlsLCBSZWZQdHI8RXZlbnRU
YXJnZXQ+JiYgcmVsYXRlZFRhcmdldCkKKyAgICBzdGF0aWMgUmVmPEZvY3VzRXZlbnQ+IGNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFi
bGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBSZWZQdHI8RXZlbnRU
YXJnZXQ+JiYgcmVsYXRlZFRhcmdldCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZvY3VzRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkZXRhaWws
IFdURk1vdmUocmVsYXRlZFRhcmdldCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Rm9jdXNFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUodmlldyksIGRl
dGFpbCwgV1RGTW92ZShyZWxhdGVkVGFyZ2V0KSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWY8
Rm9jdXNFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKQpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgRm9jdXNFdmVudCgpID0gZGVmYXVsdDsKLSAgICBGb2N1c0V2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgRE9NV2luZG93KiwgaW50LCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiYpOworICAgIEZvY3VzRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCwgUmVmUHRyPEV2ZW50VGFyZ2V0PiYmKTsK
ICAgICBGb2N1c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYsIElz
VHJ1c3RlZCk7CiAKICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuY3BwCmluZGV4IGQ0NDkyOTRmZWM2YmM3OTcwZDZj
NDJjNGI5N2FiMTYxYzRmNWIxZjAuLmMxN2JmMThkODhhNjc2NDcyYTE4NzE2M2U3YjQ1MTRmODQ0
MDBhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5jcHAKQEAgLTI2LDIwICsyNiwyMCBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklucHV0RXZlbnQuaCIKIAotI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlci5oIgogI2luY2x1ZGUgIk5vZGUu
aCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8SW5wdXRFdmVudD4gSW5wdXRFdmVudDo6Y3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgV2ViQ29yZTo6RE9NV2luZG93ICp2aWV3
LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYgZGF0YVRyYW5zZmVy
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJhbmdlcywgaW50IGRl
dGFpbCkKK1JlZjxJbnB1dEV2ZW50PiBJbnB1dEV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5n
JiBkYXRhLCBSZWZQdHI8RGF0YVRyYW5zZmVyPiYmIGRhdGFUcmFuc2ZlciwgY29uc3QgVmVjdG9y
PFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5wdXRFdmVudChldmVudFR5cGUsIGlucHV0VHlwZSwgY2Fu
QnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkYXRhLCBXVEZNb3ZlKGRhdGFUcmFuc2ZlciksIHRh
cmdldFJhbmdlcywgZGV0YWlsKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5wdXRFdmVu
dChldmVudFR5cGUsIGlucHV0VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZp
ZXcpLCBkYXRhLCBXVEZNb3ZlKGRhdGFUcmFuc2ZlciksIHRhcmdldFJhbmdlcywgZGV0YWlsKSk7
CiB9CiAKLUlucHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFu
c2Zlcj4mJiBkYXRhVHJhbnNmZXIsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiYg
dGFyZ2V0UmFuZ2VzLCBpbnQgZGV0YWlsKQotICAgIDogVUlFdmVudChldmVudFR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKQorSW5wdXRFdmVudDo6SW5wdXRFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3
LCBjb25zdCBTdHJpbmcmIGRhdGEsIFJlZlB0cjxEYXRhVHJhbnNmZXI+JiYgZGF0YVRyYW5zZmVy
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4mIHRhcmdldFJhbmdlcywgaW50IGRl
dGFpbCkKKyAgICA6IFVJRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdU
Rk1vdmUodmlldyksIGRldGFpbCkKICAgICAsIG1faW5wdXRUeXBlKGlucHV0VHlwZSkKICAgICAs
IG1fZGF0YShkYXRhKQogICAgICwgbV9kYXRhVHJhbnNmZXIoZGF0YVRyYW5zZmVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9JbnB1dEV2ZW50LmgKaW5kZXggY2FkOGRjZTdiMzYyNmQ5YTIyNzYzNGIzNTg5MjZjMWYxMjU0
NjgxYi4uZDA1MDc2MzljNmM4OWM5OWQ0ZDMwYTFjZTkzNmY5MTYxYjljNGVkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vSW5wdXRFdmVudC5oCkBAIC0zMCw4ICszMCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgRE9NV2luZG93OwogY2xhc3MgRGF0YVRyYW5zZmVyOworY2xhc3MgV2luZG93UHJv
eHk7CiAKIGNsYXNzIElucHV0RXZlbnQgZmluYWwgOiBwdWJsaWMgVUlFdmVudCB7CiBwdWJsaWM6
CkBAIC0zOSwxMyArMzksMTMgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgZGF0YTsKICAgICB9
OwogCi0gICAgc3RhdGljIFJlZjxJbnB1dEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRy
PERhdGFUcmFuc2Zlcj4mJiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJn
ZXRSYW5nZXMsIGludCBkZXRhaWwpOworICAgIHN0YXRpYyBSZWY8SW5wdXRFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZp
ZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwgY29uc3QgVmVj
dG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpOwogICAg
IHN0YXRpYyBSZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Y29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6
Ok5vKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5wdXRFdmVudCh0eXBl
LCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiAgICAgfQogCi0gICAgSW5wdXRFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYgZGF0
YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5n
ZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpOworICAgIElucHV0RXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0cmlu
ZyYgZGF0YSwgUmVmUHRyPERhdGFUcmFuc2Zlcj4mJiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdGF0
aWNSYW5nZT4+JiB0YXJnZXRSYW5nZXMsIGludCBkZXRhaWwpOwogICAgIElucHV0RXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEluaXQmLCBJc1RydXN0ZWQpOwogCiAg
ICAgYm9vbCBpc0lucHV0RXZlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKaW5kZXggNGRhMTAxNzcyNWZlODkyY2ZhOGRh
Y2YwZjViNzA4MWRjYzZjZmJlOS4uNGFjYjVmNGNlYjc2MGUxNzBmMTA3Y2VhMzg2MDk4OWY2NzI2
NGVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcApAQCAtMjMsNiArMjMsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKIAorI2lu
Y2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWRp
dG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCkBAIC05Miw4ICs5Myw4IEBAIHN0YXRp
YyBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5TG9jYXRpb25Db2RlIGtleUxvY2F0aW9uQ29kZShj
b25zdCBQbGF0Zm9ybUtleWJvCiAKIGlubGluZSBLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50
KCkgPSBkZWZhdWx0OwogCi1pbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25z
dCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwgRE9NV2luZG93KiB2aWV3KQotICAgIDogVUlF
dmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGVGb3JLZXlib2FyZEV2ZW50VHlwZShrZXkudHlwZSgp
KSwgdHJ1ZSwgdHJ1ZSwga2V5LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgp
LCB2aWV3LCAwLCBrZXkuY3RybEtleSgpLCBrZXkuYWx0S2V5KCksIGtleS5zaGlmdEtleSgpLCBr
ZXkubWV0YUtleSgpLCBmYWxzZSwga2V5Lm1vZGlmaWVycygpLmNvbnRhaW5zKFBsYXRmb3JtRXZl
bnQ6Ok1vZGlmaWVyOjpDYXBzTG9ja0tleSkpCitpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9h
cmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwgUmVmUHRyPFdpbmRvd1By
b3h5PiYmIHZpZXcpCisgICAgOiBVSUV2ZW50V2l0aEtleVN0YXRlKGV2ZW50VHlwZUZvcktleWJv
YXJkRXZlbnRUeXBlKGtleS50eXBlKCkpLCB0cnVlLCB0cnVlLCBrZXkudGltZXN0YW1wKCkuYXBw
cm94aW1hdGVNb25vdG9uaWNUaW1lKCksIHZpZXcuY29weVJlZigpLCAwLCBrZXkuY3RybEtleSgp
LCBrZXkuYWx0S2V5KCksIGtleS5zaGlmdEtleSgpLCBrZXkubWV0YUtleSgpLCBmYWxzZSwga2V5
Lm1vZGlmaWVycygpLmNvbnRhaW5zKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDYXBzTG9ja0tl
eSkpCiAgICAgLCBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1LZXlib2FyZEV2ZW50PihrZXkpKQogI2lmIEVOQUJMRShLRVlCT0FSRF9LRVlfQVRUUklC
VVRFKQogICAgICwgbV9rZXkoa2V5LmtleSgpKQpAQCAtMTA0LDcgKzEwNSw3IEBAIGlubGluZSBL
ZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYg
a2V5LCBET01XaW5kb3cqCiAgICAgLCBtX2tleUlkZW50aWZpZXIoa2V5LmtleUlkZW50aWZpZXIo
KSkKICAgICAsIG1fbG9jYXRpb24oa2V5TG9jYXRpb25Db2RlKGtleSkpCiAgICAgLCBtX3JlcGVh
dChrZXkuaXNBdXRvUmVwZWF0KCkpCi0gICAgLCBtX2lzQ29tcG9zaW5nKHZpZXcgJiYgdmlldy0+
ZnJhbWUoKSAmJiB2aWV3LT5mcmFtZSgpLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKQorICAg
ICwgbV9pc0NvbXBvc2luZyh2aWV3ICYmIGlzPERPTVdpbmRvdz4odmlldy0+d2luZG93KCkpICYm
IGRvd25jYXN0PERPTVdpbmRvdz4oKnZpZXctPndpbmRvdygpKS5mcmFtZSgpICYmIGRvd25jYXN0
PERPTVdpbmRvdz4oKnZpZXctPndpbmRvdygpKS5mcmFtZSgpLT5lZGl0b3IoKS5oYXNDb21wb3Np
dGlvbigpKQogI2lmIFVTRShBUFBLSVQpCiAgICAgLCBtX2hhbmRsZWRCeUlucHV0TWV0aG9kKGtl
eS5oYW5kbGVkQnlJbnB1dE1ldGhvZCgpKQogICAgICwgbV9rZXlwcmVzc0NvbW1hbmRzKGtleS5j
b21tYW5kcygpKQpAQCAtMTMyLDkgKzEzMyw5IEBAIGlubGluZSBLZXlib2FyZEV2ZW50OjpLZXli
b2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBJbml0JiBpCiAK
IEtleWJvYXJkRXZlbnQ6On5LZXlib2FyZEV2ZW50KCkgPSBkZWZhdWx0OwogCi1SZWY8S2V5Ym9h
cmRFdmVudD4gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dCYgcGxhdGZvcm1FdmVudCwgRE9NV2luZG93KiB2aWV3KQorUmVmPEtleWJvYXJkRXZlbnQ+IEtl
eWJvYXJkRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIHBsYXRmb3Jt
RXZlbnQsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3KQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEtleWJvYXJkRXZlbnQocGxhdGZvcm1FdmVudCwgdmlldykpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEtleWJvYXJkRXZlbnQocGxhdGZvcm1FdmVudCwgV1RGTW92ZSh2aWV3KSkp
OwogfQogCiBSZWY8S2V5Ym9hcmRFdmVudD4gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlRm9yQmluZGlu
Z3MoKQpAQCAtMTQ3LDEzICsxNDgsMTMgQEAgUmVmPEtleWJvYXJkRXZlbnQ+IEtleWJvYXJkRXZl
bnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGkKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBLZXlib2FyZEV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1Ry
dXN0ZWQpKTsKIH0KIAotdm9pZCBLZXlib2FyZEV2ZW50Ojppbml0S2V5Ym9hcmRFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERP
TVdpbmRvdyogdmlldywKK3ZvaWQgS2V5Ym9hcmRFdmVudDo6aW5pdEtleWJvYXJkRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywKICAgICBjb25zdCBTdHJpbmcmIGtleUlkZW50aWZp
ZXIsIHVuc2lnbmVkIGxvY2F0aW9uLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNo
aWZ0S2V5LCBib29sIG1ldGFLZXksIGJvb2wgYWx0R3JhcGhLZXkpCiB7CiAgICAgaWYgKGlzQmVp
bmdEaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluaXRVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgMCk7CisgICAgaW5pdFVJRXZlbnQodHlwZSwg
Y2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCAwKTsKIAogICAgIG1fa2V5SWRl
bnRpZmllciA9IGtleUlkZW50aWZpZXI7CiAgICAgbV9sb2NhdGlvbiA9IGxvY2F0aW9uOwpAQCAt
MjI3LDggKzIyOCw5IEBAIGludCBLZXlib2FyZEV2ZW50OjpjaGFyQ29kZSgpIGNvbnN0CiAgICAg
Ly8gRmlyZWZveDogMCBmb3Iga2V5ZG93bi9rZXl1cCBldmVudHMsIGNoYXJhY3RlciBjb2RlIGZv
ciBrZXlwcmVzcwogICAgIC8vIFdlIG1hdGNoIEZpcmVmb3gsIHVubGVzcyBpbiBiYWNrd2FyZCBj
b21wYXRpYmlsaXR5IG1vZGUsIHdoZXJlIHdlIGFsd2F5cyByZXR1cm4gdGhlIGNoYXJhY3RlciBj
b2RlLgogICAgIGJvb2wgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9IGZhbHNlOwotICAgIGlm
ICh2aWV3KCkgJiYgdmlldygpLT5mcmFtZSgpKQotICAgICAgICBiYWNrd2FyZENvbXBhdGliaWxp
dHlNb2RlID0gdmlldygpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS5uZWVkc0tleWJvYXJkRXZl
bnREaXNhbWJpZ3VhdGlvblF1aXJrcygpOworICAgIGF1dG8qIHdpbmRvdyA9IHZpZXcoKSA/IHZp
ZXcoKS0+d2luZG93KCkgOiBudWxscHRyOworICAgIGlmIChpczxET01XaW5kb3c+KHdpbmRvdykg
JiYgZG93bmNhc3Q8RE9NV2luZG93Pigqd2luZG93KS5mcmFtZSgpKQorICAgICAgICBiYWNrd2Fy
ZENvbXBhdGliaWxpdHlNb2RlID0gZG93bmNhc3Q8RE9NV2luZG93Pigqd2luZG93KS5mcmFtZSgp
LT5ldmVudEhhbmRsZXIoKS5uZWVkc0tleWJvYXJkRXZlbnREaXNhbWJpZ3VhdGlvblF1aXJrcygp
OwogCiAgICAgaWYgKCFtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50IHx8ICh0eXBlKCkgIT0gZXZl
bnROYW1lcygpLmtleXByZXNzRXZlbnQgJiYgIWJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUpKQog
ICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2Fy
ZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCmluZGV4IDgyMTAz
MzBlYWIwMzQxZjRjYTU0Y2QyNWM1OGI5OTU0NmYwYjE1YTkuLjFkM2NjMjQzNzk5YjE5YTc0NGVl
OTc4YTE4N2VhZWFlYzg4MDVmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXli
b2FyZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaApAQCAt
NDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIERPTV9LRVlfTE9DQVRJT05fTlVNUEFEID0g
MHgwMwogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEtleWJvYXJkRXZl
bnQ+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmLCBET01XaW5kb3cqKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEtleWJvYXJkRXZlbnQ+IGNyZWF0ZShjb25zdCBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQmLCBSZWZQdHI8V2luZG93UHJveHk+JiYpOwogICAgIHN0YXRp
YyBSZWY8S2V5Ym9hcmRFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoKTsKIAogICAgIHN0cnVjdCBJ
bml0IDogcHVibGljIEV2ZW50TW9kaWZpZXJJbml0IHsKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB+S2V5Ym9hcmRFdmVudCgpOwogICAgIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgaW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLAorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgaW5pdEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYsCiAgICAg
ICAgIGNvbnN0IFN0cmluZyYga2V5SWRlbnRpZmllciwgdW5zaWduZWQgbG9jYXRpb24sCiAgICAg
ICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtl
eSwgYm9vbCBhbHRHcmFwaEtleSA9IGZhbHNlKTsKICAgICAKQEAgLTEwMiw3ICsxMDIsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgS2V5Ym9hcmRFdmVudCgpOwotICAgIEtleWJvYXJkRXZl
bnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgS2V5Ym9h
cmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmLCBSZWZQdHI8V2luZG93UHJveHk+
JiYpOwogICAgIEtleWJvYXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgSW5pdCYs
IElzVHJ1c3RlZCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1LZXlib2FyZEV2ZW50
PiBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0tleWJvYXJkRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQu
aWRsCmluZGV4IDc1N2MwNzc5M2Y1ZTVmMWUxODQzOGY3OGRkNDQ3ZTlhM2ExZDUxMDkuLmNkZTQ1
MGMzNDM1MzM1MDkyYTE3N2Q2ZGY2MzY4YmY2MzUxZDcxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5
Ym9hcmRFdmVudC5pZGwKQEAgLTUyLDcgKzUyLDcgQEAKICAgICAvLyBGSVhNRTogdGhpcyBkb2Vz
IG5vdCBtYXRjaCB0aGUgdmVyc2lvbiBpbiB0aGUgRE9NIHNwZWMuCiAgICAgLy8gRklYTUU6IFVz
aW5nICJ1bmRlZmluZWQiIGFzIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIGlzIHdyb25nLgogICAg
IHZvaWQgaW5pdEtleWJvYXJkRXZlbnQob3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5kZWZp
bmVkIiwgb3B0aW9uYWwgYm9vbGVhbiBjYW5CdWJibGUgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVh
biBjYW5jZWxhYmxlID0gZmFsc2UsCi0gICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlldyA9
IG51bGwsIG9wdGlvbmFsIERPTVN0cmluZyBrZXlJZGVudGlmaWVyID0gInVuZGVmaW5lZCIsIG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgbG9jYXRpb24gPSAwLAorICAgICAgICBvcHRpb25hbCBXaW5k
b3dQcm94eT8gdmlldyA9IG51bGwsIG9wdGlvbmFsIERPTVN0cmluZyBrZXlJZGVudGlmaWVyID0g
InVuZGVmaW5lZCIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbG9jYXRpb24gPSAwLAogICAgICAg
ICBvcHRpb25hbCBib29sZWFuIGN0cmxLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBhbHRL
ZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBzaGlmdEtleSA9IGZhbHNlLCBvcHRpb25hbCBi
b29sZWFuIG1ldGFLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBhbHRHcmFwaEtleSA9IGZh
bHNlKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAppbmRleCA1MTk3ZDViYWUxYWUz
NWFhYjA0ZjBjYjUwZTc2ZTlkOGZhYTE4Yjc5Li4zMzA5Mjc4N2QxNGFlNjU3M2VhMWI5ZDFmZDlh
N2QwZWVlMGY0MDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCkBAIC0yNywxMiArMjcs
MTIgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkpTVmFsdWVJbldyYXBwZWRPYmplY3QuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1
ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQwLDkgKzQwLDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYjsKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLXVzaW5nIE1lc3NhZ2VFdmVudFNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRyPERPTVdp
bmRvdz4sIFJlZlB0cjxNZXNzYWdlUG9ydD4sIFJlZlB0cjxTZXJ2aWNlV29ya2VyPj47Cit1c2lu
ZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0
cjxNZXNzYWdlUG9ydD4sIFJlZlB0cjxTZXJ2aWNlV29ya2VyPj47CiAjZWxzZQotdXNpbmcgTWVz
c2FnZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQdHI8RE9NV2luZG93PiwgUmVmUHRyPE1lc3Nh
Z2VQb3J0Pj47Cit1c2luZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxXaW5k
b3dQcm94eT4sIFJlZlB0cjxNZXNzYWdlUG9ydD4+OwogI2VuZGlmCiAKIGNsYXNzIE1lc3NhZ2VF
dmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRs
CmluZGV4IDAyNDM4ZmQ0YzQ3YzNmYzI5MmVhYmY0N2U1YzVlODNmODY5NTA4MjIuLmZhNDhjOGZh
NWRhNWZkYzNlMGYyYzJmN2VmYmZhNzVjZDhmNTQwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
RXZlbnQuaWRsCkBAIC0yNyw5ICsyNyw5IEBACiAgKi8KIAogI2lmIGRlZmluZWQoRU5BQkxFX1NF
UlZJQ0VfV09SS0VSKSAmJiBFTkFCTEVfU0VSVklDRV9XT1JLRVIKLXR5cGVkZWYgKERPTVdpbmRv
dyBvciBNZXNzYWdlUG9ydCBvciBTZXJ2aWNlV29ya2VyKSBNZXNzYWdlRXZlbnRTb3VyY2U7Cit0
eXBlZGVmIChXaW5kb3dQcm94eSBvciBNZXNzYWdlUG9ydCBvciBTZXJ2aWNlV29ya2VyKSBNZXNz
YWdlRXZlbnRTb3VyY2U7CiAjZWxzZQotdHlwZWRlZiAoRE9NV2luZG93IG9yIE1lc3NhZ2VQb3J0
KSBNZXNzYWdlRXZlbnRTb3VyY2U7Cit0eXBlZGVmIChXaW5kb3dQcm94eSBvciBNZXNzYWdlUG9y
dCkgTWVzc2FnZUV2ZW50U291cmNlOwogI2VuZGlmCiAKIFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50
LmNwcAppbmRleCBhMTQ3ZTEyMThiYjZlMjRmMmFkNzY0NzA3NDYwYzY2NzAyMWY2YzU5Li5jODk2
Zjg2MzFhM2QyYmJkYTE5MzA2MjEwZmVkZGI4OTg2ZTRjYTYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNl
RXZlbnQuY3BwCkBAIC00NCwxMyArNDQsMTMgQEAgUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6
OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IE1vdXNlRXZlbnRJbmkKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb3VzZUV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1Ry
dXN0ZWQpKTsKIH0KIAotUmVmPE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2ZW50LCBpbnQgZGV0YWlsLCBOb2RlKiByZWxhdGVkVGFyZ2V0KQorUmVmPE1v
dXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
ZXZlbnQsIGludCBkZXRhaWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQpCiB7CiAgICAgYm9vbCBpc01v
dXNlRW50ZXJPckxlYXZlID0gZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5tb3VzZWVudGVyRXZl
bnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5tb3VzZWxlYXZlRXZlbnQ7CiAgICAgYm9v
bCBpc0NhbmNlbGFibGUgPSBldmVudFR5cGUgIT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50
ICYmICFpc01vdXNlRW50ZXJPckxlYXZlOwogICAgIGJvb2wgY2FuQnViYmxlID0gIWlzTW91c2VF
bnRlck9yTGVhdmU7CiAKLSAgICByZXR1cm4gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwg
Y2FuQnViYmxlLCBpc0NhbmNlbGFibGUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9u
b3RvbmljVGltZSgpLCB2aWV3LAorICAgIHJldHVybiBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRU
eXBlLCBjYW5CdWJibGUsIGlzQ2FuY2VsYWJsZSwgZXZlbnQudGltZXN0YW1wKCkuYXBwcm94aW1h
dGVNb25vdG9uaWNUaW1lKCksIFdURk1vdmUodmlldyksCiAgICAgICAgIGRldGFpbCwgZXZlbnQu
Z2xvYmFsUG9zaXRpb24oKS54KCksIGV2ZW50Lmdsb2JhbFBvc2l0aW9uKCkueSgpLCBldmVudC5w
b3NpdGlvbigpLngoKSwgZXZlbnQucG9zaXRpb24oKS55KCksCiAjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKICAgICAgICAgZXZlbnQubW92ZW1lbnREZWx0YSgpLngoKSwgZXZlbnQubW92ZW1lbnRE
ZWx0YSgpLnkoKSwKQEAgLTU5LDEzICs1OSwxMyBAQCBSZWY8TW91c2VFdmVudD4gTW91c2VFdmVu
dDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHZpZQog
ICAgICAgICByZWxhdGVkVGFyZ2V0LCBldmVudC5mb3JjZSgpLCBldmVudC5zeW50aGV0aWNDbGlj
a1R5cGUoKSk7CiB9CiAKLVJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25v
dG9uaWNUaW1lIHRpbWVzdGFtcCwgRE9NV2luZG93KiB2aWV3LCBpbnQgZGV0YWlsLCBpbnQgc2Ny
ZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAorUmVmPE1vdXNlRXZlbnQ+
IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBp
bnQgcGFnZVgsIGludCBwYWdlWSwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIGludCBt
b3ZlbWVudFgsIGludCBtb3ZlbWVudFksCiAjZW5kaWYKICAgICBib29sIGN0cmxLZXksIGJvb2wg
YWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRv
biwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQsIGRv
dWJsZSBmb3JjZSwgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBEYXRhVHJhbnNm
ZXIqIGRhdGFUcmFuc2ZlciwgYm9vbCBpc1NpbXVsYXRlZCkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1w
LCB2aWV3LAorICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vdXNlRXZlbnQodHlwZSwgY2FuQnVi
YmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIFdURk1vdmUodmlldyksCiAgICAgICAgIGRldGFp
bCwgeyBzY3JlZW5YLCBzY3JlZW5ZIH0sIHsgcGFnZVgsIHBhZ2VZIH0sCiAjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKICAgICAgICAgeyBtb3ZlbWVudFgsIG1vdmVtZW50WSB9LApAQCAtNzMsMTkg
KzczLDE5IEBAIFJlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vCiAgICAgICAgIGN0cmxLZXksIGFsdEtl
eSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9ucywgcmVsYXRlZFRhcmdldCwgZm9y
Y2UsIHN5bnRoZXRpY0NsaWNrVHlwZSwgZGF0YVRyYW5zZmVyLCBpc1NpbXVsYXRlZCkpOwogfQog
Ci1SZWY8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZp
ZXcsIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGlu
dCBjbGllbnRZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29s
IG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywg
dW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tUeXBlLCBFdmVudFRhcmdldCogcmVsYXRlZFRh
cmdldCkKK1JlZjxNb3VzZUV2ZW50PiBNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblks
IGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9v
bCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIHVuc2lnbmVk
IHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRXZlbnRU
YXJnZXQqIHJlbGF0ZWRUYXJnZXQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW91c2VF
dmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCB7IHNj
cmVlblgsIHNjcmVlblkgfSwgeyBjbGllbnRYLCBjbGllbnRZIH0sIGN0cmxLZXksIGFsdEtleSwg
c2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9ucywgc3ludGhldGljQ2xpY2tUeXBlLCBy
ZWxhdGVkVGFyZ2V0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW91c2VFdmVudChldmVu
dFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCB7IHNj
cmVlblgsIHNjcmVlblkgfSwgeyBjbGllbnRYLCBjbGllbnRZIH0sIGN0cmxLZXksIGFsdEtleSwg
c2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgYnV0dG9ucywgc3ludGhldGljQ2xpY2tUeXBlLCBy
ZWxhdGVkVGFyZ2V0KSk7CiB9CiAKIE1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoKSA9IGRlZmF1bHQ7
CiAKLU1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1w
LCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2Nh
dGlvbiwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAorTW91c2VFdmVudDo6TW91c2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4m
JiB2aWV3LCBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0
IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAg
ICAgICBjb25zdCBJbnRQb2ludCYgbW92ZW1lbnREZWx0YSwKICNlbmRpZgogICAgICAgICBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgRXZlbnRUYXJnZXQqIHJl
bGF0ZWRUYXJnZXQsIGRvdWJsZSBmb3JjZSwgdW5zaWduZWQgc2hvcnQgc3ludGhldGljQ2xpY2tU
eXBlLCBEYXRhVHJhbnNmZXIqIGRhdGFUcmFuc2ZlciwgYm9vbCBpc1NpbXVsYXRlZCkKLSAgICA6
IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0aW1l
c3RhbXAsIHZpZXcsIGRldGFpbCwgc2NyZWVuTG9jYXRpb24sIHdpbmRvd0xvY2F0aW9uLAorICAg
IDogTW91c2VSZWxhdGVkRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRp
bWVzdGFtcCwgV1RGTW92ZSh2aWV3KSwgZGV0YWlsLCBzY3JlZW5Mb2NhdGlvbiwgd2luZG93TG9j
YXRpb24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgbW92ZW1lbnREZWx0YSwK
ICNlbmRpZgpAQCAtMTAwLDggKzEwMCw4IEBAIE1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlCiB7CiB9
CiAKLU1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRl
dGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgY2xp
ZW50TG9jYXRpb24sIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJv
b2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25z
LCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0KiByZWxhdGVk
VGFyZ2V0KQotICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIE1vbm90b25pY1RpbWU6Om5vdygpLCB2aWV3LCBkZXRhaWwsIHNjcmVlbkxvY2F0
aW9uLCB7IH0sCitNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJv
eHk+JiYgdmlldywgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBj
b25zdCBJbnRQb2ludCYgY2xpZW50TG9jYXRpb24sIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXks
IGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNp
Z25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2
ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KQorICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZlbnRU
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWU6Om5vdygpLCBXVEZNb3Zl
KHZpZXcpLCBkZXRhaWwsIHNjcmVlbkxvY2F0aW9uLCB7IH0sCiAjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKICAgICAgICAgeyB9LAogI2VuZGlmCkBAIC0xMjcsMTIgKzEyNywxMiBAQCBNb3VzZUV2
ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBNb3Vz
ZUV2ZW50SW5pdCYgaW5pdAogCiBNb3VzZUV2ZW50Ojp+TW91c2VFdmVudCgpID0gZGVmYXVsdDsK
IAotdm9pZCBNb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50
IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVu
dFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtl
eSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCkKK3Zv
aWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmll
dywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50
IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wg
bWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdl
dCkKIHsKICAgICBpZiAoaXNCZWluZ0Rpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkZXRhaWwp
OworICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZSh2
aWV3KSwgZGV0YWlsKTsKIAogICAgIG1fc2NyZWVuTG9jYXRpb24gPSBJbnRQb2ludChzY3JlZW5Y
LCBzY3JlZW5ZKTsKICAgICBtX2N0cmxLZXkgPSBjdHJsS2V5OwpAQCAtMTUyLDcgKzE1Miw3IEBA
IHZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjCiAKIC8vIEZJWE1FOiBXZSBuZWVkIHRoaXMgcXVpcmsg
YmVjYXVzZSBpQWQgUHJvZHVjZXIgaXMgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHdpdGggYSByZWxh
dGVkVGFyZ2V0IHRoYXQgaXMgbm90IGFuIEV2ZW50VGFyZ2V0IChyZGFyOi8vcHJvYmxlbS8zMDY0
MDEwMSkuCiAvLyBXZSBzaG91bGQgcmVtb3ZlIHRoaXMgcXVpcmsgd2hlbiBwb3NzaWJsZS4KLXZv
aWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayhFeGVjU3RhdGUmIHN0YXRlLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyog
dmlldywgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwg
aW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJv
b2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBKU1ZhbHVlIHJlbGF0ZWRUYXJnZXRW
YWx1ZSkKK3ZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnRRdWlyayhFeGVjU3RhdGUmIHN0
YXRlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNj
cmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtl
eSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sIEpT
VmFsdWUgcmVsYXRlZFRhcmdldFZhbHVlKQogewogICAgIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFy
Z2V0ID0gbnVsbHB0cjsKICNpZiBQTEFURk9STShNQUMpCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9p
ZCBNb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudFF1aXJrKEV4ZWNTdGF0ZSYgc3RhdGUsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIHMKICNpZiBQTEFURk9STShNQUMpCiAgICAgfQogI2VuZGlmCi0g
ICAgaW5pdE1vdXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkZXRh
aWwsIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVudFksIGN0cmxLZXksIGFsdEtleSwg
c2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgcmVsYXRlZFRhcmdldCk7CisgICAgaW5pdE1vdXNl
RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWws
IHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVudFksIGN0cmxLZXksIGFsdEtleSwgc2hp
ZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgcmVsYXRlZFRhcmdldCk7CiB9CiAKIEV2ZW50SW50ZXJm
YWNlIE1vdXNlRXZlbnQ6OmV2ZW50SW50ZXJmYWNlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVu
dC5oCmluZGV4IDI2Y2FmOGY2YjE5MTUxNjY4YjY4MDM1NTRhMGIwMDE2NGQzZTFmY2YuLjRiMjgw
Nzk5NTViNGNiNzNhMmNlMTY4ZWI1YTEzOWQ3MzE1NmE5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZl
bnQuaApAQCAtMjksMTkgKzI5LDIwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERh
dGFUcmFuc2ZlcjsKK2NsYXNzIE5vZGU7CiBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiAKIGNs
YXNzIE1vdXNlRXZlbnQgOiBwdWJsaWMgTW91c2VSZWxhdGVkRXZlbnQgewogcHVibGljOgotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW91c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3Rvbmlj
VGltZSB0aW1lc3RhbXAsIERPTVdpbmRvdyosIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQg
c2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgUmVmUHRy
PFdpbmRvd1Byb3h5PiYmLCBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGlu
dCBwYWdlWCwgaW50IHBhZ2VZLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIGlu
dCBtb3ZlbWVudFgsIGludCBtb3ZlbWVudFksCiAjZW5kaWYKICAgICAgICAgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9y
dCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFy
Z2V0LCBkb3VibGUgZm9yY2UsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRpY0NsaWNrVHlwZSwgRGF0
YVRyYW5zZmVyKiA9IG51bGxwdHIsIGJvb2wgaXNTaW11bGF0ZWQgPSBmYWxzZSk7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwg
aW50IGRldGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgaW50IGRl
dGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCk7CiAKLSAgICBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+
IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBz
Y3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRL
ZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1
bnNpZ25lZCBzaG9ydCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUs
IEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0KTsKKyAgICBzdGF0aWMgUmVmPE1vdXNlRXZlbnQ+
IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQgZGV0YWlsLCBpbnQgc2Ny
ZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9y
dCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIHVuc2lnbmVkIHNob3J0IHN5bnRoZXRp
Y0NsaWNrVHlwZSwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQpOwogCiAgICAgc3RhdGljIFJl
ZjxNb3VzZUV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TW91c2VFdmVudCk7IH0KIApAQCAtNDksOCArNTAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IH5Nb3VzZUV2ZW50KCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRNb3VzZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgRE9NV2luZG93KiwgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQg
Y2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hp
ZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBFdmVudFRhcmdldCog
cmVsYXRlZFRhcmdldCk7Ci0gICAgdm9pZCBpbml0TW91c2VFdmVudFF1aXJrKEpTQzo6RXhlY1N0
YXRlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFpbCwg
aW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksIGJvb2wg
Y3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWdu
ZWQgc2hvcnQgYnV0dG9uLCBKU0M6OkpTVmFsdWUgcmVsYXRlZFRhcmdldCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbml0TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50
IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVu
dFksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtl
eSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCk7Cisg
ICAgdm9pZCBpbml0TW91c2VFdmVudFF1aXJrKEpTQzo6RXhlY1N0YXRlJiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQgZGV0YWlsLCBpbnQgc2Ny
ZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCB1bnNpZ25lZCBzaG9y
dCBidXR0b24sIEpTQzo6SlNWYWx1ZSByZWxhdGVkVGFyZ2V0KTsKIAogICAgIHVuc2lnbmVkIHNo
b3J0IGJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9uOyB9CiAgICAgdW5zaWduZWQgc2hv
cnQgYnV0dG9ucygpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9uczsgfQpAQCAtNzAsNyArNzEsNyBA
QCBwdWJsaWM6CiAgICAgaW50IHdoaWNoKCkgY29uc3QgZmluYWw7CiAKIHByb3RlY3RlZDoKLSAg
ICBNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIERPTVdpbmRvdyosCisgICAg
TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+
JiYsCiAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwg
Y29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CiAgICAgICAgIGNvbnN0IEludFBvaW50JiBtb3ZlbWVudERlbHRhLApAQCAtNzgsNyArNzksNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hp
ZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9y
dCBidXR0b25zLAogICAgICAgICBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCwgZG91YmxlIGZv
cmNlLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIERhdGFUcmFuc2ZlciosIGJv
b2wgaXNTaW11bGF0ZWQpOwogCi0gICAgTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyosCisgICAgTW91
c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKICAgICAgICAgaW50IGRldGFpbCwgY29u
c3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgY2xpZW50TG9jYXRp
b24sCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJv
b2wgbWV0YUtleSwKICAgICAgICAgdW5zaWduZWQgc2hvcnQgYnV0dG9uLCB1bnNpZ25lZCBzaG9y
dCBidXR0b25zLCB1bnNpZ25lZCBzaG9ydCBzeW50aGV0aWNDbGlja1R5cGUsIEV2ZW50VGFyZ2V0
KiByZWxhdGVkVGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2
ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmlkbAppbmRleCAwYmUwZjg4
ZGQzNWQ3Y2RmYjhkMzU0MmRhZGUxNmUzMjk0ZmRjODNhLi42MGM0NDY2NjcxZjA2MTlmZWUwOWQw
ZjAxOTNmOWE0MWY2YjNlODEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VF
dmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaWRsCkBAIC00Myw3
ICs0Myw3IEBACiAgICAgLy8gRklYTUU6IHJlbGF0ZWRUYXJnZXQgc2hvdWxkIGJlIG9mIHR5cGUg
RXZlbnRUYXJnZXQ/IGJ1dCB3ZSBuZWVkIHRvIHVzZSBhbnkgdG8gc3VwcG9ydCBhIHF1aXJrIGZv
ciBpQWQgUHJvZHVjZXIgKHJkYXI6Ly9wcm9ibGVtLzMwNjQwMTAxKS4KICAgICBbQ2FsbFdpdGg9
U2NyaXB0U3RhdGUmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1wbGVtZW50ZWRBcz1pbml0TW91
c2VFdmVudFF1aXJrXSB2b2lkIGluaXRNb3VzZUV2ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0eXBl
ID0gInVuZGVmaW5lZCIsCiAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlID0gZmFs
c2UsIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZhbHNlLAotICAgICAgICBvcHRpb25h
bCBET01XaW5kb3c/IHZpZXcgPSBudWxsLCBvcHRpb25hbCBsb25nIGRldGFpbCA9IDAsCisgICAg
ICAgIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwgb3B0aW9uYWwgbG9uZyBkZXRh
aWwgPSAwLAogICAgICAgICBvcHRpb25hbCBsb25nIHNjcmVlblggPSAwLCBvcHRpb25hbCBsb25n
IHNjcmVlblkgPSAwLCBvcHRpb25hbCBsb25nIGNsaWVudFggPSAwLCBvcHRpb25hbCBsb25nIGNs
aWVudFkgPSAwLAogICAgICAgICBvcHRpb25hbCBib29sZWFuIGN0cmxLZXkgPSBmYWxzZSwgb3B0
aW9uYWwgYm9vbGVhbiBhbHRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBzaGlmdEtleSA9
IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIG1ldGFLZXkgPSBmYWxzZSwKICAgICAgICAgb3B0aW9u
YWwgdW5zaWduZWQgc2hvcnQgYnV0dG9uID0gMCwgb3B0aW9uYWwgYW55IHJlbGF0ZWRUYXJnZXQg
PSBudWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCmluZGV4IDg1
MzcxNGQ2YWIxZjAxZThhNWVhY2UwZDBlNDM5NzVlYjNkNTg0OWYuLjgwYTgyNjdkYzIxYmQ4YjNi
ZjUxODMwZmU0YjMwYTQyYTYxMjAxNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
b3VzZVJlbGF0ZWRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRl
ZEV2ZW50LmNwcApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
TW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1l
IHRpbWVzdGFtcCwgRE9NV2luZG93KiBET01XaW5kb3csCitNb3VzZVJlbGF0ZWRFdmVudDo6TW91
c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IEludFBvaW50
JiB3aW5kb3dMb2NhdGlvbiwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFBvaW50JiBtb3ZlbWVudERlbHRhLAog
I2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBib29sIGlzU2ltdWxh
dGVkKQotICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2Fu
Y2VsYWJsZSwgdGltZXN0YW1wLCBET01XaW5kb3csIGRldGFpbCwgY3RybEtleSwgYWx0S2V5LCBz
aGlmdEtleSwgbWV0YUtleSwgZmFsc2UsIGZhbHNlKQorICAgIDogVUlFdmVudFdpdGhLZXlTdGF0
ZShldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGltZXN0YW1wLCBXVEZNb3ZlKHZp
ZXcpLCBkZXRhaWwsIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGZhbHNlLCBm
YWxzZSkKICAgICAsIG1fc2NyZWVuTG9jYXRpb24oc2NyZWVuTG9jYXRpb24pCiAjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKICAgICAsIG1fbW92ZW1lbnREZWx0YShtb3ZlbWVudERlbHRhKQpAQCAt
NjEsNyArNjEsNyBAQCBNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IE1vdXNlUgogdm9pZCBNb3VzZVJlbGF0ZWRF
dmVudDo6aW5pdChib29sIGlzU2ltdWxhdGVkLCBjb25zdCBJbnRQb2ludCYgd2luZG93TG9jYXRp
b24pCiB7CiAgICAgaWYgKCFpc1NpbXVsYXRlZCkgewotICAgICAgICBpZiAoYXV0byogZnJhbWVW
aWV3ID0gZnJhbWVWaWV3RnJvbURPTVdpbmRvdyh2aWV3KCkpKSB7CisgICAgICAgIGlmIChhdXRv
KiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGcm9tV2luZG93UHJveHkodmlldygpKSkgewogICAgICAg
ICAgICAgRmxvYXRQb2ludCBhYnNvbHV0ZVBvaW50ID0gZnJhbWVWaWV3LT53aW5kb3dUb0NvbnRl
bnRzKHdpbmRvd0xvY2F0aW9uKTsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgZG9jdW1lbnRQb2lu
dCA9IGZyYW1lVmlldy0+YWJzb2x1dGVUb0RvY3VtZW50UG9pbnQoYWJzb2x1dGVQb2ludCk7CiAg
ICAgICAgICAgICBtX3BhZ2VMb2NhdGlvbiA9IGZsb29yZWRMYXlvdXRQb2ludChkb2N1bWVudFBv
aW50KTsKQEAgLTgzLDEzICs4MywxMyBAQCB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojppbml0Q29v
cmRpbmF0ZXMoKQogICAgIG1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbiA9IGZhbHNlOwogfQog
Ci1GcmFtZVZpZXcqIE1vdXNlUmVsYXRlZEV2ZW50OjpmcmFtZVZpZXdGcm9tRE9NV2luZG93KERP
TVdpbmRvdyogd2luZG93KQorRnJhbWVWaWV3KiBNb3VzZVJlbGF0ZWRFdmVudDo6ZnJhbWVWaWV3
RnJvbVdpbmRvd1Byb3h5KFdpbmRvd1Byb3h5KiB3aW5kb3dQcm94eSkKIHsKLSAgICBhdXRvKiBm
cmFtZSA9IHdpbmRvdyA/IHdpbmRvdy0+ZnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgaWYgKCFmcmFt
ZSkKKyAgICBpZiAoIXdpbmRvd1Byb3h5IHx8ICFpczxET01XaW5kb3c+KHdpbmRvd1Byb3h5LT53
aW5kb3coKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGZyYW1lLT52
aWV3KCk7CisgICAgYXV0byogZnJhbWUgPSBkb3duY2FzdDxET01XaW5kb3c+KCp3aW5kb3dQcm94
eS0+d2luZG93KCkpLmZyYW1lKCk7CisgICAgcmV0dXJuIGZyYW1lID8gZnJhbWUtPnZpZXcoKSA6
IG51bGxwdHI7CiB9CiAKIExheW91dFBvaW50IE1vdXNlUmVsYXRlZEV2ZW50OjpwYWdlUG9pbnRU
b0NsaWVudFBvaW50KExheW91dFBvaW50IHBhZ2VQb2ludCwgRnJhbWVWaWV3KiBmcmFtZVZpZXcp
CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3JkaW5h
dGVzKGNvbnN0IExheW91dFBvaW50JiBjbGllbnRMb2NhdGlvbikKICAgICAvLyBTZXQgdXAgaW5p
dGlhbCB2YWx1ZXMgZm9yIGNvb3JkaW5hdGVzLgogICAgIC8vIENvcnJlY3QgdmFsdWVzIGFyZSBj
b21wdXRlZCBsYXppbHksIHNlZSBjb21wdXRlUmVsYXRpdmVQb3NpdGlvbi4KICAgICBGbG9hdFNp
emUgZG9jdW1lbnRUb0NsaWVudE9mZnNldDsKLSAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJh
bWVWaWV3RnJvbURPTVdpbmRvdyh2aWV3KCkpKQorICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBm
cmFtZVZpZXdGcm9tV2luZG93UHJveHkodmlldygpKSkKICAgICAgICAgZG9jdW1lbnRUb0NsaWVu
dE9mZnNldCA9IGZyYW1lVmlldy0+ZG9jdW1lbnRUb0NsaWVudE9mZnNldCgpOwogCiAgICAgbV9j
bGllbnRMb2NhdGlvbiA9IGNsaWVudExvY2F0aW9uOwpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQg
TW91c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGluYXRlcyhjb25zdCBMYXlvdXRQb2ludCYgY2xp
ZW50TG9jYXRpb24pCiAKIGZsb2F0IE1vdXNlUmVsYXRlZEV2ZW50Ojpkb2N1bWVudFRvQWJzb2x1
dGVTY2FsZUZhY3RvcigpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1l
Vmlld0Zyb21ET01XaW5kb3codmlldygpKSkKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJh
bWVWaWV3RnJvbVdpbmRvd1Byb3h5KHZpZXcoKSkpCiAgICAgICAgIHJldHVybiBmcmFtZVZpZXct
PmRvY3VtZW50VG9BYnNvbHV0ZVNjYWxlRmFjdG9yKCk7CiAKICAgICByZXR1cm4gMTsKQEAgLTEz
Niw3ICsxMzYsNyBAQCBmbG9hdCBNb3VzZVJlbGF0ZWRFdmVudDo6ZG9jdW1lbnRUb0Fic29sdXRl
U2NhbGVGYWN0b3IoKSBjb25zdAogCiB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUGFn
ZUxvY2F0aW9uKCkKIHsKLSAgICBtX2Fic29sdXRlTG9jYXRpb24gPSBwYWdlUG9pbnRUb0Fic29s
dXRlUG9pbnQobV9wYWdlTG9jYXRpb24sIGZyYW1lVmlld0Zyb21ET01XaW5kb3codmlldygpKSk7
CisgICAgbV9hYnNvbHV0ZUxvY2F0aW9uID0gcGFnZVBvaW50VG9BYnNvbHV0ZVBvaW50KG1fcGFn
ZUxvY2F0aW9uLCBmcmFtZVZpZXdGcm9tV2luZG93UHJveHkodmlldygpKSk7CiB9CiAKIHZvaWQg
TW91c2VSZWxhdGVkRXZlbnQ6OnJlY2VpdmVkVGFyZ2V0KCkKQEAgLTE4NSw3ICsxODUsNyBAQCB2
b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUmVsYXRpdmVQb3NpdGlvbigpCiAgICAgCiBG
bG9hdFBvaW50IE1vdXNlUmVsYXRlZEV2ZW50Ojpsb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRl
cygpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zyb21ET01X
aW5kb3codmlldygpKSkKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZnJhbWVWaWV3RnJvbVdp
bmRvd1Byb3h5KHZpZXcoKSkpCiAgICAgICAgIHJldHVybiBmcmFtZVZpZXctPmNvbnRlbnRzVG9S
b290Vmlldyhyb3VuZGVkSW50UG9pbnQobV9hYnNvbHV0ZUxvY2F0aW9uKSk7CiAKICAgICByZXR1
cm4gbV9hYnNvbHV0ZUxvY2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01v
dXNlUmVsYXRlZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQu
aAppbmRleCAwZDgzYzM2MDlmNzFlYWZlZjIxNzFhOWNkMGQ0MzFhZTZkODU0ZjhiLi5hZDRlNWQw
YzM1NmY1NDFlMDgyZTExYTI2YTJkMGNjMTE1ZmQ1OWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91
c2VSZWxhdGVkRXZlbnQuaApAQCAtNjcsMTQgKzY3LDE0IEBAIHB1YmxpYzoKICAgICAvLyB1c2Fi
bGUgd2l0aCBSZW5kZXJPYmplY3Q6OmFic29sdXRlVG9Mb2NhbCkuCiAgICAgY29uc3QgTGF5b3V0
UG9pbnQmIGFic29sdXRlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Fic29sdXRlTG9jYXRp
b247IH0KICAgICAKLSAgICBzdGF0aWMgRnJhbWVWaWV3KiBmcmFtZVZpZXdGcm9tRE9NV2luZG93
KERPTVdpbmRvdyopOworICAgIHN0YXRpYyBGcmFtZVZpZXcqIGZyYW1lVmlld0Zyb21XaW5kb3dQ
cm94eShXaW5kb3dQcm94eSopOwogCiAgICAgc3RhdGljIExheW91dFBvaW50IHBhZ2VQb2ludFRv
Q2xpZW50UG9pbnQoTGF5b3V0UG9pbnQgcGFnZVBvaW50LCBGcmFtZVZpZXcqKTsKICAgICBzdGF0
aWMgTGF5b3V0UG9pbnQgcGFnZVBvaW50VG9BYnNvbHV0ZVBvaW50KExheW91dFBvaW50IHBhZ2VQ
b2ludCwgRnJhbWVWaWV3Kik7CiAKIHByb3RlY3RlZDoKICAgICBNb3VzZVJlbGF0ZWRFdmVudCgp
ID0gZGVmYXVsdDsKLSAgICBNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0
YW1wLCBET01XaW5kb3cqLAorICAgIE1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgTW9ub3RvbmljVGltZSB0
aW1lc3RhbXAsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwKICAgICAgICAgaW50IGRldGFpbCwgY29u
c3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93TG9jYXRp
b24sCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICAgICAgY29uc3QgSW50UG9pbnQmIG1v
dmVtZW50RGVsdGEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNGIxZTg3MjU3OTUzM2ZiZjc4NzEyZmQ2
ZDIzZDJjODE1YjAzZWIzOC4uYmJhNjc4YTJhNzFiNjRlMjViMmYwMDc3ZGY5NjU0Y2RkYjFmYzYw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNvbXBvc2Vk
VHJlZUFuY2VzdG9ySXRlcmF0b3IuaCIKICNpbmNsdWRlICJDb250YWluZXJOb2RlQWxnb3JpdGht
cy5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIkRPTVdp
bmRvdy5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50VHlw
ZS5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgpAQCAtMjM1MCw3ICsyMzUxLDcgQEAg
dm9pZCBOb2RlOjpkaXNwYXRjaERPTUFjdGl2YXRlRXZlbnQoRXZlbnQmIHVuZGVybHlpbmdDbGlj
a0V2ZW50KQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKFNjcmlwdERp
c2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkOjppc1NjcmlwdEFsbG93ZWQoKSk7CiAgICAgaW50
IGRldGFpbCA9IGlzPFVJRXZlbnQ+KHVuZGVybHlpbmdDbGlja0V2ZW50KSA/IGRvd25jYXN0PFVJ
RXZlbnQ+KHVuZGVybHlpbmdDbGlja0V2ZW50KS5kZXRhaWwoKSA6IDA7Ci0gICAgYXV0byBldmVu
dCA9IFVJRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NQWN0aXZhdGVFdmVudCwgdHJ1ZSwg
dHJ1ZSwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCBkZXRhaWwpOworICAgIGF1dG8gZXZlbnQg
PSBVSUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTUFjdGl2YXRlRXZlbnQsIHRydWUsIHRy
dWUsIGRvY3VtZW50KCkud2luZG93UHJveHkoKSwgZGV0YWlsKTsKICAgICBldmVudC0+c2V0VW5k
ZXJseWluZ0V2ZW50KCZ1bmRlcmx5aW5nQ2xpY2tFdmVudCk7CiAgICAgZGlzcGF0Y2hTY29wZWRF
dmVudChldmVudCk7CiAgICAgaWYgKGV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRlZENsaWNrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaW11bGF0ZWRDbGljay5jcHAKaW5kZXggZTBmNGUzNTJlY2ExOGRjZGM4NTkyNDkyZWM1
MDg0MjkyOGFiNjU3NC4uZjQ2NDM5YWE2MGY2NmYxYTYyMjRhZmU3Y2E2OWFkOWU4NDJkMDZkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRlZENsaWNrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2ltdWxhdGVkQ2xpY2suY3BwCkBAIC0zNywxNCArMzcsMTQgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaW11bGF0ZWRNb3VzZUV2ZW50IGZpbmFsIDog
cHVibGljIE1vdXNlRXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2ltdWxhdGVkTW91
c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cq
IHZpZXcsIFJlZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRhcmdldCwg
U2ltdWxhdGVkQ2xpY2tTb3VyY2Ugc291cmNlKQorICAgIHN0YXRpYyBSZWY8U2ltdWxhdGVkTW91
c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYgdmlldywgUmVmUHRyPEV2ZW50PiYmIHVuZGVybHlpbmdFdmVudCwgRWxlbWVu
dCYgdGFyZ2V0LCBTaW11bGF0ZWRDbGlja1NvdXJjZSBzb3VyY2UpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW11bGF0ZWRNb3VzZUV2ZW50KGV2ZW50VHlwZSwgdmlldywg
V1RGTW92ZSh1bmRlcmx5aW5nRXZlbnQpLCB0YXJnZXQsIHNvdXJjZSkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaW11bGF0ZWRNb3VzZUV2ZW50KGV2ZW50VHlwZSwgV1RGTW92ZSh2
aWV3KSwgV1RGTW92ZSh1bmRlcmx5aW5nRXZlbnQpLCB0YXJnZXQsIHNvdXJjZSkpOwogICAgIH0K
IAogcHJpdmF0ZToKLSAgICBTaW11bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBET01XaW5kb3cqIHZpZXcsIFJlZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZl
bnQsIEVsZW1lbnQmIHRhcmdldCwgU2ltdWxhdGVkQ2xpY2tTb3VyY2Ugc291cmNlKQotICAgICAg
ICA6IE1vdXNlRXZlbnQoZXZlbnRUeXBlLCB0cnVlLCB0cnVlLCB1bmRlcmx5aW5nRXZlbnQgPyB1
bmRlcmx5aW5nRXZlbnQtPnRpbWVTdGFtcCgpIDogTW9ub3RvbmljVGltZTo6bm93KCksIHZpZXcs
IDAsIHsgfSwgeyB9LAorICAgIFNpbXVsYXRlZE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBSZWZQdHI8RXZlbnQ+JiYg
dW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQsIFNpbXVsYXRlZENsaWNrU291cmNlIHNv
dXJjZSkKKyAgICAgICAgOiBNb3VzZUV2ZW50KGV2ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwgdW5kZXJs
eWluZ0V2ZW50ID8gdW5kZXJseWluZ0V2ZW50LT50aW1lU3RhbXAoKSA6IE1vbm90b25pY1RpbWU6
Om5vdygpLCBXVEZNb3ZlKHZpZXcpLCAwLCB7IH0sIHsgfSwKICNpZiBFTkFCTEUoUE9JTlRFUl9M
T0NLKQogICAgICAgICAgICAgeyB9LAogI2VuZGlmCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6
CiAKIHN0YXRpYyB2b2lkIHNpbXVsYXRlTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgRWxlbWVudCYgZWxlbWVudCwgRXZlbnQqIHVuZGVybHlpbmdFdmVudCwgU2ltdWxh
dGVkQ2xpY2tTb3VyY2Ugc291cmNlKQogewotICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChTaW11
bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBlbGVtZW50LmRvY3VtZW50KCkuZGVm
YXVsdFZpZXcoKSwgdW5kZXJseWluZ0V2ZW50LCBlbGVtZW50LCBzb3VyY2UpKTsKKyAgICBlbGVt
ZW50LmRpc3BhdGNoRXZlbnQoU2ltdWxhdGVkTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwg
ZWxlbWVudC5kb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIHVuZGVybHlpbmdFdmVudCwgZWxlbWVu
dCwgc291cmNlKSk7CiB9CiAKIHZvaWQgc2ltdWxhdGVDbGljayhFbGVtZW50JiBlbGVtZW50LCBF
dmVudCogdW5kZXJseWluZ0V2ZW50LCBTaW11bGF0ZWRDbGlja01vdXNlRXZlbnRPcHRpb25zIG1v
dXNlRXZlbnRPcHRpb25zLCBTaW11bGF0ZWRDbGlja1Zpc3VhbE9wdGlvbnMgdmlzdWFsT3B0aW9u
cywgU2ltdWxhdGVkQ2xpY2tTb3VyY2UgY3JlYXRpb25PcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2
ZW50LmNwcAppbmRleCBiZDAyNGVhNTVmNmJhODRlMzJjOTA0NDZmY2JmODI4MjA0ZDJjMzBjLi5i
MDk0NDkzYzFmODU1ODQ5ODg5M2MyY2I3YzBkMDc0NmI2YWI1YmEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4
dEV2ZW50LmNwcApAQCAtMzgsMjkgKzM4LDI5IEBAIFJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6
Y3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudCk7
CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlKERPTVdpbmRvdyogdmlldywg
Y29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRUeXBlKQorUmVmPFRl
eHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNv
bnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlIGlucHV0VHlwZSkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQodmlldywgZGF0YSwgaW5wdXRUeXBlKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KFdURk1vdmUodmlldyksIGRhdGEsIGlu
cHV0VHlwZSkpOwogfQogCi1SZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWlu
VGV4dFBhc3RlKERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBib29sIHNob3Vs
ZFNtYXJ0UmVwbGFjZSkKK1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5U
ZXh0UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwg
Ym9vbCBzaG91bGRTbWFydFJlcGxhY2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4
dEV2ZW50KHZpZXcsIGRhdGEsIDAsIHNob3VsZFNtYXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9j
a3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVGV4dEV2ZW50KFdURk1vdmUodmlldyksIGRhdGEsIDAsIHNob3VsZFNtYXJ0UmVwbGFj
ZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKSk7CiB9
CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShET01X
aW5kb3cqIHZpZXcsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIGRhdGEsIGJvb2wgc2hvdWxk
U21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxp
bmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKK1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3Jl
YXRlRm9yRnJhZ21lbnRQYXN0ZShSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hv
dWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRs
aW5nKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudCh2aWV3LCBlbXB0eVN0
cmluZygpLCBXVEZNb3ZlKGRhdGEpLCBzaG91bGRTbWFydFJlcGxhY2UsIHNob3VsZE1hdGNoU3R5
bGUsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBU
ZXh0RXZlbnQoV1RGTW92ZSh2aWV3KSwgZW1wdHlTdHJpbmcoKSwgV1RGTW92ZShkYXRhKSwgc2hv
dWxkU21hcnRSZXBsYWNlLCBzaG91bGRNYXRjaFN0eWxlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5n
KSk7CiB9CiAKLVJlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChET01XaW5k
b3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6
Y3JlYXRlRm9yRHJvcChSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBk
YXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudCh2aWV3LCBkYXRhLCBU
ZXh0RXZlbnRJbnB1dERyb3ApKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0RXZlbnQo
V1RGTW92ZSh2aWV3KSwgZGF0YSwgVGV4dEV2ZW50SW5wdXREcm9wKSk7CiB9CiAKLVJlZjxUZXh0
RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRGljdGF0aW9uKERPTVdpbmRvdyogdmlldywgY29u
c3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0
YXRpb25BbHRlcm5hdGl2ZXMpCitSZWY8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRp
Y3RhdGlvbihSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBj
b25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dEV2ZW50KHZpZXcsIGRhdGEsIGRpY3Rh
dGlvbkFsdGVybmF0aXZlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRFdmVudChX
VEZNb3ZlKHZpZXcpLCBkYXRhLCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpKTsKIH0KIAogVGV4dEV2
ZW50OjpUZXh0RXZlbnQoKQpAQCAtNzEsOCArNzEsOCBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudCgp
CiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3Ry
aW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRUeXBlKQotICAgIDogVUlFdmVudChl
dmVudE5hbWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIHZpZXcsIDApCitUZXh0RXZl
bnQ6OlRleHRFdmVudChSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgY29uc3QgU3RyaW5nJiBk
YXRhLCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRUeXBlKQorICAgIDogVUlFdmVudChldmVudE5h
bWVzKCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIFdURk1vdmUodmlldyksIDApCiAgICAg
LCBtX2lucHV0VHlwZShpbnB1dFR5cGUpCiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fc2hv
dWxkU21hcnRSZXBsYWNlKGZhbHNlKQpAQCAtODEsOCArODEsOCBAQCBUZXh0RXZlbnQ6OlRleHRF
dmVudChET01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRU
eXBlIGlucAogewogfQogCi1UZXh0RXZlbnQ6OlRleHRFdmVudChET01XaW5kb3cqIHZpZXcsIGNv
bnN0IFN0cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdt
ZW50LCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0eWxlLCBNYWls
QmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpCi0gICAgOiBVSUV2ZW50
KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCkKK1RleHRF
dmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcm
IGRhdGEsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBz
aG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVI
YW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQorICAgIDogVUlFdmVudChldmVudE5hbWVz
KCkudGV4dElucHV0RXZlbnQsIHRydWUsIHRydWUsIFdURk1vdmUodmlldyksIDApCiAgICAgLCBt
X2lucHV0VHlwZShUZXh0RXZlbnRJbnB1dFBhc3RlKQogICAgICwgbV9kYXRhKGRhdGEpCiAgICAg
LCBtX3Bhc3RpbmdGcmFnbWVudChXVEZNb3ZlKHBhc3RpbmdGcmFnbWVudCkpCkBAIC05Miw4ICs5
Miw4IEBAIFRleHRFdmVudDo6VGV4dEV2ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5n
JiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVuCiB7CiB9CiAKLVRleHRFdmVudDo6VGV4dEV2
ZW50KERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGlj
dGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpCi0gICAgOiBVSUV2ZW50
KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCkKK1RleHRF
dmVudDo6VGV4dEV2ZW50KFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBjb25zdCBTdHJpbmcm
IGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVy
bmF0aXZlcykKKyAgICA6IFVJRXZlbnQoZXZlbnROYW1lcygpLnRleHRJbnB1dEV2ZW50LCB0cnVl
LCB0cnVlLCBXVEZNb3ZlKHZpZXcpLCAwKQogICAgICwgbV9pbnB1dFR5cGUoVGV4dEV2ZW50SW5w
dXREaWN0YXRpb24pCiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBs
YWNlKGZhbHNlKQpAQCAtMTA1LDEyICsxMDUsMTIgQEAgVGV4dEV2ZW50OjpUZXh0RXZlbnQoRE9N
V2luZG93KiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb24K
IAogVGV4dEV2ZW50Ojp+VGV4dEV2ZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFRleHRFdmVudDo6
aW5pdFRleHRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgY29uc3QgU3RyaW5nJiBkYXRhKQordm9p
ZCBUZXh0RXZlbnQ6OmluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywg
Y29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIHZpZXcsIDApOworICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJs
ZSwgV1RGTW92ZSh2aWV3KSwgMCk7CiAKICAgICBtX2lucHV0VHlwZSA9IFRleHRFdmVudElucHV0
S2V5Ym9hcmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaAppbmRleCAyOWViMjZkMGUwNzRiNTRkMzQ2
MzU2MDQyODBkMTJhNjk4OGFmOGRhLi4wYWUyYWM4NjNmYjgxYmJiMjg2Mzg1MTY1YjZiMTI1MWQy
ZGZiMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oCkBAIC0zOCwxNiArMzgsMTYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgVGV4dEV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZl
bnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZShE
T01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSA9IFRleHRF
dmVudElucHV0S2V5Ym9hcmQpOworICAgICAgICBzdGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRl
KFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBkYXRhLCBUZXh0RXZlbnRJbnB1
dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJkKTsKICAgICAgICAgc3RhdGljIFJlZjxUZXh0
RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50
PiBjcmVhdGVGb3JQbGFpblRleHRQYXN0ZShET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEs
IGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKLSAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZlbnQ+
IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoRE9NV2luZG93KiwgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+JiYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHls
ZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7Ci0gICAgICAgIHN0YXRpYyBSZWY8VGV4dEV2ZW50
PiBjcmVhdGVGb3JEcm9wKERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYgZGF0YSk7Ci0gICAgICAg
IHN0YXRpYyBSZWY8VGV4dEV2ZW50PiBjcmVhdGVGb3JEaWN0YXRpb24oRE9NV2luZG93KiwgY29u
c3QgU3RyaW5nJiBkYXRhLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0
YXRpb25BbHRlcm5hdGl2ZXMpOworICAgICAgICBzdGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRl
Rm9yUGxhaW5UZXh0UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRh
dGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKKyAgICAgICAgc3RhdGljIFJlZjxUZXh0RXZl
bnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4mJiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBz
aG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKKyAgICAgICAgc3RhdGlj
IFJlZjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRyb3AoUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25z
dCBTdHJpbmcmIGRhdGEpOworICAgICAgICBzdGF0aWMgUmVmPFRleHRFdmVudD4gY3JlYXRlRm9y
RGljdGF0aW9uKFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25z
dCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwog
CiAgICAgICAgIHZpcnR1YWwgflRleHRFdmVudCgpOwogICAgIAotICAgICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEp
OworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRUZXh0RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8V2lu
ZG93UHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAgICAgCiAgICAgICAgIFN0cmluZyBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKQEAgLTcxLDkgKzcxLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIFRleHRFdmVudCgpOwogCi0gICAg
ICAgIFRleHRFdmVudChET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElu
cHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOwotICAgICAgICBUZXh0RXZlbnQoRE9N
V2luZG93KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiwg
Ym9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2Nr
cXVvdGVIYW5kbGluZyk7Ci0gICAgICAgIFRleHRFdmVudChET01XaW5kb3cqLCBjb25zdCBTdHJp
bmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFs
dGVybmF0aXZlcyk7CisgICAgICAgIFRleHRFdmVudChSZWZQdHI8V2luZG93UHJveHk+JiYsIGNv
bnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXli
b2FyZCk7CisgICAgICAgIFRleHRFdmVudChSZWZQdHI8V2luZG93UHJveHk+JiYsIGNvbnN0IFN0
cmluZyYgZGF0YSwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYsIGJvb2wgc2hvdWxkU21hcnRS
ZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOwor
ICAgICAgICBUZXh0RXZlbnQoUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGRh
dGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0
aXZlcyk7CiAKICAgICAgICAgYm9vbCBpc1RleHRFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0RXZlbnQuaWRsCmluZGV4IDM2NDA2NWZhODJkNDE4OTljMGM1MjMyNTBjMmYy
Nzk5NzcwZDNlMGUuLmNlOGIzMGFjYjNjNzFmZmRmODI4YjIxODEwNjVhYWExZjhhMTI2MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UZXh0RXZlbnQuaWRsCkBAIC0zMiw3ICszMiw3IEBAIGludGVyZmFjZSBUZXh0
RXZlbnQgOiBVSUV2ZW50IHsKICAgICB2b2lkIGluaXRUZXh0RXZlbnQob3B0aW9uYWwgRE9NU3Ry
aW5nIHR5cGVBcmcgPSAidW5kZWZpbmVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9u
YWwgYm9vbGVhbiBjYW5CdWJibGVBcmcgPSBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAg
b3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlQXJnID0gZmFsc2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlld0FyZyA9IG51bGwsCisgICAgICAgICAgICAg
ICAgICAgICAgIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3QXJnID0gbnVsbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3RyaW5nIGRhdGFBcmcgPSAidW5kZWZpbmVkIik7
CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKaW5kZXggNjFjMDhmMjFkYTM4YmFhN2Ex
MTBmMjJkY2E2YTU3YmU5M2I2ODNlNy4uMDAyMzdjZGFkNTY4Mzc5NTJkOTNhOTdkZTI2YTk5ZTll
YWZjMzkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcApAQCAtMzgsOSArMzgsOSBAQCBU
b3VjaEV2ZW50OjpUb3VjaEV2ZW50KCkgPSBkZWZhdWx0OwogCiBUb3VjaEV2ZW50OjpUb3VjaEV2
ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91Y2hMaXN0KiB0YXJnZXRUb3VjaGVzLAogICAgICAg
ICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAot
ICAgICAgICBET01XaW5kb3cqIHZpZXcsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBh
Z2VYLCBpbnQgcGFnZVksCisgICAgICAgIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQg
c2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogICAgICAgICBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCi0gICAg
OiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCBNb25vdG9uaWNUaW1lOjpub3co
KSwgdmlldywgMCwgSW50UG9pbnQoc2NyZWVuWCwgc2NyZWVuWSksCisgICAgOiBNb3VzZVJlbGF0
ZWRFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgV1RGTW92ZSh2
aWV3KSwgMCwgSW50UG9pbnQoc2NyZWVuWCwgc2NyZWVuWSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICBJbnRQb2ludChwYWdlWCwgcGFnZVkpLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAg
ICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludCgwLCAwKSwKQEAgLTY0LDEzICs2NCwxMyBA
QCBUb3VjaEV2ZW50Ojp+VG91Y2hFdmVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBUb3VjaEV2ZW50
Ojppbml0VG91Y2hFdmVudChUb3VjaExpc3QqIHRvdWNoZXMsIFRvdWNoTGlzdCogdGFyZ2V0VG91
Y2hlcywKICAgICAgICAgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCAKLSAgICAgICAgRE9NV2luZG93KiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNj
cmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwKKyAgICAgICAgUmVmUHRyPFdpbmRvd1By
b3h5PiYmIHZpZXcsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBj
bGllbnRZLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXkpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGluaXRVSUV2ZW50KHR5cGUsIHRydWUsIHRydWUsIHZpZXcsIDApOwor
ICAgIGluaXRVSUV2ZW50KHR5cGUsIHRydWUsIHRydWUsIFdURk1vdmUodmlldyksIDApOwogCiAg
ICAgbV90b3VjaGVzID0gdG91Y2hlczsKICAgICBtX3RhcmdldFRvdWNoZXMgPSB0YXJnZXRUb3Vj
aGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKaW5kZXggZDMzOWMwYjcyYjEzZDQ1NWE1ZTAzODY2
ZTU1NzIwY2NmNmJmMWVkYi4uODVmYTE2MWYyMTk2ZDNmMmEwNWQ5YTMxYTExN2IwYTFhZjg2NmY5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCkBAIC00MSwxMiArNDEsMTIgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIFJlZjxUb3VjaEV2ZW50PiBjcmVhdGUoVG91Y2hMaXN0KiB0b3VjaGVzLCAK
ICAgICAgICAgICAgIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywgVG91Y2hMaXN0KiBjaGFuZ2Vk
VG91Y2hlcywgCi0gICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIERPTVdpbmRv
dyogdmlldywKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFdp
bmRvd1Byb3h5PiYmIHZpZXcsCiAgICAgICAgICAgICBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblks
IGludCBwYWdlWCwgaW50IHBhZ2VZLAogICAgICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFs
dEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVG91Y2hFdmVudCh0b3VjaGVzLCB0YXJnZXRUb3VjaGVzLCBjaGFuZ2Vk
VG91Y2hlcywKLSAgICAgICAgICAgICAgICB0eXBlLCB2aWV3LCBzY3JlZW5YLCBzY3JlZW5ZLCBw
YWdlWCwgcGFnZVksCisgICAgICAgICAgICAgICAgdHlwZSwgV1RGTW92ZSh2aWV3KSwgc2NyZWVu
WCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLAogICAgICAgICAgICAgICAgIGN0cmxLZXksIGFsdEtl
eSwgc2hpZnRLZXksIG1ldGFLZXkpKTsKICAgICB9CiAgICAgc3RhdGljIFJlZjxUb3VjaEV2ZW50
PiBjcmVhdGVGb3JCaW5kaW5ncygpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgaW5pdFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRv
dWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIAotICAgICAgICAgICAgRE9NV2luZG93KiwgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLAorICAgICAgICAgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiYmLCBpbnQgc2NyZWVu
WCwgaW50IHNjcmVlblksCiAgICAgICAgICAgICBpbnQgY2xpZW50WCwgaW50IGNsaWVudFksCiAg
ICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29s
IG1ldGFLZXkpOwogCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgVG91Y2hFdmVudCgp
OwogICAgIFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRv
dWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsCi0gICAgICAgICAgICBET01XaW5kb3cqLCBpbnQgc2NyZWVuWCwgaW50
IHNjcmVlblksIGludCBwYWdlWCwKKyAgICAgICAgICAgIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwg
aW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsCiAgICAgICAgICAgICBpbnQgcGFn
ZVksCiAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXkpOwogICAgIFRvdWNoRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgY29u
c3QgSW5pdCYsIElzVHJ1c3RlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91
Y2hFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5pZGwKaW5kZXggODEw
NTgzNTdlZDNhYTc3NzRkMjZmYWZhZTE2MDNiMTVkZGUwZDYwYi4uNTRlOTlkYjQ4MzBmMzBkNDYy
NjQyZTMzZDQzOTU2OTNiMTNmMmIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Rv
dWNoRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmlkbApAQCAt
NDAsNyArNDAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgVG91Y2hMaXN0
PyB0YXJnZXRUb3VjaGVzID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFs
IFRvdWNoTGlzdD8gY2hhbmdlZFRvdWNoZXMgPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5kZWZpbmVkIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlldyA9IG51bGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICBvcHRpb25hbCBXaW5kb3dQcm94eT8gdmlldyA9IG51bGwsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBvcHRpb25hbCBsb25nIHNjcmVlblggPSAwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5ZID0gMCwKICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wdGlvbmFsIGxvbmcgY2xpZW50WCA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVUlFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAKaW5kZXgg
YWIyMGVlY2I5YzU4MzFkZWYwMjc5Y2E3OGEwZTdjYzVmYTg1NjIxNy4uMGE2ZjgxYWY1MjM3MTZm
NzU4MTc4ZjBmOTUzNDRjZGM2NTViODAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1VJRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmNwcApAQCAtMzIs
MTYgKzMyLDE2IEBAIFVJRXZlbnQ6OlVJRXZlbnQoKQogewogfQogCi1VSUV2ZW50OjpVSUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBj
YW5jZWxhYmxlQXJnLCBET01XaW5kb3cqIHZpZXdBcmcsIGludCBkZXRhaWxBcmcpCitVSUV2ZW50
OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZUFy
ZywgYm9vbCBjYW5jZWxhYmxlQXJnLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlld0FyZywgaW50
IGRldGFpbEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlQXJnLCBjYW5jZWxh
YmxlQXJnKQotICAgICwgbV92aWV3KHZpZXdBcmcpCisgICAgLCBtX3ZpZXcoV1RGTW92ZSh2aWV3
QXJnKSkKICAgICAsIG1fZGV0YWlsKGRldGFpbEFyZykKIHsKIH0KIAotVUlFdmVudDo6VUlFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wg
Y2FuY2VsYWJsZUFyZywgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIERPTVdpbmRvdyogdmlld0Fy
ZywgaW50IGRldGFpbEFyZykKK1VJRXZlbnQ6OlVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVBcmcsIE1vbm90b25p
Y1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlld0FyZywgaW50IGRldGFp
bEFyZykKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJn
LCB0aW1lc3RhbXApCi0gICAgLCBtX3ZpZXcodmlld0FyZykKKyAgICAsIG1fdmlldyhXVEZNb3Zl
KHZpZXdBcmcpKQogICAgICwgbV9kZXRhaWwoZGV0YWlsQXJnKQogewogfQpAQCAtNTUsNyArNTUs
NyBAQCBVSUV2ZW50OjpVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25z
dCBVSUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIsCiAKIFVJRXZlbnQ6On5VSUV2ZW50KCkgPSBkZWZh
dWx0OwogCi12b2lkIFVJRXZlbnQ6OmluaXRVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZUFyZywgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2FuY2VsYWJsZUFyZywgRE9NV2luZG93KiB2
aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQordm9pZCBVSUV2ZW50Ojppbml0VUlFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGVBcmcsIGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVB
cmcsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3QXJnLCBpbnQgZGV0YWlsQXJnKQogewogICAg
IGlmIChpc0JlaW5nRGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQu
aAppbmRleCBiYWE3MzFmY2Y4MWVlYmFmMjMxNTNkYTUxYmEwYWVhZmQyNDU1ZmFjLi41MGYyZDE3
NzE5OTQyZTQ3M2ZkZWM5YjFhODg0ODYwNTkzY2QxOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVUlFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmgKQEAg
LTIzLDIwICsyMywyMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkRPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiVUlFdmVudEluaXQuaCIKKyNpbmNsdWRl
ICJXaW5kb3dQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBSZW1v
dmUgdGhpcyB3aGVuIG5vIG9uZSBpcyBkZXBlbmRpbmcgb24gaXQgYW55bW9yZS4KLXR5cGVkZWYg
RE9NV2luZG93IEFic3RyYWN0VmlldzsKK3R5cGVkZWYgV2luZG93UHJveHkgQWJzdHJhY3RWaWV3
OwogCiBjbGFzcyBVSUV2ZW50IDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCkKKyAgICBz
dGF0aWMgUmVmPFVJRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBp
bnQgZGV0YWlsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVUlFdmVudCh0
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RG
TW92ZSh2aWV3KSwgZGV0YWlsKSk7CiAgICAgfQogICAgIHN0YXRpYyBSZWY8VUlFdmVudD4gY3Jl
YXRlRm9yQmluZGluZ3MoKQogICAgIHsKQEAgLTQ4LDkgKzQ4LDkgQEAgcHVibGljOgogICAgIH0K
ICAgICB2aXJ0dWFsIH5VSUV2ZW50KCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRV
SUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpbml0VUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQcm94eT4mJiwgaW50IGRldGFpbCk7CiAKLSAg
ICBET01XaW5kb3cqIHZpZXcoKSBjb25zdCB7IHJldHVybiBtX3ZpZXcuZ2V0KCk7IH0KKyAgICBX
aW5kb3dQcm94eSogdmlldygpIGNvbnN0IHsgcmV0dXJuIG1fdmlldy5nZXQoKTsgfQogICAgIGlu
dCBkZXRhaWwoKSBjb25zdCB7IHJldHVybiBtX2RldGFpbDsgfQogCiAgICAgRXZlbnRJbnRlcmZh
Y2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKQEAgLTY1LDE0ICs2NSwxNCBAQCBw
dWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVSUV2ZW50KCk7Ci0gICAgVUlFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdp
bmRvdyosIGludCBkZXRhaWwpOwotICAgIFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBNb25vdG9uaWNUaW1lIHRpbWVzdGFt
cCwgRE9NV2luZG93KiwgaW50IGRldGFpbCk7CisgICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxXaW5kb3dQ
cm94eT4mJiwgaW50IGRldGFpbCk7CisgICAgVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0
YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBkZXRhaWwpOwogICAgIFVJRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVUlFdmVudEluaXQmLCBJc1RydXN0ZWQpOwogCiBwcml2
YXRlOgogICAgIGJvb2wgaXNVSUV2ZW50KCkgY29uc3QgZmluYWw7CiAKLSAgICBSZWZQdHI8RE9N
V2luZG93PiBtX3ZpZXc7CisgICAgUmVmUHRyPFdpbmRvd1Byb3h5PiBtX3ZpZXc7CiAgICAgaW50
IG1fZGV0YWlsOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQu
aWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaWRsCmluZGV4IDg3YjM5MTUyODMwMzE5
N2UzNmM2NGMxZTcwOGZmYjYwY2JhZDk1MDMuLjZhMzVjNTdhMzg3NGJjOGVjNjNkNmQ5MjRkNDI4
YjJiNTgxMDBmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5pZGwKQEAgLTIwLDExICsyMCwxMSBAQAog
WwogICAgIENvbnN0cnVjdG9yKERPTVN0cmluZyB0eXBlLCBvcHRpb25hbCBVSUV2ZW50SW5pdCBl
dmVudEluaXREaWN0KQogXSBpbnRlcmZhY2UgVUlFdmVudCA6IEV2ZW50IHsKLSAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NV2luZG93IHZpZXc7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRv
d1Byb3h5IHZpZXc7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgZGV0YWlsOwogICAgIAog
ICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1
ZSBpcyB3cm9uZy4KLSAgICB2b2lkIGluaXRVSUV2ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0eXBl
ID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIGJvb2xlYW4gY2FuQnViYmxlID0gZmFsc2UsIG9wdGlv
bmFsIGJvb2xlYW4gY2FuY2VsYWJsZSA9IGZhbHNlLCBvcHRpb25hbCBET01XaW5kb3c/IHZpZXcg
PSBudWxsLCBvcHRpb25hbCBsb25nIGRldGFpbCA9IDApOworICAgIHZvaWQgaW5pdFVJRXZlbnQo
b3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgYm9vbGVhbiBj
YW5CdWJibGUgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlID0gZmFsc2UsIG9w
dGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3ID0gbnVsbCwgb3B0aW9uYWwgbG9uZyBkZXRhaWwgPSAw
KTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxheWVyWDsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgbG9uZyBsYXllclk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVUlF
dmVudEluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5oCmluZGV4IDAzMTZi
YzA2ZjU2OGU1MzkxNmRmNjk2ZjQxNDQ1YmE5ZmMzMWZmMzYuLmUxMTI4YTc2ZGU1ODYwMTYyZmE5
NzZkY2RjODI3MTcwZDhmMmYzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2
ZW50SW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5oCkBAIC0yNSwx
NCArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJET01XaW5kb3cuaCIKICNp
bmNsdWRlICJFdmVudEluaXQuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgVUlFdmVudElu
aXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKLSAgICBSZWZQdHI8RE9NV2luZG93PiB2aWV3OworICAg
IFJlZlB0cjxXaW5kb3dQcm94eT4gdmlldzsKICAgICBpbnQgZGV0YWlsIHsgMCB9OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRJbml0LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9VSUV2ZW50SW5pdC5pZGwKaW5kZXggMGQ3ZWI4ZWZjMWM1MzdhOTA1MTE3YjYx
MjExMWFkMDFlYjFlMGFhMi4uM2NjYmJlZDYwNzU1ZjZmMjE2NTJmNWJhNjFlNmYzODI0MGMxN2Zm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRJbml0LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudEluaXQuaWRsCkBAIC0yNCw2ICsyNCw2IEBACiAgKi8K
IAogZGljdGlvbmFyeSBVSUV2ZW50SW5pdCA6IEV2ZW50SW5pdCB7Ci0gICAgRE9NV2luZG93PyB2
aWV3ID0gbnVsbDsKKyAgICBXaW5kb3dQcm94eT8gdmlldyA9IG51bGw7CiAgICAgbG9uZyBkZXRh
aWwgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtl
eVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5oCmluZGV4
IDBhOGU0MDMxMjQ4ZDZmNzI2NTQ0MmU1YmY4MDAxMmJhMzBjY2NkZWIuLjA4NWEwMzE3ZWM4ZGNl
M2E2MGZlMjZhZmE1YTE2MmVhMmE5YTA1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9VSUV2ZW50V2l0aEtleVN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRX
aXRoS2V5U3RhdGUuaApAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAg
VUlFdmVudFdpdGhLZXlTdGF0ZSgpID0gZGVmYXVsdDsKIAotICAgIFVJRXZlbnRXaXRoS2V5U3Rh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwsIGJvb2wgY3RybEtleSwgYm9vbCBhbHRL
ZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSkKLSAgICAgICAgOiBVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKQorICAgIFVJRXZlbnRXaXRoS2V5
U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldywgaW50IGRldGFpbCwgYm9vbCBjdHJs
S2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQorICAgICAgICA6
IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZpZXcpLCBkZXRh
aWwpCiAgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCiAgICAgICAgICwgbV9hbHRLZXkoYWx0
S2V5KQogICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkpCkBAIC00OSw5ICs0OSw5IEBAIHBy
b3RlY3RlZDoKICAgICB7CiAgICAgfQogCi0gICAgVUlFdmVudFdpdGhLZXlTdGF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIE1vbm90
b25pY1RpbWUgdGltZXN0YW1wLCBET01XaW5kb3cqIHZpZXcsCisgICAgVUlFdmVudFdpdGhLZXlT
dGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmll
dywKICAgICAgICAgaW50IGRldGFpbCwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBz
aGlmdEtleSwgYm9vbCBtZXRhS2V5LCBib29sIGFsdEdyYXBoS2V5LCBib29sIGNhcHNMb2NrS2V5
KQotICAgICAgICAgICAgOiBVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdGlt
ZXN0YW1wLCB2aWV3LCBkZXRhaWwpCisgICAgICAgICAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnVi
YmxlLCBjYW5jZWxhYmxlLCB0aW1lc3RhbXAsIFdURk1vdmUodmlldyksIGRldGFpbCkKICAgICAg
ICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCiAgICAgICAgICAgICAsIG1fYWx0S2V5KGFsdEtl
eSkKICAgICAgICAgICAgICwgbV9zaGlmdEtleShzaGlmdEtleSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2
ZW50LmNwcAppbmRleCBkMmI4ZmI3MmQ5MTk4ZTE0YmY3NThjYTNhZmJjMWVjMjQ3ZjcxY2JkLi41
MzdjYjE5M2M4MTNmNTI3YWM1MzNjOTMwODkwODdiZGIzNjhiZTljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1do
ZWVsRXZlbnQuY3BwCkBAIC00Nyw4ICs0Nyw4IEBAIGlubGluZSBXaGVlbEV2ZW50OjpXaGVlbEV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsCiB7
CiB9CiAKLWlubGluZSBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgZXZlbnQsIERPTVdpbmRvdyogdmlldykKLSAgICA6IE1vdXNlRXZlbnQoZXZlbnROYW1l
cygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUsIGV2ZW50LnRpbWVzdGFtcCgpLmFwcHJveGltYXRl
TW9ub3RvbmljVGltZSgpLCB2aWV3LCAwLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5w
b3NpdGlvbigpCitpbmxpbmUgV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIGV2ZW50LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKKyAgICA6IE1vdXNl
RXZlbnQoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIHRydWUsIHRydWUsIGV2ZW50LnRpbWVzdGFt
cCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCBXVEZNb3ZlKHZpZXcpLCAwLCBldmVudC5n
bG9iYWxQb3NpdGlvbigpLCBldmVudC5wb3NpdGlvbigpCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9D
SykKICAgICAgICAgLCB7IH0KICNlbmRpZgpAQCAtNjEsOSArNjEsOSBAQCBpbmxpbmUgV2hlZWxF
dmVudDo6V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBET01XaW5k
b3cqIHZpZXcpCiB7CiB9CiAKLVJlZjxXaGVlbEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB2aWV3KQorUmVmPFdoZWVs
RXZlbnQ+IFdoZWVsRXZlbnQ6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50
LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXaGVlbEV2ZW50KGV2ZW50LCB2aWV3KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2hl
ZWxFdmVudChldmVudCwgV1RGTW92ZSh2aWV3KSkpOwogfQogCiBSZWY8V2hlZWxFdmVudD4gV2hl
ZWxFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoKQpAQCAtNzYsMTIgKzc2LDEyIEBAIFJlZjxXaGVl
bEV2ZW50PiBXaGVlbEV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25z
dCBJbml0JiBpbml0aWFsCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2hlZWxFdmVudCh0eXBl
LCBpbml0aWFsaXplciwgaXNUcnVzdGVkKSk7CiB9CiAKLXZvaWQgV2hlZWxFdmVudDo6aW5pdFdl
YktpdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwgaW50IHJhd0RlbHRhWSwgRE9NV2luZG93KiB2
aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29s
IGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCit2b2lk
IFdoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGludCByYXdE
ZWx0YVksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVl
blksIGludCBwYWdlWCwgaW50IHBhZ2VZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29s
IHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7CiAgICAgaWYgKGlzQmVpbmdEaXNwYXRjaGVkKCkp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpbml0TW91c2VFdmVudChldmVudE5hbWVzKCku
d2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgs
IHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCAwLCBudWxscHRyKTsK
KyAgICBpbml0TW91c2VFdmVudChldmVudE5hbWVzKCkud2hlZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwg
V1RGTW92ZSh2aWV3KSwgMCwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCBjdHJsS2V5
LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCAwLCBudWxscHRyKTsKIAogICAgIC8vIE5vcm1h
bGl6ZSB0byAxMjAgbXVsdGlwbGUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBJRS4KICAgICBtX3do
ZWVsRGVsdGEgPSB7IHJhd0RlbHRhWCAqIFRpY2tNdWx0aXBsaWVyLCByYXdEZWx0YVkgKiBUaWNr
TXVsdGlwbGllciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgKaW5kZXggNGQzNGIzMGQ2ZGVkNWVm
MjgxNWE4MTM3ZTRjMjk3ZTY0MWFkZTZkYS4uMTBiNjJlMDVjNzAxNTYwNzZmZmU1Y2YxMjczOTdl
YzEzMjNkZDJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICAgICAgRE9NX0RFTFRBX1BBR0UKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxX
aGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgRE9NV2luZG93Kik7
CisgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmKTsKICAgICBzdGF0aWMgUmVmPFdoZWVsRXZlbnQ+
IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBzdHJ1Y3QgSW5pdCA6IE1vdXNlRXZlbnRJbml0
IHsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxXaGVlbEV2ZW50
PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiwgSXNUcnVzdGVk
ID0gSXNUcnVzdGVkOjpObyk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRXZWJLaXRX
aGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIERPTVdpbmRvdyosIGludCBz
Y3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChpbnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVs
dGFZLCBSZWZQdHI8V2luZG93UHJveHk+JiYsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50
IHBhZ2VYLCBpbnQgcGFnZVksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRL
ZXksIGJvb2wgbWV0YUtleSk7CiAKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtV2hl
ZWxFdmVudD4mIHVuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV91bmRl
cmx5aW5nUGxhdGZvcm1FdmVudDsgfQogCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgV2hlZWxFdmVudCgpOwogICAgIFdoZWVsRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiwgY29uc3QgSW5pdCYsIElzVHJ1c3RlZCk7Ci0gICAgV2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmLCBET01XaW5kb3cqKTsKKyAgICBXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYsIFJlZlB0cjxXaW5kb3dQcm94eT4mJik7CiAKICAgICBFdmVudEludGVyZmFj
ZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vV2hlZWxFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5p
ZGwKaW5kZXggOTNjNTNhNGJmYjJkYWY0YmQ0NDI3Mzg2NmE5MmNlZDRhMWMxYzM4Ni4uYjI4MWRh
MWM2NjA0NGE4YTkzZDYwZDkwZWRkZjUxZDE0YzZjOTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1doZWVsRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2
ZW50LmlkbApAQCAtMzksNyArMzksNyBAQAogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gd2Via2l0RGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlOwogCi0gICAgdm9pZCBpbml0V2Vi
S2l0V2hlZWxFdmVudChvcHRpb25hbCBsb25nIHdoZWVsRGVsdGFYID0gMCwgb3B0aW9uYWwgbG9u
ZyB3aGVlbERlbHRhWSA9IDAsIG9wdGlvbmFsIERPTVdpbmRvdz8gdmlldyA9IG51bGwsCisgICAg
dm9pZCBpbml0V2ViS2l0V2hlZWxFdmVudChvcHRpb25hbCBsb25nIHdoZWVsRGVsdGFYID0gMCwg
b3B0aW9uYWwgbG9uZyB3aGVlbERlbHRhWSA9IDAsIG9wdGlvbmFsIFdpbmRvd1Byb3h5PyB2aWV3
ID0gbnVsbCwKICAgICAgICAgb3B0aW9uYWwgbG9uZyBzY3JlZW5YID0gMCwgb3B0aW9uYWwgbG9u
ZyBzY3JlZW5ZID0gMCwgb3B0aW9uYWwgbG9uZyBjbGllbnRYID0gMCwgb3B0aW9uYWwgbG9uZyBj
bGllbnRZID0gMCwKICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBjdHJsS2V5ID0gZmFsc2UsIG9w
dGlvbmFsIGJvb2xlYW4gYWx0S2V5ID0gZmFsc2UsCiAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4g
c2hpZnRLZXkgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBtZXRhS2V5ID0gZmFsc2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5j
cHAKaW5kZXggZDE0NzI0Mjc3MjM3NDY4ZDRmNjFmZmUzM2M3NWZlNDZhODE5MjNkYy4uZDQ1M2Y2
NDQwYWQ0NmViZTMwYTBjYmE5ZWFlMjIyNzQxYTVhYmY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCkBAIC02MzIsNyAr
NjMyLDcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjppbnNlcnREaWN0YXRlZFRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWMKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3
ID0gbV9mcmFtZS52aWV3KCkpCiAgICAgICAgIHZpZXctPmRpc2FibGVMYXllckZsdXNoVGhyb3R0
bGluZ1RlbXBvcmFyaWx5Rm9ySW50ZXJhY3Rpb24oKTsKIAotICAgIFJlZjxUZXh0RXZlbnQ+IGV2
ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24obV9mcmFtZS5kb2N1bWVudCgpLT5k
b21XaW5kb3coKSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICBhdXRvIGV2ZW50
ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24oJm1fZnJhbWUud2luZG93UHJveHkoKSwg
dGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2
ZW50KHRyaWdnZXJpbmdFdmVudCk7CiAKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGNiOGI2YjhiYmFjODViYzBlMzJkZWQy
ZWYzMzljMjQxMDI5MGQzMTkuLjZjNjY5MDc4MDhkN2IzMjFhYTllNjE4NDE4OTYwNmFkZjQ5ZTdj
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0
aWMgYm9vbCBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBpbnB1dAogICAgIGlmICghZWxlbWVudC5kb2N1bWVudCgpLnNldHRpbmdz
KCkuaW5wdXRFdmVudHNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgYXV0
byBldmVudCA9IElucHV0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYmVmb3JlaW5wdXRFdmVu
dCwgaW5wdXRUeXBlLCB0cnVlLCBjYW5jZWxhYmxlLCBlbGVtZW50LmRvY3VtZW50KCkuZGVmYXVs
dFZpZXcoKSwgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRSYW5nZXMsIDApOwor
ICAgIGF1dG8gZXZlbnQgPSBJbnB1dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJlZm9yZWlu
cHV0RXZlbnQsIGlucHV0VHlwZSwgdHJ1ZSwgY2FuY2VsYWJsZSwgZWxlbWVudC5kb2N1bWVudCgp
LndpbmRvd1Byb3h5KCksIGRhdGEsIFdURk1vdmUoZGF0YVRyYW5zZmVyKSwgdGFyZ2V0UmFuZ2Vz
LCAwKTsKICAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogICAgIHJldHVybiAhZXZl
bnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdGF0aWMgdm9p
ZCBkaXNwYXRjaElucHV0RXZlbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbnB1dFR5cGUsCiAgICAgICAgIC8vIGJ1dCBUeXBpbmdDb21tYW5kcyBhcmUgc3BlY2lhbCBp
biB0aGF0IGV4aXN0aW5nIFR5cGluZ0NvbW1hbmRzIHRoYXQgYXJlIGFwcGxpZWQgYWdhaW4gZmly
ZSBpbnB1dCBldmVudHMgKmZyb20gd2l0aGluKiB0aGUgc2NvcGUgYnkgY2FsbGluZyB0eXBpbmdB
ZGRlZFRvT3BlbkNvbW1hbmQuCiAgICAgICAgIC8vIEluc3RlYWQsIFR5cGluZ0NvbW1hbmRzIHNo
b3VsZCBhbHdheXMgZGlzcGF0Y2ggZXZlbnRzIHN5bmNocm9ub3VzbHkgYWZ0ZXIgdGhlIGVuZCBv
ZiB0aGUgc2NvcGVkIHF1ZXVlIGluIENvbXBvc2l0ZUVkaXRDb21tYW5kOjphcHBseS4gVG8gd29y
ayBhcm91bmQgdGhpcyBmb3IgdGhlCiAgICAgICAgIC8vIHRpbWUgYmVpbmcsIGp1c3QgcmV2ZXJ0
IGJhY2sgdG8gY2FsbGluZyBkaXNwYXRjaFNjb3BlZEV2ZW50LgotICAgICAgICBlbGVtZW50LmRp
c3BhdGNoU2NvcGVkRXZlbnQoSW5wdXRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5pbnB1dEV2
ZW50LCBpbnB1dFR5cGUsIHRydWUsIGZhbHNlLCBlbGVtZW50LmRvY3VtZW50KCkuZGVmYXVsdFZp
ZXcoKSwgZGF0YSwgV1RGTW92ZShkYXRhVHJhbnNmZXIpLCB0YXJnZXRSYW5nZXMsIDApKTsKKyAg
ICAgICAgZWxlbWVudC5kaXNwYXRjaFNjb3BlZEV2ZW50KElucHV0RXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuaW5wdXRFdmVudCwgaW5wdXRUeXBlLCB0cnVlLCBmYWxzZSwgZWxlbWVudC5kb2N1
bWVudCgpLndpbmRvd1Byb3h5KCksIGRhdGEsIFdURk1vdmUoZGF0YVRyYW5zZmVyKSwgdGFyZ2V0
UmFuZ2VzLCAwKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGVsZW1lbnQuZGlzcGF0Y2hJbnB1dEV2
ZW50KCk7CiB9CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlQXNQbGFpblRl
eHQoY29uc3QgU3RyaW5nJiBwYXN0aW5nVGV4dCwgYm9vbCBzbWFydFJlcGxhY2UpCiAgICAgRWxl
bWVudCogdGFyZ2V0ID0gZmluZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlvbigpOwogICAgIGlmICgh
dGFyZ2V0KQogICAgICAgICByZXR1cm47Ci0gICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRleHRF
dmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoZG9jdW1lbnQoKS5kb21XaW5kb3coKSwgcGFz
dGluZ1RleHQsIHNtYXJ0UmVwbGFjZSkpOworICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0
RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKGRvY3VtZW50KCkud2luZG93UHJveHkoKSwg
cGFzdGluZ1RleHQsIHNtYXJ0UmVwbGFjZSkpOwogfQogCiB2b2lkIEVkaXRvcjo6cGFzdGVBc0Zy
YWdtZW50KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzbWFy
dFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyByZXNwZWN0
c01haWxCbG9ja3F1b3RlKQpAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZUFz
RnJhZ21lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgcGFzdGluZ0ZyYWdtZW50LCBib29sIHNt
YXJ0CiAgICAgRWxlbWVudCogdGFyZ2V0ID0gZmluZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlvbigp
OwogICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm47Ci0gICAgdGFyZ2V0LT5kaXNwYXRj
aEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0ZShkb2N1bWVudCgpLmRvbVdp
bmRvdygpLCBXVEZNb3ZlKHBhc3RpbmdGcmFnbWVudCksIHNtYXJ0UmVwbGFjZSwgbWF0Y2hTdHls
ZSwgcmVzcGVjdHNNYWlsQmxvY2txdW90ZSkpOworICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChU
ZXh0RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUoZG9jdW1lbnQoKS53aW5kb3dQcm94eSgp
LCBXVEZNb3ZlKHBhc3RpbmdGcmFnbWVudCksIHNtYXJ0UmVwbGFjZSwgbWF0Y2hTdHlsZSwgcmVz
cGVjdHNNYWlsQmxvY2txdW90ZSkpOwogfQogCiB2b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4
dEJ5cGFzc2luZ0RIVE1MKCkKQEAgLTE4NDgsNyArMTg0OCw3IEBAIHZvaWQgRWRpdG9yOjpzZXRD
b21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFNldENvbXBvc2l0aW9uTW9kZSBtb2RlKQog
ICAgIGluc2VydFRleHRGb3JDb25maXJtZWRDb21wb3NpdGlvbih0ZXh0KTsKIAogICAgIGlmIChh
dXRvKiB0YXJnZXQgPSBkb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCkpCi0gICAgICAgIHRhcmdl
dC0+ZGlzcGF0Y2hFdmVudChDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNv
bXBvc2l0aW9uZW5kRXZlbnQsIGRvY3VtZW50KCkuZG9tV2luZG93KCksIHRleHQpKTsKKyAgICAg
ICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuY29tcG9zaXRpb25lbmRFdmVudCwgZG9jdW1lbnQoKS53aW5kb3dQcm94eSgpLCB0ZXh0
KSk7CiAKICAgICBpZiAobW9kZSA9PSBDYW5jZWxDb21wb3NpdGlvbikgewogICAgICAgICAvLyBB
biBvcGVuIHR5cGluZyBjb21tYW5kIHRoYXQgZGlzYWdyZWVzIGFib3V0IGN1cnJlbnQgc2VsZWN0
aW9uIHdvdWxkIGNhdXNlIGlzc3VlcyB3aXRoIHR5cGluZyBsYXRlciBvbi4KQEAgLTE5MDgsMTEg
KzE5MDgsMTEgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4
dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4KICAgICAgICAgICAgIC8vIFdlIHNo
b3VsZCBzZW5kIGEgY29tcG9zaXRpb25zdGFydCBldmVudCBvbmx5IHdoZW4gdGhlIGdpdmVuIHRl
eHQgaXMgbm90IGVtcHR5IGJlY2F1c2UgdGhpcwogICAgICAgICAgICAgLy8gZnVuY3Rpb24gZG9l
c24ndCBjcmVhdGUgYSBjb21wb3NpdGlvbiBub2RlIHdoZW4gdGhlIHRleHQgaXMgZW1wdHkuCiAg
ICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgdGFyZ2V0
LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29t
cG9zaXRpb25zdGFydEV2ZW50LCBkb2N1bWVudCgpLmRvbVdpbmRvdygpLCBvcmlnaW5hbFRleHQp
KTsKLSAgICAgICAgICAgICAgICBldmVudCA9IENvbXBvc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuY29tcG9zaXRpb251cGRhdGVFdmVudCwgZG9jdW1lbnQoKS5kb21XaW5kb3coKSwg
dGV4dCk7CisgICAgICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KENvbXBvc2l0aW9u
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcG9zaXRpb25zdGFydEV2ZW50LCBkb2N1bWVu
dCgpLndpbmRvd1Byb3h5KCksIG9yaWdpbmFsVGV4dCkpOworICAgICAgICAgICAgICAgIGV2ZW50
ID0gQ29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnVwZGF0
ZUV2ZW50LCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIHRleHQpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKCF0ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGV2ZW50ID0g
Q29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnVwZGF0ZUV2
ZW50LCBkb2N1bWVudCgpLmRvbVdpbmRvdygpLCB0ZXh0KTsKKyAgICAgICAgICAgIGV2ZW50ID0g
Q29tcG9zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wb3NpdGlvbnVwZGF0ZUV2
ZW50LCBkb2N1bWVudCgpLndpbmRvd1Byb3h5KCksIHRleHQpOwogCiAgICAgICAgIGlmIChldmVu
dCkKICAgICAgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudCgqZXZlbnQpOwpAQCAtMTkyMyw3
ICsxOTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4
dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4KICAgICBpZiAodGV4dC5pc0VtcHR5
KCkpIHsKICAgICAgICAgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlU2VsZWN0aW9uKGRvY3VtZW50KCks
IFR5cGluZ0NvbW1hbmQ6OlByZXZlbnRTcGVsbENoZWNraW5nLCBUeXBpbmdDb21tYW5kOjpUZXh0
Q29tcG9zaXRpb25QZW5kaW5nKTsKICAgICAgICAgaWYgKHRhcmdldCkKLSAgICAgICAgICAgIHRh
cmdldC0+ZGlzcGF0Y2hFdmVudChDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmNvbXBvc2l0aW9uZW5kRXZlbnQsIGRvY3VtZW50KCkuZG9tV2luZG93KCksIHRleHQpKTsKKyAg
ICAgICAgICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChDb21wb3NpdGlvbkV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmNvbXBvc2l0aW9uZW5kRXZlbnQsIGRvY3VtZW50KCkud2luZG93UHJveHko
KSwgdGV4dCkpOwogICAgIH0KIAogICAgIG1fY29tcG9zaXRpb25Ob2RlID0gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAppbmRleCBhM2Q3ZDk3NzBjZWJkMDYyOGNhN2Jl
YzI0Y2ZhNjc1ZDNiOTdiYjU0Li45ZDU4MWNlZGZhODQxZTBhZGYxYWFjNDMyNTkxYzhiNmYyZjc2
NTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBAIC0xMTQsNyArMTE0LDcg
QEAgUmVmPERvY3VtZW50UGFyc2VyPiBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiB9CiAK
IC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2RvbS5odG1sI2RvbS1k
b2N1bWVudC1uYW1lZGl0ZW0KLXN0ZDo6b3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8RE9NV2luZG93
PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+Pj4gSFRNTERvY3VtZW50
OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorc3RkOjpvcHRpb25hbDxWYXJp
YW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xs
ZWN0aW9uPj4+IEhUTUxEb2N1bWVudDo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkKIHsKICAgICBpZiAobmFtZS5pc051bGwoKSB8fCAhaGFzRG9jdW1lbnROYW1lZEl0ZW0oKm5h
bWUuaW1wbCgpKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEyMiwxNiArMTIy
LDE2IEBAIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8RE9NV2luZG93PiwgUmVmUHRyPEVs
ZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+CiAgICAgaWYgKFVOTElLRUxZKGRvY3VtZW50
TmFtZWRJdGVtQ29udGFpbnNNdWx0aXBsZUVsZW1lbnRzKCpuYW1lLmltcGwoKSkpKSB7CiAgICAg
ICAgIGF1dG8gY29sbGVjdGlvbiA9IGRvY3VtZW50TmFtZWRJdGVtcyhuYW1lKTsKICAgICAgICAg
QVNTRVJUKGNvbGxlY3Rpb24tPmxlbmd0aCgpID4gMSk7Ci0gICAgICAgIHJldHVybiBWYXJpYW50
PFJlZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlv
bj4+IHsgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiB7IFdURk1vdmUoY29sbGVjdGlvbikgfSB9Owor
ICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8RWxlbWVu
dD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiB7IFdU
Rk1vdmUoY29sbGVjdGlvbikgfSB9OwogICAgIH0KIAogICAgIGF1dG8mIGVsZW1lbnQgPSAqZG9j
dW1lbnROYW1lZEl0ZW0oKm5hbWUuaW1wbCgpKTsKICAgICBpZiAoVU5MSUtFTFkoaXM8SFRNTElG
cmFtZUVsZW1lbnQ+KGVsZW1lbnQpKSkgewogICAgICAgICBpZiAoYXV0byBkb21XaW5kb3cgPSBt
YWtlUmVmUHRyKGRvd25jYXN0PEhUTUxJRnJhbWVFbGVtZW50PihlbGVtZW50KS5jb250ZW50V2lu
ZG93KCkpKQotICAgICAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJl
ZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBXVEZNb3ZlKGRvbVdpbmRv
dykgfTsKKyAgICAgICAgICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJl
ZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4geyBXVEZNb3ZlKGRvbVdpbmRv
dykgfTsKICAgICB9CiAKLSAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8RE9NV2luZG93PiwgUmVm
UHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+PiB7IFJlZlB0cjxFbGVtZW50PiB7
ICZlbGVtZW50IH0gfTsKKyAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+LCBS
ZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgUmVmUHRyPEVsZW1lbnQ+
IHsgJmVsZW1lbnQgfSB9OwogfQogCiBWZWN0b3I8QXRvbWljU3RyaW5nPiBIVE1MRG9jdW1lbnQ6
OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
LmgKaW5kZXggYTM2Mzk3NDA2ZDM0OWY1NzZmNDg5ZDNhMWY2MDBhZGExYmRkY2ZlMS4uMGIzZDM0
MTRhNGJlZmEwMzM1YzRlMjI5YTU5NTg1ZWIwNWViZDYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
b2N1bWVudC5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBp
bnQgd2lkdGgoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgaGVpZ2h0KCk7CiAgICAgCi0gICAg
c3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8RWxlbWVudD4s
IFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+PiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJik7
CisgICAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxF
bGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IG5hbWVkSXRlbShjb25zdCBBdG9taWNT
dHJpbmcmKTsKICAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVz
KCkgY29uc3Q7CiAKICAgICBFbGVtZW50KiBkb2N1bWVudE5hbWVkSXRlbShjb25zdCBBdG9taWNT
dHJpbmdJbXBsJiBuYW1lKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50TmFtZWRJdGVtLmdldEVs
ZW1lbnRCeURvY3VtZW50TmFtZWRJdGVtKG5hbWUsICp0aGlzKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRG9jdW1lbnQuaWRsCmluZGV4IDEyN2YyNjQ1ZTAzMjJkYzc5ODgxMjgwNGZmNWQ3OTVkYWM4
YTU4MGYuLmE5OTliMDNmNjIyOGIyNWViZDFiN2I5NDM4NmI5OWUzOTViODVmOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEb2N1bWVudC5pZGwKQEAgLTIzLDUgKzIzLDUgQEAKICAgICBOZXdJbXB1
cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMsCiAgICAgT3ZlcnJpZGVCdWlsdGlucywKIF0gaW50
ZXJmYWNlIEhUTUxEb2N1bWVudCA6IERvY3VtZW50IHsgICAgCi0gICAgZ2V0dGVyIChET01XaW5k
b3cgb3IgRWxlbWVudCBvciBIVE1MQ29sbGVjdGlvbikgKERPTVN0cmluZyBuYW1lKTsKKyAgICBn
ZXR0ZXIgKFdpbmRvd1Byb3h5IG9yIEVsZW1lbnQgb3IgSFRNTENvbGxlY3Rpb24pIChET01TdHJp
bmcgbmFtZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVF
bGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwKaW5k
ZXggY2Q2M2EyMTJhZDQzMzE0YzViZTIzMDRkZGU3MDA5N2M3YmY4ODM1My4uZWQ3YzBiNmUyNzcy
OTliNjVjYTIxOGYyMWUxODI2MWU1MTNkZmMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZUVsZW1lbnQuaWRsCkBAIC0yNiw3ICsyNiw3IEBAIGludGVyZmFjZSBIVE1MRnJhbWVFbGVt
ZW50IDogSFRNTEVsZW1lbnQgewogICAgIFtSZWZsZWN0LCBVUkxdIGF0dHJpYnV0ZSBVU1ZTdHJp
bmcgbG9uZ0Rlc2M7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBib29sZWFuIG5vUmVzaXplOwog
ICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50IGNv
bnRlbnREb2N1bWVudDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IGNvbnRlbnRX
aW5kb3c7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IGNvbnRlbnRXaW5kb3c7
CiAKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9N
U3RyaW5nIG1hcmdpbkhlaWdodDsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIFtUcmVhdE51bGxB
cz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIG1hcmdpbldpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCmluZGV4IDU4ODczOTg0N2NiYjA4YzM3MTdj
MTNiZWJkM2FhOTFkOTliYjRjYzUuLmI5YmVmMTc2M2UyNjFkN2M5ODJlMWYwNTU1MDljMTY5ZGY4
NDA2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5j
cHAKQEAgLTk5LDkgKzk5LDkgQEAgRG9jdW1lbnQqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29u
dGVudERvY3VtZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyBtX2NvbnRl
bnRGcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CiB9CiAKLURPTVdpbmRvdyogSFRNTEZyYW1l
T3duZXJFbGVtZW50Ojpjb250ZW50V2luZG93KCkgY29uc3QKK1dpbmRvd1Byb3h5KiBIVE1MRnJh
bWVPd25lckVsZW1lbnQ6OmNvbnRlbnRXaW5kb3coKSBjb25zdAogewotICAgIHJldHVybiBtX2Nv
bnRlbnRGcmFtZSA/IG1fY29udGVudEZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSA6IG51
bGxwdHI7CisgICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8gJm1fY29udGVudEZyYW1lLT53aW5k
b3dQcm94eSgpIDogbnVsbHB0cjsKIH0KIAogdm9pZCBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnNl
dFNhbmRib3hGbGFncyhTYW5kYm94RmxhZ3MgZmxhZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVPd25lckVsZW1lbnQuaAppbmRleCA4NjVlZGRiOTFmNTdlMzQ1YjRiNjg3Zjc2MGU4
MzMyNTQyNWM0ZmMxLi44MGYxODIwMGRmMGQ0YTc0ZDdmMGUzZGJjYTE1MjQ1NjAyMjRhYjM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKQEAgLTM3LDcg
KzM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkhUTUxGcmFtZU93bmVyRWxlbWVudCgpOwog
CiAgICAgRnJhbWUqIGNvbnRlbnRGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEZyYW1l
OyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgRE9NV2luZG93KiBjb250ZW50V2luZG93KCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgV2luZG93UHJveHkqIGNvbnRlbnRXaW5kb3coKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudCogY29udGVudERvY3VtZW50KCkgY29uc3Q7CiAK
ICAgICB2b2lkIHNldENvbnRlbnRGcmFtZShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKaW5kZXggMjg1NjQyNDk1MGEzNDljOWI3Mjk1MDNjNWY0
ZjEyMWE4ZWM0YjJiNy4uNWQyMzdkNDgyNmM3MmY4ODdiN2RiMmZiNTFkNmU5Nzg2NTY3OWE5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCkBAIC0yMzEs
MTUgKzIzMSwxMyBAQCB2b2lkIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0
b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lcgogICAgIH0KIH0KIAotRE9NV2lu
ZG93KiBIVE1MRnJhbWVTZXRFbGVtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lKQorV2luZG93UHJveHkqIEhUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpCiB7CiAgICAgYXV0byBmcmFtZUVsZW1lbnQgPSBtYWtlUmVmUHRy
KGNoaWxkcmVuKCktPm5hbWVkSXRlbShuYW1lKSk7CiAgICAgaWYgKCFpczxIVE1MRnJhbWVFbGVt
ZW50PihmcmFtZUVsZW1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmIChh
dXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihkb3duY2FzdDxIVE1MRnJhbWVFbGVtZW50PihmcmFt
ZUVsZW1lbnQuZ2V0KCkpLT5jb250ZW50RG9jdW1lbnQoKSkpCi0gICAgICAgIHJldHVybiBkb2N1
bWVudC0+ZG9tV2luZG93KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGRvd25j
YXN0PEhUTUxGcmFtZUVsZW1lbnQ+KCpmcmFtZUVsZW1lbnQpLmNvbnRlbnRXaW5kb3coKTsKIH0K
IAogVmVjdG9yPEF0b21pY1N0cmluZz4gSFRNTEZyYW1lU2V0RWxlbWVudDo6c3VwcG9ydGVkUHJv
cGVydHlOYW1lcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZVNldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5oCmluZGV4IGQxZjM3OWI3MzVjYjc3ZjVlNWFkMmRlYzRlYmYxNDQwYzdlZWEzMzIuLmMzYzY4
YjU3YmY5NzdlN2FjZWE5MmZmM2FlYzA5NjQ5NmY3MTIyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmUHRyPEhUTUxGcmFtZVNldEVsZW1lbnQ+IGZpbmRDb250YWluaW5nKEVsZW1lbnQq
IGRlc2NlbmRhbnQpOwogICAgIAogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHN1cHBvcnRlZFBy
b3BlcnR5TmFtZXMoKSBjb25zdDsKLSAgICBET01XaW5kb3cqIG5hbWVkSXRlbShjb25zdCBBdG9t
aWNTdHJpbmcmKTsKKyAgICBXaW5kb3dQcm94eSogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmlu
ZyYpOwogCiBwcml2YXRlOgogICAgIEhUTUxGcmFtZVNldEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZVNldEVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVt
ZW50LmlkbAppbmRleCAzMjUwYjk0OTBlZGI4YmIxOGY0N2I5ODJjYmI3ZjZiNDQwOGQzMTI1Li42
OTQyMTczZTc0NDA5MjQ5YzIwNWIwYjNjNTI2MjllMmFjYzQ2OTRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwKQEAgLTMzLDcgKzMzLDcgQEAgaW50ZXJm
YWNlIEhUTUxGcmFtZVNldEVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAKICAgICAvLyBOb24tc3Rh
bmRhcmQgbmFtZWQgZ2V0dGVyCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGluIHRoZSBzdGFu
ZGFyZCwgY2FuIHdlIHJlbW92ZSB0aGlzPwotICAgIGdldHRlciBET01XaW5kb3cgKERPTVN0cmlu
ZyBuYW1lKTsKKyAgICBnZXR0ZXIgV2luZG93UHJveHkgKERPTVN0cmluZyBuYW1lKTsKIH07CiAK
IEhUTUxGcmFtZVNldEVsZW1lbnQgaW1wbGVtZW50cyBXaW5kb3dFdmVudEhhbmRsZXJzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAppbmRleCAzZTNiZGNjMTEwNDE4
OGE3OGRkYmE4ZTI3NjQzNGU0ZTY2ZTY5MGJjLi5jMTYzOTIyZWU0MjBlNzVjMDRkZDEyODE5NGI1
MzVmMzgzYzk1ZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50Lmlk
bApAQCAtMzgsNyArMzgsNyBAQCBpbnRlcmZhY2UgSFRNTElGcmFtZUVsZW1lbnQgOiBIVE1MRWxl
bWVudCB7CiAKICAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
b2N1bWVudCBjb250ZW50RG9jdW1lbnQ7CiAKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2lu
ZG93IGNvbnRlbnRXaW5kb3c7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5IGNv
bnRlbnRXaW5kb3c7CiAKICAgICBbQ2hlY2tTZWN1cml0eUZvck5vZGUsIE1heVRocm93RXhjZXB0
aW9uXSBEb2N1bWVudCBnZXRTVkdEb2N1bWVudCgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuY3BwCmluZGV4IGQxNTEyNzNhMzU5NDkzZTFiNmM1MzhmMGYzZDkzMTY4ODAzNjRh
MTcuLjg1YzEzZmY3ZjAyMGFhOWFjMmM2ZTRkZjE3MjQ2ZDQ0MTE5YzVhNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNh
Y2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
LmgiCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIK
ICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGIwMjNhNGUyZWYyODQzMDM3YmU1ZDA4YmYyYTRm
ZTM4MzFkNWZkOGYuLjNlMmE5MTY2ZjJjODAxYWU1NTY2M2JjY2IxYjQ5MGFlMDlmYWYxYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogCiBjbGFzcyBQb3N0TWVzc2FnZVRpbWVyIDogcHVibGljIFRpbWVy
QmFzZSB7CiBwdWJsaWM6Ci0gICAgUG9zdE1lc3NhZ2VUaW1lcihET01XaW5kb3cmIHdpbmRvdywg
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9y
aWdpbiwgRE9NV2luZG93JiBzb3VyY2UsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0YXJnZXRP
cmlnaW4sIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgc3RhY2tUcmFjZSkKKyAgICBQb3N0TWVz
c2FnZVRpbWVyKERPTVdpbmRvdyYgd2luZG93LCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBSZWZQdHI8V2luZG93UHJveHk+JiYg
c291cmNlLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgdGFyZ2V0T3JpZ2luLCBSZWZQdHI8U2Ny
aXB0Q2FsbFN0YWNrPiYmIHN0YWNrVHJhY2UpCiAgICAgICAgIDogbV93aW5kb3cod2luZG93KQog
ICAgICAgICAsIG1fbWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKQogICAgICAgICAsIG1fb3JpZ2lu
KHNvdXJjZU9yaWdpbikKQEAgLTE2MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAKICAgICBSZWY8TWVz
c2FnZUV2ZW50PiBldmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIE1lc3NhZ2VFdmVudDo6Y3JlYXRlKE1lc3NhZ2VQb3J0OjplbnRhbmds
ZVBvcnRzKGNvbnRleHQsIFdURk1vdmUobV9tZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKSwgbV9t
ZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgbV9vcmlnaW4sIHsgfSwgTWVzc2FnZUV2
ZW50U291cmNlKFJlZlB0cjxET01XaW5kb3c+KFdURk1vdmUobV9zb3VyY2UpKSkpOworICAgICAg
ICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMo
Y29udGV4dCwgV1RGTW92ZShtX21lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpLCBtX21lc3NhZ2Uu
bWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBtX29yaWdpbiwgeyB9LCBtX3NvdXJjZSA/IHN0ZDo6
bWFrZV9vcHRpb25hbChNZXNzYWdlRXZlbnRTb3VyY2UoV1RGTW92ZShtX3NvdXJjZSkpKSA6IHN0
ZDo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgU2VjdXJpdHlPcmlnaW4qIHRhcmdldE9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0T3JpZ2luLmdldCgpOyB9CkBAIC0xODAsNyArMTgwLDcg
QEAgcHJpdmF0ZToKICAgICBSZWY8RE9NV2luZG93PiBtX3dpbmRvdzsKICAgICBNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyBtX21lc3NhZ2U7CiAgICAgU3RyaW5nIG1fb3JpZ2luOwotICAgIFJlZjxE
T01XaW5kb3c+IG1fc291cmNlOworICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gbV9zb3VyY2U7CiAg
ICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX3RhcmdldE9yaWdpbjsKICAgICBSZWZQdHI8U2Ny
aXB0Q2FsbFN0YWNrPiBtX3N0YWNrVHJhY2U7CiAgICAgUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+
IG1fdXNlckdlc3R1cmVUb0ZvcndhcmQ7CkBAIC05NjAsNyArOTYwLDggQEAgRXhjZXB0aW9uT3I8
dm9pZD4gRE9NV2luZG93Ojpwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIERPTVdp
bmRvdyYgaW5jdW0KICAgICBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlIHsgbWVzc2Fn
ZURhdGEucmVsZWFzZVJldHVyblZhbHVlKCksIGRpc2VudGFuZ2xlZFBvcnRzLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpIH07CiAKICAgICAvLyBTY2hlZHVsZSB0aGUgbWVzc2FnZS4KLSAgICBhdXRvKiB0
aW1lciA9IG5ldyBQb3N0TWVzc2FnZVRpbWVyKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3Vy
Y2VPcmlnaW4sIGluY3VtYmVudFdpbmRvdywgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHN0YWNr
VHJhY2UpKTsKKyAgICBSZWZQdHI8V2luZG93UHJveHk+IGluY3VtYmVudFdpbmRvd1Byb3h5ID0g
aW5jdW1iZW50V2luZG93LmZyYW1lKCkgPyAmaW5jdW1iZW50V2luZG93LmZyYW1lKCktPndpbmRv
d1Byb3h5KCkgOiBudWxscHRyOworICAgIGF1dG8qIHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGlt
ZXIoKnRoaXMsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgV1RGTW92ZShpbmN1bWJl
bnRXaW5kb3dQcm94eSksIFdURk1vdmUodGFyZ2V0KSwgV1RGTW92ZShzdGFja1RyYWNlKSk7CiAg
ICAgdGltZXItPnN0YXJ0T25lU2hvdCgwX3MpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRQb3N0TWVzc2FnZSgqbV9mcmFtZSwgKnRpbWVyLCBzdGF0ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDkxNzRhZmQ1MzIxNmMxMTJjNGI1ZTBkNTc1
ODdjODZkMWZjOWM1YTEuLjM3ZjhmMDZiNGY2MzQxNWMzZTYzZjY3MmI1MTE0ZjU3NzM2ZjdhZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC01MDgsNyArNTA4LDcg
QEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6ZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcihGcmFtZSog
aW5uZXJGcmFtZSwgY29uc3QgRHJhZ0RhdGEKICAgICBTdHJpbmcgdGV4dCA9IG1fcGFnZS5kcmFn
Q2FyZXRDb250cm9sbGVyKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSA/IGVtcHR5U3RyaW5n
KCkgOiBkcmFnRGF0YS5hc1BsYWluVGV4dCgpOwogICAgIEVsZW1lbnQqIHRhcmdldCA9IGlubmVy
RnJhbWUtPmVkaXRvcigpLmZpbmRFdmVudFRhcmdldEZyb20obV9wYWdlLmRyYWdDYXJldENvbnRy
b2xsZXIoKS5jYXJldFBvc2l0aW9uKCkpOwogICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMg
dGFyZ2V0IGlzIG5vdCBudWxsPwotICAgIGF1dG8gZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZUZv
ckRyb3AoaW5uZXJGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHRleHQpOworICAgIGF1
dG8gZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3AoJmlubmVyRnJhbWUtPndpbmRvd1By
b3h5KCksIHRleHQpOwogICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgcmV0
dXJuICFldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IDg3ZDEyNzc0Y2M2ZjM0YWUwNzAxMDBkMTllZWI3NjU2NWYyNTA3OWQu
LjhiM2M2ZDFhZjhmODU0MWRhM2U1YTc0NDUwYmE4NWI0YzYzNDNiZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTIxOTgsNyArMjE5OCw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpkaXNwYXRjaERyYWdFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRWxl
bWVudCYgZHJhCiAKICAgICB2aWV3LT5kaXNhYmxlTGF5ZXJGbHVzaFRocm90dGxpbmdUZW1wb3Jh
cmlseUZvckludGVyYWN0aW9uKCk7CiAgICAgUmVmPE1vdXNlRXZlbnQ+IG1lID0gTW91c2VFdmVu
dDo6Y3JlYXRlKGV2ZW50VHlwZSwKLSAgICAgICAgdHJ1ZSwgdHJ1ZSwgZXZlbnQudGltZXN0YW1w
KCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCksIG1fZnJhbWUuZG9jdW1lbnQoKS0+ZGVmYXVs
dFZpZXcoKSwKKyAgICAgICAgdHJ1ZSwgdHJ1ZSwgZXZlbnQudGltZXN0YW1wKCkuYXBwcm94aW1h
dGVNb25vdG9uaWNUaW1lKCksICZtX2ZyYW1lLndpbmRvd1Byb3h5KCksCiAgICAgICAgIDAsIGV2
ZW50Lmdsb2JhbFBvc2l0aW9uKCkueCgpLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLnkoKSwgZXZl
bnQucG9zaXRpb24oKS54KCksIGV2ZW50LnBvc2l0aW9uKCkueSgpLAogI2lmIEVOQUJMRShQT0lO
VEVSX0xPQ0spCiAgICAgICAgIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS54KCksIGV2ZW50Lm1vdmVt
ZW50RGVsdGEoKS55KCksCkBAIC0zMjQ4LDcgKzMyNDgsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aW50ZXJuYWxLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGluaXRpYWxLZXlF
dmVudAogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlEb3duRXZlbnQgPSBpbml0aWFsS2V5
RXZlbnQ7ICAgIAogICAgIGlmIChrZXlEb3duRXZlbnQudHlwZSgpICE9IFBsYXRmb3JtRXZlbnQ6
OlJhd0tleURvd24pCiAgICAgICAgIGtleURvd25FdmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZl
bnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93biwgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSk7
Ci0gICAgYXV0byBrZXlkb3duID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGtleURvd25FdmVudCwg
bV9mcmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsKKyAgICBhdXRvIGtleWRvd24gPSBL
ZXlib2FyZEV2ZW50OjpjcmVhdGUoa2V5RG93bkV2ZW50LCAmbV9mcmFtZS53aW5kb3dQcm94eSgp
KTsKICAgICBpZiAobWF0Y2hlZEFuQWNjZXNzS2V5KQogICAgICAgICBrZXlkb3duLT5wcmV2ZW50
RGVmYXVsdCgpOwogICAgIGtleWRvd24tPnNldFRhcmdldChlbGVtZW50KTsKQEAgLTMyNzEsNyAr
MzI3MSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjppbnRlcm5hbEtleUV2ZW50KGNvbnN0IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudCYgaW5pdGlhbEtleUV2ZW50CiAgICAgCiAgICAgaWYgKGhhbmRsZWRC
eUlucHV0TWV0aG9kKSB7CiAgICAgICAgIGtleURvd25FdmVudC5zZXRXaW5kb3dzVmlydHVhbEtl
eUNvZGUoQ29tcG9zaXRpb25FdmVudEtleUNvZGUpOwotICAgICAgICBrZXlkb3duID0gS2V5Ym9h
cmRFdmVudDo6Y3JlYXRlKGtleURvd25FdmVudCwgbV9mcmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0
VmlldygpKTsKKyAgICAgICAga2V5ZG93biA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShrZXlEb3du
RXZlbnQsICZtX2ZyYW1lLndpbmRvd1Byb3h5KCkpOwogICAgICAgICBrZXlkb3duLT5zZXRUYXJn
ZXQoZWxlbWVudCk7CiAgICAgICAgIGtleWRvd24tPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAg
fQpAQCAtMzMwMSw3ICszMzAxLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmludGVybmFsS2V5RXZl
bnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBpbml0aWFsS2V5RXZlbnQKICAgICBrZXlQ
cmVzc0V2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpDaGFyLCBi
YWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKTsKICAgICBpZiAoa2V5UHJlc3NFdmVudC50ZXh0KCku
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4ga2V5ZG93blJlc3VsdDsKLSAgICBhdXRvIGtleXBy
ZXNzID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGtleVByZXNzRXZlbnQsIG1fZnJhbWUuZG9jdW1l
bnQoKS0+ZGVmYXVsdFZpZXcoKSk7CisgICAgYXV0byBrZXlwcmVzcyA9IEtleWJvYXJkRXZlbnQ6
OmNyZWF0ZShrZXlQcmVzc0V2ZW50LCAmbV9mcmFtZS53aW5kb3dQcm94eSgpKTsKICAgICBrZXlw
cmVzcy0+c2V0VGFyZ2V0KGVsZW1lbnQpOwogICAgIGlmIChrZXlkb3duUmVzdWx0KQogICAgICAg
ICBrZXlwcmVzcy0+cHJldmVudERlZmF1bHQoKTsKQEAgLTM4MDIsNyArMzgwMiw3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVudChjb25zdCBTdHJpbmcmIHRleHQsIEV2
ZW50KiB1bmRlcmx5aW5nRXZlCiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmll
dygpKQogICAgICAgICB2aWV3LT5kaXNhYmxlTGF5ZXJGbHVzaFRocm90dGxpbmdUZW1wb3Jhcmls
eUZvckludGVyYWN0aW9uKCk7CiAKLSAgICBSZWY8VGV4dEV2ZW50PiBldmVudCA9IFRleHRFdmVu
dDo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHRleHQsIGlucHV0VHlw
ZSk7CisgICAgYXV0byBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlKCZtX2ZyYW1lLndpbmRvd1By
b3h5KCksIHRleHQsIGlucHV0VHlwZSk7CiAgICAgZXZlbnQtPnNldFVuZGVybHlpbmdFdmVudCh1
bmRlcmx5aW5nRXZlbnQpOwogCiAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKQEAg
LTQyMTEsNyArNDIxMSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNv
bnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAKICAgICAgICAgICAgIFJlZjxUb3VjaEV2
ZW50PiB0b3VjaEV2ZW50ID0KICAgICAgICAgICAgICAgICBUb3VjaEV2ZW50OjpjcmVhdGUoZWZm
ZWN0aXZlVG91Y2hlcy5nZXQoKSwgdGFyZ2V0VG91Y2hlcy5nZXQoKSwgY2hhbmdlZFRvdWNoZXNb
c3RhdGVdLm1fdG91Y2hlcy5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgc3RhdGVOYW1lLCBk
b3duY2FzdDxOb2RlPigqdGFyZ2V0KS5kb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksCisgICAgICAg
ICAgICAgICAgICAgIHN0YXRlTmFtZSwgZG93bmNhc3Q8Tm9kZT4oKnRhcmdldCkuZG9jdW1lbnQo
KS53aW5kb3dQcm94eSgpLAogICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCBldmVudC5j
dHJsS2V5KCksIGV2ZW50LmFsdEtleSgpLCBldmVudC5zaGlmdEtleSgpLCBldmVudC5tZXRhS2V5
KCkpOwogICAgICAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KHRvdWNoRXZlbnQpOwogICAg
ICAgICAgICAgc3dhbGxvd2VkRXZlbnQgPSBzd2FsbG93ZWRFdmVudCB8fCB0b3VjaEV2ZW50LT5k
ZWZhdWx0UHJldmVudGVkKCkgfHwgdG91Y2hFdmVudC0+ZGVmYXVsdEhhbmRsZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdpbmRvdy5jcHAKaW5kZXggN2IwOWM4
MTg3YzQ2NDAwNjcwNmZjM2VjYTQ3N2I2OTcwMzY1YmEyMi4uNjc3ZDY2YzEyNTQ0ODMxNDE3ZDRk
ODE0NDQ3ZjQwNWIxYjUzMDNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdpbmRvdy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTURPTVdpbmRvdy5jcHAKQEAgLTY0LDYgKzY0LDIyIEBAIFdlYktpdERPTURPTVdpbmRvdyog
a2l0KFdlYkNvcmU6OkRPTVdpbmRvdyogb2JqKQogICAgIHJldHVybiB3cmFwRE9NV2luZG93KG9i
aik7CiB9CiAKK1dlYktpdERPTURPTVdpbmRvdyoga2l0KFdlYkNvcmU6OldpbmRvd1Byb3h5KiB3
aW5kb3dQcm94eSkKK3sKKyAgICBpZiAoIXdpbmRvd1Byb3h5IHx8ICFpczxXZWJDb3JlOjpET01X
aW5kb3c+KHdpbmRvd1Byb3h5LT53aW5kb3coKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuIGtpdChkb3duY2FzdDxXZWJDb3JlOjpET01XaW5kb3c+KHdpbmRvd1Byb3h5
LT53aW5kb3coKSkpOworfQorCitXZWJDb3JlOjpXaW5kb3dQcm94eSogdG9XaW5kb3dQcm94eShX
ZWJLaXRET01ET01XaW5kb3cqIHZpZXcpCit7CisgICAgYXV0byogd2luZG93ID0gY29yZSh2aWV3
KTsKKyAgICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LT5mcmFtZSgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gJndpbmRvdy0+ZnJhbWUoKS0+d2luZG93UHJveHkoKTsKK30K
KwogV2ViQ29yZTo6RE9NV2luZG93KiBjb3JlKFdlYktpdERPTURPTVdpbmRvdyogcmVxdWVzdCkK
IHsKICAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRPTVdpbmRvdyo+
KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NRE9NV2luZG93UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTVdpbmRvd1ByaXZhdGUuaAppbmRleCBl
MzFkMjI3NWI4YjgxY2FmODBlMjAxZTZkZDZiMWFlOTYyY2NmZjkyLi42Njg0ZWM2Nzg4ZWRlZmIw
ZTg2ZDVkZDE1NDI2OGU2ZmQzNWY2MDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NV2luZG93UHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01ET01XaW5kb3dQcml2YXRlLmgKQEAgLTIxLDEyICsyMSwxNSBAQAogI2Rl
ZmluZSBXZWJLaXRET01ET01XaW5kb3dQcml2YXRlX2gKIAogI2luY2x1ZGUgPFdlYkNvcmUvRE9N
V2luZG93Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dQcm94eS5oPgogI2luY2x1ZGUgPHdl
YmtpdGRvbS9XZWJLaXRET01ET01XaW5kb3cuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBXZWJL
aXRET01ET01XaW5kb3cqIHdyYXBET01XaW5kb3coV2ViQ29yZTo6RE9NV2luZG93Kik7CiBXZWJL
aXRET01ET01XaW5kb3cqIGtpdChXZWJDb3JlOjpET01XaW5kb3cqKTsKK1dlYktpdERPTURPTVdp
bmRvdyoga2l0KFdlYkNvcmU6OldpbmRvd1Byb3h5Kik7CiBXZWJDb3JlOjpET01XaW5kb3cqIGNv
cmUoV2ViS2l0RE9NRE9NV2luZG93Kik7CitXZWJDb3JlOjpXaW5kb3dQcm94eSogdG9XaW5kb3dQ
cm94eShXZWJLaXRET01ET01XaW5kb3cqKTsKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5k
aWYgLyogV2ViS2l0RE9NRE9NV2luZG93UHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9j
dW1lbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50R3RrLmNwcAppbmRleCA5NTA1NDFmMDliMjI3MDFh
MTM5NTU4MWNkMWI0MzI5NzAzNDIxZWE0Li4wNTU3YWE2Y2E4NWQwMzNlZDFmMzE2MTNmMDFkODk2
NjA4NzIyYjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1
bWVudEd0ay5jcHAKQEAgLTE0OTQsOCArMTQ5NCw3IEBAIFdlYktpdERPTURPTVdpbmRvdyogd2Vi
a2l0X2RvbV9kb2N1bWVudF9nZXRfZGVmYXVsdF92aWV3KFdlYktpdERPTURvY3VtZW50KiBzZWxm
CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfRE9DVU1FTlQoc2VsZiksIDApOwogICAgIFdlYkNv
cmU6OkRvY3VtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJD
b3JlOjpET01XaW5kb3c+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5kZWZhdWx0
VmlldygpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6a2l0KGl0ZW0tPndpbmRvd1Byb3h5KCkpOwogfQogCiBXZWJLaXRE
T01TdHlsZVNoZWV0TGlzdCogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfc3R5bGVfc2hlZXRzKFdl
YktpdERPTURvY3VtZW50KiBzZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxGcmFtZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTUhUTUxGcmFtZUVsZW1lbnQuY3BwCmluZGV4IGMxNWY2YTQ4NjRmNzgzZWMwNzM2
YjRjYTM3OTZjNmRkNjZiMzc2MmEuLjViNjcxNTIzOGM2OTM5YWE3Y2Q5MDc2YzI1Yjk5MjUxYzZk
MTU1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRN
TEZyYW1lRWxlbWVudC5jcHAKQEAgLTQ5Miw4ICs0OTIsNyBAQCBXZWJLaXRET01ET01XaW5kb3cq
IHdlYmtpdF9kb21faHRtbF9mcmFtZV9lbGVtZW50X2dldF9jb250ZW50X3dpbmRvdyhXZWJLaXRE
T01IVAogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0hUTUxfRlJBTUVfRUxFTUVOVChzZWxmKSwg
MCk7CiAgICAgV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RE9NV2luZG93PiBnb2JqZWN0UmVzdWx0ID0gV1RG
OjpnZXRQdHIoaXRlbS0+Y29udGVudFdpbmRvdygpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQo
Z29iamVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0KGl0ZW0tPmNvbnRl
bnRXaW5kb3coKSk7CiB9CiAKIGdsb25nIHdlYmtpdF9kb21faHRtbF9mcmFtZV9lbGVtZW50X2dl
dF93aWR0aChXZWJLaXRET01IVE1MRnJhbWVFbGVtZW50KiBzZWxmKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TUhUTUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXgg
MjhiNTFjZTkwZTlmM2Y1MDQwZGIxNjE3NjZlNzYwNGJjZjRkZmY5NC4uM2U2NzRhZjJmMTUyMDcy
MjA2ODIzODc5NWI4NWQ1NDdmMjI1MTZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxJRnJhbWVFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NSFRNTElGcmFtZUVsZW1lbnQuY3BwCkBAIC01MzgsOCArNTM4LDcg
QEAgV2ViS2l0RE9NRE9NV2luZG93KiB3ZWJraXRfZG9tX2h0bWxfaWZyYW1lX2VsZW1lbnRfZ2V0
X2NvbnRlbnRfd2luZG93KFdlYktpdERPTUgKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19IVE1M
X0lGUkFNRV9FTEVNRU5UKHNlbGYpLCAwKTsKICAgICBXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVu
dCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RE9NV2lu
ZG93PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+Y29udGVudFdpbmRvdygpKTsK
LSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJu
IFdlYktpdDo6a2l0KGl0ZW0tPmNvbnRlbnRXaW5kb3coKSk7CiB9CiAKIEdfR05VQ19FTkRfSUdO
T1JFX0RFUFJFQ0FUSU9OUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01LZXlib2FyZEV2ZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01LZXlib2FyZEV2ZW50LmNwcAppbmRleCA0MWZjYzk3ODM0M2Q0MjM4ZGM2YjUxYTcwNDM5OGFm
NzNhYmM4MmQwLi43ZGEzMjYzZjBiZTMyYTUxNmIwYzljM2FhZmYxODQ4MDMzNTEyMGNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NS2V5Ym9hcmRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUtleWJvYXJkRXZlbnQuY3Bw
CkBAIC0yMDIsOSArMjAyLDggQEAgdm9pZCB3ZWJraXRfZG9tX2tleWJvYXJkX2V2ZW50X2luaXRf
a2V5Ym9hcmRfZXZlbnQoV2ViS2l0RE9NS2V5Ym9hcmRFdmVudCogc2VsZiwKICAgICBnX3JldHVy
bl9pZl9mYWlsKGtleUlkZW50aWZpZXIpOwogICAgIFdlYkNvcmU6OktleWJvYXJkRXZlbnQqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkVHlwZSA9
IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh0eXBlKTsKLSAgICBXZWJDb3JlOjpET01XaW5kb3cqIGNv
bnZlcnRlZFZpZXcgPSBXZWJLaXQ6OmNvcmUodmlldyk7CiAgICAgV1RGOjpTdHJpbmcgY29udmVy
dGVkS2V5SWRlbnRpZmllciA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChrZXlJZGVudGlmaWVyKTsK
LSAgICBpdGVtLT5pbml0S2V5Ym9hcmRFdmVudChjb252ZXJ0ZWRUeXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIGNvbnZlcnRlZFZpZXcsIGNvbnZlcnRlZEtleUlkZW50aWZpZXIsIGxvY2F0aW9u
LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBhbHRHcmFwaEtleSk7CisgICAg
aXRlbS0+aW5pdEtleWJvYXJkRXZlbnQoY29udmVydGVkVHlwZSwgY2FuQnViYmxlLCBjYW5jZWxh
YmxlLCBXZWJLaXQ6OnRvV2luZG93UHJveHkodmlldyksIGNvbnZlcnRlZEtleUlkZW50aWZpZXIs
IGxvY2F0aW9uLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBhbHRHcmFwaEtl
eSk7CiB9CiAKIGdjaGFyKiB3ZWJraXRfZG9tX2tleWJvYXJkX2V2ZW50X2dldF9rZXlfaWRlbnRp
ZmllcihXZWJLaXRET01LZXlib2FyZEV2ZW50KiBzZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1vdXNl
RXZlbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTU1vdXNlRXZlbnQuY3BwCmluZGV4IDA1ODAwYTM1N2ZhYzY3NGRiOGMz
ZDMzNjVlMWNlNWM2OTY1YjY3MjguLjIxN2U1NjVhNGFiODYzMWVlZDJmNTExNTExMTQ2ZDZhMjAx
OGVjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Nb3VzZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NTW91c2VFdmVu
dC5jcHAKQEAgLTMxOSw5ICszMTksOCBAQCB2b2lkIHdlYmtpdF9kb21fbW91c2VfZXZlbnRfaW5p
dF9tb3VzZV9ldmVudChXZWJLaXRET01Nb3VzZUV2ZW50KiBzZWxmLCBjb25zdCBnYwogICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19FVkVOVF9UQVJHRVQocmVsYXRlZFRhcmdldCkp
OwogICAgIFdlYkNvcmU6Ok1vdXNlRXZlbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAg
ICAgV1RGOjpTdHJpbmcgY29udmVydGVkVHlwZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh0eXBl
KTsKLSAgICBXZWJDb3JlOjpET01XaW5kb3cqIGNvbnZlcnRlZFZpZXcgPSBXZWJLaXQ6OmNvcmUo
dmlldyk7CiAgICAgV2ViQ29yZTo6RXZlbnRUYXJnZXQqIGNvbnZlcnRlZFJlbGF0ZWRUYXJnZXQg
PSBXZWJLaXQ6OmNvcmUocmVsYXRlZFRhcmdldCk7Ci0gICAgaXRlbS0+aW5pdE1vdXNlRXZlbnQo
Y29udmVydGVkVHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBjb252ZXJ0ZWRWaWV3LCBkZXRh
aWwsIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVudFksIGN0cmxLZXksIGFsdEtleSwg
c2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgY29udmVydGVkUmVsYXRlZFRhcmdldCk7CisgICAg
aXRlbS0+aW5pdE1vdXNlRXZlbnQoY29udmVydGVkVHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBXZWJLaXQ6OnRvV2luZG93UHJveHkodmlldyksIGRldGFpbCwgc2NyZWVuWCwgc2NyZWVuWSwg
Y2xpZW50WCwgY2xpZW50WSwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSwgYnV0
dG9uLCBjb252ZXJ0ZWRSZWxhdGVkVGFyZ2V0KTsKIH0KIAogZ2xvbmcgd2Via2l0X2RvbV9tb3Vz
ZV9ldmVudF9nZXRfc2NyZWVuX3goV2ViS2l0RE9NTW91c2VFdmVudCogc2VsZikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01VSUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01VSUV2ZW50LmNwcAppbmRleCA5YWUwMTIzOWE4MjZj
ZjhlZjJkNDA2MjBkNWM0Mzc0YjYwMjQ5ZGZjLi5hMGY2YTkwMTA0ZDBlZWEzZGZmMzk5NTE3ZmM4
OGI4NGIzOTE0YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NVUlFdmVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVVJRXZl
bnQuY3BwCkBAIC0yMDQsOCArMjA0LDcgQEAgdm9pZCB3ZWJraXRfZG9tX3VpX2V2ZW50X2luaXRf
dWlfZXZlbnQoV2ViS2l0RE9NVUlFdmVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHR5cGUKICAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfRE9NX1dJTkRPVyh2aWV3KSk7CiAgICAgV2Vi
Q29yZTo6VUlFdmVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmlu
ZyBjb252ZXJ0ZWRUeXBlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHR5cGUpOwotICAgIFdlYkNv
cmU6OkRPTVdpbmRvdyogY29udmVydGVkVmlldyA9IFdlYktpdDo6Y29yZSh2aWV3KTsKLSAgICBp
dGVtLT5pbml0VUlFdmVudChjb252ZXJ0ZWRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNv
bnZlcnRlZFZpZXcsIGRldGFpbCk7CisgICAgaXRlbS0+aW5pdFVJRXZlbnQoY29udmVydGVkVHlw
ZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXZWJLaXQ6OnRvV2luZG93UHJveHkodmlldyksIGRl
dGFpbCk7CiB9CiAKIFdlYktpdERPTURPTVdpbmRvdyogd2Via2l0X2RvbV91aV9ldmVudF9nZXRf
dmlldyhXZWJLaXRET01VSUV2ZW50KiBzZWxmKQpAQCAtMjEzLDggKzIxMiw3IEBAIFdlYktpdERP
TURPTVdpbmRvdyogd2Via2l0X2RvbV91aV9ldmVudF9nZXRfdmlldyhXZWJLaXRET01VSUV2ZW50
KiBzZWxmKQogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1VJX0VWRU5UKHNlbGYpLCAwKTsKICAg
ICBXZWJDb3JlOjpVSUV2ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpET01XaW5kb3c+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT52
aWV3KCkpOwotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKKyAg
ICByZXR1cm4gV2ViS2l0OjpraXQoaXRlbS0+dmlldygpKTsKIH0KIAogZ2xvbmcgd2Via2l0X2Rv
bV91aV9ldmVudF9nZXRfZGV0YWlsKFdlYktpdERPTVVJRXZlbnQqIHNlbGYpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2Vi
S2l0RE9NV2hlZWxFdmVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NV2hlZWxFdmVudC5jcHAKaW5kZXggMGUxYmE2ZGE1
NWMxYzQzZWVlNjRhZTlhMWVkNWFiNjQ0NGY5ZjRmOS4uZTc3NGNkMTY3ZWNiMzQ5MTE0MTkwOGUz
ODlkZDUwYTI1NDQ2Y2VhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTVdoZWVsRXZlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01XaGVlbEV2ZW50LmNwcApAQCAtMTMxLDggKzEzMSw3IEBAIHZvaWQgd2Via2l0X2RvbV93aGVl
bF9ldmVudF9pbml0X3doZWVsX2V2ZW50KFdlYktpdERPTVdoZWVsRXZlbnQqIHNlbGYsIGdsb25n
IHdoCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1dIRUVMX0VWRU5UKHNlbGYp
KTsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfRE9NX1dJTkRPVyh2aWV3KSk7
CiAgICAgV2ViQ29yZTo6V2hlZWxFdmVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAg
ICBXZWJDb3JlOjpET01XaW5kb3cqIGNvbnZlcnRlZFZpZXcgPSBXZWJLaXQ6OmNvcmUodmlldyk7
Ci0gICAgaXRlbS0+aW5pdFdlYktpdFdoZWVsRXZlbnQod2hlZWxEZWx0YVgsIHdoZWVsRGVsdGFZ
LCBjb252ZXJ0ZWRWaWV3LCBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLCBjdHJs
S2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KTsKKyAgICBpdGVtLT5pbml0V2ViS2l0V2hl
ZWxFdmVudCh3aGVlbERlbHRhWCwgd2hlZWxEZWx0YVksIFdlYktpdDo6dG9XaW5kb3dQcm94eSh2
aWV3KSwgc2NyZWVuWCwgc2NyZWVuWSwgY2xpZW50WCwgY2xpZW50WSwgY3RybEtleSwgYWx0S2V5
LCBzaGlmdEtleSwgbWV0YUtleSk7CiB9CiAKIGdsb25nIHdlYmtpdF9kb21fd2hlZWxfZXZlbnRf
Z2V0X3doZWVsX2RlbHRhX3goV2ViS2l0RE9NV2hlZWxFdmVudCogc2VsZikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDQ4MTY2
NzY4ZjE0MTU4ZjAyMjAzZTJiMGI5MjVkMDcyY2Y1MzM4MDQuLmE3NDllYTYzNDk3ODJkZGJiZGEz
MDAzMmI4NmQxYmM3NWMwZDYyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTY4MCw3ICsxNjgwLDcgQEAgdm9pZCBQREZQ
bHVnaW46OmNsaWNrZWRMaW5rKE5TVVJMICp1cmwpCiAKICAgICBSZWZQdHI8RXZlbnQ+IGNvcmVF
dmVudDsKICAgICBpZiAobV9sYXN0TW91c2VFdmVudC50eXBlKCkgIT0gV2ViRXZlbnQ6Ok5vVHlw
ZSkKLSAgICAgICAgY29yZUV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5j
bGlja0V2ZW50LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgcGxhdGZvcm0obV9s
YXN0TW91c2VFdmVudCksIDAsIDApOworICAgICAgICBjb3JlRXZlbnQgPSBNb3VzZUV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsICZmcmFtZS0+d2luZG93UHJveHkoKSwgcGxh
dGZvcm0obV9sYXN0TW91c2VFdmVudCksIDAsIDApOwogCiAgICAgZnJhbWUtPmxvYWRlcigpLnVy
bFNlbGVjdGVkKGNvcmVVUkwsIGVtcHR5U3RyaW5nKCksIGNvcmVFdmVudC5nZXQoKSwgTG9ja0hp
c3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZTQyNDNjMDczZGE2NDY5
YzRiNzY2NmZjYmEwMzFhOThjMjlmYzQ5NS4uOGI0Y2U1ZGMxMDgwZDkwYjhlNjU1NWRlMTEyNTFh
MTlmZDRlZDQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKQEAgLTI3MjksNyArMjcyOSw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0SW5pdGlhbEZvY3Vz
KGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViCiAgICAg
aWYgKGlzS2V5Ym9hcmRFdmVudFZhbGlkICYmIGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5
RG93bikgewogICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgcGxhdGZvcm1FdmVudChwbGF0
Zm9ybShldmVudCkpOwogICAgICAgICBwbGF0Zm9ybUV2ZW50LmRpc2FtYmlndWF0ZUtleURvd25F
dmVudChQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKLSAgICAgICAgbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5zZXRJbml0aWFsRm9jdXMoZm9yd2FyZCA/IEZvY3VzRGlyZWN0aW9uRm9yd2Fy
ZCA6IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQsICZLZXlib2FyZEV2ZW50OjpjcmVhdGUocGxhdGZv
cm1FdmVudCwgZnJhbWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSkuZ2V0KCkpOworICAgICAg
ICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNldEluaXRpYWxGb2N1cyhmb3J3YXJkID8gRm9j
dXNEaXJlY3Rpb25Gb3J3YXJkIDogRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCwgJktleWJvYXJkRXZl
bnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCAmZnJhbWUud2luZG93UHJveHkoKSkuZ2V0KCkpOwog
CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxi
YWNrSUQpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01BYnN0cmFjdFZpZXcubW0KaW5kZXggMWE0YzI5YjFiMGRkYWM4MjI1N2JkNmY0YmE2ZGM0
NGZmMzkxMmU4OS4uMTY5ZTRhZTVmZTc3NWI5OGQyNGNkNDgwNmE1YTljNTA3OGUxMGUwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUFic3RyYWN0Vmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RWaWV3Lm1tCkBAIC0z
Niw2ICszNiw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvV2luZG93UHJveHkuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RnJhbWUqPihfaW50ZXJuYWwpCiAKQEAgLTEwMCwzICsxMDEs
MTkgQEAgRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6QWJzdHJhY3RET01XaW5kb3cqIHZh
bHVlKQogCiAgICAgcmV0dXJuIGtpdChkb3duY2FzdDxXZWJDb3JlOjpET01XaW5kb3c+KHZhbHVl
KSk7CiB9CisKK0RPTUFic3RyYWN0VmlldyAqa2l0KFdlYkNvcmU6OldpbmRvd1Byb3h5KiB3aW5k
b3dQcm94eSkKK3sKKyAgICBpZiAoIXdpbmRvd1Byb3h5KQorICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgcmV0dXJuIGtpdCh3aW5kb3dQcm94eS0+d2luZG93KCkpOworfQorCitXZWJDb3JlOjpX
aW5kb3dQcm94eSogdG9XaW5kb3dQcm94eShET01BYnN0cmFjdFZpZXcgKnZpZXcpCit7CisgICAg
YXV0byogd2luZG93ID0gY29yZSh2aWV3KTsKKyAgICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LT5m
cmFtZSgpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiAmd2luZG93LT5mcmFtZSgp
LT53aW5kb3dQcm94eSgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaAppbmRleCBjNGQ3MzI1YzdmMjViYjViODYxMjc0
MTZlM2Q5MGQyODIxNGMxMTk3Li4zNTlmMDVlYjRkNGE0M2FhNTI0MjMzZTRiYmY2NjI4ZGIzNjg4
NmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJhY3RW
aWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQWJzdHJh
Y3RWaWV3SW50ZXJuYWwuaApAQCAtMjgsMTEgKzI4LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBBYnN0cmFjdERPTVdpbmRvdzsKIGNsYXNzIERPTVdpbmRvdzsKK2NsYXNzIFdpbmRv
d1Byb3h5OwogfQogCiBXZWJDb3JlOjpET01XaW5kb3cqIGNvcmUoRE9NQWJzdHJhY3RWaWV3ICop
OwogRE9NQWJzdHJhY3RWaWV3ICpraXQoV2ViQ29yZTo6RE9NV2luZG93Kik7CiBET01BYnN0cmFj
dFZpZXcgKmtpdChXZWJDb3JlOjpBYnN0cmFjdERPTVdpbmRvdyopOworRE9NQWJzdHJhY3RWaWV3
ICpraXQoV2ViQ29yZTo6V2luZG93UHJveHkqKTsKK1dlYkNvcmU6OldpbmRvd1Byb3h5KiB0b1dp
bmRvd1Byb3h5KERPTUFic3RyYWN0VmlldyAqKTsKIAogQGludGVyZmFjZSBET01BYnN0cmFjdFZp
ZXcgKFdlYktpdExlZ2FjeUludGVybmFsKQogLSAodm9pZClfZGlzY29ubmVjdEZyYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCmluZGV4IDZjMmYzNmQ4MjRh
OTRhNjgyM2JmMmE4MWM5YmVkMjIzNGU3YTY4ZjQuLjMwYjhjNDUzNTQ4NWI1NjMxZTFhZWI2NmU0
NWIwNWU1ZjFjMTdjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1l
bnQubW0KQEAgLTE2Miw3ICsxNjIsNyBAQCAtICh2b2lkKXNldERvY3VtZW50VVJJOihOU1N0cmlu
ZyAqKW5ld0RvY3VtZW50VVJJCiAtIChET01BYnN0cmFjdFZpZXcgKilkZWZhdWx0Vmlldwogewog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4ga2l0
KFdURjo6Z2V0UHRyKElNUEwtPmRlZmF1bHRWaWV3KCkpKTsKKyAgICByZXR1cm4ga2l0KFdURjo6
Z2V0UHRyKElNUEwtPndpbmRvd1Byb3h5KCkpKTsKIH0KIAogLSAoRE9NU3R5bGVTaGVldExpc3Qg
KilzdHlsZVNoZWV0cwpAQCAtNjg0LDcgKzY4NCw3IEBAIC0gKERPTUNTU1N0eWxlRGVjbGFyYXRp
b24gKilnZXRDb21wdXRlZFN0eWxlOihET01FbGVtZW50ICopZWxlbWVudCBwc2V1ZG9FbGVtZW50
CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIGlmICghZWxl
bWVudCkKICAgICAgICAgcmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKLSAgICBXZWJDb3JlOjpE
T01XaW5kb3cqIGR2ID0gSU1QTC0+ZGVmYXVsdFZpZXcoKTsKKyAgICBXZWJDb3JlOjpET01XaW5k
b3cqIGR2ID0gSU1QTC0+ZG9tV2luZG93KCk7CiAgICAgaWYgKCFkdikKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKGR2LT5nZXRDb21wdXRlZFN0eWxlKCpj
b3JlKGVsZW1lbnQpLCBwc2V1ZG9FbGVtZW50KSkpOwpAQCAtNjk4LDcgKzY5OCw3IEBAIC0gKERP
TUNTU1J1bGVMaXN0ICopZ2V0TWF0Y2hlZENTU1J1bGVzOihET01FbGVtZW50ICopZWxlbWVudCBw
c2V1ZG9FbGVtZW50OihOU1N0CiAtIChET01DU1NSdWxlTGlzdCAqKWdldE1hdGNoZWRDU1NSdWxl
czooRE9NRWxlbWVudCAqKWVsZW1lbnQgcHNldWRvRWxlbWVudDooTlNTdHJpbmcgKilwc2V1ZG9F
bGVtZW50IGF1dGhvck9ubHk6KEJPT0wpYXV0aG9yT25seQogewogICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpET01XaW5kb3cqIGR2ID0gSU1Q
TC0+ZGVmYXVsdFZpZXcoKTsKKyAgICBXZWJDb3JlOjpET01XaW5kb3cqIGR2ID0gSU1QTC0+ZG9t
V2luZG93KCk7CiAgICAgaWYgKCFkdikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4g
a2l0KFdURjo6Z2V0UHRyKGR2LT5nZXRNYXRjaGVkQ1NTUnVsZXMoY29yZShlbGVtZW50KSwgcHNl
dWRvRWxlbWVudCwgYXV0aG9yT25seSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01LZXlib2FyZEV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUtleWJvYXJkRXZlbnQubW0KaW5kZXggZTlhYjFmZWZlNzRkOTczNGVhYzI4NDE2YjA5
ZWYyMzEwZmNmYzcxYi4uYmEyZmJlNGUxODlkNjEzNmVlZDczNWVmZmZlNzEyMGI3Zjk2OTU4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0K
QEAgLTExMCwyNSArMTEwLDI1IEBAIC0gKEJPT0wpZ2V0TW9kaWZpZXJTdGF0ZTooTlNTdHJpbmcg
KilrZXlJZGVudGlmaWVyQXJnCiAtICh2b2lkKWluaXRLZXlib2FyZEV2ZW50OihOU1N0cmluZyAq
KXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihCT09MKWNhbmNlbGFi
bGUgdmlldzooRE9NQWJzdHJhY3RWaWV3ICopdmlldyBrZXlJZGVudGlmaWVyOihOU1N0cmluZyAq
KWluS2V5SWRlbnRpZmllciBsb2NhdGlvbjoodW5zaWduZWQpaW5Mb2NhdGlvbiBjdHJsS2V5OihC
T09MKWluQ3RybEtleSBhbHRLZXk6KEJPT0wpaW5BbHRLZXkgc2hpZnRLZXk6KEJPT0wpaW5TaGlm
dEtleSBtZXRhS2V5OihCT09MKWluTWV0YUtleSBhbHRHcmFwaEtleTooQk9PTClpbkFsdEdyYXBo
S2V5CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElN
UEwtPmluaXRLZXlib2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29yZSh2
aWV3KSwgaW5LZXlJZGVudGlmaWVyLCBpbkxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBp
blNoaWZ0S2V5LCBpbk1ldGFLZXksIGluQWx0R3JhcGhLZXkpOworICAgIElNUEwtPmluaXRLZXli
b2FyZEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2aWV3
KSwgaW5LZXlJZGVudGlmaWVyLCBpbkxvY2F0aW9uLCBpbkN0cmxLZXksIGluQWx0S2V5LCBpblNo
aWZ0S2V5LCBpbk1ldGFLZXksIGluQWx0R3JhcGhLZXkpOwogfQogCiAtICh2b2lkKWluaXRLZXli
b2FyZEV2ZW50OihOU1N0cmluZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBjYW5j
ZWxhYmxlOihCT09MKWNhbmNlbGFibGUgdmlldzooRE9NQWJzdHJhY3RWaWV3ICopdmlldyBrZXlJ
ZGVudGlmaWVyOihOU1N0cmluZyAqKWluS2V5SWRlbnRpZmllciBsb2NhdGlvbjoodW5zaWduZWQp
aW5Mb2NhdGlvbiBjdHJsS2V5OihCT09MKWluQ3RybEtleSBhbHRLZXk6KEJPT0wpaW5BbHRLZXkg
c2hpZnRLZXk6KEJPT0wpaW5TaGlmdEtleSBtZXRhS2V5OihCT09MKWluTWV0YUtleQogewogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0S2V5
Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUodmlldyksIGluS2V5
SWRlbnRpZmllciwgaW5Mb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwg
aW5NZXRhS2V5KTsKKyAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0eXBlLCBjYW5CdWJibGUs
IGNhbmNlbGFibGUsIHRvV2luZG93UHJveHkodmlldyksIGluS2V5SWRlbnRpZmllciwgaW5Mb2Nh
dGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwgaW5NZXRhS2V5KTsKIH0KIAog
LSAodm9pZClpbml0S2V5Ym9hcmRFdmVudDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9P
TCljYW5CdWJibGUgY2FuY2VsYWJsZTooQk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0
VmlldyAqKXZpZXcga2V5SWRlbnRpZmllcjooTlNTdHJpbmcgKilpbktleUlkZW50aWZpZXIga2V5
TG9jYXRpb246KHVuc2lnbmVkKWluS2V5TG9jYXRpb24gY3RybEtleTooQk9PTClpbkN0cmxLZXkg
YWx0S2V5OihCT09MKWluQWx0S2V5IHNoaWZ0S2V5OihCT09MKWluU2hpZnRLZXkgbWV0YUtleToo
Qk9PTClpbk1ldGFLZXkgYWx0R3JhcGhLZXk6KEJPT0wpaW5BbHRHcmFwaEtleQogewogICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBJTVBMLT5pbml0S2V5Ym9h
cmRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNvcmUodmlldyksIGluS2V5SWRl
bnRpZmllciwgaW5LZXlMb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwg
aW5NZXRhS2V5LCBpbkFsdEdyYXBoS2V5KTsKKyAgICBJTVBMLT5pbml0S2V5Ym9hcmRFdmVudCh0
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHRvV2luZG93UHJveHkodmlldyksIGluS2V5SWRl
bnRpZmllciwgaW5LZXlMb2NhdGlvbiwgaW5DdHJsS2V5LCBpbkFsdEtleSwgaW5TaGlmdEtleSwg
aW5NZXRhS2V5LCBpbkFsdEdyYXBoS2V5KTsKIH0KIAogLSAodm9pZClpbml0S2V5Ym9hcmRFdmVu
dDooTlNTdHJpbmcgKil0eXBlIGNhbkJ1YmJsZTooQk9PTCljYW5CdWJibGUgY2FuY2VsYWJsZToo
Qk9PTCljYW5jZWxhYmxlIHZpZXc6KERPTUFic3RyYWN0VmlldyAqKXZpZXcga2V5SWRlbnRpZmll
cjooTlNTdHJpbmcgKilpbktleUlkZW50aWZpZXIga2V5TG9jYXRpb246KHVuc2lnbmVkKWluS2V5
TG9jYXRpb24gY3RybEtleTooQk9PTClpbkN0cmxLZXkgYWx0S2V5OihCT09MKWluQWx0S2V5IHNo
aWZ0S2V5OihCT09MKWluU2hpZnRLZXkgbWV0YUtleTooQk9PTClpbk1ldGFLZXkKIHsKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+aW5pdEtleWJv
YXJkRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBjb3JlKHZpZXcpLCBpbktleUlk
ZW50aWZpZXIsIGluS2V5TG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXks
IGluTWV0YUtleSk7CisgICAgSU1QTC0+aW5pdEtleWJvYXJkRXZlbnQodHlwZSwgY2FuQnViYmxl
LCBjYW5jZWxhYmxlLCB0b1dpbmRvd1Byb3h5KHZpZXcpLCBpbktleUlkZW50aWZpZXIsIGluS2V5
TG9jYXRpb24sIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSk7CiB9
CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3Vz
ZUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0K
aW5kZXggN2M3ZTBkZGZmMTQyMTYxZWU0OGU2Nzc3MDI1ZTdmNzBlODUzYTgxMy4uZTUxNWQ4OTM1
YzE3N2Q0NzEwOTRhODRjNWNmYjhkNjRkYjI5NDM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KQEAgLTE0NSw3ICsxNDUsNyBAQCAtICh2b2lkKWlu
aXRNb3VzZUV2ZW50OihOU1N0cmluZyAqKXR5cGUgY2FuQnViYmxlOihCT09MKWNhbkJ1YmJsZSBj
YW5jZWxhYmxlOihCTwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
ICAgICBET01Ob2RlKiBpblJlbGF0ZWRUYXJnZXRPYmpDID0gaW5SZWxhdGVkVGFyZ2V0OwogICAg
IFdlYkNvcmU6Ok5vZGUqIGluUmVsYXRlZFRhcmdldE5vZGUgPSBjb3JlKGluUmVsYXRlZFRhcmdl
dE9iakMpOwotICAgIElNUEwtPmluaXRNb3VzZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2Vs
YWJsZSwgY29yZSh2aWV3KSwgZGV0YWlsLCBpblNjcmVlblgsIGluU2NyZWVuWSwgaW5DbGllbnRY
LCBpbkNsaWVudFksIGluQ3RybEtleSwgaW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwg
aW5CdXR0b24sIGluUmVsYXRlZFRhcmdldE5vZGUpOworICAgIElNUEwtPmluaXRNb3VzZUV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdG9XaW5kb3dQcm94eSh2aWV3KSwgZGV0YWls
LCBpblNjcmVlblgsIGluU2NyZWVuWSwgaW5DbGllbnRYLCBpbkNsaWVudFksIGluQ3RybEtleSwg
aW5BbHRLZXksIGluU2hpZnRLZXksIGluTWV0YUtleSwgaW5CdXR0b24sIGluUmVsYXRlZFRhcmdl
dE5vZGUpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NVGV4dEV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRF
dmVudC5tbQppbmRleCAyODY3YmM4MDIzOTE2YTdlNjc4MGZhM2ViNzEyMGM5YzkxYWQyYTQyLi5k
ZmE3NjIwMjRiNTY2MjJjZTViMjk5MWRmMzEyZGZkNTM4NzBkMGUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0KQEAgLTUwLDcgKzUwLDcgQEAgLSAoTlNT
dHJpbmcgKilkYXRhCiAtICh2b2lkKWluaXRUZXh0RXZlbnQ6KE5TU3RyaW5nICopdHlwZUFyZyBj
YW5CdWJibGVBcmc6KEJPT0wpY2FuQnViYmxlQXJnIGNhbmNlbGFibGVBcmc6KEJPT0wpY2FuY2Vs
YWJsZUFyZyB2aWV3QXJnOihET01BYnN0cmFjdFZpZXcgKil2aWV3QXJnIGRhdGFBcmc6KE5TU3Ry
aW5nICopZGF0YUFyZwogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBJTVBMLT5pbml0VGV4dEV2ZW50KHR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2Vs
YWJsZUFyZywgY29yZSh2aWV3QXJnKSwgZGF0YUFyZyk7CisgICAgSU1QTC0+aW5pdFRleHRFdmVu
dCh0eXBlQXJnLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsIHRvV2luZG93UHJveHkodmll
d0FyZyksIGRhdGFBcmcpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVUlFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01VSUV2ZW50Lm1tCmluZGV4IGE0NjRkYWNmYmY1MTI2NmJhOTJlNTk3NzE5MjlkODYzMWYyZjE2
NDAuLjNkYzk3YjM5Mzc4NDdkMGFjYjBlMGNkMmVhOTljOTFmZDEyNmY2NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCkBAIC0xMDMsNyArMTAzLDcgQEAgLSAo
aW50KXdoaWNoCiAtICh2b2lkKWluaXRVSUV2ZW50OihOU1N0cmluZyAqKXR5cGUgY2FuQnViYmxl
OihCT09MKWNhbkJ1YmJsZSBjYW5jZWxhYmxlOihCT09MKWNhbmNlbGFibGUgdmlldzooRE9NQWJz
dHJhY3RWaWV3ICopaW5WaWV3IGRldGFpbDooaW50KWluRGV0YWlsCiB7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIElNUEwtPmluaXRVSUV2ZW50KHR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY29yZShpblZpZXcpLCBpbkRldGFpbCk7CisgICAgSU1Q
TC0+aW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB0b1dpbmRvd1Byb3h5
KGluVmlldyksIGluRGV0YWlsKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTVdoZWVsRXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NV2hlZWxFdmVudC5tbQppbmRleCA4ZjA1NjljYTZhM2Y5NThjNzQxZjZkODgzNThm
ZmZkMTYwYjE4YWM4Li5kZDRhNTdiMGYzMmI3N2I0MzBiNmRkOWNkNWIxNTIzNGU1YTQzNGJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NV2hlZWxFdmVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NV2hlZWxFdmVudC5tbQpAQCAtOTYs
NyArOTYsNyBAQCAtIChCT09MKWlzSG9yaXpvbnRhbAogLSAodm9pZClpbml0V2hlZWxFdmVudDoo
aW50KWluV2hlZWxEZWx0YVggd2hlZWxEZWx0YVk6KGludClpbldoZWVsRGVsdGFZIHZpZXc6KERP
TUFic3RyYWN0VmlldyAqKXZpZXcgc2NyZWVuWDooaW50KXNjcmVlblggc2NyZWVuWTooaW50KXNj
cmVlblkgY2xpZW50WDooaW50KWNsaWVudFggY2xpZW50WTooaW50KWNsaWVudFkgY3RybEtleToo
Qk9PTCljdHJsS2V5IGFsdEtleTooQk9PTClhbHRLZXkgc2hpZnRLZXk6KEJPT0wpc2hpZnRLZXkg
bWV0YUtleTooQk9PTCltZXRhS2V5CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIElNUEwtPmluaXRXZWJLaXRXaGVlbEV2ZW50KGluV2hlZWxEZWx0YVgs
IGluV2hlZWxEZWx0YVksIGNvcmUodmlldyksIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNs
aWVudFksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpOworICAgIElNUEwtPmlu
aXRXZWJLaXRXaGVlbEV2ZW50KGluV2hlZWxEZWx0YVgsIGluV2hlZWxEZWx0YVksIHRvV2luZG93
UHJveHkodmlldyksIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgsIGNsaWVudFksIGN0cmxLZXks
IGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCAyYjdiOWUzNzljMWI4ODhl
MWMzZTEyNGM1ZGIzZjJkNzMwYjc2ZWU3Li40MWI3YmM3YTVjZTU3NzdkNjFlZGE2YzA5M2E1MDJm
ZTBjZGMwZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KQEAgLTQ1MzMsMTAgKzQ1MzMsMTAgQEAgc3RhdGljIFJlZlB0cjxLZXlib2FyZEV2
ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQogICAgIGNhc2UgTlNF
dmVudFR5cGVLZXlEb3duOiB7CiAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBwbGF0Zm9y
bUV2ZW50ID0gUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVu
dChldmVudCk7CiAgICAgICAgIHBsYXRmb3JtRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50
KFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pOwotICAgICAgICByZXR1cm4gS2V5Ym9hcmRFdmVu
dDo6Y3JlYXRlKHBsYXRmb3JtRXZlbnQsIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZp
ZXcoKSk7CisgICAgICAgIHJldHVybiBLZXlib2FyZEV2ZW50OjpjcmVhdGUocGxhdGZvcm1FdmVu
dCwgJmNvcmVGcmFtZS0+d2luZG93UHJveHkoKSk7CiAgICAgfQogICAgIGNhc2UgTlNFdmVudFR5
cGVLZXlVcDoKLSAgICAgICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShQbGF0Zm9ybUV2
ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50KGV2ZW50KSwgY29yZUZyYW1l
LT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsKKyAgICAgICAgcmV0dXJuIEtleWJvYXJkRXZl
bnQ6OmNyZWF0ZShQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2
ZW50KGV2ZW50KSwgJmNvcmVGcmFtZS0+d2luZG93UHJveHkoKSk7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtNDU0Nyw3ICs0NTQ3LDcgQEAgc3RhdGlj
IFJlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZy
YW1lKQogICAgIFdlYkV2ZW50VHlwZSB0eXBlID0gZXZlbnQudHlwZTsKICAgICBpZiAodHlwZSA9
PSBXZWJFdmVudEtleURvd24gfHwgdHlwZSA9PSBXZWJFdmVudEtleVVwKSB7CiAgICAgICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKLSAgICAgICAgcmV0dXJu
IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZv
cm1LZXlib2FyZEV2ZW50KGV2ZW50KSwgZG9jdW1lbnQgPyBkb2N1bWVudC0+ZGVmYXVsdFZpZXco
KSA6IDApOworICAgICAgICByZXR1cm4gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKFBsYXRmb3JtRXZl
bnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnQoZXZlbnQpLCBkb2N1bWVudCA/
IGRvY3VtZW50LT53aW5kb3dQcm94eSgpIDogMCk7CiAgICAgfQogICAgIHJldHVybiBudWxscHRy
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xh
c3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKaW5k
ZXggMWI0M2RkOWY0Y2ExMzViMmQxYzRkNGM0NjlmODY4NTU1YzQ3ZTk2Ni4uYjI1MjYxZjdkZmNl
MWI3Y2Y0NzFhOWQxZjIzY2IwODdiMjU3N2EwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0RPTUNvcmVDbGFzc2VzLmNwcApAQCAtODAyLDcgKzgwMiw3IEBAIEhSRVNVTFQgRE9NRG9jdW1l
bnQ6OmdldENvbXB1dGVkU3R5bGUoX0luX29wdF8gSURPTUVsZW1lbnQqIGVsdCwgX0luXyBCU1RS
IHBzZXVkCiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAg
V2ViQ29yZTo6RE9NV2luZG93KiBkdiA9IG1fZG9jdW1lbnQtPmRlZmF1bHRWaWV3KCk7CisgICAg
YXV0byogZHYgPSBtX2RvY3VtZW50LT5kb21XaW5kb3coKTsKICAgICBTdHJpbmcgcHNldWRvRWx0
U3RyaW5nKHBzZXVkb0VsdCk7CiAgICAgCiAgICAgaWYgKCFkdikK
</data>

          </attachment>
      

    </bug>

</bugzilla>