<?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>141797</bug_id>
          
          <creation_ts>2015-02-19 06:58:36 -0800</creation_ts>
          <short_desc>Move WorkQueue from WK2 to WTF</short_desc>
          <delta_ts>2015-02-20 12:02:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1070394</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-19 06:58:36 -0800</bug_when>
    <thetext>It might be useful in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070395</commentid>
    <comment_count>1</comment_count>
      <attachid>246891</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-19 07:14:41 -0800</bug_when>
    <thetext>Created attachment 246891
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070396</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-19 07:17:08 -0800</bug_when>
    <thetext>Attachment 246891 did not pass style-queue:


ERROR: Source/WTF/wtf/WorkQueue.h:72:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:37:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:56:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:81:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:103:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:107:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:110:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:114:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:31:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:40:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 16 in 18 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>1070510</commentid>
    <comment_count>3</comment_count>
      <attachid>246891</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-02-19 13:45:17 -0800</bug_when>
    <thetext>Comment on attachment 246891
patch

r=me if you fix the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070650</commentid>
    <comment_count>4</comment_count>
      <attachid>246952</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-20 02:28:02 -0800</bug_when>
    <thetext>Created attachment 246952
another</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070651</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-20 02:30:03 -0800</bug_when>
    <thetext>Attachment 246952 did not pass style-queue:


ERROR: Source/WTF/wtf/WorkQueue.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:77:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:37:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:56:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:81:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:103:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:107:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:110:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:114:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:31:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:40:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 16 in 18 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>1070672</commentid>
    <comment_count>6</comment_count>
      <attachid>246961</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-20 04:12:59 -0800</bug_when>
    <thetext>Created attachment 246961
another</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070673</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-20 04:15:09 -0800</bug_when>
    <thetext>Attachment 246961 did not pass style-queue:


ERROR: Source/WTF/wtf/WorkQueue.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:77:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:37:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:56:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:81:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:103:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:107:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:110:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:114:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:31:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:40:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 16 in 18 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>1070680</commentid>
    <comment_count>8</comment_count>
      <attachid>246964</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-20 05:08:40 -0800</bug_when>
    <thetext>Created attachment 246964
another</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070681</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-20 05:11:15 -0800</bug_when>
    <thetext>Attachment 246964 did not pass style-queue:


ERROR: Source/WTF/wtf/WorkQueue.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:77:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:37:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:56:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:81:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:103:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:107:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:110:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:114:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:31:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:40:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 16 in 18 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>1070683</commentid>
    <comment_count>10</comment_count>
      <attachid>246965</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-20 05:17:26 -0800</bug_when>
    <thetext>Created attachment 246965
another</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070684</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-20 05:20:34 -0800</bug_when>
    <thetext>Attachment 246965 did not pass style-queue:


ERROR: Source/WTF/wtf/WorkQueue.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:77:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:37:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:58:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:83:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:105:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:109:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:112:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:116:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:31:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:40:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 16 in 18 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>1070686</commentid>
    <comment_count>12</comment_count>
      <attachid>246967</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-20 05:25:12 -0800</bug_when>
    <thetext>Created attachment 246967
another</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070687</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-20 05:30:36 -0800</bug_when>
    <thetext>Attachment 246967 did not pass style-queue:


ERROR: Source/WTF/wtf/WorkQueue.h:68:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:77:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:37:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:59:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:84:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:106:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:110:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/gtk/WorkQueueGtk.cpp:117:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:31:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:40:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 16 in 18 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>1070688</commentid>
    <comment_count>14</comment_count>
      <attachid>246967</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-20 06:19:06 -0800</bug_when>
    <thetext>Comment on attachment 246967
another

Clearing flags on attachment: 246967

Committed r180410: &lt;http://trac.webkit.org/changeset/180410&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070689</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-20 06:19:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070761</commentid>
    <comment_count>16</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-02-20 12:02:28 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Comment on attachment 246967 [details]
&gt; another
&gt; 
&gt; Clearing flags on attachment: 246967
&gt; 
&gt; Committed r180410: &lt;http://trac.webkit.org/changeset/180410&gt;

EFL buildfixed landed in:
http://trac.webkit.org/changeset/180433
http://trac.webkit.org/changeset/180437 

Unfortunalty EWS didn&apos;t notice it in time, because 
WK2 developers broke the EFL build.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246891</attachid>
            <date>2015-02-19 07:14:41 -0800</date>
            <delta_ts>2015-02-20 02:28:02 -0800</delta_ts>
            <desc>patch</desc>
            <filename>workqueue-wtf.patch</filename>
            <type>text/plain</type>
            <size>58298</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE1LTAyLTE5ICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdvcmtRdWV1ZSBmcm9tIFdLMiB0byBXVEYK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTc5Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0IG1heSBi
ZSB1c2VmdWwgaW4gV2ViQ29yZS4KKworICAgICAgICBXaW5kb3dzIGltcGxlbWVudGF0aW9uIGlz
IHN0aWxsIG1pc3NpbmcuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1BsYXRmb3Jt
R1RLLmNtYWtlOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuY3BwLgorICAgICAgICAqIHd0Zi9Xb3JrUXVl
dWUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmguCisg
ICAgICAgICogd3RmL2NvY29hOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvY29jb2EvV29ya1F1ZXVl
Q29jb2EuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvV29ya1F1
ZXVlTWFjLmNwcC4KKyAgICAgICAgKiB3dGYvZWZsL1dvcmtRdWV1ZUVmbC5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwLgorICAgICAg
ICAqIHd0Zi9ndGsvV29ya1F1ZXVlR3RrLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHAuCisKIDIwMTUtMDItMTMgIEd5dXlvdW5nIEtp
bSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBFbmFibGUgYm1h
bGxvYyBmb3IgRUZMIHBvcnQgCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw2ICsyODIsOSBAQAogCQlDRTcz
RTAyNTE5RENCN0FCMDA1ODBENUMgLyogWFBDU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTczRTAyNDE5RENCN0FCMDA1ODBENUMgLyogWFBDU1BJ
LmggKi87IH07CiAJCUUxNTU1NkY1MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRp
bGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxNTU1NkYzMThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCAq
LzsgfTsKIAkJRTE1NTU2RjYxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTU1
NkY0MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmggKi87IH07CisJ
CUU0QTBBRDM5MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2
IC8qIFdvcmtRdWV1ZS5jcHAgKi87IH07CisJCUU0QTBBRDNBMUE5NjI0NTUwMDUzNkRGNiAvKiBX
b3JrUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0QTBBRDM4MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCAqLzsgfTsKKwkJRTRBMEFE
M0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAv
KiBXb3JrUXVldWVDb2NvYS5jcHAgKi87IH07CiAJCUVCOTVFMUYwMTYxQTcyNDEwMDg5QTJGNSAv
KiBCeXRlT3JkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEVCOTVFMUVGMTYxQTcyNDEwMDg5QTJGNSAvKiBCeXRlT3JkZXIuaCAqLzsgfTsKIAkJRkVE
QUNEM0QxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEQUNEM0IxNjMwRjgzRjAwQzY5NjM0IC8q
IFN0YWNrU3RhdHMuY3BwICovOyB9OwogCQlGRURBQ0QzRTE2MzBGODNGMDBDNjk2MzQgLyogU3Rh
Y2tTdGF0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVEQUNEM0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAqLzsgfTsKQEAgLTU3OCw2
ICs1ODEsOSBAQAogCQlDRTczRTAyNDE5RENCN0FCMDA1ODBENUMgLyogWFBDU1BJLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQQ1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxp
dGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9ncmFw
aGljVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE1NTU2RjQx
OEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtRdWV1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0QTBBRDM4MUE5NjI0NTUwMDUzNkRGNiAv
KiBXb3JrUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya1F1ZXVl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0QTBBRDNDMUE5NjI1M0MwMDUzNkRG
NiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBXb3JrUXVldWVDb2NvYS5jcHA7IHBhdGggPSBjb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCOTVFMUVGMTYxQTcyNDEwMDg5QTJGNSAv
KiBCeXRlT3JkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZU9yZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREFDRDNCMTYzMEY4M0YwMEM2OTYz
NCAvKiBTdGFja1N0YXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFN0YWNrU3RhdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRURBQ0QzQzE2
MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdGFja1N0YXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02OTgs
NiArNzA0LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMkNE
RUQwRjAxODExNUMzRjAwNERCQTcwIC8qIGNmICovLAorCQkJCUU0QTBBRDNCMUE5NjI1MTkwMDUz
NkRGNiAvKiBjb2NvYSAqLywKIAkJCQlBOEE0NzI4MTE1MUE4MjVBMDA0MTIzRkYgLyogZHRvYSAq
LywKIAkJCQkxRkE0N0M4NzE1MjUwMkRBMDA1NjhEMUIgLyogaW9zICovLAogCQkJCUE4QTQ3MkM0
MTUxQTgyNUEwMDQxMjNGRiAvKiBtYWMgKi8sCkBAIC04OTYsNiArOTAzLDggQEAKIAkJCQlBOEE0
NzM3MTE1MUE4MjVCMDA0MTIzRkYgLyogVmVjdG9yVHJhaXRzLmggKi8sCiAJCQkJQThBNDczNzIx
NTFBODI1QjAwNDEyM0ZGIC8qIFZNVGFncy5oICovLAogCQkJCTk3NENGQzhEMTZBNEYzMjcwMDZE
NTQwNCAvKiBXZWFrUHRyLmggKi8sCisJCQkJRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdv
cmtRdWV1ZS5jcHAgKi8sCisJCQkJRTRBMEFEMzgxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1
ZS5oICovLAogCQkJCUE4QTQ3MzdBMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNw
cCAqLywKIAkJCQlBOEE0NzM3QjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICov
LAogCQkJKTsKQEAgLTEwMzEsNiArMTA0MCwxNCBAQAogCQkJcGF0aCA9IHNwaTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUU0QTBBRDNCMUE5NjI1MTkwMDUzNkRGNiAvKiBj
b2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRTRB
MEFEM0MxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCAqLywKKwkJCSk7CisJ
CQluYW1lID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogLyogRW5k
IFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2Vj
dGlvbiAqLwpAQCAtMTIyMSw2ICsxMjM4LDcgQEAKIAkJCQlBOEE0NzQ3RjE1MUE4MjVCMDA0MTIz
RkYgLyogVmVjdG9yVHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ4MDE1MUE4MjVC
MDA0MTIzRkYgLyogVk1UYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzRDRkM4RTE2QTRGMzI3
MDA2RDU0MDQgLyogV2Vha1B0ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTRBMEFEM0ExQTk2MjQ1
NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUZBNDdDOEIxNTI1
MDJEQTAwNTY4RDFCIC8qIFdlYkNvcmVUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3
NDQ2MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
QTQ3NDg3MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLywK
QEAgLTEzNTAsNiArMTM2OCw3IEBACiAJCQkJQThBNDczQjAxNTFBODI1QjAwNDEyM0ZGIC8qIGRv
dWJsZS1jb252ZXJzaW9uLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQkExNTFBODI1QjAw
NDEyM0ZGIC8qIGR0b2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4ODVFMEYxODQ1QUVBOTAw
RjFFM0ZBIC8qIEZhc3RCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTRBMEFEM0Qx
QTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QTQ3M0IzMTUxQTgyNUIwMDQxMjNGRiAvKiBmYXN0LWR0b2EuY2MgaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzNDMzE1MUE4MjVCMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNUJBMTVGQTE4MjQzNUE2MDBBODJFNjkgLyogQXRvbWljU3RyaW5nQ0YuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0xMzc4LDYgKzEzOTcsNyBAQAogCQkJCTJDREVEMEVGMTgxMTVD
MzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ2OTQxOTMx
NkVBQUY2RDAwMjRFMTQ2IC8qIFJ1bkxvb3BUaW1lckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QTQ3NDIxMTUxQTgyNUIwMDQxMjNGRiAvKiBTSEExLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUU0QTBBRDM5MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQ2OTQxOTkxNkVBQjA0MTAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpckNGLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0Njk0MTk3MTZFQUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXJN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBNzQ4NzQ1MjE3QTBCREFFMDBGQTA0Q0IgLyogU2l4
Q2hhcmFjdGVySGFzaC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMTEwLDYgKzExMCw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIFZlY3Rv
ci5oCiAgICAgVmVjdG9yVHJhaXRzLmgKICAgICBXVEZUaHJlYWREYXRhLmgKKyAgICBXb3JrUXVl
dWUuaAogICAgIFdlYWtQdHIuaAogICAgIGR0b2EuaAogCkBAIC0xODQsNiArMTg1LDcgQEAgc2V0
KFdURl9TT1VSQ0VTCiAgICAgU3RyaW5nUHJpbnRTdHJlYW0uY3BwCiAgICAgVGhyZWFkaW5nLmNw
cAogICAgIFdURlRocmVhZERhdGEuY3BwCisgICAgV29ya1F1ZXVlLmNwcAogICAgIGR0b2EuY3Bw
CiAKICAgICBkdG9hL2JpZ251bS1kdG9hLmNjCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUdUSy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFr
ZQkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTYsNiArNiw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAK
ICAgICBndGsvTWFpblRocmVhZEd0ay5jcHAKICAgICBndGsvUnVuTG9vcEd0ay5jcHAKKyAgICBn
dGsvV29ya1F1ZXVlR3RrLmNwcAogKQogCiBsaXN0KEFQUEVORCBXVEZfTElCUkFSSUVTCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL1dvcmtRdWV1ZS5jcHAJKHJldmlzaW9uIDE4MDM0MikJKGZyb20gU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vV29ya1F1ZXVlLmNwcDoxODAzNDIpCisrKyBTb3VyY2UvV1RGL3d0Zi9Xb3JrUXVl
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisKK1JlZjxXb3JrUXVldWU+
IFdvcmtRdWV1ZTo6Y3JlYXRlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3JrUXVldWUobmFtZSwgdHlwZSwgcW9zKSk7
Cit9CisKK1dvcmtRdWV1ZTo6V29ya1F1ZXVlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgdHlwZSwg
UU9TIHFvcykKK3sKKyAgICBwbGF0Zm9ybUluaXRpYWxpemUobmFtZSwgdHlwZSwgcW9zKTsKK30K
KworV29ya1F1ZXVlOjp+V29ya1F1ZXVlKCkKK3sKKyAgICBwbGF0Zm9ybUludmFsaWRhdGUoKTsK
K30KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvV29ya1F1ZXVlLmNwcAkod29ya2luZyBjb3B5KQorKysgU291cmNlL1dURi93
dGYvV29ya1F1ZXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgogCituYW1lc3BhY2UgV1RGIHsK
KwogUmVmPFdvcmtRdWV1ZT4gV29ya1F1ZXVlOjpjcmVhdGUoY29uc3QgY2hhciogbmFtZSwgVHlw
ZSB0eXBlLCBRT1MgcW9zKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtRdWV1ZShu
YW1lLCB0eXBlLCBxb3MpKTsKQEAgLTQwLDMgKzQyLDUgQEAgV29ya1F1ZXVlOjp+V29ya1F1ZXVl
KCkKIHsKICAgICBwbGF0Zm9ybUludmFsaWRhdGUoKTsKIH0KKworfQpJbmRleDogU291cmNlL1dU
Ri93dGYvV29ya1F1ZXVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV29ya1F1ZXVl
LmgJKHJldmlzaW9uIDE4MDM0MikJKGZyb20gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1
ZXVlLmg6MTgwMzQyKQorKysgU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1v
dG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdvcmtRdWV1ZV9oCisjZGVmaW5lIFdvcmtRdWV1ZV9oCisKKyNpZiBPUyhEQVJXSU4p
CisjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8Y2hy
b25vPgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
YWwuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQorI2luY2x1ZGUgIlBsYXRmb3Jt
UHJvY2Vzc0lkZW50aWZpZXIuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oR1RLKQorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dNYWluTG9vcFNvdXJjZS5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dSZWZQdHIuaD4KKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVl
RWZsLmg+CisjZW5kaWYKKworY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9u
RGlzcGF0Y2hlciB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgU2Vy
aWFsLAorICAgICAgICBDb25jdXJyZW50CisgICAgfTsKKyAgICBlbnVtIGNsYXNzIFFPUyB7Cisg
ICAgICAgIFVzZXJJbnRlcmFjdGl2ZSwKKyAgICAgICAgVXNlckluaXRpYXRlZCwKKyAgICAgICAg
RGVmYXVsdCwKKyAgICAgICAgVXRpbGl0eSwKKyAgICAgICAgQmFja2dyb3VuZAorICAgIH07Cisg
ICAgCisgICAgc3RhdGljIFJlZjxXb3JrUXVldWU+IGNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBU
eXBlID0gVHlwZTo6U2VyaWFsLCBRT1MgPSBRT1M6OkRlZmF1bHQpOworICAgIHZpcnR1YWwgfldv
cmtRdWV1ZSgpOworCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoKT4pIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFu
b3NlY29uZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOworCisjaWYgT1MoREFSV0lOKQorICAg
IGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0
Y2hRdWV1ZTsgfQorI2VsaWYgUExBVEZPUk0oR1RLKQorICAgIHZvaWQgcmVnaXN0ZXJTb2NrZXRF
dmVudEhhbmRsZXIoaW50LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+LCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+KTsKKyAgICB2b2lkIHVucmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50KTsKKyNl
bGlmIFBMQVRGT1JNKEVGTCkKKyAgICB2b2lkIHJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGlu
dCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU29ja2V0RXZl
bnRIYW5kbGVyKGludCk7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXb3JrUXVl
dWUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKTsKKworICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUyk7CisgICAgdm9pZCBwbGF0Zm9ybUlu
dmFsaWRhdGUoKTsKKworI2lmIE9TKERBUldJTikKKyAgICBzdGF0aWMgdm9pZCBleGVjdXRlRnVu
Y3Rpb24odm9pZCopOworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlOworI2Vs
aWYgUExBVEZPUk0oR1RLKQorICAgIFRocmVhZElkZW50aWZpZXIgbV93b3JrUXVldWVUaHJlYWQ7
CisgICAgR1JlZlB0cjxHTWFpbkNvbnRleHQ+IG1fZXZlbnRDb250ZXh0OworICAgIE11dGV4IG1f
ZXZlbnRMb29wTG9jazsKKyAgICBHUmVmUHRyPEdNYWluTG9vcD4gbV9ldmVudExvb3A7CisgICAg
R01haW5Mb29wU291cmNlIG1fc29ja2V0RXZlbnRTb3VyY2U7CisjZWxpZiBQTEFURk9STShFRkwp
CisgICAgUmVmUHRyPERpc3BhdGNoUXVldWU+IG1fZGlzcGF0Y2hRdWV1ZTsKKyNlbmRpZgorfTsK
KworI2VuZGlmIC8vIFdvcmtRdWV1ZV9oCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAkod29ya2luZyBjb3B5
KQorKysgU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE5
ICsyNywxNyBAQAogI2lmbmRlZiBXb3JrUXVldWVfaAogI2RlZmluZSBXb3JrUXVldWVfaAogCi0j
aWYgT1MoREFSV0lOKQotI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+Ci0jZW5kaWYKLQog
I2luY2x1ZGUgPGNocm9ubz4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKKyNpZiBPUyhEQVJXSU4pCisjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0
Y2guaD4KKyNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAjaW5j
bHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgpAQCAtNTIsNiArNTAsOCBAQAogI2lu
Y2x1ZGUgPERpc3BhdGNoUXVldWVFZmwuaD4KICNlbmRpZgogCituYW1lc3BhY2UgV1RGIHsKKwog
Y2xhc3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiBwdWJs
aWM6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsKQEAgLTY2LDExICs2NiwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIEJhY2tncm91bmQKICAgICB9OwogICAgIAotICAgIHN0YXRpYyBSZWY8V29ya1F1ZXVl
PiBjcmVhdGUoY29uc3QgY2hhciogbmFtZSwgVHlwZSA9IFR5cGU6OlNlcmlhbCwgUU9TID0gUU9T
OjpEZWZhdWx0KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxXb3JrUXVldWU+
IGNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlID0gVHlwZTo6U2VyaWFsLCBRT1MgPSBRT1M6
OkRlZmF1bHQpOwogICAgIHZpcnR1YWwgfldvcmtRdWV1ZSgpOwogCiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pIG92ZXJyaWRlOwotICAgIHZvaWQgZGlz
cGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4pOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJv
bm86Om5hbm9zZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKIAogI2lmIE9TKERBUldJ
TikKICAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBt
X2Rpc3BhdGNoUXVldWU7IH0KQEAgLTEwMiw0ICsxMDIsOCBAQCBwcml2YXRlOgogI2VuZGlmCiB9
OwogCi0jZW5kaWYgLy8gV29ya1F1ZXVlX2gKK30KKwordXNpbmcgV1RGOjpXb3JrUXVldWU7CisK
KyNlbmRpZgpJbmRleDogU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAkocmV2
aXNpb24gMTgwMzQyKQkoZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvV29ya1F1ZXVl
TWFjLmNwcDoxODAzNDIpCisrKyBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrUXVldWUuaCIKKwordm9pZCBXb3JrUXVldWU6OmRp
c3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAgcmVmKCk7Cisg
ICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBmdW5jdGlvbigp
OworICAgICAgICBkZXJlZigpOworICAgIH0pOworfQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0
Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAgcmVmKCk7CisgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlz
cGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgZHVyYXRpb24uY291bnQoKSksIG1fZGlzcGF0
Y2hRdWV1ZSwgXnsKKyAgICAgICAgZnVuY3Rpb24oKTsKKyAgICAgICAgZGVyZWYoKTsKKyAgICB9
KTsKK30KKworI2lmIEhBVkUoUU9TX0NMQVNTRVMpCitzdGF0aWMgZGlzcGF0Y2hfcW9zX2NsYXNz
X3QgZGlzcGF0Y2hRT1NDbGFzcyhXb3JrUXVldWU6OlFPUyBxb3MpCit7CisgICAgc3dpdGNoIChx
b3MpIHsKKyAgICBjYXNlIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmU6CisgICAgICAg
IHJldHVybiBRT1NfQ0xBU1NfVVNFUl9JTlRFUkFDVElWRTsKKyAgICBjYXNlIFdvcmtRdWV1ZTo6
UU9TOjpVc2VySW5pdGlhdGVkOgorICAgICAgICByZXR1cm4gUU9TX0NMQVNTX1VTRVJfSU5JVElB
VEVEOworICAgIGNhc2UgV29ya1F1ZXVlOjpRT1M6OkRlZmF1bHQ6CisgICAgICAgIHJldHVybiBR
T1NfQ0xBU1NfREVGQVVMVDsKKyAgICBjYXNlIFdvcmtRdWV1ZTo6UU9TOjpVdGlsaXR5OgorICAg
ICAgICByZXR1cm4gUU9TX0NMQVNTX1VUSUxJVFk7CisgICAgY2FzZSBXb3JrUXVldWU6OlFPUzo6
QmFja2dyb3VuZDoKKyAgICAgICAgcmV0dXJuIFFPU19DTEFTU19CQUNLR1JPVU5EOworICAgIH0K
K30KKyNlbmRpZgorCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNo
YXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykKK3sKKyAgICBkaXNwYXRjaF9xdWV1ZV9hdHRy
X3QgYXR0ciA9IHR5cGUgPT0gVHlwZTo6Q29uY3VycmVudCA/IERJU1BBVENIX1FVRVVFX0NPTkNV
UlJFTlQgOiBESVNQQVRDSF9RVUVVRV9TRVJJQUw7CisjaWYgSEFWRShRT1NfQ0xBU1NFUykKKyAg
ICBhdHRyID0gZGlzcGF0Y2hfcXVldWVfYXR0cl9tYWtlX3dpdGhfcW9zX2NsYXNzKGF0dHIsIGRp
c3BhdGNoUU9TQ2xhc3MocW9zKSwgMCk7CisjZW5kaWYKKyAgICBtX2Rpc3BhdGNoUXVldWUgPSBk
aXNwYXRjaF9xdWV1ZV9jcmVhdGUobmFtZSwgYXR0cik7CisgICAgZGlzcGF0Y2hfc2V0X2NvbnRl
eHQobV9kaXNwYXRjaFF1ZXVlLCB0aGlzKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBsYXRmb3Jt
SW52YWxpZGF0ZSgpCit7CisgICAgZGlzcGF0Y2hfcmVsZWFzZShtX2Rpc3BhdGNoUXVldWUpOwor
fQpJbmRleDogU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAkod29ya2luZyBj
b3B5KQorKysgU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
V29ya1F1ZXVlLmgiCiAKK25hbWVzcGFjZSBXVEYgeworCiB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0
Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKIHsKICAgICByZWYoKTsKQEAgLTc2
LDMgKzc4LDUgQEAgdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiB7CiAgICAg
ZGlzcGF0Y2hfcmVsZWFzZShtX2Rpc3BhdGNoUXVldWUpOwogfQorCit9CkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9lZmwvV29ya1F1ZXVlRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9lZmwvV29ya1F1ZXVlRWZsLmNwcAkocmV2aXNpb24gMTgwMzQyKQkoZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcDoxODAzNDIpCisrKyBTb3VyY2UvV1RG
L3d0Zi9lZmwvV29ya1F1ZXVlRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBA
CisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrUXVldWUuaCIKKworI2luY2x1ZGUgPERp
c3BhdGNoUXVldWVFZmwuaD4KKyNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVlV29ya0l0ZW1FZmwuaD4K
Kwordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBU
eXBlLCBRT1MpCit7CisgICAgbV9kaXNwYXRjaFF1ZXVlID0gRGlzcGF0Y2hRdWV1ZTo6Y3JlYXRl
KG5hbWUpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKK3sKKyAg
ICBSZWZQdHI8RGlzcGF0Y2hRdWV1ZT4gZGlzcGF0Y2hRdWV1ZSA9IG1fZGlzcGF0Y2hRdWV1ZS5y
ZWxlYXNlKCk7CisgICAgZGlzcGF0Y2hRdWV1ZS0+c3RvcFRocmVhZCgpOworfQorCit2b2lkIFdv
cmtRdWV1ZTo6cmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50IGZpbGVEZXNjcmlwdG9yLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQoreworICAgIGlmICghbV9kaXNwYXRjaFF1
ZXVlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Rpc3BhdGNoUXVldWUtPnNldFNvY2tldEV2
ZW50SGFuZGxlcihmaWxlRGVzY3JpcHRvciwgV1RGOjptb3ZlKGZ1bmN0aW9uKSk7Cit9CisKK3Zv
aWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCBmaWxlRGVzY3Jp
cHRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oZmlsZURlc2NyaXB0b3IpOworCisgICAgaWYgKCFt
X2Rpc3BhdGNoUXVldWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGlzcGF0Y2hRdWV1ZS0+
Y2xlYXJTb2NrZXRFdmVudEhhbmRsZXIoKTsKK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNo
KHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAgaWYgKCFtX2Rpc3BhdGNo
UXVldWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGlzcGF0Y2hRdWV1ZS0+ZGlzcGF0Y2go
V29ya0l0ZW06OmNyZWF0ZSh0aGlzLCBXVEY6Om1vdmUoZnVuY3Rpb24pKSk7Cit9CisKK3ZvaWQg
V29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlv
biwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKK3sKKyAgICBpZiAoIW1fZGlzcGF0
Y2hRdWV1ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kaXNwYXRjaFF1ZXVlLT5kaXNwYXRj
aChUaW1lcldvcmtJdGVtOjpjcmVhdGUodGhpcywgV1RGOjptb3ZlKGZ1bmN0aW9uKSwgZHVyYXRp
b24pKTsKK30KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2d0ay9Xb3JrUXVldWVHdGsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2d0ay9Xb3JrUXVldWVHdGsuY3BwCShyZXZpc2lvbiAx
ODAzNDIpCShmcm9tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3Bw
OjE4MDM0MikKKysrIFNvdXJjZS9XVEYvd3RmL2d0ay9Xb3JrUXVldWVHdGsuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxp
YSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisKK3N0YXRp
YyBjb25zdCBzaXplX3Qga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCA9IDMxOworCit2b2lk
IFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFP
UykKK3sKKyAgICBtX2V2ZW50Q29udGV4dCA9IGFkb3B0R1JlZihnX21haW5fY29udGV4dF9uZXco
KSk7CisgICAgQVNTRVJUKG1fZXZlbnRDb250ZXh0KTsKKyAgICBtX2V2ZW50TG9vcCA9IGFkb3B0
R1JlZihnX21haW5fbG9vcF9uZXcobV9ldmVudENvbnRleHQuZ2V0KCksIEZBTFNFKSk7CisgICAg
QVNTRVJUKG1fZXZlbnRMb29wKTsKKworICAgIC8vIFRoaXMgbmFtZSBjYW4gYmUgY29tLmFwcGxl
LldlYktpdC5Qcm9jZXNzTGF1bmNoZXIgb3IgY29tLmFwcGxlLkNvcmVJUEMuUmVjZWl2ZVF1ZXVl
LgorICAgIC8vIFdlIGFyZSB1c2luZyB0aG9zZSBuYW1lcyBmb3IgdGhlIHRocmVhZCBuYW1lLCBi
dXQgYm90aCBhcmUgbG9uZ2VyIHRoYW4gMzEgY2hhcmFjdGVycywKKyAgICAvLyB3aGljaCBpcyB0
aGUgbGltaXQgb2YgVmlzdWFsIFN0dWRpbyBmb3IgdGhyZWFkIG5hbWVzLgorICAgIC8vIFdoZW4g
bG9nIGlzIGVuYWJsZWQgY3JlYXRlVGhyZWFkKCkgd2lsbCBhc3NlcnQgaW5zdGVhZCBvZiB0cnVu
Y2F0ZSB0aGUgbmFtZSwgc28gd2UgbmVlZAorICAgIC8vIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCB1
c2UgYSBuYW1lIGxvbmdlciB0aGFuIDMxIGNoYXJhY3RlcnMuCisgICAgY29uc3QgY2hhciogdGhy
ZWFkTmFtZSA9IGdfc3RycnN0cihuYW1lLCAiLiIpOworICAgIGlmICh0aHJlYWROYW1lKQorICAg
ICAgICB0aHJlYWROYW1lKys7CisgICAgZWxzZQorICAgICAgICB0aHJlYWROYW1lID0gbmFtZTsK
KyAgICBpZiAoc3RybGVuKHRocmVhZE5hbWUpID4ga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1p
dCkKKyAgICAgICAgdGhyZWFkTmFtZSArPSBzdHJsZW4odGhyZWFkTmFtZSkgLSBrVmlzdWFsU3R1
ZGlvVGhyZWFkTmFtZUxpbWl0OworCisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gcHJvdGVjdG9yKHRo
aXMpOworICAgIG1fd29ya1F1ZXVlVGhyZWFkID0gY3JlYXRlVGhyZWFkKHRocmVhZE5hbWUsIFtw
cm90ZWN0b3JdIHsgZ19tYWluX2xvb3BfcnVuKHByb3RlY3Rvci0+bV9ldmVudExvb3AuZ2V0KCkp
OyB9KTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAg
aWYgKG1fd29ya1F1ZXVlVGhyZWFkKSB7CisgICAgICAgIGRldGFjaFRocmVhZChtX3dvcmtRdWV1
ZVRocmVhZCk7CisgICAgICAgIG1fd29ya1F1ZXVlVGhyZWFkID0gMDsKKyAgICB9CisKKyAgICBN
dXRleExvY2tlciBsb2NrZXIobV9ldmVudExvb3BMb2NrKTsKKyAgICBpZiAobV9ldmVudExvb3Ap
IHsKKyAgICAgICAgaWYgKGdfbWFpbl9sb29wX2lzX3J1bm5pbmcobV9ldmVudExvb3AuZ2V0KCkp
KQorICAgICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX2V2ZW50TG9vcC5nZXQoKSk7CisgICAg
ICAgIG1fZXZlbnRMb29wLmNsZWFyKCk7CisgICAgfQorCisgICAgbV9ldmVudENvbnRleHQuY2xl
YXIoKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGlu
dCBmaWxlRGVzY3JpcHRvciwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbiwgc3RkOjpm
dW5jdGlvbjx2b2lkICgpPiBjbG9zZUZ1bmN0aW9uKQoreworICAgIEdSZWZQdHI8R1NvY2tldD4g
c29ja2V0ID0gYWRvcHRHUmVmKGdfc29ja2V0X25ld19mcm9tX2ZkKGZpbGVEZXNjcmlwdG9yLCAw
KSk7CisgICAgcmVmKCk7CisgICAgbV9zb2NrZXRFdmVudFNvdXJjZS5zY2hlZHVsZSgiW1dlYktp
dF0gV29ya1F1ZXVlOjpTb2NrZXRFdmVudEhhbmRsZXIiLCBbZnVuY3Rpb24sIGNsb3NlRnVuY3Rp
b25dKEdJT0NvbmRpdGlvbiBjb25kaXRpb24pIHsKKyAgICAgICAgICAgIGlmIChjb25kaXRpb24g
JiBHX0lPX0hVUCB8fCBjb25kaXRpb24gJiBHX0lPX0VSUiB8fCBjb25kaXRpb24gJiBHX0lPX05W
QUwpIHsKKyAgICAgICAgICAgICAgICBjbG9zZUZ1bmN0aW9uKCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIEdNYWluTG9vcFNvdXJjZTo6U3RvcDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKGNvbmRpdGlvbiAmIEdfSU9fSU4pIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbigp
OworICAgICAgICAgICAgICAgIHJldHVybiBHTWFpbkxvb3BTb3VyY2U6OkNvbnRpbnVlOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBHTWFpbkxvb3BTb3VyY2U6OlN0b3A7CisgICAgICAgIH0sIHNvY2tldC5nZXQo
KSwgR19JT19JTiwKKyAgICAgICAgW3RoaXNdIHsgZGVyZWYoKTsgfSwKKyAgICAgICAgbV9ldmVu
dENvbnRleHQuZ2V0KCkpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6dW5yZWdpc3RlclNvY2tldEV2
ZW50SGFuZGxlcihpbnQpCit7CisgICAgbV9zb2NrZXRFdmVudFNvdXJjZS5jYW5jZWwoKTsKK30K
Kwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rp
b24pCit7CisgICAgcmVmKCk7CisgICAgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFuZERlbGV0
ZU9uRGVzdHJveSgiW1dlYktpdF0gV29ya1F1ZXVlOjpkaXNwYXRjaCIsIFdURjo6bW92ZShmdW5j
dGlvbiksIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgICAgW3RoaXNdIHsgZGVyZWYoKTsgfSwg
bV9ldmVudENvbnRleHQuZ2V0KCkpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRl
cihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4gZnVuY3Rpb24pCit7CisgICAgcmVmKCk7CisgICAgR01haW5Mb29wU291cmNlOjpzY2hlZHVs
ZUFmdGVyRGVsYXlBbmREZWxldGVPbkRlc3Ryb3koIltXZWJLaXRdIFdvcmtRdWV1ZTo6ZGlzcGF0
Y2hBZnRlciIsIFdURjo6bW92ZShmdW5jdGlvbiksCisgICAgICAgIHN0ZDo6Y2hyb25vOjpkdXJh
dGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KGR1cmF0aW9uKSwgR19QUklPUklU
WV9ERUZBVUxULCBbdGhpc10geyBkZXJlZigpOyB9LCBtX2V2ZW50Q29udGV4dC5nZXQoKSk7Cit9
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAxNS0wMi0xOSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBXb3JrUXVldWUgZnJv
bSBXSzIgdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDE3OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFz
ZVByb2Nlc3MuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAg
ICAqIFBsYXRmb3JtL1dvcmtRdWV1ZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogUGxhdGZvcm0v
V29ya1F1ZXVlLmg6IFJlbW92ZWQuCisgICAgICAgICogUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVm
bC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogUGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogUGxhdGZvcm0vbWFjL1dvcmtRdWV1ZU1hYy5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1HVEsu
Y21ha2U6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVBy
b3RvY29sTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1
bmNoZXIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFz
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIu
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAg
ICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE1LTAyLTE4ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl1baU9TXSBGaXgg
TmV0d29ya0NhY2hlIGJ1aWxkCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTgw
MzQyKQorKysgU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTE4MSw3ICsxODEsNiBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBQbGF0Zm9ybS9Mb2dn
aW5nLmNwcAogICAgIFBsYXRmb3JtL01vZHVsZS5jcHAKLSAgICBQbGF0Zm9ybS9Xb3JrUXVldWUu
Y3BwCiAKICAgICBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCiAgICAgUGxhdGZvcm0v
SVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCShy
ZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQkod29y
a2luZyBjb3B5KQpAQCAtMTEsNyArMTEsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMK
ICAgICBQbGF0Zm9ybS9lZmwvRGlzcGF0Y2hRdWV1ZUVmbC5jcHAKICAgICBQbGF0Zm9ybS9lZmwv
TG9nZ2luZ0VmbC5jcHAKICAgICBQbGF0Zm9ybS9lZmwvTW9kdWxlRWZsLmNwcAotICAgIFBsYXRm
b3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwCiAKICAgICBQbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9y
eVVuaXguY3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCShyZXZpc2lvbiAxODAz
NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQkod29ya2luZyBjb3B5KQpA
QCAtMzAsNyArMzAsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFBsYXRm
b3JtL2d0ay9Mb2dnaW5nR3RrLmNwcAogICAgIFBsYXRmb3JtL2d0ay9Nb2R1bGVHdGsuY3BwCi0g
ICAgUGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHAKIAogICAgIFBsYXRmb3JtL3VuaXgvU2hh
cmVkTWVtb3J5VW5peC5jcHAKIApJbmRleDogU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0RhdGFiYXNlUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0RhdGFiYXNl
UHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dl
YktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSAiV2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50
LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKLWNsYXNzIFdvcmtRdWV1ZTsK
LQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEFzeW5jVGFzazsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vV29ya1F1ZXVlLmNwcAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0MiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtRdWV1
ZS5oIgotCi1SZWY8V29ya1F1ZXVlPiBXb3JrUXVldWU6OmNyZWF0ZShjb25zdCBjaGFyKiBuYW1l
LCBUeXBlIHR5cGUsIFFPUyBxb3MpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29ya1F1
ZXVlKG5hbWUsIHR5cGUsIHFvcykpOwotfQotCi1Xb3JrUXVldWU6OldvcmtRdWV1ZShjb25zdCBj
aGFyKiBuYW1lLCBUeXBlIHR5cGUsIFFPUyBxb3MpCi17Ci0gICAgcGxhdGZvcm1Jbml0aWFsaXpl
KG5hbWUsIHR5cGUsIHFvcyk7Ci19Ci0KLVdvcmtRdWV1ZTo6fldvcmtRdWV1ZSgpCi17Ci0gICAg
cGxhdGZvcm1JbnZhbGlkYXRlKCk7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9X
b3JrUXVldWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVl
dWUuaAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1
ZXVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogUG9ydGlvbnMgQ29w
eXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdvcmtRdWV1ZV9oCi0jZGVmaW5lIFdvcmtRdWV1ZV9o
Ci0KLSNpZiBPUyhEQVJXSU4pCi0jaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KLSNlbmRp
ZgotCi0jaW5jbHVkZSA8Y2hyb25vPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg+Ci0jaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KLQotI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQot
I2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCIKLSNlbmRpZgotCi0jaWYgUExB
VEZPUk0oR1RLKQotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dNYWluTG9vcFNvdXJjZS5oPgotI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KLSNlbGlmIFBMQVRGT1JNKEVGTCkKLSNpbmNs
dWRlIDxEaXNwYXRjaFF1ZXVlRWZsLmg+Ci0jZW5kaWYKLQotY2xhc3MgV29ya1F1ZXVlIGZpbmFs
IDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBU
eXBlIHsKLSAgICAgICAgU2VyaWFsLAotICAgICAgICBDb25jdXJyZW50Ci0gICAgfTsKLSAgICBl
bnVtIGNsYXNzIFFPUyB7Ci0gICAgICAgIFVzZXJJbnRlcmFjdGl2ZSwKLSAgICAgICAgVXNlcklu
aXRpYXRlZCwKLSAgICAgICAgRGVmYXVsdCwKLSAgICAgICAgVXRpbGl0eSwKLSAgICAgICAgQmFj
a2dyb3VuZAotICAgIH07Ci0gICAgCi0gICAgc3RhdGljIFJlZjxXb3JrUXVldWU+IGNyZWF0ZShj
b25zdCBjaGFyKiBuYW1lLCBUeXBlID0gVHlwZTo6U2VyaWFsLCBRT1MgPSBRT1M6OkRlZmF1bHQp
OwotICAgIHZpcnR1YWwgfldvcmtRdWV1ZSgpOwotCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
KHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pIG92ZXJyaWRlOwotICAgIHZvaWQgZGlzcGF0Y2hBZnRl
cihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOwotCi0j
aWYgT1MoREFSV0lOKQotICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZTsgfQotI2VsaWYgUExBVEZPUk0oR1RLKQotICAgIHZv
aWQgcmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKLSAgICB2b2lkIHVucmVnaXN0ZXJTb2NrZXRFdmVu
dEhhbmRsZXIoaW50KTsKLSNlbGlmIFBMQVRGT1JNKEVGTCkKLSAgICB2b2lkIHJlZ2lzdGVyU29j
a2V0RXZlbnRIYW5kbGVyKGludCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7Ci0gICAgdm9pZCB1
bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCk7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBXb3JrUXVldWUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKTsKLQotICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUyk7Ci0g
ICAgdm9pZCBwbGF0Zm9ybUludmFsaWRhdGUoKTsKLQotI2lmIE9TKERBUldJTikKLSAgICBzdGF0
aWMgdm9pZCBleGVjdXRlRnVuY3Rpb24odm9pZCopOwotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9k
aXNwYXRjaFF1ZXVlOwotI2VsaWYgUExBVEZPUk0oR1RLKQotICAgIFRocmVhZElkZW50aWZpZXIg
bV93b3JrUXVldWVUaHJlYWQ7Ci0gICAgR1JlZlB0cjxHTWFpbkNvbnRleHQ+IG1fZXZlbnRDb250
ZXh0OwotICAgIE11dGV4IG1fZXZlbnRMb29wTG9jazsKLSAgICBHUmVmUHRyPEdNYWluTG9vcD4g
bV9ldmVudExvb3A7Ci0gICAgR01haW5Mb29wU291cmNlIG1fc29ja2V0RXZlbnRTb3VyY2U7Ci0j
ZWxpZiBQTEFURk9STShFRkwpCi0gICAgUmVmUHRyPERpc3BhdGNoUXVldWU+IG1fZGlzcGF0Y2hR
dWV1ZTsKLSNlbmRpZgotfTsKLQotI2VuZGlmIC8vIFdvcmtRdWV1ZV9oCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgJKHJldmlzaW9uIDE4MDM0MikKKysrIFNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDExICszMywxMiBAQAogI2luY2x1ZGUgIk1lc3NhZ2VFbmNvZGVyLmgiCiAjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1R5cGUuaCIKLSNpbmNsdWRlICJX
b3JrUXVldWUuaCIKICNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8Y29uZGl0aW9uX3Zhcmlh
YmxlPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgT1MoREFSV0lOKQpJbmRleDogU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAJKHJldmlzaW9uIDE4MDM0
MikKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEyIFNh
bXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldv
cmtRdWV1ZS5oIgotCi0jaW5jbHVkZSA8RGlzcGF0Y2hRdWV1ZUVmbC5oPgotI2luY2x1ZGUgPERp
c3BhdGNoUXVldWVXb3JrSXRlbUVmbC5oPgotCi12b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0
aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUykKLXsKLSAgICBtX2Rpc3BhdGNoUXVl
dWUgPSBEaXNwYXRjaFF1ZXVlOjpjcmVhdGUobmFtZSk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpw
bGF0Zm9ybUludmFsaWRhdGUoKQotewotICAgIFJlZlB0cjxEaXNwYXRjaFF1ZXVlPiBkaXNwYXRj
aFF1ZXVlID0gbV9kaXNwYXRjaFF1ZXVlLnJlbGVhc2UoKTsKLSAgICBkaXNwYXRjaFF1ZXVlLT5z
dG9wVGhyZWFkKCk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpyZWdpc3RlclNvY2tldEV2ZW50SGFu
ZGxlcihpbnQgZmlsZURlc2NyaXB0b3IsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24p
Ci17Ci0gICAgaWYgKCFtX2Rpc3BhdGNoUXVldWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1f
ZGlzcGF0Y2hRdWV1ZS0+c2V0U29ja2V0RXZlbnRIYW5kbGVyKGZpbGVEZXNjcmlwdG9yLCBXVEY6
Om1vdmUoZnVuY3Rpb24pKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OnVucmVnaXN0ZXJTb2NrZXRF
dmVudEhhbmRsZXIoaW50IGZpbGVEZXNjcmlwdG9yKQotewotICAgIFVOVVNFRF9QQVJBTShmaWxl
RGVzY3JpcHRvcik7Ci0KLSAgICBpZiAoIW1fZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9kaXNwYXRjaFF1ZXVlLT5jbGVhclNvY2tldEV2ZW50SGFuZGxlcigpOwotfQot
Ci12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlv
bikKLXsKLSAgICBpZiAoIW1fZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bV9kaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaChXb3JrSXRlbTo6Y3JlYXRlKHRoaXMsIFdURjo6bW92
ZShmdW5jdGlvbikpKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpj
aHJvbm86Om5hbm9zZWNvbmRzIGR1cmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0
aW9uKQotewotICAgIGlmICghbV9kaXNwYXRjaFF1ZXVlKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX2Rpc3BhdGNoUXVldWUtPmRpc3BhdGNoKFRpbWVyV29ya0l0ZW06OmNyZWF0ZSh0aGlzLCBX
VEY6Om1vdmUoZnVuY3Rpb24pLCBkdXJhdGlvbikpOwotfQpJbmRleDogU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHAJKHJldmlzaW9uIDE4MDM0MikKKysrIFNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDExNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV29ya1F1ZXVlLmgiCi0KLSNpbmNsdWRlIDxnaW8vZ2lvLmg+Ci0KLXN0YXRpYyBjb25z
dCBzaXplX3Qga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCA9IDMxOwotCi12b2lkIFdvcmtR
dWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUykKLXsK
LSAgICBtX2V2ZW50Q29udGV4dCA9IGFkb3B0R1JlZihnX21haW5fY29udGV4dF9uZXcoKSk7Ci0g
ICAgQVNTRVJUKG1fZXZlbnRDb250ZXh0KTsKLSAgICBtX2V2ZW50TG9vcCA9IGFkb3B0R1JlZihn
X21haW5fbG9vcF9uZXcobV9ldmVudENvbnRleHQuZ2V0KCksIEZBTFNFKSk7Ci0gICAgQVNTRVJU
KG1fZXZlbnRMb29wKTsKLQotICAgIC8vIFRoaXMgbmFtZSBjYW4gYmUgY29tLmFwcGxlLldlYktp
dC5Qcm9jZXNzTGF1bmNoZXIgb3IgY29tLmFwcGxlLkNvcmVJUEMuUmVjZWl2ZVF1ZXVlLgotICAg
IC8vIFdlIGFyZSB1c2luZyB0aG9zZSBuYW1lcyBmb3IgdGhlIHRocmVhZCBuYW1lLCBidXQgYm90
aCBhcmUgbG9uZ2VyIHRoYW4gMzEgY2hhcmFjdGVycywKLSAgICAvLyB3aGljaCBpcyB0aGUgbGlt
aXQgb2YgVmlzdWFsIFN0dWRpbyBmb3IgdGhyZWFkIG5hbWVzLgotICAgIC8vIFdoZW4gbG9nIGlz
IGVuYWJsZWQgY3JlYXRlVGhyZWFkKCkgd2lsbCBhc3NlcnQgaW5zdGVhZCBvZiB0cnVuY2F0ZSB0
aGUgbmFtZSwgc28gd2UgbmVlZAotICAgIC8vIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCB1c2UgYSBu
YW1lIGxvbmdlciB0aGFuIDMxIGNoYXJhY3RlcnMuCi0gICAgY29uc3QgY2hhciogdGhyZWFkTmFt
ZSA9IGdfc3RycnN0cihuYW1lLCAiLiIpOwotICAgIGlmICh0aHJlYWROYW1lKQotICAgICAgICB0
aHJlYWROYW1lKys7Ci0gICAgZWxzZQotICAgICAgICB0aHJlYWROYW1lID0gbmFtZTsKLSAgICBp
ZiAoc3RybGVuKHRocmVhZE5hbWUpID4ga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCkKLSAg
ICAgICAgdGhyZWFkTmFtZSArPSBzdHJsZW4odGhyZWFkTmFtZSkgLSBrVmlzdWFsU3R1ZGlvVGhy
ZWFkTmFtZUxpbWl0OwotCi0gICAgUmVmUHRyPFdvcmtRdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOwot
ICAgIG1fd29ya1F1ZXVlVGhyZWFkID0gY3JlYXRlVGhyZWFkKHRocmVhZE5hbWUsIFtwcm90ZWN0
b3JdIHsgZ19tYWluX2xvb3BfcnVuKHByb3RlY3Rvci0+bV9ldmVudExvb3AuZ2V0KCkpOyB9KTsK
LX0KLQotdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCi17Ci0gICAgaWYgKG1f
d29ya1F1ZXVlVGhyZWFkKSB7Ci0gICAgICAgIGRldGFjaFRocmVhZChtX3dvcmtRdWV1ZVRocmVh
ZCk7Ci0gICAgICAgIG1fd29ya1F1ZXVlVGhyZWFkID0gMDsKLSAgICB9Ci0KLSAgICBNdXRleExv
Y2tlciBsb2NrZXIobV9ldmVudExvb3BMb2NrKTsKLSAgICBpZiAobV9ldmVudExvb3ApIHsKLSAg
ICAgICAgaWYgKGdfbWFpbl9sb29wX2lzX3J1bm5pbmcobV9ldmVudExvb3AuZ2V0KCkpKQotICAg
ICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX2V2ZW50TG9vcC5nZXQoKSk7Ci0gICAgICAgIG1f
ZXZlbnRMb29wLmNsZWFyKCk7Ci0gICAgfQotCi0gICAgbV9ldmVudENvbnRleHQuY2xlYXIoKTsK
LX0KLQotdm9pZCBXb3JrUXVldWU6OnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCBmaWxl
RGVzY3JpcHRvciwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbiwgc3RkOjpmdW5jdGlv
bjx2b2lkICgpPiBjbG9zZUZ1bmN0aW9uKQotewotICAgIEdSZWZQdHI8R1NvY2tldD4gc29ja2V0
ID0gYWRvcHRHUmVmKGdfc29ja2V0X25ld19mcm9tX2ZkKGZpbGVEZXNjcmlwdG9yLCAwKSk7Ci0g
ICAgcmVmKCk7Ci0gICAgbV9zb2NrZXRFdmVudFNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF0gV29y
a1F1ZXVlOjpTb2NrZXRFdmVudEhhbmRsZXIiLCBbZnVuY3Rpb24sIGNsb3NlRnVuY3Rpb25dKEdJ
T0NvbmRpdGlvbiBjb25kaXRpb24pIHsKLSAgICAgICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lP
X0hVUCB8fCBjb25kaXRpb24gJiBHX0lPX0VSUiB8fCBjb25kaXRpb24gJiBHX0lPX05WQUwpIHsK
LSAgICAgICAgICAgICAgICBjbG9zZUZ1bmN0aW9uKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IEdNYWluTG9vcFNvdXJjZTo6U3RvcDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYg
KGNvbmRpdGlvbiAmIEdfSU9fSU4pIHsKLSAgICAgICAgICAgICAgICBmdW5jdGlvbigpOwotICAg
ICAgICAgICAgICAgIHJldHVybiBHTWFpbkxvb3BTb3VyY2U6OkNvbnRpbnVlOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJl
dHVybiBHTWFpbkxvb3BTb3VyY2U6OlN0b3A7Ci0gICAgICAgIH0sIHNvY2tldC5nZXQoKSwgR19J
T19JTiwKLSAgICAgICAgW3RoaXNdIHsgZGVyZWYoKTsgfSwKLSAgICAgICAgbV9ldmVudENvbnRl
eHQuZ2V0KCkpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6dW5yZWdpc3RlclNvY2tldEV2ZW50SGFu
ZGxlcihpbnQpCi17Ci0gICAgbV9zb2NrZXRFdmVudFNvdXJjZS5jYW5jZWwoKTsKLX0KLQotdm9p
ZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCi17
Ci0gICAgcmVmKCk7Ci0gICAgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFuZERlbGV0ZU9uRGVz
dHJveSgiW1dlYktpdF0gV29ya1F1ZXVlOjpkaXNwYXRjaCIsIFdURjo6bW92ZShmdW5jdGlvbiks
IEdfUFJJT1JJVFlfREVGQVVMVCwKLSAgICAgICAgW3RoaXNdIHsgZGVyZWYoKTsgfSwgbV9ldmVu
dENvbnRleHQuZ2V0KCkpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6
OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVu
Y3Rpb24pCi17Ci0gICAgcmVmKCk7Ci0gICAgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFmdGVy
RGVsYXlBbmREZWxldGVPbkRlc3Ryb3koIltXZWJLaXRdIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRl
ciIsIFdURjo6bW92ZShmdW5jdGlvbiksCi0gICAgICAgIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9j
YXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KGR1cmF0aW9uKSwgR19QUklPUklUWV9ERUZB
VUxULCBbdGhpc10geyBkZXJlZigpOyB9LCBtX2V2ZW50Q29udGV4dC5nZXQoKSk7Ci19CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvV29ya1F1ZXVlTWFjLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvV29ya1F1ZXVlTWFjLmNwcAkocmV2aXNp
b24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1dvcmtRdWV1ZU1hYy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXb3JrUXVldWUuaCIKLQotdm9pZCBXb3JrUXVldWU6OmRp
c3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCi17Ci0gICAgcmVmKCk7Ci0g
ICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBeewotICAgICAgICBmdW5jdGlvbigp
OwotICAgICAgICBkZXJlZigpOwotICAgIH0pOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0
Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4gZnVuY3Rpb24pCi17Ci0gICAgcmVmKCk7Ci0gICAgZGlzcGF0Y2hfYWZ0ZXIoZGlz
cGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgZHVyYXRpb24uY291bnQoKSksIG1fZGlzcGF0
Y2hRdWV1ZSwgXnsKLSAgICAgICAgZnVuY3Rpb24oKTsKLSAgICAgICAgZGVyZWYoKTsKLSAgICB9
KTsKLX0KLQotI2lmIEhBVkUoUU9TX0NMQVNTRVMpCi1zdGF0aWMgZGlzcGF0Y2hfcW9zX2NsYXNz
X3QgZGlzcGF0Y2hRT1NDbGFzcyhXb3JrUXVldWU6OlFPUyBxb3MpCi17Ci0gICAgc3dpdGNoIChx
b3MpIHsKLSAgICBjYXNlIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmU6Ci0gICAgICAg
IHJldHVybiBRT1NfQ0xBU1NfVVNFUl9JTlRFUkFDVElWRTsKLSAgICBjYXNlIFdvcmtRdWV1ZTo6
UU9TOjpVc2VySW5pdGlhdGVkOgotICAgICAgICByZXR1cm4gUU9TX0NMQVNTX1VTRVJfSU5JVElB
VEVEOwotICAgIGNhc2UgV29ya1F1ZXVlOjpRT1M6OkRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBR
T1NfQ0xBU1NfREVGQVVMVDsKLSAgICBjYXNlIFdvcmtRdWV1ZTo6UU9TOjpVdGlsaXR5OgotICAg
ICAgICByZXR1cm4gUU9TX0NMQVNTX1VUSUxJVFk7Ci0gICAgY2FzZSBXb3JrUXVldWU6OlFPUzo6
QmFja2dyb3VuZDoKLSAgICAgICAgcmV0dXJuIFFPU19DTEFTU19CQUNLR1JPVU5EOwotICAgIH0K
LX0KLSNlbmRpZgotCi12b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNo
YXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykKLXsKLSAgICBkaXNwYXRjaF9xdWV1ZV9hdHRy
X3QgYXR0ciA9IHR5cGUgPT0gVHlwZTo6Q29uY3VycmVudCA/IERJU1BBVENIX1FVRVVFX0NPTkNV
UlJFTlQgOiBESVNQQVRDSF9RVUVVRV9TRVJJQUw7Ci0jaWYgSEFWRShRT1NfQ0xBU1NFUykKLSAg
ICBhdHRyID0gZGlzcGF0Y2hfcXVldWVfYXR0cl9tYWtlX3dpdGhfcW9zX2NsYXNzKGF0dHIsIGRp
c3BhdGNoUU9TQ2xhc3MocW9zKSwgMCk7Ci0jZW5kaWYKLSAgICBtX2Rpc3BhdGNoUXVldWUgPSBk
aXNwYXRjaF9xdWV1ZV9jcmVhdGUobmFtZSwgYXR0cik7Ci0gICAgZGlzcGF0Y2hfc2V0X2NvbnRl
eHQobV9kaXNwYXRjaFF1ZXVlLCB0aGlzKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OnBsYXRmb3Jt
SW52YWxpZGF0ZSgpCi17Ci0gICAgZGlzcGF0Y2hfcmVsZWFzZShtX2Rpc3BhdGNoUXVldWUpOwot
fQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1
c3RvbVByb3RvY29sTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaAkocmV2aXNp
b24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3
IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3Vw
cGxlbWVudC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCi0jaW5jbHVkZSAi
V29ya1F1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAko
cmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1By
b2Nlc3NMYXVuY2hlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKIAotI2luY2x1ZGUg
IldvcmtRdWV1ZS5oIgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4gCisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xv
Y2FsU3RvcmFnZURhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDE4MDM0MikK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkxvY2FsU3Rv
cmFnZURhdGFiYXNlLmgiCiAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIu
aCIKLSNpbmNsdWRlICJXb3JrUXVldWUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU1FMaXRlVHJhbnNhY3Rpb24uaD4KQEAgLTM1LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1N0b3JhZ2VNYXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1ZGRlblRlcm1pbmF0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmgJKHJldmlzaW9uIDE4MDM0MikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KLQotY2xhc3MgV29ya1F1ZXVlOworI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2VjdXJpdHlPcmlnaW47CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlci5jcHAJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDExICsyNywxMSBAQAogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5oIgogCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGV0YWlscy5oIgotI2lu
Y2x1ZGUgIldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaAko
cmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV29y
a1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zOCw4ICszOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogfQogCi1jbGFzcyBXb3JrUXVldWU7Ci0KIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgTG9jYWxTdG9yYWdlRGV0YWlsczsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAJ
KHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDExIEBACiAjaW5j
bHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2Vy
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlICJXb3Jr
UXVldWUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU3RvcmFnZU1hcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5n
Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbmNs
dWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyLmgJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMy
LDYgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLWNsYXNzIFdvcmtRdWV1ZTsKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODAzNDIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTEyMjMsNyArMTIyMyw2IEBACiAJCUI2MzQwM0Y5MTQ5MTBENTcwMDEw
NzBCNSAvKiBBUElPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjYzNDAzRjgxNDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgKi87
IH07CiAJCUI4NzhCNjE1MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4NzhCNjEzMTMzNDI4
REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAqLzsgfTsKIAkJQjg3OEI2MTYxMzM0MjhE
QzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4NzhCNjE0MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0
aW9uUGFuZWwubW0gKi87IH07Ci0JCUJDMDA5MkY4MTE1ODM3QTMwMEUwQUUyQSAvKiBXb3JrUXVl
dWVNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMwMDkyRjYxMTU4MzdBMzAwRTBBRTJBIC8qIFdvcmtRdWV1ZU1hYy5jcHAgKi87IH07CiAJCUJD
MDE3RDA3MTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTURvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAxN0NGRjE2MjYwRkY0MDA3MDU0RjUg
LyogV0tET01Eb2N1bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUJDMDE3RDA4MTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTURvY3VtZW50Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMTdEMDAx
NjI2MEZGNDAwNzA1NEY1IC8qIFdLRE9NRG9jdW1lbnQubW0gKi87IH07CiAJCUJDMDE3RDA5MTYy
NjBGRjQwMDcwNTRGNSAvKiBXS0RPTUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDE3RDAxMTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTUVs
ZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTMyMiw4ICsxMzIxLDYgQEAKIAkJQkMyNjUyMTcxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdp
bmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMjY1MjEzMTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmggKi87IH07
CiAJCUJDMkQwMjE3MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyRDAy
MTYxMkFDNDFDQjAwRTczMkEzIC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggKi87IH07
CiAJCUJDMkQwMjE5MTJBQzQyNkMwMEU3MzJBMyAvKiBXS1BhZ2VMb2FkVHlwZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkQwMjE4MTJBQzQyNkMw
MEU3MzJBMyAvKiBXS1BhZ2VMb2FkVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQlCQzJFNkU4RDExNDE5NzE1MDBBNjNCMUUgLyogV29ya1F1
ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MkU2RTdEMTE0MTk3MEMwMEE2M0IxRSAvKiBXb3JrUXVldWUuY3BwICovOyB9OwotCQlCQzJFNkU4
RTExNDE5NzE1MDBBNjNCMUUgLyogV29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJFNkU3RTExNDE5NzBDMDBBNjNCMUUgLyogV29ya1F1
ZXVlLmggKi87IH07CiAJCUJDMzA2NUZBMTI1OTM0NEUwMEU3MTI3OCAvKiBDYWNoZU1vZGVsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNjVGOTEy
NTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oICovOyB9OwogCQlCQzMwNjZCRTEyNUE0NDIx
MDBFNzEyNzggLyogV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNjZCQzEyNUE0NDIxMDBFNzEyNzgg
LyogV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUJDMzA2NkJGMTI1QTQ0
MjEwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA2NkJEMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQ
cm9jZXNzTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTM0MDYsNyArMzQwMyw2IEBACiAJCUI2MzQwM0Y4
MTQ5MTBENTcwMDEwNzBCNSAvKiBBUElPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQVBJT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjg3OEI2MTMxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JyZWN0aW9uUGFuZWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjg3OEI2MTQxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25Q
YW5lbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvcnJlY3Rp
b25QYW5lbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMwMDkyRjYxMTU4MzdB
MzAwRTBBRTJBIC8qIFdvcmtRdWV1ZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXb3JrUXVldWVNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzAxN0NGRjE2MjYwRkY0MDA3MDU0RjUgLyogV0tET01Eb2N1bWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS0RPTURvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDMDE3RDAwMTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTURvY3VtZW50Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tET01Eb2N1bWVudC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMTdEMDExNjI2MEZGNDAwNzA1NEY1
IC8qIFdLRE9NRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0RP
TUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1MTAsOCArMzUwNiw2
IEBACiAJCUJDMjY1MjEzMTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYXdpbmdBcmVhUHJveHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRDAyMTYxMkFDNDFDQjAwRTczMkEzIC8qIFNhbWVE
b2N1bWVudE5hdmlnYXRpb25UeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDMkQwMjE4MTJBQzQyNkMwMEU3MzJBMyAvKiBXS1BhZ2VMb2FkVHlwZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlTG9hZFR5cGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUJDMkU2RTdEMTE0MTk3MEMwMEE2M0IxRSAvKiBXb3JrUXVldWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya1F1ZXVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMyRTZFN0UxMTQxOTcwQzAwQTYzQjFFIC8q
IFdvcmtRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrUXVldWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzMDY1RjkxMjU5MzQ0RTAwRTcxMjc4
IC8qIENhY2hlTW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVN
b2RlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMwNjZCOTEyNUE0MzYzMDBF
NzEyNzggLyogV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMw
NjZCQzEyNUE0NDIxMDBFNzEyNzggLyogV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQcm9jZXNzTWVzc2FnZVJlY2Vp
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1NTgsNyArNDU1Miw2IEBA
CiAJCQkJMUEyNEJGMzkxMjA4OTZBNjAwRkJCMDU5IC8qIFNoYXJlZE1lbW9yeU1hYy5jcHAgKi8s
CiAJCQkJMjk2QkQ4NUIxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oICovLAog
CQkJCTI5NkJEODVDMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi8sCi0J
CQkJQkMwMDkyRjYxMTU4MzdBMzAwRTBBRTJBIC8qIFdvcmtRdWV1ZU1hYy5jcHAgKi8sCiAJCQkp
OwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC02NjA5LDgg
KzY2MDIsNiBAQAogCQkJCUMwRTNBQTQ0MTIwOUUyQkEwMEE0OUQwMSAvKiBNb2R1bGUuaCAqLywK
IAkJCQlCQzg3ODBGQjExNjFDMkI4MDBDQzI3NjggLyogUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmll
ci5oICovLAogCQkJCTFBMjRCRUQzMTIwODk0RDEwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnkuaCAq
LywKLQkJCQlCQzJFNkU3RDExNDE5NzBDMDBBNjNCMUUgLyogV29ya1F1ZXVlLmNwcCAqLywKLQkJ
CQlCQzJFNkU3RTExNDE5NzBDMDBBNjNCMUUgLyogV29ya1F1ZXVlLmggKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IFBsYXRmb3JtOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTgyOTcsNyAr
ODI4OCw2IEBACiAJCQkJMjZGOUE4M0IxOEEzNDY4MTAwQUVCODhBIC8qIFdLV2ViVmlld1ByaXZh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRDYwRjVFMThFMjBGNEMwMDIwQzAzNCAvKiBXS1dp
bmRvd0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQ2MEY2MDE4RTIwRjc0MDAyMEMw
MzQgLyogV0tXaW5kb3dGZWF0dXJlc0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzJF
NkU4RTExNDE5NzE1MDBBNjNCMUUgLyogV29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0JFQ0RFODE2QjY0MTY4MDAwNDdBMUEgLyogWFBDU2VydmljZUVudHJ5UG9pbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwpAQCAtOTk4Myw4ICs5OTczLDYgQEAKIAkJCQkxQURGNTkxQTE4OTA1MjhFMDA0M0MxNDUgLyog
V0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEQzZEOUM0MThD
NDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTFBRDYwRjVEMThFMjBGNEMwMDIwQzAzNCAvKiBXS1dpbmRvd0ZlYXR1
cmVzLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQkMyRTZFOEQxMTQxOTcxNTAwQTYzQjFFIC8qIFdv
cmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCQzAwOTJGODExNTgzN0EzMDBFMEFFMkEg
LyogV29ya1F1ZXVlTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQkVDREU3MTZCNjQxNjgw
MDA0N0ExQSAvKiBYUENTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwo=
</data>
<flag name="review"
          id="271842"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246952</attachid>
            <date>2015-02-20 02:28:02 -0800</date>
            <delta_ts>2015-02-20 04:12:59 -0800</delta_ts>
            <desc>another</desc>
            <filename>workqueue-wtf-2.patch</filename>
            <type>text/plain</type>
            <size>58744</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE1LTAyLTE5ICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdvcmtRdWV1ZSBmcm9tIFdLMiB0byBXVEYK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTc5Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAgICBJdCBtYXkg
YmUgdXNlZnVsIGluIFdlYkNvcmUuCisKKyAgICAgICAgV2luZG93cyBpbXBsZW1lbnRhdGlvbiBp
cyBzdGlsbCBtaXNzaW5nLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9QbGF0Zm9y
bUdUSy5jbWFrZToKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmNwcDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmNwcC4KKyAgICAgICAgKiB3dGYvV29ya1F1
ZXVlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oLgor
ICAgICAgICAqIHd0Zi9jb2NvYTogQWRkZWQuCisgICAgICAgICogd3RmL2NvY29hL1dvcmtRdWV1
ZUNvY29hLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1dvcmtR
dWV1ZU1hYy5jcHAuCisgICAgICAgICogd3RmL2VmbC9Xb3JrUXVldWVFZmwuY3BwOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcC4KKyAgICAg
ICAgKiB3dGYvZ3RrL1dvcmtRdWV1ZUd0ay5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwLgorCiAyMDE1LTAyLTEzICBHeXV5b3VuZyBL
aW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gRW5hYmxlIGJt
YWxsb2MgZm9yIEVGTCBwb3J0IApJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNiArMjgyLDkgQEAKIAkJQ0U3
M0UwMjUxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3M0UwMjQxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQ
SS5oICovOyB9OwogCQlFMTU1NTZGNTE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0
aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAg
Ki87IH07CiAJCUUxNTU1NkY2MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU1
NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oICovOyB9Owor
CQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBBRDM3MUE5NjI0NTUwMDUzNkRG
NiAvKiBXb3JrUXVldWUuY3BwICovOyB9OworCQlFNEEwQUQzQTFBOTYyNDU1MDA1MzZERjYgLyog
V29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi87IH07CisJCUU0QTBB
RDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzQzFBOTYyNTNDMDA1MzZERjYg
LyogV29ya1F1ZXVlQ29jb2EuY3BwICovOyB9OwogCQlFQjk1RTFGMDE2MUE3MjQxMDA4OUEyRjUg
LyogQnl0ZU9yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFQjk1RTFFRjE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggKi87IH07CiAJCUZF
REFDRDNEMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAv
KiBTdGFja1N0YXRzLmNwcCAqLzsgfTsKIAkJRkVEQUNEM0UxNjMwRjgzRjAwQzY5NjM0IC8qIFN0
YWNrU3RhdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi87IH07CkBAIC01Nzgs
NiArNTgxLDkgQEAKIAkJQ0U3M0UwMjQxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUENTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTE1NTU2RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGls
aXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvZ3Jh
cGhpY1V0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkY0
MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrUXVldWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYg
LyogV29ya1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtRdWV1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEEwQUQzQzFBOTYyNTNDMDA1MzZE
RjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gV29ya1F1ZXVlQ29jb2EuY3BwOyBwYXRoID0gY29jb2EvV29ya1F1ZXVlQ29jb2EuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQjk1RTFFRjE2MUE3MjQxMDA4OUEyRjUg
LyogQnl0ZU9yZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVPcmRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRURBQ0QzQjE2MzBGODNGMDBDNjk2
MzQgLyogU3RhY2tTdGF0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdGFja1N0YXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0Mx
NjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3RhY2tTdGF0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjk4
LDYgKzcwNCw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTJD
REVEMEYwMTgxMTVDM0YwMDREQkE3MCAvKiBjZiAqLywKKwkJCQlFNEEwQUQzQjFBOTYyNTE5MDA1
MzZERjYgLyogY29jb2EgKi8sCiAJCQkJQThBNDcyODExNTFBODI1QTAwNDEyM0ZGIC8qIGR0b2Eg
Ki8sCiAJCQkJMUZBNDdDODcxNTI1MDJEQTAwNTY4RDFCIC8qIGlvcyAqLywKIAkJCQlBOEE0NzJD
NDE1MUE4MjVBMDA0MTIzRkYgLyogbWFjICovLApAQCAtODk2LDYgKzkwMyw4IEBACiAJCQkJQThB
NDczNzExNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRyYWl0cy5oICovLAogCQkJCUE4QTQ3Mzcy
MTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRhZ3MuaCAqLywKIAkJCQk5NzRDRkM4RDE2QTRGMzI3MDA2
RDU0MDQgLyogV2Vha1B0ci5oICovLAorCQkJCUU0QTBBRDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBX
b3JrUXVldWUuY3BwICovLAorCQkJCUU0QTBBRDM4MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVl
dWUuaCAqLywKIAkJCQlBOEE0NzM3QTE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5j
cHAgKi8sCiAJCQkJQThBNDczN0IxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuaCAq
LywKIAkJCSk7CkBAIC0xMDMxLDYgKzEwNDAsMTQgQEAKIAkJCXBhdGggPSBzcGk7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlFNEEwQUQzQjFBOTYyNTE5MDA1MzZERjYgLyog
Y29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUU0
QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi8sCisJCQkpOwor
CQkJbmFtZSA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVu
ZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNl
Y3Rpb24gKi8KQEAgLTEyMjEsNiArMTIzOCw3IEBACiAJCQkJQThBNDc0N0YxNTFBODI1QjAwNDEy
M0ZGIC8qIFZlY3RvclRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0ODAxNTFBODI1
QjAwNDEyM0ZGIC8qIFZNVGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0Q0ZDOEUxNkE0RjMy
NzAwNkQ1NDA0IC8qIFdlYWtQdHIuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0QTBBRDNBMUE5NjI0
NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGQTQ3QzhCMTUy
NTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0
NzQ0NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEE0NzQ4NzE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMzUwLDYgKzEzNjgsNyBAQAogCQkJCUE4QTQ3M0IwMTUxQTgyNUIwMDQxMjNGRiAvKiBk
b3VibGUtY29udmVyc2lvbi5jYyBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0JBMTUxQTgyNUIw
MDQxMjNGRiAvKiBkdG9hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGODg1RTBGMTg0NUFFQTkw
MEYxRTNGQSAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUU0QTBBRDNE
MUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBOEE0NzNCMzE1MUE4MjVCMDA0MTIzRkYgLyogZmFzdC1kdG9hLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJQThBNDczQzMxNTFBODI1QjAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTVCQTE1RkExODI0MzVBNjAwQTgyRTY5IC8qIEF0b21pY1N0cmluZ0NGLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMTM3OCw2ICsxMzk3LDcgQEAKIAkJCQkyQ0RFRDBFRjE4MTE1
QzM4MDA0REJBNzAgLyogUnVuTG9vcENGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0Njk0MTkz
MTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXJDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBOEE0NzQyMTE1MUE4MjVCMDA0MTIzRkYgLyogU0hBMS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0Njk0MTk5MTZFQUIwNDEwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXJDRi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNDY5NDE5NzE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWly
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc0ODc0NTIxN0EwQkRBRTAwRkEwNENCIC8qIFNp
eENoYXJhY3Rlckhhc2guY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsNyBAQCBzZXQoV1RGX0hFQURFUlMKICAgICBWZWN0
b3IuaAogICAgIFZlY3RvclRyYWl0cy5oCiAgICAgV1RGVGhyZWFkRGF0YS5oCisgICAgV29ya1F1
ZXVlLmgKICAgICBXZWFrUHRyLmgKICAgICBkdG9hLmgKIApAQCAtMTg0LDYgKzE4NSw3IEBAIHNl
dChXVEZfU09VUkNFUwogICAgIFN0cmluZ1ByaW50U3RyZWFtLmNwcAogICAgIFRocmVhZGluZy5j
cHAKICAgICBXVEZUaHJlYWREYXRhLmNwcAorICAgIFdvcmtRdWV1ZS5jcHAKICAgICBkdG9hLmNw
cAogCiAgICAgZHRvYS9iaWdudW0tZHRvYS5jYwpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZv
cm1HVEsuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21h
a2UJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtl
CSh3b3JraW5nIGNvcHkpCkBAIC02LDYgKzYsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwog
CiAgICAgZ3RrL01haW5UaHJlYWRHdGsuY3BwCiAgICAgZ3RrL1J1bkxvb3BHdGsuY3BwCisgICAg
Z3RrL1dvcmtRdWV1ZUd0ay5jcHAKICkKIAogbGlzdChBUFBFTkQgV1RGX0xJQlJBUklFUwpJbmRl
eDogU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9Xb3JrUXVldWUuY3BwCShyZXZpc2lvbiAxODAzNDIpCShmcm9tIFNvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL1dvcmtRdWV1ZS5jcHA6MTgwMzQyKQorKysgU291cmNlL1dURi93dGYvV29ya1F1
ZXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgorCitSZWY8V29ya1F1ZXVl
PiBXb3JrUXVldWU6OmNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlIHR5cGUsIFFPUyBxb3Mp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29ya1F1ZXVlKG5hbWUsIHR5cGUsIHFvcykp
OworfQorCitXb3JrUXVldWU6OldvcmtRdWV1ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlIHR5cGUs
IFFPUyBxb3MpCit7CisgICAgcGxhdGZvcm1Jbml0aWFsaXplKG5hbWUsIHR5cGUsIHFvcyk7Cit9
CisKK1dvcmtRdWV1ZTo6fldvcmtRdWV1ZSgpCit7CisgICAgcGxhdGZvcm1JbnZhbGlkYXRlKCk7
Cit9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9XVEYv
d3RmL1dvcmtRdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXb3JrUXVldWUuaCIKIAorbmFtZXNwYWNlIFdURiB7
CisKIFJlZjxXb3JrUXVldWU+IFdvcmtRdWV1ZTo6Y3JlYXRlKGNvbnN0IGNoYXIqIG5hbWUsIFR5
cGUgdHlwZSwgUU9TIHFvcykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3JrUXVldWUo
bmFtZSwgdHlwZSwgcW9zKSk7CkBAIC00MCwzICs0Miw1IEBAIFdvcmtRdWV1ZTo6fldvcmtRdWV1
ZSgpCiB7CiAgICAgcGxhdGZvcm1JbnZhbGlkYXRlKCk7CiB9CisKK30KSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL1dvcmtRdWV1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1
ZS5oCShyZXZpc2lvbiAxODAzNDIpCShmcm9tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtR
dWV1ZS5oOjE4MDM0MikKKysrIFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBN
b3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXb3JrUXVldWVfaAorI2RlZmluZSBXb3JrUXVldWVfaAorCisjaWYgT1MoREFSV0lO
KQorI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPGNo
cm9ubz4KKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bmFsLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlICJQbGF0Zm9y
bVByb2Nlc3NJZGVudGlmaWVyLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BTb3VyY2UuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HUmVmUHRyLmg+CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RGlzcGF0Y2hRdWV1
ZUVmbC5oPgorI2VuZGlmCisKK2NsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlv
bkRpc3BhdGNoZXIgeworcHVibGljOgorICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgIFNl
cmlhbCwKKyAgICAgICAgQ29uY3VycmVudAorICAgIH07CisgICAgZW51bSBjbGFzcyBRT1Mgewor
ICAgICAgICBVc2VySW50ZXJhY3RpdmUsCisgICAgICAgIFVzZXJJbml0aWF0ZWQsCisgICAgICAg
IERlZmF1bHQsCisgICAgICAgIFV0aWxpdHksCisgICAgICAgIEJhY2tncm91bmQKKyAgICB9Owor
ICAgIAorICAgIHN0YXRpYyBSZWY8V29ya1F1ZXVlPiBjcmVhdGUoY29uc3QgY2hhciogbmFtZSwg
VHlwZSA9IFR5cGU6OlNlcmlhbCwgUU9TID0gUU9TOjpEZWZhdWx0KTsKKyAgICB2aXJ0dWFsIH5X
b3JrUXVldWUoKTsKKworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5h
bm9zZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKKworI2lmIE9TKERBUldJTikKKyAg
ICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3Bh
dGNoUXVldWU7IH0KKyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICB2b2lkIHJlZ2lzdGVyU29ja2V0
RXZlbnRIYW5kbGVyKGludCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiwgc3RkOjpmdW5jdGlvbjx2
b2lkICgpPik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCk7Cisj
ZWxpZiBQTEFURk9STShFRkwpCisgICAgdm9pZCByZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihp
bnQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOworICAgIHZvaWQgdW5yZWdpc3RlclNvY2tldEV2
ZW50SGFuZGxlcihpbnQpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgV29ya1F1
ZXVlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUyk7CisKKyAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpOworICAgIHZvaWQgcGxhdGZvcm1J
bnZhbGlkYXRlKCk7CisKKyNpZiBPUyhEQVJXSU4pCisgICAgc3RhdGljIHZvaWQgZXhlY3V0ZUZ1
bmN0aW9uKHZvaWQqKTsKKyAgICBkaXNwYXRjaF9xdWV1ZV90IG1fZGlzcGF0Y2hRdWV1ZTsKKyNl
bGlmIFBMQVRGT1JNKEdUSykKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fd29ya1F1ZXVlVGhyZWFk
OworICAgIEdSZWZQdHI8R01haW5Db250ZXh0PiBtX2V2ZW50Q29udGV4dDsKKyAgICBNdXRleCBt
X2V2ZW50TG9vcExvY2s7CisgICAgR1JlZlB0cjxHTWFpbkxvb3A+IG1fZXZlbnRMb29wOworICAg
IEdNYWluTG9vcFNvdXJjZSBtX3NvY2tldEV2ZW50U291cmNlOworI2VsaWYgUExBVEZPUk0oRUZM
KQorICAgIFJlZlB0cjxEaXNwYXRjaFF1ZXVlPiBtX2Rpc3BhdGNoUXVldWU7CisjZW5kaWYKK307
CisKKyNlbmRpZiAvLyBXb3JrUXVldWVfaApJbmRleDogU291cmNlL1dURi93dGYvV29ya1F1ZXVl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgJKHdvcmtpbmcgY29w
eSkKKysrIFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywy
MiArMjcsMTYgQEAKICNpZm5kZWYgV29ya1F1ZXVlX2gKICNkZWZpbmUgV29ya1F1ZXVlX2gKIAot
I2lmIE9TKERBUldJTikKLSNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgotI2VuZGlmCi0K
ICNpbmNsdWRlIDxjaHJvbm8+CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaD4KICNpbmNsdWRl
IDx3dGYvRnVuY3Rpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCi0jaW5j
bHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgorI2lmIE9TKERBUldJTikKKyNpbmNs
dWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCkBA
IC01Miw2ICs0Niw4IEBACiAjaW5jbHVkZSA8RGlzcGF0Y2hRdWV1ZUVmbC5oPgogI2VuZGlmCiAK
K25hbWVzcGFjZSBXVEYgeworCiBjbGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rp
b25EaXNwYXRjaGVyIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5cGUgewpAQCAtNjYsMTEg
KzYyLDExIEBAIHB1YmxpYzoKICAgICAgICAgQmFja2dyb3VuZAogICAgIH07CiAgICAgCi0gICAg
c3RhdGljIFJlZjxXb3JrUXVldWU+IGNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlID0gVHlw
ZTo6U2VyaWFsLCBRT1MgPSBRT1M6OkRlZmF1bHQpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPFdvcmtRdWV1ZT4gY3JlYXRlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgPSBUeXBl
OjpTZXJpYWwsIFFPUyA9IFFPUzo6RGVmYXVsdCk7CiAgICAgdmlydHVhbCB+V29ya1F1ZXVlKCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgpPikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywg
c3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlz
cGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4pOwogCiAjaWYgT1MoREFSV0lOKQogICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZTsgfQpAQCAtMTAyLDQgKzk4LDggQEAg
cHJpdmF0ZToKICNlbmRpZgogfTsKIAotI2VuZGlmIC8vIFdvcmtRdWV1ZV9oCit9CisKK3VzaW5n
IFdURjo6V29ya1F1ZXVlOworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2NvY29hL1dv
cmtRdWV1ZUNvY29hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3Jr
UXVldWVDb2NvYS5jcHAJKHJldmlzaW9uIDE4MDM0MikJKGZyb20gU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vbWFjL1dvcmtRdWV1ZU1hYy5jcHA6MTgwMzQyKQorKysgU291cmNlL1dURi93dGYvY29j
b2EvV29ya1F1ZXVlQ29jb2EuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisK
K3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9u
KQoreworICAgIHJlZigpOworICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZSwgXnsK
KyAgICAgICAgZnVuY3Rpb24oKTsKKyAgICAgICAgZGVyZWYoKTsKKyAgICB9KTsKK30KKwordm9p
ZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzIGR1cmF0
aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQoreworICAgIHJlZigpOworICAg
IGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIGR1cmF0aW9u
LmNvdW50KCkpLCBtX2Rpc3BhdGNoUXVldWUsIF57CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAg
ICAgIGRlcmVmKCk7CisgICAgfSk7Cit9CisKKyNpZiBIQVZFKFFPU19DTEFTU0VTKQorc3RhdGlj
IGRpc3BhdGNoX3Fvc19jbGFzc190IGRpc3BhdGNoUU9TQ2xhc3MoV29ya1F1ZXVlOjpRT1MgcW9z
KQoreworICAgIHN3aXRjaCAocW9zKSB7CisgICAgY2FzZSBXb3JrUXVldWU6OlFPUzo6VXNlcklu
dGVyYWN0aXZlOgorICAgICAgICByZXR1cm4gUU9TX0NMQVNTX1VTRVJfSU5URVJBQ1RJVkU7Cisg
ICAgY2FzZSBXb3JrUXVldWU6OlFPUzo6VXNlckluaXRpYXRlZDoKKyAgICAgICAgcmV0dXJuIFFP
U19DTEFTU19VU0VSX0lOSVRJQVRFRDsKKyAgICBjYXNlIFdvcmtRdWV1ZTo6UU9TOjpEZWZhdWx0
OgorICAgICAgICByZXR1cm4gUU9TX0NMQVNTX0RFRkFVTFQ7CisgICAgY2FzZSBXb3JrUXVldWU6
OlFPUzo6VXRpbGl0eToKKyAgICAgICAgcmV0dXJuIFFPU19DTEFTU19VVElMSVRZOworICAgIGNh
c2UgV29ya1F1ZXVlOjpRT1M6OkJhY2tncm91bmQ6CisgICAgICAgIHJldHVybiBRT1NfQ0xBU1Nf
QkFDS0dST1VORDsKKyAgICB9Cit9CisjZW5kaWYKKwordm9pZCBXb3JrUXVldWU6OnBsYXRmb3Jt
SW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlIHR5cGUsIFFPUyBxb3MpCit7CisgICAg
ZGlzcGF0Y2hfcXVldWVfYXR0cl90IGF0dHIgPSB0eXBlID09IFR5cGU6OkNvbmN1cnJlbnQgPyBE
SVNQQVRDSF9RVUVVRV9DT05DVVJSRU5UIDogRElTUEFUQ0hfUVVFVUVfU0VSSUFMOworI2lmIEhB
VkUoUU9TX0NMQVNTRVMpCisgICAgYXR0ciA9IGRpc3BhdGNoX3F1ZXVlX2F0dHJfbWFrZV93aXRo
X3Fvc19jbGFzcyhhdHRyLCBkaXNwYXRjaFFPU0NsYXNzKHFvcyksIDApOworI2VuZGlmCisgICAg
bV9kaXNwYXRjaFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKG5hbWUsIGF0dHIpOworICAg
IGRpc3BhdGNoX3NldF9jb250ZXh0KG1fZGlzcGF0Y2hRdWV1ZSwgdGhpcyk7Cit9CisKK3ZvaWQg
V29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQoreworICAgIGRpc3BhdGNoX3JlbGVhc2Uo
bV9kaXNwYXRjaFF1ZXVlKTsKK30KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1
ZUNvY29hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVD
b2NvYS5jcHAJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1
ZUNvY29hLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgogCituYW1lc3BhY2UgV1RGIHsKKwogdm9p
ZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCiB7
CiAgICAgcmVmKCk7CkBAIC02Nyw2ICs2OSw4IEBAIHZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUlu
aXRpYWxpemUoY29uc3QKICAgICBkaXNwYXRjaF9xdWV1ZV9hdHRyX3QgYXR0ciA9IHR5cGUgPT0g
VHlwZTo6Q29uY3VycmVudCA/IERJU1BBVENIX1FVRVVFX0NPTkNVUlJFTlQgOiBESVNQQVRDSF9R
VUVVRV9TRVJJQUw7CiAjaWYgSEFWRShRT1NfQ0xBU1NFUykKICAgICBhdHRyID0gZGlzcGF0Y2hf
cXVldWVfYXR0cl9tYWtlX3dpdGhfcW9zX2NsYXNzKGF0dHIsIGRpc3BhdGNoUU9TQ2xhc3MocW9z
KSwgMCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShxb3MpOwogI2VuZGlmCiAgICAgbV9kaXNw
YXRjaFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKG5hbWUsIGF0dHIpOwogICAgIGRpc3Bh
dGNoX3NldF9jb250ZXh0KG1fZGlzcGF0Y2hRdWV1ZSwgdGhpcyk7CkBAIC03NiwzICs4MCw1IEBA
IHZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQogewogICAgIGRpc3BhdGNoX3Jl
bGVhc2UobV9kaXNwYXRjaFF1ZXVlKTsKIH0KKworfQpJbmRleDogU291cmNlL1dURi93dGYvZWZs
L1dvcmtRdWV1ZUVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvZWZsL1dvcmtR
dWV1ZUVmbC5jcHAJKHJldmlzaW9uIDE4MDM0MikJKGZyb20gU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHA6MTgwMzQyKQorKysgU291cmNlL1dURi93dGYvZWZsL1dv
cmtRdWV1ZUVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAgICBD
b3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisKKyNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVl
RWZsLmg+CisjaW5jbHVkZSA8RGlzcGF0Y2hRdWV1ZVdvcmtJdGVtRWZsLmg+CisKK3ZvaWQgV29y
a1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKQor
eworICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IERpc3BhdGNoUXVldWU6OmNyZWF0ZShuYW1lKTsKK30K
Kwordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAgUmVmUHRyPERp
c3BhdGNoUXVldWU+IGRpc3BhdGNoUXVldWUgPSBtX2Rpc3BhdGNoUXVldWUucmVsZWFzZSgpOwor
ICAgIGRpc3BhdGNoUXVldWUtPnN0b3BUaHJlYWQoKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnJl
Z2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCBmaWxlRGVzY3JpcHRvciwgc3RkOjpmdW5jdGlv
bjx2b2lkICgpPiBmdW5jdGlvbikKK3sKKyAgICBpZiAoIW1fZGlzcGF0Y2hRdWV1ZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9kaXNwYXRjaFF1ZXVlLT5zZXRTb2NrZXRFdmVudEhhbmRsZXIo
ZmlsZURlc2NyaXB0b3IsIFdURjo6bW92ZShmdW5jdGlvbikpOworfQorCit2b2lkIFdvcmtRdWV1
ZTo6dW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQgZmlsZURlc2NyaXB0b3IpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGZpbGVEZXNjcmlwdG9yKTsKKworICAgIGlmICghbV9kaXNwYXRjaFF1
ZXVlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Rpc3BhdGNoUXVldWUtPmNsZWFyU29ja2V0
RXZlbnRIYW5kbGVyKCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0
aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQoreworICAgIGlmICghbV9kaXNwYXRjaFF1ZXVlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2Rpc3BhdGNoUXVldWUtPmRpc3BhdGNoKFdvcmtJdGVtOjpj
cmVhdGUodGhpcywgV1RGOjptb3ZlKGZ1bmN0aW9uKSkpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6
ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAgaWYgKCFtX2Rpc3BhdGNoUXVldWUpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fZGlzcGF0Y2hRdWV1ZS0+ZGlzcGF0Y2goVGltZXJXb3Jr
SXRlbTo6Y3JlYXRlKHRoaXMsIFdURjo6bW92ZShmdW5jdGlvbiksIGR1cmF0aW9uKSk7Cit9Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9ndGsvV29ya1F1ZXVlR3RrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9ndGsvV29ya1F1ZXVlR3RrLmNwcAkocmV2aXNpb24gMTgwMzQyKQkoZnJv
bSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9ndGsvV29ya1F1ZXVlR3RrLmNwcDoxODAzNDIpCisr
KyBTb3VyY2UvV1RGL3d0Zi9ndGsvV29ya1F1ZXVlR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBv
cnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldvcmtRdWV1ZS5oIgorCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorCitzdGF0aWMgY29uc3Qgc2l6
ZV90IGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGltaXQgPSAzMTsKKwordm9pZCBXb3JrUXVldWU6
OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpCit7CisgICAg
bV9ldmVudENvbnRleHQgPSBhZG9wdEdSZWYoZ19tYWluX2NvbnRleHRfbmV3KCkpOworICAgIEFT
U0VSVChtX2V2ZW50Q29udGV4dCk7CisgICAgbV9ldmVudExvb3AgPSBhZG9wdEdSZWYoZ19tYWlu
X2xvb3BfbmV3KG1fZXZlbnRDb250ZXh0LmdldCgpLCBGQUxTRSkpOworICAgIEFTU0VSVChtX2V2
ZW50TG9vcCk7CisKKyAgICAvLyBUaGlzIG5hbWUgY2FuIGJlIGNvbS5hcHBsZS5XZWJLaXQuUHJv
Y2Vzc0xhdW5jaGVyIG9yIGNvbS5hcHBsZS5Db3JlSVBDLlJlY2VpdmVRdWV1ZS4KKyAgICAvLyBX
ZSBhcmUgdXNpbmcgdGhvc2UgbmFtZXMgZm9yIHRoZSB0aHJlYWQgbmFtZSwgYnV0IGJvdGggYXJl
IGxvbmdlciB0aGFuIDMxIGNoYXJhY3RlcnMsCisgICAgLy8gd2hpY2ggaXMgdGhlIGxpbWl0IG9m
IFZpc3VhbCBTdHVkaW8gZm9yIHRocmVhZCBuYW1lcy4KKyAgICAvLyBXaGVuIGxvZyBpcyBlbmFi
bGVkIGNyZWF0ZVRocmVhZCgpIHdpbGwgYXNzZXJ0IGluc3RlYWQgb2YgdHJ1bmNhdGUgdGhlIG5h
bWUsIHNvIHdlIG5lZWQKKyAgICAvLyB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgdXNlIGEgbmFtZSBs
b25nZXIgdGhhbiAzMSBjaGFyYWN0ZXJzLgorICAgIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUgPSBn
X3N0cnJzdHIobmFtZSwgIi4iKTsKKyAgICBpZiAodGhyZWFkTmFtZSkKKyAgICAgICAgdGhyZWFk
TmFtZSsrOworICAgIGVsc2UKKyAgICAgICAgdGhyZWFkTmFtZSA9IG5hbWU7CisgICAgaWYgKHN0
cmxlbih0aHJlYWROYW1lKSA+IGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGltaXQpCisgICAgICAg
IHRocmVhZE5hbWUgKz0gc3RybGVuKHRocmVhZE5hbWUpIC0ga1Zpc3VhbFN0dWRpb1RocmVhZE5h
bWVMaW1pdDsKKworICAgIFJlZlB0cjxXb3JrUXVldWU+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBt
X3dvcmtRdWV1ZVRocmVhZCA9IGNyZWF0ZVRocmVhZCh0aHJlYWROYW1lLCBbcHJvdGVjdG9yXSB7
IGdfbWFpbl9sb29wX3J1bihwcm90ZWN0b3ItPm1fZXZlbnRMb29wLmdldCgpKTsgfSk7Cit9CisK
K3ZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQoreworICAgIGlmIChtX3dvcmtR
dWV1ZVRocmVhZCkgeworICAgICAgICBkZXRhY2hUaHJlYWQobV93b3JrUXVldWVUaHJlYWQpOwor
ICAgICAgICBtX3dvcmtRdWV1ZVRocmVhZCA9IDA7CisgICAgfQorCisgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fZXZlbnRMb29wTG9jayk7CisgICAgaWYgKG1fZXZlbnRMb29wKSB7CisgICAgICAg
IGlmIChnX21haW5fbG9vcF9pc19ydW5uaW5nKG1fZXZlbnRMb29wLmdldCgpKSkKKyAgICAgICAg
ICAgIGdfbWFpbl9sb29wX3F1aXQobV9ldmVudExvb3AuZ2V0KCkpOworICAgICAgICBtX2V2ZW50
TG9vcC5jbGVhcigpOworICAgIH0KKworICAgIG1fZXZlbnRDb250ZXh0LmNsZWFyKCk7Cit9CisK
K3ZvaWQgV29ya1F1ZXVlOjpyZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQgZmlsZURlc2Ny
aXB0b3IsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoKT4gY2xvc2VGdW5jdGlvbikKK3sKKyAgICBHUmVmUHRyPEdTb2NrZXQ+IHNvY2tldCA9IGFk
b3B0R1JlZihnX3NvY2tldF9uZXdfZnJvbV9mZChmaWxlRGVzY3JpcHRvciwgMCkpOworICAgIHJl
ZigpOworICAgIG1fc29ja2V0RXZlbnRTb3VyY2Uuc2NoZWR1bGUoIltXZWJLaXRdIFdvcmtRdWV1
ZTo6U29ja2V0RXZlbnRIYW5kbGVyIiwgW2Z1bmN0aW9uLCBjbG9zZUZ1bmN0aW9uXShHSU9Db25k
aXRpb24gY29uZGl0aW9uKSB7CisgICAgICAgICAgICBpZiAoY29uZGl0aW9uICYgR19JT19IVVAg
fHwgY29uZGl0aW9uICYgR19JT19FUlIgfHwgY29uZGl0aW9uICYgR19JT19OVkFMKSB7CisgICAg
ICAgICAgICAgICAgY2xvc2VGdW5jdGlvbigpOworICAgICAgICAgICAgICAgIHJldHVybiBHTWFp
bkxvb3BTb3VyY2U6OlN0b3A7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjb25k
aXRpb24gJiBHX0lPX0lOKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24oKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gR01haW5Mb29wU291cmNlOjpDb250aW51ZTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4g
R01haW5Mb29wU291cmNlOjpTdG9wOworICAgICAgICB9LCBzb2NrZXQuZ2V0KCksIEdfSU9fSU4s
CisgICAgICAgIFt0aGlzXSB7IGRlcmVmKCk7IH0sCisgICAgICAgIG1fZXZlbnRDb250ZXh0Lmdl
dCgpKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnVucmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIo
aW50KQoreworICAgIG1fc29ja2V0RXZlbnRTb3VyY2UuY2FuY2VsKCk7Cit9CisKK3ZvaWQgV29y
a1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQoreworICAg
IHJlZigpOworICAgIEdNYWluTG9vcFNvdXJjZTo6c2NoZWR1bGVBbmREZWxldGVPbkRlc3Ryb3ko
IltXZWJLaXRdIFdvcmtRdWV1ZTo6ZGlzcGF0Y2giLCBXVEY6Om1vdmUoZnVuY3Rpb24pLCBHX1BS
SU9SSVRZX0RFRkFVTFQsCisgICAgICAgIFt0aGlzXSB7IGRlcmVmKCk7IH0sIG1fZXZlbnRDb250
ZXh0LmdldCgpKTsKK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJv
bm86Om5hbm9zZWNvbmRzIGR1cmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9u
KQoreworICAgIHJlZigpOworICAgIEdNYWluTG9vcFNvdXJjZTo6c2NoZWR1bGVBZnRlckRlbGF5
QW5kRGVsZXRlT25EZXN0cm95KCJbV2ViS2l0XSBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIiLCBX
VEY6Om1vdmUoZnVuY3Rpb24pLAorICAgICAgICBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxz
dGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPihkdXJhdGlvbiksIEdfUFJJT1JJVFlfREVGQVVMVCwg
W3RoaXNdIHsgZGVyZWYoKTsgfSwgbV9ldmVudENvbnRleHQuZ2V0KCkpOworfQpJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTUtMDItMTkgIEFudHRpIEtvaXZpc3RvICA8
YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgV29ya1F1ZXVlIGZyb20gV0syIHRvIFdU
RgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNzk3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5o
OgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgICogUGxhdGZv
cm0vV29ya1F1ZXVlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVldWUu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9ndGsvV29ya1F1ZXVlR3RrLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvV29ya1F1ZXVlTWFjLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAg
ICAgICAgKiBTaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTUtMDItMTggIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXVtpT1NdIEZpeCBOZXR3b3JrQ2Fj
aGUgYnVpbGQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxODAzNDIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4
MSw2IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKIAogICAgIFBsYXRmb3JtL0xvZ2dpbmcuY3BwCiAg
ICAgUGxhdGZvcm0vTW9kdWxlLmNwcAotICAgIFBsYXRmb3JtL1dvcmtRdWV1ZS5jcHAKIAogICAg
IFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKICAgICBQbGF0Zm9ybS9JUEMvQXJndW1l
bnREZWNvZGVyLmNwcApJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHJldmlzaW9uIDE4
MDM0MikKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCSh3b3JraW5nIGNvcHkp
CkBAIC0xMSw3ICsxMSw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFBsYXRm
b3JtL2VmbC9EaXNwYXRjaFF1ZXVlRWZsLmNwcAogICAgIFBsYXRmb3JtL2VmbC9Mb2dnaW5nRWZs
LmNwcAogICAgIFBsYXRmb3JtL2VmbC9Nb2R1bGVFZmwuY3BwCi0gICAgUGxhdGZvcm0vZWZsL1dv
cmtRdWV1ZUVmbC5jcHAKIAogICAgIFBsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAK
IApJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UJKHJldmlzaW9uIDE4MDM0MikKKysrIFNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICsz
MCw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgUGxhdGZvcm0vZ3RrL0xv
Z2dpbmdHdGsuY3BwCiAgICAgUGxhdGZvcm0vZ3RrL01vZHVsZUd0ay5jcHAKLSAgICBQbGF0Zm9y
bS9ndGsvV29ya1F1ZXVlR3RrLmNwcAogCiAgICAgUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlV
bml4LmNwcAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQ
cm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0Rh
dGFiYXNlUHJvY2Vzcy5oCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9EYXRh
YmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMz
LDYgQEAKICNpbmNsdWRlICJXZWJPcmlnaW5EYXRhTWFuYWdlclN1cHBsZW1lbnQuaCIKICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAotY2xhc3MgV29ya1F1ZXVlOwotCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgQXN5bmNUYXNrOwpJbmRleDogU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vV29ya1F1ZXVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Xb3JrUXVldWUuY3BwCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Xb3JrUXVldWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV29ya1F1ZXVlLmgiCi0KLVJl
ZjxXb3JrUXVldWU+IFdvcmtRdWV1ZTo6Y3JlYXRlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgdHlw
ZSwgUU9TIHFvcykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3JrUXVldWUobmFtZSwg
dHlwZSwgcW9zKSk7Ci19Ci0KLVdvcmtRdWV1ZTo6V29ya1F1ZXVlKGNvbnN0IGNoYXIqIG5hbWUs
IFR5cGUgdHlwZSwgUU9TIHFvcykKLXsKLSAgICBwbGF0Zm9ybUluaXRpYWxpemUobmFtZSwgdHlw
ZSwgcW9zKTsKLX0KLQotV29ya1F1ZXVlOjp+V29ya1F1ZXVlKCkKLXsKLSAgICBwbGF0Zm9ybUlu
dmFsaWRhdGUoKTsKLX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oCShyZXZp
c2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp
IDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgV29ya1F1ZXVlX2gKLSNkZWZpbmUgV29ya1F1ZXVlX2gKLQotI2lmIE9T
KERBUldJTikKLSNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgotI2VuZGlmCi0KLSNpbmNs
dWRlIDxjaHJvbm8+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaD4KLSNpbmNsdWRlIDx3dGYv
RnVuY3Rpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgotCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCi0jaW5jbHVkZSAi
UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgotI2VuZGlmCi0KLSNpZiBQTEFURk9STShHVEsp
Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR01haW5Mb29wU291cmNlLmg+Ci0jaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1JlZlB0ci5oPgotI2VsaWYgUExBVEZPUk0oRUZMKQotI2luY2x1ZGUgPERpc3Bh
dGNoUXVldWVFZmwuaD4KLSNlbmRpZgotCi1jbGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMg
RnVuY3Rpb25EaXNwYXRjaGVyIHsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIFR5cGUgewotICAg
ICAgICBTZXJpYWwsCi0gICAgICAgIENvbmN1cnJlbnQKLSAgICB9OwotICAgIGVudW0gY2xhc3Mg
UU9TIHsKLSAgICAgICAgVXNlckludGVyYWN0aXZlLAotICAgICAgICBVc2VySW5pdGlhdGVkLAot
ICAgICAgICBEZWZhdWx0LAotICAgICAgICBVdGlsaXR5LAotICAgICAgICBCYWNrZ3JvdW5kCi0g
ICAgfTsKLSAgICAKLSAgICBzdGF0aWMgUmVmPFdvcmtRdWV1ZT4gY3JlYXRlKGNvbnN0IGNoYXIq
IG5hbWUsIFR5cGUgPSBUeXBlOjpTZXJpYWwsIFFPUyA9IFFPUzo6RGVmYXVsdCk7Ci0gICAgdmly
dHVhbCB+V29ya1F1ZXVlKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goc3RkOjpmdW5j
dGlvbjx2b2lkICgpPikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hy
b25vOjpuYW5vc2Vjb25kcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7Ci0KLSNpZiBPUyhEQVJX
SU4pCi0gICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3QgeyByZXR1cm4g
bV9kaXNwYXRjaFF1ZXVlOyB9Ci0jZWxpZiBQTEFURk9STShHVEspCi0gICAgdm9pZCByZWdpc3Rl
clNvY2tldEV2ZW50SGFuZGxlcihpbnQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4sIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4pOwotICAgIHZvaWQgdW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihp
bnQpOwotI2VsaWYgUExBVEZPUk0oRUZMKQotICAgIHZvaWQgcmVnaXN0ZXJTb2NrZXRFdmVudEhh
bmRsZXIoaW50LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKLSAgICB2b2lkIHVucmVnaXN0ZXJT
b2NrZXRFdmVudEhhbmRsZXIoaW50KTsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0
IFdvcmtRdWV1ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpOwotCi0gICAgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKTsKLSAgICB2b2lkIHBs
YXRmb3JtSW52YWxpZGF0ZSgpOwotCi0jaWYgT1MoREFSV0lOKQotICAgIHN0YXRpYyB2b2lkIGV4
ZWN1dGVGdW5jdGlvbih2b2lkKik7Ci0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX2Rpc3BhdGNoUXVl
dWU7Ci0jZWxpZiBQTEFURk9STShHVEspCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3dvcmtRdWV1
ZVRocmVhZDsKLSAgICBHUmVmUHRyPEdNYWluQ29udGV4dD4gbV9ldmVudENvbnRleHQ7Ci0gICAg
TXV0ZXggbV9ldmVudExvb3BMb2NrOwotICAgIEdSZWZQdHI8R01haW5Mb29wPiBtX2V2ZW50TG9v
cDsKLSAgICBHTWFpbkxvb3BTb3VyY2UgbV9zb2NrZXRFdmVudFNvdXJjZTsKLSNlbGlmIFBMQVRG
T1JNKEVGTCkKLSAgICBSZWZQdHI8RGlzcGF0Y2hRdWV1ZT4gbV9kaXNwYXRjaFF1ZXVlOwotI2Vu
ZGlmCi19OwotCi0jZW5kaWYgLy8gV29ya1F1ZXVlX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEgKzMz
LDEyIEBACiAjaW5jbHVkZSAiTWVzc2FnZUVuY29kZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVHlwZS5oIgotI2luY2x1ZGUgIldvcmtRdWV1ZS5o
IgogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDxjb25kaXRpb25fdmFyaWFibGU+CiAjaW5j
bHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKICNpZiBPUyhEQVJXSU4pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcAkocmV2aXNpb24gMTgwMzQyKQorKysgU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNjkgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVj
dHJvbmljcwotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV29ya1F1ZXVlLmgi
Ci0KLSNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVlRWZsLmg+Ci0jaW5jbHVkZSA8RGlzcGF0Y2hRdWV1
ZVdvcmtJdGVtRWZsLmg+Ci0KLXZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUoY29u
c3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKQotewotICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IERpc3Bh
dGNoUXVldWU6OmNyZWF0ZShuYW1lKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52
YWxpZGF0ZSgpCi17Ci0gICAgUmVmUHRyPERpc3BhdGNoUXVldWU+IGRpc3BhdGNoUXVldWUgPSBt
X2Rpc3BhdGNoUXVldWUucmVsZWFzZSgpOwotICAgIGRpc3BhdGNoUXVldWUtPnN0b3BUaHJlYWQo
KTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCBm
aWxlRGVzY3JpcHRvciwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKLXsKLSAgICBp
ZiAoIW1fZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kaXNwYXRjaFF1
ZXVlLT5zZXRTb2NrZXRFdmVudEhhbmRsZXIoZmlsZURlc2NyaXB0b3IsIFdURjo6bW92ZShmdW5j
dGlvbikpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6dW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxl
cihpbnQgZmlsZURlc2NyaXB0b3IpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGZpbGVEZXNjcmlwdG9y
KTsKLQotICAgIGlmICghbV9kaXNwYXRjaFF1ZXVlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X2Rpc3BhdGNoUXVldWUtPmNsZWFyU29ja2V0RXZlbnRIYW5kbGVyKCk7Ci19Ci0KLXZvaWQgV29y
a1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQotewotICAg
IGlmICghbV9kaXNwYXRjaFF1ZXVlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Rpc3BhdGNo
UXVldWUtPmRpc3BhdGNoKFdvcmtJdGVtOjpjcmVhdGUodGhpcywgV1RGOjptb3ZlKGZ1bmN0aW9u
KSkpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFu
b3NlY29uZHMgZHVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCi17Ci0g
ICAgaWYgKCFtX2Rpc3BhdGNoUXVldWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZGlzcGF0
Y2hRdWV1ZS0+ZGlzcGF0Y2goVGltZXJXb3JrSXRlbTo6Y3JlYXRlKHRoaXMsIFdURjo6bW92ZShm
dW5jdGlvbiksIGR1cmF0aW9uKSk7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9n
dGsvV29ya1F1ZXVlR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9ndGsvV29ya1F1ZXVlR3RrLmNwcAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTE1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9u
cyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXb3Jr
UXVldWUuaCIKLQotI2luY2x1ZGUgPGdpby9naW8uaD4KLQotc3RhdGljIGNvbnN0IHNpemVfdCBr
VmlzdWFsU3R1ZGlvVGhyZWFkTmFtZUxpbWl0ID0gMzE7Ci0KLXZvaWQgV29ya1F1ZXVlOjpwbGF0
Zm9ybUluaXRpYWxpemUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKQotewotICAgIG1fZXZl
bnRDb250ZXh0ID0gYWRvcHRHUmVmKGdfbWFpbl9jb250ZXh0X25ldygpKTsKLSAgICBBU1NFUlQo
bV9ldmVudENvbnRleHQpOwotICAgIG1fZXZlbnRMb29wID0gYWRvcHRHUmVmKGdfbWFpbl9sb29w
X25ldyhtX2V2ZW50Q29udGV4dC5nZXQoKSwgRkFMU0UpKTsKLSAgICBBU1NFUlQobV9ldmVudExv
b3ApOwotCi0gICAgLy8gVGhpcyBuYW1lIGNhbiBiZSBjb20uYXBwbGUuV2ViS2l0LlByb2Nlc3NM
YXVuY2hlciBvciBjb20uYXBwbGUuQ29yZUlQQy5SZWNlaXZlUXVldWUuCi0gICAgLy8gV2UgYXJl
IHVzaW5nIHRob3NlIG5hbWVzIGZvciB0aGUgdGhyZWFkIG5hbWUsIGJ1dCBib3RoIGFyZSBsb25n
ZXIgdGhhbiAzMSBjaGFyYWN0ZXJzLAotICAgIC8vIHdoaWNoIGlzIHRoZSBsaW1pdCBvZiBWaXN1
YWwgU3R1ZGlvIGZvciB0aHJlYWQgbmFtZXMuCi0gICAgLy8gV2hlbiBsb2cgaXMgZW5hYmxlZCBj
cmVhdGVUaHJlYWQoKSB3aWxsIGFzc2VydCBpbnN0ZWFkIG9mIHRydW5jYXRlIHRoZSBuYW1lLCBz
byB3ZSBuZWVkCi0gICAgLy8gdG8gbWFrZSBzdXJlIHdlIGRvbid0IHVzZSBhIG5hbWUgbG9uZ2Vy
IHRoYW4gMzEgY2hhcmFjdGVycy4KLSAgICBjb25zdCBjaGFyKiB0aHJlYWROYW1lID0gZ19zdHJy
c3RyKG5hbWUsICIuIik7Ci0gICAgaWYgKHRocmVhZE5hbWUpCi0gICAgICAgIHRocmVhZE5hbWUr
KzsKLSAgICBlbHNlCi0gICAgICAgIHRocmVhZE5hbWUgPSBuYW1lOwotICAgIGlmIChzdHJsZW4o
dGhyZWFkTmFtZSkgPiBrVmlzdWFsU3R1ZGlvVGhyZWFkTmFtZUxpbWl0KQotICAgICAgICB0aHJl
YWROYW1lICs9IHN0cmxlbih0aHJlYWROYW1lKSAtIGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGlt
aXQ7Ci0KLSAgICBSZWZQdHI8V29ya1F1ZXVlPiBwcm90ZWN0b3IodGhpcyk7Ci0gICAgbV93b3Jr
UXVldWVUaHJlYWQgPSBjcmVhdGVUaHJlYWQodGhyZWFkTmFtZSwgW3Byb3RlY3Rvcl0geyBnX21h
aW5fbG9vcF9ydW4ocHJvdGVjdG9yLT5tX2V2ZW50TG9vcC5nZXQoKSk7IH0pOwotfQotCi12b2lk
IFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKLXsKLSAgICBpZiAobV93b3JrUXVldWVU
aHJlYWQpIHsKLSAgICAgICAgZGV0YWNoVGhyZWFkKG1fd29ya1F1ZXVlVGhyZWFkKTsKLSAgICAg
ICAgbV93b3JrUXVldWVUaHJlYWQgPSAwOwotICAgIH0KLQotICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX2V2ZW50TG9vcExvY2spOwotICAgIGlmIChtX2V2ZW50TG9vcCkgewotICAgICAgICBpZiAo
Z19tYWluX2xvb3BfaXNfcnVubmluZyhtX2V2ZW50TG9vcC5nZXQoKSkpCi0gICAgICAgICAgICBn
X21haW5fbG9vcF9xdWl0KG1fZXZlbnRMb29wLmdldCgpKTsKLSAgICAgICAgbV9ldmVudExvb3Au
Y2xlYXIoKTsKLSAgICB9Ci0KLSAgICBtX2V2ZW50Q29udGV4dC5jbGVhcigpOwotfQotCi12b2lk
IFdvcmtRdWV1ZTo6cmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50IGZpbGVEZXNjcmlwdG9y
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
IGNsb3NlRnVuY3Rpb24pCi17Ci0gICAgR1JlZlB0cjxHU29ja2V0PiBzb2NrZXQgPSBhZG9wdEdS
ZWYoZ19zb2NrZXRfbmV3X2Zyb21fZmQoZmlsZURlc2NyaXB0b3IsIDApKTsKLSAgICByZWYoKTsK
LSAgICBtX3NvY2tldEV2ZW50U291cmNlLnNjaGVkdWxlKCJbV2ViS2l0XSBXb3JrUXVldWU6OlNv
Y2tldEV2ZW50SGFuZGxlciIsIFtmdW5jdGlvbiwgY2xvc2VGdW5jdGlvbl0oR0lPQ29uZGl0aW9u
IGNvbmRpdGlvbikgewotICAgICAgICAgICAgaWYgKGNvbmRpdGlvbiAmIEdfSU9fSFVQIHx8IGNv
bmRpdGlvbiAmIEdfSU9fRVJSIHx8IGNvbmRpdGlvbiAmIEdfSU9fTlZBTCkgewotICAgICAgICAg
ICAgICAgIGNsb3NlRnVuY3Rpb24oKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gR01haW5Mb29w
U291cmNlOjpTdG9wOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoY29uZGl0aW9u
ICYgR19JT19JTikgewotICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIEdNYWluTG9vcFNvdXJjZTo6Q29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIEdNYWlu
TG9vcFNvdXJjZTo6U3RvcDsKLSAgICAgICAgfSwgc29ja2V0LmdldCgpLCBHX0lPX0lOLAotICAg
ICAgICBbdGhpc10geyBkZXJlZigpOyB9LAotICAgICAgICBtX2V2ZW50Q29udGV4dC5nZXQoKSk7
Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCkK
LXsKLSAgICBtX3NvY2tldEV2ZW50U291cmNlLmNhbmNlbCgpOwotfQotCi12b2lkIFdvcmtRdWV1
ZTo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKLXsKLSAgICByZWYo
KTsKLSAgICBHTWFpbkxvb3BTb3VyY2U6OnNjaGVkdWxlQW5kRGVsZXRlT25EZXN0cm95KCJbV2Vi
S2l0XSBXb3JrUXVldWU6OmRpc3BhdGNoIiwgV1RGOjptb3ZlKGZ1bmN0aW9uKSwgR19QUklPUklU
WV9ERUZBVUxULAotICAgICAgICBbdGhpc10geyBkZXJlZigpOyB9LCBtX2V2ZW50Q29udGV4dC5n
ZXQoKSk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpu
YW5vc2Vjb25kcyBkdXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKLXsK
LSAgICByZWYoKTsKLSAgICBHTWFpbkxvb3BTb3VyY2U6OnNjaGVkdWxlQWZ0ZXJEZWxheUFuZERl
bGV0ZU9uRGVzdHJveSgiW1dlYktpdF0gV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyIiwgV1RGOjpt
b3ZlKGZ1bmN0aW9uKSwKLSAgICAgICAgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpj
aHJvbm86Om1pbGxpc2Vjb25kcz4oZHVyYXRpb24pLCBHX1BSSU9SSVRZX0RFRkFVTFQsIFt0aGlz
XSB7IGRlcmVmKCk7IH0sIG1fZXZlbnRDb250ZXh0LmdldCgpKTsKLX0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL21hYy9Xb3JrUXVldWVNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Xb3JrUXVldWVNYWMuY3BwCShyZXZpc2lvbiAxODAzNDIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvV29ya1F1ZXVlTWFjLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgotCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKLXsKLSAgICByZWYoKTsKLSAgICBkaXNwYXRj
aF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIF57Ci0gICAgICAgIGZ1bmN0aW9uKCk7Ci0gICAgICAg
IGRlcmVmKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0
ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBm
dW5jdGlvbikKLXsKLSAgICByZWYoKTsKLSAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1l
KERJU1BBVENIX1RJTUVfTk9XLCBkdXJhdGlvbi5jb3VudCgpKSwgbV9kaXNwYXRjaFF1ZXVlLCBe
ewotICAgICAgICBmdW5jdGlvbigpOwotICAgICAgICBkZXJlZigpOwotICAgIH0pOwotfQotCi0j
aWYgSEFWRShRT1NfQ0xBU1NFUykKLXN0YXRpYyBkaXNwYXRjaF9xb3NfY2xhc3NfdCBkaXNwYXRj
aFFPU0NsYXNzKFdvcmtRdWV1ZTo6UU9TIHFvcykKLXsKLSAgICBzd2l0Y2ggKHFvcykgewotICAg
IGNhc2UgV29ya1F1ZXVlOjpRT1M6OlVzZXJJbnRlcmFjdGl2ZToKLSAgICAgICAgcmV0dXJuIFFP
U19DTEFTU19VU0VSX0lOVEVSQUNUSVZFOwotICAgIGNhc2UgV29ya1F1ZXVlOjpRT1M6OlVzZXJJ
bml0aWF0ZWQ6Ci0gICAgICAgIHJldHVybiBRT1NfQ0xBU1NfVVNFUl9JTklUSUFURUQ7Ci0gICAg
Y2FzZSBXb3JrUXVldWU6OlFPUzo6RGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFFPU19DTEFTU19E
RUZBVUxUOwotICAgIGNhc2UgV29ya1F1ZXVlOjpRT1M6OlV0aWxpdHk6Ci0gICAgICAgIHJldHVy
biBRT1NfQ0xBU1NfVVRJTElUWTsKLSAgICBjYXNlIFdvcmtRdWV1ZTo6UU9TOjpCYWNrZ3JvdW5k
OgotICAgICAgICByZXR1cm4gUU9TX0NMQVNTX0JBQ0tHUk9VTkQ7Ci0gICAgfQotfQotI2VuZGlm
Ci0KLXZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgY2hhciogbmFtZSwg
VHlwZSB0eXBlLCBRT1MgcW9zKQotewotICAgIGRpc3BhdGNoX3F1ZXVlX2F0dHJfdCBhdHRyID0g
dHlwZSA9PSBUeXBlOjpDb25jdXJyZW50ID8gRElTUEFUQ0hfUVVFVUVfQ09OQ1VSUkVOVCA6IERJ
U1BBVENIX1FVRVVFX1NFUklBTDsKLSNpZiBIQVZFKFFPU19DTEFTU0VTKQotICAgIGF0dHIgPSBk
aXNwYXRjaF9xdWV1ZV9hdHRyX21ha2Vfd2l0aF9xb3NfY2xhc3MoYXR0ciwgZGlzcGF0Y2hRT1ND
bGFzcyhxb3MpLCAwKTsKLSNlbmRpZgotICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IGRpc3BhdGNoX3F1
ZXVlX2NyZWF0ZShuYW1lLCBhdHRyKTsKLSAgICBkaXNwYXRjaF9zZXRfY29udGV4dChtX2Rpc3Bh
dGNoUXVldWUsIHRoaXMpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRl
KCkKLXsKLSAgICBkaXNwYXRjaF9yZWxlYXNlKG1fZGlzcGF0Y2hRdWV1ZSk7Ci19CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCShyZXZpc2lvbiAxODAzNDIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNs
dWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50Lmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKLSNpbmNsdWRlICJXb3JrUXVldWUu
aCIKKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCShyZXZpc2lvbiAx
ODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5j
aGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgogCi0jaW5jbHVkZSAiV29ya1F1ZXVl
LmgiCi0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPiAKKyNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdl
RGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9y
YWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJh
c2UuaCIKIAogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgotI2luY2x1
ZGUgIldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVU
cmFuc2FjdGlvbi5oPgpAQCAtMzUsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFn
ZU1hcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3VkZGVuVGVybWluYXRpb24uaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2Uv
TG9jYWxTdG9yYWdlRGF0YWJhc2UuaAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsOCArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotCi1j
bGFzcyBXb3JrUXVldWU7CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLmNwcAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsMTEgKzI3LDExIEBACiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLmgiCiAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEZXRhaWxzLmgiCi0jaW5jbHVkZSAiV29y
a1F1ZXVlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KKyNpbmNsdWRlIDx3dGYvV29y
a1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCShyZXZpc2lvbiAx
ODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKQEAgLTM4LDggKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiB9CiAKLWNsYXNzIFdvcmtRdWV1ZTsKLQogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIHN0cnVjdCBMb2NhbFN0b3JhZ2VEZXRhaWxzOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAkocmV2aXNpb24g
MTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSArMzMsMTEgQEAKICNpbmNsdWRlICJTdG9y
YWdlQXJlYU1hcE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TdG9yYWdlTWFwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KICNpbmNs
dWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90
aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFn
ZXIuaAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3Jh
Z2UvU3RvcmFnZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KIAotY2xhc3MgV29ya1F1ZXVlOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTIyMyw3ICsxMjIzLDYgQEAKIAkJQjYzNDAzRjkxNDkxMEQ1NzAwMTA3MEI1IC8qIEFQ
SU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCNjM0MDNGODE0OTEwRDU3MDAxMDcwQjUgLyogQVBJT2JqZWN0LmNwcCAqLzsgfTsKIAkJQjg3
OEI2MTUxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjg3OEI2MTMxMzM0MjhEQzAwNjg4OEU5
IC8qIENvcnJlY3Rpb25QYW5lbC5oICovOyB9OwogCQlCODc4QjYxNjEzMzQyOERDMDA2ODg4RTkg
LyogQ29ycmVjdGlvblBhbmVsLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjg3OEI2MTQxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5t
bSAqLzsgfTsKLQkJQkMwMDkyRjgxMTU4MzdBMzAwRTBBRTJBIC8qIFdvcmtRdWV1ZU1hYy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwOTJGNjEx
NTgzN0EzMDBFMEFFMkEgLyogV29ya1F1ZXVlTWFjLmNwcCAqLzsgfTsKIAkJQkMwMTdEMDcxNjI2
MEZGNDAwNzA1NEY1IC8qIFdLRE9NRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDE3Q0ZGMTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTURv
Y3VtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQkMwMTdEMDgxNjI2MEZGNDAwNzA1NEY1IC8qIFdLRE9NRG9jdW1lbnQubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAxN0QwMDE2MjYwRkY0MDA3
MDU0RjUgLyogV0tET01Eb2N1bWVudC5tbSAqLzsgfTsKIAkJQkMwMTdEMDkxNjI2MEZGNDAwNzA1
NEY1IC8qIFdLRE9NRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMwMTdEMDExNjI2MEZGNDAwNzA1NEY1IC8qIFdLRE9NRWxlbWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzIyLDgg
KzEzMjEsNiBAQAogCQlCQzI2NTIxNzExODI2MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjUy
MTMxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuaCAqLzsgfTsKIAkJQkMyRDAy
MTcxMkFDNDFDQjAwRTczMkEzIC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJEMDIxNjEyQUM0MUNC
MDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCAqLzsgfTsKIAkJQkMyRDAy
MTkxMkFDNDI2QzAwRTczMkEzIC8qIFdLUGFnZUxvYWRUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyRDAyMTgxMkFDNDI2QzAwRTczMkEzIC8q
IFdLUGFnZUxvYWRUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCUJDMkU2RThEMTE0MTk3MTUwMEE2M0IxRSAvKiBXb3JrUXVldWUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyRTZFN0QxMTQx
OTcwQzAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5jcHAgKi87IH07Ci0JCUJDMkU2RThFMTE0MTk3MTUw
MEE2M0IxRSAvKiBXb3JrUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMkU2RTdFMTE0MTk3MEMwMEE2M0IxRSAvKiBXb3JrUXVldWUuaCAqLzsg
fTsKIAkJQkMzMDY1RkExMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA2NUY5MTI1OTM0NEUwMEU3
MTI3OCAvKiBDYWNoZU1vZGVsLmggKi87IH07CiAJCUJDMzA2NkJFMTI1QTQ0MjEwMEU3MTI3OCAv
KiBXZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA2NkJDMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQcm9j
ZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQkMzMDY2QkYxMjVBNDQyMTAwRTcxMjc4
IC8qIFdlYlByb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMzMDY2QkQxMjVBNDQyMTAwRTcxMjc4IC8qIFdlYlByb2Nlc3NNZXNz
YWdlcy5oICovOyB9OwpAQCAtMzQwNiw3ICszNDAzLDYgQEAKIAkJQjYzNDAzRjgxNDkxMEQ1NzAw
MTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBUElPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCODc4QjYx
MzEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvcnJlY3Rpb25QYW5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCODc4QjYxNDEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29ycmVjdGlvblBhbmVsLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzAwOTJGNjExNTgzN0EzMDBFMEFFMkEg
LyogV29ya1F1ZXVlTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdvcmtRdWV1ZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDE3Q0ZG
MTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTURvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLRE9NRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkMwMTdEMDAxNjI2MEZGNDAwNzA1NEY1IC8qIFdLRE9NRG9jdW1lbnQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0RPTURvY3VtZW50Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAxN0QwMTE2MjYwRkY0MDA3MDU0RjUgLyogV0tET01F
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRE9NRWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzUxMCw4ICszNTA2LDYgQEAKIAkJQkMy
NjUyMTMxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd2luZ0FyZWFQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzJEMDIxNjEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2
aWdhdGlvblR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FtZURvY3Vt
ZW50TmF2aWdhdGlvblR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRDAy
MTgxMkFDNDI2QzAwRTczMkEzIC8qIFdLUGFnZUxvYWRUeXBlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS1BhZ2VMb2FkVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQkMyRTZFN0QxMTQxOTcwQzAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlCQzJFNkU3RTExNDE5NzBDMDBBNjNCMUUgLyogV29ya1F1ZXVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtRdWV1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMwNjVGOTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVN
b2RlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZU1vZGVsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzA2NkI5MTI1QTQzNjMwMEU3MTI3OCAvKiBX
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlByb2Nlc3Mu
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzA2NkJDMTI1QTQ0
MjEwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDU1OCw3ICs0NTUyLDYgQEAKIAkJCQkxQTI0
QkYzOTEyMDg5NkE2MDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5TWFjLmNwcCAqLywKIAkJCQkyOTZC
RDg1QjE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLmggKi8sCiAJCQkJMjk2QkQ4
NUMxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5tbSAqLywKLQkJCQlCQzAwOTJG
NjExNTgzN0EzMDBFMEFFMkEgLyogV29ya1F1ZXVlTWFjLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTY2MDksOCArNjYwMiw2IEBA
CiAJCQkJQzBFM0FBNDQxMjA5RTJCQTAwQTQ5RDAxIC8qIE1vZHVsZS5oICovLAogCQkJCUJDODc4
MEZCMTE2MUMyQjgwMENDMjc2OCAvKiBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmggKi8sCiAJ
CQkJMUEyNEJFRDMxMjA4OTREMTAwRkJCMDU5IC8qIFNoYXJlZE1lbW9yeS5oICovLAotCQkJCUJD
MkU2RTdEMTE0MTk3MEMwMEE2M0IxRSAvKiBXb3JrUXVldWUuY3BwICovLAotCQkJCUJDMkU2RTdF
MTE0MTk3MEMwMEE2M0IxRSAvKiBXb3JrUXVldWUuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gUGxh
dGZvcm07CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtODI5Nyw3ICs4Mjg4LDYgQEAK
IAkJCQkyNkY5QTgzQjE4QTM0NjgxMDBBRUI4OEEgLyogV0tXZWJWaWV3UHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFENjBGNUUxOEUyMEY0QzAwMjBDMDM0IC8qIFdLV2luZG93RmVhdHVy
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRDYwRjYwMThFMjBGNzQwMDIwQzAzNCAvKiBXS1dp
bmRvd0ZlYXR1cmVzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDMkU2RThFMTE0MTk3
MTUwMEE2M0IxRSAvKiBXb3JrUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkVDREU4MTZC
NjQxNjgwMDA0N0ExQSAvKiBYUENTZXJ2aWNlRW50cnlQb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC05OTgz
LDggKzk5NzMsNiBAQAogCQkJCTFBREY1OTFBMTg5MDUyOEUwMDQzQzE0NSAvKiBXS1dlYlZpZXdD
b25maWd1cmF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRDNkQ5QzQxOEM0NEE2MTAwNDNC
QUQ0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUFENjBGNUQxOEUyMEY0QzAwMjBDMDM0IC8qIFdLV2luZG93RmVhdHVyZXMubW0gaW4g
U291cmNlcyAqLywKLQkJCQlCQzJFNkU4RDExNDE5NzE1MDBBNjNCMUUgLyogV29ya1F1ZXVlLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCUJDMDA5MkY4MTE1ODM3QTMwMEUwQUUyQSAvKiBXb3JrUXVl
dWVNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCRUNERTcxNkI2NDE2ODAwMDQ3QTFBIC8q
IFhQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246961</attachid>
            <date>2015-02-20 04:12:59 -0800</date>
            <delta_ts>2015-02-20 05:08:40 -0800</delta_ts>
            <desc>another</desc>
            <filename>workqueue-wtf-3.patch</filename>
            <type>text/plain</type>
            <size>58791</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE1LTAyLTE5ICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdvcmtRdWV1ZSBmcm9tIFdLMiB0byBXVEYK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTc5Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAgICBJdCBtYXkg
YmUgdXNlZnVsIGluIFdlYkNvcmUuCisKKyAgICAgICAgV2luZG93cyBpbXBsZW1lbnRhdGlvbiBp
cyBzdGlsbCBtaXNzaW5nLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9QbGF0Zm9y
bUdUSy5jbWFrZToKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmNwcDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmNwcC4KKyAgICAgICAgKiB3dGYvV29ya1F1
ZXVlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oLgor
ICAgICAgICAqIHd0Zi9jb2NvYTogQWRkZWQuCisgICAgICAgICogd3RmL2NvY29hL1dvcmtRdWV1
ZUNvY29hLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1dvcmtR
dWV1ZU1hYy5jcHAuCisgICAgICAgICogd3RmL2VmbC9Xb3JrUXVldWVFZmwuY3BwOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcC4KKyAgICAg
ICAgKiB3dGYvZ3RrL1dvcmtRdWV1ZUd0ay5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwLgorCiAyMDE1LTAyLTEzICBHeXV5b3VuZyBL
aW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gRW5hYmxlIGJt
YWxsb2MgZm9yIEVGTCBwb3J0IApJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNiArMjgyLDkgQEAKIAkJQ0U3
M0UwMjUxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3M0UwMjQxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQ
SS5oICovOyB9OwogCQlFMTU1NTZGNTE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0
aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAg
Ki87IH07CiAJCUUxNTU1NkY2MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU1
NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oICovOyB9Owor
CQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBBRDM3MUE5NjI0NTUwMDUzNkRG
NiAvKiBXb3JrUXVldWUuY3BwICovOyB9OworCQlFNEEwQUQzQTFBOTYyNDU1MDA1MzZERjYgLyog
V29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi87IH07CisJCUU0QTBB
RDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzQzFBOTYyNTNDMDA1MzZERjYg
LyogV29ya1F1ZXVlQ29jb2EuY3BwICovOyB9OwogCQlFQjk1RTFGMDE2MUE3MjQxMDA4OUEyRjUg
LyogQnl0ZU9yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFQjk1RTFFRjE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggKi87IH07CiAJCUZF
REFDRDNEMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAv
KiBTdGFja1N0YXRzLmNwcCAqLzsgfTsKIAkJRkVEQUNEM0UxNjMwRjgzRjAwQzY5NjM0IC8qIFN0
YWNrU3RhdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi87IH07CkBAIC01Nzgs
NiArNTgxLDkgQEAKIAkJQ0U3M0UwMjQxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUENTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTE1NTU2RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGls
aXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvZ3Jh
cGhpY1V0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkY0
MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrUXVldWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYg
LyogV29ya1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtRdWV1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEEwQUQzQzFBOTYyNTNDMDA1MzZE
RjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV29ya1F1ZXVlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Qjk1RTFFRjE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJ5dGVPcmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGFja1N0YXRzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhY2tTdGF0cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNjk4LDYgKzcwNCw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTJDREVEMEYwMTgxMTVDM0YwMDREQkE3MCAvKiBjZiAqLywK
KwkJCQlFNEEwQUQzQjFBOTYyNTE5MDA1MzZERjYgLyogY29jb2EgKi8sCiAJCQkJQThBNDcyODEx
NTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EgKi8sCiAJCQkJMUZBNDdDODcxNTI1MDJEQTAwNTY4RDFC
IC8qIGlvcyAqLywKIAkJCQlBOEE0NzJDNDE1MUE4MjVBMDA0MTIzRkYgLyogbWFjICovLApAQCAt
ODk2LDYgKzkwMyw4IEBACiAJCQkJQThBNDczNzExNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRy
YWl0cy5oICovLAogCQkJCUE4QTQ3MzcyMTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRhZ3MuaCAqLywK
IAkJCQk5NzRDRkM4RDE2QTRGMzI3MDA2RDU0MDQgLyogV2Vha1B0ci5oICovLAorCQkJCUU0QTBB
RDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICovLAorCQkJCUU0QTBBRDM4MUE5
NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCAqLywKIAkJCQlBOEE0NzM3QTE1MUE4MjVCMDA0
MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgKi8sCiAJCQkJQThBNDczN0IxNTFBODI1QjAwNDEy
M0ZGIC8qIFdURlRocmVhZERhdGEuaCAqLywKIAkJCSk7CkBAIC0xMDMxLDYgKzEwNDAsMTQgQEAK
IAkJCXBhdGggPSBzcGk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlFNEEw
QUQzQjFBOTYyNTE5MDA1MzZERjYgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCUU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVl
dWVDb2NvYS5jcHAgKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTEyMjEsNiArMTIzOCw3IEBACiAJ
CQkJQThBNDc0N0YxNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRyYWl0cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDc0ODAxNTFBODI1QjAwNDEyM0ZGIC8qIFZNVGFncy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTc0Q0ZDOEUxNkE0RjMyNzAwNkQ1NDA0IC8qIFdlYWtQdHIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUU0QTBBRDNBMUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFGQTQ3QzhCMTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ0NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5n
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ4NzE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhy
ZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzUwLDYgKzEzNjgsNyBAQAogCQkJCUE4QTQ3
M0IwMTUxQTgyNUIwMDQxMjNGRiAvKiBkb3VibGUtY29udmVyc2lvbi5jYyBpbiBTb3VyY2VzICov
LAogCQkJCUE4QTQ3M0JBMTUxQTgyNUIwMDQxMjNGRiAvKiBkdG9hLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGODg1RTBGMTg0NUFFQTkwMEYxRTNGQSAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2Nv
YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCMzE1MUE4MjVCMDA0MTIzRkYgLyogZmFz
dC1kdG9hLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQzMxNTFBODI1QjAwNDEyM0ZGIC8q
IEZhc3RNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RkExODI0MzVBNjAwQTgy
RTY5IC8qIEF0b21pY1N0cmluZ0NGLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTM3OCw2ICsxMzk3
LDcgQEAKIAkJCQkyQ0RFRDBFRjE4MTE1QzM4MDA0REJBNzAgLyogUnVuTG9vcENGLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0Njk0MTkzMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXJD
Ri5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQyMTE1MUE4MjVCMDA0MTIzRkYgLyogU0hB
MS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZERjYgLyogV29y
a1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0Njk0MTk5MTZFQUIwNDEwMDI0RTE0NiAv
KiBTY2hlZHVsZVBhaXJDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDY5NDE5NzE2RUFBRkY4
MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc0ODc0
NTIxN0EwQkRBRTAwRkEwNENCIC8qIFNpeENoYXJhY3Rlckhhc2guY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsNyBAQCBz
ZXQoV1RGX0hFQURFUlMKICAgICBWZWN0b3IuaAogICAgIFZlY3RvclRyYWl0cy5oCiAgICAgV1RG
VGhyZWFkRGF0YS5oCisgICAgV29ya1F1ZXVlLmgKICAgICBXZWFrUHRyLmgKICAgICBkdG9hLmgK
IApAQCAtMTg0LDYgKzE4NSw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIFN0cmluZ1ByaW50U3Ry
ZWFtLmNwcAogICAgIFRocmVhZGluZy5jcHAKICAgICBXVEZUaHJlYWREYXRhLmNwcAorICAgIFdv
cmtRdWV1ZS5jcHAKICAgICBkdG9hLmNwcAogCiAgICAgZHRvYS9iaWdudW0tZHRvYS5jYwpJbmRl
eDogU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC02LDYgKzYsNyBAQCBs
aXN0KEFQUEVORCBXVEZfU09VUkNFUwogCiAgICAgZ3RrL01haW5UaHJlYWRHdGsuY3BwCiAgICAg
Z3RrL1J1bkxvb3BHdGsuY3BwCisgICAgZ3RrL1dvcmtRdWV1ZUd0ay5jcHAKICkKIAogbGlzdChB
UFBFTkQgV1RGX0xJQlJBUklFUwpJbmRleDogU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuY3BwCShyZXZpc2lvbiAxODAz
NDIpCShmcm9tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5jcHA6MTgwMzQyKQor
KysgU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtR
dWV1ZS5oIgorCitSZWY8V29ya1F1ZXVlPiBXb3JrUXVldWU6OmNyZWF0ZShjb25zdCBjaGFyKiBu
YW1lLCBUeXBlIHR5cGUsIFFPUyBxb3MpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29y
a1F1ZXVlKG5hbWUsIHR5cGUsIHFvcykpOworfQorCitXb3JrUXVldWU6OldvcmtRdWV1ZShjb25z
dCBjaGFyKiBuYW1lLCBUeXBlIHR5cGUsIFFPUyBxb3MpCit7CisgICAgcGxhdGZvcm1Jbml0aWFs
aXplKG5hbWUsIHR5cGUsIHFvcyk7Cit9CisKK1dvcmtRdWV1ZTo6fldvcmtRdWV1ZSgpCit7Cisg
ICAgcGxhdGZvcm1JbnZhbGlkYXRlKCk7Cit9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Xb3JrUXVl
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAJKHdvcmtp
bmcgY29weSkKKysrIFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXb3JrUXVl
dWUuaCIKIAorbmFtZXNwYWNlIFdURiB7CisKIFJlZjxXb3JrUXVldWU+IFdvcmtRdWV1ZTo6Y3Jl
YXRlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXb3JrUXVldWUobmFtZSwgdHlwZSwgcW9zKSk7CkBAIC00MCwzICs0Miw1
IEBAIFdvcmtRdWV1ZTo6fldvcmtRdWV1ZSgpCiB7CiAgICAgcGxhdGZvcm1JbnZhbGlkYXRlKCk7
CiB9CisKK30KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCShyZXZpc2lvbiAxODAzNDIpCShmcm9tIFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oOjE4MDM0MikKKysrIFNvdXJjZS9XVEYvd3Rm
L1dvcmtRdWV1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRp
b25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXb3JrUXVldWVfaAorI2RlZmluZSBXb3Jr
UXVldWVfaAorCisjaWYgT1MoREFSV0lOKQorI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+
CisjZW5kaWYKKworI2luY2x1ZGUgPGNocm9ubz4KKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5o
PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KEVGTCkKKyNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCisjZW5kaWYKKwor
I2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BTb3VyY2Uu
aD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjZWxpZiBQTEFURk9STShFRkwp
CisjaW5jbHVkZSA8RGlzcGF0Y2hRdWV1ZUVmbC5oPgorI2VuZGlmCisKK2NsYXNzIFdvcmtRdWV1
ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgeworcHVibGljOgorICAgIGVudW0g
Y2xhc3MgVHlwZSB7CisgICAgICAgIFNlcmlhbCwKKyAgICAgICAgQ29uY3VycmVudAorICAgIH07
CisgICAgZW51bSBjbGFzcyBRT1MgeworICAgICAgICBVc2VySW50ZXJhY3RpdmUsCisgICAgICAg
IFVzZXJJbml0aWF0ZWQsCisgICAgICAgIERlZmF1bHQsCisgICAgICAgIFV0aWxpdHksCisgICAg
ICAgIEJhY2tncm91bmQKKyAgICB9OworICAgIAorICAgIHN0YXRpYyBSZWY8V29ya1F1ZXVlPiBj
cmVhdGUoY29uc3QgY2hhciogbmFtZSwgVHlwZSA9IFR5cGU6OlNlcmlhbCwgUU9TID0gUU9TOjpE
ZWZhdWx0KTsKKyAgICB2aXJ0dWFsIH5Xb3JrUXVldWUoKTsKKworICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3Bh
dGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
KTsKKworI2lmIE9TKERBUldJTikKKyAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUo
KSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KKyNlbGlmIFBMQVRGT1JNKEdUSykK
KyAgICB2b2lkIHJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCwgc3RkOjpmdW5jdGlvbjx2
b2lkICgpPiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU29j
a2V0RXZlbnRIYW5kbGVyKGludCk7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgdm9pZCByZWdp
c3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOworICAg
IHZvaWQgdW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQpOworI2VuZGlmCisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgV29ya1F1ZXVlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUyk7
CisKKyAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBR
T1MpOworICAgIHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7CisKKyNpZiBPUyhEQVJXSU4pCisg
ICAgc3RhdGljIHZvaWQgZXhlY3V0ZUZ1bmN0aW9uKHZvaWQqKTsKKyAgICBkaXNwYXRjaF9xdWV1
ZV90IG1fZGlzcGF0Y2hRdWV1ZTsKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICBUaHJlYWRJZGVu
dGlmaWVyIG1fd29ya1F1ZXVlVGhyZWFkOworICAgIEdSZWZQdHI8R01haW5Db250ZXh0PiBtX2V2
ZW50Q29udGV4dDsKKyAgICBNdXRleCBtX2V2ZW50TG9vcExvY2s7CisgICAgR1JlZlB0cjxHTWFp
bkxvb3A+IG1fZXZlbnRMb29wOworICAgIEdNYWluTG9vcFNvdXJjZSBtX3NvY2tldEV2ZW50U291
cmNlOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIFJlZlB0cjxEaXNwYXRjaFF1ZXVlPiBtX2Rp
c3BhdGNoUXVldWU7CisjZW5kaWYKK307CisKKyNlbmRpZiAvLyBXb3JrUXVldWVfaApJbmRleDog
U291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
V29ya1F1ZXVlLmgJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMiArMjcsMTYgQEAKICNpZm5kZWYgV29ya1F1ZXVlX2gK
ICNkZWZpbmUgV29ya1F1ZXVlX2gKIAotI2lmIE9TKERBUldJTikKLSNpbmNsdWRlIDxkaXNwYXRj
aC9kaXNwYXRjaC5oPgotI2VuZGlmCi0KICNpbmNsdWRlIDxjaHJvbm8+CiAjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bkRpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgotI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0jaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShFRkwpCi0jaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5o
IgorI2lmIE9TKERBUldJTikKKyNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2VuZGlm
CiAKICNpZiBQTEFURk9STShHVEspCkBAIC01Miw2ICs0Niw4IEBACiAjaW5jbHVkZSA8RGlzcGF0
Y2hRdWV1ZUVmbC5oPgogI2VuZGlmCiAKK25hbWVzcGFjZSBXVEYgeworCiBjbGFzcyBXb3JrUXVl
dWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKIHB1YmxpYzoKICAgICBlbnVt
IGNsYXNzIFR5cGUgewpAQCAtNjYsMTEgKzYyLDExIEBAIHB1YmxpYzoKICAgICAgICAgQmFja2dy
b3VuZAogICAgIH07CiAgICAgCi0gICAgc3RhdGljIFJlZjxXb3JrUXVldWU+IGNyZWF0ZShjb25z
dCBjaGFyKiBuYW1lLCBUeXBlID0gVHlwZTo6U2VyaWFsLCBRT1MgPSBRT1M6OkRlZmF1bHQpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFdvcmtRdWV1ZT4gY3JlYXRlKGNvbnN0
IGNoYXIqIG5hbWUsIFR5cGUgPSBUeXBlOjpTZXJpYWwsIFFPUyA9IFFPUzo6RGVmYXVsdCk7CiAg
ICAgdmlydHVhbCB+V29ya1F1ZXVlKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaEFmdGVyKHN0
ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+KSBvdmVycmlkZTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVy
KHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CiAKICNp
ZiBPUyhEQVJXSU4pCiAgICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNwYXRjaFF1ZXVlOyB9CkBAIC0xMDIsNCArOTgsOCBAQCBwcml2YXRlOgog
I2VuZGlmCiB9OwogCi0jZW5kaWYgLy8gV29ya1F1ZXVlX2gKK30KKwordXNpbmcgV1RGOjpXb3Jr
UXVldWU7CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29j
b2EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29h
LmNwcAkocmV2aXNpb24gMTgwMzQyKQkoZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMv
V29ya1F1ZXVlTWFjLmNwcDoxODAzNDIpCisrKyBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVl
dWVDb2NvYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrUXVldWUuaCIKKwordm9pZCBXb3Jr
UXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAg
cmVmKCk7CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBm
dW5jdGlvbigpOworICAgICAgICBkZXJlZigpOworICAgIH0pOworfQorCit2b2lkIFdvcmtRdWV1
ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAgcmVmKCk7CisgICAgZGlzcGF0Y2hf
YWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgZHVyYXRpb24uY291bnQoKSks
IG1fZGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgZnVuY3Rpb24oKTsKKyAgICAgICAgZGVyZWYo
KTsKKyAgICB9KTsKK30KKworI2lmIEhBVkUoUU9TX0NMQVNTRVMpCitzdGF0aWMgZGlzcGF0Y2hf
cW9zX2NsYXNzX3QgZGlzcGF0Y2hRT1NDbGFzcyhXb3JrUXVldWU6OlFPUyBxb3MpCit7CisgICAg
c3dpdGNoIChxb3MpIHsKKyAgICBjYXNlIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmU6
CisgICAgICAgIHJldHVybiBRT1NfQ0xBU1NfVVNFUl9JTlRFUkFDVElWRTsKKyAgICBjYXNlIFdv
cmtRdWV1ZTo6UU9TOjpVc2VySW5pdGlhdGVkOgorICAgICAgICByZXR1cm4gUU9TX0NMQVNTX1VT
RVJfSU5JVElBVEVEOworICAgIGNhc2UgV29ya1F1ZXVlOjpRT1M6OkRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBRT1NfQ0xBU1NfREVGQVVMVDsKKyAgICBjYXNlIFdvcmtRdWV1ZTo6UU9TOjpVdGls
aXR5OgorICAgICAgICByZXR1cm4gUU9TX0NMQVNTX1VUSUxJVFk7CisgICAgY2FzZSBXb3JrUXVl
dWU6OlFPUzo6QmFja2dyb3VuZDoKKyAgICAgICAgcmV0dXJuIFFPU19DTEFTU19CQUNLR1JPVU5E
OworICAgIH0KK30KKyNlbmRpZgorCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXpl
KGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykKK3sKKyAgICBkaXNwYXRjaF9x
dWV1ZV9hdHRyX3QgYXR0ciA9IHR5cGUgPT0gVHlwZTo6Q29uY3VycmVudCA/IERJU1BBVENIX1FV
RVVFX0NPTkNVUlJFTlQgOiBESVNQQVRDSF9RVUVVRV9TRVJJQUw7CisjaWYgSEFWRShRT1NfQ0xB
U1NFUykKKyAgICBhdHRyID0gZGlzcGF0Y2hfcXVldWVfYXR0cl9tYWtlX3dpdGhfcW9zX2NsYXNz
KGF0dHIsIGRpc3BhdGNoUU9TQ2xhc3MocW9zKSwgMCk7CisjZW5kaWYKKyAgICBtX2Rpc3BhdGNo
UXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUobmFtZSwgYXR0cik7CisgICAgZGlzcGF0Y2hf
c2V0X2NvbnRleHQobV9kaXNwYXRjaFF1ZXVlLCB0aGlzKTsKK30KKwordm9pZCBXb3JrUXVldWU6
OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAgZGlzcGF0Y2hfcmVsZWFzZShtX2Rpc3BhdGNo
UXVldWUpOworfQpJbmRleDogU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAko
d29ya2luZyBjb3B5KQorKysgU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiV29ya1F1ZXVlLmgiCiAKK25hbWVzcGFjZSBXVEYgeworCiB2b2lkIFdvcmtRdWV1
ZTo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKIHsKICAgICByZWYo
KTsKQEAgLTY3LDYgKzY5LDggQEAgdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShj
b25zdAogICAgIGRpc3BhdGNoX3F1ZXVlX2F0dHJfdCBhdHRyID0gdHlwZSA9PSBUeXBlOjpDb25j
dXJyZW50ID8gRElTUEFUQ0hfUVVFVUVfQ09OQ1VSUkVOVCA6IERJU1BBVENIX1FVRVVFX1NFUklB
TDsKICNpZiBIQVZFKFFPU19DTEFTU0VTKQogICAgIGF0dHIgPSBkaXNwYXRjaF9xdWV1ZV9hdHRy
X21ha2Vfd2l0aF9xb3NfY2xhc3MoYXR0ciwgZGlzcGF0Y2hRT1NDbGFzcyhxb3MpLCAwKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHFvcyk7CiAjZW5kaWYKICAgICBtX2Rpc3BhdGNoUXVldWUg
PSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUobmFtZSwgYXR0cik7CiAgICAgZGlzcGF0Y2hfc2V0X2Nv
bnRleHQobV9kaXNwYXRjaFF1ZXVlLCB0aGlzKTsKQEAgLTc2LDMgKzgwLDUgQEAgdm9pZCBXb3Jr
UXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiB7CiAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX2Rp
c3BhdGNoUXVldWUpOwogfQorCit9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9lZmwvV29ya1F1ZXVl
RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9lZmwvV29ya1F1ZXVlRWZsLmNw
cAkocmV2aXNpb24gMTgwMzQyKQkoZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29y
a1F1ZXVlRWZsLmNwcDoxODAzNDIpCisrKyBTb3VyY2UvV1RGL3d0Zi9lZmwvV29ya1F1ZXVlRWZs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICAgIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXb3JrUXVldWUuaCIKKworI2luY2x1ZGUgPERpc3BhdGNoUXVldWVFZmwuaD4KKyNp
bmNsdWRlIDxEaXNwYXRjaFF1ZXVlV29ya0l0ZW1FZmwuaD4KKwordm9pZCBXb3JrUXVldWU6OnBs
YXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpCit7CisgICAgbV9k
aXNwYXRjaFF1ZXVlID0gRGlzcGF0Y2hRdWV1ZTo6Y3JlYXRlKG5hbWUpOworfQorCit2b2lkIFdv
cmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKK3sKKyAgICBSZWZQdHI8RGlzcGF0Y2hRdWV1
ZT4gZGlzcGF0Y2hRdWV1ZSA9IG1fZGlzcGF0Y2hRdWV1ZS5yZWxlYXNlKCk7CisgICAgZGlzcGF0
Y2hRdWV1ZS0+c3RvcFRocmVhZCgpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cmVnaXN0ZXJTb2Nr
ZXRFdmVudEhhbmRsZXIoaW50IGZpbGVEZXNjcmlwdG9yLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
IGZ1bmN0aW9uKQoreworICAgIGlmICghbV9kaXNwYXRjaFF1ZXVlKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2Rpc3BhdGNoUXVldWUtPnNldFNvY2tldEV2ZW50SGFuZGxlcihmaWxlRGVzY3Jp
cHRvciwgV1RGOjptb3ZlKGZ1bmN0aW9uKSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lz
dGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCBmaWxlRGVzY3JpcHRvcikKK3sKKyAgICBVTlVTRURf
UEFSQU0oZmlsZURlc2NyaXB0b3IpOworCisgICAgaWYgKCFtX2Rpc3BhdGNoUXVldWUpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fZGlzcGF0Y2hRdWV1ZS0+Y2xlYXJTb2NrZXRFdmVudEhhbmRs
ZXIoKTsKK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4gZnVuY3Rpb24pCit7CisgICAgaWYgKCFtX2Rpc3BhdGNoUXVldWUpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fZGlzcGF0Y2hRdWV1ZS0+ZGlzcGF0Y2goV29ya0l0ZW06OmNyZWF0ZSh0aGlz
LCBXVEY6Om1vdmUoZnVuY3Rpb24pKSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFm
dGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPiBmdW5jdGlvbikKK3sKKyAgICBpZiAoIW1fZGlzcGF0Y2hRdWV1ZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9kaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaChUaW1lcldvcmtJdGVtOjpjcmVh
dGUodGhpcywgV1RGOjptb3ZlKGZ1bmN0aW9uKSwgZHVyYXRpb24pKTsKK30KSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL2d0ay9Xb3JrUXVldWVHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL2d0ay9Xb3JrUXVldWVHdGsuY3BwCShyZXZpc2lvbiAxODAzNDIpCShmcm9tIFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwOjE4MDM0MikKKysrIFNvdXJjZS9X
VEYvd3RmL2d0ay9Xb3JrUXVldWVHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29w
eXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVl
LmgiCisKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisKK3N0YXRpYyBjb25zdCBzaXplX3Qga1Zpc3Vh
bFN0dWRpb1RocmVhZE5hbWVMaW1pdCA9IDMxOworCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1J
bml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUykKK3sKKyAgICBtX2V2ZW50Q29u
dGV4dCA9IGFkb3B0R1JlZihnX21haW5fY29udGV4dF9uZXcoKSk7CisgICAgQVNTRVJUKG1fZXZl
bnRDb250ZXh0KTsKKyAgICBtX2V2ZW50TG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9uZXco
bV9ldmVudENvbnRleHQuZ2V0KCksIEZBTFNFKSk7CisgICAgQVNTRVJUKG1fZXZlbnRMb29wKTsK
KworICAgIC8vIFRoaXMgbmFtZSBjYW4gYmUgY29tLmFwcGxlLldlYktpdC5Qcm9jZXNzTGF1bmNo
ZXIgb3IgY29tLmFwcGxlLkNvcmVJUEMuUmVjZWl2ZVF1ZXVlLgorICAgIC8vIFdlIGFyZSB1c2lu
ZyB0aG9zZSBuYW1lcyBmb3IgdGhlIHRocmVhZCBuYW1lLCBidXQgYm90aCBhcmUgbG9uZ2VyIHRo
YW4gMzEgY2hhcmFjdGVycywKKyAgICAvLyB3aGljaCBpcyB0aGUgbGltaXQgb2YgVmlzdWFsIFN0
dWRpbyBmb3IgdGhyZWFkIG5hbWVzLgorICAgIC8vIFdoZW4gbG9nIGlzIGVuYWJsZWQgY3JlYXRl
VGhyZWFkKCkgd2lsbCBhc3NlcnQgaW5zdGVhZCBvZiB0cnVuY2F0ZSB0aGUgbmFtZSwgc28gd2Ug
bmVlZAorICAgIC8vIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCB1c2UgYSBuYW1lIGxvbmdlciB0aGFu
IDMxIGNoYXJhY3RlcnMuCisgICAgY29uc3QgY2hhciogdGhyZWFkTmFtZSA9IGdfc3RycnN0cihu
YW1lLCAiLiIpOworICAgIGlmICh0aHJlYWROYW1lKQorICAgICAgICB0aHJlYWROYW1lKys7Cisg
ICAgZWxzZQorICAgICAgICB0aHJlYWROYW1lID0gbmFtZTsKKyAgICBpZiAoc3RybGVuKHRocmVh
ZE5hbWUpID4ga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCkKKyAgICAgICAgdGhyZWFkTmFt
ZSArPSBzdHJsZW4odGhyZWFkTmFtZSkgLSBrVmlzdWFsU3R1ZGlvVGhyZWFkTmFtZUxpbWl0Owor
CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIG1fd29ya1F1ZXVl
VGhyZWFkID0gY3JlYXRlVGhyZWFkKHRocmVhZE5hbWUsIFtwcm90ZWN0b3JdIHsgZ19tYWluX2xv
b3BfcnVuKHByb3RlY3Rvci0+bV9ldmVudExvb3AuZ2V0KCkpOyB9KTsKK30KKwordm9pZCBXb3Jr
UXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAgaWYgKG1fd29ya1F1ZXVlVGhyZWFk
KSB7CisgICAgICAgIGRldGFjaFRocmVhZChtX3dvcmtRdWV1ZVRocmVhZCk7CisgICAgICAgIG1f
d29ya1F1ZXVlVGhyZWFkID0gMDsKKyAgICB9CisKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9l
dmVudExvb3BMb2NrKTsKKyAgICBpZiAobV9ldmVudExvb3ApIHsKKyAgICAgICAgaWYgKGdfbWFp
bl9sb29wX2lzX3J1bm5pbmcobV9ldmVudExvb3AuZ2V0KCkpKQorICAgICAgICAgICAgZ19tYWlu
X2xvb3BfcXVpdChtX2V2ZW50TG9vcC5nZXQoKSk7CisgICAgICAgIG1fZXZlbnRMb29wLmNsZWFy
KCk7CisgICAgfQorCisgICAgbV9ldmVudENvbnRleHQuY2xlYXIoKTsKK30KKwordm9pZCBXb3Jr
UXVldWU6OnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCBmaWxlRGVzY3JpcHRvciwgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjbG9z
ZUZ1bmN0aW9uKQoreworICAgIEdSZWZQdHI8R1NvY2tldD4gc29ja2V0ID0gYWRvcHRHUmVmKGdf
c29ja2V0X25ld19mcm9tX2ZkKGZpbGVEZXNjcmlwdG9yLCAwKSk7CisgICAgcmVmKCk7CisgICAg
bV9zb2NrZXRFdmVudFNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF0gV29ya1F1ZXVlOjpTb2NrZXRF
dmVudEhhbmRsZXIiLCBbZnVuY3Rpb24sIGNsb3NlRnVuY3Rpb25dKEdJT0NvbmRpdGlvbiBjb25k
aXRpb24pIHsKKyAgICAgICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lPX0hVUCB8fCBjb25kaXRp
b24gJiBHX0lPX0VSUiB8fCBjb25kaXRpb24gJiBHX0lPX05WQUwpIHsKKyAgICAgICAgICAgICAg
ICBjbG9zZUZ1bmN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEdNYWluTG9vcFNvdXJj
ZTo6U3RvcDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNvbmRpdGlvbiAmIEdf
SU9fSU4pIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbigpOworICAgICAgICAgICAgICAgIHJl
dHVybiBHTWFpbkxvb3BTb3VyY2U6OkNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBHTWFpbkxvb3BT
b3VyY2U6OlN0b3A7CisgICAgICAgIH0sIHNvY2tldC5nZXQoKSwgR19JT19JTiwKKyAgICAgICAg
W3RoaXNdIHsgZGVyZWYoKTsgfSwKKyAgICAgICAgbV9ldmVudENvbnRleHQuZ2V0KCkpOworfQor
Cit2b2lkIFdvcmtRdWV1ZTo6dW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQpCit7Cisg
ICAgbV9zb2NrZXRFdmVudFNvdXJjZS5jYW5jZWwoKTsKK30KKwordm9pZCBXb3JrUXVldWU6OmRp
c3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAgcmVmKCk7Cisg
ICAgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFuZERlbGV0ZU9uRGVzdHJveSgiW1dlYktpdF0g
V29ya1F1ZXVlOjpkaXNwYXRjaCIsIFdURjo6bW92ZShmdW5jdGlvbiksIEdfUFJJT1JJVFlfREVG
QVVMVCwKKyAgICAgICAgW3RoaXNdIHsgZGVyZWYoKTsgfSwgbV9ldmVudENvbnRleHQuZ2V0KCkp
OworfQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3Nl
Y29uZHMgZHVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAg
cmVmKCk7CisgICAgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFmdGVyRGVsYXlBbmREZWxldGVP
bkRlc3Ryb3koIltXZWJLaXRdIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlciIsIFdURjo6bW92ZShm
dW5jdGlvbiksCisgICAgICAgIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25v
OjptaWxsaXNlY29uZHM+KGR1cmF0aW9uKSwgR19QUklPUklUWV9ERUZBVUxULCBbdGhpc10geyBk
ZXJlZigpOyB9LCBtX2V2ZW50Q29udGV4dC5nZXQoKSk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwzMCBAQAorMjAxNS0wMi0xOSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CisKKyAgICAgICAgTW92ZSBXb3JrUXVldWUgZnJvbSBXSzIgdG8gV1RGCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE3OTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVl
dWUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFBsYXRmb3JtL1dvcmtRdWV1ZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIFBsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIFBsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFBsYXRmb3JtL21hYy9Xb3JrUXVldWVNYWMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFBsYXRm
b3JtRWZsLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFNo
YXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHA6CisgICAgICAgICog
VUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFdlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNS0wMi0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdW2lPU10gRml4IE5ldHdvcmtDYWNoZSBidWlsZApJ
bmRleDogU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9XZWJL
aXQyL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNyArMTgxLDYgQEAgc2V0
KFdlYktpdDJfU09VUkNFUwogCiAgICAgUGxhdGZvcm0vTG9nZ2luZy5jcHAKICAgICBQbGF0Zm9y
bS9Nb2R1bGUuY3BwCi0gICAgUGxhdGZvcm0vV29ya1F1ZXVlLmNwcAogCiAgICAgUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmNwcAogICAgIFBsYXRmb3JtL0lQQy9Bcmd1bWVudERlY29kZXIu
Y3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQkocmV2aXNpb24gMTgwMzQyKQorKysg
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExLDcg
KzExLDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgUGxhdGZvcm0vZWZsL0Rp
c3BhdGNoUXVldWVFZmwuY3BwCiAgICAgUGxhdGZvcm0vZWZsL0xvZ2dpbmdFZmwuY3BwCiAgICAg
UGxhdGZvcm0vZWZsL01vZHVsZUVmbC5jcHAKLSAgICBQbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZs
LmNwcAogCiAgICAgUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcAogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktp
dDIvUGxhdGZvcm1HVEsuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAgbGlz
dChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBQbGF0Zm9ybS9ndGsvTG9nZ2luZ0d0ay5j
cHAKICAgICBQbGF0Zm9ybS9ndGsvTW9kdWxlR3RrLmNwcAotICAgIFBsYXRmb3JtL2d0ay9Xb3Jr
UXVldWVHdGsuY3BwCiAKICAgICBQbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9j
ZXNzLmgJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9EYXRhYmFzZVByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsNiBAQAogI2lu
Y2x1ZGUgIldlYk9yaWdpbkRhdGFNYW5hZ2VyU3VwcGxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCi1jbGFzcyBXb3JrUXVldWU7Ci0KIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBBc3luY1Rhc2s7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3Jr
UXVldWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1
ZS5jcHAJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtR
dWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXb3JrUXVldWUuaCIKLQotUmVmPFdvcmtRdWV1
ZT4gV29ya1F1ZXVlOjpjcmVhdGUoY29uc3QgY2hhciogbmFtZSwgVHlwZSB0eXBlLCBRT1MgcW9z
KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtRdWV1ZShuYW1lLCB0eXBlLCBxb3Mp
KTsKLX0KLQotV29ya1F1ZXVlOjpXb3JrUXVldWUoY29uc3QgY2hhciogbmFtZSwgVHlwZSB0eXBl
LCBRT1MgcW9zKQotewotICAgIHBsYXRmb3JtSW5pdGlhbGl6ZShuYW1lLCB0eXBlLCBxb3MpOwot
fQotCi1Xb3JrUXVldWU6On5Xb3JrUXVldWUoKQotewotICAgIHBsYXRmb3JtSW52YWxpZGF0ZSgp
OwotfQpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgJKHJldmlzaW9uIDE4MDM0
MikKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rv
cm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBXb3JrUXVldWVfaAotI2RlZmluZSBXb3JrUXVldWVfaAotCi0jaWYgT1MoREFSV0lOKQot
I2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPGNocm9u
bz4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFs
Lmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0K
LSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKLSNpbmNsdWRlICJQbGF0Zm9ybVBy
b2Nlc3NJZGVudGlmaWVyLmgiCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKEdUSykKLSNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HTWFpbkxvb3BTb3VyY2UuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
UmVmUHRyLmg+Ci0jZWxpZiBQTEFURk9STShFRkwpCi0jaW5jbHVkZSA8RGlzcGF0Y2hRdWV1ZUVm
bC5oPgotI2VuZGlmCi0KLWNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRp
c3BhdGNoZXIgewotcHVibGljOgotICAgIGVudW0gY2xhc3MgVHlwZSB7Ci0gICAgICAgIFNlcmlh
bCwKLSAgICAgICAgQ29uY3VycmVudAotICAgIH07Ci0gICAgZW51bSBjbGFzcyBRT1MgewotICAg
ICAgICBVc2VySW50ZXJhY3RpdmUsCi0gICAgICAgIFVzZXJJbml0aWF0ZWQsCi0gICAgICAgIERl
ZmF1bHQsCi0gICAgICAgIFV0aWxpdHksCi0gICAgICAgIEJhY2tncm91bmQKLSAgICB9OwotICAg
IAotICAgIHN0YXRpYyBSZWY8V29ya1F1ZXVlPiBjcmVhdGUoY29uc3QgY2hhciogbmFtZSwgVHlw
ZSA9IFR5cGU6OlNlcmlhbCwgUU9TID0gUU9TOjpEZWZhdWx0KTsKLSAgICB2aXJ0dWFsIH5Xb3Jr
UXVldWUoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9z
ZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKLQotI2lmIE9TKERBUldJTikKLSAgICBk
aXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNo
UXVldWU7IH0KLSNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICB2b2lkIHJlZ2lzdGVyU29ja2V0RXZl
bnRIYW5kbGVyKGludCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiwgc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCk7Ci0jZWxp
ZiBQTEFURk9STShFRkwpCi0gICAgdm9pZCByZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQs
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOwotICAgIHZvaWQgdW5yZWdpc3RlclNvY2tldEV2ZW50
SGFuZGxlcihpbnQpOwotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV29ya1F1ZXVl
KGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUyk7Ci0KLSAgICB2b2lkIHBsYXRmb3JtSW5pdGlh
bGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpOwotICAgIHZvaWQgcGxhdGZvcm1JbnZh
bGlkYXRlKCk7Ci0KLSNpZiBPUyhEQVJXSU4pCi0gICAgc3RhdGljIHZvaWQgZXhlY3V0ZUZ1bmN0
aW9uKHZvaWQqKTsKLSAgICBkaXNwYXRjaF9xdWV1ZV90IG1fZGlzcGF0Y2hRdWV1ZTsKLSNlbGlm
IFBMQVRGT1JNKEdUSykKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1fd29ya1F1ZXVlVGhyZWFkOwot
ICAgIEdSZWZQdHI8R01haW5Db250ZXh0PiBtX2V2ZW50Q29udGV4dDsKLSAgICBNdXRleCBtX2V2
ZW50TG9vcExvY2s7Ci0gICAgR1JlZlB0cjxHTWFpbkxvb3A+IG1fZXZlbnRMb29wOwotICAgIEdN
YWluTG9vcFNvdXJjZSBtX3NvY2tldEV2ZW50U291cmNlOwotI2VsaWYgUExBVEZPUk0oRUZMKQot
ICAgIFJlZlB0cjxEaXNwYXRjaFF1ZXVlPiBtX2Rpc3BhdGNoUXVldWU7Ci0jZW5kaWYKLX07Ci0K
LSNlbmRpZiAvLyBXb3JrUXVldWVfaApJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5oCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSArMzMsMTIgQEAKICNp
bmNsdWRlICJNZXNzYWdlRW5jb2Rlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgIlByb2Nlc3NUeXBlLmgiCi0jaW5jbHVkZSAiV29ya1F1ZXVlLmgiCiAjaW5jbHVk
ZSA8YXRvbWljPgogI2luY2x1ZGUgPGNvbmRpdGlvbl92YXJpYWJsZT4KICNpbmNsdWRlIDx3dGYv
RGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogI2lmIE9TKERBUldJTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2Vm
bC9Xb3JrUXVldWVFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L2VmbC9Xb3JrUXVldWVFZmwuY3BwCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2OSAr
MCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0K
LSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXb3JrUXVldWUuaCIKLQotI2luY2x1
ZGUgPERpc3BhdGNoUXVldWVFZmwuaD4KLSNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVlV29ya0l0ZW1F
ZmwuaD4KLQotdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBu
YW1lLCBUeXBlLCBRT1MpCi17Ci0gICAgbV9kaXNwYXRjaFF1ZXVlID0gRGlzcGF0Y2hRdWV1ZTo6
Y3JlYXRlKG5hbWUpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkK
LXsKLSAgICBSZWZQdHI8RGlzcGF0Y2hRdWV1ZT4gZGlzcGF0Y2hRdWV1ZSA9IG1fZGlzcGF0Y2hR
dWV1ZS5yZWxlYXNlKCk7Ci0gICAgZGlzcGF0Y2hRdWV1ZS0+c3RvcFRocmVhZCgpOwotfQotCi12
b2lkIFdvcmtRdWV1ZTo6cmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50IGZpbGVEZXNjcmlw
dG9yLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQotewotICAgIGlmICghbV9kaXNw
YXRjaFF1ZXVlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Rpc3BhdGNoUXVldWUtPnNldFNv
Y2tldEV2ZW50SGFuZGxlcihmaWxlRGVzY3JpcHRvciwgV1RGOjptb3ZlKGZ1bmN0aW9uKSk7Ci19
Ci0KLXZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCBmaWxl
RGVzY3JpcHRvcikKLXsKLSAgICBVTlVTRURfUEFSQU0oZmlsZURlc2NyaXB0b3IpOwotCi0gICAg
aWYgKCFtX2Rpc3BhdGNoUXVldWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZGlzcGF0Y2hR
dWV1ZS0+Y2xlYXJTb2NrZXRFdmVudEhhbmRsZXIoKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OmRp
c3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCi17Ci0gICAgaWYgKCFtX2Rp
c3BhdGNoUXVldWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZGlzcGF0Y2hRdWV1ZS0+ZGlz
cGF0Y2goV29ya0l0ZW06OmNyZWF0ZSh0aGlzLCBXVEY6Om1vdmUoZnVuY3Rpb24pKSk7Ci19Ci0K
LXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBk
dXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKLXsKLSAgICBpZiAoIW1f
ZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kaXNwYXRjaFF1ZXVlLT5k
aXNwYXRjaChUaW1lcldvcmtJdGVtOjpjcmVhdGUodGhpcywgV1RGOjptb3ZlKGZ1bmN0aW9uKSwg
ZHVyYXRpb24pKTsKLX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2d0ay9Xb3JrUXVl
dWVHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2d0ay9Xb3Jr
UXVldWVHdGsuY3BwCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9ndGsvV29ya1F1ZXVlR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMTUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIFBvcnRpb25zIENvcHlyaWdo
dCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgot
Ci0jaW5jbHVkZSA8Z2lvL2dpby5oPgotCi1zdGF0aWMgY29uc3Qgc2l6ZV90IGtWaXN1YWxTdHVk
aW9UaHJlYWROYW1lTGltaXQgPSAzMTsKLQotdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlh
bGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpCi17Ci0gICAgbV9ldmVudENvbnRleHQg
PSBhZG9wdEdSZWYoZ19tYWluX2NvbnRleHRfbmV3KCkpOwotICAgIEFTU0VSVChtX2V2ZW50Q29u
dGV4dCk7Ci0gICAgbV9ldmVudExvb3AgPSBhZG9wdEdSZWYoZ19tYWluX2xvb3BfbmV3KG1fZXZl
bnRDb250ZXh0LmdldCgpLCBGQUxTRSkpOwotICAgIEFTU0VSVChtX2V2ZW50TG9vcCk7Ci0KLSAg
ICAvLyBUaGlzIG5hbWUgY2FuIGJlIGNvbS5hcHBsZS5XZWJLaXQuUHJvY2Vzc0xhdW5jaGVyIG9y
IGNvbS5hcHBsZS5Db3JlSVBDLlJlY2VpdmVRdWV1ZS4KLSAgICAvLyBXZSBhcmUgdXNpbmcgdGhv
c2UgbmFtZXMgZm9yIHRoZSB0aHJlYWQgbmFtZSwgYnV0IGJvdGggYXJlIGxvbmdlciB0aGFuIDMx
IGNoYXJhY3RlcnMsCi0gICAgLy8gd2hpY2ggaXMgdGhlIGxpbWl0IG9mIFZpc3VhbCBTdHVkaW8g
Zm9yIHRocmVhZCBuYW1lcy4KLSAgICAvLyBXaGVuIGxvZyBpcyBlbmFibGVkIGNyZWF0ZVRocmVh
ZCgpIHdpbGwgYXNzZXJ0IGluc3RlYWQgb2YgdHJ1bmNhdGUgdGhlIG5hbWUsIHNvIHdlIG5lZWQK
LSAgICAvLyB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgdXNlIGEgbmFtZSBsb25nZXIgdGhhbiAzMSBj
aGFyYWN0ZXJzLgotICAgIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUgPSBnX3N0cnJzdHIobmFtZSwg
Ii4iKTsKLSAgICBpZiAodGhyZWFkTmFtZSkKLSAgICAgICAgdGhyZWFkTmFtZSsrOwotICAgIGVs
c2UKLSAgICAgICAgdGhyZWFkTmFtZSA9IG5hbWU7Ci0gICAgaWYgKHN0cmxlbih0aHJlYWROYW1l
KSA+IGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGltaXQpCi0gICAgICAgIHRocmVhZE5hbWUgKz0g
c3RybGVuKHRocmVhZE5hbWUpIC0ga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdDsKLQotICAg
IFJlZlB0cjxXb3JrUXVldWU+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBtX3dvcmtRdWV1ZVRocmVh
ZCA9IGNyZWF0ZVRocmVhZCh0aHJlYWROYW1lLCBbcHJvdGVjdG9yXSB7IGdfbWFpbl9sb29wX3J1
bihwcm90ZWN0b3ItPm1fZXZlbnRMb29wLmdldCgpKTsgfSk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVl
OjpwbGF0Zm9ybUludmFsaWRhdGUoKQotewotICAgIGlmIChtX3dvcmtRdWV1ZVRocmVhZCkgewot
ICAgICAgICBkZXRhY2hUaHJlYWQobV93b3JrUXVldWVUaHJlYWQpOwotICAgICAgICBtX3dvcmtR
dWV1ZVRocmVhZCA9IDA7Ci0gICAgfQotCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZXZlbnRM
b29wTG9jayk7Ci0gICAgaWYgKG1fZXZlbnRMb29wKSB7Ci0gICAgICAgIGlmIChnX21haW5fbG9v
cF9pc19ydW5uaW5nKG1fZXZlbnRMb29wLmdldCgpKSkKLSAgICAgICAgICAgIGdfbWFpbl9sb29w
X3F1aXQobV9ldmVudExvb3AuZ2V0KCkpOwotICAgICAgICBtX2V2ZW50TG9vcC5jbGVhcigpOwot
ICAgIH0KLQotICAgIG1fZXZlbnRDb250ZXh0LmNsZWFyKCk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVl
OjpyZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQgZmlsZURlc2NyaXB0b3IsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4gZnVuY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY2xvc2VGdW5j
dGlvbikKLXsKLSAgICBHUmVmUHRyPEdTb2NrZXQ+IHNvY2tldCA9IGFkb3B0R1JlZihnX3NvY2tl
dF9uZXdfZnJvbV9mZChmaWxlRGVzY3JpcHRvciwgMCkpOwotICAgIHJlZigpOwotICAgIG1fc29j
a2V0RXZlbnRTb3VyY2Uuc2NoZWR1bGUoIltXZWJLaXRdIFdvcmtRdWV1ZTo6U29ja2V0RXZlbnRI
YW5kbGVyIiwgW2Z1bmN0aW9uLCBjbG9zZUZ1bmN0aW9uXShHSU9Db25kaXRpb24gY29uZGl0aW9u
KSB7Ci0gICAgICAgICAgICBpZiAoY29uZGl0aW9uICYgR19JT19IVVAgfHwgY29uZGl0aW9uICYg
R19JT19FUlIgfHwgY29uZGl0aW9uICYgR19JT19OVkFMKSB7Ci0gICAgICAgICAgICAgICAgY2xv
c2VGdW5jdGlvbigpOwotICAgICAgICAgICAgICAgIHJldHVybiBHTWFpbkxvb3BTb3VyY2U6OlN0
b3A7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lPX0lO
KSB7Ci0gICAgICAgICAgICAgICAgZnVuY3Rpb24oKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
R01haW5Mb29wU291cmNlOjpDb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gR01haW5Mb29wU291cmNl
OjpTdG9wOwotICAgICAgICB9LCBzb2NrZXQuZ2V0KCksIEdfSU9fSU4sCi0gICAgICAgIFt0aGlz
XSB7IGRlcmVmKCk7IH0sCi0gICAgICAgIG1fZXZlbnRDb250ZXh0LmdldCgpKTsKLX0KLQotdm9p
ZCBXb3JrUXVldWU6OnVucmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50KQotewotICAgIG1f
c29ja2V0RXZlbnRTb3VyY2UuY2FuY2VsKCk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRj
aChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQotewotICAgIHJlZigpOwotICAgIEdN
YWluTG9vcFNvdXJjZTo6c2NoZWR1bGVBbmREZWxldGVPbkRlc3Ryb3koIltXZWJLaXRdIFdvcmtR
dWV1ZTo6ZGlzcGF0Y2giLCBXVEY6Om1vdmUoZnVuY3Rpb24pLCBHX1BSSU9SSVRZX0RFRkFVTFQs
Ci0gICAgICAgIFt0aGlzXSB7IGRlcmVmKCk7IH0sIG1fZXZlbnRDb250ZXh0LmdldCgpKTsKLX0K
LQotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRz
IGR1cmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQotewotICAgIHJlZigp
OwotICAgIEdNYWluTG9vcFNvdXJjZTo6c2NoZWR1bGVBZnRlckRlbGF5QW5kRGVsZXRlT25EZXN0
cm95KCJbV2ViS2l0XSBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIiLCBXVEY6Om1vdmUoZnVuY3Rp
b24pLAotICAgICAgICBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWls
bGlzZWNvbmRzPihkdXJhdGlvbiksIEdfUFJJT1JJVFlfREVGQVVMVCwgW3RoaXNdIHsgZGVyZWYo
KTsgfSwgbV9ldmVudENvbnRleHQuZ2V0KCkpOwotfQpJbmRleDogU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vbWFjL1dvcmtRdWV1ZU1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vbWFjL1dvcmtRdWV1ZU1hYy5jcHAJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Xb3JrUXVldWVNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV29ya1F1ZXVlLmgiCi0KLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+IGZ1bmN0aW9uKQotewotICAgIHJlZigpOwotICAgIGRpc3BhdGNoX2FzeW5jKG1f
ZGlzcGF0Y2hRdWV1ZSwgXnsKLSAgICAgICAgZnVuY3Rpb24oKTsKLSAgICAgICAgZGVyZWYoKTsK
LSAgICB9KTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86
Om5hbm9zZWNvbmRzIGR1cmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQot
ewotICAgIHJlZigpOwotICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hf
VElNRV9OT1csIGR1cmF0aW9uLmNvdW50KCkpLCBtX2Rpc3BhdGNoUXVldWUsIF57Ci0gICAgICAg
IGZ1bmN0aW9uKCk7Ci0gICAgICAgIGRlcmVmKCk7Ci0gICAgfSk7Ci19Ci0KLSNpZiBIQVZFKFFP
U19DTEFTU0VTKQotc3RhdGljIGRpc3BhdGNoX3Fvc19jbGFzc190IGRpc3BhdGNoUU9TQ2xhc3Mo
V29ya1F1ZXVlOjpRT1MgcW9zKQotewotICAgIHN3aXRjaCAocW9zKSB7Ci0gICAgY2FzZSBXb3Jr
UXVldWU6OlFPUzo6VXNlckludGVyYWN0aXZlOgotICAgICAgICByZXR1cm4gUU9TX0NMQVNTX1VT
RVJfSU5URVJBQ1RJVkU7Ci0gICAgY2FzZSBXb3JrUXVldWU6OlFPUzo6VXNlckluaXRpYXRlZDoK
LSAgICAgICAgcmV0dXJuIFFPU19DTEFTU19VU0VSX0lOSVRJQVRFRDsKLSAgICBjYXNlIFdvcmtR
dWV1ZTo6UU9TOjpEZWZhdWx0OgotICAgICAgICByZXR1cm4gUU9TX0NMQVNTX0RFRkFVTFQ7Ci0g
ICAgY2FzZSBXb3JrUXVldWU6OlFPUzo6VXRpbGl0eToKLSAgICAgICAgcmV0dXJuIFFPU19DTEFT
U19VVElMSVRZOwotICAgIGNhc2UgV29ya1F1ZXVlOjpRT1M6OkJhY2tncm91bmQ6Ci0gICAgICAg
IHJldHVybiBRT1NfQ0xBU1NfQkFDS0dST1VORDsKLSAgICB9Ci19Ci0jZW5kaWYKLQotdm9pZCBX
b3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlIHR5cGUs
IFFPUyBxb3MpCi17Ci0gICAgZGlzcGF0Y2hfcXVldWVfYXR0cl90IGF0dHIgPSB0eXBlID09IFR5
cGU6OkNvbmN1cnJlbnQgPyBESVNQQVRDSF9RVUVVRV9DT05DVVJSRU5UIDogRElTUEFUQ0hfUVVF
VUVfU0VSSUFMOwotI2lmIEhBVkUoUU9TX0NMQVNTRVMpCi0gICAgYXR0ciA9IGRpc3BhdGNoX3F1
ZXVlX2F0dHJfbWFrZV93aXRoX3Fvc19jbGFzcyhhdHRyLCBkaXNwYXRjaFFPU0NsYXNzKHFvcyks
IDApOwotI2VuZGlmCi0gICAgbV9kaXNwYXRjaFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRl
KG5hbWUsIGF0dHIpOwotICAgIGRpc3BhdGNoX3NldF9jb250ZXh0KG1fZGlzcGF0Y2hRdWV1ZSwg
dGhpcyk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQotewotICAg
IGRpc3BhdGNoX3JlbGVhc2UobV9kaXNwYXRjaFF1ZXVlKTsKLX0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1h
bmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgotI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgorI2luY2x1
ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
I2lmIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5j
aGVyL1Byb2Nlc3NMYXVuY2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHAJKHJldmlzaW9uIDE4MDM0MikKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAKLSNpbmNsdWRlICJXb3JrUXVldWUuaCIKLSNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+IAorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
KyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxT
dG9yYWdlRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oIgogCiAj
aW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCi0jaW5jbHVkZSAiV29ya1F1
ZXVlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9u
Lmg+CkBAIC0zNSw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlTWFwLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TdWRkZW5UZXJtaW5hdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZS5oCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4
ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0KLWNsYXNzIFdvcmtR
dWV1ZTsKKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIu
Y3BwCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywx
MSArMjcsMTEgQEAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKIAog
I2luY2x1ZGUgIkxvY2FsU3RvcmFnZURldGFpbHMuaCIKLSNpbmNsdWRlICJXb3JrUXVldWUuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0
ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgJKHJldmlzaW9uIDE4MDM0MikKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IApAQCAtMzgsOCArMzksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKIH0KIAotY2xhc3MgV29ya1F1ZXVlOwotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3Ry
dWN0IExvY2FsU3RvcmFnZURldGFpbHM7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
U3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxODAzNDIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDExICszMywxMSBAQAogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFw
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVkZSAiV29ya1F1ZXVlLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhhc2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VN
YXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgogI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmlu
YXJ5U2VtYXBob3JlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCShyZXZp
c2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
TWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw2IEBACiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCi1jbGFzcyBXb3JrUXVldWU7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIz
LDcgKzEyMjMsNiBAQAogCQlCNjM0MDNGOTE0OTEwRDU3MDAxMDcwQjUgLyogQVBJT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2MzQwM0Y4
MTQ5MTBENTcwMDEwNzBCNSAvKiBBUElPYmplY3QuY3BwICovOyB9OwogCQlCODc4QjYxNTEzMzQy
OERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCODc4QjYxMzEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVj
dGlvblBhbmVsLmggKi87IH07CiAJCUI4NzhCNjE2MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0
aW9uUGFuZWwubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCODc4QjYxNDEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1tICovOyB9Owot
CQlCQzAwOTJGODExNTgzN0EzMDBFMEFFMkEgLyogV29ya1F1ZXVlTWFjLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDA5MkY2MTE1ODM3QTMwMEUw
QUUyQSAvKiBXb3JrUXVldWVNYWMuY3BwICovOyB9OwogCQlCQzAxN0QwNzE2MjYwRkY0MDA3MDU0
RjUgLyogV0tET01Eb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMwMTdDRkYxNjI2MEZGNDAwNzA1NEY1IC8qIFdLRE9NRG9jdW1lbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzAxN0Qw
ODE2MjYwRkY0MDA3MDU0RjUgLyogV0tET01Eb2N1bWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDE3RDAwMTYyNjBGRjQwMDcwNTRGNSAvKiBX
S0RPTURvY3VtZW50Lm1tICovOyB9OwogCQlCQzAxN0QwOTE2MjYwRkY0MDA3MDU0RjUgLyogV0tE
T01FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzAxN0QwMTE2MjYwRkY0MDA3MDU0RjUgLyogV0tET01FbGVtZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzMjIsOCArMTMyMSw2IEBA
CiAJCUJDMjY1MjE3MTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2NTIxMzExODI2MDgx
MDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5oICovOyB9OwogCQlCQzJEMDIxNzEyQUM0MUNC
MDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkQwMjE2MTJBQzQxQ0IwMEU3MzJBMyAv
KiBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oICovOyB9OwogCQlCQzJEMDIxOTEyQUM0MjZD
MDBFNzMyQTMgLyogV0tQYWdlTG9hZFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJEMDIxODEyQUM0MjZDMDBFNzMyQTMgLyogV0tQYWdlTG9h
ZFR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJQkMyRTZFOEQxMTQxOTcxNTAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJFNkU3RDExNDE5NzBDMDBBNjNC
MUUgLyogV29ya1F1ZXVlLmNwcCAqLzsgfTsKLQkJQkMyRTZFOEUxMTQxOTcxNTAwQTYzQjFFIC8q
IFdvcmtRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMyRTZFN0UxMTQxOTcwQzAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5oICovOyB9OwogCQlCQzMw
NjVGQTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzMDY1RjkxMjU5MzQ0RTAwRTcxMjc4IC8qIENh
Y2hlTW9kZWwuaCAqLzsgfTsKIAkJQkMzMDY2QkUxMjVBNDQyMTAwRTcxMjc4IC8qIFdlYlByb2Nl
c3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMzMDY2QkMxMjVBNDQyMTAwRTcxMjc4IC8qIFdlYlByb2Nlc3NNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OwogCQlCQzMwNjZCRjEyNUE0NDIxMDBFNzEyNzggLyogV2ViUHJv
Y2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzMwNjZCRDEyNUE0NDIxMDBFNzEyNzggLyogV2ViUHJvY2Vzc01lc3NhZ2VzLmggKi87
IH07CkBAIC0zNDA2LDcgKzM0MDMsNiBAQAogCQlCNjM0MDNGODE0OTEwRDU3MDAxMDcwQjUgLyog
QVBJT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSU9i
amVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4NzhCNjEzMTMzNDI4REMw
MDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29ycmVjdGlvblBhbmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4
NzhCNjE0MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3JyZWN0aW9uUGFuZWwubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDMDA5MkY2MTE1ODM3QTMwMEUwQUUyQSAvKiBXb3JrUXVl
dWVNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya1F1ZXVl
TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMTdDRkYxNjI2MEZGNDAw
NzA1NEY1IC8qIFdLRE9NRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tET01Eb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAxN0Qw
MDE2MjYwRkY0MDA3MDU0RjUgLyogV0tET01Eb2N1bWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLRE9NRG9jdW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDMDE3RDAxMTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTUVsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tET01FbGVtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNTEwLDggKzM1MDYsNiBAQAogCQlCQzI2NTIxMzExODI2
MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEcmF3aW5nQXJlYVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDMkQwMjE2MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJEMDIxODEyQUM0MjZD
MDBFNzMyQTMgLyogV0tQYWdlTG9hZFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLUGFnZUxvYWRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlC
QzJFNkU3RDExNDE5NzBDMDBBNjNCMUUgLyogV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUJDMkU2RTdFMTE0MTk3MEMwMEE2M0IxRSAvKiBXb3JrUXVldWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya1F1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDMzA2NUY5MTI1OTM0NEUwMEU3MTI3OCAvKiBDYWNoZU1vZGVsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlTW9kZWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkMzMDY2QjkxMjVBNDM2MzAwRTcxMjc4IC8qIFdlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzMDY2QkMxMjVBNDQyMTAwRTcxMjc4
IC8qIFdlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00NTU4LDcgKzQ1NTIsNiBAQAogCQkJCTFBMjRCRjM5MTIwODk2
QTYwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnlNYWMuY3BwICovLAogCQkJCTI5NkJEODVCMTUwMTlC
QzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMuaCAqLywKIAkJCQkyOTZCRDg1QzE1MDE5QkMz
MDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLm1tICovLAotCQkJCUJDMDA5MkY2MTE1ODM3QTMw
MEUwQUUyQSAvKiBXb3JrUXVldWVNYWMuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNjYwOSw4ICs2NjAyLDYgQEAKIAkJCQlDMEUz
QUE0NDEyMDlFMkJBMDBBNDlEMDEgLyogTW9kdWxlLmggKi8sCiAJCQkJQkM4NzgwRkIxMTYxQzJC
ODAwQ0MyNzY4IC8qIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCAqLywKIAkJCQkxQTI0QkVE
MzEyMDg5NEQxMDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5LmggKi8sCi0JCQkJQkMyRTZFN0QxMTQx
OTcwQzAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5jcHAgKi8sCi0JCQkJQkMyRTZFN0UxMTQxOTcwQzAw
QTYzQjFFIC8qIFdvcmtRdWV1ZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBQbGF0Zm9ybTsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC04Mjk3LDcgKzgyODgsNiBAQAogCQkJCTI2RjlB
ODNCMThBMzQ2ODEwMEFFQjg4QSAvKiBXS1dlYlZpZXdQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUQ2MEY1RTE4RTIwRjRDMDAyMEMwMzQgLyogV0tXaW5kb3dGZWF0dXJlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFENjBGNjAxOEUyMEY3NDAwMjBDMDM0IC8qIFdLV2luZG93RmVhdHVy
ZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkMyRTZFOEUxMTQxOTcxNTAwQTYzQjFF
IC8qIFdvcmtRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRUNERTgxNkI2NDE2ODAwMDQ3
QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTk5ODMsOCArOTk3Myw2
IEBACiAJCQkJMUFERjU5MUExODkwNTI4RTAwNDNDMTQ1IC8qIFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkyREM2RDlDNDE4QzQ0QTYxMDA0M0JBRDQgLyogV0tX
ZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUQ2
MEY1RDE4RTIwRjRDMDAyMEMwMzQgLyogV0tXaW5kb3dGZWF0dXJlcy5tbSBpbiBTb3VyY2VzICov
LAotCQkJCUJDMkU2RThEMTE0MTk3MTUwMEE2M0IxRSAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJQkMwMDkyRjgxMTU4MzdBMzAwRTBBRTJBIC8qIFdvcmtRdWV1ZU1hYy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQ0JFQ0RFNzE2QjY0MTY4MDAwNDdBMUEgLyogWFBDU2Vydmlj
ZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246964</attachid>
            <date>2015-02-20 05:08:40 -0800</date>
            <delta_ts>2015-02-20 05:17:26 -0800</delta_ts>
            <desc>another</desc>
            <filename>workqueue-wtf-4.patch</filename>
            <type>text/plain</type>
            <size>59276</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE1LTAyLTE5ICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdvcmtRdWV1ZSBmcm9tIFdLMiB0byBXVEYK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTc5Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAgICBJdCBtYXkg
YmUgdXNlZnVsIGluIFdlYkNvcmUuCisKKyAgICAgICAgV2luZG93cyBpbXBsZW1lbnRhdGlvbiBp
cyBzdGlsbCBtaXNzaW5nLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9QbGF0Zm9y
bUdUSy5jbWFrZToKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmNwcDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmNwcC4KKyAgICAgICAgKiB3dGYvV29ya1F1
ZXVlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oLgor
ICAgICAgICAqIHd0Zi9jb2NvYTogQWRkZWQuCisgICAgICAgICogd3RmL2NvY29hL1dvcmtRdWV1
ZUNvY29hLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1dvcmtR
dWV1ZU1hYy5jcHAuCisgICAgICAgICogd3RmL2VmbC9Xb3JrUXVldWVFZmwuY3BwOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcC4KKyAgICAg
ICAgKiB3dGYvZ3RrL1dvcmtRdWV1ZUd0ay5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwLgorCiAyMDE1LTAyLTEzICBHeXV5b3VuZyBL
aW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gRW5hYmxlIGJt
YWxsb2MgZm9yIEVGTCBwb3J0IApJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNiArMjgyLDkgQEAKIAkJQ0U3
M0UwMjUxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3M0UwMjQxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQ
SS5oICovOyB9OwogCQlFMTU1NTZGNTE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0
aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAg
Ki87IH07CiAJCUUxNTU1NkY2MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU1
NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oICovOyB9Owor
CQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBBRDM3MUE5NjI0NTUwMDUzNkRG
NiAvKiBXb3JrUXVldWUuY3BwICovOyB9OworCQlFNEEwQUQzQTFBOTYyNDU1MDA1MzZERjYgLyog
V29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi87IH07CisJCUU0QTBB
RDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzQzFBOTYyNTNDMDA1MzZERjYg
LyogV29ya1F1ZXVlQ29jb2EuY3BwICovOyB9OwogCQlFQjk1RTFGMDE2MUE3MjQxMDA4OUEyRjUg
LyogQnl0ZU9yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFQjk1RTFFRjE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggKi87IH07CiAJCUZF
REFDRDNEMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAv
KiBTdGFja1N0YXRzLmNwcCAqLzsgfTsKIAkJRkVEQUNEM0UxNjMwRjgzRjAwQzY5NjM0IC8qIFN0
YWNrU3RhdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi87IH07CkBAIC01Nzgs
NiArNTgxLDkgQEAKIAkJQ0U3M0UwMjQxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUENTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTE1NTU2RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGls
aXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvZ3Jh
cGhpY1V0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkY0
MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrUXVldWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYg
LyogV29ya1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtRdWV1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEEwQUQzQzFBOTYyNTNDMDA1MzZE
RjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV29ya1F1ZXVlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Qjk1RTFFRjE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJ5dGVPcmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGFja1N0YXRzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhY2tTdGF0cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNjk4LDYgKzcwNCw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTJDREVEMEYwMTgxMTVDM0YwMDREQkE3MCAvKiBjZiAqLywK
KwkJCQlFNEEwQUQzQjFBOTYyNTE5MDA1MzZERjYgLyogY29jb2EgKi8sCiAJCQkJQThBNDcyODEx
NTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EgKi8sCiAJCQkJMUZBNDdDODcxNTI1MDJEQTAwNTY4RDFC
IC8qIGlvcyAqLywKIAkJCQlBOEE0NzJDNDE1MUE4MjVBMDA0MTIzRkYgLyogbWFjICovLApAQCAt
ODk2LDYgKzkwMyw4IEBACiAJCQkJQThBNDczNzExNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRy
YWl0cy5oICovLAogCQkJCUE4QTQ3MzcyMTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRhZ3MuaCAqLywK
IAkJCQk5NzRDRkM4RDE2QTRGMzI3MDA2RDU0MDQgLyogV2Vha1B0ci5oICovLAorCQkJCUU0QTBB
RDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICovLAorCQkJCUU0QTBBRDM4MUE5
NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCAqLywKIAkJCQlBOEE0NzM3QTE1MUE4MjVCMDA0
MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgKi8sCiAJCQkJQThBNDczN0IxNTFBODI1QjAwNDEy
M0ZGIC8qIFdURlRocmVhZERhdGEuaCAqLywKIAkJCSk7CkBAIC0xMDMxLDYgKzEwNDAsMTQgQEAK
IAkJCXBhdGggPSBzcGk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlFNEEw
QUQzQjFBOTYyNTE5MDA1MzZERjYgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCUU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVl
dWVDb2NvYS5jcHAgKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTEyMjEsNiArMTIzOCw3IEBACiAJ
CQkJQThBNDc0N0YxNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRyYWl0cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDc0ODAxNTFBODI1QjAwNDEyM0ZGIC8qIFZNVGFncy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTc0Q0ZDOEUxNkE0RjMyNzAwNkQ1NDA0IC8qIFdlYWtQdHIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUU0QTBBRDNBMUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFGQTQ3QzhCMTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ0NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5n
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ4NzE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhy
ZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzUwLDYgKzEzNjgsNyBAQAogCQkJCUE4QTQ3
M0IwMTUxQTgyNUIwMDQxMjNGRiAvKiBkb3VibGUtY29udmVyc2lvbi5jYyBpbiBTb3VyY2VzICov
LAogCQkJCUE4QTQ3M0JBMTUxQTgyNUIwMDQxMjNGRiAvKiBkdG9hLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGODg1RTBGMTg0NUFFQTkwMEYxRTNGQSAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2Nv
YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCMzE1MUE4MjVCMDA0MTIzRkYgLyogZmFz
dC1kdG9hLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQzMxNTFBODI1QjAwNDEyM0ZGIC8q
IEZhc3RNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RkExODI0MzVBNjAwQTgy
RTY5IC8qIEF0b21pY1N0cmluZ0NGLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTM3OCw2ICsxMzk3
LDcgQEAKIAkJCQkyQ0RFRDBFRjE4MTE1QzM4MDA0REJBNzAgLyogUnVuTG9vcENGLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0Njk0MTkzMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXJD
Ri5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQyMTE1MUE4MjVCMDA0MTIzRkYgLyogU0hB
MS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZERjYgLyogV29y
a1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0Njk0MTk5MTZFQUIwNDEwMDI0RTE0NiAv
KiBTY2hlZHVsZVBhaXJDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDY5NDE5NzE2RUFBRkY4
MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc0ODc0
NTIxN0EwQkRBRTAwRkEwNENCIC8qIFNpeENoYXJhY3Rlckhhc2guY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsNyBAQCBz
ZXQoV1RGX0hFQURFUlMKICAgICBWZWN0b3IuaAogICAgIFZlY3RvclRyYWl0cy5oCiAgICAgV1RG
VGhyZWFkRGF0YS5oCisgICAgV29ya1F1ZXVlLmgKICAgICBXZWFrUHRyLmgKICAgICBkdG9hLmgK
IApAQCAtMTg0LDYgKzE4NSw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIFN0cmluZ1ByaW50U3Ry
ZWFtLmNwcAogICAgIFRocmVhZGluZy5jcHAKICAgICBXVEZUaHJlYWREYXRhLmNwcAorICAgIFdv
cmtRdWV1ZS5jcHAKICAgICBkdG9hLmNwcAogCiAgICAgZHRvYS9iaWdudW0tZHRvYS5jYwpJbmRl
eDogU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC02LDYgKzYsNyBAQCBs
aXN0KEFQUEVORCBXVEZfU09VUkNFUwogCiAgICAgZ3RrL01haW5UaHJlYWRHdGsuY3BwCiAgICAg
Z3RrL1J1bkxvb3BHdGsuY3BwCisgICAgZ3RrL1dvcmtRdWV1ZUd0ay5jcHAKICkKIAogbGlzdChB
UFBFTkQgV1RGX0xJQlJBUklFUwpJbmRleDogU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuY3BwCShyZXZpc2lvbiAxODAz
NDIpCShmcm9tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5jcHA6MTgwMzQyKQor
KysgU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtR
dWV1ZS5oIgorCitSZWY8V29ya1F1ZXVlPiBXb3JrUXVldWU6OmNyZWF0ZShjb25zdCBjaGFyKiBu
YW1lLCBUeXBlIHR5cGUsIFFPUyBxb3MpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29y
a1F1ZXVlKG5hbWUsIHR5cGUsIHFvcykpOworfQorCitXb3JrUXVldWU6OldvcmtRdWV1ZShjb25z
dCBjaGFyKiBuYW1lLCBUeXBlIHR5cGUsIFFPUyBxb3MpCit7CisgICAgcGxhdGZvcm1Jbml0aWFs
aXplKG5hbWUsIHR5cGUsIHFvcyk7Cit9CisKK1dvcmtRdWV1ZTo6fldvcmtRdWV1ZSgpCit7Cisg
ICAgcGxhdGZvcm1JbnZhbGlkYXRlKCk7Cit9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Xb3JrUXVl
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAJKHdvcmtp
bmcgY29weSkKKysrIFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXb3JrUXVl
dWUuaCIKIAorbmFtZXNwYWNlIFdURiB7CisKIFJlZjxXb3JrUXVldWU+IFdvcmtRdWV1ZTo6Y3Jl
YXRlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXb3JrUXVldWUobmFtZSwgdHlwZSwgcW9zKSk7CkBAIC00MCwzICs0Miw1
IEBAIFdvcmtRdWV1ZTo6fldvcmtRdWV1ZSgpCiB7CiAgICAgcGxhdGZvcm1JbnZhbGlkYXRlKCk7
CiB9CisKK30KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCShyZXZpc2lvbiAxODAzNDIpCShmcm9tIFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oOjE4MDM0MikKKysrIFNvdXJjZS9XVEYvd3Rm
L1dvcmtRdWV1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRp
b25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXb3JrUXVldWVfaAorI2RlZmluZSBXb3Jr
UXVldWVfaAorCisjaWYgT1MoREFSV0lOKQorI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+
CisjZW5kaWYKKworI2luY2x1ZGUgPGNocm9ubz4KKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5o
PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KEVGTCkKKyNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCisjZW5kaWYKKwor
I2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BTb3VyY2Uu
aD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjZWxpZiBQTEFURk9STShFRkwp
CisjaW5jbHVkZSA8RGlzcGF0Y2hRdWV1ZUVmbC5oPgorI2VuZGlmCisKK2NsYXNzIFdvcmtRdWV1
ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgeworcHVibGljOgorICAgIGVudW0g
Y2xhc3MgVHlwZSB7CisgICAgICAgIFNlcmlhbCwKKyAgICAgICAgQ29uY3VycmVudAorICAgIH07
CisgICAgZW51bSBjbGFzcyBRT1MgeworICAgICAgICBVc2VySW50ZXJhY3RpdmUsCisgICAgICAg
IFVzZXJJbml0aWF0ZWQsCisgICAgICAgIERlZmF1bHQsCisgICAgICAgIFV0aWxpdHksCisgICAg
ICAgIEJhY2tncm91bmQKKyAgICB9OworICAgIAorICAgIHN0YXRpYyBSZWY8V29ya1F1ZXVlPiBj
cmVhdGUoY29uc3QgY2hhciogbmFtZSwgVHlwZSA9IFR5cGU6OlNlcmlhbCwgUU9TID0gUU9TOjpE
ZWZhdWx0KTsKKyAgICB2aXJ0dWFsIH5Xb3JrUXVldWUoKTsKKworICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3Bh
dGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
KTsKKworI2lmIE9TKERBUldJTikKKyAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUo
KSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KKyNlbGlmIFBMQVRGT1JNKEdUSykK
KyAgICB2b2lkIHJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCwgc3RkOjpmdW5jdGlvbjx2
b2lkICgpPiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU29j
a2V0RXZlbnRIYW5kbGVyKGludCk7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgdm9pZCByZWdp
c3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOworICAg
IHZvaWQgdW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQpOworI2VuZGlmCisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgV29ya1F1ZXVlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUyk7
CisKKyAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBR
T1MpOworICAgIHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7CisKKyNpZiBPUyhEQVJXSU4pCisg
ICAgc3RhdGljIHZvaWQgZXhlY3V0ZUZ1bmN0aW9uKHZvaWQqKTsKKyAgICBkaXNwYXRjaF9xdWV1
ZV90IG1fZGlzcGF0Y2hRdWV1ZTsKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICBUaHJlYWRJZGVu
dGlmaWVyIG1fd29ya1F1ZXVlVGhyZWFkOworICAgIEdSZWZQdHI8R01haW5Db250ZXh0PiBtX2V2
ZW50Q29udGV4dDsKKyAgICBNdXRleCBtX2V2ZW50TG9vcExvY2s7CisgICAgR1JlZlB0cjxHTWFp
bkxvb3A+IG1fZXZlbnRMb29wOworICAgIEdNYWluTG9vcFNvdXJjZSBtX3NvY2tldEV2ZW50U291
cmNlOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIFJlZlB0cjxEaXNwYXRjaFF1ZXVlPiBtX2Rp
c3BhdGNoUXVldWU7CisjZW5kaWYKK307CisKKyNlbmRpZiAvLyBXb3JrUXVldWVfaApJbmRleDog
U291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
V29ya1F1ZXVlLmgJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMiArMjcsMTYgQEAKICNpZm5kZWYgV29ya1F1ZXVlX2gK
ICNkZWZpbmUgV29ya1F1ZXVlX2gKIAotI2lmIE9TKERBUldJTikKLSNpbmNsdWRlIDxkaXNwYXRj
aC9kaXNwYXRjaC5oPgotI2VuZGlmCi0KICNpbmNsdWRlIDxjaHJvbm8+CiAjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bkRpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgotI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0jaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShFRkwpCi0jaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5o
IgorI2lmIE9TKERBUldJTikKKyNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2VuZGlm
CiAKICNpZiBQTEFURk9STShHVEspCkBAIC01Miw2ICs0Niw4IEBACiAjaW5jbHVkZSA8RGlzcGF0
Y2hRdWV1ZUVmbC5oPgogI2VuZGlmCiAKK25hbWVzcGFjZSBXVEYgeworCiBjbGFzcyBXb3JrUXVl
dWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKIHB1YmxpYzoKICAgICBlbnVt
IGNsYXNzIFR5cGUgewpAQCAtNjYsMTEgKzYyLDExIEBAIHB1YmxpYzoKICAgICAgICAgQmFja2dy
b3VuZAogICAgIH07CiAgICAgCi0gICAgc3RhdGljIFJlZjxXb3JrUXVldWU+IGNyZWF0ZShjb25z
dCBjaGFyKiBuYW1lLCBUeXBlID0gVHlwZTo6U2VyaWFsLCBRT1MgPSBRT1M6OkRlZmF1bHQpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFdvcmtRdWV1ZT4gY3JlYXRlKGNvbnN0
IGNoYXIqIG5hbWUsIFR5cGUgPSBUeXBlOjpTZXJpYWwsIFFPUyA9IFFPUzo6RGVmYXVsdCk7CiAg
ICAgdmlydHVhbCB+V29ya1F1ZXVlKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaEFmdGVyKHN0
ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+KSBvdmVycmlkZTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVy
KHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CiAKICNp
ZiBPUyhEQVJXSU4pCiAgICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNwYXRjaFF1ZXVlOyB9CkBAIC0xMDIsNCArOTgsOCBAQCBwcml2YXRlOgog
I2VuZGlmCiB9OwogCi0jZW5kaWYgLy8gV29ya1F1ZXVlX2gKK30KKwordXNpbmcgV1RGOjpXb3Jr
UXVldWU7CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29j
b2EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29h
LmNwcAkocmV2aXNpb24gMTgwMzQyKQkoZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMv
V29ya1F1ZXVlTWFjLmNwcDoxODAzNDIpCisrKyBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVl
dWVDb2NvYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrUXVldWUuaCIKKwordm9pZCBXb3Jr
UXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAg
cmVmKCk7CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBm
dW5jdGlvbigpOworICAgICAgICBkZXJlZigpOworICAgIH0pOworfQorCit2b2lkIFdvcmtRdWV1
ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAgcmVmKCk7CisgICAgZGlzcGF0Y2hf
YWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgZHVyYXRpb24uY291bnQoKSks
IG1fZGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgZnVuY3Rpb24oKTsKKyAgICAgICAgZGVyZWYo
KTsKKyAgICB9KTsKK30KKworI2lmIEhBVkUoUU9TX0NMQVNTRVMpCitzdGF0aWMgZGlzcGF0Y2hf
cW9zX2NsYXNzX3QgZGlzcGF0Y2hRT1NDbGFzcyhXb3JrUXVldWU6OlFPUyBxb3MpCit7CisgICAg
c3dpdGNoIChxb3MpIHsKKyAgICBjYXNlIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmU6
CisgICAgICAgIHJldHVybiBRT1NfQ0xBU1NfVVNFUl9JTlRFUkFDVElWRTsKKyAgICBjYXNlIFdv
cmtRdWV1ZTo6UU9TOjpVc2VySW5pdGlhdGVkOgorICAgICAgICByZXR1cm4gUU9TX0NMQVNTX1VT
RVJfSU5JVElBVEVEOworICAgIGNhc2UgV29ya1F1ZXVlOjpRT1M6OkRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBRT1NfQ0xBU1NfREVGQVVMVDsKKyAgICBjYXNlIFdvcmtRdWV1ZTo6UU9TOjpVdGls
aXR5OgorICAgICAgICByZXR1cm4gUU9TX0NMQVNTX1VUSUxJVFk7CisgICAgY2FzZSBXb3JrUXVl
dWU6OlFPUzo6QmFja2dyb3VuZDoKKyAgICAgICAgcmV0dXJuIFFPU19DTEFTU19CQUNLR1JPVU5E
OworICAgIH0KK30KKyNlbmRpZgorCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXpl
KGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykKK3sKKyAgICBkaXNwYXRjaF9x
dWV1ZV9hdHRyX3QgYXR0ciA9IHR5cGUgPT0gVHlwZTo6Q29uY3VycmVudCA/IERJU1BBVENIX1FV
RVVFX0NPTkNVUlJFTlQgOiBESVNQQVRDSF9RVUVVRV9TRVJJQUw7CisjaWYgSEFWRShRT1NfQ0xB
U1NFUykKKyAgICBhdHRyID0gZGlzcGF0Y2hfcXVldWVfYXR0cl9tYWtlX3dpdGhfcW9zX2NsYXNz
KGF0dHIsIGRpc3BhdGNoUU9TQ2xhc3MocW9zKSwgMCk7CisjZW5kaWYKKyAgICBtX2Rpc3BhdGNo
UXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUobmFtZSwgYXR0cik7CisgICAgZGlzcGF0Y2hf
c2V0X2NvbnRleHQobV9kaXNwYXRjaFF1ZXVlLCB0aGlzKTsKK30KKwordm9pZCBXb3JrUXVldWU6
OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAgZGlzcGF0Y2hfcmVsZWFzZShtX2Rpc3BhdGNo
UXVldWUpOworfQpJbmRleDogU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAko
d29ya2luZyBjb3B5KQorKysgU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiV29ya1F1ZXVlLmgiCiAKK25hbWVzcGFjZSBXVEYgeworCiB2b2lkIFdvcmtRdWV1
ZTo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKIHsKICAgICByZWYo
KTsKQEAgLTY3LDYgKzY5LDggQEAgdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShj
b25zdAogICAgIGRpc3BhdGNoX3F1ZXVlX2F0dHJfdCBhdHRyID0gdHlwZSA9PSBUeXBlOjpDb25j
dXJyZW50ID8gRElTUEFUQ0hfUVVFVUVfQ09OQ1VSUkVOVCA6IERJU1BBVENIX1FVRVVFX1NFUklB
TDsKICNpZiBIQVZFKFFPU19DTEFTU0VTKQogICAgIGF0dHIgPSBkaXNwYXRjaF9xdWV1ZV9hdHRy
X21ha2Vfd2l0aF9xb3NfY2xhc3MoYXR0ciwgZGlzcGF0Y2hRT1NDbGFzcyhxb3MpLCAwKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHFvcyk7CiAjZW5kaWYKICAgICBtX2Rpc3BhdGNoUXVldWUg
PSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUobmFtZSwgYXR0cik7CiAgICAgZGlzcGF0Y2hfc2V0X2Nv
bnRleHQobV9kaXNwYXRjaFF1ZXVlLCB0aGlzKTsKQEAgLTc2LDMgKzgwLDUgQEAgdm9pZCBXb3Jr
UXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiB7CiAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX2Rp
c3BhdGNoUXVldWUpOwogfQorCit9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9lZmwvV29ya1F1ZXVl
RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9lZmwvV29ya1F1ZXVlRWZsLmNw
cAkocmV2aXNpb24gMTgwMzQyKQkoZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29y
a1F1ZXVlRWZsLmNwcDoxODAzNDIpCisrKyBTb3VyY2UvV1RGL3d0Zi9lZmwvV29ya1F1ZXVlRWZs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICAgIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXb3JrUXVldWUuaCIKKworI2luY2x1ZGUgPERpc3BhdGNoUXVldWVFZmwuaD4KKyNp
bmNsdWRlIDxEaXNwYXRjaFF1ZXVlV29ya0l0ZW1FZmwuaD4KKwordm9pZCBXb3JrUXVldWU6OnBs
YXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpCit7CisgICAgbV9k
aXNwYXRjaFF1ZXVlID0gRGlzcGF0Y2hRdWV1ZTo6Y3JlYXRlKG5hbWUpOworfQorCit2b2lkIFdv
cmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKK3sKKyAgICBSZWZQdHI8RGlzcGF0Y2hRdWV1
ZT4gZGlzcGF0Y2hRdWV1ZSA9IG1fZGlzcGF0Y2hRdWV1ZS5yZWxlYXNlKCk7CisgICAgZGlzcGF0
Y2hRdWV1ZS0+c3RvcFRocmVhZCgpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cmVnaXN0ZXJTb2Nr
ZXRFdmVudEhhbmRsZXIoaW50IGZpbGVEZXNjcmlwdG9yLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
IGZ1bmN0aW9uKQoreworICAgIGlmICghbV9kaXNwYXRjaFF1ZXVlKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2Rpc3BhdGNoUXVldWUtPnNldFNvY2tldEV2ZW50SGFuZGxlcihmaWxlRGVzY3Jp
cHRvciwgV1RGOjptb3ZlKGZ1bmN0aW9uKSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lz
dGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCBmaWxlRGVzY3JpcHRvcikKK3sKKyAgICBVTlVTRURf
UEFSQU0oZmlsZURlc2NyaXB0b3IpOworCisgICAgaWYgKCFtX2Rpc3BhdGNoUXVldWUpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fZGlzcGF0Y2hRdWV1ZS0+Y2xlYXJTb2NrZXRFdmVudEhhbmRs
ZXIoKTsKK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4gZnVuY3Rpb24pCit7CisgICAgaWYgKCFtX2Rpc3BhdGNoUXVldWUpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fZGlzcGF0Y2hRdWV1ZS0+ZGlzcGF0Y2goV29ya0l0ZW06OmNyZWF0ZSh0aGlz
LCBXVEY6Om1vdmUoZnVuY3Rpb24pKSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFm
dGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPiBmdW5jdGlvbikKK3sKKyAgICBpZiAoIW1fZGlzcGF0Y2hRdWV1ZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9kaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaChUaW1lcldvcmtJdGVtOjpjcmVh
dGUodGhpcywgV1RGOjptb3ZlKGZ1bmN0aW9uKSwgZHVyYXRpb24pKTsKK30KSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL2d0ay9Xb3JrUXVldWVHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL2d0ay9Xb3JrUXVldWVHdGsuY3BwCShyZXZpc2lvbiAxODAzNDIpCShmcm9tIFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwOjE4MDM0MikKKysrIFNvdXJjZS9X
VEYvd3RmL2d0ay9Xb3JrUXVldWVHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29w
eXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVl
LmgiCisKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisKK3N0YXRpYyBjb25zdCBzaXplX3Qga1Zpc3Vh
bFN0dWRpb1RocmVhZE5hbWVMaW1pdCA9IDMxOworCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1J
bml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUykKK3sKKyAgICBtX2V2ZW50Q29u
dGV4dCA9IGFkb3B0R1JlZihnX21haW5fY29udGV4dF9uZXcoKSk7CisgICAgQVNTRVJUKG1fZXZl
bnRDb250ZXh0KTsKKyAgICBtX2V2ZW50TG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9uZXco
bV9ldmVudENvbnRleHQuZ2V0KCksIEZBTFNFKSk7CisgICAgQVNTRVJUKG1fZXZlbnRMb29wKTsK
KworICAgIC8vIFRoaXMgbmFtZSBjYW4gYmUgY29tLmFwcGxlLldlYktpdC5Qcm9jZXNzTGF1bmNo
ZXIgb3IgY29tLmFwcGxlLkNvcmVJUEMuUmVjZWl2ZVF1ZXVlLgorICAgIC8vIFdlIGFyZSB1c2lu
ZyB0aG9zZSBuYW1lcyBmb3IgdGhlIHRocmVhZCBuYW1lLCBidXQgYm90aCBhcmUgbG9uZ2VyIHRo
YW4gMzEgY2hhcmFjdGVycywKKyAgICAvLyB3aGljaCBpcyB0aGUgbGltaXQgb2YgVmlzdWFsIFN0
dWRpbyBmb3IgdGhyZWFkIG5hbWVzLgorICAgIC8vIFdoZW4gbG9nIGlzIGVuYWJsZWQgY3JlYXRl
VGhyZWFkKCkgd2lsbCBhc3NlcnQgaW5zdGVhZCBvZiB0cnVuY2F0ZSB0aGUgbmFtZSwgc28gd2Ug
bmVlZAorICAgIC8vIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCB1c2UgYSBuYW1lIGxvbmdlciB0aGFu
IDMxIGNoYXJhY3RlcnMuCisgICAgY29uc3QgY2hhciogdGhyZWFkTmFtZSA9IGdfc3RycnN0cihu
YW1lLCAiLiIpOworICAgIGlmICh0aHJlYWROYW1lKQorICAgICAgICB0aHJlYWROYW1lKys7Cisg
ICAgZWxzZQorICAgICAgICB0aHJlYWROYW1lID0gbmFtZTsKKyAgICBpZiAoc3RybGVuKHRocmVh
ZE5hbWUpID4ga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCkKKyAgICAgICAgdGhyZWFkTmFt
ZSArPSBzdHJsZW4odGhyZWFkTmFtZSkgLSBrVmlzdWFsU3R1ZGlvVGhyZWFkTmFtZUxpbWl0Owor
CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIG1fd29ya1F1ZXVl
VGhyZWFkID0gY3JlYXRlVGhyZWFkKHRocmVhZE5hbWUsIFtwcm90ZWN0b3JdIHsgZ19tYWluX2xv
b3BfcnVuKHByb3RlY3Rvci0+bV9ldmVudExvb3AuZ2V0KCkpOyB9KTsKK30KKwordm9pZCBXb3Jr
UXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAgaWYgKG1fd29ya1F1ZXVlVGhyZWFk
KSB7CisgICAgICAgIGRldGFjaFRocmVhZChtX3dvcmtRdWV1ZVRocmVhZCk7CisgICAgICAgIG1f
d29ya1F1ZXVlVGhyZWFkID0gMDsKKyAgICB9CisKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9l
dmVudExvb3BMb2NrKTsKKyAgICBpZiAobV9ldmVudExvb3ApIHsKKyAgICAgICAgaWYgKGdfbWFp
bl9sb29wX2lzX3J1bm5pbmcobV9ldmVudExvb3AuZ2V0KCkpKQorICAgICAgICAgICAgZ19tYWlu
X2xvb3BfcXVpdChtX2V2ZW50TG9vcC5nZXQoKSk7CisgICAgICAgIG1fZXZlbnRMb29wLmNsZWFy
KCk7CisgICAgfQorCisgICAgbV9ldmVudENvbnRleHQuY2xlYXIoKTsKK30KKwordm9pZCBXb3Jr
UXVldWU6OnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCBmaWxlRGVzY3JpcHRvciwgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjbG9z
ZUZ1bmN0aW9uKQoreworICAgIEdSZWZQdHI8R1NvY2tldD4gc29ja2V0ID0gYWRvcHRHUmVmKGdf
c29ja2V0X25ld19mcm9tX2ZkKGZpbGVEZXNjcmlwdG9yLCAwKSk7CisgICAgcmVmKCk7CisgICAg
bV9zb2NrZXRFdmVudFNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF0gV29ya1F1ZXVlOjpTb2NrZXRF
dmVudEhhbmRsZXIiLCBbZnVuY3Rpb24sIGNsb3NlRnVuY3Rpb25dKEdJT0NvbmRpdGlvbiBjb25k
aXRpb24pIHsKKyAgICAgICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lPX0hVUCB8fCBjb25kaXRp
b24gJiBHX0lPX0VSUiB8fCBjb25kaXRpb24gJiBHX0lPX05WQUwpIHsKKyAgICAgICAgICAgICAg
ICBjbG9zZUZ1bmN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEdNYWluTG9vcFNvdXJj
ZTo6U3RvcDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNvbmRpdGlvbiAmIEdf
SU9fSU4pIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbigpOworICAgICAgICAgICAgICAgIHJl
dHVybiBHTWFpbkxvb3BTb3VyY2U6OkNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBHTWFpbkxvb3BT
b3VyY2U6OlN0b3A7CisgICAgICAgIH0sIHNvY2tldC5nZXQoKSwgR19JT19JTiwKKyAgICAgICAg
W3RoaXNdIHsgZGVyZWYoKTsgfSwKKyAgICAgICAgbV9ldmVudENvbnRleHQuZ2V0KCkpOworfQor
Cit2b2lkIFdvcmtRdWV1ZTo6dW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQpCit7Cisg
ICAgbV9zb2NrZXRFdmVudFNvdXJjZS5jYW5jZWwoKTsKK30KKwordm9pZCBXb3JrUXVldWU6OmRp
c3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAgcmVmKCk7Cisg
ICAgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFuZERlbGV0ZU9uRGVzdHJveSgiW1dlYktpdF0g
V29ya1F1ZXVlOjpkaXNwYXRjaCIsIFdURjo6bW92ZShmdW5jdGlvbiksIEdfUFJJT1JJVFlfREVG
QVVMVCwKKyAgICAgICAgW3RoaXNdIHsgZGVyZWYoKTsgfSwgbV9ldmVudENvbnRleHQuZ2V0KCkp
OworfQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3Nl
Y29uZHMgZHVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAg
cmVmKCk7CisgICAgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFmdGVyRGVsYXlBbmREZWxldGVP
bkRlc3Ryb3koIltXZWJLaXRdIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlciIsIFdURjo6bW92ZShm
dW5jdGlvbiksCisgICAgICAgIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25v
OjptaWxsaXNlY29uZHM+KGR1cmF0aW9uKSwgR19QUklPUklUWV9ERUZBVUxULCBbdGhpc10geyBk
ZXJlZigpOyB9LCBtX2V2ZW50Q29udGV4dC5nZXQoKSk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwzMCBAQAorMjAxNS0wMi0xOSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CisKKyAgICAgICAgTW92ZSBXb3JrUXVldWUgZnJvbSBXSzIgdG8gV1RGCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE3OTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVl
dWUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFBsYXRmb3JtL1dvcmtRdWV1ZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIFBsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIFBsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFBsYXRmb3JtL21hYy9Xb3JrUXVldWVNYWMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFBsYXRm
b3JtRWZsLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFNo
YXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHA6CisgICAgICAgICog
VUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFdlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNS0wMi0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdW2lPU10gRml4IE5ldHdvcmtDYWNoZSBidWlsZApJ
bmRleDogU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9XZWJL
aXQyL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNyArMTgxLDYgQEAgc2V0
KFdlYktpdDJfU09VUkNFUwogCiAgICAgUGxhdGZvcm0vTG9nZ2luZy5jcHAKICAgICBQbGF0Zm9y
bS9Nb2R1bGUuY3BwCi0gICAgUGxhdGZvcm0vV29ya1F1ZXVlLmNwcAogCiAgICAgUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmNwcAogICAgIFBsYXRmb3JtL0lQQy9Bcmd1bWVudERlY29kZXIu
Y3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQkocmV2aXNpb24gMTgwMzQyKQorKysg
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExLDcg
KzExLDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgUGxhdGZvcm0vZWZsL0Rp
c3BhdGNoUXVldWVFZmwuY3BwCiAgICAgUGxhdGZvcm0vZWZsL0xvZ2dpbmdFZmwuY3BwCiAgICAg
UGxhdGZvcm0vZWZsL01vZHVsZUVmbC5jcHAKLSAgICBQbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZs
LmNwcAogCiAgICAgUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcAogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktp
dDIvUGxhdGZvcm1HVEsuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAgbGlz
dChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBQbGF0Zm9ybS9ndGsvTG9nZ2luZ0d0ay5j
cHAKICAgICBQbGF0Zm9ybS9ndGsvTW9kdWxlR3RrLmNwcAotICAgIFBsYXRmb3JtL2d0ay9Xb3Jr
UXVldWVHdGsuY3BwCiAKICAgICBQbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCiAK
QEAgLTYyNCw3ICs2MjMsNiBAQCBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzIpCiAgICAg
bGlzdChBUFBFTkQgUGx1Z2luUHJvY2Vzc0dUSzJfU09VUkNFUwogICAgICAgICBQbGF0Zm9ybS9M
b2dnaW5nLmNwcAogICAgICAgICBQbGF0Zm9ybS9Nb2R1bGUuY3BwCi0gICAgICAgIFBsYXRmb3Jt
L1dvcmtRdWV1ZS5jcHAKIAogICAgICAgICBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3Bw
CiAgICAgICAgIFBsYXRmb3JtL0lQQy9Bcmd1bWVudERlY29kZXIuY3BwCkBAIC02NDMsNyArNjQx
LDYgQEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyKQogCiAgICAgICAgIFBsYXRmb3Jt
L2d0ay9Mb2dnaW5nR3RrLmNwcAogICAgICAgICBQbGF0Zm9ybS9ndGsvTW9kdWxlR3RrLmNwcAot
ICAgICAgICBQbGF0Zm9ybS9ndGsvV29ya1F1ZXVlR3RrLmNwcAogCiAgICAgICAgIFBsYXRmb3Jt
L3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKIApJbmRleDogU291cmNlL1dlYktpdDIvRGF0YWJh
c2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaAkocmV2aXNpb24gMTgwMzQyKQorKysg
U291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSAiV2ViT3JpZ2luRGF0YU1hbmFnZXJT
dXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKLWNsYXNzIFdv
cmtRdWV1ZTsKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEFzeW5jVGFzazsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmNwcAkocmV2aXNpb24gMTgwMzQyKQorKysg
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldvcmtRdWV1ZS5oIgotCi1SZWY8V29ya1F1ZXVlPiBXb3JrUXVldWU6OmNyZWF0ZShjb25zdCBj
aGFyKiBuYW1lLCBUeXBlIHR5cGUsIFFPUyBxb3MpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV29ya1F1ZXVlKG5hbWUsIHR5cGUsIHFvcykpOwotfQotCi1Xb3JrUXVldWU6OldvcmtRdWV1
ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlIHR5cGUsIFFPUyBxb3MpCi17Ci0gICAgcGxhdGZvcm1J
bml0aWFsaXplKG5hbWUsIHR5cGUsIHFvcyk7Ci19Ci0KLVdvcmtRdWV1ZTo6fldvcmtRdWV1ZSgp
Ci17Ci0gICAgcGxhdGZvcm1JbnZhbGlkYXRlKCk7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Xb3JrUXVldWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Xb3JrUXVldWUuaAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vV29ya1F1ZXVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogUG9y
dGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdvcmtRdWV1ZV9oCi0jZGVmaW5lIFdv
cmtRdWV1ZV9oCi0KLSNpZiBPUyhEQVJXSU4pCi0jaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2gu
aD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8Y2hyb25vPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0j
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb25EaXNwYXRjaGVy
Lmg+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5o
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oRUZMKQotI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCIKLSNlbmRpZgot
Ci0jaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dNYWluTG9vcFNvdXJj
ZS5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KLSNlbGlmIFBMQVRGT1JNKEVG
TCkKLSNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVlRWZsLmg+Ci0jZW5kaWYKLQotY2xhc3MgV29ya1F1
ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7Ci1wdWJsaWM6Ci0gICAgZW51
bSBjbGFzcyBUeXBlIHsKLSAgICAgICAgU2VyaWFsLAotICAgICAgICBDb25jdXJyZW50Ci0gICAg
fTsKLSAgICBlbnVtIGNsYXNzIFFPUyB7Ci0gICAgICAgIFVzZXJJbnRlcmFjdGl2ZSwKLSAgICAg
ICAgVXNlckluaXRpYXRlZCwKLSAgICAgICAgRGVmYXVsdCwKLSAgICAgICAgVXRpbGl0eSwKLSAg
ICAgICAgQmFja2dyb3VuZAotICAgIH07Ci0gICAgCi0gICAgc3RhdGljIFJlZjxXb3JrUXVldWU+
IGNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlID0gVHlwZTo6U2VyaWFsLCBRT1MgPSBRT1M6
OkRlZmF1bHQpOwotICAgIHZpcnR1YWwgfldvcmtRdWV1ZSgpOwotCi0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pIG92ZXJyaWRlOwotICAgIHZvaWQgZGlz
cGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4pOwotCi0jaWYgT1MoREFSV0lOKQotICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZTsgfQotI2VsaWYgUExBVEZPUk0oR1RL
KQotICAgIHZvaWQgcmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50LCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKLSAgICB2b2lkIHVucmVnaXN0ZXJT
b2NrZXRFdmVudEhhbmRsZXIoaW50KTsKLSNlbGlmIFBMQVRGT1JNKEVGTCkKLSAgICB2b2lkIHJl
Z2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7Ci0g
ICAgdm9pZCB1bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCk7Ci0jZW5kaWYKLQotcHJp
dmF0ZToKLSAgICBleHBsaWNpdCBXb3JrUXVldWUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9T
KTsKLQotICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUs
IFFPUyk7Ci0gICAgdm9pZCBwbGF0Zm9ybUludmFsaWRhdGUoKTsKLQotI2lmIE9TKERBUldJTikK
LSAgICBzdGF0aWMgdm9pZCBleGVjdXRlRnVuY3Rpb24odm9pZCopOwotICAgIGRpc3BhdGNoX3F1
ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlOwotI2VsaWYgUExBVEZPUk0oR1RLKQotICAgIFRocmVhZElk
ZW50aWZpZXIgbV93b3JrUXVldWVUaHJlYWQ7Ci0gICAgR1JlZlB0cjxHTWFpbkNvbnRleHQ+IG1f
ZXZlbnRDb250ZXh0OwotICAgIE11dGV4IG1fZXZlbnRMb29wTG9jazsKLSAgICBHUmVmUHRyPEdN
YWluTG9vcD4gbV9ldmVudExvb3A7Ci0gICAgR01haW5Mb29wU291cmNlIG1fc29ja2V0RXZlbnRT
b3VyY2U7Ci0jZWxpZiBQTEFURk9STShFRkwpCi0gICAgUmVmUHRyPERpc3BhdGNoUXVldWU+IG1f
ZGlzcGF0Y2hRdWV1ZTsKLSNlbmRpZgotfTsKLQotI2VuZGlmIC8vIFdvcmtRdWV1ZV9oCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgJKHJldmlzaW9uIDE4MDM0
MikKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDExICszMywxMiBAQAogI2luY2x1ZGUgIk1lc3NhZ2VFbmNvZGVyLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1R5cGUuaCIKLSNp
bmNsdWRlICJXb3JrUXVldWUuaCIKICNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8Y29uZGl0
aW9uX3ZhcmlhYmxlPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVl
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgT1MoREFSV0lOKQpJbmRl
eDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAJKHJldmlz
aW9uIDE4MDM0MikKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChD
KSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIldvcmtRdWV1ZS5oIgotCi0jaW5jbHVkZSA8RGlzcGF0Y2hRdWV1ZUVmbC5oPgotI2lu
Y2x1ZGUgPERpc3BhdGNoUXVldWVXb3JrSXRlbUVmbC5oPgotCi12b2lkIFdvcmtRdWV1ZTo6cGxh
dGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUykKLXsKLSAgICBtX2Rp
c3BhdGNoUXVldWUgPSBEaXNwYXRjaFF1ZXVlOjpjcmVhdGUobmFtZSk7Ci19Ci0KLXZvaWQgV29y
a1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQotewotICAgIFJlZlB0cjxEaXNwYXRjaFF1ZXVl
PiBkaXNwYXRjaFF1ZXVlID0gbV9kaXNwYXRjaFF1ZXVlLnJlbGVhc2UoKTsKLSAgICBkaXNwYXRj
aFF1ZXVlLT5zdG9wVGhyZWFkKCk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpyZWdpc3RlclNvY2tl
dEV2ZW50SGFuZGxlcihpbnQgZmlsZURlc2NyaXB0b3IsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4g
ZnVuY3Rpb24pCi17Ci0gICAgaWYgKCFtX2Rpc3BhdGNoUXVldWUpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fZGlzcGF0Y2hRdWV1ZS0+c2V0U29ja2V0RXZlbnRIYW5kbGVyKGZpbGVEZXNjcmlw
dG9yLCBXVEY6Om1vdmUoZnVuY3Rpb24pKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OnVucmVnaXN0
ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50IGZpbGVEZXNjcmlwdG9yKQotewotICAgIFVOVVNFRF9Q
QVJBTShmaWxlRGVzY3JpcHRvcik7Ci0KLSAgICBpZiAoIW1fZGlzcGF0Y2hRdWV1ZSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9kaXNwYXRjaFF1ZXVlLT5jbGVhclNvY2tldEV2ZW50SGFuZGxl
cigpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgp
PiBmdW5jdGlvbikKLXsKLSAgICBpZiAoIW1fZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9kaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaChXb3JrSXRlbTo6Y3JlYXRlKHRoaXMs
IFdURjo6bW92ZShmdW5jdGlvbikpKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0
ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzIGR1cmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+IGZ1bmN0aW9uKQotewotICAgIGlmICghbV9kaXNwYXRjaFF1ZXVlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX2Rpc3BhdGNoUXVldWUtPmRpc3BhdGNoKFRpbWVyV29ya0l0ZW06OmNyZWF0
ZSh0aGlzLCBXVEY6Om1vdmUoZnVuY3Rpb24pLCBkdXJhdGlvbikpOwotfQpJbmRleDogU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHAJKHJldmlzaW9uIDE4MDM0
MikKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDExNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEln
YWxpYSBTLkwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV29ya1F1ZXVlLmgiCi0KLSNpbmNsdWRlIDxnaW8vZ2lvLmg+Ci0KLXN0
YXRpYyBjb25zdCBzaXplX3Qga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCA9IDMxOwotCi12
b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUs
IFFPUykKLXsKLSAgICBtX2V2ZW50Q29udGV4dCA9IGFkb3B0R1JlZihnX21haW5fY29udGV4dF9u
ZXcoKSk7Ci0gICAgQVNTRVJUKG1fZXZlbnRDb250ZXh0KTsKLSAgICBtX2V2ZW50TG9vcCA9IGFk
b3B0R1JlZihnX21haW5fbG9vcF9uZXcobV9ldmVudENvbnRleHQuZ2V0KCksIEZBTFNFKSk7Ci0g
ICAgQVNTRVJUKG1fZXZlbnRMb29wKTsKLQotICAgIC8vIFRoaXMgbmFtZSBjYW4gYmUgY29tLmFw
cGxlLldlYktpdC5Qcm9jZXNzTGF1bmNoZXIgb3IgY29tLmFwcGxlLkNvcmVJUEMuUmVjZWl2ZVF1
ZXVlLgotICAgIC8vIFdlIGFyZSB1c2luZyB0aG9zZSBuYW1lcyBmb3IgdGhlIHRocmVhZCBuYW1l
LCBidXQgYm90aCBhcmUgbG9uZ2VyIHRoYW4gMzEgY2hhcmFjdGVycywKLSAgICAvLyB3aGljaCBp
cyB0aGUgbGltaXQgb2YgVmlzdWFsIFN0dWRpbyBmb3IgdGhyZWFkIG5hbWVzLgotICAgIC8vIFdo
ZW4gbG9nIGlzIGVuYWJsZWQgY3JlYXRlVGhyZWFkKCkgd2lsbCBhc3NlcnQgaW5zdGVhZCBvZiB0
cnVuY2F0ZSB0aGUgbmFtZSwgc28gd2UgbmVlZAotICAgIC8vIHRvIG1ha2Ugc3VyZSB3ZSBkb24n
dCB1c2UgYSBuYW1lIGxvbmdlciB0aGFuIDMxIGNoYXJhY3RlcnMuCi0gICAgY29uc3QgY2hhciog
dGhyZWFkTmFtZSA9IGdfc3RycnN0cihuYW1lLCAiLiIpOwotICAgIGlmICh0aHJlYWROYW1lKQot
ICAgICAgICB0aHJlYWROYW1lKys7Ci0gICAgZWxzZQotICAgICAgICB0aHJlYWROYW1lID0gbmFt
ZTsKLSAgICBpZiAoc3RybGVuKHRocmVhZE5hbWUpID4ga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVM
aW1pdCkKLSAgICAgICAgdGhyZWFkTmFtZSArPSBzdHJsZW4odGhyZWFkTmFtZSkgLSBrVmlzdWFs
U3R1ZGlvVGhyZWFkTmFtZUxpbWl0OwotCi0gICAgUmVmUHRyPFdvcmtRdWV1ZT4gcHJvdGVjdG9y
KHRoaXMpOwotICAgIG1fd29ya1F1ZXVlVGhyZWFkID0gY3JlYXRlVGhyZWFkKHRocmVhZE5hbWUs
IFtwcm90ZWN0b3JdIHsgZ19tYWluX2xvb3BfcnVuKHByb3RlY3Rvci0+bV9ldmVudExvb3AuZ2V0
KCkpOyB9KTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCi17Ci0g
ICAgaWYgKG1fd29ya1F1ZXVlVGhyZWFkKSB7Ci0gICAgICAgIGRldGFjaFRocmVhZChtX3dvcmtR
dWV1ZVRocmVhZCk7Ci0gICAgICAgIG1fd29ya1F1ZXVlVGhyZWFkID0gMDsKLSAgICB9Ci0KLSAg
ICBNdXRleExvY2tlciBsb2NrZXIobV9ldmVudExvb3BMb2NrKTsKLSAgICBpZiAobV9ldmVudExv
b3ApIHsKLSAgICAgICAgaWYgKGdfbWFpbl9sb29wX2lzX3J1bm5pbmcobV9ldmVudExvb3AuZ2V0
KCkpKQotICAgICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX2V2ZW50TG9vcC5nZXQoKSk7Ci0g
ICAgICAgIG1fZXZlbnRMb29wLmNsZWFyKCk7Ci0gICAgfQotCi0gICAgbV9ldmVudENvbnRleHQu
Y2xlYXIoKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVy
KGludCBmaWxlRGVzY3JpcHRvciwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbiwgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPiBjbG9zZUZ1bmN0aW9uKQotewotICAgIEdSZWZQdHI8R1NvY2tl
dD4gc29ja2V0ID0gYWRvcHRHUmVmKGdfc29ja2V0X25ld19mcm9tX2ZkKGZpbGVEZXNjcmlwdG9y
LCAwKSk7Ci0gICAgcmVmKCk7Ci0gICAgbV9zb2NrZXRFdmVudFNvdXJjZS5zY2hlZHVsZSgiW1dl
YktpdF0gV29ya1F1ZXVlOjpTb2NrZXRFdmVudEhhbmRsZXIiLCBbZnVuY3Rpb24sIGNsb3NlRnVu
Y3Rpb25dKEdJT0NvbmRpdGlvbiBjb25kaXRpb24pIHsKLSAgICAgICAgICAgIGlmIChjb25kaXRp
b24gJiBHX0lPX0hVUCB8fCBjb25kaXRpb24gJiBHX0lPX0VSUiB8fCBjb25kaXRpb24gJiBHX0lP
X05WQUwpIHsKLSAgICAgICAgICAgICAgICBjbG9zZUZ1bmN0aW9uKCk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIEdNYWluTG9vcFNvdXJjZTo6U3RvcDsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgaWYgKGNvbmRpdGlvbiAmIEdfSU9fSU4pIHsKLSAgICAgICAgICAgICAgICBmdW5jdGlv
bigpOwotICAgICAgICAgICAgICAgIHJldHVybiBHTWFpbkxvb3BTb3VyY2U6OkNvbnRpbnVlOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIHJldHVybiBHTWFpbkxvb3BTb3VyY2U6OlN0b3A7Ci0gICAgICAgIH0sIHNvY2tldC5n
ZXQoKSwgR19JT19JTiwKLSAgICAgICAgW3RoaXNdIHsgZGVyZWYoKTsgfSwKLSAgICAgICAgbV9l
dmVudENvbnRleHQuZ2V0KCkpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6dW5yZWdpc3RlclNvY2tl
dEV2ZW50SGFuZGxlcihpbnQpCi17Ci0gICAgbV9zb2NrZXRFdmVudFNvdXJjZS5jYW5jZWwoKTsK
LX0KLQotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVu
Y3Rpb24pCi17Ci0gICAgcmVmKCk7Ci0gICAgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFuZERl
bGV0ZU9uRGVzdHJveSgiW1dlYktpdF0gV29ya1F1ZXVlOjpkaXNwYXRjaCIsIFdURjo6bW92ZShm
dW5jdGlvbiksIEdfUFJJT1JJVFlfREVGQVVMVCwKLSAgICAgICAgW3RoaXNdIHsgZGVyZWYoKTsg
fSwgbV9ldmVudENvbnRleHQuZ2V0KCkpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hB
ZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoKT4gZnVuY3Rpb24pCi17Ci0gICAgcmVmKCk7Ci0gICAgR01haW5Mb29wU291cmNlOjpzY2hl
ZHVsZUFmdGVyRGVsYXlBbmREZWxldGVPbkRlc3Ryb3koIltXZWJLaXRdIFdvcmtRdWV1ZTo6ZGlz
cGF0Y2hBZnRlciIsIFdURjo6bW92ZShmdW5jdGlvbiksCi0gICAgICAgIHN0ZDo6Y2hyb25vOjpk
dXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KGR1cmF0aW9uKSwgR19QUklP
UklUWV9ERUZBVUxULCBbdGhpc10geyBkZXJlZigpOyB9LCBtX2V2ZW50Q29udGV4dC5nZXQoKSk7
Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvV29ya1F1ZXVlTWFjLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvV29ya1F1ZXVlTWFjLmNw
cAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1dvcmtR
dWV1ZU1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNzggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXb3JrUXVldWUuaCIKLQotdm9pZCBXb3Jr
UXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCi17Ci0gICAg
cmVmKCk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBeewotICAgICAgICBm
dW5jdGlvbigpOwotICAgICAgICBkZXJlZigpOwotICAgIH0pOwotfQotCi12b2lkIFdvcmtRdWV1
ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCi17Ci0gICAgcmVmKCk7Ci0gICAgZGlzcGF0Y2hf
YWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgZHVyYXRpb24uY291bnQoKSks
IG1fZGlzcGF0Y2hRdWV1ZSwgXnsKLSAgICAgICAgZnVuY3Rpb24oKTsKLSAgICAgICAgZGVyZWYo
KTsKLSAgICB9KTsKLX0KLQotI2lmIEhBVkUoUU9TX0NMQVNTRVMpCi1zdGF0aWMgZGlzcGF0Y2hf
cW9zX2NsYXNzX3QgZGlzcGF0Y2hRT1NDbGFzcyhXb3JrUXVldWU6OlFPUyBxb3MpCi17Ci0gICAg
c3dpdGNoIChxb3MpIHsKLSAgICBjYXNlIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmU6
Ci0gICAgICAgIHJldHVybiBRT1NfQ0xBU1NfVVNFUl9JTlRFUkFDVElWRTsKLSAgICBjYXNlIFdv
cmtRdWV1ZTo6UU9TOjpVc2VySW5pdGlhdGVkOgotICAgICAgICByZXR1cm4gUU9TX0NMQVNTX1VT
RVJfSU5JVElBVEVEOwotICAgIGNhc2UgV29ya1F1ZXVlOjpRT1M6OkRlZmF1bHQ6Ci0gICAgICAg
IHJldHVybiBRT1NfQ0xBU1NfREVGQVVMVDsKLSAgICBjYXNlIFdvcmtRdWV1ZTo6UU9TOjpVdGls
aXR5OgotICAgICAgICByZXR1cm4gUU9TX0NMQVNTX1VUSUxJVFk7Ci0gICAgY2FzZSBXb3JrUXVl
dWU6OlFPUzo6QmFja2dyb3VuZDoKLSAgICAgICAgcmV0dXJuIFFPU19DTEFTU19CQUNLR1JPVU5E
OwotICAgIH0KLX0KLSNlbmRpZgotCi12b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXpl
KGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykKLXsKLSAgICBkaXNwYXRjaF9x
dWV1ZV9hdHRyX3QgYXR0ciA9IHR5cGUgPT0gVHlwZTo6Q29uY3VycmVudCA/IERJU1BBVENIX1FV
RVVFX0NPTkNVUlJFTlQgOiBESVNQQVRDSF9RVUVVRV9TRVJJQUw7Ci0jaWYgSEFWRShRT1NfQ0xB
U1NFUykKLSAgICBhdHRyID0gZGlzcGF0Y2hfcXVldWVfYXR0cl9tYWtlX3dpdGhfcW9zX2NsYXNz
KGF0dHIsIGRpc3BhdGNoUU9TQ2xhc3MocW9zKSwgMCk7Ci0jZW5kaWYKLSAgICBtX2Rpc3BhdGNo
UXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUobmFtZSwgYXR0cik7Ci0gICAgZGlzcGF0Y2hf
c2V0X2NvbnRleHQobV9kaXNwYXRjaFF1ZXVlLCB0aGlzKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6
OnBsYXRmb3JtSW52YWxpZGF0ZSgpCi17Ci0gICAgZGlzcGF0Y2hfcmVsZWFzZShtX2Rpc3BhdGNo
UXVldWUpOwotfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIu
aAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3Vz
dG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCi0j
aW5jbHVkZSAiV29ya1F1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5j
aGVyLmNwcAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
dW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDgg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKIAot
I2luY2x1ZGUgIldvcmtRdWV1ZS5oIgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4gCisj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9T
dG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAJKHJldmlzaW9u
IDE4MDM0MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUg
IkxvY2FsU3RvcmFnZURhdGFiYXNlLmgiCiAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIuaCIKLSNpbmNsdWRlICJXb3JrUXVldWUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNhY3Rpb24uaD4KQEAgLTM1LDYgKzM0LDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL1N0b3JhZ2VNYXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1ZGRlblRlcm1p
bmF0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvV29y
a1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmgJKHJldmlzaW9uIDE4MDM0
MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQuaD4KLQotY2xhc3MgV29ya1F1ZXVlOworI2luY2x1ZGUgPHd0Zi9Xb3JrUXVl
dWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2VjdXJpdHlPcmlnaW47CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdl
L0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAJKHJldmlzaW9uIDE4MDM0MikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNywxMSBAQAogI2luY2x1ZGUgIkxvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgogCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGV0YWls
cy5oIgotI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+
CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIuaAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zOCw4ICszOSw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogfQogCi1jbGFzcyBXb3JrUXVldWU7
Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgTG9jYWxTdG9yYWdlRGV0YWlsczsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5jcHAJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9T
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDEx
IEBACiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNs
dWRlICJXb3JrUXVldWUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU1hcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4
dEVuY29kaW5nLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUu
aD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9T
dG9yYWdlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9T
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDggKzMyLDYgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLWNsYXNzIFdvcmtRdWV1ZTsKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyMjMsNyArMTIyMyw2IEBACiAJCUI2MzQwM0Y5MTQ5
MTBENTcwMDEwNzBCNSAvKiBBUElPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjYzNDAzRjgxNDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVj
dC5jcHAgKi87IH07CiAJCUI4NzhCNjE1MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFu
ZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4NzhC
NjEzMTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAqLzsgfTsKIAkJQjg3OEI2
MTYxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4NzhCNjE0MTMzNDI4REMwMDY4ODhFOSAv
KiBDb3JyZWN0aW9uUGFuZWwubW0gKi87IH07Ci0JCUJDMDA5MkY4MTE1ODM3QTMwMEUwQUUyQSAv
KiBXb3JrUXVldWVNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMwMDkyRjYxMTU4MzdBMzAwRTBBRTJBIC8qIFdvcmtRdWV1ZU1hYy5jcHAgKi87
IH07CiAJCUJDMDE3RDA3MTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTURvY3VtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAxN0NGRjE2MjYwRkY0
MDA3MDU0RjUgLyogV0tET01Eb2N1bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUJDMDE3RDA4MTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTURv
Y3VtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMwMTdEMDAxNjI2MEZGNDAwNzA1NEY1IC8qIFdLRE9NRG9jdW1lbnQubW0gKi87IH07CiAJCUJD
MDE3RDA5MTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDE3RDAxMTYyNjBGRjQwMDcwNTRGNSAv
KiBXS0RPTUVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTMyMiw4ICsxMzIxLDYgQEAKIAkJQkMyNjUyMTcxMTgyNjA4MTAwMjQzRTEy
IC8qIERyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMjY1MjEzMTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5
LmggKi87IH07CiAJCUJDMkQwMjE3MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMyRDAyMTYxMkFDNDFDQjAwRTczMkEzIC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBl
LmggKi87IH07CiAJCUJDMkQwMjE5MTJBQzQyNkMwMEU3MzJBMyAvKiBXS1BhZ2VMb2FkVHlwZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkQwMjE4
MTJBQzQyNkMwMEU3MzJBMyAvKiBXS1BhZ2VMb2FkVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQzJFNkU4RDExNDE5NzE1MDBBNjNCMUUg
LyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMkU2RTdEMTE0MTk3MEMwMEE2M0IxRSAvKiBXb3JrUXVldWUuY3BwICovOyB9Owot
CQlCQzJFNkU4RTExNDE5NzE1MDBBNjNCMUUgLyogV29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJFNkU3RTExNDE5NzBDMDBBNjNCMUUg
LyogV29ya1F1ZXVlLmggKi87IH07CiAJCUJDMzA2NUZBMTI1OTM0NEUwMEU3MTI3OCAvKiBDYWNo
ZU1vZGVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzMwNjVGOTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oICovOyB9OwogCQlCQzMwNjZC
RTEyNUE0NDIxMDBFNzEyNzggLyogV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNjZCQzEyNUE0NDIx
MDBFNzEyNzggLyogV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUJDMzA2
NkJGMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA2NkJEMTI1QTQ0MjEwMEU3MTI3
OCAvKiBXZWJQcm9jZXNzTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTM0MDYsNyArMzQwMyw2IEBACiAJ
CUI2MzQwM0Y4MTQ5MTBENTcwMDEwNzBCNSAvKiBBUElPYmplY3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQjg3OEI2MTMxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JyZWN0aW9uUGFuZWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjg3OEI2MTQxMzM0MjhEQzAwNjg4OEU5IC8qIENv
cnJlY3Rpb25QYW5lbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IENvcnJlY3Rpb25QYW5lbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMwMDky
RjYxMTU4MzdBMzAwRTBBRTJBIC8qIFdvcmtRdWV1ZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrUXVldWVNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzAxN0NGRjE2MjYwRkY0MDA3MDU0RjUgLyogV0tET01Eb2N1bWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0RPTURvY3VtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDE3RDAwMTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTURv
Y3VtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tET01E
b2N1bWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMTdEMDExNjI2MEZG
NDAwNzA1NEY1IC8qIFdLRE9NRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0RPTUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1MTAs
OCArMzUwNiw2IEBACiAJCUJDMjY1MjEzMTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYXdpbmdBcmVhUHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRDAyMTYxMkFDNDFDQjAwRTczMkEz
IC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDMkQwMjE4MTJBQzQyNkMwMEU3MzJBMyAvKiBXS1BhZ2VMb2FkVHlwZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlTG9hZFR5cGVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDMkU2RTdEMTE0MTk3MEMwMEE2M0IxRSAvKiBX
b3JrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya1F1
ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMyRTZFN0UxMTQxOTcwQzAw
QTYzQjFFIC8qIFdvcmtRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
b3JrUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzMDY1RjkxMjU5MzQ0
RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2FjaGVNb2RlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMwNjZCOTEy
NUE0MzYzMDBFNzEyNzggLyogV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXZWJQcm9jZXNzLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzMwNjZCQzEyNUE0NDIxMDBFNzEyNzggLyogV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQcm9jZXNzTWVz
c2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1NTgsNyAr
NDU1Miw2IEBACiAJCQkJMUEyNEJGMzkxMjA4OTZBNjAwRkJCMDU5IC8qIFNoYXJlZE1lbW9yeU1h
Yy5jcHAgKi8sCiAJCQkJMjk2QkQ4NUIxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGll
cy5oICovLAogCQkJCTI5NkJEODVDMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMu
bW0gKi8sCi0JCQkJQkMwMDkyRjYxMTU4MzdBMzAwRTBBRTJBIC8qIFdvcmtRdWV1ZU1hYy5jcHAg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC02NjA5LDggKzY2MDIsNiBAQAogCQkJCUMwRTNBQTQ0MTIwOUUyQkEwMEE0OUQwMSAvKiBNb2R1
bGUuaCAqLywKIAkJCQlCQzg3ODBGQjExNjFDMkI4MDBDQzI3NjggLyogUGxhdGZvcm1Qcm9jZXNz
SWRlbnRpZmllci5oICovLAogCQkJCTFBMjRCRUQzMTIwODk0RDEwMEZCQjA1OSAvKiBTaGFyZWRN
ZW1vcnkuaCAqLywKLQkJCQlCQzJFNkU3RDExNDE5NzBDMDBBNjNCMUUgLyogV29ya1F1ZXVlLmNw
cCAqLywKLQkJCQlCQzJFNkU3RTExNDE5NzBDMDBBNjNCMUUgLyogV29ya1F1ZXVlLmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IFBsYXRmb3JtOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTgyOTcsNyArODI4OCw2IEBACiAJCQkJMjZGOUE4M0IxOEEzNDY4MTAwQUVCODhBIC8qIFdLV2Vi
Vmlld1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRDYwRjVFMThFMjBGNEMwMDIwQzAz
NCAvKiBXS1dpbmRvd0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQ2MEY2MDE4RTIw
Rjc0MDAyMEMwMzQgLyogV0tXaW5kb3dGZWF0dXJlc0ludGVybmFsLmggaW4gSGVhZGVycyAqLywK
LQkJCQlCQzJFNkU4RTExNDE5NzE1MDBBNjNCMUUgLyogV29ya1F1ZXVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0JFQ0RFODE2QjY0MTY4MDAwNDdBMUEgLyogWFBDU2VydmljZUVudHJ5UG9pbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwpAQCAtOTk4Myw4ICs5OTczLDYgQEAKIAkJCQkxQURGNTkxQTE4OTA1MjhFMDA0
M0MxNDUgLyogV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJE
QzZEOUM0MThDNDRBNjEwMDQzQkFENCAvKiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3Ry
eS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBRDYwRjVEMThFMjBGNEMwMDIwQzAzNCAvKiBXS1dp
bmRvd0ZlYXR1cmVzLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQkMyRTZFOEQxMTQxOTcxNTAwQTYz
QjFFIC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCQzAwOTJGODExNTgzN0Ez
MDBFMEFFMkEgLyogV29ya1F1ZXVlTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQkVDREU3
MTZCNjQxNjgwMDA0N0ExQSAvKiBYUENTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246965</attachid>
            <date>2015-02-20 05:17:26 -0800</date>
            <delta_ts>2015-02-20 05:25:12 -0800</delta_ts>
            <desc>another</desc>
            <filename>workqueue-wtf-5.patch</filename>
            <type>text/plain</type>
            <size>60007</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE1LTAyLTE5ICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdvcmtRdWV1ZSBmcm9tIFdLMiB0byBXVEYK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTc5Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAgICBJdCBtYXkg
YmUgdXNlZnVsIGluIFdlYkNvcmUuCisKKyAgICAgICAgV2luZG93cyBpbXBsZW1lbnRhdGlvbiBp
cyBzdGlsbCBtaXNzaW5nLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9QbGF0Zm9y
bUdUSy5jbWFrZToKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmNwcDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmNwcC4KKyAgICAgICAgKiB3dGYvV29ya1F1
ZXVlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oLgor
ICAgICAgICAqIHd0Zi9jb2NvYTogQWRkZWQuCisgICAgICAgICogd3RmL2NvY29hL1dvcmtRdWV1
ZUNvY29hLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1dvcmtR
dWV1ZU1hYy5jcHAuCisgICAgICAgICogd3RmL2VmbC9Xb3JrUXVldWVFZmwuY3BwOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcC4KKyAgICAg
ICAgKiB3dGYvZ3RrL1dvcmtRdWV1ZUd0ay5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwLgorCiAyMDE1LTAyLTEzICBHeXV5b3VuZyBL
aW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gRW5hYmxlIGJt
YWxsb2MgZm9yIEVGTCBwb3J0IApJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNiArMjgyLDkgQEAKIAkJQ0U3
M0UwMjUxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3M0UwMjQxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQ
SS5oICovOyB9OwogCQlFMTU1NTZGNTE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0
aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAg
Ki87IH07CiAJCUUxNTU1NkY2MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU1
NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oICovOyB9Owor
CQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBBRDM3MUE5NjI0NTUwMDUzNkRG
NiAvKiBXb3JrUXVldWUuY3BwICovOyB9OworCQlFNEEwQUQzQTFBOTYyNDU1MDA1MzZERjYgLyog
V29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi87IH07CisJCUU0QTBB
RDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzQzFBOTYyNTNDMDA1MzZERjYg
LyogV29ya1F1ZXVlQ29jb2EuY3BwICovOyB9OwogCQlFQjk1RTFGMDE2MUE3MjQxMDA4OUEyRjUg
LyogQnl0ZU9yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFQjk1RTFFRjE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggKi87IH07CiAJCUZF
REFDRDNEMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAv
KiBTdGFja1N0YXRzLmNwcCAqLzsgfTsKIAkJRkVEQUNEM0UxNjMwRjgzRjAwQzY5NjM0IC8qIFN0
YWNrU3RhdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi87IH07CkBAIC01Nzgs
NiArNTgxLDkgQEAKIAkJQ0U3M0UwMjQxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUENTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTE1NTU2RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGls
aXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvZ3Jh
cGhpY1V0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkY0
MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrUXVldWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYg
LyogV29ya1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtRdWV1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEEwQUQzQzFBOTYyNTNDMDA1MzZE
RjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV29ya1F1ZXVlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Qjk1RTFFRjE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJ5dGVPcmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGFja1N0YXRzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhY2tTdGF0cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNjk4LDYgKzcwNCw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTJDREVEMEYwMTgxMTVDM0YwMDREQkE3MCAvKiBjZiAqLywK
KwkJCQlFNEEwQUQzQjFBOTYyNTE5MDA1MzZERjYgLyogY29jb2EgKi8sCiAJCQkJQThBNDcyODEx
NTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EgKi8sCiAJCQkJMUZBNDdDODcxNTI1MDJEQTAwNTY4RDFC
IC8qIGlvcyAqLywKIAkJCQlBOEE0NzJDNDE1MUE4MjVBMDA0MTIzRkYgLyogbWFjICovLApAQCAt
ODk2LDYgKzkwMyw4IEBACiAJCQkJQThBNDczNzExNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRy
YWl0cy5oICovLAogCQkJCUE4QTQ3MzcyMTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRhZ3MuaCAqLywK
IAkJCQk5NzRDRkM4RDE2QTRGMzI3MDA2RDU0MDQgLyogV2Vha1B0ci5oICovLAorCQkJCUU0QTBB
RDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICovLAorCQkJCUU0QTBBRDM4MUE5
NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCAqLywKIAkJCQlBOEE0NzM3QTE1MUE4MjVCMDA0
MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgKi8sCiAJCQkJQThBNDczN0IxNTFBODI1QjAwNDEy
M0ZGIC8qIFdURlRocmVhZERhdGEuaCAqLywKIAkJCSk7CkBAIC0xMDMxLDYgKzEwNDAsMTQgQEAK
IAkJCXBhdGggPSBzcGk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlFNEEw
QUQzQjFBOTYyNTE5MDA1MzZERjYgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCUU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVl
dWVDb2NvYS5jcHAgKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTEyMjEsNiArMTIzOCw3IEBACiAJ
CQkJQThBNDc0N0YxNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRyYWl0cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDc0ODAxNTFBODI1QjAwNDEyM0ZGIC8qIFZNVGFncy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTc0Q0ZDOEUxNkE0RjMyNzAwNkQ1NDA0IC8qIFdlYWtQdHIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUU0QTBBRDNBMUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFGQTQ3QzhCMTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ0NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5n
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ4NzE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhy
ZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzUwLDYgKzEzNjgsNyBAQAogCQkJCUE4QTQ3
M0IwMTUxQTgyNUIwMDQxMjNGRiAvKiBkb3VibGUtY29udmVyc2lvbi5jYyBpbiBTb3VyY2VzICov
LAogCQkJCUE4QTQ3M0JBMTUxQTgyNUIwMDQxMjNGRiAvKiBkdG9hLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGODg1RTBGMTg0NUFFQTkwMEYxRTNGQSAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2Nv
YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCMzE1MUE4MjVCMDA0MTIzRkYgLyogZmFz
dC1kdG9hLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQzMxNTFBODI1QjAwNDEyM0ZGIC8q
IEZhc3RNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RkExODI0MzVBNjAwQTgy
RTY5IC8qIEF0b21pY1N0cmluZ0NGLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTM3OCw2ICsxMzk3
LDcgQEAKIAkJCQkyQ0RFRDBFRjE4MTE1QzM4MDA0REJBNzAgLyogUnVuTG9vcENGLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0Njk0MTkzMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXJD
Ri5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQyMTE1MUE4MjVCMDA0MTIzRkYgLyogU0hB
MS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZERjYgLyogV29y
a1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0Njk0MTk5MTZFQUIwNDEwMDI0RTE0NiAv
KiBTY2hlZHVsZVBhaXJDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDY5NDE5NzE2RUFBRkY4
MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc0ODc0
NTIxN0EwQkRBRTAwRkEwNENCIC8qIFNpeENoYXJhY3Rlckhhc2guY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsNyBAQCBz
ZXQoV1RGX0hFQURFUlMKICAgICBWZWN0b3IuaAogICAgIFZlY3RvclRyYWl0cy5oCiAgICAgV1RG
VGhyZWFkRGF0YS5oCisgICAgV29ya1F1ZXVlLmgKICAgICBXZWFrUHRyLmgKICAgICBkdG9hLmgK
IApAQCAtMTg0LDYgKzE4NSw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIFN0cmluZ1ByaW50U3Ry
ZWFtLmNwcAogICAgIFRocmVhZGluZy5jcHAKICAgICBXVEZUaHJlYWREYXRhLmNwcAorICAgIFdv
cmtRdWV1ZS5jcHAKICAgICBkdG9hLmNwcAogCiAgICAgZHRvYS9iaWdudW0tZHRvYS5jYwpJbmRl
eDogU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC02LDYgKzYsNyBAQCBs
aXN0KEFQUEVORCBXVEZfU09VUkNFUwogCiAgICAgZ3RrL01haW5UaHJlYWRHdGsuY3BwCiAgICAg
Z3RrL1J1bkxvb3BHdGsuY3BwCisgICAgZ3RrL1dvcmtRdWV1ZUd0ay5jcHAKICkKIAogbGlzdChB
UFBFTkQgV1RGX0xJQlJBUklFUwpJbmRleDogU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuY3BwCShyZXZpc2lvbiAxODAz
NDIpCShmcm9tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5jcHA6MTgwMzQyKQor
KysgU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtR
dWV1ZS5oIgorCitSZWY8V29ya1F1ZXVlPiBXb3JrUXVldWU6OmNyZWF0ZShjb25zdCBjaGFyKiBu
YW1lLCBUeXBlIHR5cGUsIFFPUyBxb3MpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29y
a1F1ZXVlKG5hbWUsIHR5cGUsIHFvcykpOworfQorCitXb3JrUXVldWU6OldvcmtRdWV1ZShjb25z
dCBjaGFyKiBuYW1lLCBUeXBlIHR5cGUsIFFPUyBxb3MpCit7CisgICAgcGxhdGZvcm1Jbml0aWFs
aXplKG5hbWUsIHR5cGUsIHFvcyk7Cit9CisKK1dvcmtRdWV1ZTo6fldvcmtRdWV1ZSgpCit7Cisg
ICAgcGxhdGZvcm1JbnZhbGlkYXRlKCk7Cit9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Xb3JrUXVl
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAJKHdvcmtp
bmcgY29weSkKKysrIFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXb3JrUXVl
dWUuaCIKIAorbmFtZXNwYWNlIFdURiB7CisKIFJlZjxXb3JrUXVldWU+IFdvcmtRdWV1ZTo6Y3Jl
YXRlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXb3JrUXVldWUobmFtZSwgdHlwZSwgcW9zKSk7CkBAIC00MCwzICs0Miw1
IEBAIFdvcmtRdWV1ZTo6fldvcmtRdWV1ZSgpCiB7CiAgICAgcGxhdGZvcm1JbnZhbGlkYXRlKCk7
CiB9CisKK30KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCShyZXZpc2lvbiAxODAzNDIpCShmcm9tIFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oOjE4MDM0MikKKysrIFNvdXJjZS9XVEYvd3Rm
L1dvcmtRdWV1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRp
b25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXb3JrUXVldWVfaAorI2RlZmluZSBXb3Jr
UXVldWVfaAorCisjaWYgT1MoREFSV0lOKQorI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+
CisjZW5kaWYKKworI2luY2x1ZGUgPGNocm9ubz4KKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5o
PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KEVGTCkKKyNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCisjZW5kaWYKKwor
I2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BTb3VyY2Uu
aD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjZWxpZiBQTEFURk9STShFRkwp
CisjaW5jbHVkZSA8RGlzcGF0Y2hRdWV1ZUVmbC5oPgorI2VuZGlmCisKK2NsYXNzIFdvcmtRdWV1
ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgeworcHVibGljOgorICAgIGVudW0g
Y2xhc3MgVHlwZSB7CisgICAgICAgIFNlcmlhbCwKKyAgICAgICAgQ29uY3VycmVudAorICAgIH07
CisgICAgZW51bSBjbGFzcyBRT1MgeworICAgICAgICBVc2VySW50ZXJhY3RpdmUsCisgICAgICAg
IFVzZXJJbml0aWF0ZWQsCisgICAgICAgIERlZmF1bHQsCisgICAgICAgIFV0aWxpdHksCisgICAg
ICAgIEJhY2tncm91bmQKKyAgICB9OworICAgIAorICAgIHN0YXRpYyBSZWY8V29ya1F1ZXVlPiBj
cmVhdGUoY29uc3QgY2hhciogbmFtZSwgVHlwZSA9IFR5cGU6OlNlcmlhbCwgUU9TID0gUU9TOjpE
ZWZhdWx0KTsKKyAgICB2aXJ0dWFsIH5Xb3JrUXVldWUoKTsKKworICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3Bh
dGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
KTsKKworI2lmIE9TKERBUldJTikKKyAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUo
KSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KKyNlbGlmIFBMQVRGT1JNKEdUSykK
KyAgICB2b2lkIHJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCwgc3RkOjpmdW5jdGlvbjx2
b2lkICgpPiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU29j
a2V0RXZlbnRIYW5kbGVyKGludCk7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgdm9pZCByZWdp
c3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOworICAg
IHZvaWQgdW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQpOworI2VuZGlmCisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgV29ya1F1ZXVlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUyk7
CisKKyAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBR
T1MpOworICAgIHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7CisKKyNpZiBPUyhEQVJXSU4pCisg
ICAgc3RhdGljIHZvaWQgZXhlY3V0ZUZ1bmN0aW9uKHZvaWQqKTsKKyAgICBkaXNwYXRjaF9xdWV1
ZV90IG1fZGlzcGF0Y2hRdWV1ZTsKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICBUaHJlYWRJZGVu
dGlmaWVyIG1fd29ya1F1ZXVlVGhyZWFkOworICAgIEdSZWZQdHI8R01haW5Db250ZXh0PiBtX2V2
ZW50Q29udGV4dDsKKyAgICBNdXRleCBtX2V2ZW50TG9vcExvY2s7CisgICAgR1JlZlB0cjxHTWFp
bkxvb3A+IG1fZXZlbnRMb29wOworICAgIEdNYWluTG9vcFNvdXJjZSBtX3NvY2tldEV2ZW50U291
cmNlOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIFJlZlB0cjxEaXNwYXRjaFF1ZXVlPiBtX2Rp
c3BhdGNoUXVldWU7CisjZW5kaWYKK307CisKKyNlbmRpZiAvLyBXb3JrUXVldWVfaApJbmRleDog
U291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
V29ya1F1ZXVlLmgJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMiArMjcsMTYgQEAKICNpZm5kZWYgV29ya1F1ZXVlX2gK
ICNkZWZpbmUgV29ya1F1ZXVlX2gKIAotI2lmIE9TKERBUldJTikKLSNpbmNsdWRlIDxkaXNwYXRj
aC9kaXNwYXRjaC5oPgotI2VuZGlmCi0KICNpbmNsdWRlIDxjaHJvbm8+CiAjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bkRpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgotI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0jaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShFRkwpCi0jaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5o
IgorI2lmIE9TKERBUldJTikKKyNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2VuZGlm
CiAKICNpZiBQTEFURk9STShHVEspCkBAIC01Miw2ICs0Niw4IEBACiAjaW5jbHVkZSA8RGlzcGF0
Y2hRdWV1ZUVmbC5oPgogI2VuZGlmCiAKK25hbWVzcGFjZSBXVEYgeworCiBjbGFzcyBXb3JrUXVl
dWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKIHB1YmxpYzoKICAgICBlbnVt
IGNsYXNzIFR5cGUgewpAQCAtNjYsMTEgKzYyLDExIEBAIHB1YmxpYzoKICAgICAgICAgQmFja2dy
b3VuZAogICAgIH07CiAgICAgCi0gICAgc3RhdGljIFJlZjxXb3JrUXVldWU+IGNyZWF0ZShjb25z
dCBjaGFyKiBuYW1lLCBUeXBlID0gVHlwZTo6U2VyaWFsLCBRT1MgPSBRT1M6OkRlZmF1bHQpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFdvcmtRdWV1ZT4gY3JlYXRlKGNvbnN0
IGNoYXIqIG5hbWUsIFR5cGUgPSBUeXBlOjpTZXJpYWwsIFFPUyA9IFFPUzo6RGVmYXVsdCk7CiAg
ICAgdmlydHVhbCB+V29ya1F1ZXVlKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaEFmdGVyKHN0
ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+KSBvdmVycmlkZTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVy
KHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CiAKICNp
ZiBPUyhEQVJXSU4pCiAgICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNwYXRjaFF1ZXVlOyB9CkBAIC0xMDIsNCArOTgsOCBAQCBwcml2YXRlOgog
I2VuZGlmCiB9OwogCi0jZW5kaWYgLy8gV29ya1F1ZXVlX2gKK30KKwordXNpbmcgV1RGOjpXb3Jr
UXVldWU7CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29j
b2EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29h
LmNwcAkocmV2aXNpb24gMTgwMzQyKQkoZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMv
V29ya1F1ZXVlTWFjLmNwcDoxODAzNDIpCisrKyBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVl
dWVDb2NvYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrUXVldWUuaCIKKwordm9pZCBXb3Jr
UXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAg
cmVmKCk7CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBm
dW5jdGlvbigpOworICAgICAgICBkZXJlZigpOworICAgIH0pOworfQorCit2b2lkIFdvcmtRdWV1
ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAgcmVmKCk7CisgICAgZGlzcGF0Y2hf
YWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgZHVyYXRpb24uY291bnQoKSks
IG1fZGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgZnVuY3Rpb24oKTsKKyAgICAgICAgZGVyZWYo
KTsKKyAgICB9KTsKK30KKworI2lmIEhBVkUoUU9TX0NMQVNTRVMpCitzdGF0aWMgZGlzcGF0Y2hf
cW9zX2NsYXNzX3QgZGlzcGF0Y2hRT1NDbGFzcyhXb3JrUXVldWU6OlFPUyBxb3MpCit7CisgICAg
c3dpdGNoIChxb3MpIHsKKyAgICBjYXNlIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmU6
CisgICAgICAgIHJldHVybiBRT1NfQ0xBU1NfVVNFUl9JTlRFUkFDVElWRTsKKyAgICBjYXNlIFdv
cmtRdWV1ZTo6UU9TOjpVc2VySW5pdGlhdGVkOgorICAgICAgICByZXR1cm4gUU9TX0NMQVNTX1VT
RVJfSU5JVElBVEVEOworICAgIGNhc2UgV29ya1F1ZXVlOjpRT1M6OkRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBRT1NfQ0xBU1NfREVGQVVMVDsKKyAgICBjYXNlIFdvcmtRdWV1ZTo6UU9TOjpVdGls
aXR5OgorICAgICAgICByZXR1cm4gUU9TX0NMQVNTX1VUSUxJVFk7CisgICAgY2FzZSBXb3JrUXVl
dWU6OlFPUzo6QmFja2dyb3VuZDoKKyAgICAgICAgcmV0dXJuIFFPU19DTEFTU19CQUNLR1JPVU5E
OworICAgIH0KK30KKyNlbmRpZgorCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXpl
KGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykKK3sKKyAgICBkaXNwYXRjaF9x
dWV1ZV9hdHRyX3QgYXR0ciA9IHR5cGUgPT0gVHlwZTo6Q29uY3VycmVudCA/IERJU1BBVENIX1FV
RVVFX0NPTkNVUlJFTlQgOiBESVNQQVRDSF9RVUVVRV9TRVJJQUw7CisjaWYgSEFWRShRT1NfQ0xB
U1NFUykKKyAgICBhdHRyID0gZGlzcGF0Y2hfcXVldWVfYXR0cl9tYWtlX3dpdGhfcW9zX2NsYXNz
KGF0dHIsIGRpc3BhdGNoUU9TQ2xhc3MocW9zKSwgMCk7CisjZW5kaWYKKyAgICBtX2Rpc3BhdGNo
UXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUobmFtZSwgYXR0cik7CisgICAgZGlzcGF0Y2hf
c2V0X2NvbnRleHQobV9kaXNwYXRjaFF1ZXVlLCB0aGlzKTsKK30KKwordm9pZCBXb3JrUXVldWU6
OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAgZGlzcGF0Y2hfcmVsZWFzZShtX2Rpc3BhdGNo
UXVldWUpOworfQpJbmRleDogU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAko
d29ya2luZyBjb3B5KQorKysgU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiV29ya1F1ZXVlLmgiCiAKK25hbWVzcGFjZSBXVEYgeworCiB2b2lkIFdvcmtRdWV1
ZTo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKIHsKICAgICByZWYo
KTsKQEAgLTY3LDYgKzY5LDggQEAgdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShj
b25zdAogICAgIGRpc3BhdGNoX3F1ZXVlX2F0dHJfdCBhdHRyID0gdHlwZSA9PSBUeXBlOjpDb25j
dXJyZW50ID8gRElTUEFUQ0hfUVVFVUVfQ09OQ1VSUkVOVCA6IERJU1BBVENIX1FVRVVFX1NFUklB
TDsKICNpZiBIQVZFKFFPU19DTEFTU0VTKQogICAgIGF0dHIgPSBkaXNwYXRjaF9xdWV1ZV9hdHRy
X21ha2Vfd2l0aF9xb3NfY2xhc3MoYXR0ciwgZGlzcGF0Y2hRT1NDbGFzcyhxb3MpLCAwKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHFvcyk7CiAjZW5kaWYKICAgICBtX2Rpc3BhdGNoUXVldWUg
PSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUobmFtZSwgYXR0cik7CiAgICAgZGlzcGF0Y2hfc2V0X2Nv
bnRleHQobV9kaXNwYXRjaFF1ZXVlLCB0aGlzKTsKQEAgLTc2LDMgKzgwLDUgQEAgdm9pZCBXb3Jr
UXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiB7CiAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX2Rp
c3BhdGNoUXVldWUpOwogfQorCit9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9lZmwvV29ya1F1ZXVl
RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9lZmwvV29ya1F1ZXVlRWZsLmNw
cAkocmV2aXNpb24gMTgwMzQyKQkoZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29y
a1F1ZXVlRWZsLmNwcDoxODAzNDIpCisrKyBTb3VyY2UvV1RGL3d0Zi9lZmwvV29ya1F1ZXVlRWZs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICAgIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXb3JrUXVldWUuaCIKKworI2luY2x1ZGUgPERpc3BhdGNoUXVldWVFZmwuaD4KKyNp
bmNsdWRlIDxEaXNwYXRjaFF1ZXVlV29ya0l0ZW1FZmwuaD4KKwordm9pZCBXb3JrUXVldWU6OnBs
YXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpCit7CisgICAgbV9k
aXNwYXRjaFF1ZXVlID0gRGlzcGF0Y2hRdWV1ZTo6Y3JlYXRlKG5hbWUpOworfQorCit2b2lkIFdv
cmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKK3sKKyAgICBSZWZQdHI8RGlzcGF0Y2hRdWV1
ZT4gZGlzcGF0Y2hRdWV1ZSA9IG1fZGlzcGF0Y2hRdWV1ZS5yZWxlYXNlKCk7CisgICAgZGlzcGF0
Y2hRdWV1ZS0+c3RvcFRocmVhZCgpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cmVnaXN0ZXJTb2Nr
ZXRFdmVudEhhbmRsZXIoaW50IGZpbGVEZXNjcmlwdG9yLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
IGZ1bmN0aW9uKQoreworICAgIGlmICghbV9kaXNwYXRjaFF1ZXVlKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2Rpc3BhdGNoUXVldWUtPnNldFNvY2tldEV2ZW50SGFuZGxlcihmaWxlRGVzY3Jp
cHRvciwgV1RGOjptb3ZlKGZ1bmN0aW9uKSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lz
dGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCBmaWxlRGVzY3JpcHRvcikKK3sKKyAgICBVTlVTRURf
UEFSQU0oZmlsZURlc2NyaXB0b3IpOworCisgICAgaWYgKCFtX2Rpc3BhdGNoUXVldWUpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fZGlzcGF0Y2hRdWV1ZS0+Y2xlYXJTb2NrZXRFdmVudEhhbmRs
ZXIoKTsKK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4gZnVuY3Rpb24pCit7CisgICAgaWYgKCFtX2Rpc3BhdGNoUXVldWUpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fZGlzcGF0Y2hRdWV1ZS0+ZGlzcGF0Y2goV29ya0l0ZW06OmNyZWF0ZSh0aGlz
LCBXVEY6Om1vdmUoZnVuY3Rpb24pKSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFm
dGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPiBmdW5jdGlvbikKK3sKKyAgICBpZiAoIW1fZGlzcGF0Y2hRdWV1ZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9kaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaChUaW1lcldvcmtJdGVtOjpjcmVh
dGUodGhpcywgV1RGOjptb3ZlKGZ1bmN0aW9uKSwgZHVyYXRpb24pKTsKK30KSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL2d0ay9Xb3JrUXVldWVHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL2d0ay9Xb3JrUXVldWVHdGsuY3BwCShyZXZpc2lvbiAxODAzNDIpCShmcm9tIFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwOjE4MDM0MikKKysrIFNvdXJjZS9X
VEYvd3RmL2d0ay9Xb3JrUXVldWVHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29w
eXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVl
LmgiCisKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisKK3N0YXRpYyBjb25zdCBzaXplX3Qga1Zpc3Vh
bFN0dWRpb1RocmVhZE5hbWVMaW1pdCA9IDMxOworCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1J
bml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUykKK3sKKyAgICBtX2V2ZW50Q29u
dGV4dCA9IGFkb3B0R1JlZihnX21haW5fY29udGV4dF9uZXcoKSk7CisgICAgQVNTRVJUKG1fZXZl
bnRDb250ZXh0KTsKKyAgICBtX2V2ZW50TG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9uZXco
bV9ldmVudENvbnRleHQuZ2V0KCksIEZBTFNFKSk7CisgICAgQVNTRVJUKG1fZXZlbnRMb29wKTsK
KworICAgIC8vIFRoaXMgbmFtZSBjYW4gYmUgY29tLmFwcGxlLldlYktpdC5Qcm9jZXNzTGF1bmNo
ZXIgb3IgY29tLmFwcGxlLkNvcmVJUEMuUmVjZWl2ZVF1ZXVlLgorICAgIC8vIFdlIGFyZSB1c2lu
ZyB0aG9zZSBuYW1lcyBmb3IgdGhlIHRocmVhZCBuYW1lLCBidXQgYm90aCBhcmUgbG9uZ2VyIHRo
YW4gMzEgY2hhcmFjdGVycywKKyAgICAvLyB3aGljaCBpcyB0aGUgbGltaXQgb2YgVmlzdWFsIFN0
dWRpbyBmb3IgdGhyZWFkIG5hbWVzLgorICAgIC8vIFdoZW4gbG9nIGlzIGVuYWJsZWQgY3JlYXRl
VGhyZWFkKCkgd2lsbCBhc3NlcnQgaW5zdGVhZCBvZiB0cnVuY2F0ZSB0aGUgbmFtZSwgc28gd2Ug
bmVlZAorICAgIC8vIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCB1c2UgYSBuYW1lIGxvbmdlciB0aGFu
IDMxIGNoYXJhY3RlcnMuCisgICAgY29uc3QgY2hhciogdGhyZWFkTmFtZSA9IGdfc3RycnN0cihu
YW1lLCAiLiIpOworICAgIGlmICh0aHJlYWROYW1lKQorICAgICAgICB0aHJlYWROYW1lKys7Cisg
ICAgZWxzZQorICAgICAgICB0aHJlYWROYW1lID0gbmFtZTsKKyAgICBpZiAoc3RybGVuKHRocmVh
ZE5hbWUpID4ga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCkKKyAgICAgICAgdGhyZWFkTmFt
ZSArPSBzdHJsZW4odGhyZWFkTmFtZSkgLSBrVmlzdWFsU3R1ZGlvVGhyZWFkTmFtZUxpbWl0Owor
CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIG1fd29ya1F1ZXVl
VGhyZWFkID0gY3JlYXRlVGhyZWFkKHRocmVhZE5hbWUsIFtwcm90ZWN0b3JdIHsgZ19tYWluX2xv
b3BfcnVuKHByb3RlY3Rvci0+bV9ldmVudExvb3AuZ2V0KCkpOyB9KTsKK30KKwordm9pZCBXb3Jr
UXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAgaWYgKG1fd29ya1F1ZXVlVGhyZWFk
KSB7CisgICAgICAgIGRldGFjaFRocmVhZChtX3dvcmtRdWV1ZVRocmVhZCk7CisgICAgICAgIG1f
d29ya1F1ZXVlVGhyZWFkID0gMDsKKyAgICB9CisKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9l
dmVudExvb3BMb2NrKTsKKyAgICBpZiAobV9ldmVudExvb3ApIHsKKyAgICAgICAgaWYgKGdfbWFp
bl9sb29wX2lzX3J1bm5pbmcobV9ldmVudExvb3AuZ2V0KCkpKQorICAgICAgICAgICAgZ19tYWlu
X2xvb3BfcXVpdChtX2V2ZW50TG9vcC5nZXQoKSk7CisgICAgICAgIG1fZXZlbnRMb29wLmNsZWFy
KCk7CisgICAgfQorCisgICAgbV9ldmVudENvbnRleHQuY2xlYXIoKTsKK30KKwordm9pZCBXb3Jr
UXVldWU6OnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCBmaWxlRGVzY3JpcHRvciwgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjbG9z
ZUZ1bmN0aW9uKQoreworICAgIEdSZWZQdHI8R1NvY2tldD4gc29ja2V0ID0gYWRvcHRHUmVmKGdf
c29ja2V0X25ld19mcm9tX2ZkKGZpbGVEZXNjcmlwdG9yLCAwKSk7CisgICAgcmVmKCk7CisgICAg
bV9zb2NrZXRFdmVudFNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF0gV29ya1F1ZXVlOjpTb2NrZXRF
dmVudEhhbmRsZXIiLCBbZnVuY3Rpb24sIGNsb3NlRnVuY3Rpb25dKEdJT0NvbmRpdGlvbiBjb25k
aXRpb24pIHsKKyAgICAgICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lPX0hVUCB8fCBjb25kaXRp
b24gJiBHX0lPX0VSUiB8fCBjb25kaXRpb24gJiBHX0lPX05WQUwpIHsKKyAgICAgICAgICAgICAg
ICBjbG9zZUZ1bmN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEdNYWluTG9vcFNvdXJj
ZTo6U3RvcDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNvbmRpdGlvbiAmIEdf
SU9fSU4pIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbigpOworICAgICAgICAgICAgICAgIHJl
dHVybiBHTWFpbkxvb3BTb3VyY2U6OkNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBHTWFpbkxvb3BT
b3VyY2U6OlN0b3A7CisgICAgICAgIH0sIHNvY2tldC5nZXQoKSwgR19JT19JTiwKKyAgICAgICAg
W3RoaXNdIHsgZGVyZWYoKTsgfSwKKyAgICAgICAgbV9ldmVudENvbnRleHQuZ2V0KCkpOworfQor
Cit2b2lkIFdvcmtRdWV1ZTo6dW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQpCit7Cisg
ICAgbV9zb2NrZXRFdmVudFNvdXJjZS5jYW5jZWwoKTsKK30KKwordm9pZCBXb3JrUXVldWU6OmRp
c3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAgcmVmKCk7Cisg
ICAgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFuZERlbGV0ZU9uRGVzdHJveSgiW1dlYktpdF0g
V29ya1F1ZXVlOjpkaXNwYXRjaCIsIFdURjo6bW92ZShmdW5jdGlvbiksIEdfUFJJT1JJVFlfREVG
QVVMVCwKKyAgICAgICAgW3RoaXNdIHsgZGVyZWYoKTsgfSwgbV9ldmVudENvbnRleHQuZ2V0KCkp
OworfQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3Nl
Y29uZHMgZHVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAg
cmVmKCk7CisgICAgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFmdGVyRGVsYXlBbmREZWxldGVP
bkRlc3Ryb3koIltXZWJLaXRdIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlciIsIFdURjo6bW92ZShm
dW5jdGlvbiksCisgICAgICAgIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25v
OjptaWxsaXNlY29uZHM+KGR1cmF0aW9uKSwgR19QUklPUklUWV9ERUZBVUxULCBbdGhpc10geyBk
ZXJlZigpOyB9LCBtX2V2ZW50Q29udGV4dC5nZXQoKSk7Cit9CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9ndGsvV29ya1F1ZXVlR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9ndGsv
V29ya1F1ZXVlR3RrLmNwcAkod29ya2luZyBjb3B5KQorKysgU291cmNlL1dURi93dGYvZ3RrL1dv
cmtRdWV1ZUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDggQEAKIAogI2luY2x1
ZGUgPGdpby9naW8uaD4KIAorbmFtZXNwYWNlIFdURiB7CisKIHN0YXRpYyBjb25zdCBzaXplX3Qg
a1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCA9IDMxOwogCiB2b2lkIFdvcmtRdWV1ZTo6cGxh
dGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUykKQEAgLTExMywzICsx
MTUsNSBAQCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9uCiAgICAgR01h
aW5Mb29wU291cmNlOjpzY2hlZHVsZUFmdGVyRGVsYXlBbmREZWxldGVPbkRlc3Ryb3koIltXZWJL
aXRdIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlciIsIFdURjo6bW92ZShmdW5jdGlvbiksCiAgICAg
ICAgIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+
KGR1cmF0aW9uKSwgR19QUklPUklUWV9ERUZBVUxULCBbdGhpc10geyBkZXJlZigpOyB9LCBtX2V2
ZW50Q29udGV4dC5nZXQoKSk7CiB9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDM0
MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDMwIEBACisyMDE1LTAyLTE5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNb3ZlIFdvcmtRdWV1ZSBmcm9tIFdLMiB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTc5NworCisgICAgICAgIFJldmlld2Vk
IGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaDoKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFBsYXRmb3JtL1dvcmtRdWV1ZS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogUGxhdGZvcm0vV29ya1F1ZXVlLmg6IFJlbW92ZWQuCisgICAgICAg
ICogUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogUGxh
dGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHA6IFJlbW92ZWQuCisgICAgICAgICogUGxhdGZvcm0v
bWFjL1dvcmtRdWV1ZU1hYy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogUGxhdGZvcm1FZmwuY21h
a2U6CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogU2hhcmVkL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
U3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9y
YWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9y
YWdlL1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCiAyMDE1LTAyLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dLMl1baU9TXSBGaXggTmV0d29ya0NhY2hlIGJ1aWxkCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsNiBAQCBzZXQoV2ViS2l0Ml9T
T1VSQ0VTCiAKICAgICBQbGF0Zm9ybS9Mb2dnaW5nLmNwcAogICAgIFBsYXRmb3JtL01vZHVsZS5j
cHAKLSAgICBQbGF0Zm9ybS9Xb3JrUXVldWUuY3BwCiAKICAgICBQbGF0Zm9ybS9JUEMvQXJndW1l
bnRDb2RlcnMuY3BwCiAgICAgUGxhdGZvcm0vSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTEsNyArMTEsNiBAQCBs
aXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBQbGF0Zm9ybS9lZmwvRGlzcGF0Y2hRdWV1
ZUVmbC5jcHAKICAgICBQbGF0Zm9ybS9lZmwvTG9nZ2luZ0VmbC5jcHAKICAgICBQbGF0Zm9ybS9l
ZmwvTW9kdWxlRWZsLmNwcAotICAgIFBsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwCiAKICAg
ICBQbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtR1RLLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUdUSy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQCBsaXN0KEFQUEVORCBX
ZWJLaXQyX1NPVVJDRVMKIAogICAgIFBsYXRmb3JtL2d0ay9Mb2dnaW5nR3RrLmNwcAogICAgIFBs
YXRmb3JtL2d0ay9Nb2R1bGVHdGsuY3BwCi0gICAgUGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5j
cHAKIAogICAgIFBsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKIApAQCAtNjI0LDcg
KzYyMyw2IEBAIGlmIChFTkFCTEVfUExVR0lOX1BST0NFU1NfR1RLMikKICAgICBsaXN0KEFQUEVO
RCBQbHVnaW5Qcm9jZXNzR1RLMl9TT1VSQ0VTCiAgICAgICAgIFBsYXRmb3JtL0xvZ2dpbmcuY3Bw
CiAgICAgICAgIFBsYXRmb3JtL01vZHVsZS5jcHAKLSAgICAgICAgUGxhdGZvcm0vV29ya1F1ZXVl
LmNwcAogCiAgICAgICAgIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKICAgICAgICAg
UGxhdGZvcm0vSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKQEAgLTY0Myw3ICs2NDEsNiBAQCBpZiAo
RU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzIpCiAKICAgICAgICAgUGxhdGZvcm0vZ3RrL0xvZ2dp
bmdHdGsuY3BwCiAgICAgICAgIFBsYXRmb3JtL2d0ay9Nb2R1bGVHdGsuY3BwCi0gICAgICAgIFBs
YXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwCiAKICAgICAgICAgUGxhdGZvcm0vdW5peC9TaGFy
ZWRNZW1vcnlVbml4LmNwcAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
RGF0YWJhc2VQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJXZWJPcmlnaW5EYXRhTWFuYWdlclN1cHBsZW1lbnQu
aCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAotY2xhc3MgV29ya1F1ZXVlOwot
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQXN5bmNUYXNrOwpJbmRleDogU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuY3BwCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV29ya1F1ZXVl
LmgiCi0KLVJlZjxXb3JrUXVldWU+IFdvcmtRdWV1ZTo6Y3JlYXRlKGNvbnN0IGNoYXIqIG5hbWUs
IFR5cGUgdHlwZSwgUU9TIHFvcykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3JrUXVl
dWUobmFtZSwgdHlwZSwgcW9zKSk7Ci19Ci0KLVdvcmtRdWV1ZTo6V29ya1F1ZXVlKGNvbnN0IGNo
YXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykKLXsKLSAgICBwbGF0Zm9ybUluaXRpYWxpemUo
bmFtZSwgdHlwZSwgcW9zKTsKLX0KLQotV29ya1F1ZXVlOjp+V29ya1F1ZXVlKCkKLXsKLSAgICBw
bGF0Zm9ybUludmFsaWRhdGUoKTsKLX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dv
cmtRdWV1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1
ZS5oCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVl
dWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5
cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgV29ya1F1ZXVlX2gKLSNkZWZpbmUgV29ya1F1ZXVlX2gK
LQotI2lmIE9TKERBUldJTikKLSNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgotI2VuZGlm
Ci0KLSNpbmNsdWRlIDxjaHJvbm8+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaD4KLSNpbmNs
dWRlIDx3dGYvRnVuY3Rpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCi0j
aW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgotI2VuZGlmCi0KLSNpZiBQTEFU
Rk9STShHVEspCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR01haW5Mb29wU291cmNlLmg+Ci0jaW5j
bHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgotI2VsaWYgUExBVEZPUk0oRUZMKQotI2luY2x1
ZGUgPERpc3BhdGNoUXVldWVFZmwuaD4KLSNlbmRpZgotCi1jbGFzcyBXb3JrUXVldWUgZmluYWwg
OiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIFR5
cGUgewotICAgICAgICBTZXJpYWwsCi0gICAgICAgIENvbmN1cnJlbnQKLSAgICB9OwotICAgIGVu
dW0gY2xhc3MgUU9TIHsKLSAgICAgICAgVXNlckludGVyYWN0aXZlLAotICAgICAgICBVc2VySW5p
dGlhdGVkLAotICAgICAgICBEZWZhdWx0LAotICAgICAgICBVdGlsaXR5LAotICAgICAgICBCYWNr
Z3JvdW5kCi0gICAgfTsKLSAgICAKLSAgICBzdGF0aWMgUmVmPFdvcmtRdWV1ZT4gY3JlYXRlKGNv
bnN0IGNoYXIqIG5hbWUsIFR5cGUgPSBUeXBlOjpTZXJpYWwsIFFPUyA9IFFPUzo6RGVmYXVsdCk7
Ci0gICAgdmlydHVhbCB+V29ya1F1ZXVlKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2go
c3RkOjpmdW5jdGlvbjx2b2lkICgpPikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaEFmdGVy
KHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7Ci0KLSNp
ZiBPUyhEQVJXSU4pCi0gICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNwYXRjaFF1ZXVlOyB9Ci0jZWxpZiBQTEFURk9STShHVEspCi0gICAgdm9p
ZCByZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4s
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOwotICAgIHZvaWQgdW5yZWdpc3RlclNvY2tldEV2ZW50
SGFuZGxlcihpbnQpOwotI2VsaWYgUExBVEZPUk0oRUZMKQotICAgIHZvaWQgcmVnaXN0ZXJTb2Nr
ZXRFdmVudEhhbmRsZXIoaW50LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKLSAgICB2b2lkIHVu
cmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50KTsKLSNlbmRpZgotCi1wcml2YXRlOgotICAg
IGV4cGxpY2l0IFdvcmtRdWV1ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpOwotCi0gICAg
dm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKTsKLSAg
ICB2b2lkIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwotCi0jaWYgT1MoREFSV0lOKQotICAgIHN0YXRp
YyB2b2lkIGV4ZWN1dGVGdW5jdGlvbih2b2lkKik7Ci0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX2Rp
c3BhdGNoUXVldWU7Ci0jZWxpZiBQTEFURk9STShHVEspCi0gICAgVGhyZWFkSWRlbnRpZmllciBt
X3dvcmtRdWV1ZVRocmVhZDsKLSAgICBHUmVmUHRyPEdNYWluQ29udGV4dD4gbV9ldmVudENvbnRl
eHQ7Ci0gICAgTXV0ZXggbV9ldmVudExvb3BMb2NrOwotICAgIEdSZWZQdHI8R01haW5Mb29wPiBt
X2V2ZW50TG9vcDsKLSAgICBHTWFpbkxvb3BTb3VyY2UgbV9zb2NrZXRFdmVudFNvdXJjZTsKLSNl
bGlmIFBMQVRGT1JNKEVGTCkKLSAgICBSZWZQdHI8RGlzcGF0Y2hRdWV1ZT4gbV9kaXNwYXRjaFF1
ZXVlOwotI2VuZGlmCi19OwotCi0jZW5kaWYgLy8gV29ya1F1ZXVlX2gKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAkocmV2aXNpb24gMTgwMzQyKQorKysgU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsMTEgKzMzLDEyIEBACiAjaW5jbHVkZSAiTWVzc2FnZUVuY29kZXIuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVHlwZS5oIgotI2luY2x1ZGUgIldv
cmtRdWV1ZS5oIgogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDxjb25kaXRpb25fdmFyaWFi
bGU+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBPUyhEQVJXSU4pCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcAkocmV2aXNpb24gMTgwMzQy
KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ft
c3VuZyBFbGVjdHJvbmljcwotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV29y
a1F1ZXVlLmgiCi0KLSNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVlRWZsLmg+Ci0jaW5jbHVkZSA8RGlz
cGF0Y2hRdWV1ZVdvcmtJdGVtRWZsLmg+Ci0KLXZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRp
YWxpemUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKQotewotICAgIG1fZGlzcGF0Y2hRdWV1
ZSA9IERpc3BhdGNoUXVldWU6OmNyZWF0ZShuYW1lKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OnBs
YXRmb3JtSW52YWxpZGF0ZSgpCi17Ci0gICAgUmVmUHRyPERpc3BhdGNoUXVldWU+IGRpc3BhdGNo
UXVldWUgPSBtX2Rpc3BhdGNoUXVldWUucmVsZWFzZSgpOwotICAgIGRpc3BhdGNoUXVldWUtPnN0
b3BUaHJlYWQoKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5k
bGVyKGludCBmaWxlRGVzY3JpcHRvciwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikK
LXsKLSAgICBpZiAoIW1fZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9k
aXNwYXRjaFF1ZXVlLT5zZXRTb2NrZXRFdmVudEhhbmRsZXIoZmlsZURlc2NyaXB0b3IsIFdURjo6
bW92ZShmdW5jdGlvbikpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6dW5yZWdpc3RlclNvY2tldEV2
ZW50SGFuZGxlcihpbnQgZmlsZURlc2NyaXB0b3IpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGZpbGVE
ZXNjcmlwdG9yKTsKLQotICAgIGlmICghbV9kaXNwYXRjaFF1ZXVlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX2Rpc3BhdGNoUXVldWUtPmNsZWFyU29ja2V0RXZlbnRIYW5kbGVyKCk7Ci19Ci0K
LXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9u
KQotewotICAgIGlmICghbV9kaXNwYXRjaFF1ZXVlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X2Rpc3BhdGNoUXVldWUtPmRpc3BhdGNoKFdvcmtJdGVtOjpjcmVhdGUodGhpcywgV1RGOjptb3Zl
KGZ1bmN0aW9uKSkpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNo
cm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rp
b24pCi17Ci0gICAgaWYgKCFtX2Rpc3BhdGNoUXVldWUpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fZGlzcGF0Y2hRdWV1ZS0+ZGlzcGF0Y2goVGltZXJXb3JrSXRlbTo6Y3JlYXRlKHRoaXMsIFdU
Rjo6bW92ZShmdW5jdGlvbiksIGR1cmF0aW9uKSk7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9ndGsvV29ya1F1ZXVlR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9ndGsvV29ya1F1ZXVlR3RrLmNwcAkocmV2aXNpb24gMTgwMzQyKQorKysgU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTE1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4K
LSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXb3JrUXVldWUuaCIKLQotI2luY2x1ZGUgPGdpby9naW8uaD4KLQotc3RhdGljIGNvbnN0
IHNpemVfdCBrVmlzdWFsU3R1ZGlvVGhyZWFkTmFtZUxpbWl0ID0gMzE7Ci0KLXZvaWQgV29ya1F1
ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKQotewot
ICAgIG1fZXZlbnRDb250ZXh0ID0gYWRvcHRHUmVmKGdfbWFpbl9jb250ZXh0X25ldygpKTsKLSAg
ICBBU1NFUlQobV9ldmVudENvbnRleHQpOwotICAgIG1fZXZlbnRMb29wID0gYWRvcHRHUmVmKGdf
bWFpbl9sb29wX25ldyhtX2V2ZW50Q29udGV4dC5nZXQoKSwgRkFMU0UpKTsKLSAgICBBU1NFUlQo
bV9ldmVudExvb3ApOwotCi0gICAgLy8gVGhpcyBuYW1lIGNhbiBiZSBjb20uYXBwbGUuV2ViS2l0
LlByb2Nlc3NMYXVuY2hlciBvciBjb20uYXBwbGUuQ29yZUlQQy5SZWNlaXZlUXVldWUuCi0gICAg
Ly8gV2UgYXJlIHVzaW5nIHRob3NlIG5hbWVzIGZvciB0aGUgdGhyZWFkIG5hbWUsIGJ1dCBib3Ro
IGFyZSBsb25nZXIgdGhhbiAzMSBjaGFyYWN0ZXJzLAotICAgIC8vIHdoaWNoIGlzIHRoZSBsaW1p
dCBvZiBWaXN1YWwgU3R1ZGlvIGZvciB0aHJlYWQgbmFtZXMuCi0gICAgLy8gV2hlbiBsb2cgaXMg
ZW5hYmxlZCBjcmVhdGVUaHJlYWQoKSB3aWxsIGFzc2VydCBpbnN0ZWFkIG9mIHRydW5jYXRlIHRo
ZSBuYW1lLCBzbyB3ZSBuZWVkCi0gICAgLy8gdG8gbWFrZSBzdXJlIHdlIGRvbid0IHVzZSBhIG5h
bWUgbG9uZ2VyIHRoYW4gMzEgY2hhcmFjdGVycy4KLSAgICBjb25zdCBjaGFyKiB0aHJlYWROYW1l
ID0gZ19zdHJyc3RyKG5hbWUsICIuIik7Ci0gICAgaWYgKHRocmVhZE5hbWUpCi0gICAgICAgIHRo
cmVhZE5hbWUrKzsKLSAgICBlbHNlCi0gICAgICAgIHRocmVhZE5hbWUgPSBuYW1lOwotICAgIGlm
IChzdHJsZW4odGhyZWFkTmFtZSkgPiBrVmlzdWFsU3R1ZGlvVGhyZWFkTmFtZUxpbWl0KQotICAg
ICAgICB0aHJlYWROYW1lICs9IHN0cmxlbih0aHJlYWROYW1lKSAtIGtWaXN1YWxTdHVkaW9UaHJl
YWROYW1lTGltaXQ7Ci0KLSAgICBSZWZQdHI8V29ya1F1ZXVlPiBwcm90ZWN0b3IodGhpcyk7Ci0g
ICAgbV93b3JrUXVldWVUaHJlYWQgPSBjcmVhdGVUaHJlYWQodGhyZWFkTmFtZSwgW3Byb3RlY3Rv
cl0geyBnX21haW5fbG9vcF9ydW4ocHJvdGVjdG9yLT5tX2V2ZW50TG9vcC5nZXQoKSk7IH0pOwot
fQotCi12b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKLXsKLSAgICBpZiAobV93
b3JrUXVldWVUaHJlYWQpIHsKLSAgICAgICAgZGV0YWNoVGhyZWFkKG1fd29ya1F1ZXVlVGhyZWFk
KTsKLSAgICAgICAgbV93b3JrUXVldWVUaHJlYWQgPSAwOwotICAgIH0KLQotICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2V2ZW50TG9vcExvY2spOwotICAgIGlmIChtX2V2ZW50TG9vcCkgewotICAg
ICAgICBpZiAoZ19tYWluX2xvb3BfaXNfcnVubmluZyhtX2V2ZW50TG9vcC5nZXQoKSkpCi0gICAg
ICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1fZXZlbnRMb29wLmdldCgpKTsKLSAgICAgICAgbV9l
dmVudExvb3AuY2xlYXIoKTsKLSAgICB9Ci0KLSAgICBtX2V2ZW50Q29udGV4dC5jbGVhcigpOwot
fQotCi12b2lkIFdvcmtRdWV1ZTo6cmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50IGZpbGVE
ZXNjcmlwdG9yLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+IGNsb3NlRnVuY3Rpb24pCi17Ci0gICAgR1JlZlB0cjxHU29ja2V0PiBzb2NrZXQg
PSBhZG9wdEdSZWYoZ19zb2NrZXRfbmV3X2Zyb21fZmQoZmlsZURlc2NyaXB0b3IsIDApKTsKLSAg
ICByZWYoKTsKLSAgICBtX3NvY2tldEV2ZW50U291cmNlLnNjaGVkdWxlKCJbV2ViS2l0XSBXb3Jr
UXVldWU6OlNvY2tldEV2ZW50SGFuZGxlciIsIFtmdW5jdGlvbiwgY2xvc2VGdW5jdGlvbl0oR0lP
Q29uZGl0aW9uIGNvbmRpdGlvbikgewotICAgICAgICAgICAgaWYgKGNvbmRpdGlvbiAmIEdfSU9f
SFVQIHx8IGNvbmRpdGlvbiAmIEdfSU9fRVJSIHx8IGNvbmRpdGlvbiAmIEdfSU9fTlZBTCkgewot
ICAgICAgICAgICAgICAgIGNsb3NlRnVuY3Rpb24oKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
R01haW5Mb29wU291cmNlOjpTdG9wOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAo
Y29uZGl0aW9uICYgR19JT19JTikgewotICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIEdNYWluTG9vcFNvdXJjZTo6Q29udGludWU7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0
dXJuIEdNYWluTG9vcFNvdXJjZTo6U3RvcDsKLSAgICAgICAgfSwgc29ja2V0LmdldCgpLCBHX0lP
X0lOLAotICAgICAgICBbdGhpc10geyBkZXJlZigpOyB9LAotICAgICAgICBtX2V2ZW50Q29udGV4
dC5nZXQoKSk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5k
bGVyKGludCkKLXsKLSAgICBtX3NvY2tldEV2ZW50U291cmNlLmNhbmNlbCgpOwotfQotCi12b2lk
IFdvcmtRdWV1ZTo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKLXsK
LSAgICByZWYoKTsKLSAgICBHTWFpbkxvb3BTb3VyY2U6OnNjaGVkdWxlQW5kRGVsZXRlT25EZXN0
cm95KCJbV2ViS2l0XSBXb3JrUXVldWU6OmRpc3BhdGNoIiwgV1RGOjptb3ZlKGZ1bmN0aW9uKSwg
R19QUklPUklUWV9ERUZBVUxULAotICAgICAgICBbdGhpc10geyBkZXJlZigpOyB9LCBtX2V2ZW50
Q29udGV4dC5nZXQoKSk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6
Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5j
dGlvbikKLXsKLSAgICByZWYoKTsKLSAgICBHTWFpbkxvb3BTb3VyY2U6OnNjaGVkdWxlQWZ0ZXJE
ZWxheUFuZERlbGV0ZU9uRGVzdHJveSgiW1dlYktpdF0gV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVy
IiwgV1RGOjptb3ZlKGZ1bmN0aW9uKSwKLSAgICAgICAgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nh
c3Q8c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcz4oZHVyYXRpb24pLCBHX1BSSU9SSVRZX0RFRkFV
TFQsIFt0aGlzXSB7IGRlcmVmKCk7IH0sIG1fZXZlbnRDb250ZXh0LmdldCgpKTsKLX0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Xb3JrUXVldWVNYWMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Xb3JrUXVldWVNYWMuY3BwCShyZXZpc2lv
biAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvV29ya1F1ZXVlTWFjLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgotCi12b2lkIFdvcmtRdWV1ZTo6ZGlz
cGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKLXsKLSAgICByZWYoKTsKLSAg
ICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIF57Ci0gICAgICAgIGZ1bmN0aW9uKCk7
Ci0gICAgICAgIGRlcmVmKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRj
aEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2
b2lkICgpPiBmdW5jdGlvbikKLXsKLSAgICByZWYoKTsKLSAgICBkaXNwYXRjaF9hZnRlcihkaXNw
YXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkdXJhdGlvbi5jb3VudCgpKSwgbV9kaXNwYXRj
aFF1ZXVlLCBeewotICAgICAgICBmdW5jdGlvbigpOwotICAgICAgICBkZXJlZigpOwotICAgIH0p
OwotfQotCi0jaWYgSEFWRShRT1NfQ0xBU1NFUykKLXN0YXRpYyBkaXNwYXRjaF9xb3NfY2xhc3Nf
dCBkaXNwYXRjaFFPU0NsYXNzKFdvcmtRdWV1ZTo6UU9TIHFvcykKLXsKLSAgICBzd2l0Y2ggKHFv
cykgewotICAgIGNhc2UgV29ya1F1ZXVlOjpRT1M6OlVzZXJJbnRlcmFjdGl2ZToKLSAgICAgICAg
cmV0dXJuIFFPU19DTEFTU19VU0VSX0lOVEVSQUNUSVZFOwotICAgIGNhc2UgV29ya1F1ZXVlOjpR
T1M6OlVzZXJJbml0aWF0ZWQ6Ci0gICAgICAgIHJldHVybiBRT1NfQ0xBU1NfVVNFUl9JTklUSUFU
RUQ7Ci0gICAgY2FzZSBXb3JrUXVldWU6OlFPUzo6RGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFFP
U19DTEFTU19ERUZBVUxUOwotICAgIGNhc2UgV29ya1F1ZXVlOjpRT1M6OlV0aWxpdHk6Ci0gICAg
ICAgIHJldHVybiBRT1NfQ0xBU1NfVVRJTElUWTsKLSAgICBjYXNlIFdvcmtRdWV1ZTo6UU9TOjpC
YWNrZ3JvdW5kOgotICAgICAgICByZXR1cm4gUU9TX0NMQVNTX0JBQ0tHUk9VTkQ7Ci0gICAgfQot
fQotI2VuZGlmCi0KLXZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgY2hh
ciogbmFtZSwgVHlwZSB0eXBlLCBRT1MgcW9zKQotewotICAgIGRpc3BhdGNoX3F1ZXVlX2F0dHJf
dCBhdHRyID0gdHlwZSA9PSBUeXBlOjpDb25jdXJyZW50ID8gRElTUEFUQ0hfUVVFVUVfQ09OQ1VS
UkVOVCA6IERJU1BBVENIX1FVRVVFX1NFUklBTDsKLSNpZiBIQVZFKFFPU19DTEFTU0VTKQotICAg
IGF0dHIgPSBkaXNwYXRjaF9xdWV1ZV9hdHRyX21ha2Vfd2l0aF9xb3NfY2xhc3MoYXR0ciwgZGlz
cGF0Y2hRT1NDbGFzcyhxb3MpLCAwKTsKLSNlbmRpZgotICAgIG1fZGlzcGF0Y2hRdWV1ZSA9IGRp
c3BhdGNoX3F1ZXVlX2NyZWF0ZShuYW1lLCBhdHRyKTsKLSAgICBkaXNwYXRjaF9zZXRfY29udGV4
dChtX2Rpc3BhdGNoUXVldWUsIHRoaXMpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1J
bnZhbGlkYXRlKCkKLXsKLSAgICBkaXNwYXRjaF9yZWxlYXNlKG1fZGlzcGF0Y2hRdWV1ZSk7Ci19
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCShyZXZpc2lv
biAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcg
QEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBw
bGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKLSNpbmNsdWRlICJX
b3JrUXVldWUuaCIKKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCShy
ZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJv
Y2Vzc0xhdW5jaGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgogCi0jaW5jbHVkZSAi
V29ya1F1ZXVlLmgiCi0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPiAKKyNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAkocmV2aXNpb24gMTgwMzQyKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiTG9jYWxTdG9y
YWdlRGF0YWJhc2UuaCIKIAogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5o
IgotI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TUUxpdGVUcmFuc2FjdGlvbi5oPgpAQCAtMzUsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvU3RvcmFnZU1hcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3VkZGVuVGVybWluYXRpb24uaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaAkocmV2aXNpb24gMTgwMzQyKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsOCArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgotCi1jbGFzcyBXb3JrUXVldWU7CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLmNwcAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMTEgKzI3LDExIEBACiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmgiCiAKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEZXRhaWxzLmgiCi0jaW5j
bHVkZSAiV29ya1F1ZXVlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KKyNpbmNsdWRl
IDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9y
YWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCShy
ZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9Xb3Jr
UXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM4LDggKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiB9CiAKLWNsYXNzIFdvcmtRdWV1ZTsKLQogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIHN0cnVjdCBMb2NhbFN0b3JhZ2VEZXRhaWxzOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAko
cmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSArMzMsMTEgQEAKICNpbmNs
dWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgIldvcmtR
dWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TdG9yYWdlTWFwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2Rpbmcu
aD4KICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1
ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZU1hbmFnZXIuaAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIs
NiBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotY2xhc3MgV29ya1F1ZXVlOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4MDM0MikK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTIyMyw3ICsxMjIzLDYgQEAKIAkJQjYzNDAzRjkxNDkxMEQ1NzAwMTA3
MEI1IC8qIEFQSU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCNjM0MDNGODE0OTEwRDU3MDAxMDcwQjUgLyogQVBJT2JqZWN0LmNwcCAqLzsg
fTsKIAkJQjg3OEI2MTUxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjg3OEI2MTMxMzM0MjhE
QzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5oICovOyB9OwogCQlCODc4QjYxNjEzMzQyOERD
MDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjg3OEI2MTQxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rp
b25QYW5lbC5tbSAqLzsgfTsKLQkJQkMwMDkyRjgxMTU4MzdBMzAwRTBBRTJBIC8qIFdvcmtRdWV1
ZU1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzAwOTJGNjExNTgzN0EzMDBFMEFFMkEgLyogV29ya1F1ZXVlTWFjLmNwcCAqLzsgfTsKIAkJQkMw
MTdEMDcxNjI2MEZGNDAwNzA1NEY1IC8qIFdLRE9NRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDE3Q0ZGMTYyNjBGRjQwMDcwNTRGNSAv
KiBXS0RPTURvY3VtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkMwMTdEMDgxNjI2MEZGNDAwNzA1NEY1IC8qIFdLRE9NRG9jdW1lbnQubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAxN0QwMDE2
MjYwRkY0MDA3MDU0RjUgLyogV0tET01Eb2N1bWVudC5tbSAqLzsgfTsKIAkJQkMwMTdEMDkxNjI2
MEZGNDAwNzA1NEY1IC8qIFdLRE9NRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMTdEMDExNjI2MEZGNDAwNzA1NEY1IC8qIFdLRE9NRWxl
bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xMzIyLDggKzEzMjEsNiBAQAogCQlCQzI2NTIxNzExODI2MDgxMDAyNDNFMTIgLyogRHJhd2lu
Z0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMyNjUyMTMxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuaCAqLzsgfTsK
IAkJQkMyRDAyMTcxMkFDNDFDQjAwRTczMkEzIC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJEMDIx
NjEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCAqLzsgfTsK
IAkJQkMyRDAyMTkxMkFDNDI2QzAwRTczMkEzIC8qIFdLUGFnZUxvYWRUeXBlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyRDAyMTgxMkFDNDI2QzAw
RTczMkEzIC8qIFdLUGFnZUxvYWRUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCUJDMkU2RThEMTE0MTk3MTUwMEE2M0IxRSAvKiBXb3JrUXVl
dWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMy
RTZFN0QxMTQxOTcwQzAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5jcHAgKi87IH07Ci0JCUJDMkU2RThF
MTE0MTk3MTUwMEE2M0IxRSAvKiBXb3JrUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkU2RTdFMTE0MTk3MEMwMEE2M0IxRSAvKiBXb3JrUXVl
dWUuaCAqLzsgfTsKIAkJQkMzMDY1RkExMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA2NUY5MTI1
OTM0NEUwMEU3MTI3OCAvKiBDYWNoZU1vZGVsLmggKi87IH07CiAJCUJDMzA2NkJFMTI1QTQ0MjEw
MEU3MTI3OCAvKiBXZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA2NkJDMTI1QTQ0MjEwMEU3MTI3OCAv
KiBXZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQkMzMDY2QkYxMjVBNDQy
MTAwRTcxMjc4IC8qIFdlYlByb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzMDY2QkQxMjVBNDQyMTAwRTcxMjc4IC8qIFdlYlBy
b2Nlc3NNZXNzYWdlcy5oICovOyB9OwpAQCAtMzQwNiw3ICszNDAzLDYgQEAKIAkJQjYzNDAzRjgx
NDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBUElPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCODc4QjYxMzEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcnJlY3Rpb25QYW5lbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCODc4QjYxNDEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBh
bmVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29ycmVjdGlv
blBhbmVsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzAwOTJGNjExNTgzN0Ez
MDBFMEFFMkEgLyogV29ya1F1ZXVlTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdvcmtRdWV1ZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDMDE3Q0ZGMTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTURvY3VtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRE9NRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkMwMTdEMDAxNjI2MEZGNDAwNzA1NEY1IC8qIFdLRE9NRG9jdW1lbnQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0RPTURvY3VtZW50Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAxN0QwMTE2MjYwRkY0MDA3MDU0RjUg
LyogV0tET01FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRE9N
RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzUxMCw4ICszNTA2LDYg
QEAKIAkJQkMyNjUyMTMxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd2luZ0FyZWFQcm94eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJEMDIxNjEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURv
Y3VtZW50TmF2aWdhdGlvblR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkMyRDAyMTgxMkFDNDI2QzAwRTczMkEzIC8qIFdLUGFnZUxvYWRUeXBlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VMb2FkVHlwZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQkMyRTZFN0QxMTQxOTcwQzAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrUXVldWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzJFNkU3RTExNDE5NzBDMDBBNjNCMUUgLyog
V29ya1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtRdWV1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMwNjVGOTEyNTkzNDRFMDBFNzEyNzgg
LyogQ2FjaGVNb2RlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZU1v
ZGVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzA2NkI5MTI1QTQzNjMwMEU3
MTI3OCAvKiBXZWJQcm9jZXNzLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdl
YlByb2Nlc3MubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzA2
NkJDMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlByb2Nlc3NNZXNzYWdlUmVjZWl2
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDU1OCw3ICs0NTUyLDYgQEAK
IAkJCQkxQTI0QkYzOTEyMDg5NkE2MDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5TWFjLmNwcCAqLywK
IAkJCQkyOTZCRDg1QjE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLmggKi8sCiAJ
CQkJMjk2QkQ4NUMxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5tbSAqLywKLQkJ
CQlCQzAwOTJGNjExNTgzN0EzMDBFMEFFMkEgLyogV29ya1F1ZXVlTWFjLmNwcCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTY2MDksOCAr
NjYwMiw2IEBACiAJCQkJQzBFM0FBNDQxMjA5RTJCQTAwQTQ5RDAxIC8qIE1vZHVsZS5oICovLAog
CQkJCUJDODc4MEZCMTE2MUMyQjgwMENDMjc2OCAvKiBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVy
LmggKi8sCiAJCQkJMUEyNEJFRDMxMjA4OTREMTAwRkJCMDU5IC8qIFNoYXJlZE1lbW9yeS5oICov
LAotCQkJCUJDMkU2RTdEMTE0MTk3MEMwMEE2M0IxRSAvKiBXb3JrUXVldWUuY3BwICovLAotCQkJ
CUJDMkU2RTdFMTE0MTk3MEMwMEE2M0IxRSAvKiBXb3JrUXVldWUuaCAqLywKIAkJCSk7CiAJCQlw
YXRoID0gUGxhdGZvcm07CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtODI5Nyw3ICs4
Mjg4LDYgQEAKIAkJCQkyNkY5QTgzQjE4QTM0NjgxMDBBRUI4OEEgLyogV0tXZWJWaWV3UHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFENjBGNUUxOEUyMEY0QzAwMjBDMDM0IC8qIFdLV2lu
ZG93RmVhdHVyZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRDYwRjYwMThFMjBGNzQwMDIwQzAz
NCAvKiBXS1dpbmRvd0ZlYXR1cmVzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDMkU2
RThFMTE0MTk3MTUwMEE2M0IxRSAvKiBXb3JrUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
QkVDREU4MTZCNjQxNjgwMDA0N0ExQSAvKiBYUENTZXJ2aWNlRW50cnlQb2ludC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CkBAIC05OTgzLDggKzk5NzMsNiBAQAogCQkJCTFBREY1OTFBMTg5MDUyOEUwMDQzQzE0NSAvKiBX
S1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRDNkQ5QzQxOEM0
NEE2MTAwNDNCQUQ0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUFENjBGNUQxOEUyMEY0QzAwMjBDMDM0IC8qIFdLV2luZG93RmVhdHVy
ZXMubW0gaW4gU291cmNlcyAqLywKLQkJCQlCQzJFNkU4RDExNDE5NzE1MDBBNjNCMUUgLyogV29y
a1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDMDA5MkY4MTE1ODM3QTMwMEUwQUUyQSAv
KiBXb3JrUXVldWVNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCRUNERTcxNkI2NDE2ODAw
MDQ3QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246967</attachid>
            <date>2015-02-20 05:25:12 -0800</date>
            <delta_ts>2015-02-20 06:19:06 -0800</delta_ts>
            <desc>another</desc>
            <filename>workqueue-wtf-6.patch</filename>
            <type>text/plain</type>
            <size>59987</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE1LTAyLTE5ICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdvcmtRdWV1ZSBmcm9tIFdLMiB0byBXVEYK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTc5Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAgICBJdCBtYXkg
YmUgdXNlZnVsIGluIFdlYkNvcmUuCisKKyAgICAgICAgV2luZG93cyBpbXBsZW1lbnRhdGlvbiBp
cyBzdGlsbCBtaXNzaW5nLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9QbGF0Zm9y
bUdUSy5jbWFrZToKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmNwcDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmNwcC4KKyAgICAgICAgKiB3dGYvV29ya1F1
ZXVlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oLgor
ICAgICAgICAqIHd0Zi9jb2NvYTogQWRkZWQuCisgICAgICAgICogd3RmL2NvY29hL1dvcmtRdWV1
ZUNvY29hLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1dvcmtR
dWV1ZU1hYy5jcHAuCisgICAgICAgICogd3RmL2VmbC9Xb3JrUXVldWVFZmwuY3BwOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcC4KKyAgICAg
ICAgKiB3dGYvZ3RrL1dvcmtRdWV1ZUd0ay5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwLgorCiAyMDE1LTAyLTEzICBHeXV5b3VuZyBL
aW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gRW5hYmxlIGJt
YWxsb2MgZm9yIEVGTCBwb3J0IApJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNiArMjgyLDkgQEAKIAkJQ0U3
M0UwMjUxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3M0UwMjQxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQ
SS5oICovOyB9OwogCQlFMTU1NTZGNTE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0
aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAg
Ki87IH07CiAJCUUxNTU1NkY2MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU1
NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oICovOyB9Owor
CQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBBRDM3MUE5NjI0NTUwMDUzNkRG
NiAvKiBXb3JrUXVldWUuY3BwICovOyB9OworCQlFNEEwQUQzQTFBOTYyNDU1MDA1MzZERjYgLyog
V29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi87IH07CisJCUU0QTBB
RDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzQzFBOTYyNTNDMDA1MzZERjYg
LyogV29ya1F1ZXVlQ29jb2EuY3BwICovOyB9OwogCQlFQjk1RTFGMDE2MUE3MjQxMDA4OUEyRjUg
LyogQnl0ZU9yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFQjk1RTFFRjE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggKi87IH07CiAJCUZF
REFDRDNEMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAv
KiBTdGFja1N0YXRzLmNwcCAqLzsgfTsKIAkJRkVEQUNEM0UxNjMwRjgzRjAwQzY5NjM0IC8qIFN0
YWNrU3RhdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi87IH07CkBAIC01Nzgs
NiArNTgxLDkgQEAKIAkJQ0U3M0UwMjQxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUENTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTE1NTU2RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGls
aXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvZ3Jh
cGhpY1V0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkY0
MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrUXVldWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYg
LyogV29ya1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtRdWV1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEEwQUQzQzFBOTYyNTNDMDA1MzZE
RjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV29ya1F1ZXVlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Qjk1RTFFRjE2MUE3MjQxMDA4OUEyRjUgLyogQnl0ZU9yZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJ5dGVPcmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGFja1N0YXRzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhY2tTdGF0cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNjk4LDYgKzcwNCw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTJDREVEMEYwMTgxMTVDM0YwMDREQkE3MCAvKiBjZiAqLywK
KwkJCQlFNEEwQUQzQjFBOTYyNTE5MDA1MzZERjYgLyogY29jb2EgKi8sCiAJCQkJQThBNDcyODEx
NTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EgKi8sCiAJCQkJMUZBNDdDODcxNTI1MDJEQTAwNTY4RDFC
IC8qIGlvcyAqLywKIAkJCQlBOEE0NzJDNDE1MUE4MjVBMDA0MTIzRkYgLyogbWFjICovLApAQCAt
ODk2LDYgKzkwMyw4IEBACiAJCQkJQThBNDczNzExNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRy
YWl0cy5oICovLAogCQkJCUE4QTQ3MzcyMTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRhZ3MuaCAqLywK
IAkJCQk5NzRDRkM4RDE2QTRGMzI3MDA2RDU0MDQgLyogV2Vha1B0ci5oICovLAorCQkJCUU0QTBB
RDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICovLAorCQkJCUU0QTBBRDM4MUE5
NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCAqLywKIAkJCQlBOEE0NzM3QTE1MUE4MjVCMDA0
MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgKi8sCiAJCQkJQThBNDczN0IxNTFBODI1QjAwNDEy
M0ZGIC8qIFdURlRocmVhZERhdGEuaCAqLywKIAkJCSk7CkBAIC0xMDMxLDYgKzEwNDAsMTQgQEAK
IAkJCXBhdGggPSBzcGk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlFNEEw
QUQzQjFBOTYyNTE5MDA1MzZERjYgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCUU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVl
dWVDb2NvYS5jcHAgKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTEyMjEsNiArMTIzOCw3IEBACiAJ
CQkJQThBNDc0N0YxNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRyYWl0cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDc0ODAxNTFBODI1QjAwNDEyM0ZGIC8qIFZNVGFncy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTc0Q0ZDOEUxNkE0RjMyNzAwNkQ1NDA0IC8qIFdlYWtQdHIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUU0QTBBRDNBMUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFGQTQ3QzhCMTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ0NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5n
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ4NzE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhy
ZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzUwLDYgKzEzNjgsNyBAQAogCQkJCUE4QTQ3
M0IwMTUxQTgyNUIwMDQxMjNGRiAvKiBkb3VibGUtY29udmVyc2lvbi5jYyBpbiBTb3VyY2VzICov
LAogCQkJCUE4QTQ3M0JBMTUxQTgyNUIwMDQxMjNGRiAvKiBkdG9hLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGODg1RTBGMTg0NUFFQTkwMEYxRTNGQSAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2Nv
YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCMzE1MUE4MjVCMDA0MTIzRkYgLyogZmFz
dC1kdG9hLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQzMxNTFBODI1QjAwNDEyM0ZGIC8q
IEZhc3RNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RkExODI0MzVBNjAwQTgy
RTY5IC8qIEF0b21pY1N0cmluZ0NGLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTM3OCw2ICsxMzk3
LDcgQEAKIAkJCQkyQ0RFRDBFRjE4MTE1QzM4MDA0REJBNzAgLyogUnVuTG9vcENGLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0Njk0MTkzMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXJD
Ri5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQyMTE1MUE4MjVCMDA0MTIzRkYgLyogU0hB
MS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZERjYgLyogV29y
a1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0Njk0MTk5MTZFQUIwNDEwMDI0RTE0NiAv
KiBTY2hlZHVsZVBhaXJDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDY5NDE5NzE2RUFBRkY4
MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc0ODc0
NTIxN0EwQkRBRTAwRkEwNENCIC8qIFNpeENoYXJhY3Rlckhhc2guY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsNyBAQCBz
ZXQoV1RGX0hFQURFUlMKICAgICBWZWN0b3IuaAogICAgIFZlY3RvclRyYWl0cy5oCiAgICAgV1RG
VGhyZWFkRGF0YS5oCisgICAgV29ya1F1ZXVlLmgKICAgICBXZWFrUHRyLmgKICAgICBkdG9hLmgK
IApAQCAtMTg0LDYgKzE4NSw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIFN0cmluZ1ByaW50U3Ry
ZWFtLmNwcAogICAgIFRocmVhZGluZy5jcHAKICAgICBXVEZUaHJlYWREYXRhLmNwcAorICAgIFdv
cmtRdWV1ZS5jcHAKICAgICBkdG9hLmNwcAogCiAgICAgZHRvYS9iaWdudW0tZHRvYS5jYwpJbmRl
eDogU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC02LDYgKzYsNyBAQCBs
aXN0KEFQUEVORCBXVEZfU09VUkNFUwogCiAgICAgZ3RrL01haW5UaHJlYWRHdGsuY3BwCiAgICAg
Z3RrL1J1bkxvb3BHdGsuY3BwCisgICAgZ3RrL1dvcmtRdWV1ZUd0ay5jcHAKICkKIAogbGlzdChB
UFBFTkQgV1RGX0xJQlJBUklFUwpJbmRleDogU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuY3BwCShyZXZpc2lvbiAxODAz
NDIpCShmcm9tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5jcHA6MTgwMzQyKQor
KysgU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtR
dWV1ZS5oIgorCitSZWY8V29ya1F1ZXVlPiBXb3JrUXVldWU6OmNyZWF0ZShjb25zdCBjaGFyKiBu
YW1lLCBUeXBlIHR5cGUsIFFPUyBxb3MpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29y
a1F1ZXVlKG5hbWUsIHR5cGUsIHFvcykpOworfQorCitXb3JrUXVldWU6OldvcmtRdWV1ZShjb25z
dCBjaGFyKiBuYW1lLCBUeXBlIHR5cGUsIFFPUyBxb3MpCit7CisgICAgcGxhdGZvcm1Jbml0aWFs
aXplKG5hbWUsIHR5cGUsIHFvcyk7Cit9CisKK1dvcmtRdWV1ZTo6fldvcmtRdWV1ZSgpCit7Cisg
ICAgcGxhdGZvcm1JbnZhbGlkYXRlKCk7Cit9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Xb3JrUXVl
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAJKHdvcmtp
bmcgY29weSkKKysrIFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXb3JrUXVl
dWUuaCIKIAorbmFtZXNwYWNlIFdURiB7CisKIFJlZjxXb3JrUXVldWU+IFdvcmtRdWV1ZTo6Y3Jl
YXRlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXb3JrUXVldWUobmFtZSwgdHlwZSwgcW9zKSk7CkBAIC00MCwzICs0Miw1
IEBAIFdvcmtRdWV1ZTo6fldvcmtRdWV1ZSgpCiB7CiAgICAgcGxhdGZvcm1JbnZhbGlkYXRlKCk7
CiB9CisKK30KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCShyZXZpc2lvbiAxODAzNDIpCShmcm9tIFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oOjE4MDM0MikKKysrIFNvdXJjZS9XVEYvd3Rm
L1dvcmtRdWV1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRp
b25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXb3JrUXVldWVfaAorI2RlZmluZSBXb3Jr
UXVldWVfaAorCisjaWYgT1MoREFSV0lOKQorI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+
CisjZW5kaWYKKworI2luY2x1ZGUgPGNocm9ubz4KKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5o
PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KEVGTCkKKyNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCisjZW5kaWYKKwor
I2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HTWFpbkxvb3BTb3VyY2Uu
aD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjZWxpZiBQTEFURk9STShFRkwp
CisjaW5jbHVkZSA8RGlzcGF0Y2hRdWV1ZUVmbC5oPgorI2VuZGlmCisKK2NsYXNzIFdvcmtRdWV1
ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgeworcHVibGljOgorICAgIGVudW0g
Y2xhc3MgVHlwZSB7CisgICAgICAgIFNlcmlhbCwKKyAgICAgICAgQ29uY3VycmVudAorICAgIH07
CisgICAgZW51bSBjbGFzcyBRT1MgeworICAgICAgICBVc2VySW50ZXJhY3RpdmUsCisgICAgICAg
IFVzZXJJbml0aWF0ZWQsCisgICAgICAgIERlZmF1bHQsCisgICAgICAgIFV0aWxpdHksCisgICAg
ICAgIEJhY2tncm91bmQKKyAgICB9OworICAgIAorICAgIHN0YXRpYyBSZWY8V29ya1F1ZXVlPiBj
cmVhdGUoY29uc3QgY2hhciogbmFtZSwgVHlwZSA9IFR5cGU6OlNlcmlhbCwgUU9TID0gUU9TOjpE
ZWZhdWx0KTsKKyAgICB2aXJ0dWFsIH5Xb3JrUXVldWUoKTsKKworICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3Bh
dGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
KTsKKworI2lmIE9TKERBUldJTikKKyAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUo
KSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KKyNlbGlmIFBMQVRGT1JNKEdUSykK
KyAgICB2b2lkIHJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCwgc3RkOjpmdW5jdGlvbjx2
b2lkICgpPiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU29j
a2V0RXZlbnRIYW5kbGVyKGludCk7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgdm9pZCByZWdp
c3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOworICAg
IHZvaWQgdW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQpOworI2VuZGlmCisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgV29ya1F1ZXVlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUyk7
CisKKyAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBR
T1MpOworICAgIHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7CisKKyNpZiBPUyhEQVJXSU4pCisg
ICAgc3RhdGljIHZvaWQgZXhlY3V0ZUZ1bmN0aW9uKHZvaWQqKTsKKyAgICBkaXNwYXRjaF9xdWV1
ZV90IG1fZGlzcGF0Y2hRdWV1ZTsKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICBUaHJlYWRJZGVu
dGlmaWVyIG1fd29ya1F1ZXVlVGhyZWFkOworICAgIEdSZWZQdHI8R01haW5Db250ZXh0PiBtX2V2
ZW50Q29udGV4dDsKKyAgICBNdXRleCBtX2V2ZW50TG9vcExvY2s7CisgICAgR1JlZlB0cjxHTWFp
bkxvb3A+IG1fZXZlbnRMb29wOworICAgIEdNYWluTG9vcFNvdXJjZSBtX3NvY2tldEV2ZW50U291
cmNlOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIFJlZlB0cjxEaXNwYXRjaFF1ZXVlPiBtX2Rp
c3BhdGNoUXVldWU7CisjZW5kaWYKK307CisKKyNlbmRpZiAvLyBXb3JrUXVldWVfaApJbmRleDog
U291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
V29ya1F1ZXVlLmgJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMiArMjcsMTYgQEAKICNpZm5kZWYgV29ya1F1ZXVlX2gK
ICNkZWZpbmUgV29ya1F1ZXVlX2gKIAotI2lmIE9TKERBUldJTikKLSNpbmNsdWRlIDxkaXNwYXRj
aC9kaXNwYXRjaC5oPgotI2VuZGlmCi0KICNpbmNsdWRlIDxjaHJvbm8+CiAjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bkRpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgotI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0jaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShFRkwpCi0jaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5o
IgorI2lmIE9TKERBUldJTikKKyNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2VuZGlm
CiAKICNpZiBQTEFURk9STShHVEspCkBAIC01Miw2ICs0Niw4IEBACiAjaW5jbHVkZSA8RGlzcGF0
Y2hRdWV1ZUVmbC5oPgogI2VuZGlmCiAKK25hbWVzcGFjZSBXVEYgeworCiBjbGFzcyBXb3JrUXVl
dWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKIHB1YmxpYzoKICAgICBlbnVt
IGNsYXNzIFR5cGUgewpAQCAtNjYsMTEgKzYyLDExIEBAIHB1YmxpYzoKICAgICAgICAgQmFja2dy
b3VuZAogICAgIH07CiAgICAgCi0gICAgc3RhdGljIFJlZjxXb3JrUXVldWU+IGNyZWF0ZShjb25z
dCBjaGFyKiBuYW1lLCBUeXBlID0gVHlwZTo6U2VyaWFsLCBRT1MgPSBRT1M6OkRlZmF1bHQpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFdvcmtRdWV1ZT4gY3JlYXRlKGNvbnN0
IGNoYXIqIG5hbWUsIFR5cGUgPSBUeXBlOjpTZXJpYWwsIFFPUyA9IFFPUzo6RGVmYXVsdCk7CiAg
ICAgdmlydHVhbCB+V29ya1F1ZXVlKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaEFmdGVyKHN0
ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+KSBvdmVycmlkZTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVy
KHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CiAKICNp
ZiBPUyhEQVJXSU4pCiAgICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNwYXRjaFF1ZXVlOyB9CkBAIC0xMDIsNCArOTgsOCBAQCBwcml2YXRlOgog
I2VuZGlmCiB9OwogCi0jZW5kaWYgLy8gV29ya1F1ZXVlX2gKK30KKwordXNpbmcgV1RGOjpXb3Jr
UXVldWU7CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29j
b2EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29h
LmNwcAkocmV2aXNpb24gMTgwMzQyKQkoZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMv
V29ya1F1ZXVlTWFjLmNwcDoxODAzNDIpCisrKyBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVl
dWVDb2NvYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrUXVldWUuaCIKKwordm9pZCBXb3Jr
UXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAg
cmVmKCk7CisgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLCBeeworICAgICAgICBm
dW5jdGlvbigpOworICAgICAgICBkZXJlZigpOworICAgIH0pOworfQorCit2b2lkIFdvcmtRdWV1
ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAgcmVmKCk7CisgICAgZGlzcGF0Y2hf
YWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgZHVyYXRpb24uY291bnQoKSks
IG1fZGlzcGF0Y2hRdWV1ZSwgXnsKKyAgICAgICAgZnVuY3Rpb24oKTsKKyAgICAgICAgZGVyZWYo
KTsKKyAgICB9KTsKK30KKworI2lmIEhBVkUoUU9TX0NMQVNTRVMpCitzdGF0aWMgZGlzcGF0Y2hf
cW9zX2NsYXNzX3QgZGlzcGF0Y2hRT1NDbGFzcyhXb3JrUXVldWU6OlFPUyBxb3MpCit7CisgICAg
c3dpdGNoIChxb3MpIHsKKyAgICBjYXNlIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmU6
CisgICAgICAgIHJldHVybiBRT1NfQ0xBU1NfVVNFUl9JTlRFUkFDVElWRTsKKyAgICBjYXNlIFdv
cmtRdWV1ZTo6UU9TOjpVc2VySW5pdGlhdGVkOgorICAgICAgICByZXR1cm4gUU9TX0NMQVNTX1VT
RVJfSU5JVElBVEVEOworICAgIGNhc2UgV29ya1F1ZXVlOjpRT1M6OkRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBRT1NfQ0xBU1NfREVGQVVMVDsKKyAgICBjYXNlIFdvcmtRdWV1ZTo6UU9TOjpVdGls
aXR5OgorICAgICAgICByZXR1cm4gUU9TX0NMQVNTX1VUSUxJVFk7CisgICAgY2FzZSBXb3JrUXVl
dWU6OlFPUzo6QmFja2dyb3VuZDoKKyAgICAgICAgcmV0dXJuIFFPU19DTEFTU19CQUNLR1JPVU5E
OworICAgIH0KK30KKyNlbmRpZgorCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXpl
KGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykKK3sKKyAgICBkaXNwYXRjaF9x
dWV1ZV9hdHRyX3QgYXR0ciA9IHR5cGUgPT0gVHlwZTo6Q29uY3VycmVudCA/IERJU1BBVENIX1FV
RVVFX0NPTkNVUlJFTlQgOiBESVNQQVRDSF9RVUVVRV9TRVJJQUw7CisjaWYgSEFWRShRT1NfQ0xB
U1NFUykKKyAgICBhdHRyID0gZGlzcGF0Y2hfcXVldWVfYXR0cl9tYWtlX3dpdGhfcW9zX2NsYXNz
KGF0dHIsIGRpc3BhdGNoUU9TQ2xhc3MocW9zKSwgMCk7CisjZW5kaWYKKyAgICBtX2Rpc3BhdGNo
UXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUobmFtZSwgYXR0cik7CisgICAgZGlzcGF0Y2hf
c2V0X2NvbnRleHQobV9kaXNwYXRjaFF1ZXVlLCB0aGlzKTsKK30KKwordm9pZCBXb3JrUXVldWU6
OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAgZGlzcGF0Y2hfcmVsZWFzZShtX2Rpc3BhdGNo
UXVldWUpOworfQpJbmRleDogU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAko
d29ya2luZyBjb3B5KQorKysgU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiV29ya1F1ZXVlLmgiCiAKK25hbWVzcGFjZSBXVEYgeworCiB2b2lkIFdvcmtRdWV1
ZTo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKIHsKICAgICByZWYo
KTsKQEAgLTY3LDYgKzY5LDggQEAgdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShj
b25zdAogICAgIGRpc3BhdGNoX3F1ZXVlX2F0dHJfdCBhdHRyID0gdHlwZSA9PSBUeXBlOjpDb25j
dXJyZW50ID8gRElTUEFUQ0hfUVVFVUVfQ09OQ1VSUkVOVCA6IERJU1BBVENIX1FVRVVFX1NFUklB
TDsKICNpZiBIQVZFKFFPU19DTEFTU0VTKQogICAgIGF0dHIgPSBkaXNwYXRjaF9xdWV1ZV9hdHRy
X21ha2Vfd2l0aF9xb3NfY2xhc3MoYXR0ciwgZGlzcGF0Y2hRT1NDbGFzcyhxb3MpLCAwKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHFvcyk7CiAjZW5kaWYKICAgICBtX2Rpc3BhdGNoUXVldWUg
PSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUobmFtZSwgYXR0cik7CiAgICAgZGlzcGF0Y2hfc2V0X2Nv
bnRleHQobV9kaXNwYXRjaFF1ZXVlLCB0aGlzKTsKQEAgLTc2LDMgKzgwLDUgQEAgdm9pZCBXb3Jr
UXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiB7CiAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX2Rp
c3BhdGNoUXVldWUpOwogfQorCit9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9lZmwvV29ya1F1ZXVl
RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9lZmwvV29ya1F1ZXVlRWZsLmNw
cAkocmV2aXNpb24gMTgwMzQyKQkoZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29y
a1F1ZXVlRWZsLmNwcDoxODAzNDIpCisrKyBTb3VyY2UvV1RGL3d0Zi9lZmwvV29ya1F1ZXVlRWZs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICAgIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXb3JrUXVldWUuaCIKKworI2luY2x1ZGUgPERpc3BhdGNoUXVldWVFZmwuaD4KKyNp
bmNsdWRlIDxEaXNwYXRjaFF1ZXVlV29ya0l0ZW1FZmwuaD4KKwordm9pZCBXb3JrUXVldWU6OnBs
YXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpCit7CisgICAgbV9k
aXNwYXRjaFF1ZXVlID0gRGlzcGF0Y2hRdWV1ZTo6Y3JlYXRlKG5hbWUpOworfQorCit2b2lkIFdv
cmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKK3sKKyAgICBSZWZQdHI8RGlzcGF0Y2hRdWV1
ZT4gZGlzcGF0Y2hRdWV1ZSA9IG1fZGlzcGF0Y2hRdWV1ZS5yZWxlYXNlKCk7CisgICAgZGlzcGF0
Y2hRdWV1ZS0+c3RvcFRocmVhZCgpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cmVnaXN0ZXJTb2Nr
ZXRFdmVudEhhbmRsZXIoaW50IGZpbGVEZXNjcmlwdG9yLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
IGZ1bmN0aW9uKQoreworICAgIGlmICghbV9kaXNwYXRjaFF1ZXVlKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2Rpc3BhdGNoUXVldWUtPnNldFNvY2tldEV2ZW50SGFuZGxlcihmaWxlRGVzY3Jp
cHRvciwgV1RGOjptb3ZlKGZ1bmN0aW9uKSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lz
dGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCBmaWxlRGVzY3JpcHRvcikKK3sKKyAgICBVTlVTRURf
UEFSQU0oZmlsZURlc2NyaXB0b3IpOworCisgICAgaWYgKCFtX2Rpc3BhdGNoUXVldWUpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fZGlzcGF0Y2hRdWV1ZS0+Y2xlYXJTb2NrZXRFdmVudEhhbmRs
ZXIoKTsKK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4gZnVuY3Rpb24pCit7CisgICAgaWYgKCFtX2Rpc3BhdGNoUXVldWUpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fZGlzcGF0Y2hRdWV1ZS0+ZGlzcGF0Y2goV29ya0l0ZW06OmNyZWF0ZSh0aGlz
LCBXVEY6Om1vdmUoZnVuY3Rpb24pKSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFm
dGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPiBmdW5jdGlvbikKK3sKKyAgICBpZiAoIW1fZGlzcGF0Y2hRdWV1ZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9kaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaChUaW1lcldvcmtJdGVtOjpjcmVh
dGUodGhpcywgV1RGOjptb3ZlKGZ1bmN0aW9uKSwgZHVyYXRpb24pKTsKK30KSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL2d0ay9Xb3JrUXVldWVHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL2d0ay9Xb3JrUXVldWVHdGsuY3BwCShyZXZpc2lvbiAxODAzNDIpCShmcm9tIFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwOjE4MDM0MikKKysrIFNvdXJjZS9X
VEYvd3RmL2d0ay9Xb3JrUXVldWVHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29w
eXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVl
LmgiCisKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisKK3N0YXRpYyBjb25zdCBzaXplX3Qga1Zpc3Vh
bFN0dWRpb1RocmVhZE5hbWVMaW1pdCA9IDMxOworCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1J
bml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUykKK3sKKyAgICBtX2V2ZW50Q29u
dGV4dCA9IGFkb3B0R1JlZihnX21haW5fY29udGV4dF9uZXcoKSk7CisgICAgQVNTRVJUKG1fZXZl
bnRDb250ZXh0KTsKKyAgICBtX2V2ZW50TG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9uZXco
bV9ldmVudENvbnRleHQuZ2V0KCksIEZBTFNFKSk7CisgICAgQVNTRVJUKG1fZXZlbnRMb29wKTsK
KworICAgIC8vIFRoaXMgbmFtZSBjYW4gYmUgY29tLmFwcGxlLldlYktpdC5Qcm9jZXNzTGF1bmNo
ZXIgb3IgY29tLmFwcGxlLkNvcmVJUEMuUmVjZWl2ZVF1ZXVlLgorICAgIC8vIFdlIGFyZSB1c2lu
ZyB0aG9zZSBuYW1lcyBmb3IgdGhlIHRocmVhZCBuYW1lLCBidXQgYm90aCBhcmUgbG9uZ2VyIHRo
YW4gMzEgY2hhcmFjdGVycywKKyAgICAvLyB3aGljaCBpcyB0aGUgbGltaXQgb2YgVmlzdWFsIFN0
dWRpbyBmb3IgdGhyZWFkIG5hbWVzLgorICAgIC8vIFdoZW4gbG9nIGlzIGVuYWJsZWQgY3JlYXRl
VGhyZWFkKCkgd2lsbCBhc3NlcnQgaW5zdGVhZCBvZiB0cnVuY2F0ZSB0aGUgbmFtZSwgc28gd2Ug
bmVlZAorICAgIC8vIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCB1c2UgYSBuYW1lIGxvbmdlciB0aGFu
IDMxIGNoYXJhY3RlcnMuCisgICAgY29uc3QgY2hhciogdGhyZWFkTmFtZSA9IGdfc3RycnN0cihu
YW1lLCAiLiIpOworICAgIGlmICh0aHJlYWROYW1lKQorICAgICAgICB0aHJlYWROYW1lKys7Cisg
ICAgZWxzZQorICAgICAgICB0aHJlYWROYW1lID0gbmFtZTsKKyAgICBpZiAoc3RybGVuKHRocmVh
ZE5hbWUpID4ga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCkKKyAgICAgICAgdGhyZWFkTmFt
ZSArPSBzdHJsZW4odGhyZWFkTmFtZSkgLSBrVmlzdWFsU3R1ZGlvVGhyZWFkTmFtZUxpbWl0Owor
CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIG1fd29ya1F1ZXVl
VGhyZWFkID0gY3JlYXRlVGhyZWFkKHRocmVhZE5hbWUsIFtwcm90ZWN0b3JdIHsgZ19tYWluX2xv
b3BfcnVuKHByb3RlY3Rvci0+bV9ldmVudExvb3AuZ2V0KCkpOyB9KTsKK30KKwordm9pZCBXb3Jr
UXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAgaWYgKG1fd29ya1F1ZXVlVGhyZWFk
KSB7CisgICAgICAgIGRldGFjaFRocmVhZChtX3dvcmtRdWV1ZVRocmVhZCk7CisgICAgICAgIG1f
d29ya1F1ZXVlVGhyZWFkID0gMDsKKyAgICB9CisKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9l
dmVudExvb3BMb2NrKTsKKyAgICBpZiAobV9ldmVudExvb3ApIHsKKyAgICAgICAgaWYgKGdfbWFp
bl9sb29wX2lzX3J1bm5pbmcobV9ldmVudExvb3AuZ2V0KCkpKQorICAgICAgICAgICAgZ19tYWlu
X2xvb3BfcXVpdChtX2V2ZW50TG9vcC5nZXQoKSk7CisgICAgICAgIG1fZXZlbnRMb29wLmNsZWFy
KCk7CisgICAgfQorCisgICAgbV9ldmVudENvbnRleHQuY2xlYXIoKTsKK30KKwordm9pZCBXb3Jr
UXVldWU6OnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCBmaWxlRGVzY3JpcHRvciwgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjbG9z
ZUZ1bmN0aW9uKQoreworICAgIEdSZWZQdHI8R1NvY2tldD4gc29ja2V0ID0gYWRvcHRHUmVmKGdf
c29ja2V0X25ld19mcm9tX2ZkKGZpbGVEZXNjcmlwdG9yLCAwKSk7CisgICAgcmVmKCk7CisgICAg
bV9zb2NrZXRFdmVudFNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF0gV29ya1F1ZXVlOjpTb2NrZXRF
dmVudEhhbmRsZXIiLCBbZnVuY3Rpb24sIGNsb3NlRnVuY3Rpb25dKEdJT0NvbmRpdGlvbiBjb25k
aXRpb24pIHsKKyAgICAgICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lPX0hVUCB8fCBjb25kaXRp
b24gJiBHX0lPX0VSUiB8fCBjb25kaXRpb24gJiBHX0lPX05WQUwpIHsKKyAgICAgICAgICAgICAg
ICBjbG9zZUZ1bmN0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEdNYWluTG9vcFNvdXJj
ZTo6U3RvcDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNvbmRpdGlvbiAmIEdf
SU9fSU4pIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbigpOworICAgICAgICAgICAgICAgIHJl
dHVybiBHTWFpbkxvb3BTb3VyY2U6OkNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBHTWFpbkxvb3BT
b3VyY2U6OlN0b3A7CisgICAgICAgIH0sIHNvY2tldC5nZXQoKSwgR19JT19JTiwKKyAgICAgICAg
W3RoaXNdIHsgZGVyZWYoKTsgfSwKKyAgICAgICAgbV9ldmVudENvbnRleHQuZ2V0KCkpOworfQor
Cit2b2lkIFdvcmtRdWV1ZTo6dW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQpCit7Cisg
ICAgbV9zb2NrZXRFdmVudFNvdXJjZS5jYW5jZWwoKTsKK30KKwordm9pZCBXb3JrUXVldWU6OmRp
c3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAgcmVmKCk7Cisg
ICAgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFuZERlbGV0ZU9uRGVzdHJveSgiW1dlYktpdF0g
V29ya1F1ZXVlOjpkaXNwYXRjaCIsIFdURjo6bW92ZShmdW5jdGlvbiksIEdfUFJJT1JJVFlfREVG
QVVMVCwKKyAgICAgICAgW3RoaXNdIHsgZGVyZWYoKTsgfSwgbV9ldmVudENvbnRleHQuZ2V0KCkp
OworfQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3Nl
Y29uZHMgZHVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCit7CisgICAg
cmVmKCk7CisgICAgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFmdGVyRGVsYXlBbmREZWxldGVP
bkRlc3Ryb3koIltXZWJLaXRdIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlciIsIFdURjo6bW92ZShm
dW5jdGlvbiksCisgICAgICAgIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25v
OjptaWxsaXNlY29uZHM+KGR1cmF0aW9uKSwgR19QUklPUklUWV9ERUZBVUxULCBbdGhpc10geyBk
ZXJlZigpOyB9LCBtX2V2ZW50Q29udGV4dC5nZXQoKSk7Cit9CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9ndGsvV29ya1F1ZXVlR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9ndGsv
V29ya1F1ZXVlR3RrLmNwcAkod29ya2luZyBjb3B5KQorKysgU291cmNlL1dURi93dGYvZ3RrL1dv
cmtRdWV1ZUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDkgQEAKICNpbmNsdWRl
ICJXb3JrUXVldWUuaCIKIAogI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdURiB7CiAKIHN0YXRpYyBjb25zdCBzaXplX3Qga1Zpc3VhbFN0dWRp
b1RocmVhZE5hbWVMaW1pdCA9IDMxOwogCkBAIC0xMTMsMyArMTE2LDUgQEAgdm9pZCBXb3JrUXVl
dWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbgogICAgIEdNYWluTG9vcFNvdXJjZTo6c2NoZWR1
bGVBZnRlckRlbGF5QW5kRGVsZXRlT25EZXN0cm95KCJbV2ViS2l0XSBXb3JrUXVldWU6OmRpc3Bh
dGNoQWZ0ZXIiLCBXVEY6Om1vdmUoZnVuY3Rpb24pLAogICAgICAgICBzdGQ6OmNocm9ubzo6ZHVy
YXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPihkdXJhdGlvbiksIEdfUFJJT1JJ
VFlfREVGQVVMVCwgW3RoaXNdIHsgZGVyZWYoKTsgfSwgbV9ldmVudENvbnRleHQuZ2V0KCkpOwog
fQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAxNS0wMi0xOSAg
QW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBXb3JrUXVl
dWUgZnJvbSBXSzIgdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDE3OTcKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24u
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3Mv
RGF0YWJhc2VQcm9jZXNzLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoK
KyAgICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVldWUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFBs
YXRmb3JtL1dvcmtRdWV1ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFBsYXRmb3JtL2VmbC9Xb3Jr
UXVldWVFZmwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFBsYXRmb3JtL2d0ay9Xb3JrUXVldWVH
dGsuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFBsYXRmb3JtL21hYy9Xb3JrUXVldWVNYWMuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFBsYXRm
b3JtR1RLLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9D
dXN0b21Qcm90b2NvbE1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJv
Y2Vzc0xhdW5jaGVyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdl
RGF0YWJhc2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5o
OgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNS0w
Mi0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdW2lP
U10gRml4IE5ldHdvcmtDYWNoZSBidWlsZApJbmRleDogU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDE4MDM0MikKKysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xODEsNyArMTgxLDYgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogCiAgICAgUGxhdGZv
cm0vTG9nZ2luZy5jcHAKICAgICBQbGF0Zm9ybS9Nb2R1bGUuY3BwCi0gICAgUGxhdGZvcm0vV29y
a1F1ZXVlLmNwcAogCiAgICAgUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAogICAgIFBs
YXRmb3JtL0lQQy9Bcmd1bWVudERlY29kZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21h
a2UJKHdvcmtpbmcgY29weSkKQEAgLTExLDcgKzExLDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgUGxhdGZvcm0vZWZsL0Rpc3BhdGNoUXVldWVFZmwuY3BwCiAgICAgUGxhdGZv
cm0vZWZsL0xvZ2dpbmdFZmwuY3BwCiAgICAgUGxhdGZvcm0vZWZsL01vZHVsZUVmbC5jcHAKLSAg
ICBQbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcAogCiAgICAgUGxhdGZvcm0vdW5peC9TaGFy
ZWRNZW1vcnlVbml4LmNwcAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFr
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQkocmV2aXNp
b24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAg
ICBQbGF0Zm9ybS9ndGsvTG9nZ2luZ0d0ay5jcHAKICAgICBQbGF0Zm9ybS9ndGsvTW9kdWxlR3Rr
LmNwcAotICAgIFBsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwCiAKICAgICBQbGF0Zm9ybS91
bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCiAKQEAgLTYyNCw3ICs2MjMsNiBAQCBpZiAoRU5BQkxF
X1BMVUdJTl9QUk9DRVNTX0dUSzIpCiAgICAgbGlzdChBUFBFTkQgUGx1Z2luUHJvY2Vzc0dUSzJf
U09VUkNFUwogICAgICAgICBQbGF0Zm9ybS9Mb2dnaW5nLmNwcAogICAgICAgICBQbGF0Zm9ybS9N
b2R1bGUuY3BwCi0gICAgICAgIFBsYXRmb3JtL1dvcmtRdWV1ZS5jcHAKIAogICAgICAgICBQbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCiAgICAgICAgIFBsYXRmb3JtL0lQQy9Bcmd1bWVu
dERlY29kZXIuY3BwCkBAIC02NDMsNyArNjQxLDYgQEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VT
U19HVEsyKQogCiAgICAgICAgIFBsYXRmb3JtL2d0ay9Mb2dnaW5nR3RrLmNwcAogICAgICAgICBQ
bGF0Zm9ybS9ndGsvTW9kdWxlR3RrLmNwcAotICAgICAgICBQbGF0Zm9ybS9ndGsvV29ya1F1ZXVl
R3RrLmNwcAogCiAgICAgICAgIFBsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKIApJ
bmRleDogU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nl
c3MuaAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0RhdGFiYXNlUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw2IEBACiAjaW5j
bHVkZSAiV2ViT3JpZ2luRGF0YU1hbmFnZXJTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKLWNsYXNzIFdvcmtRdWV1ZTsKLQogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIEFzeW5jVGFzazsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtR
dWV1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVl
LmNwcAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1
ZXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgotCi1SZWY8V29ya1F1ZXVl
PiBXb3JrUXVldWU6OmNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlIHR5cGUsIFFPUyBxb3Mp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29ya1F1ZXVlKG5hbWUsIHR5cGUsIHFvcykp
OwotfQotCi1Xb3JrUXVldWU6OldvcmtRdWV1ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlIHR5cGUs
IFFPUyBxb3MpCi17Ci0gICAgcGxhdGZvcm1Jbml0aWFsaXplKG5hbWUsIHR5cGUsIHFvcyk7Ci19
Ci0KLVdvcmtRdWV1ZTo6fldvcmtRdWV1ZSgpCi17Ci0gICAgcGxhdGZvcm1JbnZhbGlkYXRlKCk7
Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaAkocmV2aXNpb24gMTgwMzQy
KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9y
b2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFdvcmtRdWV1ZV9oCi0jZGVmaW5lIFdvcmtRdWV1ZV9oCi0KLSNpZiBPUyhEQVJXSU4pCi0j
aW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8Y2hyb25v
PgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNs
dWRlIDx3dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwu
aD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQot
I2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQotI2luY2x1ZGUgIlBsYXRmb3JtUHJv
Y2Vzc0lkZW50aWZpZXIuaCIKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dNYWluTG9vcFNvdXJjZS5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dS
ZWZQdHIuaD4KLSNlbGlmIFBMQVRGT1JNKEVGTCkKLSNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVlRWZs
Lmg+Ci0jZW5kaWYKLQotY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlz
cGF0Y2hlciB7Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBUeXBlIHsKLSAgICAgICAgU2VyaWFs
LAotICAgICAgICBDb25jdXJyZW50Ci0gICAgfTsKLSAgICBlbnVtIGNsYXNzIFFPUyB7Ci0gICAg
ICAgIFVzZXJJbnRlcmFjdGl2ZSwKLSAgICAgICAgVXNlckluaXRpYXRlZCwKLSAgICAgICAgRGVm
YXVsdCwKLSAgICAgICAgVXRpbGl0eSwKLSAgICAgICAgQmFja2dyb3VuZAotICAgIH07Ci0gICAg
Ci0gICAgc3RhdGljIFJlZjxXb3JrUXVldWU+IGNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBl
ID0gVHlwZTo6U2VyaWFsLCBRT1MgPSBRT1M6OkRlZmF1bHQpOwotICAgIHZpcnR1YWwgfldvcmtR
dWV1ZSgpOwotCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4pIG92ZXJyaWRlOwotICAgIHZvaWQgZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3Nl
Y29uZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOwotCi0jaWYgT1MoREFSV0lOKQotICAgIGRp
c3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hR
dWV1ZTsgfQotI2VsaWYgUExBVEZPUk0oR1RLKQotICAgIHZvaWQgcmVnaXN0ZXJTb2NrZXRFdmVu
dEhhbmRsZXIoaW50LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+LCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+KTsKLSAgICB2b2lkIHVucmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50KTsKLSNlbGlm
IFBMQVRGT1JNKEVGTCkKLSAgICB2b2lkIHJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCwg
c3RkOjpmdW5jdGlvbjx2b2lkICgpPik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyU29ja2V0RXZlbnRI
YW5kbGVyKGludCk7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXb3JrUXVldWUo
Y29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKTsKLQotICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFs
aXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUyk7Ci0gICAgdm9pZCBwbGF0Zm9ybUludmFs
aWRhdGUoKTsKLQotI2lmIE9TKERBUldJTikKLSAgICBzdGF0aWMgdm9pZCBleGVjdXRlRnVuY3Rp
b24odm9pZCopOwotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlOwotI2VsaWYg
UExBVEZPUk0oR1RLKQotICAgIFRocmVhZElkZW50aWZpZXIgbV93b3JrUXVldWVUaHJlYWQ7Ci0g
ICAgR1JlZlB0cjxHTWFpbkNvbnRleHQ+IG1fZXZlbnRDb250ZXh0OwotICAgIE11dGV4IG1fZXZl
bnRMb29wTG9jazsKLSAgICBHUmVmUHRyPEdNYWluTG9vcD4gbV9ldmVudExvb3A7Ci0gICAgR01h
aW5Mb29wU291cmNlIG1fc29ja2V0RXZlbnRTb3VyY2U7Ci0jZWxpZiBQTEFURk9STShFRkwpCi0g
ICAgUmVmUHRyPERpc3BhdGNoUXVldWU+IG1fZGlzcGF0Y2hRdWV1ZTsKLSNlbmRpZgotfTsKLQot
I2VuZGlmIC8vIFdvcmtRdWV1ZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmgJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICszMywxMiBAQAogI2lu
Y2x1ZGUgIk1lc3NhZ2VFbmNvZGVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAj
aW5jbHVkZSAiUHJvY2Vzc1R5cGUuaCIKLSNpbmNsdWRlICJXb3JrUXVldWUuaCIKICNpbmNsdWRl
IDxhdG9taWM+CiAjaW5jbHVkZSA8Y29uZGl0aW9uX3ZhcmlhYmxlPgogI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCiAjaWYgT1MoREFSV0lOKQpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZs
L1dvcmtRdWV1ZUVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
ZWZsL1dvcmtRdWV1ZUVmbC5jcHAJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY5ICsw
LDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQot
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgotCi0jaW5jbHVk
ZSA8RGlzcGF0Y2hRdWV1ZUVmbC5oPgotI2luY2x1ZGUgPERpc3BhdGNoUXVldWVXb3JrSXRlbUVm
bC5oPgotCi12b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5h
bWUsIFR5cGUsIFFPUykKLXsKLSAgICBtX2Rpc3BhdGNoUXVldWUgPSBEaXNwYXRjaFF1ZXVlOjpj
cmVhdGUobmFtZSk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQot
ewotICAgIFJlZlB0cjxEaXNwYXRjaFF1ZXVlPiBkaXNwYXRjaFF1ZXVlID0gbV9kaXNwYXRjaFF1
ZXVlLnJlbGVhc2UoKTsKLSAgICBkaXNwYXRjaFF1ZXVlLT5zdG9wVGhyZWFkKCk7Ci19Ci0KLXZv
aWQgV29ya1F1ZXVlOjpyZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQgZmlsZURlc2NyaXB0
b3IsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCi17Ci0gICAgaWYgKCFtX2Rpc3Bh
dGNoUXVldWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZGlzcGF0Y2hRdWV1ZS0+c2V0U29j
a2V0RXZlbnRIYW5kbGVyKGZpbGVEZXNjcmlwdG9yLCBXVEY6Om1vdmUoZnVuY3Rpb24pKTsKLX0K
LQotdm9pZCBXb3JrUXVldWU6OnVucmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50IGZpbGVE
ZXNjcmlwdG9yKQotewotICAgIFVOVVNFRF9QQVJBTShmaWxlRGVzY3JpcHRvcik7Ci0KLSAgICBp
ZiAoIW1fZGlzcGF0Y2hRdWV1ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kaXNwYXRjaFF1
ZXVlLT5jbGVhclNvY2tldEV2ZW50SGFuZGxlcigpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6ZGlz
cGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKLXsKLSAgICBpZiAoIW1fZGlz
cGF0Y2hRdWV1ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kaXNwYXRjaFF1ZXVlLT5kaXNw
YXRjaChXb3JrSXRlbTo6Y3JlYXRlKHRoaXMsIFdURjo6bW92ZShmdW5jdGlvbikpKTsKLX0KLQot
dm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzIGR1
cmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQotewotICAgIGlmICghbV9k
aXNwYXRjaFF1ZXVlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Rpc3BhdGNoUXVldWUtPmRp
c3BhdGNoKFRpbWVyV29ya0l0ZW06OmNyZWF0ZSh0aGlzLCBXVEY6Om1vdmUoZnVuY3Rpb24pLCBk
dXJhdGlvbikpOwotfQpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZ3RrL1dvcmtRdWV1
ZUd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZ3RrL1dvcmtR
dWV1ZUd0ay5jcHAJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L2d0ay9Xb3JrUXVldWVHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExNSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogUG9ydGlvbnMgQ29weXJpZ2h0
IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV29ya1F1ZXVlLmgiCi0K
LSNpbmNsdWRlIDxnaW8vZ2lvLmg+Ci0KLXN0YXRpYyBjb25zdCBzaXplX3Qga1Zpc3VhbFN0dWRp
b1RocmVhZE5hbWVMaW1pdCA9IDMxOwotCi12b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFs
aXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUykKLXsKLSAgICBtX2V2ZW50Q29udGV4dCA9
IGFkb3B0R1JlZihnX21haW5fY29udGV4dF9uZXcoKSk7Ci0gICAgQVNTRVJUKG1fZXZlbnRDb250
ZXh0KTsKLSAgICBtX2V2ZW50TG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9uZXcobV9ldmVu
dENvbnRleHQuZ2V0KCksIEZBTFNFKSk7Ci0gICAgQVNTRVJUKG1fZXZlbnRMb29wKTsKLQotICAg
IC8vIFRoaXMgbmFtZSBjYW4gYmUgY29tLmFwcGxlLldlYktpdC5Qcm9jZXNzTGF1bmNoZXIgb3Ig
Y29tLmFwcGxlLkNvcmVJUEMuUmVjZWl2ZVF1ZXVlLgotICAgIC8vIFdlIGFyZSB1c2luZyB0aG9z
ZSBuYW1lcyBmb3IgdGhlIHRocmVhZCBuYW1lLCBidXQgYm90aCBhcmUgbG9uZ2VyIHRoYW4gMzEg
Y2hhcmFjdGVycywKLSAgICAvLyB3aGljaCBpcyB0aGUgbGltaXQgb2YgVmlzdWFsIFN0dWRpbyBm
b3IgdGhyZWFkIG5hbWVzLgotICAgIC8vIFdoZW4gbG9nIGlzIGVuYWJsZWQgY3JlYXRlVGhyZWFk
KCkgd2lsbCBhc3NlcnQgaW5zdGVhZCBvZiB0cnVuY2F0ZSB0aGUgbmFtZSwgc28gd2UgbmVlZAot
ICAgIC8vIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCB1c2UgYSBuYW1lIGxvbmdlciB0aGFuIDMxIGNo
YXJhY3RlcnMuCi0gICAgY29uc3QgY2hhciogdGhyZWFkTmFtZSA9IGdfc3RycnN0cihuYW1lLCAi
LiIpOwotICAgIGlmICh0aHJlYWROYW1lKQotICAgICAgICB0aHJlYWROYW1lKys7Ci0gICAgZWxz
ZQotICAgICAgICB0aHJlYWROYW1lID0gbmFtZTsKLSAgICBpZiAoc3RybGVuKHRocmVhZE5hbWUp
ID4ga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCkKLSAgICAgICAgdGhyZWFkTmFtZSArPSBz
dHJsZW4odGhyZWFkTmFtZSkgLSBrVmlzdWFsU3R1ZGlvVGhyZWFkTmFtZUxpbWl0OwotCi0gICAg
UmVmUHRyPFdvcmtRdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOwotICAgIG1fd29ya1F1ZXVlVGhyZWFk
ID0gY3JlYXRlVGhyZWFkKHRocmVhZE5hbWUsIFtwcm90ZWN0b3JdIHsgZ19tYWluX2xvb3BfcnVu
KHByb3RlY3Rvci0+bV9ldmVudExvb3AuZ2V0KCkpOyB9KTsKLX0KLQotdm9pZCBXb3JrUXVldWU6
OnBsYXRmb3JtSW52YWxpZGF0ZSgpCi17Ci0gICAgaWYgKG1fd29ya1F1ZXVlVGhyZWFkKSB7Ci0g
ICAgICAgIGRldGFjaFRocmVhZChtX3dvcmtRdWV1ZVRocmVhZCk7Ci0gICAgICAgIG1fd29ya1F1
ZXVlVGhyZWFkID0gMDsKLSAgICB9Ci0KLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9ldmVudExv
b3BMb2NrKTsKLSAgICBpZiAobV9ldmVudExvb3ApIHsKLSAgICAgICAgaWYgKGdfbWFpbl9sb29w
X2lzX3J1bm5pbmcobV9ldmVudExvb3AuZ2V0KCkpKQotICAgICAgICAgICAgZ19tYWluX2xvb3Bf
cXVpdChtX2V2ZW50TG9vcC5nZXQoKSk7Ci0gICAgICAgIG1fZXZlbnRMb29wLmNsZWFyKCk7Ci0g
ICAgfQotCi0gICAgbV9ldmVudENvbnRleHQuY2xlYXIoKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6
OnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCBmaWxlRGVzY3JpcHRvciwgc3RkOjpmdW5j
dGlvbjx2b2lkICgpPiBmdW5jdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjbG9zZUZ1bmN0
aW9uKQotewotICAgIEdSZWZQdHI8R1NvY2tldD4gc29ja2V0ID0gYWRvcHRHUmVmKGdfc29ja2V0
X25ld19mcm9tX2ZkKGZpbGVEZXNjcmlwdG9yLCAwKSk7Ci0gICAgcmVmKCk7Ci0gICAgbV9zb2Nr
ZXRFdmVudFNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF0gV29ya1F1ZXVlOjpTb2NrZXRFdmVudEhh
bmRsZXIiLCBbZnVuY3Rpb24sIGNsb3NlRnVuY3Rpb25dKEdJT0NvbmRpdGlvbiBjb25kaXRpb24p
IHsKLSAgICAgICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lPX0hVUCB8fCBjb25kaXRpb24gJiBH
X0lPX0VSUiB8fCBjb25kaXRpb24gJiBHX0lPX05WQUwpIHsKLSAgICAgICAgICAgICAgICBjbG9z
ZUZ1bmN0aW9uKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEdNYWluTG9vcFNvdXJjZTo6U3Rv
cDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGNvbmRpdGlvbiAmIEdfSU9fSU4p
IHsKLSAgICAgICAgICAgICAgICBmdW5jdGlvbigpOwotICAgICAgICAgICAgICAgIHJldHVybiBH
TWFpbkxvb3BTb3VyY2U6OkNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBHTWFpbkxvb3BTb3VyY2U6
OlN0b3A7Ci0gICAgICAgIH0sIHNvY2tldC5nZXQoKSwgR19JT19JTiwKLSAgICAgICAgW3RoaXNd
IHsgZGVyZWYoKTsgfSwKLSAgICAgICAgbV9ldmVudENvbnRleHQuZ2V0KCkpOwotfQotCi12b2lk
IFdvcmtRdWV1ZTo6dW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQpCi17Ci0gICAgbV9z
b2NrZXRFdmVudFNvdXJjZS5jYW5jZWwoKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNo
KHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCi17Ci0gICAgcmVmKCk7Ci0gICAgR01h
aW5Mb29wU291cmNlOjpzY2hlZHVsZUFuZERlbGV0ZU9uRGVzdHJveSgiW1dlYktpdF0gV29ya1F1
ZXVlOjpkaXNwYXRjaCIsIFdURjo6bW92ZShmdW5jdGlvbiksIEdfUFJJT1JJVFlfREVGQVVMVCwK
LSAgICAgICAgW3RoaXNdIHsgZGVyZWYoKTsgfSwgbV9ldmVudENvbnRleHQuZ2V0KCkpOwotfQot
Ci12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMg
ZHVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCi17Ci0gICAgcmVmKCk7
Ci0gICAgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFmdGVyRGVsYXlBbmREZWxldGVPbkRlc3Ry
b3koIltXZWJLaXRdIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlciIsIFdURjo6bW92ZShmdW5jdGlv
biksCi0gICAgICAgIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxs
aXNlY29uZHM+KGR1cmF0aW9uKSwgR19QUklPUklUWV9ERUZBVUxULCBbdGhpc10geyBkZXJlZigp
OyB9LCBtX2V2ZW50Q29udGV4dC5nZXQoKSk7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9tYWMvV29ya1F1ZXVlTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9tYWMvV29ya1F1ZXVlTWFjLmNwcAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vbWFjL1dvcmtRdWV1ZU1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXb3JrUXVldWUuaCIKLQotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4gZnVuY3Rpb24pCi17Ci0gICAgcmVmKCk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9k
aXNwYXRjaFF1ZXVlLCBeewotICAgICAgICBmdW5jdGlvbigpOwotICAgICAgICBkZXJlZigpOwot
ICAgIH0pOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6
bmFub3NlY29uZHMgZHVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCi17
Ci0gICAgcmVmKCk7Ci0gICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9U
SU1FX05PVywgZHVyYXRpb24uY291bnQoKSksIG1fZGlzcGF0Y2hRdWV1ZSwgXnsKLSAgICAgICAg
ZnVuY3Rpb24oKTsKLSAgICAgICAgZGVyZWYoKTsKLSAgICB9KTsKLX0KLQotI2lmIEhBVkUoUU9T
X0NMQVNTRVMpCi1zdGF0aWMgZGlzcGF0Y2hfcW9zX2NsYXNzX3QgZGlzcGF0Y2hRT1NDbGFzcyhX
b3JrUXVldWU6OlFPUyBxb3MpCi17Ci0gICAgc3dpdGNoIChxb3MpIHsKLSAgICBjYXNlIFdvcmtR
dWV1ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmU6Ci0gICAgICAgIHJldHVybiBRT1NfQ0xBU1NfVVNF
Ul9JTlRFUkFDVElWRTsKLSAgICBjYXNlIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW5pdGlhdGVkOgot
ICAgICAgICByZXR1cm4gUU9TX0NMQVNTX1VTRVJfSU5JVElBVEVEOwotICAgIGNhc2UgV29ya1F1
ZXVlOjpRT1M6OkRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBRT1NfQ0xBU1NfREVGQVVMVDsKLSAg
ICBjYXNlIFdvcmtRdWV1ZTo6UU9TOjpVdGlsaXR5OgotICAgICAgICByZXR1cm4gUU9TX0NMQVNT
X1VUSUxJVFk7Ci0gICAgY2FzZSBXb3JrUXVldWU6OlFPUzo6QmFja2dyb3VuZDoKLSAgICAgICAg
cmV0dXJuIFFPU19DTEFTU19CQUNLR1JPVU5EOwotICAgIH0KLX0KLSNlbmRpZgotCi12b2lkIFdv
cmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgdHlwZSwg
UU9TIHFvcykKLXsKLSAgICBkaXNwYXRjaF9xdWV1ZV9hdHRyX3QgYXR0ciA9IHR5cGUgPT0gVHlw
ZTo6Q29uY3VycmVudCA/IERJU1BBVENIX1FVRVVFX0NPTkNVUlJFTlQgOiBESVNQQVRDSF9RVUVV
RV9TRVJJQUw7Ci0jaWYgSEFWRShRT1NfQ0xBU1NFUykKLSAgICBhdHRyID0gZGlzcGF0Y2hfcXVl
dWVfYXR0cl9tYWtlX3dpdGhfcW9zX2NsYXNzKGF0dHIsIGRpc3BhdGNoUU9TQ2xhc3MocW9zKSwg
MCk7Ci0jZW5kaWYKLSAgICBtX2Rpc3BhdGNoUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUo
bmFtZSwgYXR0cik7Ci0gICAgZGlzcGF0Y2hfc2V0X2NvbnRleHQobV9kaXNwYXRjaFF1ZXVlLCB0
aGlzKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCi17Ci0gICAg
ZGlzcGF0Y2hfcmVsZWFzZShtX2Rpc3BhdGNoUXVldWUpOwotfQpJbmRleDogU291cmNlL1dlYktp
dDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaAkocmV2aXNpb24gMTgwMzQyKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCi0jaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisjaW5jbHVk
ZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNo
ZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAkocmV2aXNpb24gMTgwMzQyKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKIAotI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgotI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4gCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgor
I2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0
b3JhZ2VEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlLmgiCiAKICNp
bmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKLSNpbmNsdWRlICJXb3JrUXVl
dWUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NRTGl0ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNhY3Rpb24u
aD4KQEAgLTM1LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VNYXAuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1N1ZGRlblRlcm1pbmF0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlLmgJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDgg
KzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLQotY2xhc3MgV29ya1F1
ZXVlOworI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5j
cHAJKHJldmlzaW9uIDE4MDM0MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdl
L0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEx
ICsyNywxMSBAQAogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgogCiAj
aW5jbHVkZSAiTG9jYWxTdG9yYWdlRGV0YWlscy5oIgotI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRl
U3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaAkocmV2aXNpb24gMTgwMzQyKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFk
U2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC0zOCw4ICszOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogfQogCi1jbGFzcyBXb3JrUXVldWU7Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1
Y3QgTG9jYWxTdG9yYWdlRGV0YWlsczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9T
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAJKHJldmlzaW9uIDE4MDM0MikKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDExIEBACiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlICJXb3JrUXVldWUuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU1h
cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+CiAjaW5jbHVkZSA8bWVtb3J5
PgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5h
cnlTZW1hcGhvcmUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgJKHJldmlz
aW9uIDE4MDM0MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDYgQEAKICNpbmNsdWRlIDx3dGYv
VGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAKLWNsYXNzIFdvcmtRdWV1ZTsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2VjdXJp
dHlPcmlnaW47CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODAzNDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyMjMs
NyArMTIyMyw2IEBACiAJCUI2MzQwM0Y5MTQ5MTBENTcwMDEwNzBCNSAvKiBBUElPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYzNDAzRjgx
NDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgKi87IH07CiAJCUI4NzhCNjE1MTMzNDI4
REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4NzhCNjEzMTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0
aW9uUGFuZWwuaCAqLzsgfTsKIAkJQjg3OEI2MTYxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rp
b25QYW5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEI4NzhCNjE0MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gKi87IH07Ci0J
CUJDMDA5MkY4MTE1ODM3QTMwMEUwQUUyQSAvKiBXb3JrUXVldWVNYWMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMDkyRjYxMTU4MzdBMzAwRTBB
RTJBIC8qIFdvcmtRdWV1ZU1hYy5jcHAgKi87IH07CiAJCUJDMDE3RDA3MTYyNjBGRjQwMDcwNTRG
NSAvKiBXS0RPTURvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzAxN0NGRjE2MjYwRkY0MDA3MDU0RjUgLyogV0tET01Eb2N1bWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMDE3RDA4
MTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTURvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMTdEMDAxNjI2MEZGNDAwNzA1NEY1IC8qIFdL
RE9NRG9jdW1lbnQubW0gKi87IH07CiAJCUJDMDE3RDA5MTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RP
TUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMDE3RDAxMTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTUVsZW1lbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTMyMiw4ICsxMzIxLDYgQEAK
IAkJQkMyNjUyMTcxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjY1MjEzMTE4MjYwODEw
MDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmggKi87IH07CiAJCUJDMkQwMjE3MTJBQzQxQ0Iw
MEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyRDAyMTYxMkFDNDFDQjAwRTczMkEzIC8q
IFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggKi87IH07CiAJCUJDMkQwMjE5MTJBQzQyNkMw
MEU3MzJBMyAvKiBXS1BhZ2VMb2FkVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkQwMjE4MTJBQzQyNkMwMEU3MzJBMyAvKiBXS1BhZ2VMb2Fk
VHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQlCQzJFNkU4RDExNDE5NzE1MDBBNjNCMUUgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkU2RTdEMTE0MTk3MEMwMEE2M0Ix
RSAvKiBXb3JrUXVldWUuY3BwICovOyB9OwotCQlCQzJFNkU4RTExNDE5NzE1MDBBNjNCMUUgLyog
V29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzJFNkU3RTExNDE5NzBDMDBBNjNCMUUgLyogV29ya1F1ZXVlLmggKi87IH07CiAJCUJDMzA2
NUZBMTI1OTM0NEUwMEU3MTI3OCAvKiBDYWNoZU1vZGVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNjVGOTEyNTkzNDRFMDBFNzEyNzggLyogQ2Fj
aGVNb2RlbC5oICovOyB9OwogCQlCQzMwNjZCRTEyNUE0NDIxMDBFNzEyNzggLyogV2ViUHJvY2Vz
c01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzMwNjZCQzEyNUE0NDIxMDBFNzEyNzggLyogV2ViUHJvY2Vzc01lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CiAJCUJDMzA2NkJGMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQcm9j
ZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMzA2NkJEMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWVzc2FnZXMuaCAqLzsg
fTsKQEAgLTM0MDYsNyArMzQwMyw2IEBACiAJCUI2MzQwM0Y4MTQ5MTBENTcwMDEwNzBCNSAvKiBB
UElPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJT2Jq
ZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjg3OEI2MTMxMzM0MjhEQzAw
Njg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb3JyZWN0aW9uUGFuZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjg3
OEI2MTQxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvcnJlY3Rpb25QYW5lbC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMwMDkyRjYxMTU4MzdBMzAwRTBBRTJBIC8qIFdvcmtRdWV1
ZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrUXVldWVN
YWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAxN0NGRjE2MjYwRkY0MDA3
MDU0RjUgLyogV0tET01Eb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS0RPTURvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDE3RDAw
MTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTURvY3VtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV0tET01Eb2N1bWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkMwMTdEMDExNjI2MEZGNDAwNzA1NEY1IC8qIFdLRE9NRWxlbWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0RPTUVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1MTAsOCArMzUwNiw2IEBACiAJCUJDMjY1MjEzMTE4MjYw
ODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERyYXdpbmdBcmVhUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkMyRDAyMTYxMkFDNDFDQjAwRTczMkEzIC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbWVEb2N1bWVudE5hdmlnYXRp
b25UeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkQwMjE4MTJBQzQyNkMw
MEU3MzJBMyAvKiBXS1BhZ2VMb2FkVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tQYWdlTG9hZFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJD
MkU2RTdEMTE0MTk3MEMwMEE2M0IxRSAvKiBXb3JrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQkMyRTZFN0UxMTQxOTcwQzAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkMzMDY1RjkxMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVNb2RlbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzMwNjZCOTEyNUE0MzYzMDBFNzEyNzggLyogV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMwNjZCQzEyNUE0NDIxMDBFNzEyNzgg
LyogV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1NTgsNyArNDU1Miw2IEBACiAJCQkJMUEyNEJGMzkxMjA4OTZB
NjAwRkJCMDU5IC8qIFNoYXJlZE1lbW9yeU1hYy5jcHAgKi8sCiAJCQkJMjk2QkQ4NUIxNTAxOUJD
MzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oICovLAogCQkJCTI5NkJEODVDMTUwMTlCQzMw
MDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi8sCi0JCQkJQkMwMDkyRjYxMTU4MzdBMzAw
RTBBRTJBIC8qIFdvcmtRdWV1ZU1hYy5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC02NjA5LDggKzY2MDIsNiBAQAogCQkJCUMwRTNB
QTQ0MTIwOUUyQkEwMEE0OUQwMSAvKiBNb2R1bGUuaCAqLywKIAkJCQlCQzg3ODBGQjExNjFDMkI4
MDBDQzI3NjggLyogUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oICovLAogCQkJCTFBMjRCRUQz
MTIwODk0RDEwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnkuaCAqLywKLQkJCQlCQzJFNkU3RDExNDE5
NzBDMDBBNjNCMUUgLyogV29ya1F1ZXVlLmNwcCAqLywKLQkJCQlCQzJFNkU3RTExNDE5NzBDMDBB
NjNCMUUgLyogV29ya1F1ZXVlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IFBsYXRmb3JtOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTgyOTcsNyArODI4OCw2IEBACiAJCQkJMjZGOUE4
M0IxOEEzNDY4MTAwQUVCODhBIC8qIFdLV2ViVmlld1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBRDYwRjVFMThFMjBGNEMwMDIwQzAzNCAvKiBXS1dpbmRvd0ZlYXR1cmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUQ2MEY2MDE4RTIwRjc0MDAyMEMwMzQgLyogV0tXaW5kb3dGZWF0dXJl
c0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzJFNkU4RTExNDE5NzE1MDBBNjNCMUUg
LyogV29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JFQ0RFODE2QjY0MTY4MDAwNDdB
MUEgLyogWFBDU2VydmljZUVudHJ5UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtOTk4Myw4ICs5OTczLDYg
QEAKIAkJCQkxQURGNTkxQTE4OTA1MjhFMDA0M0MxNDUgLyogV0tXZWJWaWV3Q29uZmlndXJhdGlv
bi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEQzZEOUM0MThDNDRBNjEwMDQzQkFENCAvKiBXS1dl
YlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBRDYw
RjVEMThFMjBGNEMwMDIwQzAzNCAvKiBXS1dpbmRvd0ZlYXR1cmVzLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJQkMyRTZFOEQxMTQxOTcxNTAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQlCQzAwOTJGODExNTgzN0EzMDBFMEFFMkEgLyogV29ya1F1ZXVlTWFjLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDQkVDREU3MTZCNjQxNjgwMDA0N0ExQSAvKiBYUENTZXJ2aWNl
RW50cnlQb2ludC5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>