<?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>67661</bug_id>
          
          <creation_ts>2011-09-06 11:50:28 -0700</creation_ts>
          <short_desc>Move NPAPI headers in bridge to plugins</short_desc>
          <delta_ts>2011-09-06 14:49:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>462708</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-09-06 11:50:28 -0700</bug_when>
    <thetext>Move NPAPI headers in bridge to plugins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462716</commentid>
    <comment_count>1</comment_count>
      <attachid>106458</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-09-06 12:01:43 -0700</bug_when>
    <thetext>Created attachment 106458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462721</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-06 12:05:34 -0700</bug_when>
    <thetext>Attachment 106458 did not pass style-queue:

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

Last 3072 characters of output:
ces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:57:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:57:  uint64_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/plugins/nptypes.h:63:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:65:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:69:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:75:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:80:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:81:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:81:  uint32_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/plugins/nptypes.h:82:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:82:  uint64_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/plugins/nptypes.h:84:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:88:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:89:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:93:  &quot;inttypes.h&quot; already included at Source/WebCore/plugins/nptypes.h:63  [build/include] [4]
Source/WebCore/plugins/nptypes.h:95:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:97:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:97:  &quot;inttypes.h&quot; already included at Source/WebCore/plugins/nptypes.h:63  [build/include] [4]
Source/WebCore/plugins/nptypes.h:104:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:106:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:108:  &quot;stdbool.h&quot; already included at Source/WebCore/plugins/nptypes.h:94  [build/include] [4]
Source/WebCore/plugins/nptypes.h:118:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 360 in 8 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>462728</commentid>
    <comment_count>3</comment_count>
      <attachid>106458</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-09-06 12:16:08 -0700</bug_when>
    <thetext>Comment on attachment 106458
Patch

Attachment 106458 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9595684</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462748</commentid>
    <comment_count>4</comment_count>
      <attachid>106458</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-09-06 12:37:42 -0700</bug_when>
    <thetext>Comment on attachment 106458
Patch

Attachment 106458 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9554025</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462754</commentid>
    <comment_count>5</comment_count>
      <attachid>106468</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-09-06 12:45:50 -0700</bug_when>
    <thetext>Created attachment 106468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462758</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-06 12:48:14 -0700</bug_when>
    <thetext>Attachment 106468 did not pass style-queue:

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

Last 3072 characters of output:
es at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:57:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:57:  uint64_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/plugins/nptypes.h:63:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:65:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:69:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:75:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:80:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:81:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:81:  uint32_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/plugins/nptypes.h:82:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:82:  uint64_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/plugins/nptypes.h:84:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:88:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:89:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:93:  &quot;inttypes.h&quot; already included at Source/WebCore/plugins/nptypes.h:63  [build/include] [4]
Source/WebCore/plugins/nptypes.h:95:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:97:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:97:  &quot;inttypes.h&quot; already included at Source/WebCore/plugins/nptypes.h:63  [build/include] [4]
Source/WebCore/plugins/nptypes.h:104:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:106:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/plugins/nptypes.h:108:  &quot;stdbool.h&quot; already included at Source/WebCore/plugins/nptypes.h:94  [build/include] [4]
Source/WebCore/plugins/nptypes.h:118:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 360 in 11 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>462759</commentid>
    <comment_count>7</comment_count>
      <attachid>106468</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-06 12:48:45 -0700</bug_when>
    <thetext>Comment on attachment 106468
Patch

Seems fine if we can make it build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462872</commentid>
    <comment_count>8</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-09-06 14:49:12 -0700</bug_when>
    <thetext>Committed r94598: &lt;http://trac.webkit.org/changeset/94598&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106458</attachid>
            <date>2011-09-06 12:01:43 -0700</date>
            <delta_ts>2011-09-06 12:45:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67661-20110906120142.patch</filename>
            <type>text/plain</type>
            <size>118952</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0NTg0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDktMDYgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIE5QQVBJIGhlYWRl
cnMgaW4gYnJpZGdlIHRvIHBsdWdpbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY3NjYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBVcGRhdGUgYnVpbGQgc3lzdGVt
cy4KKworICAgICAgICAqIGJyaWRnZS9ucGFwaS5oOiBSZW1vdmVkLgorICAgICAgICAqIGJyaWRn
ZS9ucHJ1bnRpbWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBicmlkZ2UvbnB0eXBlcy5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsdWdpbnMvbnBhcGkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvYnJpZGdlL25wYXBpLmguCisgICAgICAgICogcGx1Z2lucy9ucHJ1bnRpbWUuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvYnJpZGdlL25wcnVudGltZS5oLgorICAgICAgICAqIHBsdWdp
bnMvbnB0eXBlcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvbnB0eXBlcy5o
LgorCiAyMDExLTA5LTA2ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIGxvYWQoKSBkb2VzIG5vdCByZXNldCB0aGUgcmVzb3VyY2Ugc2VsZWN0aW9uIGFs
Z29yaXRobQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gOTQ1ODMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTQ3NiwxMSArNDc2LDggQEAK
ICAgICAgICAgICAgICdicmlkZ2Uvam5pL0pOSVV0aWxpdHkuaCcsCiAgICAgICAgICAgICAnYnJp
ZGdlL2puaS9qbmlfanNvYmplY3QuaCcsCiAgICAgICAgICAgICAnYnJpZGdlL2pzYy9CcmlkZ2VK
U0MuaCcsCi0gICAgICAgICAgICAnYnJpZGdlL25wYXBpLmgnLAotICAgICAgICAgICAgJ2JyaWRn
ZS9ucHJ1bnRpbWUuaCcsCiAgICAgICAgICAgICAnYnJpZGdlL25wcnVudGltZV9pbXBsLmgnLAog
ICAgICAgICAgICAgJ2JyaWRnZS9ucHJ1bnRpbWVfaW50ZXJuYWwuaCcsCi0gICAgICAgICAgICAn
YnJpZGdlL25wdHlwZXMuaCcsCiAgICAgICAgICAgICAnYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgn
LAogICAgICAgICAgICAgJ2JyaWRnZS9ydW50aW1lX29iamVjdC5oJywKICAgICAgICAgICAgICdi
cmlkZ2UvcnVudGltZV9yb290LmgnLApAQCAtODc3LDcgKzg3NCwxMCBAQAogICAgICAgICAgICAg
J3BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5oJywKICAgICAgICAgICAgICdwbHVn
aW5zL1BsdWdpblN0cmF0ZWd5LmgnLAogICAgICAgICAgICAgJ3BsdWdpbnMvUGx1Z2luVmlld0Jh
c2UuaCcsCisgICAgICAgICAgICAncGx1Z2lucy9ucGFwaS5oJywKICAgICAgICAgICAgICdwbHVn
aW5zL25wZnVuY3Rpb25zLmgnLAorICAgICAgICAgICAgJ3BsdWdpbnMvbnBydW50aW1lLmgnLAor
ICAgICAgICAgICAgJ3BsdWdpbnMvbnB0eXBlcy5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcv
Q29sdW1uSW5mby5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvR2FwUmVjdHMuaCcsCiAgICAg
ICAgICAgICAncmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgnLApJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8J
KHJldmlzaW9uIDk0NTgzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcg
Y29weSkKQEAgLTEzODEsNyArMTM4MSw2IEBAIHY4IHsKICAgICAgICAgYnJpZGdlL2pzYy9Ccmlk
Z2VKU0MuaCBcCiAgICAgICAgIGJyaWRnZS9JZGVudGlmaWVyUmVwLmggXAogICAgICAgICBicmlk
Z2UvTlBfanNvYmplY3QuaCBcCi0gICAgICAgIGJyaWRnZS9ucHJ1bnRpbWUuaCBcCiAgICAgICAg
IGJyaWRnZS9xdC9xdF9jbGFzcy5oIFwKICAgICAgICAgYnJpZGdlL3F0L3F0X2luc3RhbmNlLmgg
XAogICAgICAgICBicmlkZ2UvcXQvcXRfcnVudGltZS5oIFwKQEAgLTEzODksNyArMTM4OCw4IEBA
IHY4IHsKICAgICAgICAgYnJpZGdlL3J1bnRpbWVfYXJyYXkuaCBcCiAgICAgICAgIGJyaWRnZS9y
dW50aW1lX21ldGhvZC5oIFwKICAgICAgICAgYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmggXAotICAg
ICAgICBicmlkZ2UvcnVudGltZV9yb290LmgKKyAgICAgICAgYnJpZGdlL3J1bnRpbWVfcm9vdC5o
IFwKKyAgICAgICAgcGx1Z2lucy9ucHJ1bnRpbWUuaAogfQogCiBIRUFERVJTICs9IFwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lv
biA5NDU4MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC02NjEzNCwxMCArNjYxMzQsMTggQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGx1Z2luc1xucGFwaS5oIgorCQkJ
CT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbHVnaW5zXG5w
ZnVuY3Rpb25zLmgiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsdWdpbnNcbnBydW50aW1lLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsdWdpbnNcUGx1Z2luRGF0YS5jcHAiCiAJCQkJPgogCQkJ
PC9GaWxlPgpAQCAtNjg0MTgsMTggKzY4NDI2LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJ
PEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJyaWRnZVxucGFwaS5oIgotCQkJCT4KLQkJCTwv
RmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxicmlkZ2VcbnBydW50aW1lLmNw
cCIKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cYnJp
ZGdlXG5wcnVudGltZS5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRp
dmVQYXRoPSIuLlxicmlkZ2VcbnBydW50aW1lX2ltcGwuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiA5NDU4MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI5LDcgKzMyOSw2IEBACiAJCTFB
MjI0NjRDMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVTdGF0ZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjI0NjQ2MENDOThEREIwMEMwNTI0
MCAvKiBTUUxpdGVTdGF0ZW1lbnQuaCAqLzsgfTsKIAkJMUEyMjQ2NEQwQ0M5OEREQjAwQzA1MjQw
IC8qIFNRTGl0ZVRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBMjI0NjQ3MENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVUcmFuc2Fj
dGlvbi5jcHAgKi87IH07CiAJCTFBMjI0NjRFMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVUcmFu
c2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUEyMjQ2NDgwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVRyYW5zYWN0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMUEyN0NGOTcxMThBMzU0
QzAwNDFENjMyIC8qIG5wdHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBMjdDRjk2MTE4QTM1NEMwMDQxRDYzMiAvKiBucHR5cGVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUEyQTY4MjMwQjVC
RURFNzAwMDJBNDgwIC8qIFByb2dyZXNzVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTJBNjgyMTBCNUJFREU3MDAwMkE0ODAgLyogUHJv
Z3Jlc3NUcmFja2VyLmNwcCAqLzsgfTsKIAkJMUEyQTY4MjQwQjVCRURFNzAwMDJBNDgwIC8qIFBy
b2dyZXNzVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUEyQTY4MjIwQjVCRURFNzAwMDJBNDgwIC8qIFByb2dyZXNzVHJhY2tlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBMkFBQzU4MERD
MkEzQjEwMEEyMEQ5QSAvKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTJBQUM1NjBEQzJBM0IxMDBBMjBE
OUEgLyogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwICovOyB9OwpAQCAtMzY3LDkgKzM2Niw3
IEBACiAJCTFBNTY5RDA1MEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfb2JqYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNTY5Q0Q1MEQ3RTJCODIwMDdD
Mzk4MyAvKiBqbmlfb2JqYy5tbSAqLzsgfTsKIAkJMUE1NjlEMEEwRDdFMkI4MjAwN0MzOTgzIC8q
IE5QX2pzb2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBNTY5Q0RBMEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29iamVjdC5jcHAgKi87IH07
CiAJCTFBNTY5RDBCMEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29iamVjdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1NjlDREIwRDdFMkI4MjAwN0Mz
OTgzIC8qIE5QX2pzb2JqZWN0LmggKi87IH07Ci0JCTFBNTY5RDBDMEQ3RTJCODIwMDdDMzk4MyAv
KiBucGFwaS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUE1NjlDREMwRDdFMkI4MjAwN0MzOTgzIC8qIG5wYXBpLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE1NjlEMEQwRDdFMkI4MjAwN0MzOTgzIC8q
IG5wcnVudGltZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTU2OUNERDBEN0UyQjgyMDA3QzM5ODMgLyogbnBydW50aW1lLmNwcCAqLzsgfTsKLQkJ
MUE1NjlEMEUwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVudGltZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1NjlDREUwRDdFMkI4MjAwN0MzOTgzIC8q
IG5wcnVudGltZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTFBNTY5RDBGMEQ3RTJCODIwMDdDMzk4MyAvKiBucHJ1bnRpbWVfaW1wbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1NjlDREYwRDdFMkI4
MjAwN0MzOTgzIC8qIG5wcnVudGltZV9pbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE1NjlEMTAwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVu
dGltZV9pbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUE1NjlDRTAwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVudGltZV9pbnRlcm5hbC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBNTY5RDEx
MEQ3RTJCODIwMDdDMzk4MyAvKiBucHJ1bnRpbWVfcHJpdi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1NjlDRTEwRDdFMkI4MjAwN0MzOTgzIC8qIG5w
cnVudGltZV9wcml2LmggKi87IH07CkBAIC00NDAsNiArNDM3LDkgQEAKIAkJMUE4RjZCQzMwREI1
NUNEQzAwMURCNzk0IC8qIERPTUFwcGxpY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkI4MERCNTVDREMwMDFEQjc5NCAvKiBE
T01BcHBsaWNhdGlvbkNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsg
fTsKIAkJMUE4RjZCQzUwREI1NUNEQzAwMURCNzk0IC8qIE1hbmlmZXN0UGFyc2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkJBMERCNTVD
REMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5jcHAgKi87IH07CiAJCTFBOEY2QkM2MERCNTVD
REMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQkIwREI1NUNEQzAwMURCNzk0IC8qIE1hbmlmZXN0
UGFyc2VyLmggKi87IH07CisJCTFBOTI3RkQyMTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5MjdGQ0YxNDE2
QTE1QjAwM0E4M0M4IC8qIG5wYXBpLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMUE5MjdGRDMxNDE2QTE1QjAwM0E4M0M4IC8qIG5wcnVudGltZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5MjdGRDAx
NDE2QTE1QjAwM0E4M0M4IC8qIG5wcnVudGltZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTFBOTI3RkQ0MTQxNkExNUIwMDNBODNDOCAvKiBucHR5
cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTky
N0ZEMTE0MTZBMTVCMDAzQTgzQzggLyogbnB0eXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBOTg5NTZCMEFBNzhGODAwMDVFRjVFRiAvKiBL
VVJMQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUE5ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIEtVUkxDRk5ldC5jcHAgKi87IH07CiAJCTFB
QTg3OTkwMTFDQkU4NDYwMDNDNjY0RiAvKiBQbHVnaW5TdHJhdGVneS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBODc5OEYxMUNCRTg0NjAwM0M2NjRG
IC8qIFBsdWdpblN0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5w
bmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFB
RTc4MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nICovOyB9OwpAQCAtNjgzOCw3
ICs2ODM4LDYgQEAKIAkJMUEyMjQ2NDYwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVN0YXRlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTUUxpdGVTdGF0ZW1lbnQuaDsg
cGF0aCA9IHNxbC9TUUxpdGVTdGF0ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUEyMjQ2NDcwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVRyYW5zYWN0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNRTGl0ZVRyYW5zYWN0aW9uLmNwcDsg
cGF0aCA9IHNxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBMjI0NjQ4MENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVUcmFuc2FjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTUUxpdGVUcmFuc2FjdGlvbi5oOyBwYXRo
ID0gc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFBMjdDRjk2MTE4QTM1NEMwMDQxRDYzMiAvKiBucHR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IG5wdHlwZXMuaDsgcGF0aCA9IGJyaWRnZS9ucHR5cGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkE2ODIxMEI1QkVERTcwMDAyQTQ4MCAvKiBQcm9n
cmVzc1RyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBy
b2dyZXNzVHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkE2ODIy
MEI1QkVERTcwMDAyQTQ4MCAvKiBQcm9ncmVzc1RyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFByb2dyZXNzVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQTJBQUM1NjBEQzJBM0IxMDBBMjBEOUEgLyogQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjg4MSw5ICs2
ODgwLDcgQEAKIAkJMUE1NjlDRDUwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9vYmpjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gam5pX29iamMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNTY5Q0RBMEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29i
amVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOUF9qc29iamVj
dC5jcHA7IHBhdGggPSBicmlkZ2UvTlBfanNvYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTU2OUNEQjBEN0UyQjgyMDA3QzM5ODMgLyogTlBfanNvYmplY3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTlBfanNvYmplY3QuaDsgcGF0aCA9IGJyaWRn
ZS9OUF9qc29iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTU2OUNEQzBE
N0UyQjgyMDA3QzM5ODMgLyogbnBhcGkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gbnBhcGkuaDsgcGF0aCA9IGJyaWRnZS9ucGFwaS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQTU2OUNERDBEN0UyQjgyMDA3QzM5ODMgLyogbnBydW50aW1lLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IG5wcnVudGltZS5jcHA7IHBhdGggPSBicmlk
Z2UvbnBydW50aW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE1NjlDREUw
RDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVudGltZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBucHJ1bnRpbWUuaDsgcGF0aCA9IGJyaWRnZS9ucHJ1bnRpbWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE1NjlDREYwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVudGlt
ZV9pbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IG5wcnVudGltZV9pbXBs
Lmg7IHBhdGggPSBicmlkZ2UvbnBydW50aW1lX2ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUE1NjlDRTAwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVudGltZV9pbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBucHJ1bnRpbWVfaW50ZXJuYWwuaDsg
cGF0aCA9IGJyaWRnZS9ucHJ1bnRpbWVfaW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUE1NjlDRTEwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVudGltZV9wcml2LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IG5wcnVudGltZV9wcml2Lmg7IHBhdGggPSBi
cmlkZ2UvbnBydW50aW1lX3ByaXYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5
NjQsNiArNjk2MSw5IEBACiAJCTFBOEY2QkI5MERCNTVDREMwMDFEQjc5NCAvKiBET01BcHBsaWNh
dGlvbkNhY2hlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01BcHBsaWNhdGlvbkNhY2hl
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE4RjZCQkEwREI1NUNEQzAwMURC
Nzk0IC8qIE1hbmlmZXN0UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1hbmlmZXN0UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUE4RjZCQkIwREI1NUNEQzAwMURCNzk0IC8qIE1hbmlmZXN0UGFyc2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hbmlmZXN0UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFBOTI3RkNGMTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBucGFwaS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQTkyN0ZEMDE0MTZBMTVCMDAzQTgzQzggLyogbnBydW50aW1lLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG5wcnVudGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQTkyN0ZEMTE0MTZBMTVCMDAzQTgzQzggLyogbnB0eXBlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBucHR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBLVVJMQ0ZOZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtVUkxDRk5ldC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQTg3OThGMTFDQkU4NDYwMDNDNjY0RiAvKiBQbHVnaW5T
dHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5TdHJhdGVn
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUIxQUU3ODBDMDUxRkRFMDAxMzlG
NEYgLyogem9vbUluQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IHpvb21JbkN1cnNvci5wbmc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzI4NiwxMyArMTMyODYsMTAgQEAKIAkJCQkxQTcx
RDU3QTBGMzM4MTkwMDBGOUNFNEUgLyogSWRlbnRpZmllclJlcC5oICovLAogCQkJCTFBNTY5Q0RB
MEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29iamVjdC5jcHAgKi8sCiAJCQkJMUE1NjlDREIwRDdF
MkI4MjAwN0MzOTgzIC8qIE5QX2pzb2JqZWN0LmggKi8sCi0JCQkJMUE1NjlDREMwRDdFMkI4MjAw
N0MzOTgzIC8qIG5wYXBpLmggKi8sCiAJCQkJMUE1NjlDREQwRDdFMkI4MjAwN0MzOTgzIC8qIG5w
cnVudGltZS5jcHAgKi8sCi0JCQkJMUE1NjlDREUwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVudGlt
ZS5oICovLAogCQkJCTFBNTY5Q0RGMEQ3RTJCODIwMDdDMzk4MyAvKiBucHJ1bnRpbWVfaW1wbC5o
ICovLAogCQkJCTFBNTY5Q0UwMEQ3RTJCODIwMDdDMzk4MyAvKiBucHJ1bnRpbWVfaW50ZXJuYWwu
aCAqLywKIAkJCQkxQTU2OUNFMTBEN0UyQjgyMDA3QzM5ODMgLyogbnBydW50aW1lX3ByaXYuaCAq
LywKLQkJCQkxQTI3Q0Y5NjExOEEzNTRDMDA0MUQ2MzIgLyogbnB0eXBlcy5oICovLAogCQkJCTFB
NTY5Q0VGMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmNwcCAqLywKIAkJCQkxQTU2
OUNGMDBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9hcnJheS5oICovLAogCQkJCTFBNTY5Q0Yx
MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX21ldGhvZC5jcHAgKi8sCkBAIC0xNDM2OSw3ICsx
NDM2NiwxMCBAQAogCQkJCUE5QzZFNEVEMEQ3NDVFMzgwMDY0NDJFOSAvKiBET01QbHVnaW5BcnJh
eS5jcHAgKi8sCiAJCQkJQTlDNkU0RUUwRDc0NUUzODAwNjQ0MkU5IC8qIERPTVBsdWdpbkFycmF5
LmggKi8sCiAJCQkJQTlDNkU2NjEwRDc0NjcxRTAwNjQ0MkU5IC8qIERPTVBsdWdpbkFycmF5Lmlk
bCAqLywKKwkJCQkxQTkyN0ZDRjE0MTZBMTVCMDAzQTgzQzggLyogbnBhcGkuaCAqLywKIAkJCQkx
QTIxOUIzQTBEQ0E4N0FCMDA0MEUzQTAgLyogbnBmdW5jdGlvbnMuaCAqLywKKwkJCQkxQTkyN0ZE
MDE0MTZBMTVCMDAzQTgzQzggLyogbnBydW50aW1lLmggKi8sCisJCQkJMUE5MjdGRDExNDE2QTE1
QjAwM0E4M0M4IC8qIG5wdHlwZXMuaCAqLywKIAkJCQlBOUM2RTRGMTBENzQ1RTQ4MDA2NDQyRTkg
LyogUGx1Z2luRGF0YS5jcHAgKi8sCiAJCQkJQTlDNkU0RjIwRDc0NUU0ODAwNjQ0MkU5IC8qIFBs
dWdpbkRhdGEuaCAqLywKIAkJCQkxQURBMTQwRTBFMUFFNUQ5MDAwMjNFRTUgLyogUGx1Z2luTWFp
blRocmVhZFNjaGVkdWxlci5jcHAgKi8sCkBAIC0yMjUzNiwxMyArMjI1MzYsMTAgQEAKIAkJCQkz
MzUwM0M5QTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uUHJlc2VudGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5OEVCMUY5NTEzMTNGRTA1MDBEMEUxRUEgLyogTm90SW1wbGVtZW50ZWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDBCMEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29i
amVjdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUE1NjlEMEMwRDdFMkI4MjAwN0MzOTgzIC8qIG5w
YXBpLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTIxOUIzQjBEQ0E4N0FCMDA0MEUzQTAgLyogbnBm
dW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBNTY5RDBFMEQ3RTJCODIwMDdDMzk4MyAv
KiBucHJ1bnRpbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDBGMEQ3RTJCODIwMDdDMzk4
MyAvKiBucHJ1bnRpbWVfaW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMTAwRDdFMkI4
MjAwN0MzOTgzIC8qIG5wcnVudGltZV9pbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1
NjlEMTEwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVudGltZV9wcml2LmggaW4gSGVhZGVycyAqLywK
LQkJCQkxQTI3Q0Y5NzExOEEzNTRDMDA0MUQ2MzIgLyogbnB0eXBlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRjU1QjNEQzgxMjUxRjEyRDAwM0VGMjY5IC8qIE51bWJlcklucHV0VHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUE1NjlEMTIwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamNfY2xhc3MuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBNTY5RDE0MEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjX2hlYWRl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzQ4NSw2ICsyMzQ4Miw5IEBACiAJCQkJQkMyNzRCMkYx
NDBFQkVCMjAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTc4QUQ2NzUxNDEzMEE4RDAwQzdDQUUzIC8qIEhUTUxTcGFuRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTc1MkQzOEUxNDEzMTA0QjAwMzMwNUJEIC8qIEpTSFRNTFNwYW5F
bGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQTkyN0ZEMjE0MTZBMTVCMDAzQTgzQzggLyog
bnBhcGkuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBOTI3RkQzMTQxNkExNUIwMDNBODNDOCAvKiBu
cHJ1bnRpbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBOTI3RkQ0MTQxNkExNUIwMDNBODNDOCAv
KiBucHR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9u
cGFwaS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ucGFwaS5oCShyZXZp
c2lvbiA5NDU4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ucGFwaS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDkwNSArMCwwIEBACi0vKiAtKi0gTW9kZTogQzsgdGFiLXdpZHRoOiA0OyBpbmRl
bnQtdGFicy1tb2RlOiBuaWw7IGMtYmFzaWMtb2Zmc2V0OiAyIC0qLSAqLwotLyogKioqKiogQkVH
SU4gTElDRU5TRSBCTE9DSyAqKioqKgotICogVmVyc2lvbjogTVBMIDEuMS9HUEwgMi4wL0xHUEwg
Mi4xCi0gKgotICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUg
TW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uCi0gKiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgKLSAqIHRo
ZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqIGh0
dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLwotICoKLSAqIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsCi0gKiBX
SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBT
ZWUgdGhlIExpY2Vuc2UKLSAqIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHJp
Z2h0cyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlCi0gKiBMaWNlbnNlLgotICoKLSAqIFRoZSBP
cmlnaW5hbCBDb2RlIGlzIG1vemlsbGEub3JnIGNvZGUuCi0gKgotICogVGhlIEluaXRpYWwgRGV2
ZWxvcGVyIG9mIHRoZSBPcmlnaW5hbCBDb2RlIGlzCi0gKiBOZXRzY2FwZSBDb21tdW5pY2F0aW9u
cyBDb3Jwb3JhdGlvbi4KLSAqIFBvcnRpb25zIGNyZWF0ZWQgYnkgdGhlIEluaXRpYWwgRGV2ZWxv
cGVyIGFyZSBDb3B5cmlnaHQgKEMpIDE5OTgKLSAqIHRoZSBJbml0aWFsIERldmVsb3Blci4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBDb250cmlidXRvcihzKToKLSAqCi0gKiBBbHRlcm5h
dGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0
ZXJtcyBvZgotICogZWl0aGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9u
IDIgb3IgbGF0ZXIgKHRoZSAiR1BMIiksIG9yCi0gKiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4xIG9yIGxhdGVyICh0aGUgIkxHUEwiKSwKLSAqIGluIHdo
aWNoIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIEdQTCBvciB0aGUgTEdQTCBhcmUgYXBwbGlj
YWJsZSBpbnN0ZWFkCi0gKiBvZiB0aG9zZSBhYm92ZS4gSWYgeW91IHdpc2ggdG8gYWxsb3cgdXNl
IG9mIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgb25seQotICogdW5kZXIgdGhlIHRlcm1zIG9m
IGVpdGhlciB0aGUgR1BMIG9yIHRoZSBMR1BMLCBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0bwot
ICogdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBN
UEwsIGluZGljYXRlIHlvdXIKLSAqIGRlY2lzaW9uIGJ5IGRlbGV0aW5nIHRoZSBwcm92aXNpb25z
IGFib3ZlIGFuZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgbm90aWNlCi0gKiBhbmQgb3RoZXIgcHJv
dmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BMIG9yIHRoZSBMR1BMLiBJZiB5b3UgZG8gbm90IGRl
bGV0ZQotICogdGhlIHByb3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91ciB2
ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlcgotICogdGhlIHRlcm1zIG9mIGFueSBvbmUgb2YgdGhl
IE1QTCwgdGhlIEdQTCBvciB0aGUgTEdQTC4KLSAqCi0gKiAqKioqKiBFTkQgTElDRU5TRSBCTE9D
SyAqKioqKiAqLwotCi0jaWZuZGVmIG5wYXBpX2hfCi0jZGVmaW5lIG5wYXBpX2hfCi0KLSNpZiBk
ZWZpbmVkKF9fT1MyX18pCi0jcHJhZ21hIHBhY2soMSkKLSNlbmRpZgotCi0jaW5jbHVkZSAibnB0
eXBlcy5oIgotCi0jaWYgZGVmaW5lZChfX09TMl9fKSB8fCBkZWZpbmVkKE9TMikKLSNpZm5kZWYg
WFBfT1MyCi0jZGVmaW5lIFhQX09TMiAxCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZkZWYgSU5DTFVE
RV9KQVZBCi0jaW5jbHVkZSAianJpLmgiICAgICAgICAgICAgICAgIC8qIEphdmEgUnVudGltZSBJ
bnRlcmZhY2UgKi8KLSNlbHNlCi0jZGVmaW5lIGpyZWYgICAgdm9pZCAqCi0jZGVmaW5lIEpSSUVu
diAgdm9pZAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19TWU1C
SUFOMzJfXykKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaWZuZGVmIFhQX1dJTgotI2RlZmluZSBY
UF9XSU4gMQotI2VuZGlmCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykKLSNp
Zm5kZWYgWFBfU1lNQklBTgotI2RlZmluZSBYUF9TWU1CSUFOIDEKLSNlbmRpZgotI2VuZGlmCi0K
LSNpZiBkZWZpbmVkKF9fQVBQTEVfQ0NfXykgJiYgIWRlZmluZWQoWFBfVU5JWCkKLSNpZm5kZWYg
WFBfTUFDT1NYCi0jZGVmaW5lIFhQX01BQ09TWCAxCi0jZW5kaWYKLSNlbmRpZgotCi0jaWYgZGVm
aW5lZChYUF9NQUNPU1gpICYmIGRlZmluZWQoX19MUDY0X18pCi0jZGVmaW5lIE5QX05PX1FVSUNL
RFJBVwotI2RlZmluZSBOUF9OT19DQVJCT04KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChYUF9NQUNP
U1gpCi0jaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+
Ci0jaW5jbHVkZSA8T3BlbkdML09wZW5HTC5oPgotI2lmbmRlZiBOUF9OT19DQVJCT04KLSNpbmNs
dWRlIDxDYXJib24vQ2FyYm9uLmg+Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChYUF9V
TklYKQotI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0jaW5jbHVkZSA8WDExL1h1dGlsLmg+Ci0jaW5j
bHVkZSA8c3RkaW8uaD4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChYUF9TWU1CSUFOKQotI2luY2x1
ZGUgPFFFdmVudD4KLSNpbmNsdWRlIDxRUmVnaW9uPgotI2VuZGlmCi0KLS8qLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgIFBsdWdpbiBWZXJzaW9uIENvbnN0YW50cyAg
ICAgICAgICAgICAgICAgICAgICAqLwotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLQotI2RlZmluZSBOUF9W
RVJTSU9OX01BSk9SIDAKLSNkZWZpbmUgTlBfVkVSU0lPTl9NSU5PUiAyNAotCi0KLS8qIFRoZSBP
Uy8yIHZlcnNpb24gb2YgTmV0c2NhcGUgdXNlcyBSQ19EQVRBIHRvIGRlZmluZSB0aGUKLSAgIG1p
bWUgdHlwZXMsIGZpbGUgZXh0ZW5zaW9ucywgZXRjIHRoYXQgYXJlIHJlcXVpcmVkLgotICAgVXNl
IGEgdmVydGljYWwgYmFyIHRvIHNlcGFyYXRlIHR5cGVzLCBlbmQgdHlwZXMgd2l0aCBcMC4KLSAg
IEZpbGVWZXJzaW9uIGFuZCBQcm9kdWN0VmVyc2lvbiBhcmUgMzJiaXQgaW50cywgYWxsIG90aGVy
Ci0gICBlbnRyaWVzIGFyZSBzdHJpbmdzIHRoYXQgTVVTVCBiZSB0ZXJtaW5hdGVkIHdpdGggYSBc
MC4KLQotQU4gRVhBTVBMRToKLQotUkNEQVRBIE5QX0lORk9fUHJvZHVjdFZlcnNpb24geyAxLDAs
MCwxLH0KLQotUkNEQVRBIE5QX0lORk9fTUlNRVR5cGUgICAgeyAidmlkZW8veC12aWRlb3wiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmlkZW8veC1mbGlja1wwIiB9Ci1SQ0RBVEEg
TlBfSU5GT19GaWxlRXh0ZW50cyB7ICJhdml8IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImZsY1wwIiB9Ci1SQ0RBVEEgTlBfSU5GT19GaWxlT3Blbk5hbWV7ICJNTU9TMiB2aWRlbyBw
bGF5ZXIoKi5hdmkpfCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNTU9TMiBGbGMv
RmxpIHBsYXllcigqLmZsYylcMCIgfQotCi1SQ0RBVEEgTlBfSU5GT19GaWxlVmVyc2lvbiAgICAg
ICB7IDEsMCwwLDEgfQotUkNEQVRBIE5QX0lORk9fQ29tcGFueU5hbWUgICAgICAgeyAiTmV0c2Nh
cGUgQ29tbXVuaWNhdGlvbnNcMCIgfQotUkNEQVRBIE5QX0lORk9fRmlsZURlc2NyaXB0aW9uICAg
eyAiTlBBVkkzMiBFeHRlbnNpb24gRExMXDAiCi1SQ0RBVEEgTlBfSU5GT19JbnRlcm5hbE5hbWUg
ICAgICB7ICJOUEFWSTMyXDAiICkKLVJDREFUQSBOUF9JTkZPX0xlZ2FsQ29weXJpZ2h0ICAgIHsg
IkNvcHlyaWdodCBOZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBcMjUxIDE5OTZcMCIKLVJDREFUQSBO
UF9JTkZPX09yaWdpbmFsRmlsZW5hbWUgIHsgIk5WQVBJMzIuRExMIiB9Ci1SQ0RBVEEgTlBfSU5G
T19Qcm9kdWN0TmFtZSAgICAgICB7ICJOUEFWSTMyIER5bmFtaWMgTGluayBMaWJyYXJ5XDAiIH0K
LSovCi0vKiBSQ19EQVRBIHR5cGVzIGZvciB2ZXJzaW9uIGluZm8gLSByZXF1aXJlZCAqLwotI2Rl
ZmluZSBOUF9JTkZPX1Byb2R1Y3RWZXJzaW9uICAgICAgMQotI2RlZmluZSBOUF9JTkZPX01JTUVU
eXBlICAgICAgICAgICAgMgotI2RlZmluZSBOUF9JTkZPX0ZpbGVPcGVuTmFtZSAgICAgICAgMwot
I2RlZmluZSBOUF9JTkZPX0ZpbGVFeHRlbnRzICAgICAgICAgNAotLyogUkNfREFUQSB0eXBlcyBm
b3IgdmVyc2lvbiBpbmZvIC0gdXNlZCBpZiBmb3VuZCAqLwotI2RlZmluZSBOUF9JTkZPX0ZpbGVE
ZXNjcmlwdGlvbiAgICAgNQotI2RlZmluZSBOUF9JTkZPX1Byb2R1Y3ROYW1lICAgICAgICAgNgot
LyogUkNfREFUQSB0eXBlcyBmb3IgdmVyc2lvbiBpbmZvIC0gb3B0aW9uYWwgKi8KLSNkZWZpbmUg
TlBfSU5GT19Db21wYW55TmFtZSAgICAgICAgIDcKLSNkZWZpbmUgTlBfSU5GT19GaWxlVmVyc2lv
biAgICAgICAgIDgKLSNkZWZpbmUgTlBfSU5GT19JbnRlcm5hbE5hbWUgICAgICAgIDkKLSNkZWZp
bmUgTlBfSU5GT19MZWdhbENvcHlyaWdodCAgICAgIDEwCi0jZGVmaW5lIE5QX0lORk9fT3JpZ2lu
YWxGaWxlbmFtZSAgICAxMQotCi0jaWZuZGVmIFJDX0lOVk9LRUQKLQotLyotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ki8KLS8qICAgICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uIG9mIEJhc2ljIFR5cGVzICAg
ICAgICAgICAgICAgICAgICAgICovCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0jaWZuZGVmIEZBTFNF
Ci0jZGVmaW5lIEZBTFNFICgwKQotI2VuZGlmCi0jaWZuZGVmIFRSVUUKLSNkZWZpbmUgVFJVRSAo
MSkKLSNlbmRpZgotI2lmbmRlZiBOVUxMCi0jZGVmaW5lIE5VTEwgKDBMKQotI2VuZGlmCi0KLXR5
cGVkZWYgdW5zaWduZWQgY2hhciBOUEJvb2w7Ci10eXBlZGVmIGludDE2X3QgICAgICAgTlBFcnJv
cjsKLXR5cGVkZWYgaW50MTZfdCAgICAgICBOUFJlYXNvbjsKLXR5cGVkZWYgY2hhciogICAgICAg
ICBOUE1JTUVUeXBlOwotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyogICAgICAgICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZXMgYW5kIGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAgICAgKi8KLS8q
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSovCi0KLSNpZiAhZGVmaW5lZChfX0xQNjRfXykKLSNpZiBkZWZpbmVkKFhQ
X01BQ09TWCkKLSNwcmFnbWEgb3B0aW9ucyBhbGlnbj1tYWM2OGsKLSNlbmRpZgotI2VuZGlmIC8q
IF9fTFA2NF9fICovCi0KLS8qCi0gKiAgTlBQIGlzIGEgcGx1Zy1pbidzIG9wYXF1ZSBpbnN0YW5j
ZSBoYW5kbGUKLSAqLwotdHlwZWRlZiBzdHJ1Y3QgX05QUAotewotICB2b2lkKiBwZGF0YTsgICAg
ICAvKiBwbHVnLWluIHByaXZhdGUgZGF0YSAqLwotICB2b2lkKiBuZGF0YTsgICAgICAvKiBuZXRz
Y2FwZSBwcml2YXRlIGRhdGEgKi8KLX0gTlBQX3Q7Ci0KLXR5cGVkZWYgTlBQX3QqICBOUFA7Ci0K
LXR5cGVkZWYgc3RydWN0IF9OUFN0cmVhbQotewotICB2b2lkKiAgICBwZGF0YTsgLyogcGx1Zy1p
biBwcml2YXRlIGRhdGEgKi8KLSAgdm9pZCogICAgbmRhdGE7IC8qIG5ldHNjYXBlIHByaXZhdGUg
ZGF0YSAqLwotICBjb25zdCAgICBjaGFyKiB1cmw7Ci0gIHVpbnQzMl90IGVuZDsKLSAgdWludDMy
X3QgbGFzdG1vZGlmaWVkOwotICB2b2lkKiAgICBub3RpZnlEYXRhOwotICBjb25zdCAgICBjaGFy
KiBoZWFkZXJzOyAvKiBSZXNwb25zZSBoZWFkZXJzIGZyb20gaG9zdC4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICogRXhpc3RzIG9ubHkgZm9yID49IE5QVkVSU19IQVNfUkVTUE9OU0VfSEVB
REVSUy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICogVXNlZCBmb3IgSFRUUCBvbmx5OyBO
VUxMIGZvciBub24tSFRUUC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICogQXZhaWxhYmxl
IGZyb20gTlBQX05ld1N0cmVhbSBvbndhcmRzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
KiBQbHVnaW4gc2hvdWxkIGNvcHkgdGhpcyBkYXRhIGJlZm9yZSBzdG9yaW5nIGl0LgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKiBJbmNsdWRlcyBIVFRQIHN0YXR1cyBsaW5lIGFuZCBhbGwg
aGVhZGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICogcHJlZmVyYWJseSB2ZXJiYXRp
bSBhcyByZWNlaXZlZCBmcm9tIHNlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICog
aGVhZGVycyBmb3JtYXR0ZWQgYXMgaW4gSFRUUCAoIkhlYWRlcjogVmFsdWUiKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICogYW5kIG5ld2xpbmVzIChcbiwgTk9UIFxyXG4pIHNlcGFyYXRp
bmcgbGluZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAqIFRlcm1pbmF0ZWQgYnkgXG5c
MCAoTk9UIFxuXG5cMCkuICovCi19IE5QU3RyZWFtOwotCi10eXBlZGVmIHN0cnVjdCBfTlBCeXRl
UmFuZ2UKLXsKLSAgaW50MzJfdCAgb2Zmc2V0OyAvKiBuZWdhdGl2ZSBvZmZzZXQgbWVhbnMgZnJv
bSB0aGUgZW5kICovCi0gIHVpbnQzMl90IGxlbmd0aDsKLSAgc3RydWN0IF9OUEJ5dGVSYW5nZSog
bmV4dDsKLX0gTlBCeXRlUmFuZ2U7Ci0KLXR5cGVkZWYgc3RydWN0IF9OUFNhdmVkRGF0YQotewot
ICBpbnQzMl90IGxlbjsKLSAgdm9pZCogICBidWY7Ci19IE5QU2F2ZWREYXRhOwotCi10eXBlZGVm
IHN0cnVjdCBfTlBSZWN0Ci17Ci0gIHVpbnQxNl90IHRvcDsKLSAgdWludDE2X3QgbGVmdDsKLSAg
dWludDE2X3QgYm90dG9tOwotICB1aW50MTZfdCByaWdodDsKLX0gTlBSZWN0OwotCi10eXBlZGVm
IHN0cnVjdCBfTlBTaXplCi17Ci0gIGludDMyX3Qgd2lkdGg7Ci0gIGludDMyX3QgaGVpZ2h0Owot
fSBOUFNpemU7Ci0KLXR5cGVkZWYgZW51bSB7Ci0gIE5QRm9jdXNOZXh0ID0gMCwKLSAgTlBGb2N1
c1ByZXZpb3VzID0gMQotfSBOUEZvY3VzRGlyZWN0aW9uOwotCi0vKiBSZXR1cm4gdmFsdWVzIGZv
ciBOUFBfSGFuZGxlRXZlbnQgKi8KLSNkZWZpbmUga05QRXZlbnROb3RIYW5kbGVkIDAKLSNkZWZp
bmUga05QRXZlbnRIYW5kbGVkIDEKLS8qIEV4YWN0IG1lYW5pbmcgbXVzdCBiZSBzcGVjJ2QgaW4g
ZXZlbnQgbW9kZWwuICovCi0jZGVmaW5lIGtOUEV2ZW50U3RhcnRJTUUgMgotCi0jaWYgZGVmaW5l
ZChYUF9VTklYKQotLyoKLSAqIFVuaXggc3BlY2lmaWMgc3RydWN0dXJlcyBhbmQgZGVmaW5pdGlv
bnMKLSAqLwotCi0vKgotICogQ2FsbGJhY2sgU3RydWN0dXJlcy4KLSAqCi0gKiBUaGVzZSBhcmUg
dXNlZCB0byBwYXNzIGFkZGl0aW9uYWwgcGxhdGZvcm0gc3BlY2lmaWMgaW5mb3JtYXRpb24uCi0g
Ki8KLWVudW0gewotICBOUF9TRVRXSU5ET1cgPSAxLAotICBOUF9QUklOVAotfTsKLQotdHlwZWRl
ZiBzdHJ1Y3QKLXsKLSAgaW50MzJfdCB0eXBlOwotfSBOUEFueUNhbGxiYWNrU3RydWN0OwotCi10
eXBlZGVmIHN0cnVjdAotewotICBpbnQzMl90ICAgICAgdHlwZTsKLSAgRGlzcGxheSogICAgIGRp
c3BsYXk7Ci0gIFZpc3VhbCogICAgICB2aXN1YWw7Ci0gIENvbG9ybWFwICAgICBjb2xvcm1hcDsK
LSAgdW5zaWduZWQgaW50IGRlcHRoOwotfSBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0OwotCi10
eXBlZGVmIHN0cnVjdAotewotICBpbnQzMl90IHR5cGU7Ci0gIEZJTEUqIGZwOwotfSBOUFByaW50
Q2FsbGJhY2tTdHJ1Y3Q7Ci0KLSNlbmRpZiAvKiBYUF9VTklYICovCi0KLSNpZiBkZWZpbmVkKFhQ
X01BQ09TWCkKLXR5cGVkZWYgZW51bSB7Ci0jaWZuZGVmIE5QX05PX1FVSUNLRFJBVwotICBOUERy
YXdpbmdNb2RlbFF1aWNrRHJhdyA9IDAsCi0jZW5kaWYKLSAgTlBEcmF3aW5nTW9kZWxDb3JlR3Jh
cGhpY3MgPSAxLAotICBOUERyYXdpbmdNb2RlbE9wZW5HTCA9IDIsCi0gIE5QRHJhd2luZ01vZGVs
Q29yZUFuaW1hdGlvbiA9IDMKLX0gTlBEcmF3aW5nTW9kZWw7Ci0KLXR5cGVkZWYgZW51bSB7Ci0j
aWZuZGVmIE5QX05PX0NBUkJPTgotICBOUEV2ZW50TW9kZWxDYXJib24gPSAwLAotI2VuZGlmCi0g
IE5QRXZlbnRNb2RlbENvY29hID0gMQotfSBOUEV2ZW50TW9kZWw7Ci0jZW5kaWYKLQotLyoKLSAq
ICAgVGhlIGZvbGxvd2luZyBtYXNrcyBhcmUgYXBwbGllZCBvbiBjZXJ0YWluIHBsYXRmb3JtcyB0
byBOUE5WIGFuZAotICogICBOUFBWIHNlbGVjdG9ycyB0aGF0IHBhc3MgYXJvdW5kIHBvaW50ZXJz
IHRvIENPTSBpbnRlcmZhY2VzLiBOZXdlcgotICogICBjb21waWxlcnMgb24gc29tZSBwbGF0Zm9y
bXMgbWF5IGdlbmVyYXRlIHZ0YWJsZXMgdGhhdCBhcmUgbm90Ci0gKiAgIGNvbXBhdGlibGUgd2l0
aCBvbGRlciBjb21waWxlcnMuIFRvIHByZXZlbnQgb2xkZXIgcGx1Z2lucyBmcm9tCi0gKiAgIG5v
dCB1bmRlcnN0YW5kaW5nIGEgbmV3IGJyb3dzZXIncyBBQkksIHRoZXNlIG1hc2tzIGNoYW5nZSB0
aGUKLSAqICAgdmFsdWVzIG9mIHRob3NlIHNlbGVjdG9ycyBvbiB0aG9zZSBwbGF0Zm9ybXMuIFRv
IHJlbWFpbiBiYWNrd2FyZHMKLSAqICAgY29tcGF0aWJsZSB3aXRoIGRpZmZlcmVudCB2ZXJzaW9u
cyBvZiB0aGUgYnJvd3NlciwgcGx1Z2lucyBjYW4KLSAqICAgdXNlIHRoZXNlIG1hc2tzIHRvIGR5
bmFtaWNhbGx5IGRldGVybWluZSBhbmQgdXNlIHRoZSBjb3JyZWN0IEMrKwotICogICBBQkkgdGhh
dCB0aGUgYnJvd3NlciBpcyBleHBlY3RpbmcuIFRoaXMgZG9lcyBub3QgYXBwbHkgdG8gV2luZG93
cwotICogICBhcyBNaWNyb3NvZnQncyBDT00gQUJJIHdpbGwgbGlrZWx5IG5vdCBjaGFuZ2UuCi0g
Ki8KLQotI2RlZmluZSBOUF9BQklfR0NDM19NQVNLICAweDEwMDAwMDAwCi0vKgotICogICBnY2Mg
My54IGdlbmVyYXRlZCB2dGFibGVzIG9uIFVOSVggYW5kIE9TWCBhcmUgaW5jb21wYXRpYmxlIHdp
dGgKLSAqICAgcHJldmlvdXMgY29tcGlsZXJzLgotICovCi0jaWYgKGRlZmluZWQoWFBfVU5JWCkg
JiYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDMpKQotI2RlZmluZSBfTlBfQUJJ
X01JWElOX0ZPUl9HQ0MzIE5QX0FCSV9HQ0MzX01BU0sKLSNlbHNlCi0jZGVmaW5lIF9OUF9BQklf
TUlYSU5fRk9SX0dDQzMgMAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKFhQX01BQ09TWCkKLSNkZWZp
bmUgTlBfQUJJX01BQ0hPX01BU0sgMHgwMTAwMDAwMAotI2RlZmluZSBfTlBfQUJJX01JWElOX0ZP
Ul9NQUNITyBOUF9BQklfTUFDSE9fTUFTSwotI2Vsc2UKLSNkZWZpbmUgX05QX0FCSV9NSVhJTl9G
T1JfTUFDSE8gMAotI2VuZGlmCi0KLSNkZWZpbmUgTlBfQUJJX01BU0sgKF9OUF9BQklfTUlYSU5f
Rk9SX0dDQzMgfCBfTlBfQUJJX01JWElOX0ZPUl9NQUNITykKLQotLyoKLSAqIExpc3Qgb2YgdmFy
aWFibGUgbmFtZXMgZm9yIHdoaWNoIE5QUF9HZXRWYWx1ZSBzaGFsbCBiZSBpbXBsZW1lbnRlZAot
ICovCi10eXBlZGVmIGVudW0gewotICBOUFBWcGx1Z2luTmFtZVN0cmluZyA9IDEsCi0gIE5QUFZw
bHVnaW5EZXNjcmlwdGlvblN0cmluZywKLSAgTlBQVnBsdWdpbldpbmRvd0Jvb2wsCi0gIE5QUFZw
bHVnaW5UcmFuc3BhcmVudEJvb2wsCi0gIE5QUFZqYXZhQ2xhc3MsICAgICAgICAgICAgICAgIC8q
IE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KLSAgTlBQVnBsdWdpbldpbmRvd1NpemUsICAg
ICAgICAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotICBOUFBWcGx1Z2luVGltZXJJ
bnRlcnZhbCwgICAgICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCi0gIE5QUFZwbHVn
aW5TY3JpcHRhYmxlSW5zdGFuY2UgPSAoMTAgfCBOUF9BQklfTUFTSyksIC8qIE5vdCBpbXBsZW1l
bnRlZCBpbiBXZWJLaXQgKi8KLSAgTlBQVnBsdWdpblNjcmlwdGFibGVJSUQgPSAxMSwgLyogTm90
IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotICBOUFBWamF2YXNjcmlwdFB1c2hDYWxsZXJCb29s
ID0gMTIsICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCi0gIE5QUFZwbHVnaW5LZWVw
TGlicmFyeUluTWVtb3J5ID0gMTMsIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KLSAg
TlBQVnBsdWdpbk5lZWRzWEVtYmVkICAgICAgICAgPSAxNCwgLyogTm90IGltcGxlbWVudGVkIGlu
IFdlYktpdCAqLwotCi0gIC8qIEdldCB0aGUgTlBPYmplY3QgZm9yIHNjcmlwdGluZyB0aGUgcGx1
Z2luLiBJbnRyb2R1Y2VkIGluIE5QQVBJIG1pbm9yIHZlcnNpb24gMTQuCi0gICAqLwotICBOUFBW
cGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0ICA9IDE1LAotCi0gIC8qIEdldCB0aGUgcGx1Z2luIHZh
bHVlIChhcyBcMC10ZXJtaW5hdGVkIFVURi04IHN0cmluZyBkYXRhKSBmb3IKLSAgICogZm9ybSBz
dWJtaXNzaW9uIGlmIHRoZSBwbHVnaW4gaXMgcGFydCBvZiBhIGZvcm0uIFVzZQotICAgKiBOUE5f
TWVtQWxsb2MoKSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBzdHJpbmcgZGF0YS4gSW50cm9k
dWNlZAotICAgKiBpbiBOUEFQSSBtaW5vciB2ZXJzaW9uIDE1LgotICAgKi8KLSAgTlBQVmZvcm1W
YWx1ZSA9IDE2LCAgICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCi0KLSAgTlBQVnBs
dWdpblVybFJlcXVlc3RzRGlzcGxheWVkQm9vbCA9IDE3LCAvKiBOb3QgaW1wbGVtZW50ZWQgaW4g
V2ViS2l0ICovCi0KLSAgLyogQ2hlY2tzIGlmIHRoZSBwbHVnaW4gaXMgaW50ZXJlc3RlZCBpbiBy
ZWNlaXZpbmcgdGhlIGh0dHAgYm9keSBvZgotICAgKiBhbGwgaHR0cCByZXF1ZXN0cyAoaW5jbHVk
aW5nIGZhaWxlZCBvbmVzLCBodHRwIHN0YXR1cyAhPSAyMDApLgotICAgKi8KLSAgTlBQVnBsdWdp
bldhbnRzQWxsTmV0d29ya1N0cmVhbXMgPSAxOCwKLQotICAvKiBCcm93c2VycyBjYW4gcmV0cmll
dmUgYSBuYXRpdmUgQVRLIGFjY2Vzc2liaWxpdHkgcGx1ZyBJRCB2aWEgdGhpcyB2YXJpYWJsZS4g
Ki8KLSAgTlBQVnBsdWdpbk5hdGl2ZUFjY2Vzc2libGVBdGtQbHVnSWQgPSAxOSwKLQotICAvKiBD
aGVja3MgdG8gc2VlIGlmIHRoZSBwbHVnLWluIHdvdWxkIGxpa2UgdGhlIGJyb3dzZXIgdG8gbG9h
ZCB0aGUgInNyYyIgYXR0cmlidXRlLiAqLwotICBOUFBWcGx1Z2luQ2FuY2VsU3JjU3RyZWFtID0g
MjAKLQotI2lmIGRlZmluZWQoWFBfTUFDT1NYKQotICAvKiBVc2VkIGZvciBuZWdvdGlhdGluZyBk
cmF3aW5nIG1vZGVscyAqLwotICAsIE5QUFZwbHVnaW5EcmF3aW5nTW9kZWwgPSAxMDAwCi0gIC8q
IFVzZWQgZm9yIG5lZ290aWF0aW5nIGV2ZW50IG1vZGVscyAqLwotICAsIE5QUFZwbHVnaW5FdmVu
dE1vZGVsID0gMTAwMQotICAvKiBJbiB0aGUgTlBEcmF3aW5nTW9kZWxDb3JlQW5pbWF0aW9uIGRy
YXdpbmcgbW9kZWwsIHRoZSBicm93c2VyIGFza3MgdGhlIHBsdWctaW4gZm9yIGEgQ29yZSBBbmlt
YXRpb24gbGF5ZXIuICovCi0gICwgTlBQVnBsdWdpbkNvcmVBbmltYXRpb25MYXllciA9IDEwMDMK
LSNlbmRpZgotCi0jaWYgZGVmaW5lZChNT1pfUExBVEZPUk1fTUFFTU8pICYmIChNT1pfUExBVEZP
Uk1fTUFFTU8gPj0gNSkKLSAgLCBOUFBWcGx1Z2luV2luZG93bGVzc0xvY2FsQm9vbCA9IDIwMDIK
LSNlbmRpZgotfSBOUFBWYXJpYWJsZTsKLQotLyoKLSAqIExpc3Qgb2YgdmFyaWFibGUgbmFtZXMg
Zm9yIHdoaWNoIE5QTl9HZXRWYWx1ZSBzaG91bGQgYmUgaW1wbGVtZW50ZWQuCi0gKi8KLXR5cGVk
ZWYgZW51bSB7Ci0gIE5QTlZ4RGlzcGxheSA9IDEsCi0gIE5QTlZ4dEFwcENvbnRleHQsCi0gIE5Q
TlZuZXRzY2FwZVdpbmRvdywKLSAgTlBOVmphdmFzY3JpcHRFbmFibGVkQm9vbCwKLSAgTlBOVmFz
ZEVuYWJsZWRCb29sLAotICBOUE5WaXNPZmZsaW5lQm9vbCwKLQotICBOUE5Wc2VydmljZU1hbmFn
ZXIgPSAoMTAgfCBOUF9BQklfTUFTSyksICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICov
Ci0gIE5QTlZET01FbGVtZW50ICAgICA9ICgxMSB8IE5QX0FCSV9NQVNLKSwgIC8qIE5vdCBpbXBs
ZW1lbnRlZCBpbiBXZWJLaXQgKi8KLSAgTlBOVkRPTVdpbmRvdyAgICAgID0gKDEyIHwgTlBfQUJJ
X01BU0spLCAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotICBOUE5WVG9vbGtpdCAg
ICAgICAgPSAoMTMgfCBOUF9BQklfTUFTSyksICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0
ICovCi0gIE5QTlZTdXBwb3J0c1hFbWJlZEJvb2wgPSAxNCwgICAgICAgICAgICAgIC8qIE5vdCBp
bXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KLQotICAvKiBHZXQgdGhlIE5QT2JqZWN0IHdyYXBwZXIg
Zm9yIHRoZSBicm93c2VyIHdpbmRvdy4gKi8KLSAgTlBOVldpbmRvd05QT2JqZWN0ID0gMTUsCi0K
LSAgLyogR2V0IHRoZSBOUE9iamVjdCB3cmFwcGVyIGZvciB0aGUgcGx1Z2lucyBET00gZWxlbWVu
dC4gKi8KLSAgTlBOVlBsdWdpbkVsZW1lbnROUE9iamVjdCA9IDE2LAotCi0gIE5QTlZTdXBwb3J0
c1dpbmRvd2xlc3MgPSAxNywKLQotICBOUE5WcHJpdmF0ZU1vZGVCb29sID0gMTgKLQotI2lmIGRl
ZmluZWQoWFBfTUFDT1NYKQotICAvKiBVc2VkIGZvciBuZWdvdGlhdGluZyBkcmF3aW5nIG1vZGVs
cyAqLwotICAsIE5QTlZwbHVnaW5EcmF3aW5nTW9kZWwgPSAxMDAwCi0jaWZuZGVmIE5QX05PX1FV
SUNLRFJBVwotICAsIE5QTlZzdXBwb3J0c1F1aWNrRHJhd0Jvb2wgPSAyMDAwCi0jZW5kaWYKLSAg
LCBOUE5Wc3VwcG9ydHNDb3JlR3JhcGhpY3NCb29sID0gMjAwMQotICAsIE5QTlZzdXBwb3J0c09w
ZW5HTEJvb2wgPSAyMDAyCi0gICwgTlBOVnN1cHBvcnRzQ29yZUFuaW1hdGlvbkJvb2wgPSAyMDAz
Ci0jaWZuZGVmIE5QX05PX0NBUkJPTgotICAsIE5QTlZzdXBwb3J0c0NhcmJvbkJvb2wgPSAzMDAw
IC8qIFRSVUUgaWYgdGhlIGJyb3dzZXIgc3VwcG9ydHMgdGhlIENhcmJvbiBldmVudCBtb2RlbCAq
LwotI2VuZGlmCi0gICwgTlBOVnN1cHBvcnRzQ29jb2FCb29sID0gMzAwMSAvKiBUUlVFIGlmIHRo
ZSBicm93c2VyIHN1cHBvcnRzIHRoZSBDb2NvYSBldmVudCBtb2RlbCAqLwotICAsIE5QTlZzdXBw
b3J0c1VwZGF0ZWRDb2NvYVRleHRJbnB1dEJvb2wgPSAzMDAyIC8qIFRSVUUgaWYgdGhlIGJyb3dz
ZXIgc3VwcG9ydHMgdGhlIHVwZGF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb2NvYSB0ZXh0IGlucHV0IHNwZWNpZmljYXRpb24uICovCi0g
ICwgTlBOVnN1cHBvcnRzQ29tcG9zaXRpbmdDb3JlQW5pbWF0aW9uUGx1Z2luc0Jvb2wgPSA3NDY1
NiAvKiBUUlVFIGlmIHRoZSBicm93c2VyIHN1cHBvcnRzCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQSBtb2RlbCBjb21wb3Np
dGluZyAqLwotI2VuZGlmIC8qIFhQX01BQ09TWCAqLwotI2lmIGRlZmluZWQoTU9aX1BMQVRGT1JN
X01BRU1PKSAmJiAoTU9aX1BMQVRGT1JNX01BRU1PID49IDUpCi0gICwgTlBOVlN1cHBvcnRzV2lu
ZG93bGVzc0xvY2FsID0gMjAwMgotI2VuZGlmCi19IE5QTlZhcmlhYmxlOwotCi10eXBlZGVmIGVu
dW0gewotICBOUE5VUkxWQ29va2llID0gNTAxLAotICBOUE5VUkxWUHJveHkKLX0gTlBOVVJMVmFy
aWFibGU7Ci0KLS8qCi0gKiBUaGUgdHlwZSBvZiBUb29sa2l0IHRoZSB3aWRnZXRzIHVzZQotICov
Ci10eXBlZGVmIGVudW0gewotICBOUE5WR3RrMTIgPSAxLAotICBOUE5WR3RrMgotfSBOUE5Ub29s
a2l0VHlwZTsKLQotLyoKLSAqIFRoZSB0eXBlIG9mIGEgTlBXaW5kb3cgLSBpdCBzcGVjaWZpZXMg
dGhlIHR5cGUgb2YgdGhlIGRhdGEgc3RydWN0dXJlCi0gKiByZXR1cm5lZCBpbiB0aGUgd2luZG93
IGZpZWxkLgotICovCi10eXBlZGVmIGVudW0gewotICBOUFdpbmRvd1R5cGVXaW5kb3cgPSAxLAot
ICBOUFdpbmRvd1R5cGVEcmF3YWJsZQotfSBOUFdpbmRvd1R5cGU7Ci0KLXR5cGVkZWYgc3RydWN0
IF9OUFdpbmRvdwotewotICB2b2lkKiB3aW5kb3c7ICAvKiBQbGF0Zm9ybSBzcGVjaWZpYyB3aW5k
b3cgaGFuZGxlICovCi0gICAgICAgICAgICAgICAgIC8qIE9TLzI6IHggLSBQb3NpdGlvbiBvZiBi
b3R0b20gbGVmdCBjb3JuZXIgKi8KLSAgICAgICAgICAgICAgICAgLyogT1MvMjogeSAtIHJlbGF0
aXZlIHRvIHZpc2libGUgbmV0c2NhcGUgd2luZG93ICovCi0gIGludDMyX3QgIHg7ICAgICAgLyog
UG9zaXRpb24gb2YgdG9wIGxlZnQgY29ybmVyIHJlbGF0aXZlICovCi0gIGludDMyX3QgIHk7ICAg
ICAgLyogdG8gYSBuZXRzY2FwZSBwYWdlLiAqLwotICB1aW50MzJfdCB3aWR0aDsgIC8qIE1heGlt
dW0gd2luZG93IHNpemUgKi8KLSAgdWludDMyX3QgaGVpZ2h0OwotICBOUFJlY3QgICBjbGlwUmVj
dDsgLyogQ2xpcHBpbmcgcmVjdGFuZ2xlIGluIHBvcnQgY29vcmRpbmF0ZXMgKi8KLSNpZiBkZWZp
bmVkKFhQX1VOSVgpIHx8IGRlZmluZWQoWFBfU1lNQklBTikKLSAgdm9pZCAqIHdzX2luZm87IC8q
IFBsYXRmb3JtLWRlcGVuZGVudCBhZGRpdG9uYWwgZGF0YSAqLwotI2VuZGlmIC8qIFhQX1VOSVgg
fHwgWFBfU1lNQklBTiAqLwotICBOUFdpbmRvd1R5cGUgdHlwZTsgLyogSXMgdGhpcyBhIHdpbmRv
dyBvciBhIGRyYXdhYmxlPyAqLwotfSBOUFdpbmRvdzsKLQotdHlwZWRlZiBzdHJ1Y3QgX05QSW1h
Z2VFeHBvc2UKLXsKLSAgY2hhciogICAgZGF0YTsgICAgICAgLyogaW1hZ2UgcG9pbnRlciAqLwot
ICBpbnQzMl90ICBzdHJpZGU7ICAgICAvKiBTdHJpZGUgb2YgZGF0YSBpbWFnZSBwb2ludGVyICov
Ci0gIGludDMyX3QgIGRlcHRoOyAgICAgIC8qIERlcHRoIG9mIGltYWdlIHBvaW50ZXIgKi8KLSAg
aW50MzJfdCAgeDsgICAgICAgICAgLyogRXhwb3NlIHggKi8KLSAgaW50MzJfdCAgeTsgICAgICAg
ICAgLyogRXhwb3NlIHkgKi8KLSAgdWludDMyX3Qgd2lkdGg7ICAgICAgLyogRXhwb3NlIHdpZHRo
ICovCi0gIHVpbnQzMl90IGhlaWdodDsgICAgIC8qIEV4cG9zZSBoZWlnaHQgKi8KLSAgTlBTaXpl
ICAgZGF0YVNpemU7ICAgLyogRGF0YSBidWZmZXIgc2l6ZSAqLwotICBmbG9hdCAgICB0cmFuc2xh
dGVYOyAvKiB0cmFuc2xhdGUgWCBtYXRyaXggdmFsdWUgKi8KLSAgZmxvYXQgICAgdHJhbnNsYXRl
WTsgLyogdHJhbnNsYXRlIFkgbWF0cml4IHZhbHVlICovCi0gIGZsb2F0ICAgIHNjYWxlWDsgICAg
IC8qIHNjYWxlIFggbWF0cml4IHZhbHVlICovCi0gIGZsb2F0ICAgIHNjYWxlWTsgICAgIC8qIHNj
YWxlIFkgbWF0cml4IHZhbHVlICovCi19IE5QSW1hZ2VFeHBvc2U7Ci0KLXR5cGVkZWYgc3RydWN0
IF9OUEZ1bGxQcmludAotewotICBOUEJvb2wgcGx1Z2luUHJpbnRlZDsvKiBTZXQgVFJVRSBpZiBw
bHVnaW4gaGFuZGxlZCBmdWxsc2NyZWVuIHByaW50aW5nICovCi0gIE5QQm9vbCBwcmludE9uZTsg
ICAgIC8qIFRSVUUgaWYgcGx1Z2luIHNob3VsZCBwcmludCBvbmUgY29weSB0byBkZWZhdWx0Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZXIgKi8KLSAgdm9pZCogcGxhdGZvcm1Qcmlu
dDsgLyogUGxhdGZvcm0tc3BlY2lmaWMgcHJpbnRpbmcgaW5mbyAqLwotfSBOUEZ1bGxQcmludDsK
LQotdHlwZWRlZiBzdHJ1Y3QgX05QRW1iZWRQcmludAotewotICBOUFdpbmRvdyB3aW5kb3c7Ci0g
IHZvaWQqIHBsYXRmb3JtUHJpbnQ7IC8qIFBsYXRmb3JtLXNwZWNpZmljIHByaW50aW5nIGluZm8g
Ki8KLX0gTlBFbWJlZFByaW50OwotCi10eXBlZGVmIHN0cnVjdCBfTlBQcmludAotewotICB1aW50
MTZfdCBtb2RlOyAgICAgICAgICAgICAgIC8qIE5QX0ZVTEwgb3IgTlBfRU1CRUQgKi8KLSAgdW5p
b24KLSAgewotICAgIE5QRnVsbFByaW50IGZ1bGxQcmludDsgICAvKiBpZiBtb2RlIGlzIE5QX0ZV
TEwgKi8KLSAgICBOUEVtYmVkUHJpbnQgZW1iZWRQcmludDsgLyogaWYgbW9kZSBpcyBOUF9FTUJF
RCAqLwotICB9IHByaW50OwotfSBOUFByaW50OwotCi0jaWYgZGVmaW5lZChYUF9NQUNPU1gpCi0j
aWZuZGVmIE5QX05PX0NBUkJPTgotdHlwZWRlZiBFdmVudFJlY29yZCBOUEV2ZW50OwotI2Vsc2UK
LXR5cGVkZWYgdm9pZCogIE5QRXZlbnQ7Ci0jZW5kaWYKLSNlbGlmIGRlZmluZWQoWFBfU1lNQklB
TikKLXR5cGVkZWYgUUV2ZW50IE5QRXZlbnQ7Ci0jZWxpZiBkZWZpbmVkKFhQX1dJTikKLXR5cGVk
ZWYgc3RydWN0IF9OUEV2ZW50Ci17Ci0gIHVpbnQxNl90IGV2ZW50OwotICB1aW50cHRyX3Qgd1Bh
cmFtOwotICB1aW50cHRyX3QgbFBhcmFtOwotfSBOUEV2ZW50OwotI2VsaWYgZGVmaW5lZChYUF9P
UzIpCi10eXBlZGVmIHN0cnVjdCBfTlBFdmVudAotewotICB1aW50MzJfdCBldmVudDsKLSAgdWlu
dDMyX3Qgd1BhcmFtOwotICB1aW50MzJfdCBsUGFyYW07Ci19IE5QRXZlbnQ7Ci0jZWxpZiBkZWZp
bmVkKFhQX1VOSVgpCi10eXBlZGVmIFhFdmVudCBOUEV2ZW50OwotI2Vsc2UKLXR5cGVkZWYgdm9p
ZCogIE5QRXZlbnQ7Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoWFBfTUFDT1NYKQotdHlwZWRlZiB2
b2lkKiBOUFJlZ2lvbjsKLSNpZm5kZWYgTlBfTk9fUVVJQ0tEUkFXCi10eXBlZGVmIFJnbkhhbmRs
ZSBOUFFEUmVnaW9uOwotI2VuZGlmCi10eXBlZGVmIENHUGF0aFJlZiBOUENHUmVnaW9uOwotI2Vs
aWYgZGVmaW5lZChYUF9XSU4pCi10eXBlZGVmIEhSR04gTlBSZWdpb247Ci0jZWxpZiBkZWZpbmVk
KFhQX1VOSVgpCi10eXBlZGVmIFJlZ2lvbiBOUFJlZ2lvbjsKLSNlbGlmIGRlZmluZWQoWFBfU1lN
QklBTikKLXR5cGVkZWYgUVJlZ2lvbiogTlBSZWdpb247Ci0jZWxzZQotdHlwZWRlZiB2b2lkICpO
UFJlZ2lvbjsKLSNlbmRpZgotCi10eXBlZGVmIHN0cnVjdCBfTlBOU1N0cmluZyBOUE5TU3RyaW5n
OwotdHlwZWRlZiBzdHJ1Y3QgX05QTlNXaW5kb3cgTlBOU1dpbmRvdzsKLXR5cGVkZWYgc3RydWN0
IF9OUE5TTWVudSAgIE5QTlNNZW51OwotCi0jaWYgZGVmaW5lZChYUF9NQUNPU1gpCi10eXBlZGVm
IE5QTlNNZW51IE5QTWVudTsKLSNlbHNlCi10eXBlZGVmIHZvaWQgKk5QTWVudTsKLSNlbmRpZgot
Ci10eXBlZGVmIGVudW0gewotICBOUENvb3JkaW5hdGVTcGFjZVBsdWdpbiA9IDEsCi0gIE5QQ29v
cmRpbmF0ZVNwYWNlV2luZG93LAotICBOUENvb3JkaW5hdGVTcGFjZUZsaXBwZWRXaW5kb3csCi0g
IE5QQ29vcmRpbmF0ZVNwYWNlU2NyZWVuLAotICBOUENvb3JkaW5hdGVTcGFjZUZsaXBwZWRTY3Jl
ZW4KLX0gTlBDb29yZGluYXRlU3BhY2U7Ci0KLSNpZiBkZWZpbmVkKFhQX01BQ09TWCkKLQotI2lm
bmRlZiBOUF9OT19RVUlDS0RSQVcKLXR5cGVkZWYgc3RydWN0IE5QX1BvcnQKLXsKLSAgQ0dyYWZQ
dHIgcG9ydDsKLSAgaW50MzJfdCBwb3J0eDsgLyogcG9zaXRpb24gaW5zaWRlIHRoZSB0b3Btb3N0
IHdpbmRvdyAqLwotICBpbnQzMl90IHBvcnR5OwotfSBOUF9Qb3J0OwotI2VuZGlmIC8qIE5QX05P
X1FVSUNLRFJBVyAqLwotCi0vKgotICogTlBfQ0dDb250ZXh0IGlzIHRoZSB0eXBlIG9mIHRoZSBO
UFdpbmRvdydzICd3aW5kb3cnIHdoZW4gdGhlIHBsdWdpbiBzcGVjaWZpZXMgTlBEcmF3aW5nTW9k
ZWxDb3JlR3JhcGhpY3MKLSAqIGFzIGl0cyBkcmF3aW5nIG1vZGVsLgotICovCi0KLXR5cGVkZWYg
c3RydWN0IE5QX0NHQ29udGV4dAotewotICBDR0NvbnRleHRSZWYgY29udGV4dDsKLSNpZmRlZiBO
UF9OT19DQVJCT04KLSAgTlBOU1dpbmRvdyAqd2luZG93OwotI2Vsc2UKLSAgdm9pZCAqd2luZG93
OyAvKiBBIFdpbmRvd1JlZiBvciBOVUxMIGZvciB0aGUgQ29jb2EgZXZlbnQgbW9kZWwuICovCi0j
ZW5kaWYKLX0gTlBfQ0dDb250ZXh0OwotCi0vKgotICogTlBfR0xDb250ZXh0IGlzIHRoZSB0eXBl
IG9mIHRoZSBOUFdpbmRvdydzICd3aW5kb3cnIHdoZW4gdGhlIHBsdWdpbiBzcGVjaWZpZXMgTlBE
cmF3aW5nTW9kZWxPcGVuR0wgYXMgaXRzCi0gKiBkcmF3aW5nIG1vZGVsLgotICovCi0KLXR5cGVk
ZWYgc3RydWN0IE5QX0dMQ29udGV4dAotewotICBDR0xDb250ZXh0T2JqIGNvbnRleHQ7Ci0jaWZk
ZWYgTlBfTk9fQ0FSQk9OCi0gIE5QTlNXaW5kb3cgKndpbmRvdzsKLSNlbHNlCi0gIHZvaWQgKndp
bmRvdzsgLyogQ2FuIGJlIGVpdGhlciBhbiBOU1dpbmRvdyBvciBhIFdpbmRvd1JlZiBkZXBlbmRp
bmcgb24gdGhlIGV2ZW50IG1vZGVsICovCi0jZW5kaWYKLX0gTlBfR0xDb250ZXh0OwotCi10eXBl
ZGVmIGVudW0gewotICBOUENvY29hRXZlbnREcmF3UmVjdCA9IDEsCi0gIE5QQ29jb2FFdmVudE1v
dXNlRG93biwKLSAgTlBDb2NvYUV2ZW50TW91c2VVcCwKLSAgTlBDb2NvYUV2ZW50TW91c2VNb3Zl
ZCwKLSAgTlBDb2NvYUV2ZW50TW91c2VFbnRlcmVkLAotICBOUENvY29hRXZlbnRNb3VzZUV4aXRl
ZCwKLSAgTlBDb2NvYUV2ZW50TW91c2VEcmFnZ2VkLAotICBOUENvY29hRXZlbnRLZXlEb3duLAot
ICBOUENvY29hRXZlbnRLZXlVcCwKLSAgTlBDb2NvYUV2ZW50RmxhZ3NDaGFuZ2VkLAotICBOUENv
Y29hRXZlbnRGb2N1c0NoYW5nZWQsCi0gIE5QQ29jb2FFdmVudFdpbmRvd0ZvY3VzQ2hhbmdlZCwK
LSAgTlBDb2NvYUV2ZW50U2Nyb2xsV2hlZWwsCi0gIE5QQ29jb2FFdmVudFRleHRJbnB1dAotfSBO
UENvY29hRXZlbnRUeXBlOwotCi10eXBlZGVmIHN0cnVjdCBfTlBDb2NvYUV2ZW50IHsKLSAgTlBD
b2NvYUV2ZW50VHlwZSB0eXBlOwotICB1aW50MzJfdCB2ZXJzaW9uOwotICB1bmlvbiB7Ci0gICAg
c3RydWN0IHsKLSAgICAgIHVpbnQzMl90IG1vZGlmaWVyRmxhZ3M7Ci0gICAgICBkb3VibGUgICBw
bHVnaW5YOwotICAgICAgZG91YmxlICAgcGx1Z2luWTsKLSAgICAgIGludDMyX3QgIGJ1dHRvbk51
bWJlcjsKLSAgICAgIGludDMyX3QgIGNsaWNrQ291bnQ7Ci0gICAgICBkb3VibGUgICBkZWx0YVg7
Ci0gICAgICBkb3VibGUgICBkZWx0YVk7Ci0gICAgICBkb3VibGUgICBkZWx0YVo7Ci0gICAgfSBt
b3VzZTsKLSAgICBzdHJ1Y3QgewotICAgICAgdWludDMyX3QgICAgbW9kaWZpZXJGbGFnczsKLSAg
ICAgIE5QTlNTdHJpbmcgKmNoYXJhY3RlcnM7Ci0gICAgICBOUE5TU3RyaW5nICpjaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnM7Ci0gICAgICBOUEJvb2wgICAgICBpc0FSZXBlYXQ7Ci0gICAgICB1
aW50MTZfdCAgICBrZXlDb2RlOwotICAgIH0ga2V5OwotICAgIHN0cnVjdCB7Ci0gICAgICBDR0Nv
bnRleHRSZWYgY29udGV4dDsKLSAgICAgIGRvdWJsZSB4OwotICAgICAgZG91YmxlIHk7Ci0gICAg
ICBkb3VibGUgd2lkdGg7Ci0gICAgICBkb3VibGUgaGVpZ2h0OwotICAgIH0gZHJhdzsKLSAgICBz
dHJ1Y3QgewotICAgICAgTlBCb29sIGhhc0ZvY3VzOwotICAgIH0gZm9jdXM7Ci0gICAgc3RydWN0
IHsKLSAgICAgIE5QTlNTdHJpbmcgKnRleHQ7Ci0gICAgfSB0ZXh0OwotICB9IGRhdGE7Ci19IE5Q
Q29jb2FFdmVudDsKLQotI2lmbmRlZiBOUF9OT19DQVJCT04KLS8qIE5vbi1zdGFuZGFyZCBldmVu
dCB0eXBlcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gSGFuZGxlRXZlbnQgKi8KLWVudW0gTlBFdmVu
dFR5cGUgewotICBOUEV2ZW50VHlwZV9HZXRGb2N1c0V2ZW50ID0gKG9zRXZ0ICsgMTYpLAotICBO
UEV2ZW50VHlwZV9Mb3NlRm9jdXNFdmVudCwKLSAgTlBFdmVudFR5cGVfQWRqdXN0Q3Vyc29yRXZl
bnQsCi0gIE5QRXZlbnRUeXBlX01lbnVDb21tYW5kRXZlbnQsCi0gIE5QRXZlbnRUeXBlX0NsaXBw
aW5nQ2hhbmdlZEV2ZW50LAotICBOUEV2ZW50VHlwZV9TY3JvbGxpbmdCZWdpbnNFdmVudCA9IDEw
MDAsCi0gIE5QRXZlbnRUeXBlX1Njcm9sbGluZ0VuZHNFdmVudAotfTsKLSNlbmRpZiAvKiBOUF9O
T19DQVJCT04gKi8KLQotI2VuZGlmIC8qIFhQX01BQ09TWCAqLwotCi0vKgotICogVmFsdWVzIGZv
ciBtb2RlIHBhc3NlZCB0byBOUFBfTmV3OgotICovCi0jZGVmaW5lIE5QX0VNQkVEIDEKLSNkZWZp
bmUgTlBfRlVMTCAgMgotCi0vKgotICogVmFsdWVzIGZvciBzdHJlYW0gdHlwZSBwYXNzZWQgdG8g
TlBQX05ld1N0cmVhbToKLSAqLwotI2RlZmluZSBOUF9OT1JNQUwgICAgIDEKLSNkZWZpbmUgTlBf
U0VFSyAgICAgICAyCi0jZGVmaW5lIE5QX0FTRklMRSAgICAgMwotI2RlZmluZSBOUF9BU0ZJTEVP
TkxZIDQKLQotI2RlZmluZSBOUF9NQVhSRUFEWSAoKCh1bnNpZ25lZCkofjApPDwxKT4+MSkKLQot
LyoKLSAqIEZsYWdzIGZvciBOUFBfQ2xlYXJTaXRlRGF0YS4KLSAqLwotI2RlZmluZSBOUF9DTEVB
Ul9BTEwgICAwCi0jZGVmaW5lIE5QX0NMRUFSX0NBQ0hFICgxIDw8IDApCi0KLSNpZiAhZGVmaW5l
ZChfX0xQNjRfXykKLSNpZiBkZWZpbmVkKFhQX01BQ09TWCkKLSNwcmFnbWEgb3B0aW9ucyBhbGln
bj1yZXNldAotI2VuZGlmCi0jZW5kaWYgLyogX19MUDY0X18gKi8KLQotLyotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ki8KLS8qICAgICAgIEVycm9yIGFuZCBSZWFzb24gQ29kZSBkZWZpbml0aW9ucyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICovCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0vKgotICogVmFsdWVz
IG9mIHR5cGUgTlBFcnJvcjoKLSAqLwotI2RlZmluZSBOUEVSUl9CQVNFICAgICAgICAgICAgICAg
ICAgICAgICAgIDAKLSNkZWZpbmUgTlBFUlJfTk9fRVJST1IgICAgICAgICAgICAgICAgICAgIChO
UEVSUl9CQVNFICsgMCkKLSNkZWZpbmUgTlBFUlJfR0VORVJJQ19FUlJPUiAgICAgICAgICAgICAg
IChOUEVSUl9CQVNFICsgMSkKLSNkZWZpbmUgTlBFUlJfSU5WQUxJRF9JTlNUQU5DRV9FUlJPUiAg
ICAgIChOUEVSUl9CQVNFICsgMikKLSNkZWZpbmUgTlBFUlJfSU5WQUxJRF9GVU5DVEFCTEVfRVJS
T1IgICAgIChOUEVSUl9CQVNFICsgMykKLSNkZWZpbmUgTlBFUlJfTU9EVUxFX0xPQURfRkFJTEVE
X0VSUk9SICAgIChOUEVSUl9CQVNFICsgNCkKLSNkZWZpbmUgTlBFUlJfT1VUX09GX01FTU9SWV9F
UlJPUiAgICAgICAgIChOUEVSUl9CQVNFICsgNSkKLSNkZWZpbmUgTlBFUlJfSU5WQUxJRF9QTFVH
SU5fRVJST1IgICAgICAgIChOUEVSUl9CQVNFICsgNikKLSNkZWZpbmUgTlBFUlJfSU5WQUxJRF9Q
TFVHSU5fRElSX0VSUk9SICAgIChOUEVSUl9CQVNFICsgNykKLSNkZWZpbmUgTlBFUlJfSU5DT01Q
QVRJQkxFX1ZFUlNJT05fRVJST1IgIChOUEVSUl9CQVNFICsgOCkKLSNkZWZpbmUgTlBFUlJfSU5W
QUxJRF9QQVJBTSAgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsgOSkKLSNkZWZpbmUgTlBFUlJf
SU5WQUxJRF9VUkwgICAgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsgMTApCi0jZGVmaW5lIE5Q
RVJSX0ZJTEVfTk9UX0ZPVU5EICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDExKQotI2RlZmlu
ZSBOUEVSUl9OT19EQVRBICAgICAgICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAxMikKLSNk
ZWZpbmUgTlBFUlJfU1RSRUFNX05PVF9TRUVLQUJMRSAgICAgICAgIChOUEVSUl9CQVNFICsgMTMp
Ci0KLS8qCi0gKiBWYWx1ZXMgb2YgdHlwZSBOUFJlYXNvbjoKLSAqLwotI2RlZmluZSBOUFJFU19C
QVNFICAgICAgICAgIDAKLSNkZWZpbmUgTlBSRVNfRE9ORSAgICAgICAgIChOUFJFU19CQVNFICsg
MCkKLSNkZWZpbmUgTlBSRVNfTkVUV09SS19FUlIgIChOUFJFU19CQVNFICsgMSkKLSNkZWZpbmUg
TlBSRVNfVVNFUl9CUkVBSyAgIChOUFJFU19CQVNFICsgMikKLQotLyoKLSAqIERvbid0IHVzZSB0
aGVzZSBvYnNvbGV0ZSBlcnJvciBjb2RlcyBhbnkgbW9yZS4KLSAqLwotI2RlZmluZSBOUF9OT0VS
UiAgTlBfTk9FUlJfaXNfb2Jzb2xldGVfdXNlX05QRVJSX05PX0VSUk9SCi0jZGVmaW5lIE5QX0VJ
TlZBTCBOUF9FSU5WQUxfaXNfb2Jzb2xldGVfdXNlX05QRVJSX0dFTkVSSUNfRVJST1IKLSNkZWZp
bmUgTlBfRUFCT1JUIE5QX0VBQk9SVF9pc19vYnNvbGV0ZV91c2VfTlBSRVNfVVNFUl9CUkVBSwot
Ci0vKgotICogVmVyc2lvbiBmZWF0dXJlIGluZm9ybWF0aW9uCi0gKi8KLSNkZWZpbmUgTlBWRVJT
X0hBU19TVFJFQU1PVVRQVVQgICAgICAgICAgICAgOAotI2RlZmluZSBOUFZFUlNfSEFTX05PVElG
SUNBVElPTiAgICAgICAgICAgICA5Ci0jZGVmaW5lIE5QVkVSU19IQVNfTElWRUNPTk5FQ1QgICAg
ICAgICAgICAgIDkKLSNkZWZpbmUgTlBWRVJTX1dJTjE2X0hBU19MSVZFQ09OTkVDVCAgICAgICAg
OQotI2RlZmluZSBOUFZFUlNfNjhLX0hBU19MSVZFQ09OTkVDVCAgICAgICAgICAxMQotI2RlZmlu
ZSBOUFZFUlNfSEFTX1dJTkRPV0xFU1MgICAgICAgICAgICAgICAxMQotI2RlZmluZSBOUFZFUlNf
SEFTX1hQQ09OTkVDVF9TQ1JJUFRJTkcgICAgICAxMyAgLyogTm90IGltcGxlbWVudGVkIGluIFdl
YktpdCAqLwotI2RlZmluZSBOUFZFUlNfSEFTX05QUlVOVElNRV9TQ1JJUFRJTkcgICAgICAxNAot
I2RlZmluZSBOUFZFUlNfSEFTX0ZPUk1fVkFMVUVTICAgICAgICAgICAgICAxNSAgLyogTm90IGlt
cGxlbWVudGVkIGluIFdlYktpdDsgc2VlIGJ1ZyAxMzA2MSAqLwotI2RlZmluZSBOUFZFUlNfSEFT
X1BPUFVQU19FTkFCTEVEX1NUQVRFICAgICAxNiAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktp
dCAqLwotI2RlZmluZSBOUFZFUlNfSEFTX1JFU1BPTlNFX0hFQURFUlMgICAgICAgICAxNwotI2Rl
ZmluZSBOUFZFUlNfSEFTX05QT0JKRUNUX0VOVU0gICAgICAgICAgICAxOAotI2RlZmluZSBOUFZF
UlNfSEFTX1BMVUdJTl9USFJFQURfQVNZTkNfQ0FMTCAxOQotI2RlZmluZSBOUFZFUlNfSEFTX0FM
TF9ORVRXT1JLX1NUUkVBTVMgICAgICAyMAotI2RlZmluZSBOUFZFUlNfSEFTX1VSTF9BTkRfQVVU
SF9JTkZPICAgICAgICAyMQotI2RlZmluZSBOUFZFUlNfSEFTX1BSSVZBVEVfTU9ERSAgICAgICAg
ICAgICAyMgotI2RlZmluZSBOUFZFUlNfTUFDT1NYX0hBU19FVkVOVF9NT0RFTFMgICAgICAyMwot
I2RlZmluZSBOUFZFUlNfSEFTX0NBTkNFTF9TUkNfU1RSRUFNICAgICAgICAyNAotI2RlZmluZSBO
UFZFUlNfSEFTX0FEVkFOQ0VEX0tFWV9IQU5ETElORyAgICAyNQotI2RlZmluZSBOUFZFUlNfSEFT
X1VSTF9SRURJUkVDVF9IQU5ETElORyAgICAyNgotI2RlZmluZSBOUFZFUlNfSEFTX0NMRUFSX1NJ
VEVfREFUQSAgICAgICAgICAyNwotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyogICAgICAgICAgICAg
ICAgICAgICAgICBGdW5jdGlvbiBQcm90b3R5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ki8KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLSNpZiBkZWZpbmVkKF9fT1MyX18pCi0jZGVmaW5lIE5Q
X0xPQUREUyBfU3lzdGVtCi0jZWxzZQotI2RlZmluZSBOUF9MT0FERFMKLSNlbmRpZgotCi0jaWZk
ZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qIE5QUF8qIGZ1bmN0aW9u
cyBhcmUgcHJvdmlkZWQgYnkgdGhlIHBsdWdpbiBhbmQgY2FsbGVkIGJ5IHRoZSBuYXZpZ2F0b3Iu
ICovCi0KLSNpZiBkZWZpbmVkKFhQX1VOSVgpCi1jaGFyKiBOUFBfR2V0TUlNRURlc2NyaXB0aW9u
KHZvaWQpOwotI2VuZGlmCi0KLU5QRXJyb3IgTlBfTE9BRERTIE5QUF9Jbml0aWFsaXplKHZvaWQp
Owotdm9pZCAgICBOUF9MT0FERFMgTlBQX1NodXRkb3duKHZvaWQpOwotTlBFcnJvciBOUF9MT0FE
RFMgTlBQX05ldyhOUE1JTUVUeXBlIHBsdWdpblR5cGUsIE5QUCBpbnN0YW5jZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDE2X3QgbW9kZSwgaW50MTZfdCBhcmdjLCBjaGFyKiBhcmdu
W10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEq
IHNhdmVkKTsKLU5QRXJyb3IgTlBfTE9BRERTIE5QUF9EZXN0cm95KE5QUCBpbnN0YW5jZSwgTlBT
YXZlZERhdGEqKiBzYXZlKTsKLU5QRXJyb3IgTlBfTE9BRERTIE5QUF9TZXRXaW5kb3coTlBQIGlu
c3RhbmNlLCBOUFdpbmRvdyogd2luZG93KTsKLU5QRXJyb3IgTlBfTE9BRERTIE5QUF9OZXdTdHJl
YW0oTlBQIGluc3RhbmNlLCBOUE1JTUVUeXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5QU3RyZWFtKiBzdHJlYW0sIE5QQm9vbCBzZWVrYWJsZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QqIHN0eXBlKTsKLU5QRXJyb3IgTlBfTE9BRERT
IE5QUF9EZXN0cm95U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNvbik7Ci1pbnQzMl90
IE5QX0xPQUREUyBOUFBfV3JpdGVSZWFkeShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0p
OwotaW50MzJfdCBOUF9MT0FERFMgTlBQX1dyaXRlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0
cmVhbSwgaW50MzJfdCBvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJf
dCBsZW4sIHZvaWQqIGJ1ZmZlcik7Ci12b2lkICAgIE5QX0xPQUREUyBOUFBfU3RyZWFtQXNGaWxl
KE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogZm5hbWUpOwotdm9pZCAgICBOUF9MT0FERFMgTlBQX1By
aW50KE5QUCBpbnN0YW5jZSwgTlBQcmludCogcGxhdGZvcm1QcmludCk7Ci1pbnQxNl90IE5QX0xP
QUREUyBOUFBfSGFuZGxlRXZlbnQoTlBQIGluc3RhbmNlLCB2b2lkKiBldmVudCk7Ci12b2lkICAg
IE5QX0xPQUREUyBOUFBfVVJMTm90aWZ5KE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogdXJsLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOUFJlYXNvbiByZWFzb24sIHZvaWQqIG5v
dGlmeURhdGEpOwotanJlZiAgICBOUF9MT0FERFMgTlBQX0dldEphdmFDbGFzcyh2b2lkKTsKLU5Q
RXJyb3IgTlBfTE9BRERTIE5QUF9HZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QUFZhcmlhYmxlIHZh
cmlhYmxlLCB2b2lkICp2YWx1ZSk7Ci1OUEVycm9yIE5QX0xPQUREUyBOUFBfU2V0VmFsdWUoTlBQ
IGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUpOwotTlBCb29sICBO
UF9MT0FERFMgTlBQX0dvdEZvY3VzKE5QUCBpbnN0YW5jZSwgTlBGb2N1c0RpcmVjdGlvbiBkaXJl
Y3Rpb24pOwotdm9pZCAgICBOUF9MT0FERFMgTlBQX0xvc3RGb2N1cyhOUFAgaW5zdGFuY2UpOwot
dm9pZCAgICBOUF9MT0FERFMgTlBQX1VSTFJlZGlyZWN0Tm90aWZ5KE5QUCBpbnN0YW5jZSwgY29u
c3QgY2hhciogdXJsLCBpbnQzMl90IHN0YXR1cywgdm9pZCogbm90aWZ5RGF0YSk7Ci1OUEVycm9y
IE5QX0xPQUREUyBOUFBfQ2xlYXJTaXRlRGF0YShjb25zdCBjaGFyKiBzaXRlLCB1aW50NjRfdCBm
bGFncywgdWludDY0X3QgbWF4QWdlKTsKLWNoYXIqKiAgTlBfTE9BRERTIE5QUF9HZXRTaXRlc1dp
dGhEYXRhKHZvaWQpOwotCi0vKiBOUE5fKiBmdW5jdGlvbnMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBu
YXZpZ2F0b3IgYW5kIGNhbGxlZCBieSB0aGUgcGx1Z2luLiAqLwotdm9pZCAgICAgICAgTlBfTE9B
RERTIE5QTl9WZXJzaW9uKGludCogcGx1Z2luX21ham9yLCBpbnQqIHBsdWdpbl9taW5vciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG5ldHNjYXBlX21ham9yLCBpbnQq
IG5ldHNjYXBlX21pbm9yKTsKLU5QRXJyb3IgICAgIE5QX0xPQUREUyBOUE5fR2V0VVJMTm90aWZ5
KE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogdXJsLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGFyZ2V0LCB2b2lkKiBub3RpZnlEYXRhKTsKLU5Q
RXJyb3IgICAgIE5QX0xPQUREUyBOUE5fR2V0VVJMKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciog
dXJsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGFyZ2V0
KTsKLU5QRXJyb3IgICAgIE5QX0xPQUREUyBOUE5fUG9zdFVSTE5vdGlmeShOUFAgaW5zdGFuY2Us
IGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiB0YXJnZXQsIHVpbnQzMl90IGxlbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBidWYsIE5QQm9vbCBmaWxlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIG5vdGlmeURhdGEpOwotTlBF
cnJvciAgICAgTlBfTE9BRERTIE5QTl9Qb3N0VVJMKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciog
dXJsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdl
dCwgdWludDMyX3QgbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGJ1ZiwgTlBCb29sIGZpbGUpOwotTlBFcnJvciAgICAgTlBfTE9BRERTIE5QTl9SZXF1
ZXN0UmVhZChOUFN0cmVhbSogc3RyZWFtLCBOUEJ5dGVSYW5nZSogcmFuZ2VMaXN0KTsKLU5QRXJy
b3IgICAgIE5QX0xPQUREUyBOUE5fTmV3U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBNSU1FVHlwZSB0
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGFy
Z2V0LCBOUFN0cmVhbSoqIHN0cmVhbSk7Ci1pbnQzMl90ICAgICBOUF9MT0FERFMgTlBOX1dyaXRl
KE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgaW50MzJfdCBsZW4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIGJ1ZmZlcik7Ci1OUEVycm9yICAgICBOUF9MT0FE
RFMgTlBOX0Rlc3Ryb3lTdHJlYW0oTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNvbik7Ci12
b2lkICAgICAgICBOUF9MT0FERFMgTlBOX1N0YXR1cyhOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIq
IG1lc3NhZ2UpOwotY29uc3QgY2hhciogTlBfTE9BRERTIE5QTl9Vc2VyQWdlbnQoTlBQIGluc3Rh
bmNlKTsKLXZvaWQqICAgICAgIE5QX0xPQUREUyBOUE5fTWVtQWxsb2ModWludDMyX3Qgc2l6ZSk7
Ci12b2lkICAgICAgICBOUF9MT0FERFMgTlBOX01lbUZyZWUodm9pZCogcHRyKTsKLXVpbnQzMl90
ICAgIE5QX0xPQUREUyBOUE5fTWVtRmx1c2godWludDMyX3Qgc2l6ZSk7Ci12b2lkICAgICAgICBO
UF9MT0FERFMgTlBOX1JlbG9hZFBsdWdpbnMoTlBCb29sIHJlbG9hZFBhZ2VzKTsKLUpSSUVudiog
ICAgIE5QX0xPQUREUyBOUE5fR2V0SmF2YUVudih2b2lkKTsKLWpyZWYgICAgICAgIE5QX0xPQURE
UyBOUE5fR2V0SmF2YVBlZXIoTlBQIGluc3RhbmNlKTsKLU5QRXJyb3IgICAgIE5QX0xPQUREUyBO
UE5fR2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdmFsdWUpOwotTlBFcnJvciAgICAgTlBf
TE9BRERTIE5QTl9TZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QUFZhcmlhYmxlIHZhcmlhYmxlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSk7Ci12b2lkICAg
ICAgICBOUF9MT0FERFMgTlBOX0ludmFsaWRhdGVSZWN0KE5QUCBpbnN0YW5jZSwgTlBSZWN0ICpp
bnZhbGlkUmVjdCk7Ci12b2lkICAgICAgICBOUF9MT0FERFMgTlBOX0ludmFsaWRhdGVSZWdpb24o
TlBQIGluc3RhbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5QUmVnaW9uIGludmFsaWRSZWdpb24pOwotdm9pZCAgICAgICAgTlBfTE9BRERTIE5QTl9Gb3Jj
ZVJlZHJhdyhOUFAgaW5zdGFuY2UpOwotdm9pZCAgICAgICAgTlBfTE9BRERTIE5QTl9QdXNoUG9w
dXBzRW5hYmxlZFN0YXRlKE5QUCBpbnN0YW5jZSwgTlBCb29sIGVuYWJsZWQpOwotdm9pZCAgICAg
ICAgTlBfTE9BRERTIE5QTl9Qb3BQb3B1cHNFbmFibGVkU3RhdGUoTlBQIGluc3RhbmNlKTsKLXZv
aWQgICAgICAgIE5QX0xPQUREUyBOUE5fUGx1Z2luVGhyZWFkQXN5bmNDYWxsKE5QUCBpbnN0YW5j
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg
KCpmdW5jKSAodm9pZCAqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKnVzZXJEYXRhKTsKLU5QRXJyb3IgICAgIE5QX0xPQUREUyBOUE5fR2V0
VmFsdWVGb3JVUkwoTlBQIGluc3RhbmNlLCBOUE5VUkxWYXJpYWJsZSB2YXJpYWJsZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXJsLCBjaGFy
ICoqdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90ICpsZW4pOwotTlBFcnJvciAgICAgTlBfTE9BRERTIE5QTl9TZXRWYWx1ZUZvclVSTChOUFAg
aW5zdGFuY2UsIE5QTlVSTFZhcmlhYmxlIHZhcmlhYmxlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1cmwsIGNvbnN0IGNoYXIgKnZhbHVlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW4pOwot
TlBFcnJvciAgICAgTlBfTE9BRERTIE5QTl9HZXRBdXRoZW50aWNhdGlvbkluZm8oTlBQIGluc3Rh
bmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqcHJvdG9jb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpob3N0LCBpbnQzMl90IHBvcnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzY2hlbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICpyZWFsbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKip1c2VybmFtZSwgdWludDMyX3QgKnVsZW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqcGFzc3dvcmQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqcGxlbik7Ci11aW50
MzJfdCAgICBOUF9MT0FERFMgTlBOX1NjaGVkdWxlVGltZXIoTlBQIGluc3RhbmNlLCB1aW50MzJf
dCBpbnRlcnZhbCwgTlBCb29sIHJlcGVhdCwgdm9pZCAoKnRpbWVyRnVuYykoTlBQIG5wcCwgdWlu
dDMyX3QgdGltZXJJRCkpOwotdm9pZCAgICAgICAgTlBfTE9BRERTIE5QTl9VbnNjaGVkdWxlVGlt
ZXIoTlBQIGluc3RhbmNlLCB1aW50MzJfdCB0aW1lcklEKTsKLU5QRXJyb3IgICAgIE5QX0xPQURE
UyBOUE5fUG9wVXBDb250ZXh0TWVudShOUFAgaW5zdGFuY2UsIE5QTWVudSogbWVudSk7Ci1OUEJv
b2wgICAgICBOUF9MT0FERFMgTlBOX0NvbnZlcnRQb2ludChOUFAgaW5zdGFuY2UsIGRvdWJsZSBz
b3VyY2VYLCBkb3VibGUgc291cmNlWSwgTlBDb29yZGluYXRlU3BhY2Ugc291cmNlU3BhY2UsIGRv
dWJsZSAqZGVzdFgsIGRvdWJsZSAqZGVzdFksIE5QQ29vcmRpbmF0ZVNwYWNlIGRlc3RTcGFjZSk7
Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfSAgLyogZW5kIGV4dGVybiAiQyIgKi8KLSNlbmRpZgot
Ci0jZW5kaWYgLyogUkNfSU5WT0tFRCAqLwotI2lmIGRlZmluZWQoX19PUzJfXykKLSNwcmFnbWEg
cGFjaygpCi0jZW5kaWYKLQotI2VuZGlmIC8qIG5wYXBpX2hfICovCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvbnBydW50aW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJp
ZGdlL25wcnVudGltZS5oCShyZXZpc2lvbiA5NDU4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ucHJ1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzOTMgKzAsMCBAQAotLyogLSotIE1v
ZGU6IEM7IHRhYi13aWR0aDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyBjLWJhc2ljLW9mZnNl
dDogNCAtKi0gKi8KLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIEFwcGxlIENvbXB1dGVyLCBJ
bmMuIGFuZCBUaGUgTW96aWxsYSBGb3VuZGF0aW9uLiAKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICogCi0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lcyBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgb3IgVGhlIE1vemlsbGEKLSAqIEZvdW5kYXRpb24gKCJNb3ppbGxhIikgbm9yIHRo
ZSBuYW1lcyBvZiB0aGVpciBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQKLSAqIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0g
KiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIE1PWklMTEEgQU5EIFRIRUlSIENPTlRSSUJVVE9SUyAi
QVMKLSAqIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRAotICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFLCBNT1pJTExBIE9SCi0gKiBUSEVJ
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAotICogVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRgotICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcKLSAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0jaWZu
ZGVmIF9OUF9SVU5USU1FX0hfCi0jZGVmaW5lIF9OUF9SVU5USU1FX0hfCi0KLSNpbmNsdWRlICJu
cGFwaS5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8q
Ci0gICAgVGhpcyBBUEkgaXMgdXNlZCB0byBmYWNpbGl0YXRlIGJpbmRpbmcgY29kZSB3cml0dGVu
IGluIEMgdG8gc2NyaXB0Ci0gICAgb2JqZWN0cy4gIFRoZSBBUEkgaW4gdGhpcyBoZWFkZXIgZG9l
cyBub3QgYXNzdW1lIHRoZSBwcmVzZW5jZSBvZiBhCi0gICAgdXNlciBhZ2VudC4gIFRoYXQgaXMs
IGl0IGNhbiBiZSB1c2VkIHRvIGJpbmQgQyBjb2RlIHRvIHNjcmlwdGluZwotICAgIGVudmlyb25t
ZW50cyBvdXRzaWRlIG9mIHRoZSBjb250ZXh0IG9mIGEgdXNlciBhZ2VudC4KLSAgICAKLSAgICBI
b3dldmVyLCB0aGUgbm9ybWFsIHVzZSBvZiB0aGUgdGhpcyBBUEkgaXMgaW4gdGhlIGNvbnRleHQg
b2YgYQotICAgIHNjcmlwdGluZyBlbnZpcm9ubWVudCBydW5uaW5nIGluIGEgYnJvd3NlciBvciBv
dGhlciB1c2VyIGFnZW50LgotICAgIEluIHBhcnRpY3VsYXIgaXQgaXMgdXNlZCB0byBzdXBwb3J0
IHRoZSBleHRlbmRlZCBOZXRzY2FwZQotICAgIHNjcmlwdC1hYmlsaXR5IEFQSSBmb3IgcGx1Z2lu
cyAoTlAtU0FQKS4gIE5QLVNBUCBpcyBhbiBleHRlbnNpb24KLSAgICBvZiB0aGUgTmV0c2NhcGUg
cGx1Z2luIEFQSS4gIEFzIHN1Y2ggd2UgaGF2ZSBhZG9wdGVkIHRoZSB1c2Ugb2YKLSAgICB0aGUg
Ik5QIiBwcmVmaXggZm9yIHRoaXMgQVBJLgotCi0gICAgVGhlIGZvbGxvd2luZyBOUHtOfFB9VmFy
aWFibGVzIHdlcmUgYWRkZWQgdG8gdGhlIE5ldHNjYXBlIHBsdWdpbgotICAgIEFQSSAoaW4gbnBh
cGkuaCk6Ci0KLSAgICBOUE5WV2luZG93TlBPYmplY3QKLSAgICBOUE5WUGx1Z2luRWxlbWVudE5Q
T2JqZWN0Ci0gICAgTlBQVnBsdWdpblNjcmlwdGFibGVOUE9iamVjdAotCi0gICAgVGhlc2UgdmFy
aWFibGVzIGFyZSBleHBvc2VkIHRocm91Z2ggTlBOX0dldFZhbHVlKCkgYW5kCi0gICAgTlBQX0dl
dFZhbHVlKCkgKHJlc3BlY3RpdmVseSkgYW5kIGFyZSB1c2VkIHRvIGVzdGFibGlzaCB0aGUKLSAg
ICBpbml0aWFsIGJpbmRpbmcgYmV0d2VlbiB0aGUgdXNlciBhZ2VudCBhbmQgbmF0aXZlIGNvZGUu
ICBUaGUgRE9NCi0gICAgb2JqZWN0cyBpbiB0aGUgdXNlciBhZ2VudCBjYW4gYmUgZXhhbWluZWQg
YW5kIG1hbmlwdWxhdGVkIHVzaW5nCi0gICAgdGhlIE5QTl8gZnVuY3Rpb25zIHRoYXQgb3BlcmF0
ZSBvbiBOUE9iamVjdHMgZGVzY3JpYmVkIGluIHRoaXMKLSAgICBoZWFkZXIuCi0KLSAgICBUbyB0
aGUgZXh0ZW50IHBvc3NpYmxlIHRoZSBhc3N1bXB0aW9ucyBhYm91dCB0aGUgc2NyaXB0aW5nCi0g
ICAgbGFuZ3VhZ2UgdXNlZCBieSB0aGUgc2NyaXB0aW5nIGVudmlyb25tZW50IGhhdmUgYmVlbiBt
aW5pbWl6ZWQuCi0qLwotCi0jZGVmaW5lIE5QX0JFR0lOX01BQ1JPICBkbyB7Ci0jZGVmaW5lIE5Q
X0VORF9NQUNSTyAgICB9IHdoaWxlICgwKQotCi0vKgotICAgIE9iamVjdHMgKG5vbi1wcmltaXRp
dmUgZGF0YSkgcGFzc2VkIGJldHdlZW4gJ0MnIGFuZCBzY3JpcHQgaXMKLSAgICBhbHdheXMgd3Jh
cHBlZCBpbiBhbiBOUE9iamVjdC4gIFRoZSAnaW50ZXJmYWNlJyBvZiBhbiBOUE9iamVjdCBpcwot
ICAgIGRlc2NyaWJlZCBieSBhbiBOUENsYXNzLgotKi8KLXR5cGVkZWYgc3RydWN0IE5QT2JqZWN0
IE5QT2JqZWN0OwotdHlwZWRlZiBzdHJ1Y3QgTlBDbGFzcyBOUENsYXNzOwotCi10eXBlZGVmIGNo
YXIgTlBVVEY4OwotdHlwZWRlZiBzdHJ1Y3QgX05QU3RyaW5nIHsKLSAgICBjb25zdCBOUFVURjgg
KlVURjhDaGFyYWN0ZXJzOwotICAgIHVpbnQzMl90IFVURjhMZW5ndGg7Ci19IE5QU3RyaW5nOwot
Ci10eXBlZGVmIGVudW0gewotICAgIE5QVmFyaWFudFR5cGVfVm9pZCwKLSAgICBOUFZhcmlhbnRU
eXBlX051bGwsCi0gICAgTlBWYXJpYW50VHlwZV9Cb29sLAotICAgIE5QVmFyaWFudFR5cGVfSW50
MzIsCi0gICAgTlBWYXJpYW50VHlwZV9Eb3VibGUsCi0gICAgTlBWYXJpYW50VHlwZV9TdHJpbmcs
Ci0gICAgTlBWYXJpYW50VHlwZV9PYmplY3QKLX0gTlBWYXJpYW50VHlwZTsKLQotdHlwZWRlZiBz
dHJ1Y3QgX05QVmFyaWFudCB7Ci0gICAgTlBWYXJpYW50VHlwZSB0eXBlOwotICAgIHVuaW9uIHsK
LSAgICAgICAgYm9vbCBib29sVmFsdWU7Ci0gICAgICAgIGludDMyX3QgaW50VmFsdWU7Ci0gICAg
ICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKLSAgICAgICAgTlBTdHJpbmcgc3RyaW5nVmFsdWU7Ci0g
ICAgICAgIE5QT2JqZWN0ICpvYmplY3RWYWx1ZTsKLSAgICB9IHZhbHVlOwotfSBOUFZhcmlhbnQ7
Ci0KLS8qCi0gICAgTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgaXMgY2FsbGVkIG9uIGFsbCAnb3V0
JyBwYXJhbWV0ZXJzCi0gICAgcmVmZXJlbmNlcy4gIFNwZWNpZmljYWxseSBpdCBpcyB0byBiZSBj
YWxsZWQgb24gdmFyaWFudHMgdGhhdCBvd24KLSAgICB0aGVpciB2YWx1ZSwgYXMgaXMgdGhlIGNh
c2Ugd2l0aCBhbGwgbm9uLWNvbnN0IE5QVmFyaWFudCoKLSAgICBhcmd1bWVudHMgYWZ0ZXIgYSBz
dWNjZXNzZnVsIGNhbGwgdG8gYW55IG1ldGhvZHMgKGV4Y2VwdCB0aGlzIG9uZSkKLSAgICBpbiB0
aGlzIEFQSS4KLQotICAgIEFmdGVyIGNhbGxpbmcgTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUsIHRo
ZSB0eXBlIG9mIHRoZSB2YXJpYW50Ci0gICAgd2lsbCBiZSBOUFZhcmlhbnRUeXBlX1ZvaWQuCi0q
Lwotdm9pZCBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZShOUFZhcmlhbnQgKnZhcmlhbnQpOwotCi0j
ZGVmaW5lIE5QVkFSSUFOVF9JU19WT0lEKF92KSAgICAoKF92KS50eXBlID09IE5QVmFyaWFudFR5
cGVfVm9pZCkKLSNkZWZpbmUgTlBWQVJJQU5UX0lTX05VTEwoX3YpICAgICgoX3YpLnR5cGUgPT0g
TlBWYXJpYW50VHlwZV9OdWxsKQotI2RlZmluZSBOUFZBUklBTlRfSVNfQk9PTEVBTihfdikgKChf
dikudHlwZSA9PSBOUFZhcmlhbnRUeXBlX0Jvb2wpCi0jZGVmaW5lIE5QVkFSSUFOVF9JU19JTlQz
MihfdikgICAoKF92KS50eXBlID09IE5QVmFyaWFudFR5cGVfSW50MzIpCi0jZGVmaW5lIE5QVkFS
SUFOVF9JU19ET1VCTEUoX3YpICAoKF92KS50eXBlID09IE5QVmFyaWFudFR5cGVfRG91YmxlKQot
I2RlZmluZSBOUFZBUklBTlRfSVNfU1RSSU5HKF92KSAgKChfdikudHlwZSA9PSBOUFZhcmlhbnRU
eXBlX1N0cmluZykKLSNkZWZpbmUgTlBWQVJJQU5UX0lTX09CSkVDVChfdikgICgoX3YpLnR5cGUg
PT0gTlBWYXJpYW50VHlwZV9PYmplY3QpCi0KLSNkZWZpbmUgTlBWQVJJQU5UX1RPX0JPT0xFQU4o
X3YpICgoX3YpLnZhbHVlLmJvb2xWYWx1ZSkKLSNkZWZpbmUgTlBWQVJJQU5UX1RPX0lOVDMyKF92
KSAgICgoX3YpLnZhbHVlLmludFZhbHVlKQotI2RlZmluZSBOUFZBUklBTlRfVE9fRE9VQkxFKF92
KSAgKChfdikudmFsdWUuZG91YmxlVmFsdWUpCi0jZGVmaW5lIE5QVkFSSUFOVF9UT19TVFJJTkco
X3YpICAoKF92KS52YWx1ZS5zdHJpbmdWYWx1ZSkKLSNkZWZpbmUgTlBWQVJJQU5UX1RPX09CSkVD
VChfdikgICgoX3YpLnZhbHVlLm9iamVjdFZhbHVlKQotCi0jZGVmaW5lIFZPSURfVE9fTlBWQVJJ
QU5UKF92KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci1OUF9CRUdJTl9NQUNSTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF92KS50eXBlID0gTlBWYXJpYW50VHlwZV9W
b2lkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF92
KS52YWx1ZS5vYmplY3RWYWx1ZSA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi1OUF9FTkRfTUFDUk8KLQotI2RlZmluZSBOVUxMX1RPX05QVkFSSUFO
VChfdikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
TlBfQkVHSU5fTUFDUk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIChfdikudHlwZSA9IE5QVmFyaWFudFR5cGVfTnVs
bDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChfdiku
dmFsdWUub2JqZWN0VmFsdWUgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotTlBfRU5EX01BQ1JPCi0KLSNkZWZpbmUgQk9PTEVBTl9UT19OUFZBUklB
TlQoX3ZhbCwgX3YpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLU5Q
X0JFR0lOX01BQ1JPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAoX3YpLnR5cGUgPSBOUFZhcmlhbnRUeXBlX0Jvb2w7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoX3YpLnZh
bHVlLmJvb2xWYWx1ZSA9ICEhKF92YWwpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLU5QX0VORF9NQUNSTwotCi0jZGVmaW5lIElOVDMyX1RPX05QVkFSSUFOVChf
dmFsLCBfdikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1OUF9C
RUdJTl9NQUNSTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgKF92KS50eXBlID0gTlBWYXJpYW50VHlwZV9JbnQzMjsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF92KS52YWx1
ZS5pbnRWYWx1ZSA9IF92YWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi1OUF9FTkRfTUFDUk8KLQotI2RlZmluZSBET1VCTEVfVE9fTlBWQVJJQU5UKF92
YWwsIF92KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotTlBfQkVH
SU5fTUFDUk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIChfdikudHlwZSA9IE5QVmFyaWFudFR5cGVfRG91YmxlOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChfdikudmFsdWUu
ZG91YmxlVmFsdWUgPSBfdmFsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotTlBfRU5EX01BQ1JPCi0KLSNkZWZpbmUgU1RSSU5HWl9UT19OUFZBUklBTlQoX3Zh
bCwgX3YpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLU5QX0JFR0lO
X01BQ1JPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICAoX3YpLnR5cGUgPSBOUFZhcmlhbnRUeXBlX1N0cmluZzsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBOUFN0cmluZyBzdHIg
PSB7IF92YWwsIHVpbnQzMl90KHN0cmxlbihfdmFsKSkgfTsgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAoX3YpLnZhbHVlLnN0cmluZ1ZhbHVlID0gc3RyOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLU5QX0VORF9NQUNSTwotCi0jZGVmaW5lIFNU
UklOR05fVE9fTlBWQVJJQU5UKF92YWwsIF9sZW4sIF92KSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi1OUF9CRUdJTl9NQUNSTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF92KS50eXBlID0gTlBW
YXJpYW50VHlwZV9TdHJpbmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgTlBTdHJpbmcgc3RyID0geyBfdmFsLCB1aW50MzJfdChfbGVuKSB9OyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF92KS52YWx1ZS5zdHJpbmdWYWx1ZSA9
IHN0cjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1OUF9F
TkRfTUFDUk8KLQotI2RlZmluZSBPQkpFQ1RfVE9fTlBWQVJJQU5UKF92YWwsIF92KSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotTlBfQkVHSU5fTUFDUk8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIChfdikudHlwZSA9IE5QVmFyaWFudFR5cGVfT2JqZWN0OyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChfdikudmFsdWUub2JqZWN0VmFsdWUgPSBf
dmFsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotTlBfRU5E
X01BQ1JPCi0KLQotLyoKLSAgVHlwZSBtYXBwaW5ncyAoSmF2YVNjcmlwdCB0eXBlcyBoYXZlIGJl
ZW4gdXNlZCBmb3IgaWxsdXN0cmF0aW9uCi0gICAgcHVycG9zZXMpOgotCi0gIEphdmFTY3JpcHQg
ICAgICAgdG8gICAgICAgICAgICAgQyAoTlBWYXJpYW50IHdpdGggdHlwZTopCi0gIHVuZGVmaW5l
ZCAgICAgICAgICAgICAgICAgICAgICAgTlBWYXJpYW50VHlwZV9Wb2lkCi0gIG51bGwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlBWYXJpYW50VHlwZV9OdWxsCi0gIEJvb2xlYW4gICAgICAg
ICAgICAgICAgICAgICAgICAgTlBWYXJpYW50VHlwZV9Cb29sCi0gIE51bWJlciAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlBWYXJpYW50VHlwZV9Eb3VibGUgb3IgTlBWYXJpYW50VHlwZV9JbnQz
MgotICBTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgIE5QVmFyaWFudFR5cGVfU3RyaW5n
Ci0gIE9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgTlBWYXJpYW50VHlwZV9PYmplY3QK
LQotICBDIChOUFZhcmlhbnQgd2l0aCB0eXBlOikgICB0byAgIEphdmFTY3JpcHQKLSAgTlBWYXJp
YW50VHlwZV9Wb2lkICAgICAgICAgICAgICB1bmRlZmluZWQKLSAgTlBWYXJpYW50VHlwZV9OdWxs
ICAgICAgICAgICAgICBudWxsCi0gIE5QVmFyaWFudFR5cGVfQm9vbCAgICAgICAgICAgICAgQm9v
bGVhbgotICBOUFZhcmlhbnRUeXBlX0ludDMyICAgICAgICAgICAgIE51bWJlcgotICBOUFZhcmlh
bnRUeXBlX0RvdWJsZSAgICAgICAgICAgIE51bWJlcgotICBOUFZhcmlhbnRUeXBlX1N0cmluZyAg
ICAgICAgICAgIFN0cmluZwotICBOUFZhcmlhbnRUeXBlX09iamVjdCAgICAgICAgICAgIE9iamVj
dAotKi8KLQotdHlwZWRlZiB2b2lkICpOUElkZW50aWZpZXI7Ci0KLS8qCi0gICAgTlBPYmplY3Rz
IGhhdmUgbWV0aG9kcyBhbmQgcHJvcGVydGllcy4gIE1ldGhvZHMgYW5kIHByb3BlcnRpZXMgYXJl
Ci0gICAgaWRlbnRpZmllZCB3aXRoIE5QSWRlbnRpZmllcnMuICBUaGVzZSBpZGVudGlmaWVycyBt
YXkgYmUgcmVmbGVjdGVkCi0gICAgaW4gc2NyaXB0LiAgTlBJZGVudGlmaWVycyBjYW4gYmUgZWl0
aGVyIHN0cmluZ3Mgb3IgaW50ZWdlcnMsIElPVywKLSAgICBtZXRob2RzIGFuZCBwcm9wZXJ0aWVz
IGNhbiBiZSBpZGVudGlmaWVkIGJ5IGVpdGhlciBzdHJpbmdzIG9yCi0gICAgaW50ZWdlcnMgKGku
ZS4gZm9vWyJiYXIiXSB2cyBmb29bMV0pLiBOUElkZW50aWZpZXJzIGNhbiBiZQotICAgIGNvbXBh
cmVkIHVzaW5nID09LiAgSW4gY2FzZSBvZiBhbnkgZXJyb3JzLCB0aGUgcmVxdWVzdGVkCi0gICAg
TlBJZGVudGlmaWVyKHMpIHdpbGwgYmUgTlVMTC4gTlBJZGVudGlmaWVyIGxpZmV0aW1lIGlzIGNv
bnRyb2xsZWQKLSAgICBieSB0aGUgYnJvd3Nlci4gUGx1Z2lucyBkbyBub3QgbmVlZCB0byB3b3Jy
eSBhYm91dCBtZW1vcnkgbWFuYWdlbWVudAotICAgIHdpdGggcmVnYXJkcyB0byBOUElkZW50aWZp
ZXJzLgotKi8KLU5QSWRlbnRpZmllciBOUE5fR2V0U3RyaW5nSWRlbnRpZmllcihjb25zdCBOUFVU
RjggKm5hbWUpOwotdm9pZCBOUE5fR2V0U3RyaW5nSWRlbnRpZmllcnMoY29uc3QgTlBVVEY4ICoq
bmFtZXMsIGludDMyX3QgbmFtZUNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TlBJZGVudGlmaWVyICppZGVudGlmaWVycyk7Ci1OUElkZW50aWZpZXIgTlBOX0dldEludElkZW50
aWZpZXIoaW50MzJfdCBpbnRpZCk7Ci1ib29sIE5QTl9JZGVudGlmaWVySXNTdHJpbmcoTlBJZGVu
dGlmaWVyIGlkZW50aWZpZXIpOwotCi0vKgotICAgIFRoZSBOUFVURjggcmV0dXJuZWQgZnJvbSBO
UE5fVVRGOEZyb21JZGVudGlmaWVyIFNIT1VMRCBiZSBmcmVlZC4KLSovCi1OUFVURjggKk5QTl9V
VEY4RnJvbUlkZW50aWZpZXIoTlBJZGVudGlmaWVyIGlkZW50aWZpZXIpOwotCi0vKgotICAgIEdl
dCB0aGUgaW50ZWdlciByZXByZXNlbnRlZCBieSBpZGVudGlmaWVyLiBJZiBpZGVudGlmaWVyIGlz
IG5vdCBhbgotICAgIGludGVnZXIgaWRlbnRpZmllciwgdGhlIGJlaGF2aW91ciBpcyB1bmRlZmlu
ZWQuCi0qLwotaW50MzJfdCBOUE5fSW50RnJvbUlkZW50aWZpZXIoTlBJZGVudGlmaWVyIGlkZW50
aWZpZXIpOwotCi0vKgotICAgIE5QT2JqZWN0IGJlaGF2aW9yIGlzIGltcGxlbWVudGVkIHVzaW5n
IHRoZSBmb2xsb3dpbmcgc2V0IG9mCi0gICAgY2FsbGJhY2sgZnVuY3Rpb25zLgotCi0gICAgVGhl
IE5QVmFyaWFudCAqcmVzdWx0IGFyZ3VtZW50IG9mIHRoZXNlIGZ1bmN0aW9ucyAod2hlcmUKLSAg
ICBhcHBsaWNhYmxlKSBzaG91bGQgYmUgcmVsZWFzZWQgdXNpbmcgTlBOX1JlbGVhc2VWYXJpYW50
VmFsdWUoKS4KLSovCi10eXBlZGVmIE5QT2JqZWN0ICooKk5QQWxsb2NhdGVGdW5jdGlvblB0ciko
TlBQIG5wcCwgTlBDbGFzcyAqYUNsYXNzKTsKLXR5cGVkZWYgdm9pZCAoKk5QRGVhbGxvY2F0ZUZ1
bmN0aW9uUHRyKShOUE9iamVjdCAqbnBvYmopOwotdHlwZWRlZiB2b2lkICgqTlBJbnZhbGlkYXRl
RnVuY3Rpb25QdHIpKE5QT2JqZWN0ICpucG9iaik7Ci10eXBlZGVmIGJvb2wgKCpOUEhhc01ldGhv
ZEZ1bmN0aW9uUHRyKShOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBuYW1lKTsKLXR5cGVk
ZWYgYm9vbCAoKk5QSW52b2tlRnVuY3Rpb25QdHIpKE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlm
aWVyIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOUFZh
cmlhbnQgKmFyZ3MsIHVpbnQzMl90IGFyZ0NvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTlBWYXJpYW50ICpyZXN1bHQpOwotdHlwZWRlZiBib29sICgqTlBJbnZva2VE
ZWZhdWx0RnVuY3Rpb25QdHIpKE5QT2JqZWN0ICpucG9iaiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOUFZhcmlhbnQgKmFyZ3MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYXJnQ291bnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlBWYXJpYW50ICpyZXN1bHQp
OwotdHlwZWRlZiBib29sICgqTlBIYXNQcm9wZXJ0eUZ1bmN0aW9uUHRyKShOUE9iamVjdCAqbnBv
YmosIE5QSWRlbnRpZmllciBuYW1lKTsKLXR5cGVkZWYgYm9vbCAoKk5QR2V0UHJvcGVydHlGdW5j
dGlvblB0cikoTlBPYmplY3QgKm5wb2JqLCBOUElkZW50aWZpZXIgbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlBWYXJpYW50ICpyZXN1bHQpOwotdHlwZWRl
ZiBib29sICgqTlBTZXRQcm9wZXJ0eUZ1bmN0aW9uUHRyKShOUE9iamVjdCAqbnBvYmosIE5QSWRl
bnRpZmllciBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBOUFZhcmlhbnQgKnZhbHVlKTsKLXR5cGVkZWYgYm9vbCAoKk5QUmVtb3ZlUHJvcGVydHlG
dW5jdGlvblB0cikoTlBPYmplY3QgKm5wb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOUElkZW50aWZpZXIgbmFtZSk7Ci10eXBlZGVmIGJvb2wgKCpOUEVu
dW1lcmF0aW9uRnVuY3Rpb25QdHIpKE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVyICoqdmFs
dWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpj
b3VudCk7Ci10eXBlZGVmIGJvb2wgKCpOUENvbnN0cnVjdEZ1bmN0aW9uUHRyKShOUE9iamVjdCAq
bnBvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOUFZh
cmlhbnQgKmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBhcmdDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5Q
VmFyaWFudCAqcmVzdWx0KTsKLQotLyoKLSAgICBOUE9iamVjdHMgcmV0dXJuZWQgYnkgY3JlYXRl
LCByZXRhaW4sIGludm9rZSwgYW5kIGdldFByb3BlcnR5IHBhc3MKLSAgICBhIHJlZmVyZW5jZSBj
b3VudCB0byB0aGUgY2FsbGVyLiAgVGhhdCBpcywgdGhlIGNhbGxlZSBhZGRzIGEKLSAgICByZWZl
cmVuY2UgY291bnQgd2hpY2ggcGFzc2VzIHRvIHRoZSBjYWxsZXIuICBJdCBpcyB0aGUgY2FsbGVy
J3MKLSAgICByZXNwb25zaWJpbGl0eSB0byByZWxlYXNlIHRoZSByZXR1cm5lZCBvYmplY3QuCi0K
LSAgICBOUEludm9rZUZ1bmN0aW9uUHRyIGZ1bmN0aW9uIG1heSByZXR1cm4gMCB0byBpbmRpY2F0
ZSBhIHZvaWQKLSAgICByZXN1bHQuCi0KLSAgICBOUEludmFsaWRhdGVGdW5jdGlvblB0ciBpcyBj
YWxsZWQgYnkgdGhlIHNjcmlwdGluZyBlbnZpcm9ubWVudAotICAgIHdoZW4gdGhlIG5hdGl2ZSBj
b2RlIGlzIHNodXRkb3duLiAgQW55IGF0dGVtcHQgdG8gbWVzc2FnZSBhCi0gICAgTlBPYmplY3Qg
aW5zdGFuY2UgYWZ0ZXIgdGhlIGludmFsaWRhdGUgY2FsbGJhY2sgaGFzIGJlZW4KLSAgICBjYWxs
ZWQgd2lsbCByZXN1bHQgaW4gdW5kZWZpbmVkIGJlaGF2aW9yLCBldmVuIGlmIHRoZSBuYXRpdmUg
Y29kZQotICAgIGlzIHN0aWxsIHJldGFpbmluZyB0aG9zZSBOUE9iamVjdCBpbnN0YW5jZXMuICAo
VGhlIHJ1bnRpbWUKLSAgICB3aWxsIHR5cGljYWxseSByZXR1cm4gaW1tZWRpYXRlbHksIHdpdGgg
MCBvciBOVUxMLCBmcm9tIGFuIGF0dGVtcHQKLSAgICB0byBkaXNwYXRjaCB0byBhIE5QT2JqZWN0
LCBidXQgdGhpcyBiZWhhdmlvciBzaG91bGQgbm90IGJlCi0gICAgZGVwZW5kZWQgdXBvbi4pCi0K
LSAgICBUaGUgTlBFbnVtZXJhdGlvbkZ1bmN0aW9uUHRyIGZ1bmN0aW9uIG1heSBwYXNzIGFuIGFy
cmF5IG9mCi0gICAgTlBJZGVudGlmaWVycyBiYWNrIHRvIHRoZSBjYWxsZXIuIFRoZSBjYWxsZWUg
YWxsb2NzIHRoZSBtZW1vcnkgb2YKLSAgICB0aGUgYXJyYXkgdXNpbmcgTlBOX01lbUFsbG9jKCks
IGFuZCBpdCdzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eQotICAgIHRvIHJlbGVhc2UgaXQg
dXNpbmcgTlBOX01lbUZyZWUoKS4KLSovCi1zdHJ1Y3QgTlBDbGFzcwotewotICAgIHVpbnQzMl90
IHN0cnVjdFZlcnNpb247Ci0gICAgTlBBbGxvY2F0ZUZ1bmN0aW9uUHRyIGFsbG9jYXRlOwotICAg
IE5QRGVhbGxvY2F0ZUZ1bmN0aW9uUHRyIGRlYWxsb2NhdGU7Ci0gICAgTlBJbnZhbGlkYXRlRnVu
Y3Rpb25QdHIgaW52YWxpZGF0ZTsKLSAgICBOUEhhc01ldGhvZEZ1bmN0aW9uUHRyIGhhc01ldGhv
ZDsKLSAgICBOUEludm9rZUZ1bmN0aW9uUHRyIGludm9rZTsKLSAgICBOUEludm9rZURlZmF1bHRG
dW5jdGlvblB0ciBpbnZva2VEZWZhdWx0OwotICAgIE5QSGFzUHJvcGVydHlGdW5jdGlvblB0ciBo
YXNQcm9wZXJ0eTsKLSAgICBOUEdldFByb3BlcnR5RnVuY3Rpb25QdHIgZ2V0UHJvcGVydHk7Ci0g
ICAgTlBTZXRQcm9wZXJ0eUZ1bmN0aW9uUHRyIHNldFByb3BlcnR5OwotICAgIE5QUmVtb3ZlUHJv
cGVydHlGdW5jdGlvblB0ciByZW1vdmVQcm9wZXJ0eTsKLSAgICBOUEVudW1lcmF0aW9uRnVuY3Rp
b25QdHIgZW51bWVyYXRlOwotICAgIE5QQ29uc3RydWN0RnVuY3Rpb25QdHIgY29uc3RydWN0Owot
fTsKLQotI2RlZmluZSBOUF9DTEFTU19TVFJVQ1RfVkVSU0lPTiAgICAgIDMKLQotI2RlZmluZSBO
UF9DTEFTU19TVFJVQ1RfVkVSU0lPTl9FTlVNIDIKLSNkZWZpbmUgTlBfQ0xBU1NfU1RSVUNUX1ZF
UlNJT05fQ1RPUiAzCi0KLSNkZWZpbmUgTlBfQ0xBU1NfU1RSVUNUX1ZFUlNJT05fSEFTX0VOVU0o
bnBjbGFzcykgICBcCi0gICAgICAgICgobnBjbGFzcyktPnN0cnVjdFZlcnNpb24gPj0gTlBfQ0xB
U1NfU1RSVUNUX1ZFUlNJT05fRU5VTSkKLQotI2RlZmluZSBOUF9DTEFTU19TVFJVQ1RfVkVSU0lP
Tl9IQVNfQ1RPUihucGNsYXNzKSAgIFwKLSAgICAgICAgKChucGNsYXNzKS0+c3RydWN0VmVyc2lv
biA+PSBOUF9DTEFTU19TVFJVQ1RfVkVSU0lPTl9DVE9SKQotCi1zdHJ1Y3QgTlBPYmplY3Qgewot
ICAgIE5QQ2xhc3MgKl9jbGFzczsKLSAgICB1aW50MzJfdCByZWZlcmVuY2VDb3VudDsKLSAgICAv
KgotICAgICAqIEFkZGl0aW9uYWwgc3BhY2UgbWF5IGJlIGFsbG9jYXRlZCBoZXJlIGJ5IHR5cGVz
IG9mIE5QT2JqZWN0cwotICAgICAqLwotfTsKLQotLyoKLSAgICBJZiB0aGUgY2xhc3MgaGFzIGFu
IGFsbG9jYXRlIGZ1bmN0aW9uLCBOUE5fQ3JlYXRlT2JqZWN0IGludm9rZXMKLSAgICB0aGF0IGZ1
bmN0aW9uLCBvdGhlcndpc2UgYSBOUE9iamVjdCBpcyBhbGxvY2F0ZWQgYW5kCi0gICAgcmV0dXJu
ZWQuIFRoaXMgbWV0aG9kIHdpbGwgaW5pdGlhbGl6ZSB0aGUgcmVmZXJlbmNlQ291bnQgbWVtYmVy
IG9mCi0gICAgdGhlIE5QT2JqZWN0IHRvIDEuCi0qLwotTlBPYmplY3QgKk5QTl9DcmVhdGVPYmpl
Y3QoTlBQIG5wcCwgTlBDbGFzcyAqYUNsYXNzKTsKLQotLyoKLSAgICBJbmNyZW1lbnQgdGhlIE5Q
T2JqZWN0J3MgcmVmZXJlbmNlIGNvdW50LgotKi8KLU5QT2JqZWN0ICpOUE5fUmV0YWluT2JqZWN0
KE5QT2JqZWN0ICpucG9iaik7Ci0KLS8qCi0gICAgRGVjcmVtZW50ZWQgdGhlIE5QT2JqZWN0J3Mg
cmVmZXJlbmNlIGNvdW50LiAgSWYgdGhlIHJlZmVyZW5jZQotICAgIGNvdW50IGdvZXMgdG8gemVy
bywgdGhlIGNsYXNzJ3MgZGVzdHJveSBmdW5jdGlvbiBpcyBpbnZva2UgaWYKLSAgICBzcGVjaWZp
ZWQsIG90aGVyd2lzZSB0aGUgb2JqZWN0IGlzIGZyZWVkIGRpcmVjdGx5LgotKi8KLXZvaWQgTlBO
X1JlbGVhc2VPYmplY3QoTlBPYmplY3QgKm5wb2JqKTsKLQotLyoKLSAgICBGdW5jdGlvbnMgdG8g
YWNjZXNzIHNjcmlwdCBvYmplY3RzIHJlcHJlc2VudGVkIGJ5IE5QT2JqZWN0LgotCi0gICAgQ2Fs
bHMgdG8gc2NyaXB0IG9iamVjdHMgYXJlIHN5bmNocm9ub3VzLiAgSWYgYSBmdW5jdGlvbiByZXR1
cm5zIGEKLSAgICB2YWx1ZSwgaXQgd2lsbCBiZSBzdXBwbGllZCB2aWEgdGhlIHJlc3VsdCBOUFZh
cmlhbnQKLSAgICBhcmd1bWVudC4gU3VjY2Vzc2Z1bCBjYWxscyB3aWxsIHJldHVybiB0cnVlLCBm
YWxzZSB3aWxsIGJlCi0gICAgcmV0dXJuZWQgaW4gY2FzZSBvZiBhbiBlcnJvci4KLSAgICAKLSAg
ICBDYWxscyBtYWRlIGZyb20gcGx1Z2luIGNvZGUgdG8gc2NyaXB0IG11c3QgYmUgbWFkZSBmcm9t
IHRoZSB0aHJlYWQKLSAgICBvbiB3aGljaCB0aGUgcGx1Z2luIHdhcyBpbml0aWFsaXplZC4KLSov
Ci0KLWJvb2wgTlBOX0ludm9rZShOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmll
ciBtZXRob2ROYW1lLAotICAgICAgICAgICAgICAgIGNvbnN0IE5QVmFyaWFudCAqYXJncywgdWlu
dDMyX3QgYXJnQ291bnQsIE5QVmFyaWFudCAqcmVzdWx0KTsKLWJvb2wgTlBOX0ludm9rZURlZmF1
bHQoTlBQIG5wcCwgTlBPYmplY3QgKm5wb2JqLCBjb25zdCBOUFZhcmlhbnQgKmFyZ3MsCi0gICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFyZ0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCk7
Ci1ib29sIE5QTl9FdmFsdWF0ZShOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QU3RyaW5nICpz
Y3JpcHQsCi0gICAgICAgICAgICAgICAgICBOUFZhcmlhbnQgKnJlc3VsdCk7Ci1ib29sIE5QTl9H
ZXRQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICBOUFZhcmlhbnQgKnJlc3VsdCk7Ci1ib29sIE5Q
Tl9TZXRQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBOUFZhcmlhbnQgKnZhbHVlKTsK
LWJvb2wgTlBOX1JlbW92ZVByb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVu
dGlmaWVyIHByb3BlcnR5TmFtZSk7Ci1ib29sIE5QTl9IYXNQcm9wZXJ0eShOUFAgbnBwLCBOUE9i
amVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpOwotYm9vbCBOUE5fSGFzTWV0
aG9kKE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUpOwot
Ym9vbCBOUE5fRW51bWVyYXRlKE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVy
ICoqaWRlbnRpZmllciwKLSAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqY291bnQpOwotYm9v
bCBOUE5fQ29uc3RydWN0KE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgY29uc3QgTlBWYXJpYW50
ICphcmdzLAotICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFyZ0NvdW50LCBOUFZhcmlhbnQg
KnJlc3VsdCk7Ci0KLS8qCi0gICAgTlBOX1NldEV4Y2VwdGlvbiBtYXkgYmUgY2FsbGVkIHRvIHRy
aWdnZXIgYSBzY3JpcHQgZXhjZXB0aW9uIHVwb24KLSAgICByZXR1cm4gZnJvbSBlbnRyeSBwb2lu
dHMgaW50byBOUE9iamVjdHMuICBUeXBpY2FsIHVzYWdlOgotCi0gICAgTlBOX1NldEV4Y2VwdGlv
biAobnBvYmosIG1lc3NhZ2UpOwotKi8KLXZvaWQgTlBOX1NldEV4Y2VwdGlvbihOUE9iamVjdCAq
bnBvYmosIGNvbnN0IE5QVVRGOCAqbWVzc2FnZSk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQot
I2VuZGlmCi0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL25wdHlwZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvbnB0eXBlcy5oCShyZXZpc2lvbiA5
NDU4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ucHR5cGVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTIxICswLDAgQEAKLS8qIC0qLSBNb2RlOiBDOyB0YWItd2lkdGg6IDI7IGluZGVudC10
YWJzLW1vZGU6IG5pbDsgYy1iYXNpYy1vZmZzZXQ6IDIgLSotICovCi0vKiAqKioqKiBCRUdJTiBM
SUNFTlNFIEJMT0NLICoqKioqCi0gKiBWZXJzaW9uOiBNUEwgMS4xL0dQTCAyLjAvTEdQTCAyLjEK
LSAqCi0gKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3pp
bGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24KLSAqIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aAotICogdGhlIExp
Y2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICogaHR0cDov
L3d3dy5tb3ppbGxhLm9yZy9NUEwvCi0gKgotICogU29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywKLSAqIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0
aGUgTGljZW5zZQotICogZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcmlnaHRz
IGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUKLSAqIExpY2Vuc2UuCi0gKgotICogVGhlIE9yaWdp
bmFsIENvZGUgaXMgbW96aWxsYS5vcmcgY29kZS4KLSAqCi0gKiBUaGUgSW5pdGlhbCBEZXZlbG9w
ZXIgb2YgdGhlIE9yaWdpbmFsIENvZGUgaXMKLSAqIG1vemlsbGEub3JnLgotICogUG9ydGlvbnMg
Y3JlYXRlZCBieSB0aGUgSW5pdGlhbCBEZXZlbG9wZXIgYXJlIENvcHlyaWdodCAoQykgMjAwNAot
ICogdGhlIEluaXRpYWwgRGV2ZWxvcGVyLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIENv
bnRyaWJ1dG9yKHMpOgotICogICBKb2hubnkgU3RlbmJhY2sgPGpzdEBtb3ppbGxhLm9yZz4gKE9y
aWdpbmFsIGF1dGhvcikKLSAqCi0gKiBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhp
cyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZgotICogZWl0aGVyIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIgb3IgbGF0ZXIgKHRoZSAiR1BMIiksIG9y
Ci0gKiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4xIG9y
IGxhdGVyICh0aGUgIkxHUEwiKSwKLSAqIGluIHdoaWNoIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2Yg
dGhlIEdQTCBvciB0aGUgTEdQTCBhcmUgYXBwbGljYWJsZSBpbnN0ZWFkCi0gKiBvZiB0aG9zZSBh
Ym92ZS4gSWYgeW91IHdpc2ggdG8gYWxsb3cgdXNlIG9mIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZp
bGUgb25seQotICogdW5kZXIgdGhlIHRlcm1zIG9mIGVpdGhlciB0aGUgR1BMIG9yIHRoZSBMR1BM
LCBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0bwotICogdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlz
IGZpbGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBNUEwsIGluZGljYXRlIHlvdXIKLSAqIGRlY2lz
aW9uIGJ5IGRlbGV0aW5nIHRoZSBwcm92aXNpb25zIGFib3ZlIGFuZCByZXBsYWNlIHRoZW0gd2l0
aCB0aGUgbm90aWNlCi0gKiBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BM
IG9yIHRoZSBMR1BMLiBJZiB5b3UgZG8gbm90IGRlbGV0ZQotICogdGhlIHByb3Zpc2lvbnMgYWJv
dmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlcgot
ICogdGhlIHRlcm1zIG9mIGFueSBvbmUgb2YgdGhlIE1QTCwgdGhlIEdQTCBvciB0aGUgTEdQTC4K
LSAqCi0gKiAqKioqKiBFTkQgTElDRU5TRSBCTE9DSyAqKioqKiAqLwotCi0jaWZuZGVmIG5wdHlw
ZXNfaF8KLSNkZWZpbmUgbnB0eXBlc19oXwotCi0vKgotICogSGVhZGVyIGZpbGUgZm9yIGVuc3Vy
aW5nIHRoYXQgQzk5IHR5cGVzIChbdV1pbnQzMl90LCBbdV1pbnQ2NF90IGFuZCBib29sKSBhbmQK
LSAqIHRydWUvZmFsc2UgbWFjcm9zIGFyZSBhdmFpbGFibGUuCi0gKi8KLQotI2lmIGRlZmluZWQo
V0lOMzIpIHx8IGRlZmluZWQoT1MyKQotICAvKgotICAgKiBXaW4zMiBhbmQgT1MvMiBkb24ndCBr
bm93IEM5OSwgc28gZGVmaW5lIFt1XWludF8xNi8zMi82NCBoZXJlLiBUaGUgYm9vbAotICAgKiBp
cyBwcmVkZWZpbmVkIHRobywgYm90aCBpbiBDIGFuZCBDKysuCi0gICAqLwotICB0eXBlZGVmIHNo
b3J0IGludDE2X3Q7Ci0gIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWludDE2X3Q7Ci0gIHR5cGVk
ZWYgaW50IGludDMyX3Q7Ci0gIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90OwotICB0eXBl
ZGVmIGxvbmcgbG9uZyBpbnQ2NF90OwotICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1aW50
NjRfdDsKLSNlbGlmIGRlZmluZWQoX0FJWCkgfHwgZGVmaW5lZChfX3N1bikgfHwgZGVmaW5lZChf
X29zZl9fKSB8fCBkZWZpbmVkKElSSVgpIHx8IGRlZmluZWQoSFBVWCkKLSAgLyoKLSAgICogQUlY
IGFuZCBTdW5PUyBzaGlwIGEgaW50dHlwZXMuaCBoZWFkZXIgdGhhdCBkZWZpbmVzIFt1XWludDMy
X3QsCi0gICAqIGJ1dCBub3QgYm9vbCBmb3IgQy4KLSAgICovCi0gICNpbmNsdWRlIDxpbnR0eXBl
cy5oPgotCi0gICNpZm5kZWYgX19jcGx1c3BsdXMKLSAgICB0eXBlZGVmIGludCBib29sOwotICAg
ICNkZWZpbmUgdHJ1ZSAgIDEKLSAgICAjZGVmaW5lIGZhbHNlICAwCi0gICNlbmRpZgotI2VsaWYg
ZGVmaW5lZChic2RpKSB8fCBkZWZpbmVkKEZSRUVCU0QpIHx8IGRlZmluZWQoT1BFTkJTRCkKLSAg
LyoKLSAgICogQlNEL09TLCBGcmVlQlNELCBhbmQgT3BlbkJTRCBzaGlwIHN5cy90eXBlcy5oIHRo
YXQgZGVmaW5lIGludDMyX3QgYW5kIAotICAgKiB1X2ludDMyX3QuCi0gICAqLwotICAjaW5jbHVk
ZSA8c3lzL3R5cGVzLmg+Ci0KLSAgLyoKLSAgICogQlNEL09TIHNoaXBzIG5vIGhlYWRlciB0aGF0
IGRlZmluZXMgdWludDMyX3QsIG5vciBib29sIChmb3IgQykKLSAgICovCi0gICNpZiBkZWZpbmVk
KGJzZGkpCi0gIHR5cGVkZWYgdV9pbnQzMl90IHVpbnQzMl90OwotICB0eXBlZGVmIHVfaW50NjRf
dCB1aW50NjRfdDsKLQotICAjaWYgIWRlZmluZWQoX19jcGx1c3BsdXMpCi0gICAgdHlwZWRlZiBp
bnQgYm9vbDsKLSAgICAjZGVmaW5lIHRydWUgICAxCi0gICAgI2RlZmluZSBmYWxzZSAgMAotICAj
ZW5kaWYKLSAgI2Vsc2UKLSAgLyoKLSAgICogRnJlZUJTRCBhbmQgT3BlbkJTRCBkZWZpbmUgdWlu
dDMyX3QgYW5kIGJvb2wuCi0gICAqLwotICAgICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICAgICNp
bmNsdWRlIDxzdGRib29sLmg+Ci0gICNlbmRpZgotI2VsaWYgZGVmaW5lZChCRU9TKQotICAjaW5j
bHVkZSA8aW50dHlwZXMuaD4KLSNlbHNlCi0gIC8qCi0gICAqIEZvciB0aG9zZSB0aGF0IHNoaXAg
YSBzdGFuZGFyZCBDOTkgc3RkaW50LmggaGVhZGVyIGZpbGUsIGluY2x1ZGUKLSAgICogaXQuIENh
bid0IGRvIHRoZSBzYW1lIGZvciBzdGRib29sLmggdGhvLCBzaW5jZSBzb21lIHN5c3RlbXMgc2hp
cAotICAgKiB3aXRoIGEgc3RkYm9vbC5oIGZpbGUgdGhhdCBkb2Vzbid0IGNvbXBpbGUhCi0gICAq
LwotICAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0KLSAgI2lmbmRlZiBfX2NwbHVzcGx1cwotICAgICNp
ZiAhZGVmaW5lZChfX0dOVUNfXykgfHwgKF9fR05VQ19fID4gMiB8fCBfX0dOVUNfTUlOT1JfXyA+
IDk1KQotICAgICAgI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSAgICAjZWxzZQotICAgICAgLyoKLSAg
ICAgICAqIEdDQyAyLjkxIGNhbid0IGRlYWwgd2l0aCBhIHR5cGVkZWYgZm9yIGJvb2wsIGJ1dCBh
ICNkZWZpbmUKLSAgICAgICAqIHdvcmtzLgotICAgICAgICovCi0gICAgICAjZGVmaW5lIGJvb2wg
aW50Ci0gICAgICAjZGVmaW5lIHRydWUgICAxCi0gICAgICAjZGVmaW5lIGZhbHNlICAwCi0gICAg
I2VuZGlmCi0gICNlbmRpZgotI2VuZGlmCi0KLSNlbmRpZiAvKiBucHR5cGVzX2hfICovCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL25wYXBpLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9ucGFwaS5oCShyZXZpc2lvbiA5NDU4MykJKGZyb20gU291cmNlL1dlYkNv
cmUvYnJpZGdlL25wYXBpLmg6OTQ1ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL25wYXBp
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MDUgQEAKKy8qIC0qLSBNb2RlOiBDOyB0YWIt
d2lkdGg6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgYy1iYXNpYy1vZmZzZXQ6IDIgLSotICov
CisvKiAqKioqKiBCRUdJTiBMSUNFTlNFIEJMT0NLICoqKioqCisgKiBWZXJzaW9uOiBNUEwgMS4x
L0dQTCAyLjAvTEdQTCAyLjEKKyAqCisgKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBz
dWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24KKyAqIDEuMSAodGhl
ICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aAorICogdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorICogaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvCisgKgorICogU29mdHdhcmUg
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBiYXNpcywKKyAqIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZQorICogZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcmlnaHRzIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUKKyAqIExpY2Vuc2Uu
CisgKgorICogVGhlIE9yaWdpbmFsIENvZGUgaXMgbW96aWxsYS5vcmcgY29kZS4KKyAqCisgKiBU
aGUgSW5pdGlhbCBEZXZlbG9wZXIgb2YgdGhlIE9yaWdpbmFsIENvZGUgaXMKKyAqIE5ldHNjYXBl
IENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uLgorICogUG9ydGlvbnMgY3JlYXRlZCBieSB0aGUg
SW5pdGlhbCBEZXZlbG9wZXIgYXJlIENvcHlyaWdodCAoQykgMTk5OAorICogdGhlIEluaXRpYWwg
RGV2ZWxvcGVyLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIENvbnRyaWJ1dG9yKHMpOgor
ICoKKyAqIEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5IGJlIHVz
ZWQgdW5kZXIgdGhlIHRlcm1zIG9mCisgKiBlaXRoZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIFZlcnNpb24gMiBvciBsYXRlciAodGhlICJHUEwiKSwgb3IKKyAqIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjEgb3IgbGF0ZXIgKHRoZSAiTEdQ
TCIpLAorICogaW4gd2hpY2ggY2FzZSB0aGUgcHJvdmlzaW9ucyBvZiB0aGUgR1BMIG9yIHRoZSBM
R1BMIGFyZSBhcHBsaWNhYmxlIGluc3RlYWQKKyAqIG9mIHRob3NlIGFib3ZlLiBJZiB5b3Ugd2lz
aCB0byBhbGxvdyB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBvbmx5CisgKiB1bmRl
ciB0aGUgdGVybXMgb2YgZWl0aGVyIHRoZSBHUEwgb3IgdGhlIExHUEwsIGFuZCBub3QgdG8gYWxs
b3cgb3RoZXJzIHRvCisgKiB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIE1QTCwgaW5kaWNhdGUgeW91cgorICogZGVjaXNpb24gYnkgZGVsZXRpbmcg
dGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UKKyAq
IGFuZCBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBHUEwgb3IgdGhlIExHUEwuIElm
IHlvdSBkbyBub3QgZGVsZXRlCisgKiB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQg
bWF5IHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyCisgKiB0aGUgdGVybXMgb2Yg
YW55IG9uZSBvZiB0aGUgTVBMLCB0aGUgR1BMIG9yIHRoZSBMR1BMLgorICoKKyAqICoqKioqIEVO
RCBMSUNFTlNFIEJMT0NLICoqKioqICovCisKKyNpZm5kZWYgbnBhcGlfaF8KKyNkZWZpbmUgbnBh
cGlfaF8KKworI2lmIGRlZmluZWQoX19PUzJfXykKKyNwcmFnbWEgcGFjaygxKQorI2VuZGlmCisK
KyNpbmNsdWRlICJucHR5cGVzLmgiCisKKyNpZiBkZWZpbmVkKF9fT1MyX18pIHx8IGRlZmluZWQo
T1MyKQorI2lmbmRlZiBYUF9PUzIKKyNkZWZpbmUgWFBfT1MyIDEKKyNlbmRpZgorI2VuZGlmCisK
KyNpZmRlZiBJTkNMVURFX0pBVkEKKyNpbmNsdWRlICJqcmkuaCIgICAgICAgICAgICAgICAgLyog
SmF2YSBSdW50aW1lIEludGVyZmFjZSAqLworI2Vsc2UKKyNkZWZpbmUganJlZiAgICB2b2lkICoK
KyNkZWZpbmUgSlJJRW52ICB2b2lkCisjZW5kaWYKKworI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAh
ZGVmaW5lZChfX1NZTUJJQU4zMl9fKQorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpZm5kZWYgWFBf
V0lOCisjZGVmaW5lIFhQX1dJTiAxCisjZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX1NZ
TUJJQU4zMl9fKQorI2lmbmRlZiBYUF9TWU1CSUFOCisjZGVmaW5lIFhQX1NZTUJJQU4gMQorI2Vu
ZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19BUFBMRV9DQ19fKSAmJiAhZGVmaW5lZChYUF9V
TklYKQorI2lmbmRlZiBYUF9NQUNPU1gKKyNkZWZpbmUgWFBfTUFDT1NYIDEKKyNlbmRpZgorI2Vu
ZGlmCisKKyNpZiBkZWZpbmVkKFhQX01BQ09TWCkgJiYgZGVmaW5lZChfX0xQNjRfXykKKyNkZWZp
bmUgTlBfTk9fUVVJQ0tEUkFXCisjZGVmaW5lIE5QX05PX0NBUkJPTgorI2VuZGlmCisKKyNpZiBk
ZWZpbmVkKFhQX01BQ09TWCkKKyNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0
aW9uU2VydmljZXMuaD4KKyNpbmNsdWRlIDxPcGVuR0wvT3BlbkdMLmg+CisjaWZuZGVmIE5QX05P
X0NBUkJPTgorI2luY2x1ZGUgPENhcmJvbi9DYXJib24uaD4KKyNlbmRpZgorI2VuZGlmCisKKyNp
ZiBkZWZpbmVkKFhQX1VOSVgpCisjaW5jbHVkZSA8WDExL1hsaWIuaD4KKyNpbmNsdWRlIDxYMTEv
WHV0aWwuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFhQX1NZ
TUJJQU4pCisjaW5jbHVkZSA8UUV2ZW50PgorI2luY2x1ZGUgPFFSZWdpb24+CisjZW5kaWYKKwor
LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgUGx1Z2luIFZlcnNp
b24gQ29uc3RhbnRzICAgICAgICAgICAgICAgICAgICAgICovCisvKi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwor
CisjZGVmaW5lIE5QX1ZFUlNJT05fTUFKT1IgMAorI2RlZmluZSBOUF9WRVJTSU9OX01JTk9SIDI0
CisKKworLyogVGhlIE9TLzIgdmVyc2lvbiBvZiBOZXRzY2FwZSB1c2VzIFJDX0RBVEEgdG8gZGVm
aW5lIHRoZQorICAgbWltZSB0eXBlcywgZmlsZSBleHRlbnNpb25zLCBldGMgdGhhdCBhcmUgcmVx
dWlyZWQuCisgICBVc2UgYSB2ZXJ0aWNhbCBiYXIgdG8gc2VwYXJhdGUgdHlwZXMsIGVuZCB0eXBl
cyB3aXRoIFwwLgorICAgRmlsZVZlcnNpb24gYW5kIFByb2R1Y3RWZXJzaW9uIGFyZSAzMmJpdCBp
bnRzLCBhbGwgb3RoZXIKKyAgIGVudHJpZXMgYXJlIHN0cmluZ3MgdGhhdCBNVVNUIGJlIHRlcm1p
bmF0ZWQgd2l0aCBhIFwwLgorCitBTiBFWEFNUExFOgorCitSQ0RBVEEgTlBfSU5GT19Qcm9kdWN0
VmVyc2lvbiB7IDEsMCwwLDEsfQorCitSQ0RBVEEgTlBfSU5GT19NSU1FVHlwZSAgICB7ICJ2aWRl
by94LXZpZGVvfCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2aWRlby94LWZsaWNr
XDAiIH0KK1JDREFUQSBOUF9JTkZPX0ZpbGVFeHRlbnRzIHsgImF2aXwiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZmxjXDAiIH0KK1JDREFUQSBOUF9JTkZPX0ZpbGVPcGVuTmFtZXsg
Ik1NT1MyIHZpZGVvIHBsYXllcigqLmF2aSl8IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk1NT1MyIEZsYy9GbGkgcGxheWVyKCouZmxjKVwwIiB9CisKK1JDREFUQSBOUF9JTkZPX0Zp
bGVWZXJzaW9uICAgICAgIHsgMSwwLDAsMSB9CitSQ0RBVEEgTlBfSU5GT19Db21wYW55TmFtZSAg
ICAgICB7ICJOZXRzY2FwZSBDb21tdW5pY2F0aW9uc1wwIiB9CitSQ0RBVEEgTlBfSU5GT19GaWxl
RGVzY3JpcHRpb24gICB7ICJOUEFWSTMyIEV4dGVuc2lvbiBETExcMCIKK1JDREFUQSBOUF9JTkZP
X0ludGVybmFsTmFtZSAgICAgIHsgIk5QQVZJMzJcMCIgKQorUkNEQVRBIE5QX0lORk9fTGVnYWxD
b3B5cmlnaHQgICAgeyAiQ29weXJpZ2h0IE5ldHNjYXBlIENvbW11bmljYXRpb25zIFwyNTEgMTk5
NlwwIgorUkNEQVRBIE5QX0lORk9fT3JpZ2luYWxGaWxlbmFtZSAgeyAiTlZBUEkzMi5ETEwiIH0K
K1JDREFUQSBOUF9JTkZPX1Byb2R1Y3ROYW1lICAgICAgIHsgIk5QQVZJMzIgRHluYW1pYyBMaW5r
IExpYnJhcnlcMCIgfQorKi8KKy8qIFJDX0RBVEEgdHlwZXMgZm9yIHZlcnNpb24gaW5mbyAtIHJl
cXVpcmVkICovCisjZGVmaW5lIE5QX0lORk9fUHJvZHVjdFZlcnNpb24gICAgICAxCisjZGVmaW5l
IE5QX0lORk9fTUlNRVR5cGUgICAgICAgICAgICAyCisjZGVmaW5lIE5QX0lORk9fRmlsZU9wZW5O
YW1lICAgICAgICAzCisjZGVmaW5lIE5QX0lORk9fRmlsZUV4dGVudHMgICAgICAgICA0CisvKiBS
Q19EQVRBIHR5cGVzIGZvciB2ZXJzaW9uIGluZm8gLSB1c2VkIGlmIGZvdW5kICovCisjZGVmaW5l
IE5QX0lORk9fRmlsZURlc2NyaXB0aW9uICAgICA1CisjZGVmaW5lIE5QX0lORk9fUHJvZHVjdE5h
bWUgICAgICAgICA2CisvKiBSQ19EQVRBIHR5cGVzIGZvciB2ZXJzaW9uIGluZm8gLSBvcHRpb25h
bCAqLworI2RlZmluZSBOUF9JTkZPX0NvbXBhbnlOYW1lICAgICAgICAgNworI2RlZmluZSBOUF9J
TkZPX0ZpbGVWZXJzaW9uICAgICAgICAgOAorI2RlZmluZSBOUF9JTkZPX0ludGVybmFsTmFtZSAg
ICAgICAgOQorI2RlZmluZSBOUF9JTkZPX0xlZ2FsQ29weXJpZ2h0ICAgICAgMTAKKyNkZWZpbmUg
TlBfSU5GT19PcmlnaW5hbEZpbGVuYW1lICAgIDExCisKKyNpZm5kZWYgUkNfSU5WT0tFRAorCisv
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLworLyogICAgICAgICAgICAgICAgICAgICAgIERlZmluaXRpb24gb2Yg
QmFzaWMgVHlwZXMgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisK
KyNpZm5kZWYgRkFMU0UKKyNkZWZpbmUgRkFMU0UgKDApCisjZW5kaWYKKyNpZm5kZWYgVFJVRQor
I2RlZmluZSBUUlVFICgxKQorI2VuZGlmCisjaWZuZGVmIE5VTEwKKyNkZWZpbmUgTlVMTCAoMEwp
CisjZW5kaWYKKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIE5QQm9vbDsKK3R5cGVkZWYgaW50MTZf
dCAgICAgICBOUEVycm9yOwordHlwZWRlZiBpbnQxNl90ICAgICAgIE5QUmVhc29uOwordHlwZWRl
ZiBjaGFyKiAgICAgICAgIE5QTUlNRVR5cGU7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiAgICAg
ICAgICAgICAgICAgICAgICAgU3RydWN0dXJlcyBhbmQgZGVmaW5pdGlvbnMgICAgICAgICAgICAg
ICAgICAgICAqLworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworI2lmICFkZWZpbmVkKF9fTFA2NF9fKQor
I2lmIGRlZmluZWQoWFBfTUFDT1NYKQorI3ByYWdtYSBvcHRpb25zIGFsaWduPW1hYzY4aworI2Vu
ZGlmCisjZW5kaWYgLyogX19MUDY0X18gKi8KKworLyoKKyAqICBOUFAgaXMgYSBwbHVnLWluJ3Mg
b3BhcXVlIGluc3RhbmNlIGhhbmRsZQorICovCit0eXBlZGVmIHN0cnVjdCBfTlBQCit7CisgIHZv
aWQqIHBkYXRhOyAgICAgIC8qIHBsdWctaW4gcHJpdmF0ZSBkYXRhICovCisgIHZvaWQqIG5kYXRh
OyAgICAgIC8qIG5ldHNjYXBlIHByaXZhdGUgZGF0YSAqLworfSBOUFBfdDsKKwordHlwZWRlZiBO
UFBfdCogIE5QUDsKKwordHlwZWRlZiBzdHJ1Y3QgX05QU3RyZWFtCit7CisgIHZvaWQqICAgIHBk
YXRhOyAvKiBwbHVnLWluIHByaXZhdGUgZGF0YSAqLworICB2b2lkKiAgICBuZGF0YTsgLyogbmV0
c2NhcGUgcHJpdmF0ZSBkYXRhICovCisgIGNvbnN0ICAgIGNoYXIqIHVybDsKKyAgdWludDMyX3Qg
ZW5kOworICB1aW50MzJfdCBsYXN0bW9kaWZpZWQ7CisgIHZvaWQqICAgIG5vdGlmeURhdGE7Cisg
IGNvbnN0ICAgIGNoYXIqIGhlYWRlcnM7IC8qIFJlc3BvbnNlIGhlYWRlcnMgZnJvbSBob3N0Lgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBFeGlzdHMgb25seSBmb3IgPj0gTlBWRVJTX0hB
U19SRVNQT05TRV9IRUFERVJTLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBVc2VkIGZv
ciBIVFRQIG9ubHk7IE5VTEwgZm9yIG5vbi1IVFRQLgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKiBBdmFpbGFibGUgZnJvbSBOUFBfTmV3U3RyZWFtIG9ud2FyZHMuCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqIFBsdWdpbiBzaG91bGQgY29weSB0aGlzIGRhdGEgYmVmb3JlIHN0b3Jp
bmcgaXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluY2x1ZGVzIEhUVFAgc3RhdHVz
IGxpbmUgYW5kIGFsbCBoZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBwcmVm
ZXJhYmx5IHZlcmJhdGltIGFzIHJlY2VpdmVkIGZyb20gc2VydmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKiBoZWFkZXJzIGZvcm1hdHRlZCBhcyBpbiBIVFRQICgiSGVhZGVyOiBWYWx1
ZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBhbmQgbmV3bGluZXMgKFxuLCBOT1Qg
XHJcbikgc2VwYXJhdGluZyBsaW5lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICogVGVy
bWluYXRlZCBieSBcblwwIChOT1QgXG5cblwwKS4gKi8KK30gTlBTdHJlYW07CisKK3R5cGVkZWYg
c3RydWN0IF9OUEJ5dGVSYW5nZQoreworICBpbnQzMl90ICBvZmZzZXQ7IC8qIG5lZ2F0aXZlIG9m
ZnNldCBtZWFucyBmcm9tIHRoZSBlbmQgKi8KKyAgdWludDMyX3QgbGVuZ3RoOworICBzdHJ1Y3Qg
X05QQnl0ZVJhbmdlKiBuZXh0OworfSBOUEJ5dGVSYW5nZTsKKwordHlwZWRlZiBzdHJ1Y3QgX05Q
U2F2ZWREYXRhCit7CisgIGludDMyX3QgbGVuOworICB2b2lkKiAgIGJ1ZjsKK30gTlBTYXZlZERh
dGE7CisKK3R5cGVkZWYgc3RydWN0IF9OUFJlY3QKK3sKKyAgdWludDE2X3QgdG9wOworICB1aW50
MTZfdCBsZWZ0OworICB1aW50MTZfdCBib3R0b207CisgIHVpbnQxNl90IHJpZ2h0OworfSBOUFJl
Y3Q7CisKK3R5cGVkZWYgc3RydWN0IF9OUFNpemUKK3sKKyAgaW50MzJfdCB3aWR0aDsKKyAgaW50
MzJfdCBoZWlnaHQ7Cit9IE5QU2l6ZTsKKwordHlwZWRlZiBlbnVtIHsKKyAgTlBGb2N1c05leHQg
PSAwLAorICBOUEZvY3VzUHJldmlvdXMgPSAxCit9IE5QRm9jdXNEaXJlY3Rpb247CisKKy8qIFJl
dHVybiB2YWx1ZXMgZm9yIE5QUF9IYW5kbGVFdmVudCAqLworI2RlZmluZSBrTlBFdmVudE5vdEhh
bmRsZWQgMAorI2RlZmluZSBrTlBFdmVudEhhbmRsZWQgMQorLyogRXhhY3QgbWVhbmluZyBtdXN0
IGJlIHNwZWMnZCBpbiBldmVudCBtb2RlbC4gKi8KKyNkZWZpbmUga05QRXZlbnRTdGFydElNRSAy
CisKKyNpZiBkZWZpbmVkKFhQX1VOSVgpCisvKgorICogVW5peCBzcGVjaWZpYyBzdHJ1Y3R1cmVz
IGFuZCBkZWZpbml0aW9ucworICovCisKKy8qCisgKiBDYWxsYmFjayBTdHJ1Y3R1cmVzLgorICoK
KyAqIFRoZXNlIGFyZSB1c2VkIHRvIHBhc3MgYWRkaXRpb25hbCBwbGF0Zm9ybSBzcGVjaWZpYyBp
bmZvcm1hdGlvbi4KKyAqLworZW51bSB7CisgIE5QX1NFVFdJTkRPVyA9IDEsCisgIE5QX1BSSU5U
Cit9OworCit0eXBlZGVmIHN0cnVjdAoreworICBpbnQzMl90IHR5cGU7Cit9IE5QQW55Q2FsbGJh
Y2tTdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIGludDMyX3QgICAgICB0eXBlOworICBE
aXNwbGF5KiAgICAgZGlzcGxheTsKKyAgVmlzdWFsKiAgICAgIHZpc3VhbDsKKyAgQ29sb3JtYXAg
ICAgIGNvbG9ybWFwOworICB1bnNpZ25lZCBpbnQgZGVwdGg7Cit9IE5QU2V0V2luZG93Q2FsbGJh
Y2tTdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIGludDMyX3QgdHlwZTsKKyAgRklMRSog
ZnA7Cit9IE5QUHJpbnRDYWxsYmFja1N0cnVjdDsKKworI2VuZGlmIC8qIFhQX1VOSVggKi8KKwor
I2lmIGRlZmluZWQoWFBfTUFDT1NYKQordHlwZWRlZiBlbnVtIHsKKyNpZm5kZWYgTlBfTk9fUVVJ
Q0tEUkFXCisgIE5QRHJhd2luZ01vZGVsUXVpY2tEcmF3ID0gMCwKKyNlbmRpZgorICBOUERyYXdp
bmdNb2RlbENvcmVHcmFwaGljcyA9IDEsCisgIE5QRHJhd2luZ01vZGVsT3BlbkdMID0gMiwKKyAg
TlBEcmF3aW5nTW9kZWxDb3JlQW5pbWF0aW9uID0gMworfSBOUERyYXdpbmdNb2RlbDsKKwordHlw
ZWRlZiBlbnVtIHsKKyNpZm5kZWYgTlBfTk9fQ0FSQk9OCisgIE5QRXZlbnRNb2RlbENhcmJvbiA9
IDAsCisjZW5kaWYKKyAgTlBFdmVudE1vZGVsQ29jb2EgPSAxCit9IE5QRXZlbnRNb2RlbDsKKyNl
bmRpZgorCisvKgorICogICBUaGUgZm9sbG93aW5nIG1hc2tzIGFyZSBhcHBsaWVkIG9uIGNlcnRh
aW4gcGxhdGZvcm1zIHRvIE5QTlYgYW5kCisgKiAgIE5QUFYgc2VsZWN0b3JzIHRoYXQgcGFzcyBh
cm91bmQgcG9pbnRlcnMgdG8gQ09NIGludGVyZmFjZXMuIE5ld2VyCisgKiAgIGNvbXBpbGVycyBv
biBzb21lIHBsYXRmb3JtcyBtYXkgZ2VuZXJhdGUgdnRhYmxlcyB0aGF0IGFyZSBub3QKKyAqICAg
Y29tcGF0aWJsZSB3aXRoIG9sZGVyIGNvbXBpbGVycy4gVG8gcHJldmVudCBvbGRlciBwbHVnaW5z
IGZyb20KKyAqICAgbm90IHVuZGVyc3RhbmRpbmcgYSBuZXcgYnJvd3NlcidzIEFCSSwgdGhlc2Ug
bWFza3MgY2hhbmdlIHRoZQorICogICB2YWx1ZXMgb2YgdGhvc2Ugc2VsZWN0b3JzIG9uIHRob3Nl
IHBsYXRmb3Jtcy4gVG8gcmVtYWluIGJhY2t3YXJkcworICogICBjb21wYXRpYmxlIHdpdGggZGlm
ZmVyZW50IHZlcnNpb25zIG9mIHRoZSBicm93c2VyLCBwbHVnaW5zIGNhbgorICogICB1c2UgdGhl
c2UgbWFza3MgdG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5lIGFuZCB1c2UgdGhlIGNvcnJlY3QgQysr
CisgKiAgIEFCSSB0aGF0IHRoZSBicm93c2VyIGlzIGV4cGVjdGluZy4gVGhpcyBkb2VzIG5vdCBh
cHBseSB0byBXaW5kb3dzCisgKiAgIGFzIE1pY3Jvc29mdCdzIENPTSBBQkkgd2lsbCBsaWtlbHkg
bm90IGNoYW5nZS4KKyAqLworCisjZGVmaW5lIE5QX0FCSV9HQ0MzX01BU0sgIDB4MTAwMDAwMDAK
Ky8qCisgKiAgIGdjYyAzLnggZ2VuZXJhdGVkIHZ0YWJsZXMgb24gVU5JWCBhbmQgT1NYIGFyZSBp
bmNvbXBhdGlibGUgd2l0aAorICogICBwcmV2aW91cyBjb21waWxlcnMuCisgKi8KKyNpZiAoZGVm
aW5lZChYUF9VTklYKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gMykpCisj
ZGVmaW5lIF9OUF9BQklfTUlYSU5fRk9SX0dDQzMgTlBfQUJJX0dDQzNfTUFTSworI2Vsc2UKKyNk
ZWZpbmUgX05QX0FCSV9NSVhJTl9GT1JfR0NDMyAwCisjZW5kaWYKKworI2lmIGRlZmluZWQoWFBf
TUFDT1NYKQorI2RlZmluZSBOUF9BQklfTUFDSE9fTUFTSyAweDAxMDAwMDAwCisjZGVmaW5lIF9O
UF9BQklfTUlYSU5fRk9SX01BQ0hPIE5QX0FCSV9NQUNIT19NQVNLCisjZWxzZQorI2RlZmluZSBf
TlBfQUJJX01JWElOX0ZPUl9NQUNITyAwCisjZW5kaWYKKworI2RlZmluZSBOUF9BQklfTUFTSyAo
X05QX0FCSV9NSVhJTl9GT1JfR0NDMyB8IF9OUF9BQklfTUlYSU5fRk9SX01BQ0hPKQorCisvKgor
ICogTGlzdCBvZiB2YXJpYWJsZSBuYW1lcyBmb3Igd2hpY2ggTlBQX0dldFZhbHVlIHNoYWxsIGJl
IGltcGxlbWVudGVkCisgKi8KK3R5cGVkZWYgZW51bSB7CisgIE5QUFZwbHVnaW5OYW1lU3RyaW5n
ID0gMSwKKyAgTlBQVnBsdWdpbkRlc2NyaXB0aW9uU3RyaW5nLAorICBOUFBWcGx1Z2luV2luZG93
Qm9vbCwKKyAgTlBQVnBsdWdpblRyYW5zcGFyZW50Qm9vbCwKKyAgTlBQVmphdmFDbGFzcywgICAg
ICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLworICBOUFBWcGx1Z2lu
V2luZG93U2l6ZSwgICAgICAgICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCisgIE5Q
UFZwbHVnaW5UaW1lckludGVydmFsLCAgICAgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQg
Ki8KKyAgTlBQVnBsdWdpblNjcmlwdGFibGVJbnN0YW5jZSA9ICgxMCB8IE5QX0FCSV9NQVNLKSwg
LyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLworICBOUFBWcGx1Z2luU2NyaXB0YWJsZUlJ
RCA9IDExLCAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCisgIE5QUFZqYXZhc2NyaXB0
UHVzaENhbGxlckJvb2wgPSAxMiwgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KKyAg
TlBQVnBsdWdpbktlZXBMaWJyYXJ5SW5NZW1vcnkgPSAxMywgLyogTm90IGltcGxlbWVudGVkIGlu
IFdlYktpdCAqLworICBOUFBWcGx1Z2luTmVlZHNYRW1iZWQgICAgICAgICA9IDE0LCAvKiBOb3Qg
aW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCisKKyAgLyogR2V0IHRoZSBOUE9iamVjdCBmb3Igc2Ny
aXB0aW5nIHRoZSBwbHVnaW4uIEludHJvZHVjZWQgaW4gTlBBUEkgbWlub3IgdmVyc2lvbiAxNC4K
KyAgICovCisgIE5QUFZwbHVnaW5TY3JpcHRhYmxlTlBPYmplY3QgID0gMTUsCisKKyAgLyogR2V0
IHRoZSBwbHVnaW4gdmFsdWUgKGFzIFwwLXRlcm1pbmF0ZWQgVVRGLTggc3RyaW5nIGRhdGEpIGZv
cgorICAgKiBmb3JtIHN1Ym1pc3Npb24gaWYgdGhlIHBsdWdpbiBpcyBwYXJ0IG9mIGEgZm9ybS4g
VXNlCisgICAqIE5QTl9NZW1BbGxvYygpIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIHN0cmlu
ZyBkYXRhLiBJbnRyb2R1Y2VkCisgICAqIGluIE5QQVBJIG1pbm9yIHZlcnNpb24gMTUuCisgICAq
LworICBOUFBWZm9ybVZhbHVlID0gMTYsICAgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQg
Ki8KKworICBOUFBWcGx1Z2luVXJsUmVxdWVzdHNEaXNwbGF5ZWRCb29sID0gMTcsIC8qIE5vdCBp
bXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KKworICAvKiBDaGVja3MgaWYgdGhlIHBsdWdpbiBpcyBp
bnRlcmVzdGVkIGluIHJlY2VpdmluZyB0aGUgaHR0cCBib2R5IG9mCisgICAqIGFsbCBodHRwIHJl
cXVlc3RzIChpbmNsdWRpbmcgZmFpbGVkIG9uZXMsIGh0dHAgc3RhdHVzICE9IDIwMCkuCisgICAq
LworICBOUFBWcGx1Z2luV2FudHNBbGxOZXR3b3JrU3RyZWFtcyA9IDE4LAorCisgIC8qIEJyb3dz
ZXJzIGNhbiByZXRyaWV2ZSBhIG5hdGl2ZSBBVEsgYWNjZXNzaWJpbGl0eSBwbHVnIElEIHZpYSB0
aGlzIHZhcmlhYmxlLiAqLworICBOUFBWcGx1Z2luTmF0aXZlQWNjZXNzaWJsZUF0a1BsdWdJZCA9
IDE5LAorCisgIC8qIENoZWNrcyB0byBzZWUgaWYgdGhlIHBsdWctaW4gd291bGQgbGlrZSB0aGUg
YnJvd3NlciB0byBsb2FkIHRoZSAic3JjIiBhdHRyaWJ1dGUuICovCisgIE5QUFZwbHVnaW5DYW5j
ZWxTcmNTdHJlYW0gPSAyMAorCisjaWYgZGVmaW5lZChYUF9NQUNPU1gpCisgIC8qIFVzZWQgZm9y
IG5lZ290aWF0aW5nIGRyYXdpbmcgbW9kZWxzICovCisgICwgTlBQVnBsdWdpbkRyYXdpbmdNb2Rl
bCA9IDEwMDAKKyAgLyogVXNlZCBmb3IgbmVnb3RpYXRpbmcgZXZlbnQgbW9kZWxzICovCisgICwg
TlBQVnBsdWdpbkV2ZW50TW9kZWwgPSAxMDAxCisgIC8qIEluIHRoZSBOUERyYXdpbmdNb2RlbENv
cmVBbmltYXRpb24gZHJhd2luZyBtb2RlbCwgdGhlIGJyb3dzZXIgYXNrcyB0aGUgcGx1Zy1pbiBm
b3IgYSBDb3JlIEFuaW1hdGlvbiBsYXllci4gKi8KKyAgLCBOUFBWcGx1Z2luQ29yZUFuaW1hdGlv
bkxheWVyID0gMTAwMworI2VuZGlmCisKKyNpZiBkZWZpbmVkKE1PWl9QTEFURk9STV9NQUVNTykg
JiYgKE1PWl9QTEFURk9STV9NQUVNTyA+PSA1KQorICAsIE5QUFZwbHVnaW5XaW5kb3dsZXNzTG9j
YWxCb29sID0gMjAwMgorI2VuZGlmCit9IE5QUFZhcmlhYmxlOworCisvKgorICogTGlzdCBvZiB2
YXJpYWJsZSBuYW1lcyBmb3Igd2hpY2ggTlBOX0dldFZhbHVlIHNob3VsZCBiZSBpbXBsZW1lbnRl
ZC4KKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgTlBOVnhEaXNwbGF5ID0gMSwKKyAgTlBOVnh0QXBw
Q29udGV4dCwKKyAgTlBOVm5ldHNjYXBlV2luZG93LAorICBOUE5WamF2YXNjcmlwdEVuYWJsZWRC
b29sLAorICBOUE5WYXNkRW5hYmxlZEJvb2wsCisgIE5QTlZpc09mZmxpbmVCb29sLAorCisgIE5Q
TlZzZXJ2aWNlTWFuYWdlciA9ICgxMCB8IE5QX0FCSV9NQVNLKSwgIC8qIE5vdCBpbXBsZW1lbnRl
ZCBpbiBXZWJLaXQgKi8KKyAgTlBOVkRPTUVsZW1lbnQgICAgID0gKDExIHwgTlBfQUJJX01BU0sp
LCAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLworICBOUE5WRE9NV2luZG93ICAgICAg
PSAoMTIgfCBOUF9BQklfTUFTSyksICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCisg
IE5QTlZUb29sa2l0ICAgICAgICA9ICgxMyB8IE5QX0FCSV9NQVNLKSwgIC8qIE5vdCBpbXBsZW1l
bnRlZCBpbiBXZWJLaXQgKi8KKyAgTlBOVlN1cHBvcnRzWEVtYmVkQm9vbCA9IDE0LCAgICAgICAg
ICAgICAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLworCisgIC8qIEdldCB0aGUgTlBP
YmplY3Qgd3JhcHBlciBmb3IgdGhlIGJyb3dzZXIgd2luZG93LiAqLworICBOUE5WV2luZG93TlBP
YmplY3QgPSAxNSwKKworICAvKiBHZXQgdGhlIE5QT2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBwbHVn
aW5zIERPTSBlbGVtZW50LiAqLworICBOUE5WUGx1Z2luRWxlbWVudE5QT2JqZWN0ID0gMTYsCisK
KyAgTlBOVlN1cHBvcnRzV2luZG93bGVzcyA9IDE3LAorCisgIE5QTlZwcml2YXRlTW9kZUJvb2wg
PSAxOAorCisjaWYgZGVmaW5lZChYUF9NQUNPU1gpCisgIC8qIFVzZWQgZm9yIG5lZ290aWF0aW5n
IGRyYXdpbmcgbW9kZWxzICovCisgICwgTlBOVnBsdWdpbkRyYXdpbmdNb2RlbCA9IDEwMDAKKyNp
Zm5kZWYgTlBfTk9fUVVJQ0tEUkFXCisgICwgTlBOVnN1cHBvcnRzUXVpY2tEcmF3Qm9vbCA9IDIw
MDAKKyNlbmRpZgorICAsIE5QTlZzdXBwb3J0c0NvcmVHcmFwaGljc0Jvb2wgPSAyMDAxCisgICwg
TlBOVnN1cHBvcnRzT3BlbkdMQm9vbCA9IDIwMDIKKyAgLCBOUE5Wc3VwcG9ydHNDb3JlQW5pbWF0
aW9uQm9vbCA9IDIwMDMKKyNpZm5kZWYgTlBfTk9fQ0FSQk9OCisgICwgTlBOVnN1cHBvcnRzQ2Fy
Ym9uQm9vbCA9IDMwMDAgLyogVFJVRSBpZiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0aGUgQ2FyYm9u
IGV2ZW50IG1vZGVsICovCisjZW5kaWYKKyAgLCBOUE5Wc3VwcG9ydHNDb2NvYUJvb2wgPSAzMDAx
IC8qIFRSVUUgaWYgdGhlIGJyb3dzZXIgc3VwcG9ydHMgdGhlIENvY29hIGV2ZW50IG1vZGVsICov
CisgICwgTlBOVnN1cHBvcnRzVXBkYXRlZENvY29hVGV4dElucHV0Qm9vbCA9IDMwMDIgLyogVFJV
RSBpZiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0aGUgdXBkYXRlZAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvY29hIHRleHQgaW5wdXQgc3BlY2lm
aWNhdGlvbi4gKi8KKyAgLCBOUE5Wc3VwcG9ydHNDb21wb3NpdGluZ0NvcmVBbmltYXRpb25QbHVn
aW5zQm9vbCA9IDc0NjU2IC8qIFRSVUUgaWYgdGhlIGJyb3dzZXIgc3VwcG9ydHMKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENB
IG1vZGVsIGNvbXBvc2l0aW5nICovCisjZW5kaWYgLyogWFBfTUFDT1NYICovCisjaWYgZGVmaW5l
ZChNT1pfUExBVEZPUk1fTUFFTU8pICYmIChNT1pfUExBVEZPUk1fTUFFTU8gPj0gNSkKKyAgLCBO
UE5WU3VwcG9ydHNXaW5kb3dsZXNzTG9jYWwgPSAyMDAyCisjZW5kaWYKK30gTlBOVmFyaWFibGU7
CisKK3R5cGVkZWYgZW51bSB7CisgIE5QTlVSTFZDb29raWUgPSA1MDEsCisgIE5QTlVSTFZQcm94
eQorfSBOUE5VUkxWYXJpYWJsZTsKKworLyoKKyAqIFRoZSB0eXBlIG9mIFRvb2xraXQgdGhlIHdp
ZGdldHMgdXNlCisgKi8KK3R5cGVkZWYgZW51bSB7CisgIE5QTlZHdGsxMiA9IDEsCisgIE5QTlZH
dGsyCit9IE5QTlRvb2xraXRUeXBlOworCisvKgorICogVGhlIHR5cGUgb2YgYSBOUFdpbmRvdyAt
IGl0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZGF0YSBzdHJ1Y3R1cmUKKyAqIHJldHVybmVk
IGluIHRoZSB3aW5kb3cgZmllbGQuCisgKi8KK3R5cGVkZWYgZW51bSB7CisgIE5QV2luZG93VHlw
ZVdpbmRvdyA9IDEsCisgIE5QV2luZG93VHlwZURyYXdhYmxlCit9IE5QV2luZG93VHlwZTsKKwor
dHlwZWRlZiBzdHJ1Y3QgX05QV2luZG93Cit7CisgIHZvaWQqIHdpbmRvdzsgIC8qIFBsYXRmb3Jt
IHNwZWNpZmljIHdpbmRvdyBoYW5kbGUgKi8KKyAgICAgICAgICAgICAgICAgLyogT1MvMjogeCAt
IFBvc2l0aW9uIG9mIGJvdHRvbSBsZWZ0IGNvcm5lciAqLworICAgICAgICAgICAgICAgICAvKiBP
Uy8yOiB5IC0gcmVsYXRpdmUgdG8gdmlzaWJsZSBuZXRzY2FwZSB3aW5kb3cgKi8KKyAgaW50MzJf
dCAgeDsgICAgICAvKiBQb3NpdGlvbiBvZiB0b3AgbGVmdCBjb3JuZXIgcmVsYXRpdmUgKi8KKyAg
aW50MzJfdCAgeTsgICAgICAvKiB0byBhIG5ldHNjYXBlIHBhZ2UuICovCisgIHVpbnQzMl90IHdp
ZHRoOyAgLyogTWF4aW11bSB3aW5kb3cgc2l6ZSAqLworICB1aW50MzJfdCBoZWlnaHQ7CisgIE5Q
UmVjdCAgIGNsaXBSZWN0OyAvKiBDbGlwcGluZyByZWN0YW5nbGUgaW4gcG9ydCBjb29yZGluYXRl
cyAqLworI2lmIGRlZmluZWQoWFBfVU5JWCkgfHwgZGVmaW5lZChYUF9TWU1CSUFOKQorICB2b2lk
ICogd3NfaW5mbzsgLyogUGxhdGZvcm0tZGVwZW5kZW50IGFkZGl0b25hbCBkYXRhICovCisjZW5k
aWYgLyogWFBfVU5JWCB8fCBYUF9TWU1CSUFOICovCisgIE5QV2luZG93VHlwZSB0eXBlOyAvKiBJ
cyB0aGlzIGEgd2luZG93IG9yIGEgZHJhd2FibGU/ICovCit9IE5QV2luZG93OworCit0eXBlZGVm
IHN0cnVjdCBfTlBJbWFnZUV4cG9zZQoreworICBjaGFyKiAgICBkYXRhOyAgICAgICAvKiBpbWFn
ZSBwb2ludGVyICovCisgIGludDMyX3QgIHN0cmlkZTsgICAgIC8qIFN0cmlkZSBvZiBkYXRhIGlt
YWdlIHBvaW50ZXIgKi8KKyAgaW50MzJfdCAgZGVwdGg7ICAgICAgLyogRGVwdGggb2YgaW1hZ2Ug
cG9pbnRlciAqLworICBpbnQzMl90ICB4OyAgICAgICAgICAvKiBFeHBvc2UgeCAqLworICBpbnQz
Ml90ICB5OyAgICAgICAgICAvKiBFeHBvc2UgeSAqLworICB1aW50MzJfdCB3aWR0aDsgICAgICAv
KiBFeHBvc2Ugd2lkdGggKi8KKyAgdWludDMyX3QgaGVpZ2h0OyAgICAgLyogRXhwb3NlIGhlaWdo
dCAqLworICBOUFNpemUgICBkYXRhU2l6ZTsgICAvKiBEYXRhIGJ1ZmZlciBzaXplICovCisgIGZs
b2F0ICAgIHRyYW5zbGF0ZVg7IC8qIHRyYW5zbGF0ZSBYIG1hdHJpeCB2YWx1ZSAqLworICBmbG9h
dCAgICB0cmFuc2xhdGVZOyAvKiB0cmFuc2xhdGUgWSBtYXRyaXggdmFsdWUgKi8KKyAgZmxvYXQg
ICAgc2NhbGVYOyAgICAgLyogc2NhbGUgWCBtYXRyaXggdmFsdWUgKi8KKyAgZmxvYXQgICAgc2Nh
bGVZOyAgICAgLyogc2NhbGUgWSBtYXRyaXggdmFsdWUgKi8KK30gTlBJbWFnZUV4cG9zZTsKKwor
dHlwZWRlZiBzdHJ1Y3QgX05QRnVsbFByaW50Cit7CisgIE5QQm9vbCBwbHVnaW5QcmludGVkOy8q
IFNldCBUUlVFIGlmIHBsdWdpbiBoYW5kbGVkIGZ1bGxzY3JlZW4gcHJpbnRpbmcgKi8KKyAgTlBC
b29sIHByaW50T25lOyAgICAgLyogVFJVRSBpZiBwbHVnaW4gc2hvdWxkIHByaW50IG9uZSBjb3B5
IHRvIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRlciAqLworICB2b2lk
KiBwbGF0Zm9ybVByaW50OyAvKiBQbGF0Zm9ybS1zcGVjaWZpYyBwcmludGluZyBpbmZvICovCit9
IE5QRnVsbFByaW50OworCit0eXBlZGVmIHN0cnVjdCBfTlBFbWJlZFByaW50Cit7CisgIE5QV2lu
ZG93IHdpbmRvdzsKKyAgdm9pZCogcGxhdGZvcm1QcmludDsgLyogUGxhdGZvcm0tc3BlY2lmaWMg
cHJpbnRpbmcgaW5mbyAqLworfSBOUEVtYmVkUHJpbnQ7CisKK3R5cGVkZWYgc3RydWN0IF9OUFBy
aW50Cit7CisgIHVpbnQxNl90IG1vZGU7ICAgICAgICAgICAgICAgLyogTlBfRlVMTCBvciBOUF9F
TUJFRCAqLworICB1bmlvbgorICB7CisgICAgTlBGdWxsUHJpbnQgZnVsbFByaW50OyAgIC8qIGlm
IG1vZGUgaXMgTlBfRlVMTCAqLworICAgIE5QRW1iZWRQcmludCBlbWJlZFByaW50OyAvKiBpZiBt
b2RlIGlzIE5QX0VNQkVEICovCisgIH0gcHJpbnQ7Cit9IE5QUHJpbnQ7CisKKyNpZiBkZWZpbmVk
KFhQX01BQ09TWCkKKyNpZm5kZWYgTlBfTk9fQ0FSQk9OCit0eXBlZGVmIEV2ZW50UmVjb3JkIE5Q
RXZlbnQ7CisjZWxzZQordHlwZWRlZiB2b2lkKiAgTlBFdmVudDsKKyNlbmRpZgorI2VsaWYgZGVm
aW5lZChYUF9TWU1CSUFOKQordHlwZWRlZiBRRXZlbnQgTlBFdmVudDsKKyNlbGlmIGRlZmluZWQo
WFBfV0lOKQordHlwZWRlZiBzdHJ1Y3QgX05QRXZlbnQKK3sKKyAgdWludDE2X3QgZXZlbnQ7Cisg
IHVpbnRwdHJfdCB3UGFyYW07CisgIHVpbnRwdHJfdCBsUGFyYW07Cit9IE5QRXZlbnQ7CisjZWxp
ZiBkZWZpbmVkKFhQX09TMikKK3R5cGVkZWYgc3RydWN0IF9OUEV2ZW50Cit7CisgIHVpbnQzMl90
IGV2ZW50OworICB1aW50MzJfdCB3UGFyYW07CisgIHVpbnQzMl90IGxQYXJhbTsKK30gTlBFdmVu
dDsKKyNlbGlmIGRlZmluZWQoWFBfVU5JWCkKK3R5cGVkZWYgWEV2ZW50IE5QRXZlbnQ7CisjZWxz
ZQordHlwZWRlZiB2b2lkKiAgTlBFdmVudDsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChYUF9NQUNP
U1gpCit0eXBlZGVmIHZvaWQqIE5QUmVnaW9uOworI2lmbmRlZiBOUF9OT19RVUlDS0RSQVcKK3R5
cGVkZWYgUmduSGFuZGxlIE5QUURSZWdpb247CisjZW5kaWYKK3R5cGVkZWYgQ0dQYXRoUmVmIE5Q
Q0dSZWdpb247CisjZWxpZiBkZWZpbmVkKFhQX1dJTikKK3R5cGVkZWYgSFJHTiBOUFJlZ2lvbjsK
KyNlbGlmIGRlZmluZWQoWFBfVU5JWCkKK3R5cGVkZWYgUmVnaW9uIE5QUmVnaW9uOworI2VsaWYg
ZGVmaW5lZChYUF9TWU1CSUFOKQordHlwZWRlZiBRUmVnaW9uKiBOUFJlZ2lvbjsKKyNlbHNlCit0
eXBlZGVmIHZvaWQgKk5QUmVnaW9uOworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IF9OUE5TU3Ry
aW5nIE5QTlNTdHJpbmc7Cit0eXBlZGVmIHN0cnVjdCBfTlBOU1dpbmRvdyBOUE5TV2luZG93Owor
dHlwZWRlZiBzdHJ1Y3QgX05QTlNNZW51ICAgTlBOU01lbnU7CisKKyNpZiBkZWZpbmVkKFhQX01B
Q09TWCkKK3R5cGVkZWYgTlBOU01lbnUgTlBNZW51OworI2Vsc2UKK3R5cGVkZWYgdm9pZCAqTlBN
ZW51OworI2VuZGlmCisKK3R5cGVkZWYgZW51bSB7CisgIE5QQ29vcmRpbmF0ZVNwYWNlUGx1Z2lu
ID0gMSwKKyAgTlBDb29yZGluYXRlU3BhY2VXaW5kb3csCisgIE5QQ29vcmRpbmF0ZVNwYWNlRmxp
cHBlZFdpbmRvdywKKyAgTlBDb29yZGluYXRlU3BhY2VTY3JlZW4sCisgIE5QQ29vcmRpbmF0ZVNw
YWNlRmxpcHBlZFNjcmVlbgorfSBOUENvb3JkaW5hdGVTcGFjZTsKKworI2lmIGRlZmluZWQoWFBf
TUFDT1NYKQorCisjaWZuZGVmIE5QX05PX1FVSUNLRFJBVwordHlwZWRlZiBzdHJ1Y3QgTlBfUG9y
dAoreworICBDR3JhZlB0ciBwb3J0OworICBpbnQzMl90IHBvcnR4OyAvKiBwb3NpdGlvbiBpbnNp
ZGUgdGhlIHRvcG1vc3Qgd2luZG93ICovCisgIGludDMyX3QgcG9ydHk7Cit9IE5QX1BvcnQ7Cisj
ZW5kaWYgLyogTlBfTk9fUVVJQ0tEUkFXICovCisKKy8qCisgKiBOUF9DR0NvbnRleHQgaXMgdGhl
IHR5cGUgb2YgdGhlIE5QV2luZG93J3MgJ3dpbmRvdycgd2hlbiB0aGUgcGx1Z2luIHNwZWNpZmll
cyBOUERyYXdpbmdNb2RlbENvcmVHcmFwaGljcworICogYXMgaXRzIGRyYXdpbmcgbW9kZWwuCisg
Ki8KKwordHlwZWRlZiBzdHJ1Y3QgTlBfQ0dDb250ZXh0Cit7CisgIENHQ29udGV4dFJlZiBjb250
ZXh0OworI2lmZGVmIE5QX05PX0NBUkJPTgorICBOUE5TV2luZG93ICp3aW5kb3c7CisjZWxzZQor
ICB2b2lkICp3aW5kb3c7IC8qIEEgV2luZG93UmVmIG9yIE5VTEwgZm9yIHRoZSBDb2NvYSBldmVu
dCBtb2RlbC4gKi8KKyNlbmRpZgorfSBOUF9DR0NvbnRleHQ7CisKKy8qCisgKiBOUF9HTENvbnRl
eHQgaXMgdGhlIHR5cGUgb2YgdGhlIE5QV2luZG93J3MgJ3dpbmRvdycgd2hlbiB0aGUgcGx1Z2lu
IHNwZWNpZmllcyBOUERyYXdpbmdNb2RlbE9wZW5HTCBhcyBpdHMKKyAqIGRyYXdpbmcgbW9kZWwu
CisgKi8KKwordHlwZWRlZiBzdHJ1Y3QgTlBfR0xDb250ZXh0Cit7CisgIENHTENvbnRleHRPYmog
Y29udGV4dDsKKyNpZmRlZiBOUF9OT19DQVJCT04KKyAgTlBOU1dpbmRvdyAqd2luZG93OworI2Vs
c2UKKyAgdm9pZCAqd2luZG93OyAvKiBDYW4gYmUgZWl0aGVyIGFuIE5TV2luZG93IG9yIGEgV2lu
ZG93UmVmIGRlcGVuZGluZyBvbiB0aGUgZXZlbnQgbW9kZWwgKi8KKyNlbmRpZgorfSBOUF9HTENv
bnRleHQ7CisKK3R5cGVkZWYgZW51bSB7CisgIE5QQ29jb2FFdmVudERyYXdSZWN0ID0gMSwKKyAg
TlBDb2NvYUV2ZW50TW91c2VEb3duLAorICBOUENvY29hRXZlbnRNb3VzZVVwLAorICBOUENvY29h
RXZlbnRNb3VzZU1vdmVkLAorICBOUENvY29hRXZlbnRNb3VzZUVudGVyZWQsCisgIE5QQ29jb2FF
dmVudE1vdXNlRXhpdGVkLAorICBOUENvY29hRXZlbnRNb3VzZURyYWdnZWQsCisgIE5QQ29jb2FF
dmVudEtleURvd24sCisgIE5QQ29jb2FFdmVudEtleVVwLAorICBOUENvY29hRXZlbnRGbGFnc0No
YW5nZWQsCisgIE5QQ29jb2FFdmVudEZvY3VzQ2hhbmdlZCwKKyAgTlBDb2NvYUV2ZW50V2luZG93
Rm9jdXNDaGFuZ2VkLAorICBOUENvY29hRXZlbnRTY3JvbGxXaGVlbCwKKyAgTlBDb2NvYUV2ZW50
VGV4dElucHV0Cit9IE5QQ29jb2FFdmVudFR5cGU7CisKK3R5cGVkZWYgc3RydWN0IF9OUENvY29h
RXZlbnQgeworICBOUENvY29hRXZlbnRUeXBlIHR5cGU7CisgIHVpbnQzMl90IHZlcnNpb247Cisg
IHVuaW9uIHsKKyAgICBzdHJ1Y3QgeworICAgICAgdWludDMyX3QgbW9kaWZpZXJGbGFnczsKKyAg
ICAgIGRvdWJsZSAgIHBsdWdpblg7CisgICAgICBkb3VibGUgICBwbHVnaW5ZOworICAgICAgaW50
MzJfdCAgYnV0dG9uTnVtYmVyOworICAgICAgaW50MzJfdCAgY2xpY2tDb3VudDsKKyAgICAgIGRv
dWJsZSAgIGRlbHRhWDsKKyAgICAgIGRvdWJsZSAgIGRlbHRhWTsKKyAgICAgIGRvdWJsZSAgIGRl
bHRhWjsKKyAgICB9IG1vdXNlOworICAgIHN0cnVjdCB7CisgICAgICB1aW50MzJfdCAgICBtb2Rp
ZmllckZsYWdzOworICAgICAgTlBOU1N0cmluZyAqY2hhcmFjdGVyczsKKyAgICAgIE5QTlNTdHJp
bmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczsKKyAgICAgIE5QQm9vbCAgICAgIGlzQVJl
cGVhdDsKKyAgICAgIHVpbnQxNl90ICAgIGtleUNvZGU7CisgICAgfSBrZXk7CisgICAgc3RydWN0
IHsKKyAgICAgIENHQ29udGV4dFJlZiBjb250ZXh0OworICAgICAgZG91YmxlIHg7CisgICAgICBk
b3VibGUgeTsKKyAgICAgIGRvdWJsZSB3aWR0aDsKKyAgICAgIGRvdWJsZSBoZWlnaHQ7CisgICAg
fSBkcmF3OworICAgIHN0cnVjdCB7CisgICAgICBOUEJvb2wgaGFzRm9jdXM7CisgICAgfSBmb2N1
czsKKyAgICBzdHJ1Y3QgeworICAgICAgTlBOU1N0cmluZyAqdGV4dDsKKyAgICB9IHRleHQ7Cisg
IH0gZGF0YTsKK30gTlBDb2NvYUV2ZW50OworCisjaWZuZGVmIE5QX05PX0NBUkJPTgorLyogTm9u
LXN0YW5kYXJkIGV2ZW50IHR5cGVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBIYW5kbGVFdmVudCAq
LworZW51bSBOUEV2ZW50VHlwZSB7CisgIE5QRXZlbnRUeXBlX0dldEZvY3VzRXZlbnQgPSAob3NF
dnQgKyAxNiksCisgIE5QRXZlbnRUeXBlX0xvc2VGb2N1c0V2ZW50LAorICBOUEV2ZW50VHlwZV9B
ZGp1c3RDdXJzb3JFdmVudCwKKyAgTlBFdmVudFR5cGVfTWVudUNvbW1hbmRFdmVudCwKKyAgTlBF
dmVudFR5cGVfQ2xpcHBpbmdDaGFuZ2VkRXZlbnQsCisgIE5QRXZlbnRUeXBlX1Njcm9sbGluZ0Jl
Z2luc0V2ZW50ID0gMTAwMCwKKyAgTlBFdmVudFR5cGVfU2Nyb2xsaW5nRW5kc0V2ZW50Cit9Owor
I2VuZGlmIC8qIE5QX05PX0NBUkJPTiAqLworCisjZW5kaWYgLyogWFBfTUFDT1NYICovCisKKy8q
CisgKiBWYWx1ZXMgZm9yIG1vZGUgcGFzc2VkIHRvIE5QUF9OZXc6CisgKi8KKyNkZWZpbmUgTlBf
RU1CRUQgMQorI2RlZmluZSBOUF9GVUxMICAyCisKKy8qCisgKiBWYWx1ZXMgZm9yIHN0cmVhbSB0
eXBlIHBhc3NlZCB0byBOUFBfTmV3U3RyZWFtOgorICovCisjZGVmaW5lIE5QX05PUk1BTCAgICAg
MQorI2RlZmluZSBOUF9TRUVLICAgICAgIDIKKyNkZWZpbmUgTlBfQVNGSUxFICAgICAzCisjZGVm
aW5lIE5QX0FTRklMRU9OTFkgNAorCisjZGVmaW5lIE5QX01BWFJFQURZICgoKHVuc2lnbmVkKSh+
MCk8PDEpPj4xKQorCisvKgorICogRmxhZ3MgZm9yIE5QUF9DbGVhclNpdGVEYXRhLgorICovCisj
ZGVmaW5lIE5QX0NMRUFSX0FMTCAgIDAKKyNkZWZpbmUgTlBfQ0xFQVJfQ0FDSEUgKDEgPDwgMCkK
KworI2lmICFkZWZpbmVkKF9fTFA2NF9fKQorI2lmIGRlZmluZWQoWFBfTUFDT1NYKQorI3ByYWdt
YSBvcHRpb25zIGFsaWduPXJlc2V0CisjZW5kaWYKKyNlbmRpZiAvKiBfX0xQNjRfXyAqLworCisv
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLworLyogICAgICAgRXJyb3IgYW5kIFJlYXNvbiBDb2RlIGRlZmluaXRp
b25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisK
Ky8qCisgKiBWYWx1ZXMgb2YgdHlwZSBOUEVycm9yOgorICovCisjZGVmaW5lIE5QRVJSX0JBU0Ug
ICAgICAgICAgICAgICAgICAgICAgICAgMAorI2RlZmluZSBOUEVSUl9OT19FUlJPUiAgICAgICAg
ICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAwKQorI2RlZmluZSBOUEVSUl9HRU5FUklDX0VSUk9S
ICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAxKQorI2RlZmluZSBOUEVSUl9JTlZBTElEX0lO
U1RBTkNFX0VSUk9SICAgICAgKE5QRVJSX0JBU0UgKyAyKQorI2RlZmluZSBOUEVSUl9JTlZBTElE
X0ZVTkNUQUJMRV9FUlJPUiAgICAgKE5QRVJSX0JBU0UgKyAzKQorI2RlZmluZSBOUEVSUl9NT0RV
TEVfTE9BRF9GQUlMRURfRVJST1IgICAgKE5QRVJSX0JBU0UgKyA0KQorI2RlZmluZSBOUEVSUl9P
VVRfT0ZfTUVNT1JZX0VSUk9SICAgICAgICAgKE5QRVJSX0JBU0UgKyA1KQorI2RlZmluZSBOUEVS
Ul9JTlZBTElEX1BMVUdJTl9FUlJPUiAgICAgICAgKE5QRVJSX0JBU0UgKyA2KQorI2RlZmluZSBO
UEVSUl9JTlZBTElEX1BMVUdJTl9ESVJfRVJST1IgICAgKE5QRVJSX0JBU0UgKyA3KQorI2RlZmlu
ZSBOUEVSUl9JTkNPTVBBVElCTEVfVkVSU0lPTl9FUlJPUiAgKE5QRVJSX0JBU0UgKyA4KQorI2Rl
ZmluZSBOUEVSUl9JTlZBTElEX1BBUkFNICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyA5KQor
I2RlZmluZSBOUEVSUl9JTlZBTElEX1VSTCAgICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAx
MCkKKyNkZWZpbmUgTlBFUlJfRklMRV9OT1RfRk9VTkQgICAgICAgICAgICAgIChOUEVSUl9CQVNF
ICsgMTEpCisjZGVmaW5lIE5QRVJSX05PX0RBVEEgICAgICAgICAgICAgICAgICAgICAoTlBFUlJf
QkFTRSArIDEyKQorI2RlZmluZSBOUEVSUl9TVFJFQU1fTk9UX1NFRUtBQkxFICAgICAgICAgKE5Q
RVJSX0JBU0UgKyAxMykKKworLyoKKyAqIFZhbHVlcyBvZiB0eXBlIE5QUmVhc29uOgorICovCisj
ZGVmaW5lIE5QUkVTX0JBU0UgICAgICAgICAgMAorI2RlZmluZSBOUFJFU19ET05FICAgICAgICAg
KE5QUkVTX0JBU0UgKyAwKQorI2RlZmluZSBOUFJFU19ORVRXT1JLX0VSUiAgKE5QUkVTX0JBU0Ug
KyAxKQorI2RlZmluZSBOUFJFU19VU0VSX0JSRUFLICAgKE5QUkVTX0JBU0UgKyAyKQorCisvKgor
ICogRG9uJ3QgdXNlIHRoZXNlIG9ic29sZXRlIGVycm9yIGNvZGVzIGFueSBtb3JlLgorICovCisj
ZGVmaW5lIE5QX05PRVJSICBOUF9OT0VSUl9pc19vYnNvbGV0ZV91c2VfTlBFUlJfTk9fRVJST1IK
KyNkZWZpbmUgTlBfRUlOVkFMIE5QX0VJTlZBTF9pc19vYnNvbGV0ZV91c2VfTlBFUlJfR0VORVJJ
Q19FUlJPUgorI2RlZmluZSBOUF9FQUJPUlQgTlBfRUFCT1JUX2lzX29ic29sZXRlX3VzZV9OUFJF
U19VU0VSX0JSRUFLCisKKy8qCisgKiBWZXJzaW9uIGZlYXR1cmUgaW5mb3JtYXRpb24KKyAqLwor
I2RlZmluZSBOUFZFUlNfSEFTX1NUUkVBTU9VVFBVVCAgICAgICAgICAgICA4CisjZGVmaW5lIE5Q
VkVSU19IQVNfTk9USUZJQ0FUSU9OICAgICAgICAgICAgIDkKKyNkZWZpbmUgTlBWRVJTX0hBU19M
SVZFQ09OTkVDVCAgICAgICAgICAgICAgOQorI2RlZmluZSBOUFZFUlNfV0lOMTZfSEFTX0xJVkVD
T05ORUNUICAgICAgICA5CisjZGVmaW5lIE5QVkVSU182OEtfSEFTX0xJVkVDT05ORUNUICAgICAg
ICAgIDExCisjZGVmaW5lIE5QVkVSU19IQVNfV0lORE9XTEVTUyAgICAgICAgICAgICAgIDExCisj
ZGVmaW5lIE5QVkVSU19IQVNfWFBDT05ORUNUX1NDUklQVElORyAgICAgIDEzICAvKiBOb3QgaW1w
bGVtZW50ZWQgaW4gV2ViS2l0ICovCisjZGVmaW5lIE5QVkVSU19IQVNfTlBSVU5USU1FX1NDUklQ
VElORyAgICAgIDE0CisjZGVmaW5lIE5QVkVSU19IQVNfRk9STV9WQUxVRVMgICAgICAgICAgICAg
IDE1ICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0OyBzZWUgYnVnIDEzMDYxICovCisjZGVm
aW5lIE5QVkVSU19IQVNfUE9QVVBTX0VOQUJMRURfU1RBVEUgICAgIDE2ICAvKiBOb3QgaW1wbGVt
ZW50ZWQgaW4gV2ViS2l0ICovCisjZGVmaW5lIE5QVkVSU19IQVNfUkVTUE9OU0VfSEVBREVSUyAg
ICAgICAgIDE3CisjZGVmaW5lIE5QVkVSU19IQVNfTlBPQkpFQ1RfRU5VTSAgICAgICAgICAgIDE4
CisjZGVmaW5lIE5QVkVSU19IQVNfUExVR0lOX1RIUkVBRF9BU1lOQ19DQUxMIDE5CisjZGVmaW5l
IE5QVkVSU19IQVNfQUxMX05FVFdPUktfU1RSRUFNUyAgICAgIDIwCisjZGVmaW5lIE5QVkVSU19I
QVNfVVJMX0FORF9BVVRIX0lORk8gICAgICAgIDIxCisjZGVmaW5lIE5QVkVSU19IQVNfUFJJVkFU
RV9NT0RFICAgICAgICAgICAgIDIyCisjZGVmaW5lIE5QVkVSU19NQUNPU1hfSEFTX0VWRU5UX01P
REVMUyAgICAgIDIzCisjZGVmaW5lIE5QVkVSU19IQVNfQ0FOQ0VMX1NSQ19TVFJFQU0gICAgICAg
IDI0CisjZGVmaW5lIE5QVkVSU19IQVNfQURWQU5DRURfS0VZX0hBTkRMSU5HICAgIDI1CisjZGVm
aW5lIE5QVkVSU19IQVNfVVJMX1JFRElSRUNUX0hBTkRMSU5HICAgIDI2CisjZGVmaW5lIE5QVkVS
U19IQVNfQ0xFQVJfU0lURV9EQVRBICAgICAgICAgIDI3CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisv
KiAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uIFByb3RvdHlwZXMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqLworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworI2lmIGRlZmluZWQoX19PUzJf
XykKKyNkZWZpbmUgTlBfTE9BRERTIF9TeXN0ZW0KKyNlbHNlCisjZGVmaW5lIE5QX0xPQUREUwor
I2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyog
TlBQXyogZnVuY3Rpb25zIGFyZSBwcm92aWRlZCBieSB0aGUgcGx1Z2luIGFuZCBjYWxsZWQgYnkg
dGhlIG5hdmlnYXRvci4gKi8KKworI2lmIGRlZmluZWQoWFBfVU5JWCkKK2NoYXIqIE5QUF9HZXRN
SU1FRGVzY3JpcHRpb24odm9pZCk7CisjZW5kaWYKKworTlBFcnJvciBOUF9MT0FERFMgTlBQX0lu
aXRpYWxpemUodm9pZCk7Cit2b2lkICAgIE5QX0xPQUREUyBOUFBfU2h1dGRvd24odm9pZCk7CitO
UEVycm9yIE5QX0xPQUREUyBOUFBfTmV3KE5QTUlNRVR5cGUgcGx1Z2luVHlwZSwgTlBQIGluc3Rh
bmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBtb2RlLCBpbnQxNl90IGFy
Z2MsIGNoYXIqIGFyZ25bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogYXJndltd
LCBOUFNhdmVkRGF0YSogc2F2ZWQpOworTlBFcnJvciBOUF9MT0FERFMgTlBQX0Rlc3Ryb3koTlBQ
IGluc3RhbmNlLCBOUFNhdmVkRGF0YSoqIHNhdmUpOworTlBFcnJvciBOUF9MT0FERFMgTlBQX1Nl
dFdpbmRvdyhOUFAgaW5zdGFuY2UsIE5QV2luZG93KiB3aW5kb3cpOworTlBFcnJvciBOUF9MT0FE
RFMgTlBQX05ld1N0cmVhbShOUFAgaW5zdGFuY2UsIE5QTUlNRVR5cGUgdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlBTdHJlYW0qIHN0cmVhbSwgTlBCb29sIHNlZWthYmxl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCogc3R5cGUpOworTlBF
cnJvciBOUF9MT0FERFMgTlBQX0Rlc3Ryb3lTdHJlYW0oTlBQIGluc3RhbmNlLCBOUFN0cmVhbSog
c3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlBSZWFzb24gcmVh
c29uKTsKK2ludDMyX3QgTlBfTE9BRERTIE5QUF9Xcml0ZVJlYWR5KE5QUCBpbnN0YW5jZSwgTlBT
dHJlYW0qIHN0cmVhbSk7CitpbnQzMl90IE5QX0xPQUREUyBOUFBfV3JpdGUoTlBQIGluc3RhbmNl
LCBOUFN0cmVhbSogc3RyZWFtLCBpbnQzMl90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQzMl90IGxlbiwgdm9pZCogYnVmZmVyKTsKK3ZvaWQgICAgTlBfTE9BRERTIE5Q
UF9TdHJlYW1Bc0ZpbGUoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmbmFtZSk7Cit2b2lkICAgIE5Q
X0xPQUREUyBOUFBfUHJpbnQoTlBQIGluc3RhbmNlLCBOUFByaW50KiBwbGF0Zm9ybVByaW50KTsK
K2ludDE2X3QgTlBfTE9BRERTIE5QUF9IYW5kbGVFdmVudChOUFAgaW5zdGFuY2UsIHZvaWQqIGV2
ZW50KTsKK3ZvaWQgICAgTlBfTE9BRERTIE5QUF9VUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25z
dCBjaGFyKiB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJl
YXNvbiwgdm9pZCogbm90aWZ5RGF0YSk7CitqcmVmICAgIE5QX0xPQUREUyBOUFBfR2V0SmF2YUNs
YXNzKHZvaWQpOworTlBFcnJvciBOUF9MT0FERFMgTlBQX0dldFZhbHVlKE5QUCBpbnN0YW5jZSwg
TlBQVmFyaWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKTsKK05QRXJyb3IgTlBfTE9BRERTIE5Q
UF9TZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1
ZSk7CitOUEJvb2wgIE5QX0xPQUREUyBOUFBfR290Rm9jdXMoTlBQIGluc3RhbmNlLCBOUEZvY3Vz
RGlyZWN0aW9uIGRpcmVjdGlvbik7Cit2b2lkICAgIE5QX0xPQUREUyBOUFBfTG9zdEZvY3VzKE5Q
UCBpbnN0YW5jZSk7Cit2b2lkICAgIE5QX0xPQUREUyBOUFBfVVJMUmVkaXJlY3ROb3RpZnkoTlBQ
IGluc3RhbmNlLCBjb25zdCBjaGFyKiB1cmwsIGludDMyX3Qgc3RhdHVzLCB2b2lkKiBub3RpZnlE
YXRhKTsKK05QRXJyb3IgTlBfTE9BRERTIE5QUF9DbGVhclNpdGVEYXRhKGNvbnN0IGNoYXIqIHNp
dGUsIHVpbnQ2NF90IGZsYWdzLCB1aW50NjRfdCBtYXhBZ2UpOworY2hhcioqICBOUF9MT0FERFMg
TlBQX0dldFNpdGVzV2l0aERhdGEodm9pZCk7CisKKy8qIE5QTl8qIGZ1bmN0aW9ucyBhcmUgcHJv
dmlkZWQgYnkgdGhlIG5hdmlnYXRvciBhbmQgY2FsbGVkIGJ5IHRoZSBwbHVnaW4uICovCit2b2lk
ICAgICAgICBOUF9MT0FERFMgTlBOX1ZlcnNpb24oaW50KiBwbHVnaW5fbWFqb3IsIGludCogcGx1
Z2luX21pbm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbmV0c2Nh
cGVfbWFqb3IsIGludCogbmV0c2NhcGVfbWlub3IpOworTlBFcnJvciAgICAgTlBfTE9BRERTIE5Q
Tl9HZXRVUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiB1cmwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0YXJnZXQsIHZvaWQqIG5v
dGlmeURhdGEpOworTlBFcnJvciAgICAgTlBfTE9BRERTIE5QTl9HZXRVUkwoTlBQIGluc3RhbmNl
LCBjb25zdCBjaGFyKiB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiB0YXJnZXQpOworTlBFcnJvciAgICAgTlBfTE9BRERTIE5QTl9Qb3N0VVJMTm90aWZ5
KE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyX3QgbGVuLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwgTlBCb29s
IGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogbm90
aWZ5RGF0YSk7CitOUEVycm9yICAgICBOUF9MT0FERFMgTlBOX1Bvc3RVUkwoTlBQIGluc3RhbmNl
LCBjb25zdCBjaGFyKiB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogdGFyZ2V0LCB1aW50MzJfdCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogYnVmLCBOUEJvb2wgZmlsZSk7CitOUEVycm9yICAgICBOUF9M
T0FERFMgTlBOX1JlcXVlc3RSZWFkKE5QU3RyZWFtKiBzdHJlYW0sIE5QQnl0ZVJhbmdlKiByYW5n
ZUxpc3QpOworTlBFcnJvciAgICAgTlBfTE9BRERTIE5QTl9OZXdTdHJlYW0oTlBQIGluc3RhbmNl
LCBOUE1JTUVUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiB0YXJnZXQsIE5QU3RyZWFtKiogc3RyZWFtKTsKK2ludDMyX3QgICAgIE5QX0xP
QUREUyBOUE5fV3JpdGUoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBpbnQzMl90IGxl
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogYnVmZmVyKTsKK05QRXJy
b3IgICAgIE5QX0xPQUREUyBOUE5fRGVzdHJveVN0cmVhbShOUFAgaW5zdGFuY2UsIE5QU3RyZWFt
KiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlBSZWFz
b24gcmVhc29uKTsKK3ZvaWQgICAgICAgIE5QX0xPQUREUyBOUE5fU3RhdHVzKE5QUCBpbnN0YW5j
ZSwgY29uc3QgY2hhciogbWVzc2FnZSk7Citjb25zdCBjaGFyKiBOUF9MT0FERFMgTlBOX1VzZXJB
Z2VudChOUFAgaW5zdGFuY2UpOwordm9pZCogICAgICAgTlBfTE9BRERTIE5QTl9NZW1BbGxvYyh1
aW50MzJfdCBzaXplKTsKK3ZvaWQgICAgICAgIE5QX0xPQUREUyBOUE5fTWVtRnJlZSh2b2lkKiBw
dHIpOwordWludDMyX3QgICAgTlBfTE9BRERTIE5QTl9NZW1GbHVzaCh1aW50MzJfdCBzaXplKTsK
K3ZvaWQgICAgICAgIE5QX0xPQUREUyBOUE5fUmVsb2FkUGx1Z2lucyhOUEJvb2wgcmVsb2FkUGFn
ZXMpOworSlJJRW52KiAgICAgTlBfTE9BRERTIE5QTl9HZXRKYXZhRW52KHZvaWQpOworanJlZiAg
ICAgICAgTlBfTE9BRERTIE5QTl9HZXRKYXZhUGVlcihOUFAgaW5zdGFuY2UpOworTlBFcnJvciAg
ICAgTlBfTE9BRERTIE5QTl9HZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QTlZhcmlhYmxlIHZhcmlh
YmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSk7CitO
UEVycm9yICAgICBOUF9MT0FERFMgTlBOX1NldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBQVmFyaWFi
bGUgdmFyaWFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnZh
bHVlKTsKK3ZvaWQgICAgICAgIE5QX0xPQUREUyBOUE5fSW52YWxpZGF0ZVJlY3QoTlBQIGluc3Rh
bmNlLCBOUFJlY3QgKmludmFsaWRSZWN0KTsKK3ZvaWQgICAgICAgIE5QX0xPQUREUyBOUE5fSW52
YWxpZGF0ZVJlZ2lvbihOUFAgaW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlBSZWdpb24gaW52YWxpZFJlZ2lvbik7Cit2b2lkICAgICAgICBOUF9M
T0FERFMgTlBOX0ZvcmNlUmVkcmF3KE5QUCBpbnN0YW5jZSk7Cit2b2lkICAgICAgICBOUF9MT0FE
RFMgTlBOX1B1c2hQb3B1cHNFbmFibGVkU3RhdGUoTlBQIGluc3RhbmNlLCBOUEJvb2wgZW5hYmxl
ZCk7Cit2b2lkICAgICAgICBOUF9MT0FERFMgTlBOX1BvcFBvcHVwc0VuYWJsZWRTdGF0ZShOUFAg
aW5zdGFuY2UpOwordm9pZCAgICAgICAgTlBfTE9BRERTIE5QTl9QbHVnaW5UaHJlYWRBc3luY0Nh
bGwoTlBQIGluc3RhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAoKmZ1bmMpICh2b2lkICopLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlckRhdGEpOworTlBFcnJvciAgICAgTlBf
TE9BRERTIE5QTl9HZXRWYWx1ZUZvclVSTChOUFAgaW5zdGFuY2UsIE5QTlVSTFZhcmlhYmxlIHZh
cmlhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyICp1cmwsIGNoYXIgKip2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgKmxlbik7CitOUEVycm9yICAgICBOUF9MT0FERFMgTlBOX1NldFZh
bHVlRm9yVVJMKE5QUCBpbnN0YW5jZSwgTlBOVVJMVmFyaWFibGUgdmFyaWFibGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVybCwgY29uc3Qg
Y2hhciAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMl90IGxlbik7CitOUEVycm9yICAgICBOUF9MT0FERFMgTlBOX0dldEF1dGhlbnRpY2F0aW9u
SW5mbyhOUFAgaW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpwcm90b2NvbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmhvc3QsIGludDMyX3QgcG9ydCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKnNjaGVtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKnJlYWxtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKnVzZXJuYW1lLCB1aW50MzJfdCAqdWxlbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipwYXNzd29yZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
ICpwbGVuKTsKK3VpbnQzMl90ICAgIE5QX0xPQUREUyBOUE5fU2NoZWR1bGVUaW1lcihOUFAgaW5z
dGFuY2UsIHVpbnQzMl90IGludGVydmFsLCBOUEJvb2wgcmVwZWF0LCB2b2lkICgqdGltZXJGdW5j
KShOUFAgbnBwLCB1aW50MzJfdCB0aW1lcklEKSk7Cit2b2lkICAgICAgICBOUF9MT0FERFMgTlBO
X1Vuc2NoZWR1bGVUaW1lcihOUFAgaW5zdGFuY2UsIHVpbnQzMl90IHRpbWVySUQpOworTlBFcnJv
ciAgICAgTlBfTE9BRERTIE5QTl9Qb3BVcENvbnRleHRNZW51KE5QUCBpbnN0YW5jZSwgTlBNZW51
KiBtZW51KTsKK05QQm9vbCAgICAgIE5QX0xPQUREUyBOUE5fQ29udmVydFBvaW50KE5QUCBpbnN0
YW5jZSwgZG91YmxlIHNvdXJjZVgsIGRvdWJsZSBzb3VyY2VZLCBOUENvb3JkaW5hdGVTcGFjZSBz
b3VyY2VTcGFjZSwgZG91YmxlICpkZXN0WCwgZG91YmxlICpkZXN0WSwgTlBDb29yZGluYXRlU3Bh
Y2UgZGVzdFNwYWNlKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9ICAvKiBlbmQgZXh0ZXJuICJD
IiAqLworI2VuZGlmCisKKyNlbmRpZiAvKiBSQ19JTlZPS0VEICovCisjaWYgZGVmaW5lZChfX09T
Ml9fKQorI3ByYWdtYSBwYWNrKCkKKyNlbmRpZgorCisjZW5kaWYgLyogbnBhcGlfaF8gKi8KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbnBydW50aW1lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9ucHJ1bnRpbWUuaAkocmV2aXNpb24gOTQ1ODMpCShmcm9tIFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ucHJ1bnRpbWUuaDo5NDU4MykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvbnBydW50aW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOTMgQEAKKy8q
IC0qLSBNb2RlOiBDOyB0YWItd2lkdGg6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgYy1iYXNp
Yy1vZmZzZXQ6IDQgLSotICovCisvKgorICogQ29weXJpZ2h0IChjKSAyMDA0LCBBcHBsZSBDb21w
dXRlciwgSW5jLiBhbmQgVGhlIE1vemlsbGEgRm91bmRhdGlvbi4gCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
IAorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZXMgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG9yIFRoZSBNb3ppbGxhCisgKiBGb3VuZGF0aW9uICgiTW96aWxsYSIp
IG5vciB0aGUgbmFtZXMgb2YgdGhlaXIgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkCisgKiB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dAorICogc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBNT1pJTExBIEFORCBUSEVJUiBDT05UUklC
VVRPUlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorICogUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSwgTU9aSUxMQSBPUgor
ICogVEhFSVIgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAq
LworI2lmbmRlZiBfTlBfUlVOVElNRV9IXworI2RlZmluZSBfTlBfUlVOVElNRV9IXworCisjaW5j
bHVkZSAibnBhcGkuaCIKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRp
ZgorCisvKgorICAgIFRoaXMgQVBJIGlzIHVzZWQgdG8gZmFjaWxpdGF0ZSBiaW5kaW5nIGNvZGUg
d3JpdHRlbiBpbiBDIHRvIHNjcmlwdAorICAgIG9iamVjdHMuICBUaGUgQVBJIGluIHRoaXMgaGVh
ZGVyIGRvZXMgbm90IGFzc3VtZSB0aGUgcHJlc2VuY2Ugb2YgYQorICAgIHVzZXIgYWdlbnQuICBU
aGF0IGlzLCBpdCBjYW4gYmUgdXNlZCB0byBiaW5kIEMgY29kZSB0byBzY3JpcHRpbmcKKyAgICBl
bnZpcm9ubWVudHMgb3V0c2lkZSBvZiB0aGUgY29udGV4dCBvZiBhIHVzZXIgYWdlbnQuCisgICAg
CisgICAgSG93ZXZlciwgdGhlIG5vcm1hbCB1c2Ugb2YgdGhlIHRoaXMgQVBJIGlzIGluIHRoZSBj
b250ZXh0IG9mIGEKKyAgICBzY3JpcHRpbmcgZW52aXJvbm1lbnQgcnVubmluZyBpbiBhIGJyb3dz
ZXIgb3Igb3RoZXIgdXNlciBhZ2VudC4KKyAgICBJbiBwYXJ0aWN1bGFyIGl0IGlzIHVzZWQgdG8g
c3VwcG9ydCB0aGUgZXh0ZW5kZWQgTmV0c2NhcGUKKyAgICBzY3JpcHQtYWJpbGl0eSBBUEkgZm9y
IHBsdWdpbnMgKE5QLVNBUCkuICBOUC1TQVAgaXMgYW4gZXh0ZW5zaW9uCisgICAgb2YgdGhlIE5l
dHNjYXBlIHBsdWdpbiBBUEkuICBBcyBzdWNoIHdlIGhhdmUgYWRvcHRlZCB0aGUgdXNlIG9mCisg
ICAgdGhlICJOUCIgcHJlZml4IGZvciB0aGlzIEFQSS4KKworICAgIFRoZSBmb2xsb3dpbmcgTlB7
TnxQfVZhcmlhYmxlcyB3ZXJlIGFkZGVkIHRvIHRoZSBOZXRzY2FwZSBwbHVnaW4KKyAgICBBUEkg
KGluIG5wYXBpLmgpOgorCisgICAgTlBOVldpbmRvd05QT2JqZWN0CisgICAgTlBOVlBsdWdpbkVs
ZW1lbnROUE9iamVjdAorICAgIE5QUFZwbHVnaW5TY3JpcHRhYmxlTlBPYmplY3QKKworICAgIFRo
ZXNlIHZhcmlhYmxlcyBhcmUgZXhwb3NlZCB0aHJvdWdoIE5QTl9HZXRWYWx1ZSgpIGFuZAorICAg
IE5QUF9HZXRWYWx1ZSgpIChyZXNwZWN0aXZlbHkpIGFuZCBhcmUgdXNlZCB0byBlc3RhYmxpc2gg
dGhlCisgICAgaW5pdGlhbCBiaW5kaW5nIGJldHdlZW4gdGhlIHVzZXIgYWdlbnQgYW5kIG5hdGl2
ZSBjb2RlLiAgVGhlIERPTQorICAgIG9iamVjdHMgaW4gdGhlIHVzZXIgYWdlbnQgY2FuIGJlIGV4
YW1pbmVkIGFuZCBtYW5pcHVsYXRlZCB1c2luZworICAgIHRoZSBOUE5fIGZ1bmN0aW9ucyB0aGF0
IG9wZXJhdGUgb24gTlBPYmplY3RzIGRlc2NyaWJlZCBpbiB0aGlzCisgICAgaGVhZGVyLgorCisg
ICAgVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB0aGUgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHNjcmlw
dGluZworICAgIGxhbmd1YWdlIHVzZWQgYnkgdGhlIHNjcmlwdGluZyBlbnZpcm9ubWVudCBoYXZl
IGJlZW4gbWluaW1pemVkLgorKi8KKworI2RlZmluZSBOUF9CRUdJTl9NQUNSTyAgZG8geworI2Rl
ZmluZSBOUF9FTkRfTUFDUk8gICAgfSB3aGlsZSAoMCkKKworLyoKKyAgICBPYmplY3RzIChub24t
cHJpbWl0aXZlIGRhdGEpIHBhc3NlZCBiZXR3ZWVuICdDJyBhbmQgc2NyaXB0IGlzCisgICAgYWx3
YXlzIHdyYXBwZWQgaW4gYW4gTlBPYmplY3QuICBUaGUgJ2ludGVyZmFjZScgb2YgYW4gTlBPYmpl
Y3QgaXMKKyAgICBkZXNjcmliZWQgYnkgYW4gTlBDbGFzcy4KKyovCit0eXBlZGVmIHN0cnVjdCBO
UE9iamVjdCBOUE9iamVjdDsKK3R5cGVkZWYgc3RydWN0IE5QQ2xhc3MgTlBDbGFzczsKKwordHlw
ZWRlZiBjaGFyIE5QVVRGODsKK3R5cGVkZWYgc3RydWN0IF9OUFN0cmluZyB7CisgICAgY29uc3Qg
TlBVVEY4ICpVVEY4Q2hhcmFjdGVyczsKKyAgICB1aW50MzJfdCBVVEY4TGVuZ3RoOworfSBOUFN0
cmluZzsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBOUFZhcmlhbnRUeXBlX1ZvaWQsCisgICAgTlBW
YXJpYW50VHlwZV9OdWxsLAorICAgIE5QVmFyaWFudFR5cGVfQm9vbCwKKyAgICBOUFZhcmlhbnRU
eXBlX0ludDMyLAorICAgIE5QVmFyaWFudFR5cGVfRG91YmxlLAorICAgIE5QVmFyaWFudFR5cGVf
U3RyaW5nLAorICAgIE5QVmFyaWFudFR5cGVfT2JqZWN0Cit9IE5QVmFyaWFudFR5cGU7CisKK3R5
cGVkZWYgc3RydWN0IF9OUFZhcmlhbnQgeworICAgIE5QVmFyaWFudFR5cGUgdHlwZTsKKyAgICB1
bmlvbiB7CisgICAgICAgIGJvb2wgYm9vbFZhbHVlOworICAgICAgICBpbnQzMl90IGludFZhbHVl
OworICAgICAgICBkb3VibGUgZG91YmxlVmFsdWU7CisgICAgICAgIE5QU3RyaW5nIHN0cmluZ1Zh
bHVlOworICAgICAgICBOUE9iamVjdCAqb2JqZWN0VmFsdWU7CisgICAgfSB2YWx1ZTsKK30gTlBW
YXJpYW50OworCisvKgorICAgIE5QTl9SZWxlYXNlVmFyaWFudFZhbHVlIGlzIGNhbGxlZCBvbiBh
bGwgJ291dCcgcGFyYW1ldGVycworICAgIHJlZmVyZW5jZXMuICBTcGVjaWZpY2FsbHkgaXQgaXMg
dG8gYmUgY2FsbGVkIG9uIHZhcmlhbnRzIHRoYXQgb3duCisgICAgdGhlaXIgdmFsdWUsIGFzIGlz
IHRoZSBjYXNlIHdpdGggYWxsIG5vbi1jb25zdCBOUFZhcmlhbnQqCisgICAgYXJndW1lbnRzIGFm
dGVyIGEgc3VjY2Vzc2Z1bCBjYWxsIHRvIGFueSBtZXRob2RzIChleGNlcHQgdGhpcyBvbmUpCisg
ICAgaW4gdGhpcyBBUEkuCisKKyAgICBBZnRlciBjYWxsaW5nIE5QTl9SZWxlYXNlVmFyaWFudFZh
bHVlLCB0aGUgdHlwZSBvZiB0aGUgdmFyaWFudAorICAgIHdpbGwgYmUgTlBWYXJpYW50VHlwZV9W
b2lkLgorKi8KK3ZvaWQgTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUoTlBWYXJpYW50ICp2YXJpYW50
KTsKKworI2RlZmluZSBOUFZBUklBTlRfSVNfVk9JRChfdikgICAgKChfdikudHlwZSA9PSBOUFZh
cmlhbnRUeXBlX1ZvaWQpCisjZGVmaW5lIE5QVkFSSUFOVF9JU19OVUxMKF92KSAgICAoKF92KS50
eXBlID09IE5QVmFyaWFudFR5cGVfTnVsbCkKKyNkZWZpbmUgTlBWQVJJQU5UX0lTX0JPT0xFQU4o
X3YpICgoX3YpLnR5cGUgPT0gTlBWYXJpYW50VHlwZV9Cb29sKQorI2RlZmluZSBOUFZBUklBTlRf
SVNfSU5UMzIoX3YpICAgKChfdikudHlwZSA9PSBOUFZhcmlhbnRUeXBlX0ludDMyKQorI2RlZmlu
ZSBOUFZBUklBTlRfSVNfRE9VQkxFKF92KSAgKChfdikudHlwZSA9PSBOUFZhcmlhbnRUeXBlX0Rv
dWJsZSkKKyNkZWZpbmUgTlBWQVJJQU5UX0lTX1NUUklORyhfdikgICgoX3YpLnR5cGUgPT0gTlBW
YXJpYW50VHlwZV9TdHJpbmcpCisjZGVmaW5lIE5QVkFSSUFOVF9JU19PQkpFQ1QoX3YpICAoKF92
KS50eXBlID09IE5QVmFyaWFudFR5cGVfT2JqZWN0KQorCisjZGVmaW5lIE5QVkFSSUFOVF9UT19C
T09MRUFOKF92KSAoKF92KS52YWx1ZS5ib29sVmFsdWUpCisjZGVmaW5lIE5QVkFSSUFOVF9UT19J
TlQzMihfdikgICAoKF92KS52YWx1ZS5pbnRWYWx1ZSkKKyNkZWZpbmUgTlBWQVJJQU5UX1RPX0RP
VUJMRShfdikgICgoX3YpLnZhbHVlLmRvdWJsZVZhbHVlKQorI2RlZmluZSBOUFZBUklBTlRfVE9f
U1RSSU5HKF92KSAgKChfdikudmFsdWUuc3RyaW5nVmFsdWUpCisjZGVmaW5lIE5QVkFSSUFOVF9U
T19PQkpFQ1QoX3YpICAoKF92KS52YWx1ZS5vYmplY3RWYWx1ZSkKKworI2RlZmluZSBWT0lEX1RP
X05QVkFSSUFOVChfdikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorTlBfQkVHSU5fTUFDUk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChfdikudHlwZSA9IE5QVmFyaWFu
dFR5cGVfVm9pZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIChfdikudmFsdWUub2JqZWN0VmFsdWUgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorTlBfRU5EX01BQ1JPCisKKyNkZWZpbmUgTlVMTF9UT19O
UFZBUklBTlQoX3YpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKK05QX0JFR0lOX01BQ1JPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3YpLnR5cGUgPSBOUFZhcmlhbnRU
eXBlX051bGw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAoX3YpLnZhbHVlLm9iamVjdFZhbHVlID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKK05QX0VORF9NQUNSTworCisjZGVmaW5lIEJPT0xFQU5fVE9f
TlBWQVJJQU5UKF92YWwsIF92KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCitOUF9CRUdJTl9NQUNSTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKF92KS50eXBlID0gTlBWYXJpYW50VHlw
ZV9Cb29sOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
KF92KS52YWx1ZS5ib29sVmFsdWUgPSAhIShfdmFsKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCitOUF9FTkRfTUFDUk8KKworI2RlZmluZSBJTlQzMl9UT19OUFZB
UklBTlQoX3ZhbCwgX3YpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorTlBfQkVHSU5fTUFDUk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChfdikudHlwZSA9IE5QVmFyaWFudFR5cGVf
SW50MzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChf
dikudmFsdWUuaW50VmFsdWUgPSBfdmFsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorTlBfRU5EX01BQ1JPCisKKyNkZWZpbmUgRE9VQkxFX1RPX05QVkFS
SUFOVChfdmFsLCBfdikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
K05QX0JFR0lOX01BQ1JPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3YpLnR5cGUgPSBOUFZhcmlhbnRUeXBlX0Rv
dWJsZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3Yp
LnZhbHVlLmRvdWJsZVZhbHVlID0gX3ZhbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKK05QX0VORF9NQUNSTworCisjZGVmaW5lIFNUUklOR1pfVE9fTlBWQVJJ
QU5UKF92YWwsIF92KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitO
UF9CRUdJTl9NQUNSTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgKF92KS50eXBlID0gTlBWYXJpYW50VHlwZV9TdHJp
bmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgTlBTdHJp
bmcgc3RyID0geyBfdmFsLCB1aW50MzJfdChzdHJsZW4oX3ZhbCkpIH07ICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgKF92KS52YWx1ZS5zdHJpbmdWYWx1ZSA9IHN0cjsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitOUF9FTkRfTUFDUk8KKworI2Rl
ZmluZSBTVFJJTkdOX1RPX05QVkFSSUFOVChfdmFsLCBfbGVuLCBfdikgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorTlBfQkVHSU5fTUFDUk8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChfdikudHlw
ZSA9IE5QVmFyaWFudFR5cGVfU3RyaW5nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIE5QU3RyaW5nIHN0ciA9IHsgX3ZhbCwgdWludDMyX3QoX2xlbikgfTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChfdikudmFsdWUuc3RyaW5n
VmFsdWUgPSBzdHI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorTlBfRU5EX01BQ1JPCisKKyNkZWZpbmUgT0JKRUNUX1RPX05QVkFSSUFOVChfdmFsLCBfdikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK05QX0JFR0lOX01BQ1JP
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAoX3YpLnR5cGUgPSBOUFZhcmlhbnRUeXBlX09iamVjdDsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3YpLnZhbHVlLm9iamVjdFZh
bHVlID0gX3ZhbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
K05QX0VORF9NQUNSTworCisKKy8qCisgIFR5cGUgbWFwcGluZ3MgKEphdmFTY3JpcHQgdHlwZXMg
aGF2ZSBiZWVuIHVzZWQgZm9yIGlsbHVzdHJhdGlvbgorICAgIHB1cnBvc2VzKToKKworICBKYXZh
U2NyaXB0ICAgICAgIHRvICAgICAgICAgICAgIEMgKE5QVmFyaWFudCB3aXRoIHR5cGU6KQorICB1
bmRlZmluZWQgICAgICAgICAgICAgICAgICAgICAgIE5QVmFyaWFudFR5cGVfVm9pZAorICBudWxs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QVmFyaWFudFR5cGVfTnVsbAorICBCb29sZWFu
ICAgICAgICAgICAgICAgICAgICAgICAgIE5QVmFyaWFudFR5cGVfQm9vbAorICBOdW1iZXIgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5QVmFyaWFudFR5cGVfRG91YmxlIG9yIE5QVmFyaWFudFR5
cGVfSW50MzIKKyAgU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICBOUFZhcmlhbnRUeXBl
X1N0cmluZworICBPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgIE5QVmFyaWFudFR5cGVf
T2JqZWN0CisKKyAgQyAoTlBWYXJpYW50IHdpdGggdHlwZTopICAgdG8gICBKYXZhU2NyaXB0Cisg
IE5QVmFyaWFudFR5cGVfVm9pZCAgICAgICAgICAgICAgdW5kZWZpbmVkCisgIE5QVmFyaWFudFR5
cGVfTnVsbCAgICAgICAgICAgICAgbnVsbAorICBOUFZhcmlhbnRUeXBlX0Jvb2wgICAgICAgICAg
ICAgIEJvb2xlYW4KKyAgTlBWYXJpYW50VHlwZV9JbnQzMiAgICAgICAgICAgICBOdW1iZXIKKyAg
TlBWYXJpYW50VHlwZV9Eb3VibGUgICAgICAgICAgICBOdW1iZXIKKyAgTlBWYXJpYW50VHlwZV9T
dHJpbmcgICAgICAgICAgICBTdHJpbmcKKyAgTlBWYXJpYW50VHlwZV9PYmplY3QgICAgICAgICAg
ICBPYmplY3QKKyovCisKK3R5cGVkZWYgdm9pZCAqTlBJZGVudGlmaWVyOworCisvKgorICAgIE5Q
T2JqZWN0cyBoYXZlIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMuICBNZXRob2RzIGFuZCBwcm9wZXJ0
aWVzIGFyZQorICAgIGlkZW50aWZpZWQgd2l0aCBOUElkZW50aWZpZXJzLiAgVGhlc2UgaWRlbnRp
ZmllcnMgbWF5IGJlIHJlZmxlY3RlZAorICAgIGluIHNjcmlwdC4gIE5QSWRlbnRpZmllcnMgY2Fu
IGJlIGVpdGhlciBzdHJpbmdzIG9yIGludGVnZXJzLCBJT1csCisgICAgbWV0aG9kcyBhbmQgcHJv
cGVydGllcyBjYW4gYmUgaWRlbnRpZmllZCBieSBlaXRoZXIgc3RyaW5ncyBvcgorICAgIGludGVn
ZXJzIChpLmUuIGZvb1siYmFyIl0gdnMgZm9vWzFdKS4gTlBJZGVudGlmaWVycyBjYW4gYmUKKyAg
ICBjb21wYXJlZCB1c2luZyA9PS4gIEluIGNhc2Ugb2YgYW55IGVycm9ycywgdGhlIHJlcXVlc3Rl
ZAorICAgIE5QSWRlbnRpZmllcihzKSB3aWxsIGJlIE5VTEwuIE5QSWRlbnRpZmllciBsaWZldGlt
ZSBpcyBjb250cm9sbGVkCisgICAgYnkgdGhlIGJyb3dzZXIuIFBsdWdpbnMgZG8gbm90IG5lZWQg
dG8gd29ycnkgYWJvdXQgbWVtb3J5IG1hbmFnZW1lbnQKKyAgICB3aXRoIHJlZ2FyZHMgdG8gTlBJ
ZGVudGlmaWVycy4KKyovCitOUElkZW50aWZpZXIgTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoY29u
c3QgTlBVVEY4ICpuYW1lKTsKK3ZvaWQgTlBOX0dldFN0cmluZ0lkZW50aWZpZXJzKGNvbnN0IE5Q
VVRGOCAqKm5hbWVzLCBpbnQzMl90IG5hbWVDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5QSWRlbnRpZmllciAqaWRlbnRpZmllcnMpOworTlBJZGVudGlmaWVyIE5QTl9HZXRJ
bnRJZGVudGlmaWVyKGludDMyX3QgaW50aWQpOworYm9vbCBOUE5fSWRlbnRpZmllcklzU3RyaW5n
KE5QSWRlbnRpZmllciBpZGVudGlmaWVyKTsKKworLyoKKyAgICBUaGUgTlBVVEY4IHJldHVybmVk
IGZyb20gTlBOX1VURjhGcm9tSWRlbnRpZmllciBTSE9VTEQgYmUgZnJlZWQuCisqLworTlBVVEY4
ICpOUE5fVVRGOEZyb21JZGVudGlmaWVyKE5QSWRlbnRpZmllciBpZGVudGlmaWVyKTsKKworLyoK
KyAgICBHZXQgdGhlIGludGVnZXIgcmVwcmVzZW50ZWQgYnkgaWRlbnRpZmllci4gSWYgaWRlbnRp
ZmllciBpcyBub3QgYW4KKyAgICBpbnRlZ2VyIGlkZW50aWZpZXIsIHRoZSBiZWhhdmlvdXIgaXMg
dW5kZWZpbmVkLgorKi8KK2ludDMyX3QgTlBOX0ludEZyb21JZGVudGlmaWVyKE5QSWRlbnRpZmll
ciBpZGVudGlmaWVyKTsKKworLyoKKyAgICBOUE9iamVjdCBiZWhhdmlvciBpcyBpbXBsZW1lbnRl
ZCB1c2luZyB0aGUgZm9sbG93aW5nIHNldCBvZgorICAgIGNhbGxiYWNrIGZ1bmN0aW9ucy4KKwor
ICAgIFRoZSBOUFZhcmlhbnQgKnJlc3VsdCBhcmd1bWVudCBvZiB0aGVzZSBmdW5jdGlvbnMgKHdo
ZXJlCisgICAgYXBwbGljYWJsZSkgc2hvdWxkIGJlIHJlbGVhc2VkIHVzaW5nIE5QTl9SZWxlYXNl
VmFyaWFudFZhbHVlKCkuCisqLwordHlwZWRlZiBOUE9iamVjdCAqKCpOUEFsbG9jYXRlRnVuY3Rp
b25QdHIpKE5QUCBucHAsIE5QQ2xhc3MgKmFDbGFzcyk7Cit0eXBlZGVmIHZvaWQgKCpOUERlYWxs
b2NhdGVGdW5jdGlvblB0cikoTlBPYmplY3QgKm5wb2JqKTsKK3R5cGVkZWYgdm9pZCAoKk5QSW52
YWxpZGF0ZUZ1bmN0aW9uUHRyKShOUE9iamVjdCAqbnBvYmopOwordHlwZWRlZiBib29sICgqTlBI
YXNNZXRob2RGdW5jdGlvblB0cikoTlBPYmplY3QgKm5wb2JqLCBOUElkZW50aWZpZXIgbmFtZSk7
Cit0eXBlZGVmIGJvb2wgKCpOUEludm9rZUZ1bmN0aW9uUHRyKShOUE9iamVjdCAqbnBvYmosIE5Q
SWRlbnRpZmllciBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgTlBWYXJpYW50ICphcmdzLCB1aW50MzJfdCBhcmdDb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5QVmFyaWFudCAqcmVzdWx0KTsKK3R5cGVkZWYgYm9vbCAoKk5Q
SW52b2tlRGVmYXVsdEZ1bmN0aW9uUHRyKShOUE9iamVjdCAqbnBvYmosCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTlBWYXJpYW50ICphcmdzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFyZ0NvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QVmFyaWFudCAq
cmVzdWx0KTsKK3R5cGVkZWYgYm9vbCAoKk5QSGFzUHJvcGVydHlGdW5jdGlvblB0cikoTlBPYmpl
Y3QgKm5wb2JqLCBOUElkZW50aWZpZXIgbmFtZSk7Cit0eXBlZGVmIGJvb2wgKCpOUEdldFByb3Bl
cnR5RnVuY3Rpb25QdHIpKE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVyIG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QVmFyaWFudCAqcmVzdWx0KTsK
K3R5cGVkZWYgYm9vbCAoKk5QU2V0UHJvcGVydHlGdW5jdGlvblB0cikoTlBPYmplY3QgKm5wb2Jq
LCBOUElkZW50aWZpZXIgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgTlBWYXJpYW50ICp2YWx1ZSk7Cit0eXBlZGVmIGJvb2wgKCpOUFJlbW92ZVBy
b3BlcnR5RnVuY3Rpb25QdHIpKE5QT2JqZWN0ICpucG9iaiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlBJZGVudGlmaWVyIG5hbWUpOwordHlwZWRlZiBib29s
ICgqTlBFbnVtZXJhdGlvbkZ1bmN0aW9uUHRyKShOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmll
ciAqKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCAqY291bnQpOwordHlwZWRlZiBib29sICgqTlBDb25zdHJ1Y3RGdW5jdGlvblB0cikoTlBP
YmplY3QgKm5wb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgTlBWYXJpYW50ICphcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3QgYXJnQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOUFZhcmlhbnQgKnJlc3VsdCk7CisKKy8qCisgICAgTlBPYmplY3RzIHJldHVybmVkIGJ5
IGNyZWF0ZSwgcmV0YWluLCBpbnZva2UsIGFuZCBnZXRQcm9wZXJ0eSBwYXNzCisgICAgYSByZWZl
cmVuY2UgY291bnQgdG8gdGhlIGNhbGxlci4gIFRoYXQgaXMsIHRoZSBjYWxsZWUgYWRkcyBhCisg
ICAgcmVmZXJlbmNlIGNvdW50IHdoaWNoIHBhc3NlcyB0byB0aGUgY2FsbGVyLiAgSXQgaXMgdGhl
IGNhbGxlcidzCisgICAgcmVzcG9uc2liaWxpdHkgdG8gcmVsZWFzZSB0aGUgcmV0dXJuZWQgb2Jq
ZWN0LgorCisgICAgTlBJbnZva2VGdW5jdGlvblB0ciBmdW5jdGlvbiBtYXkgcmV0dXJuIDAgdG8g
aW5kaWNhdGUgYSB2b2lkCisgICAgcmVzdWx0LgorCisgICAgTlBJbnZhbGlkYXRlRnVuY3Rpb25Q
dHIgaXMgY2FsbGVkIGJ5IHRoZSBzY3JpcHRpbmcgZW52aXJvbm1lbnQKKyAgICB3aGVuIHRoZSBu
YXRpdmUgY29kZSBpcyBzaHV0ZG93bi4gIEFueSBhdHRlbXB0IHRvIG1lc3NhZ2UgYQorICAgIE5Q
T2JqZWN0IGluc3RhbmNlIGFmdGVyIHRoZSBpbnZhbGlkYXRlIGNhbGxiYWNrIGhhcyBiZWVuCisg
ICAgY2FsbGVkIHdpbGwgcmVzdWx0IGluIHVuZGVmaW5lZCBiZWhhdmlvciwgZXZlbiBpZiB0aGUg
bmF0aXZlIGNvZGUKKyAgICBpcyBzdGlsbCByZXRhaW5pbmcgdGhvc2UgTlBPYmplY3QgaW5zdGFu
Y2VzLiAgKFRoZSBydW50aW1lCisgICAgd2lsbCB0eXBpY2FsbHkgcmV0dXJuIGltbWVkaWF0ZWx5
LCB3aXRoIDAgb3IgTlVMTCwgZnJvbSBhbiBhdHRlbXB0CisgICAgdG8gZGlzcGF0Y2ggdG8gYSBO
UE9iamVjdCwgYnV0IHRoaXMgYmVoYXZpb3Igc2hvdWxkIG5vdCBiZQorICAgIGRlcGVuZGVkIHVw
b24uKQorCisgICAgVGhlIE5QRW51bWVyYXRpb25GdW5jdGlvblB0ciBmdW5jdGlvbiBtYXkgcGFz
cyBhbiBhcnJheSBvZgorICAgIE5QSWRlbnRpZmllcnMgYmFjayB0byB0aGUgY2FsbGVyLiBUaGUg
Y2FsbGVlIGFsbG9jcyB0aGUgbWVtb3J5IG9mCisgICAgdGhlIGFycmF5IHVzaW5nIE5QTl9NZW1B
bGxvYygpLCBhbmQgaXQncyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkKKyAgICB0byByZWxl
YXNlIGl0IHVzaW5nIE5QTl9NZW1GcmVlKCkuCisqLworc3RydWN0IE5QQ2xhc3MKK3sKKyAgICB1
aW50MzJfdCBzdHJ1Y3RWZXJzaW9uOworICAgIE5QQWxsb2NhdGVGdW5jdGlvblB0ciBhbGxvY2F0
ZTsKKyAgICBOUERlYWxsb2NhdGVGdW5jdGlvblB0ciBkZWFsbG9jYXRlOworICAgIE5QSW52YWxp
ZGF0ZUZ1bmN0aW9uUHRyIGludmFsaWRhdGU7CisgICAgTlBIYXNNZXRob2RGdW5jdGlvblB0ciBo
YXNNZXRob2Q7CisgICAgTlBJbnZva2VGdW5jdGlvblB0ciBpbnZva2U7CisgICAgTlBJbnZva2VE
ZWZhdWx0RnVuY3Rpb25QdHIgaW52b2tlRGVmYXVsdDsKKyAgICBOUEhhc1Byb3BlcnR5RnVuY3Rp
b25QdHIgaGFzUHJvcGVydHk7CisgICAgTlBHZXRQcm9wZXJ0eUZ1bmN0aW9uUHRyIGdldFByb3Bl
cnR5OworICAgIE5QU2V0UHJvcGVydHlGdW5jdGlvblB0ciBzZXRQcm9wZXJ0eTsKKyAgICBOUFJl
bW92ZVByb3BlcnR5RnVuY3Rpb25QdHIgcmVtb3ZlUHJvcGVydHk7CisgICAgTlBFbnVtZXJhdGlv
bkZ1bmN0aW9uUHRyIGVudW1lcmF0ZTsKKyAgICBOUENvbnN0cnVjdEZ1bmN0aW9uUHRyIGNvbnN0
cnVjdDsKK307CisKKyNkZWZpbmUgTlBfQ0xBU1NfU1RSVUNUX1ZFUlNJT04gICAgICAzCisKKyNk
ZWZpbmUgTlBfQ0xBU1NfU1RSVUNUX1ZFUlNJT05fRU5VTSAyCisjZGVmaW5lIE5QX0NMQVNTX1NU
UlVDVF9WRVJTSU9OX0NUT1IgMworCisjZGVmaW5lIE5QX0NMQVNTX1NUUlVDVF9WRVJTSU9OX0hB
U19FTlVNKG5wY2xhc3MpICAgXAorICAgICAgICAoKG5wY2xhc3MpLT5zdHJ1Y3RWZXJzaW9uID49
IE5QX0NMQVNTX1NUUlVDVF9WRVJTSU9OX0VOVU0pCisKKyNkZWZpbmUgTlBfQ0xBU1NfU1RSVUNU
X1ZFUlNJT05fSEFTX0NUT1IobnBjbGFzcykgICBcCisgICAgICAgICgobnBjbGFzcyktPnN0cnVj
dFZlcnNpb24gPj0gTlBfQ0xBU1NfU1RSVUNUX1ZFUlNJT05fQ1RPUikKKworc3RydWN0IE5QT2Jq
ZWN0IHsKKyAgICBOUENsYXNzICpfY2xhc3M7CisgICAgdWludDMyX3QgcmVmZXJlbmNlQ291bnQ7
CisgICAgLyoKKyAgICAgKiBBZGRpdGlvbmFsIHNwYWNlIG1heSBiZSBhbGxvY2F0ZWQgaGVyZSBi
eSB0eXBlcyBvZiBOUE9iamVjdHMKKyAgICAgKi8KK307CisKKy8qCisgICAgSWYgdGhlIGNsYXNz
IGhhcyBhbiBhbGxvY2F0ZSBmdW5jdGlvbiwgTlBOX0NyZWF0ZU9iamVjdCBpbnZva2VzCisgICAg
dGhhdCBmdW5jdGlvbiwgb3RoZXJ3aXNlIGEgTlBPYmplY3QgaXMgYWxsb2NhdGVkIGFuZAorICAg
IHJldHVybmVkLiBUaGlzIG1ldGhvZCB3aWxsIGluaXRpYWxpemUgdGhlIHJlZmVyZW5jZUNvdW50
IG1lbWJlciBvZgorICAgIHRoZSBOUE9iamVjdCB0byAxLgorKi8KK05QT2JqZWN0ICpOUE5fQ3Jl
YXRlT2JqZWN0KE5QUCBucHAsIE5QQ2xhc3MgKmFDbGFzcyk7CisKKy8qCisgICAgSW5jcmVtZW50
IHRoZSBOUE9iamVjdCdzIHJlZmVyZW5jZSBjb3VudC4KKyovCitOUE9iamVjdCAqTlBOX1JldGFp
bk9iamVjdChOUE9iamVjdCAqbnBvYmopOworCisvKgorICAgIERlY3JlbWVudGVkIHRoZSBOUE9i
amVjdCdzIHJlZmVyZW5jZSBjb3VudC4gIElmIHRoZSByZWZlcmVuY2UKKyAgICBjb3VudCBnb2Vz
IHRvIHplcm8sIHRoZSBjbGFzcydzIGRlc3Ryb3kgZnVuY3Rpb24gaXMgaW52b2tlIGlmCisgICAg
c3BlY2lmaWVkLCBvdGhlcndpc2UgdGhlIG9iamVjdCBpcyBmcmVlZCBkaXJlY3RseS4KKyovCit2
b2lkIE5QTl9SZWxlYXNlT2JqZWN0KE5QT2JqZWN0ICpucG9iaik7CisKKy8qCisgICAgRnVuY3Rp
b25zIHRvIGFjY2VzcyBzY3JpcHQgb2JqZWN0cyByZXByZXNlbnRlZCBieSBOUE9iamVjdC4KKwor
ICAgIENhbGxzIHRvIHNjcmlwdCBvYmplY3RzIGFyZSBzeW5jaHJvbm91cy4gIElmIGEgZnVuY3Rp
b24gcmV0dXJucyBhCisgICAgdmFsdWUsIGl0IHdpbGwgYmUgc3VwcGxpZWQgdmlhIHRoZSByZXN1
bHQgTlBWYXJpYW50CisgICAgYXJndW1lbnQuIFN1Y2Nlc3NmdWwgY2FsbHMgd2lsbCByZXR1cm4g
dHJ1ZSwgZmFsc2Ugd2lsbCBiZQorICAgIHJldHVybmVkIGluIGNhc2Ugb2YgYW4gZXJyb3IuCisg
ICAgCisgICAgQ2FsbHMgbWFkZSBmcm9tIHBsdWdpbiBjb2RlIHRvIHNjcmlwdCBtdXN0IGJlIG1h
ZGUgZnJvbSB0aGUgdGhyZWFkCisgICAgb24gd2hpY2ggdGhlIHBsdWdpbiB3YXMgaW5pdGlhbGl6
ZWQuCisqLworCitib29sIE5QTl9JbnZva2UoTlBQIG5wcCwgTlBPYmplY3QgKm5wb2JqLCBOUElk
ZW50aWZpZXIgbWV0aG9kTmFtZSwKKyAgICAgICAgICAgICAgICBjb25zdCBOUFZhcmlhbnQgKmFy
Z3MsIHVpbnQzMl90IGFyZ0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCk7Citib29sIE5QTl9JbnZv
a2VEZWZhdWx0KE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgY29uc3QgTlBWYXJpYW50ICphcmdz
LAorICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50ICpy
ZXN1bHQpOworYm9vbCBOUE5fRXZhbHVhdGUoTlBQIG5wcCwgTlBPYmplY3QgKm5wb2JqLCBOUFN0
cmluZyAqc2NyaXB0LAorICAgICAgICAgICAgICAgICAgTlBWYXJpYW50ICpyZXN1bHQpOworYm9v
bCBOUE5fR2V0UHJvcGVydHkoTlBQIG5wcCwgTlBPYmplY3QgKm5wb2JqLCBOUElkZW50aWZpZXIg
cHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgTlBWYXJpYW50ICpyZXN1bHQpOwor
Ym9vbCBOUE5fU2V0UHJvcGVydHkoTlBQIG5wcCwgTlBPYmplY3QgKm5wb2JqLCBOUElkZW50aWZp
ZXIgcHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgTlBWYXJpYW50ICp2
YWx1ZSk7Citib29sIE5QTl9SZW1vdmVQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmos
IE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpOworYm9vbCBOUE5fSGFzUHJvcGVydHkoTlBQIG5w
cCwgTlBPYmplY3QgKm5wb2JqLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKTsKK2Jvb2wgTlBO
X0hhc01ldGhvZChOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBtZXRob2RO
YW1lKTsKK2Jvb2wgTlBOX0VudW1lcmF0ZShOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QSWRl
bnRpZmllciAqKmlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmNvdW50
KTsKK2Jvb2wgTlBOX0NvbnN0cnVjdChOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIGNvbnN0IE5Q
VmFyaWFudCAqYXJncywKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhcmdDb3VudCwgTlBW
YXJpYW50ICpyZXN1bHQpOworCisvKgorICAgIE5QTl9TZXRFeGNlcHRpb24gbWF5IGJlIGNhbGxl
ZCB0byB0cmlnZ2VyIGEgc2NyaXB0IGV4Y2VwdGlvbiB1cG9uCisgICAgcmV0dXJuIGZyb20gZW50
cnkgcG9pbnRzIGludG8gTlBPYmplY3RzLiAgVHlwaWNhbCB1c2FnZToKKworICAgIE5QTl9TZXRF
eGNlcHRpb24gKG5wb2JqLCBtZXNzYWdlKTsKKyovCit2b2lkIE5QTl9TZXRFeGNlcHRpb24oTlBP
YmplY3QgKm5wb2JqLCBjb25zdCBOUFVURjggKm1lc3NhZ2UpOworCisjaWZkZWYgX19jcGx1c3Bs
dXMKK30KKyNlbmRpZgorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbnB0
eXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbnB0eXBlcy5oCShy
ZXZpc2lvbiA5NDU4MykJKGZyb20gU291cmNlL1dlYkNvcmUvYnJpZGdlL25wdHlwZXMuaDo5NDU4
MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbnB0eXBlcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTIxIEBACisvKiAtKi0gTW9kZTogQzsgdGFiLXdpZHRoOiAyOyBpbmRlbnQtdGFi
cy1tb2RlOiBuaWw7IGMtYmFzaWMtb2Zmc2V0OiAyIC0qLSAqLworLyogKioqKiogQkVHSU4gTElD
RU5TRSBCTE9DSyAqKioqKgorICogVmVyc2lvbjogTVBMIDEuMS9HUEwgMi4wL0xHUEwgMi4xCisg
KgorICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgTW96aWxs
YSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uCisgKiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgKKyAqIHRoZSBMaWNl
bnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqIGh0dHA6Ly93
d3cubW96aWxsYS5vcmcvTVBMLworICoKKyAqIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsCisgKiBXSVRIT1VU
IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhl
IExpY2Vuc2UKKyAqIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHJpZ2h0cyBh
bmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlCisgKiBMaWNlbnNlLgorICoKKyAqIFRoZSBPcmlnaW5h
bCBDb2RlIGlzIG1vemlsbGEub3JnIGNvZGUuCisgKgorICogVGhlIEluaXRpYWwgRGV2ZWxvcGVy
IG9mIHRoZSBPcmlnaW5hbCBDb2RlIGlzCisgKiBtb3ppbGxhLm9yZy4KKyAqIFBvcnRpb25zIGNy
ZWF0ZWQgYnkgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGFyZSBDb3B5cmlnaHQgKEMpIDIwMDQKKyAq
IHRoZSBJbml0aWFsIERldmVsb3Blci4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBDb250
cmlidXRvcihzKToKKyAqICAgSm9obm55IFN0ZW5iYWNrIDxqc3RAbW96aWxsYS5vcmc+IChPcmln
aW5hbCBhdXRob3IpCisgKgorICogQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMg
ZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YKKyAqIGVpdGhlciB0aGUgR05VIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyIG9yIGxhdGVyICh0aGUgIkdQTCIpLCBvcgor
ICogdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMSBvciBs
YXRlciAodGhlICJMR1BMIiksCisgKiBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRo
ZSBHUEwgb3IgdGhlIExHUEwgYXJlIGFwcGxpY2FibGUgaW5zdGVhZAorICogb2YgdGhvc2UgYWJv
dmUuIElmIHlvdSB3aXNoIHRvIGFsbG93IHVzZSBvZiB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxl
IG9ubHkKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiBlaXRoZXIgdGhlIEdQTCBvciB0aGUgTEdQTCwg
YW5kIG5vdCB0byBhbGxvdyBvdGhlcnMgdG8KKyAqIHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcyBm
aWxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTVBMLCBpbmRpY2F0ZSB5b3VyCisgKiBkZWNpc2lv
biBieSBkZWxldGluZyB0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGgg
dGhlIG5vdGljZQorICogYW5kIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIEdQTCBv
ciB0aGUgTEdQTC4gSWYgeW91IGRvIG5vdCBkZWxldGUKKyAqIHRoZSBwcm92aXNpb25zIGFib3Zl
LCBhIHJlY2lwaWVudCBtYXkgdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIKKyAq
IHRoZSB0ZXJtcyBvZiBhbnkgb25lIG9mIHRoZSBNUEwsIHRoZSBHUEwgb3IgdGhlIExHUEwuCisg
KgorICogKioqKiogRU5EIExJQ0VOU0UgQkxPQ0sgKioqKiogKi8KKworI2lmbmRlZiBucHR5cGVz
X2hfCisjZGVmaW5lIG5wdHlwZXNfaF8KKworLyoKKyAqIEhlYWRlciBmaWxlIGZvciBlbnN1cmlu
ZyB0aGF0IEM5OSB0eXBlcyAoW3VdaW50MzJfdCwgW3VdaW50NjRfdCBhbmQgYm9vbCkgYW5kCisg
KiB0cnVlL2ZhbHNlIG1hY3JvcyBhcmUgYXZhaWxhYmxlLgorICovCisKKyNpZiBkZWZpbmVkKFdJ
TjMyKSB8fCBkZWZpbmVkKE9TMikKKyAgLyoKKyAgICogV2luMzIgYW5kIE9TLzIgZG9uJ3Qga25v
dyBDOTksIHNvIGRlZmluZSBbdV1pbnRfMTYvMzIvNjQgaGVyZS4gVGhlIGJvb2wKKyAgICogaXMg
cHJlZGVmaW5lZCB0aG8sIGJvdGggaW4gQyBhbmQgQysrLgorICAgKi8KKyAgdHlwZWRlZiBzaG9y
dCBpbnQxNl90OworICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVpbnQxNl90OworICB0eXBlZGVm
IGludCBpbnQzMl90OworICB0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50MzJfdDsKKyAgdHlwZWRl
ZiBsb25nIGxvbmcgaW50NjRfdDsKKyAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWludDY0
X3Q7CisjZWxpZiBkZWZpbmVkKF9BSVgpIHx8IGRlZmluZWQoX19zdW4pIHx8IGRlZmluZWQoX19v
c2ZfXykgfHwgZGVmaW5lZChJUklYKSB8fCBkZWZpbmVkKEhQVVgpCisgIC8qCisgICAqIEFJWCBh
bmQgU3VuT1Mgc2hpcCBhIGludHR5cGVzLmggaGVhZGVyIHRoYXQgZGVmaW5lcyBbdV1pbnQzMl90
LAorICAgKiBidXQgbm90IGJvb2wgZm9yIEMuCisgICAqLworICAjaW5jbHVkZSA8aW50dHlwZXMu
aD4KKworICAjaWZuZGVmIF9fY3BsdXNwbHVzCisgICAgdHlwZWRlZiBpbnQgYm9vbDsKKyAgICAj
ZGVmaW5lIHRydWUgICAxCisgICAgI2RlZmluZSBmYWxzZSAgMAorICAjZW5kaWYKKyNlbGlmIGRl
ZmluZWQoYnNkaSkgfHwgZGVmaW5lZChGUkVFQlNEKSB8fCBkZWZpbmVkKE9QRU5CU0QpCisgIC8q
CisgICAqIEJTRC9PUywgRnJlZUJTRCwgYW5kIE9wZW5CU0Qgc2hpcCBzeXMvdHlwZXMuaCB0aGF0
IGRlZmluZSBpbnQzMl90IGFuZCAKKyAgICogdV9pbnQzMl90LgorICAgKi8KKyAgI2luY2x1ZGUg
PHN5cy90eXBlcy5oPgorCisgIC8qCisgICAqIEJTRC9PUyBzaGlwcyBubyBoZWFkZXIgdGhhdCBk
ZWZpbmVzIHVpbnQzMl90LCBub3IgYm9vbCAoZm9yIEMpCisgICAqLworICAjaWYgZGVmaW5lZChi
c2RpKQorICB0eXBlZGVmIHVfaW50MzJfdCB1aW50MzJfdDsKKyAgdHlwZWRlZiB1X2ludDY0X3Qg
dWludDY0X3Q7CisKKyAgI2lmICFkZWZpbmVkKF9fY3BsdXNwbHVzKQorICAgIHR5cGVkZWYgaW50
IGJvb2w7CisgICAgI2RlZmluZSB0cnVlICAgMQorICAgICNkZWZpbmUgZmFsc2UgIDAKKyAgI2Vu
ZGlmCisgICNlbHNlCisgIC8qCisgICAqIEZyZWVCU0QgYW5kIE9wZW5CU0QgZGVmaW5lIHVpbnQz
Ml90IGFuZCBib29sLgorICAgKi8KKyAgICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAgICAjaW5j
bHVkZSA8c3RkYm9vbC5oPgorICAjZW5kaWYKKyNlbGlmIGRlZmluZWQoQkVPUykKKyAgI2luY2x1
ZGUgPGludHR5cGVzLmg+CisjZWxzZQorICAvKgorICAgKiBGb3IgdGhvc2UgdGhhdCBzaGlwIGEg
c3RhbmRhcmQgQzk5IHN0ZGludC5oIGhlYWRlciBmaWxlLCBpbmNsdWRlCisgICAqIGl0LiBDYW4n
dCBkbyB0aGUgc2FtZSBmb3Igc3RkYm9vbC5oIHRobywgc2luY2Ugc29tZSBzeXN0ZW1zIHNoaXAK
KyAgICogd2l0aCBhIHN0ZGJvb2wuaCBmaWxlIHRoYXQgZG9lc24ndCBjb21waWxlIQorICAgKi8K
KyAgI2luY2x1ZGUgPHN0ZGludC5oPgorCisgICNpZm5kZWYgX19jcGx1c3BsdXMKKyAgICAjaWYg
IWRlZmluZWQoX19HTlVDX18pIHx8IChfX0dOVUNfXyA+IDIgfHwgX19HTlVDX01JTk9SX18gPiA5
NSkKKyAgICAgICNpbmNsdWRlIDxzdGRib29sLmg+CisgICAgI2Vsc2UKKyAgICAgIC8qCisgICAg
ICAgKiBHQ0MgMi45MSBjYW4ndCBkZWFsIHdpdGggYSB0eXBlZGVmIGZvciBib29sLCBidXQgYSAj
ZGVmaW5lCisgICAgICAgKiB3b3Jrcy4KKyAgICAgICAqLworICAgICAgI2RlZmluZSBib29sIGlu
dAorICAgICAgI2RlZmluZSB0cnVlICAgMQorICAgICAgI2RlZmluZSBmYWxzZSAgMAorICAgICNl
bmRpZgorICAjZW5kaWYKKyNlbmRpZgorCisjZW5kaWYgLyogbnB0eXBlc19oXyAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106468</attachid>
            <date>2011-09-06 12:45:50 -0700</date>
            <delta_ts>2011-09-06 12:48:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67661-20110906124549.patch</filename>
            <type>text/plain</type>
            <size>120475</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0NTg0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDktMDYgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIE5QQVBJIGhlYWRl
cnMgaW4gYnJpZGdlIHRvIHBsdWdpbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY3NjYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBVcGRhdGUgYnVpbGQgc3lzdGVt
cy4KKworICAgICAgICAqIGJyaWRnZS9ucGFwaS5oOiBSZW1vdmVkLgorICAgICAgICAqIGJyaWRn
ZS9ucHJ1bnRpbWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBicmlkZ2UvbnB0eXBlcy5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsdWdpbnMvbnBhcGkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvYnJpZGdlL25wYXBpLmguCisgICAgICAgICogcGx1Z2lucy9ucHJ1bnRpbWUuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvYnJpZGdlL25wcnVudGltZS5oLgorICAgICAgICAqIHBsdWdp
bnMvbnB0eXBlcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvbnB0eXBlcy5o
LgorCiAyMDExLTA5LTA2ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIGxvYWQoKSBkb2VzIG5vdCByZXNldCB0aGUgcmVzb3VyY2Ugc2VsZWN0aW9uIGFs
Z29yaXRobQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gOTQ1ODMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTQ3NiwxMSArNDc2LDggQEAK
ICAgICAgICAgICAgICdicmlkZ2Uvam5pL0pOSVV0aWxpdHkuaCcsCiAgICAgICAgICAgICAnYnJp
ZGdlL2puaS9qbmlfanNvYmplY3QuaCcsCiAgICAgICAgICAgICAnYnJpZGdlL2pzYy9CcmlkZ2VK
U0MuaCcsCi0gICAgICAgICAgICAnYnJpZGdlL25wYXBpLmgnLAotICAgICAgICAgICAgJ2JyaWRn
ZS9ucHJ1bnRpbWUuaCcsCiAgICAgICAgICAgICAnYnJpZGdlL25wcnVudGltZV9pbXBsLmgnLAog
ICAgICAgICAgICAgJ2JyaWRnZS9ucHJ1bnRpbWVfaW50ZXJuYWwuaCcsCi0gICAgICAgICAgICAn
YnJpZGdlL25wdHlwZXMuaCcsCiAgICAgICAgICAgICAnYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgn
LAogICAgICAgICAgICAgJ2JyaWRnZS9ydW50aW1lX29iamVjdC5oJywKICAgICAgICAgICAgICdi
cmlkZ2UvcnVudGltZV9yb290LmgnLApAQCAtODc3LDcgKzg3NCwxMCBAQAogICAgICAgICAgICAg
J3BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5oJywKICAgICAgICAgICAgICdwbHVn
aW5zL1BsdWdpblN0cmF0ZWd5LmgnLAogICAgICAgICAgICAgJ3BsdWdpbnMvUGx1Z2luVmlld0Jh
c2UuaCcsCisgICAgICAgICAgICAncGx1Z2lucy9ucGFwaS5oJywKICAgICAgICAgICAgICdwbHVn
aW5zL25wZnVuY3Rpb25zLmgnLAorICAgICAgICAgICAgJ3BsdWdpbnMvbnBydW50aW1lLmgnLAor
ICAgICAgICAgICAgJ3BsdWdpbnMvbnB0eXBlcy5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcv
Q29sdW1uSW5mby5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvR2FwUmVjdHMuaCcsCiAgICAg
ICAgICAgICAncmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgnLApJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8J
KHJldmlzaW9uIDk0NTgzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcg
Y29weSkKQEAgLTEzODEsNyArMTM4MSw2IEBAIHY4IHsKICAgICAgICAgYnJpZGdlL2pzYy9Ccmlk
Z2VKU0MuaCBcCiAgICAgICAgIGJyaWRnZS9JZGVudGlmaWVyUmVwLmggXAogICAgICAgICBicmlk
Z2UvTlBfanNvYmplY3QuaCBcCi0gICAgICAgIGJyaWRnZS9ucHJ1bnRpbWUuaCBcCiAgICAgICAg
IGJyaWRnZS9xdC9xdF9jbGFzcy5oIFwKICAgICAgICAgYnJpZGdlL3F0L3F0X2luc3RhbmNlLmgg
XAogICAgICAgICBicmlkZ2UvcXQvcXRfcnVudGltZS5oIFwKQEAgLTEzODksNyArMTM4OCw4IEBA
IHY4IHsKICAgICAgICAgYnJpZGdlL3J1bnRpbWVfYXJyYXkuaCBcCiAgICAgICAgIGJyaWRnZS9y
dW50aW1lX21ldGhvZC5oIFwKICAgICAgICAgYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmggXAotICAg
ICAgICBicmlkZ2UvcnVudGltZV9yb290LmgKKyAgICAgICAgYnJpZGdlL3J1bnRpbWVfcm9vdC5o
IFwKKyAgICAgICAgcGx1Z2lucy9ucHJ1bnRpbWUuaAogfQogCiBIRUFERVJTICs9IFwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lv
biA5NDU4MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC02NjEzNCwxMCArNjYxMzQsMTggQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGx1Z2luc1xucGFwaS5oIgorCQkJ
CT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbHVnaW5zXG5w
ZnVuY3Rpb25zLmgiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsdWdpbnNcbnBydW50aW1lLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsdWdpbnNcUGx1Z2luRGF0YS5jcHAiCiAJCQkJPgogCQkJ
PC9GaWxlPgpAQCAtNjg0MTgsMTggKzY4NDI2LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJ
PEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJyaWRnZVxucGFwaS5oIgotCQkJCT4KLQkJCTwv
RmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxicmlkZ2VcbnBydW50aW1lLmNw
cCIKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cYnJp
ZGdlXG5wcnVudGltZS5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRp
dmVQYXRoPSIuLlxicmlkZ2VcbnBydW50aW1lX2ltcGwuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiA5NDU4MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI5LDcgKzMyOSw2IEBACiAJCTFB
MjI0NjRDMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVTdGF0ZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjI0NjQ2MENDOThEREIwMEMwNTI0
MCAvKiBTUUxpdGVTdGF0ZW1lbnQuaCAqLzsgfTsKIAkJMUEyMjQ2NEQwQ0M5OEREQjAwQzA1MjQw
IC8qIFNRTGl0ZVRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBMjI0NjQ3MENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVUcmFuc2Fj
dGlvbi5jcHAgKi87IH07CiAJCTFBMjI0NjRFMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVUcmFu
c2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUEyMjQ2NDgwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVRyYW5zYWN0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMUEyN0NGOTcxMThBMzU0
QzAwNDFENjMyIC8qIG5wdHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBMjdDRjk2MTE4QTM1NEMwMDQxRDYzMiAvKiBucHR5cGVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUEyQTY4MjMwQjVC
RURFNzAwMDJBNDgwIC8qIFByb2dyZXNzVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTJBNjgyMTBCNUJFREU3MDAwMkE0ODAgLyogUHJv
Z3Jlc3NUcmFja2VyLmNwcCAqLzsgfTsKIAkJMUEyQTY4MjQwQjVCRURFNzAwMDJBNDgwIC8qIFBy
b2dyZXNzVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUEyQTY4MjIwQjVCRURFNzAwMDJBNDgwIC8qIFByb2dyZXNzVHJhY2tlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBMkFBQzU4MERD
MkEzQjEwMEEyMEQ5QSAvKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTJBQUM1NjBEQzJBM0IxMDBBMjBE
OUEgLyogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwICovOyB9OwpAQCAtMzY3LDkgKzM2Niw3
IEBACiAJCTFBNTY5RDA1MEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfb2JqYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNTY5Q0Q1MEQ3RTJCODIwMDdD
Mzk4MyAvKiBqbmlfb2JqYy5tbSAqLzsgfTsKIAkJMUE1NjlEMEEwRDdFMkI4MjAwN0MzOTgzIC8q
IE5QX2pzb2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBNTY5Q0RBMEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29iamVjdC5jcHAgKi87IH07
CiAJCTFBNTY5RDBCMEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29iamVjdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1NjlDREIwRDdFMkI4MjAwN0Mz
OTgzIC8qIE5QX2pzb2JqZWN0LmggKi87IH07Ci0JCTFBNTY5RDBDMEQ3RTJCODIwMDdDMzk4MyAv
KiBucGFwaS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUE1NjlDREMwRDdFMkI4MjAwN0MzOTgzIC8qIG5wYXBpLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE1NjlEMEQwRDdFMkI4MjAwN0MzOTgzIC8q
IG5wcnVudGltZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTU2OUNERDBEN0UyQjgyMDA3QzM5ODMgLyogbnBydW50aW1lLmNwcCAqLzsgfTsKLQkJ
MUE1NjlEMEUwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVudGltZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1NjlDREUwRDdFMkI4MjAwN0MzOTgzIC8q
IG5wcnVudGltZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTFBNTY5RDBGMEQ3RTJCODIwMDdDMzk4MyAvKiBucHJ1bnRpbWVfaW1wbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1NjlDREYwRDdFMkI4
MjAwN0MzOTgzIC8qIG5wcnVudGltZV9pbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE1NjlEMTAwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVu
dGltZV9pbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUE1NjlDRTAwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVudGltZV9pbnRlcm5hbC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBNTY5RDEx
MEQ3RTJCODIwMDdDMzk4MyAvKiBucHJ1bnRpbWVfcHJpdi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1NjlDRTEwRDdFMkI4MjAwN0MzOTgzIC8qIG5w
cnVudGltZV9wcml2LmggKi87IH07CkBAIC00NDAsNiArNDM3LDkgQEAKIAkJMUE4RjZCQzMwREI1
NUNEQzAwMURCNzk0IC8qIERPTUFwcGxpY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkI4MERCNTVDREMwMDFEQjc5NCAvKiBE
T01BcHBsaWNhdGlvbkNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsg
fTsKIAkJMUE4RjZCQzUwREI1NUNEQzAwMURCNzk0IC8qIE1hbmlmZXN0UGFyc2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkJBMERCNTVD
REMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5jcHAgKi87IH07CiAJCTFBOEY2QkM2MERCNTVD
REMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQkIwREI1NUNEQzAwMURCNzk0IC8qIE1hbmlmZXN0
UGFyc2VyLmggKi87IH07CisJCTFBOTI3RkQyMTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5MjdGQ0YxNDE2
QTE1QjAwM0E4M0M4IC8qIG5wYXBpLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMUE5MjdGRDMxNDE2QTE1QjAwM0E4M0M4IC8qIG5wcnVudGltZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5MjdGRDAx
NDE2QTE1QjAwM0E4M0M4IC8qIG5wcnVudGltZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTFBOTI3RkQ0MTQxNkExNUIwMDNBODNDOCAvKiBucHR5
cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTky
N0ZEMTE0MTZBMTVCMDAzQTgzQzggLyogbnB0eXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBOTg5NTZCMEFBNzhGODAwMDVFRjVFRiAvKiBL
VVJMQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUE5ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIEtVUkxDRk5ldC5jcHAgKi87IH07CiAJCTFB
QTg3OTkwMTFDQkU4NDYwMDNDNjY0RiAvKiBQbHVnaW5TdHJhdGVneS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBODc5OEYxMUNCRTg0NjAwM0M2NjRG
IC8qIFBsdWdpblN0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5w
bmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFB
RTc4MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nICovOyB9OwpAQCAtNjgzOCw3
ICs2ODM4LDYgQEAKIAkJMUEyMjQ2NDYwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVN0YXRlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTUUxpdGVTdGF0ZW1lbnQuaDsg
cGF0aCA9IHNxbC9TUUxpdGVTdGF0ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUEyMjQ2NDcwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVRyYW5zYWN0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNRTGl0ZVRyYW5zYWN0aW9uLmNwcDsg
cGF0aCA9IHNxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBMjI0NjQ4MENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVUcmFuc2FjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTUUxpdGVUcmFuc2FjdGlvbi5oOyBwYXRo
ID0gc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFBMjdDRjk2MTE4QTM1NEMwMDQxRDYzMiAvKiBucHR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IG5wdHlwZXMuaDsgcGF0aCA9IGJyaWRnZS9ucHR5cGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkE2ODIxMEI1QkVERTcwMDAyQTQ4MCAvKiBQcm9n
cmVzc1RyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBy
b2dyZXNzVHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkE2ODIy
MEI1QkVERTcwMDAyQTQ4MCAvKiBQcm9ncmVzc1RyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFByb2dyZXNzVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQTJBQUM1NjBEQzJBM0IxMDBBMjBEOUEgLyogQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjg4MSw5ICs2
ODgwLDcgQEAKIAkJMUE1NjlDRDUwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9vYmpjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gam5pX29iamMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNTY5Q0RBMEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29i
amVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOUF9qc29iamVj
dC5jcHA7IHBhdGggPSBicmlkZ2UvTlBfanNvYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTU2OUNEQjBEN0UyQjgyMDA3QzM5ODMgLyogTlBfanNvYmplY3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTlBfanNvYmplY3QuaDsgcGF0aCA9IGJyaWRn
ZS9OUF9qc29iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTU2OUNEQzBE
N0UyQjgyMDA3QzM5ODMgLyogbnBhcGkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gbnBhcGkuaDsgcGF0aCA9IGJyaWRnZS9ucGFwaS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQTU2OUNERDBEN0UyQjgyMDA3QzM5ODMgLyogbnBydW50aW1lLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IG5wcnVudGltZS5jcHA7IHBhdGggPSBicmlk
Z2UvbnBydW50aW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE1NjlDREUw
RDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVudGltZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBucHJ1bnRpbWUuaDsgcGF0aCA9IGJyaWRnZS9ucHJ1bnRpbWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE1NjlDREYwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVudGlt
ZV9pbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IG5wcnVudGltZV9pbXBs
Lmg7IHBhdGggPSBicmlkZ2UvbnBydW50aW1lX2ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUE1NjlDRTAwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVudGltZV9pbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBucHJ1bnRpbWVfaW50ZXJuYWwuaDsg
cGF0aCA9IGJyaWRnZS9ucHJ1bnRpbWVfaW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUE1NjlDRTEwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVudGltZV9wcml2LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IG5wcnVudGltZV9wcml2Lmg7IHBhdGggPSBi
cmlkZ2UvbnBydW50aW1lX3ByaXYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5
NjQsNiArNjk2MSw5IEBACiAJCTFBOEY2QkI5MERCNTVDREMwMDFEQjc5NCAvKiBET01BcHBsaWNh
dGlvbkNhY2hlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01BcHBsaWNhdGlvbkNhY2hl
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE4RjZCQkEwREI1NUNEQzAwMURC
Nzk0IC8qIE1hbmlmZXN0UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1hbmlmZXN0UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUE4RjZCQkIwREI1NUNEQzAwMURCNzk0IC8qIE1hbmlmZXN0UGFyc2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hbmlmZXN0UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFBOTI3RkNGMTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBucGFwaS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQTkyN0ZEMDE0MTZBMTVCMDAzQTgzQzggLyogbnBydW50aW1lLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG5wcnVudGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQTkyN0ZEMTE0MTZBMTVCMDAzQTgzQzggLyogbnB0eXBlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBucHR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBLVVJMQ0ZOZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtVUkxDRk5ldC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQTg3OThGMTFDQkU4NDYwMDNDNjY0RiAvKiBQbHVnaW5T
dHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5TdHJhdGVn
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUIxQUU3ODBDMDUxRkRFMDAxMzlG
NEYgLyogem9vbUluQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IHpvb21JbkN1cnNvci5wbmc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzI4NiwxMyArMTMyODYsMTAgQEAKIAkJCQkxQTcx
RDU3QTBGMzM4MTkwMDBGOUNFNEUgLyogSWRlbnRpZmllclJlcC5oICovLAogCQkJCTFBNTY5Q0RB
MEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29iamVjdC5jcHAgKi8sCiAJCQkJMUE1NjlDREIwRDdF
MkI4MjAwN0MzOTgzIC8qIE5QX2pzb2JqZWN0LmggKi8sCi0JCQkJMUE1NjlDREMwRDdFMkI4MjAw
N0MzOTgzIC8qIG5wYXBpLmggKi8sCiAJCQkJMUE1NjlDREQwRDdFMkI4MjAwN0MzOTgzIC8qIG5w
cnVudGltZS5jcHAgKi8sCi0JCQkJMUE1NjlDREUwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVudGlt
ZS5oICovLAogCQkJCTFBNTY5Q0RGMEQ3RTJCODIwMDdDMzk4MyAvKiBucHJ1bnRpbWVfaW1wbC5o
ICovLAogCQkJCTFBNTY5Q0UwMEQ3RTJCODIwMDdDMzk4MyAvKiBucHJ1bnRpbWVfaW50ZXJuYWwu
aCAqLywKIAkJCQkxQTU2OUNFMTBEN0UyQjgyMDA3QzM5ODMgLyogbnBydW50aW1lX3ByaXYuaCAq
LywKLQkJCQkxQTI3Q0Y5NjExOEEzNTRDMDA0MUQ2MzIgLyogbnB0eXBlcy5oICovLAogCQkJCTFB
NTY5Q0VGMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmNwcCAqLywKIAkJCQkxQTU2
OUNGMDBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9hcnJheS5oICovLAogCQkJCTFBNTY5Q0Yx
MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX21ldGhvZC5jcHAgKi8sCkBAIC0xNDM2OSw3ICsx
NDM2NiwxMCBAQAogCQkJCUE5QzZFNEVEMEQ3NDVFMzgwMDY0NDJFOSAvKiBET01QbHVnaW5BcnJh
eS5jcHAgKi8sCiAJCQkJQTlDNkU0RUUwRDc0NUUzODAwNjQ0MkU5IC8qIERPTVBsdWdpbkFycmF5
LmggKi8sCiAJCQkJQTlDNkU2NjEwRDc0NjcxRTAwNjQ0MkU5IC8qIERPTVBsdWdpbkFycmF5Lmlk
bCAqLywKKwkJCQkxQTkyN0ZDRjE0MTZBMTVCMDAzQTgzQzggLyogbnBhcGkuaCAqLywKIAkJCQkx
QTIxOUIzQTBEQ0E4N0FCMDA0MEUzQTAgLyogbnBmdW5jdGlvbnMuaCAqLywKKwkJCQkxQTkyN0ZE
MDE0MTZBMTVCMDAzQTgzQzggLyogbnBydW50aW1lLmggKi8sCisJCQkJMUE5MjdGRDExNDE2QTE1
QjAwM0E4M0M4IC8qIG5wdHlwZXMuaCAqLywKIAkJCQlBOUM2RTRGMTBENzQ1RTQ4MDA2NDQyRTkg
LyogUGx1Z2luRGF0YS5jcHAgKi8sCiAJCQkJQTlDNkU0RjIwRDc0NUU0ODAwNjQ0MkU5IC8qIFBs
dWdpbkRhdGEuaCAqLywKIAkJCQkxQURBMTQwRTBFMUFFNUQ5MDAwMjNFRTUgLyogUGx1Z2luTWFp
blRocmVhZFNjaGVkdWxlci5jcHAgKi8sCkBAIC0yMjUzNiwxMyArMjI1MzYsMTAgQEAKIAkJCQkz
MzUwM0M5QTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uUHJlc2VudGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5OEVCMUY5NTEzMTNGRTA1MDBEMEUxRUEgLyogTm90SW1wbGVtZW50ZWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDBCMEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29i
amVjdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUE1NjlEMEMwRDdFMkI4MjAwN0MzOTgzIC8qIG5w
YXBpLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTIxOUIzQjBEQ0E4N0FCMDA0MEUzQTAgLyogbnBm
dW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBNTY5RDBFMEQ3RTJCODIwMDdDMzk4MyAv
KiBucHJ1bnRpbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDBGMEQ3RTJCODIwMDdDMzk4
MyAvKiBucHJ1bnRpbWVfaW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMTAwRDdFMkI4
MjAwN0MzOTgzIC8qIG5wcnVudGltZV9pbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1
NjlEMTEwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVudGltZV9wcml2LmggaW4gSGVhZGVycyAqLywK
LQkJCQkxQTI3Q0Y5NzExOEEzNTRDMDA0MUQ2MzIgLyogbnB0eXBlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRjU1QjNEQzgxMjUxRjEyRDAwM0VGMjY5IC8qIE51bWJlcklucHV0VHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUE1NjlEMTIwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamNfY2xhc3MuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBNTY5RDE0MEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjX2hlYWRl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzQ4NSw2ICsyMzQ4Miw5IEBACiAJCQkJQkMyNzRCMkYx
NDBFQkVCMjAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTc4QUQ2NzUxNDEzMEE4RDAwQzdDQUUzIC8qIEhUTUxTcGFuRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTc1MkQzOEUxNDEzMTA0QjAwMzMwNUJEIC8qIEpTSFRNTFNwYW5F
bGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQTkyN0ZEMjE0MTZBMTVCMDAzQTgzQzggLyog
bnBhcGkuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBOTI3RkQzMTQxNkExNUIwMDNBODNDOCAvKiBu
cHJ1bnRpbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBOTI3RkQ0MTQxNkExNUIwMDNBODNDOCAv
KiBucHR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9u
cGFwaS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ucGFwaS5oCShyZXZp
c2lvbiA5NDU4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ucGFwaS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDkwNSArMCwwIEBACi0vKiAtKi0gTW9kZTogQzsgdGFiLXdpZHRoOiA0OyBpbmRl
bnQtdGFicy1tb2RlOiBuaWw7IGMtYmFzaWMtb2Zmc2V0OiAyIC0qLSAqLwotLyogKioqKiogQkVH
SU4gTElDRU5TRSBCTE9DSyAqKioqKgotICogVmVyc2lvbjogTVBMIDEuMS9HUEwgMi4wL0xHUEwg
Mi4xCi0gKgotICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUg
TW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uCi0gKiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgKLSAqIHRo
ZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqIGh0
dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLwotICoKLSAqIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsCi0gKiBX
SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBT
ZWUgdGhlIExpY2Vuc2UKLSAqIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHJp
Z2h0cyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlCi0gKiBMaWNlbnNlLgotICoKLSAqIFRoZSBP
cmlnaW5hbCBDb2RlIGlzIG1vemlsbGEub3JnIGNvZGUuCi0gKgotICogVGhlIEluaXRpYWwgRGV2
ZWxvcGVyIG9mIHRoZSBPcmlnaW5hbCBDb2RlIGlzCi0gKiBOZXRzY2FwZSBDb21tdW5pY2F0aW9u
cyBDb3Jwb3JhdGlvbi4KLSAqIFBvcnRpb25zIGNyZWF0ZWQgYnkgdGhlIEluaXRpYWwgRGV2ZWxv
cGVyIGFyZSBDb3B5cmlnaHQgKEMpIDE5OTgKLSAqIHRoZSBJbml0aWFsIERldmVsb3Blci4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBDb250cmlidXRvcihzKToKLSAqCi0gKiBBbHRlcm5h
dGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0
ZXJtcyBvZgotICogZWl0aGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9u
IDIgb3IgbGF0ZXIgKHRoZSAiR1BMIiksIG9yCi0gKiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4xIG9yIGxhdGVyICh0aGUgIkxHUEwiKSwKLSAqIGluIHdo
aWNoIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIEdQTCBvciB0aGUgTEdQTCBhcmUgYXBwbGlj
YWJsZSBpbnN0ZWFkCi0gKiBvZiB0aG9zZSBhYm92ZS4gSWYgeW91IHdpc2ggdG8gYWxsb3cgdXNl
IG9mIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgb25seQotICogdW5kZXIgdGhlIHRlcm1zIG9m
IGVpdGhlciB0aGUgR1BMIG9yIHRoZSBMR1BMLCBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0bwot
ICogdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBN
UEwsIGluZGljYXRlIHlvdXIKLSAqIGRlY2lzaW9uIGJ5IGRlbGV0aW5nIHRoZSBwcm92aXNpb25z
IGFib3ZlIGFuZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgbm90aWNlCi0gKiBhbmQgb3RoZXIgcHJv
dmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BMIG9yIHRoZSBMR1BMLiBJZiB5b3UgZG8gbm90IGRl
bGV0ZQotICogdGhlIHByb3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91ciB2
ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlcgotICogdGhlIHRlcm1zIG9mIGFueSBvbmUgb2YgdGhl
IE1QTCwgdGhlIEdQTCBvciB0aGUgTEdQTC4KLSAqCi0gKiAqKioqKiBFTkQgTElDRU5TRSBCTE9D
SyAqKioqKiAqLwotCi0jaWZuZGVmIG5wYXBpX2hfCi0jZGVmaW5lIG5wYXBpX2hfCi0KLSNpZiBk
ZWZpbmVkKF9fT1MyX18pCi0jcHJhZ21hIHBhY2soMSkKLSNlbmRpZgotCi0jaW5jbHVkZSAibnB0
eXBlcy5oIgotCi0jaWYgZGVmaW5lZChfX09TMl9fKSB8fCBkZWZpbmVkKE9TMikKLSNpZm5kZWYg
WFBfT1MyCi0jZGVmaW5lIFhQX09TMiAxCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZkZWYgSU5DTFVE
RV9KQVZBCi0jaW5jbHVkZSAianJpLmgiICAgICAgICAgICAgICAgIC8qIEphdmEgUnVudGltZSBJ
bnRlcmZhY2UgKi8KLSNlbHNlCi0jZGVmaW5lIGpyZWYgICAgdm9pZCAqCi0jZGVmaW5lIEpSSUVu
diAgdm9pZAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19TWU1C
SUFOMzJfXykKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaWZuZGVmIFhQX1dJTgotI2RlZmluZSBY
UF9XSU4gMQotI2VuZGlmCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykKLSNp
Zm5kZWYgWFBfU1lNQklBTgotI2RlZmluZSBYUF9TWU1CSUFOIDEKLSNlbmRpZgotI2VuZGlmCi0K
LSNpZiBkZWZpbmVkKF9fQVBQTEVfQ0NfXykgJiYgIWRlZmluZWQoWFBfVU5JWCkKLSNpZm5kZWYg
WFBfTUFDT1NYCi0jZGVmaW5lIFhQX01BQ09TWCAxCi0jZW5kaWYKLSNlbmRpZgotCi0jaWYgZGVm
aW5lZChYUF9NQUNPU1gpICYmIGRlZmluZWQoX19MUDY0X18pCi0jZGVmaW5lIE5QX05PX1FVSUNL
RFJBVwotI2RlZmluZSBOUF9OT19DQVJCT04KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChYUF9NQUNP
U1gpCi0jaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+
Ci0jaW5jbHVkZSA8T3BlbkdML09wZW5HTC5oPgotI2lmbmRlZiBOUF9OT19DQVJCT04KLSNpbmNs
dWRlIDxDYXJib24vQ2FyYm9uLmg+Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChYUF9V
TklYKQotI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0jaW5jbHVkZSA8WDExL1h1dGlsLmg+Ci0jaW5j
bHVkZSA8c3RkaW8uaD4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChYUF9TWU1CSUFOKQotI2luY2x1
ZGUgPFFFdmVudD4KLSNpbmNsdWRlIDxRUmVnaW9uPgotI2VuZGlmCi0KLS8qLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgIFBsdWdpbiBWZXJzaW9uIENvbnN0YW50cyAg
ICAgICAgICAgICAgICAgICAgICAqLwotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLQotI2RlZmluZSBOUF9W
RVJTSU9OX01BSk9SIDAKLSNkZWZpbmUgTlBfVkVSU0lPTl9NSU5PUiAyNAotCi0KLS8qIFRoZSBP
Uy8yIHZlcnNpb24gb2YgTmV0c2NhcGUgdXNlcyBSQ19EQVRBIHRvIGRlZmluZSB0aGUKLSAgIG1p
bWUgdHlwZXMsIGZpbGUgZXh0ZW5zaW9ucywgZXRjIHRoYXQgYXJlIHJlcXVpcmVkLgotICAgVXNl
IGEgdmVydGljYWwgYmFyIHRvIHNlcGFyYXRlIHR5cGVzLCBlbmQgdHlwZXMgd2l0aCBcMC4KLSAg
IEZpbGVWZXJzaW9uIGFuZCBQcm9kdWN0VmVyc2lvbiBhcmUgMzJiaXQgaW50cywgYWxsIG90aGVy
Ci0gICBlbnRyaWVzIGFyZSBzdHJpbmdzIHRoYXQgTVVTVCBiZSB0ZXJtaW5hdGVkIHdpdGggYSBc
MC4KLQotQU4gRVhBTVBMRToKLQotUkNEQVRBIE5QX0lORk9fUHJvZHVjdFZlcnNpb24geyAxLDAs
MCwxLH0KLQotUkNEQVRBIE5QX0lORk9fTUlNRVR5cGUgICAgeyAidmlkZW8veC12aWRlb3wiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmlkZW8veC1mbGlja1wwIiB9Ci1SQ0RBVEEg
TlBfSU5GT19GaWxlRXh0ZW50cyB7ICJhdml8IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImZsY1wwIiB9Ci1SQ0RBVEEgTlBfSU5GT19GaWxlT3Blbk5hbWV7ICJNTU9TMiB2aWRlbyBw
bGF5ZXIoKi5hdmkpfCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNTU9TMiBGbGMv
RmxpIHBsYXllcigqLmZsYylcMCIgfQotCi1SQ0RBVEEgTlBfSU5GT19GaWxlVmVyc2lvbiAgICAg
ICB7IDEsMCwwLDEgfQotUkNEQVRBIE5QX0lORk9fQ29tcGFueU5hbWUgICAgICAgeyAiTmV0c2Nh
cGUgQ29tbXVuaWNhdGlvbnNcMCIgfQotUkNEQVRBIE5QX0lORk9fRmlsZURlc2NyaXB0aW9uICAg
eyAiTlBBVkkzMiBFeHRlbnNpb24gRExMXDAiCi1SQ0RBVEEgTlBfSU5GT19JbnRlcm5hbE5hbWUg
ICAgICB7ICJOUEFWSTMyXDAiICkKLVJDREFUQSBOUF9JTkZPX0xlZ2FsQ29weXJpZ2h0ICAgIHsg
IkNvcHlyaWdodCBOZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBcMjUxIDE5OTZcMCIKLVJDREFUQSBO
UF9JTkZPX09yaWdpbmFsRmlsZW5hbWUgIHsgIk5WQVBJMzIuRExMIiB9Ci1SQ0RBVEEgTlBfSU5G
T19Qcm9kdWN0TmFtZSAgICAgICB7ICJOUEFWSTMyIER5bmFtaWMgTGluayBMaWJyYXJ5XDAiIH0K
LSovCi0vKiBSQ19EQVRBIHR5cGVzIGZvciB2ZXJzaW9uIGluZm8gLSByZXF1aXJlZCAqLwotI2Rl
ZmluZSBOUF9JTkZPX1Byb2R1Y3RWZXJzaW9uICAgICAgMQotI2RlZmluZSBOUF9JTkZPX01JTUVU
eXBlICAgICAgICAgICAgMgotI2RlZmluZSBOUF9JTkZPX0ZpbGVPcGVuTmFtZSAgICAgICAgMwot
I2RlZmluZSBOUF9JTkZPX0ZpbGVFeHRlbnRzICAgICAgICAgNAotLyogUkNfREFUQSB0eXBlcyBm
b3IgdmVyc2lvbiBpbmZvIC0gdXNlZCBpZiBmb3VuZCAqLwotI2RlZmluZSBOUF9JTkZPX0ZpbGVE
ZXNjcmlwdGlvbiAgICAgNQotI2RlZmluZSBOUF9JTkZPX1Byb2R1Y3ROYW1lICAgICAgICAgNgot
LyogUkNfREFUQSB0eXBlcyBmb3IgdmVyc2lvbiBpbmZvIC0gb3B0aW9uYWwgKi8KLSNkZWZpbmUg
TlBfSU5GT19Db21wYW55TmFtZSAgICAgICAgIDcKLSNkZWZpbmUgTlBfSU5GT19GaWxlVmVyc2lv
biAgICAgICAgIDgKLSNkZWZpbmUgTlBfSU5GT19JbnRlcm5hbE5hbWUgICAgICAgIDkKLSNkZWZp
bmUgTlBfSU5GT19MZWdhbENvcHlyaWdodCAgICAgIDEwCi0jZGVmaW5lIE5QX0lORk9fT3JpZ2lu
YWxGaWxlbmFtZSAgICAxMQotCi0jaWZuZGVmIFJDX0lOVk9LRUQKLQotLyotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ki8KLS8qICAgICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uIG9mIEJhc2ljIFR5cGVzICAg
ICAgICAgICAgICAgICAgICAgICovCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0jaWZuZGVmIEZBTFNF
Ci0jZGVmaW5lIEZBTFNFICgwKQotI2VuZGlmCi0jaWZuZGVmIFRSVUUKLSNkZWZpbmUgVFJVRSAo
MSkKLSNlbmRpZgotI2lmbmRlZiBOVUxMCi0jZGVmaW5lIE5VTEwgKDBMKQotI2VuZGlmCi0KLXR5
cGVkZWYgdW5zaWduZWQgY2hhciBOUEJvb2w7Ci10eXBlZGVmIGludDE2X3QgICAgICAgTlBFcnJv
cjsKLXR5cGVkZWYgaW50MTZfdCAgICAgICBOUFJlYXNvbjsKLXR5cGVkZWYgY2hhciogICAgICAg
ICBOUE1JTUVUeXBlOwotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyogICAgICAgICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZXMgYW5kIGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAgICAgKi8KLS8q
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSovCi0KLSNpZiAhZGVmaW5lZChfX0xQNjRfXykKLSNpZiBkZWZpbmVkKFhQ
X01BQ09TWCkKLSNwcmFnbWEgb3B0aW9ucyBhbGlnbj1tYWM2OGsKLSNlbmRpZgotI2VuZGlmIC8q
IF9fTFA2NF9fICovCi0KLS8qCi0gKiAgTlBQIGlzIGEgcGx1Zy1pbidzIG9wYXF1ZSBpbnN0YW5j
ZSBoYW5kbGUKLSAqLwotdHlwZWRlZiBzdHJ1Y3QgX05QUAotewotICB2b2lkKiBwZGF0YTsgICAg
ICAvKiBwbHVnLWluIHByaXZhdGUgZGF0YSAqLwotICB2b2lkKiBuZGF0YTsgICAgICAvKiBuZXRz
Y2FwZSBwcml2YXRlIGRhdGEgKi8KLX0gTlBQX3Q7Ci0KLXR5cGVkZWYgTlBQX3QqICBOUFA7Ci0K
LXR5cGVkZWYgc3RydWN0IF9OUFN0cmVhbQotewotICB2b2lkKiAgICBwZGF0YTsgLyogcGx1Zy1p
biBwcml2YXRlIGRhdGEgKi8KLSAgdm9pZCogICAgbmRhdGE7IC8qIG5ldHNjYXBlIHByaXZhdGUg
ZGF0YSAqLwotICBjb25zdCAgICBjaGFyKiB1cmw7Ci0gIHVpbnQzMl90IGVuZDsKLSAgdWludDMy
X3QgbGFzdG1vZGlmaWVkOwotICB2b2lkKiAgICBub3RpZnlEYXRhOwotICBjb25zdCAgICBjaGFy
KiBoZWFkZXJzOyAvKiBSZXNwb25zZSBoZWFkZXJzIGZyb20gaG9zdC4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICogRXhpc3RzIG9ubHkgZm9yID49IE5QVkVSU19IQVNfUkVTUE9OU0VfSEVB
REVSUy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICogVXNlZCBmb3IgSFRUUCBvbmx5OyBO
VUxMIGZvciBub24tSFRUUC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICogQXZhaWxhYmxl
IGZyb20gTlBQX05ld1N0cmVhbSBvbndhcmRzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
KiBQbHVnaW4gc2hvdWxkIGNvcHkgdGhpcyBkYXRhIGJlZm9yZSBzdG9yaW5nIGl0LgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKiBJbmNsdWRlcyBIVFRQIHN0YXR1cyBsaW5lIGFuZCBhbGwg
aGVhZGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICogcHJlZmVyYWJseSB2ZXJiYXRp
bSBhcyByZWNlaXZlZCBmcm9tIHNlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICog
aGVhZGVycyBmb3JtYXR0ZWQgYXMgaW4gSFRUUCAoIkhlYWRlcjogVmFsdWUiKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICogYW5kIG5ld2xpbmVzIChcbiwgTk9UIFxyXG4pIHNlcGFyYXRp
bmcgbGluZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAqIFRlcm1pbmF0ZWQgYnkgXG5c
MCAoTk9UIFxuXG5cMCkuICovCi19IE5QU3RyZWFtOwotCi10eXBlZGVmIHN0cnVjdCBfTlBCeXRl
UmFuZ2UKLXsKLSAgaW50MzJfdCAgb2Zmc2V0OyAvKiBuZWdhdGl2ZSBvZmZzZXQgbWVhbnMgZnJv
bSB0aGUgZW5kICovCi0gIHVpbnQzMl90IGxlbmd0aDsKLSAgc3RydWN0IF9OUEJ5dGVSYW5nZSog
bmV4dDsKLX0gTlBCeXRlUmFuZ2U7Ci0KLXR5cGVkZWYgc3RydWN0IF9OUFNhdmVkRGF0YQotewot
ICBpbnQzMl90IGxlbjsKLSAgdm9pZCogICBidWY7Ci19IE5QU2F2ZWREYXRhOwotCi10eXBlZGVm
IHN0cnVjdCBfTlBSZWN0Ci17Ci0gIHVpbnQxNl90IHRvcDsKLSAgdWludDE2X3QgbGVmdDsKLSAg
dWludDE2X3QgYm90dG9tOwotICB1aW50MTZfdCByaWdodDsKLX0gTlBSZWN0OwotCi10eXBlZGVm
IHN0cnVjdCBfTlBTaXplCi17Ci0gIGludDMyX3Qgd2lkdGg7Ci0gIGludDMyX3QgaGVpZ2h0Owot
fSBOUFNpemU7Ci0KLXR5cGVkZWYgZW51bSB7Ci0gIE5QRm9jdXNOZXh0ID0gMCwKLSAgTlBGb2N1
c1ByZXZpb3VzID0gMQotfSBOUEZvY3VzRGlyZWN0aW9uOwotCi0vKiBSZXR1cm4gdmFsdWVzIGZv
ciBOUFBfSGFuZGxlRXZlbnQgKi8KLSNkZWZpbmUga05QRXZlbnROb3RIYW5kbGVkIDAKLSNkZWZp
bmUga05QRXZlbnRIYW5kbGVkIDEKLS8qIEV4YWN0IG1lYW5pbmcgbXVzdCBiZSBzcGVjJ2QgaW4g
ZXZlbnQgbW9kZWwuICovCi0jZGVmaW5lIGtOUEV2ZW50U3RhcnRJTUUgMgotCi0jaWYgZGVmaW5l
ZChYUF9VTklYKQotLyoKLSAqIFVuaXggc3BlY2lmaWMgc3RydWN0dXJlcyBhbmQgZGVmaW5pdGlv
bnMKLSAqLwotCi0vKgotICogQ2FsbGJhY2sgU3RydWN0dXJlcy4KLSAqCi0gKiBUaGVzZSBhcmUg
dXNlZCB0byBwYXNzIGFkZGl0aW9uYWwgcGxhdGZvcm0gc3BlY2lmaWMgaW5mb3JtYXRpb24uCi0g
Ki8KLWVudW0gewotICBOUF9TRVRXSU5ET1cgPSAxLAotICBOUF9QUklOVAotfTsKLQotdHlwZWRl
ZiBzdHJ1Y3QKLXsKLSAgaW50MzJfdCB0eXBlOwotfSBOUEFueUNhbGxiYWNrU3RydWN0OwotCi10
eXBlZGVmIHN0cnVjdAotewotICBpbnQzMl90ICAgICAgdHlwZTsKLSAgRGlzcGxheSogICAgIGRp
c3BsYXk7Ci0gIFZpc3VhbCogICAgICB2aXN1YWw7Ci0gIENvbG9ybWFwICAgICBjb2xvcm1hcDsK
LSAgdW5zaWduZWQgaW50IGRlcHRoOwotfSBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0OwotCi10
eXBlZGVmIHN0cnVjdAotewotICBpbnQzMl90IHR5cGU7Ci0gIEZJTEUqIGZwOwotfSBOUFByaW50
Q2FsbGJhY2tTdHJ1Y3Q7Ci0KLSNlbmRpZiAvKiBYUF9VTklYICovCi0KLSNpZiBkZWZpbmVkKFhQ
X01BQ09TWCkKLXR5cGVkZWYgZW51bSB7Ci0jaWZuZGVmIE5QX05PX1FVSUNLRFJBVwotICBOUERy
YXdpbmdNb2RlbFF1aWNrRHJhdyA9IDAsCi0jZW5kaWYKLSAgTlBEcmF3aW5nTW9kZWxDb3JlR3Jh
cGhpY3MgPSAxLAotICBOUERyYXdpbmdNb2RlbE9wZW5HTCA9IDIsCi0gIE5QRHJhd2luZ01vZGVs
Q29yZUFuaW1hdGlvbiA9IDMKLX0gTlBEcmF3aW5nTW9kZWw7Ci0KLXR5cGVkZWYgZW51bSB7Ci0j
aWZuZGVmIE5QX05PX0NBUkJPTgotICBOUEV2ZW50TW9kZWxDYXJib24gPSAwLAotI2VuZGlmCi0g
IE5QRXZlbnRNb2RlbENvY29hID0gMQotfSBOUEV2ZW50TW9kZWw7Ci0jZW5kaWYKLQotLyoKLSAq
ICAgVGhlIGZvbGxvd2luZyBtYXNrcyBhcmUgYXBwbGllZCBvbiBjZXJ0YWluIHBsYXRmb3JtcyB0
byBOUE5WIGFuZAotICogICBOUFBWIHNlbGVjdG9ycyB0aGF0IHBhc3MgYXJvdW5kIHBvaW50ZXJz
IHRvIENPTSBpbnRlcmZhY2VzLiBOZXdlcgotICogICBjb21waWxlcnMgb24gc29tZSBwbGF0Zm9y
bXMgbWF5IGdlbmVyYXRlIHZ0YWJsZXMgdGhhdCBhcmUgbm90Ci0gKiAgIGNvbXBhdGlibGUgd2l0
aCBvbGRlciBjb21waWxlcnMuIFRvIHByZXZlbnQgb2xkZXIgcGx1Z2lucyBmcm9tCi0gKiAgIG5v
dCB1bmRlcnN0YW5kaW5nIGEgbmV3IGJyb3dzZXIncyBBQkksIHRoZXNlIG1hc2tzIGNoYW5nZSB0
aGUKLSAqICAgdmFsdWVzIG9mIHRob3NlIHNlbGVjdG9ycyBvbiB0aG9zZSBwbGF0Zm9ybXMuIFRv
IHJlbWFpbiBiYWNrd2FyZHMKLSAqICAgY29tcGF0aWJsZSB3aXRoIGRpZmZlcmVudCB2ZXJzaW9u
cyBvZiB0aGUgYnJvd3NlciwgcGx1Z2lucyBjYW4KLSAqICAgdXNlIHRoZXNlIG1hc2tzIHRvIGR5
bmFtaWNhbGx5IGRldGVybWluZSBhbmQgdXNlIHRoZSBjb3JyZWN0IEMrKwotICogICBBQkkgdGhh
dCB0aGUgYnJvd3NlciBpcyBleHBlY3RpbmcuIFRoaXMgZG9lcyBub3QgYXBwbHkgdG8gV2luZG93
cwotICogICBhcyBNaWNyb3NvZnQncyBDT00gQUJJIHdpbGwgbGlrZWx5IG5vdCBjaGFuZ2UuCi0g
Ki8KLQotI2RlZmluZSBOUF9BQklfR0NDM19NQVNLICAweDEwMDAwMDAwCi0vKgotICogICBnY2Mg
My54IGdlbmVyYXRlZCB2dGFibGVzIG9uIFVOSVggYW5kIE9TWCBhcmUgaW5jb21wYXRpYmxlIHdp
dGgKLSAqICAgcHJldmlvdXMgY29tcGlsZXJzLgotICovCi0jaWYgKGRlZmluZWQoWFBfVU5JWCkg
JiYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDMpKQotI2RlZmluZSBfTlBfQUJJ
X01JWElOX0ZPUl9HQ0MzIE5QX0FCSV9HQ0MzX01BU0sKLSNlbHNlCi0jZGVmaW5lIF9OUF9BQklf
TUlYSU5fRk9SX0dDQzMgMAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKFhQX01BQ09TWCkKLSNkZWZp
bmUgTlBfQUJJX01BQ0hPX01BU0sgMHgwMTAwMDAwMAotI2RlZmluZSBfTlBfQUJJX01JWElOX0ZP
Ul9NQUNITyBOUF9BQklfTUFDSE9fTUFTSwotI2Vsc2UKLSNkZWZpbmUgX05QX0FCSV9NSVhJTl9G
T1JfTUFDSE8gMAotI2VuZGlmCi0KLSNkZWZpbmUgTlBfQUJJX01BU0sgKF9OUF9BQklfTUlYSU5f
Rk9SX0dDQzMgfCBfTlBfQUJJX01JWElOX0ZPUl9NQUNITykKLQotLyoKLSAqIExpc3Qgb2YgdmFy
aWFibGUgbmFtZXMgZm9yIHdoaWNoIE5QUF9HZXRWYWx1ZSBzaGFsbCBiZSBpbXBsZW1lbnRlZAot
ICovCi10eXBlZGVmIGVudW0gewotICBOUFBWcGx1Z2luTmFtZVN0cmluZyA9IDEsCi0gIE5QUFZw
bHVnaW5EZXNjcmlwdGlvblN0cmluZywKLSAgTlBQVnBsdWdpbldpbmRvd0Jvb2wsCi0gIE5QUFZw
bHVnaW5UcmFuc3BhcmVudEJvb2wsCi0gIE5QUFZqYXZhQ2xhc3MsICAgICAgICAgICAgICAgIC8q
IE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KLSAgTlBQVnBsdWdpbldpbmRvd1NpemUsICAg
ICAgICAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotICBOUFBWcGx1Z2luVGltZXJJ
bnRlcnZhbCwgICAgICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCi0gIE5QUFZwbHVn
aW5TY3JpcHRhYmxlSW5zdGFuY2UgPSAoMTAgfCBOUF9BQklfTUFTSyksIC8qIE5vdCBpbXBsZW1l
bnRlZCBpbiBXZWJLaXQgKi8KLSAgTlBQVnBsdWdpblNjcmlwdGFibGVJSUQgPSAxMSwgLyogTm90
IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotICBOUFBWamF2YXNjcmlwdFB1c2hDYWxsZXJCb29s
ID0gMTIsICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCi0gIE5QUFZwbHVnaW5LZWVw
TGlicmFyeUluTWVtb3J5ID0gMTMsIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KLSAg
TlBQVnBsdWdpbk5lZWRzWEVtYmVkICAgICAgICAgPSAxNCwgLyogTm90IGltcGxlbWVudGVkIGlu
IFdlYktpdCAqLwotCi0gIC8qIEdldCB0aGUgTlBPYmplY3QgZm9yIHNjcmlwdGluZyB0aGUgcGx1
Z2luLiBJbnRyb2R1Y2VkIGluIE5QQVBJIG1pbm9yIHZlcnNpb24gMTQuCi0gICAqLwotICBOUFBW
cGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0ICA9IDE1LAotCi0gIC8qIEdldCB0aGUgcGx1Z2luIHZh
bHVlIChhcyBcMC10ZXJtaW5hdGVkIFVURi04IHN0cmluZyBkYXRhKSBmb3IKLSAgICogZm9ybSBz
dWJtaXNzaW9uIGlmIHRoZSBwbHVnaW4gaXMgcGFydCBvZiBhIGZvcm0uIFVzZQotICAgKiBOUE5f
TWVtQWxsb2MoKSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBzdHJpbmcgZGF0YS4gSW50cm9k
dWNlZAotICAgKiBpbiBOUEFQSSBtaW5vciB2ZXJzaW9uIDE1LgotICAgKi8KLSAgTlBQVmZvcm1W
YWx1ZSA9IDE2LCAgICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCi0KLSAgTlBQVnBs
dWdpblVybFJlcXVlc3RzRGlzcGxheWVkQm9vbCA9IDE3LCAvKiBOb3QgaW1wbGVtZW50ZWQgaW4g
V2ViS2l0ICovCi0KLSAgLyogQ2hlY2tzIGlmIHRoZSBwbHVnaW4gaXMgaW50ZXJlc3RlZCBpbiBy
ZWNlaXZpbmcgdGhlIGh0dHAgYm9keSBvZgotICAgKiBhbGwgaHR0cCByZXF1ZXN0cyAoaW5jbHVk
aW5nIGZhaWxlZCBvbmVzLCBodHRwIHN0YXR1cyAhPSAyMDApLgotICAgKi8KLSAgTlBQVnBsdWdp
bldhbnRzQWxsTmV0d29ya1N0cmVhbXMgPSAxOCwKLQotICAvKiBCcm93c2VycyBjYW4gcmV0cmll
dmUgYSBuYXRpdmUgQVRLIGFjY2Vzc2liaWxpdHkgcGx1ZyBJRCB2aWEgdGhpcyB2YXJpYWJsZS4g
Ki8KLSAgTlBQVnBsdWdpbk5hdGl2ZUFjY2Vzc2libGVBdGtQbHVnSWQgPSAxOSwKLQotICAvKiBD
aGVja3MgdG8gc2VlIGlmIHRoZSBwbHVnLWluIHdvdWxkIGxpa2UgdGhlIGJyb3dzZXIgdG8gbG9h
ZCB0aGUgInNyYyIgYXR0cmlidXRlLiAqLwotICBOUFBWcGx1Z2luQ2FuY2VsU3JjU3RyZWFtID0g
MjAKLQotI2lmIGRlZmluZWQoWFBfTUFDT1NYKQotICAvKiBVc2VkIGZvciBuZWdvdGlhdGluZyBk
cmF3aW5nIG1vZGVscyAqLwotICAsIE5QUFZwbHVnaW5EcmF3aW5nTW9kZWwgPSAxMDAwCi0gIC8q
IFVzZWQgZm9yIG5lZ290aWF0aW5nIGV2ZW50IG1vZGVscyAqLwotICAsIE5QUFZwbHVnaW5FdmVu
dE1vZGVsID0gMTAwMQotICAvKiBJbiB0aGUgTlBEcmF3aW5nTW9kZWxDb3JlQW5pbWF0aW9uIGRy
YXdpbmcgbW9kZWwsIHRoZSBicm93c2VyIGFza3MgdGhlIHBsdWctaW4gZm9yIGEgQ29yZSBBbmlt
YXRpb24gbGF5ZXIuICovCi0gICwgTlBQVnBsdWdpbkNvcmVBbmltYXRpb25MYXllciA9IDEwMDMK
LSNlbmRpZgotCi0jaWYgZGVmaW5lZChNT1pfUExBVEZPUk1fTUFFTU8pICYmIChNT1pfUExBVEZP
Uk1fTUFFTU8gPj0gNSkKLSAgLCBOUFBWcGx1Z2luV2luZG93bGVzc0xvY2FsQm9vbCA9IDIwMDIK
LSNlbmRpZgotfSBOUFBWYXJpYWJsZTsKLQotLyoKLSAqIExpc3Qgb2YgdmFyaWFibGUgbmFtZXMg
Zm9yIHdoaWNoIE5QTl9HZXRWYWx1ZSBzaG91bGQgYmUgaW1wbGVtZW50ZWQuCi0gKi8KLXR5cGVk
ZWYgZW51bSB7Ci0gIE5QTlZ4RGlzcGxheSA9IDEsCi0gIE5QTlZ4dEFwcENvbnRleHQsCi0gIE5Q
TlZuZXRzY2FwZVdpbmRvdywKLSAgTlBOVmphdmFzY3JpcHRFbmFibGVkQm9vbCwKLSAgTlBOVmFz
ZEVuYWJsZWRCb29sLAotICBOUE5WaXNPZmZsaW5lQm9vbCwKLQotICBOUE5Wc2VydmljZU1hbmFn
ZXIgPSAoMTAgfCBOUF9BQklfTUFTSyksICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICov
Ci0gIE5QTlZET01FbGVtZW50ICAgICA9ICgxMSB8IE5QX0FCSV9NQVNLKSwgIC8qIE5vdCBpbXBs
ZW1lbnRlZCBpbiBXZWJLaXQgKi8KLSAgTlBOVkRPTVdpbmRvdyAgICAgID0gKDEyIHwgTlBfQUJJ
X01BU0spLCAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLwotICBOUE5WVG9vbGtpdCAg
ICAgICAgPSAoMTMgfCBOUF9BQklfTUFTSyksICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0
ICovCi0gIE5QTlZTdXBwb3J0c1hFbWJlZEJvb2wgPSAxNCwgICAgICAgICAgICAgIC8qIE5vdCBp
bXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KLQotICAvKiBHZXQgdGhlIE5QT2JqZWN0IHdyYXBwZXIg
Zm9yIHRoZSBicm93c2VyIHdpbmRvdy4gKi8KLSAgTlBOVldpbmRvd05QT2JqZWN0ID0gMTUsCi0K
LSAgLyogR2V0IHRoZSBOUE9iamVjdCB3cmFwcGVyIGZvciB0aGUgcGx1Z2lucyBET00gZWxlbWVu
dC4gKi8KLSAgTlBOVlBsdWdpbkVsZW1lbnROUE9iamVjdCA9IDE2LAotCi0gIE5QTlZTdXBwb3J0
c1dpbmRvd2xlc3MgPSAxNywKLQotICBOUE5WcHJpdmF0ZU1vZGVCb29sID0gMTgKLQotI2lmIGRl
ZmluZWQoWFBfTUFDT1NYKQotICAvKiBVc2VkIGZvciBuZWdvdGlhdGluZyBkcmF3aW5nIG1vZGVs
cyAqLwotICAsIE5QTlZwbHVnaW5EcmF3aW5nTW9kZWwgPSAxMDAwCi0jaWZuZGVmIE5QX05PX1FV
SUNLRFJBVwotICAsIE5QTlZzdXBwb3J0c1F1aWNrRHJhd0Jvb2wgPSAyMDAwCi0jZW5kaWYKLSAg
LCBOUE5Wc3VwcG9ydHNDb3JlR3JhcGhpY3NCb29sID0gMjAwMQotICAsIE5QTlZzdXBwb3J0c09w
ZW5HTEJvb2wgPSAyMDAyCi0gICwgTlBOVnN1cHBvcnRzQ29yZUFuaW1hdGlvbkJvb2wgPSAyMDAz
Ci0jaWZuZGVmIE5QX05PX0NBUkJPTgotICAsIE5QTlZzdXBwb3J0c0NhcmJvbkJvb2wgPSAzMDAw
IC8qIFRSVUUgaWYgdGhlIGJyb3dzZXIgc3VwcG9ydHMgdGhlIENhcmJvbiBldmVudCBtb2RlbCAq
LwotI2VuZGlmCi0gICwgTlBOVnN1cHBvcnRzQ29jb2FCb29sID0gMzAwMSAvKiBUUlVFIGlmIHRo
ZSBicm93c2VyIHN1cHBvcnRzIHRoZSBDb2NvYSBldmVudCBtb2RlbCAqLwotICAsIE5QTlZzdXBw
b3J0c1VwZGF0ZWRDb2NvYVRleHRJbnB1dEJvb2wgPSAzMDAyIC8qIFRSVUUgaWYgdGhlIGJyb3dz
ZXIgc3VwcG9ydHMgdGhlIHVwZGF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb2NvYSB0ZXh0IGlucHV0IHNwZWNpZmljYXRpb24uICovCi0g
ICwgTlBOVnN1cHBvcnRzQ29tcG9zaXRpbmdDb3JlQW5pbWF0aW9uUGx1Z2luc0Jvb2wgPSA3NDY1
NiAvKiBUUlVFIGlmIHRoZSBicm93c2VyIHN1cHBvcnRzCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQSBtb2RlbCBjb21wb3Np
dGluZyAqLwotI2VuZGlmIC8qIFhQX01BQ09TWCAqLwotI2lmIGRlZmluZWQoTU9aX1BMQVRGT1JN
X01BRU1PKSAmJiAoTU9aX1BMQVRGT1JNX01BRU1PID49IDUpCi0gICwgTlBOVlN1cHBvcnRzV2lu
ZG93bGVzc0xvY2FsID0gMjAwMgotI2VuZGlmCi19IE5QTlZhcmlhYmxlOwotCi10eXBlZGVmIGVu
dW0gewotICBOUE5VUkxWQ29va2llID0gNTAxLAotICBOUE5VUkxWUHJveHkKLX0gTlBOVVJMVmFy
aWFibGU7Ci0KLS8qCi0gKiBUaGUgdHlwZSBvZiBUb29sa2l0IHRoZSB3aWRnZXRzIHVzZQotICov
Ci10eXBlZGVmIGVudW0gewotICBOUE5WR3RrMTIgPSAxLAotICBOUE5WR3RrMgotfSBOUE5Ub29s
a2l0VHlwZTsKLQotLyoKLSAqIFRoZSB0eXBlIG9mIGEgTlBXaW5kb3cgLSBpdCBzcGVjaWZpZXMg
dGhlIHR5cGUgb2YgdGhlIGRhdGEgc3RydWN0dXJlCi0gKiByZXR1cm5lZCBpbiB0aGUgd2luZG93
IGZpZWxkLgotICovCi10eXBlZGVmIGVudW0gewotICBOUFdpbmRvd1R5cGVXaW5kb3cgPSAxLAot
ICBOUFdpbmRvd1R5cGVEcmF3YWJsZQotfSBOUFdpbmRvd1R5cGU7Ci0KLXR5cGVkZWYgc3RydWN0
IF9OUFdpbmRvdwotewotICB2b2lkKiB3aW5kb3c7ICAvKiBQbGF0Zm9ybSBzcGVjaWZpYyB3aW5k
b3cgaGFuZGxlICovCi0gICAgICAgICAgICAgICAgIC8qIE9TLzI6IHggLSBQb3NpdGlvbiBvZiBi
b3R0b20gbGVmdCBjb3JuZXIgKi8KLSAgICAgICAgICAgICAgICAgLyogT1MvMjogeSAtIHJlbGF0
aXZlIHRvIHZpc2libGUgbmV0c2NhcGUgd2luZG93ICovCi0gIGludDMyX3QgIHg7ICAgICAgLyog
UG9zaXRpb24gb2YgdG9wIGxlZnQgY29ybmVyIHJlbGF0aXZlICovCi0gIGludDMyX3QgIHk7ICAg
ICAgLyogdG8gYSBuZXRzY2FwZSBwYWdlLiAqLwotICB1aW50MzJfdCB3aWR0aDsgIC8qIE1heGlt
dW0gd2luZG93IHNpemUgKi8KLSAgdWludDMyX3QgaGVpZ2h0OwotICBOUFJlY3QgICBjbGlwUmVj
dDsgLyogQ2xpcHBpbmcgcmVjdGFuZ2xlIGluIHBvcnQgY29vcmRpbmF0ZXMgKi8KLSNpZiBkZWZp
bmVkKFhQX1VOSVgpIHx8IGRlZmluZWQoWFBfU1lNQklBTikKLSAgdm9pZCAqIHdzX2luZm87IC8q
IFBsYXRmb3JtLWRlcGVuZGVudCBhZGRpdG9uYWwgZGF0YSAqLwotI2VuZGlmIC8qIFhQX1VOSVgg
fHwgWFBfU1lNQklBTiAqLwotICBOUFdpbmRvd1R5cGUgdHlwZTsgLyogSXMgdGhpcyBhIHdpbmRv
dyBvciBhIGRyYXdhYmxlPyAqLwotfSBOUFdpbmRvdzsKLQotdHlwZWRlZiBzdHJ1Y3QgX05QSW1h
Z2VFeHBvc2UKLXsKLSAgY2hhciogICAgZGF0YTsgICAgICAgLyogaW1hZ2UgcG9pbnRlciAqLwot
ICBpbnQzMl90ICBzdHJpZGU7ICAgICAvKiBTdHJpZGUgb2YgZGF0YSBpbWFnZSBwb2ludGVyICov
Ci0gIGludDMyX3QgIGRlcHRoOyAgICAgIC8qIERlcHRoIG9mIGltYWdlIHBvaW50ZXIgKi8KLSAg
aW50MzJfdCAgeDsgICAgICAgICAgLyogRXhwb3NlIHggKi8KLSAgaW50MzJfdCAgeTsgICAgICAg
ICAgLyogRXhwb3NlIHkgKi8KLSAgdWludDMyX3Qgd2lkdGg7ICAgICAgLyogRXhwb3NlIHdpZHRo
ICovCi0gIHVpbnQzMl90IGhlaWdodDsgICAgIC8qIEV4cG9zZSBoZWlnaHQgKi8KLSAgTlBTaXpl
ICAgZGF0YVNpemU7ICAgLyogRGF0YSBidWZmZXIgc2l6ZSAqLwotICBmbG9hdCAgICB0cmFuc2xh
dGVYOyAvKiB0cmFuc2xhdGUgWCBtYXRyaXggdmFsdWUgKi8KLSAgZmxvYXQgICAgdHJhbnNsYXRl
WTsgLyogdHJhbnNsYXRlIFkgbWF0cml4IHZhbHVlICovCi0gIGZsb2F0ICAgIHNjYWxlWDsgICAg
IC8qIHNjYWxlIFggbWF0cml4IHZhbHVlICovCi0gIGZsb2F0ICAgIHNjYWxlWTsgICAgIC8qIHNj
YWxlIFkgbWF0cml4IHZhbHVlICovCi19IE5QSW1hZ2VFeHBvc2U7Ci0KLXR5cGVkZWYgc3RydWN0
IF9OUEZ1bGxQcmludAotewotICBOUEJvb2wgcGx1Z2luUHJpbnRlZDsvKiBTZXQgVFJVRSBpZiBw
bHVnaW4gaGFuZGxlZCBmdWxsc2NyZWVuIHByaW50aW5nICovCi0gIE5QQm9vbCBwcmludE9uZTsg
ICAgIC8qIFRSVUUgaWYgcGx1Z2luIHNob3VsZCBwcmludCBvbmUgY29weSB0byBkZWZhdWx0Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZXIgKi8KLSAgdm9pZCogcGxhdGZvcm1Qcmlu
dDsgLyogUGxhdGZvcm0tc3BlY2lmaWMgcHJpbnRpbmcgaW5mbyAqLwotfSBOUEZ1bGxQcmludDsK
LQotdHlwZWRlZiBzdHJ1Y3QgX05QRW1iZWRQcmludAotewotICBOUFdpbmRvdyB3aW5kb3c7Ci0g
IHZvaWQqIHBsYXRmb3JtUHJpbnQ7IC8qIFBsYXRmb3JtLXNwZWNpZmljIHByaW50aW5nIGluZm8g
Ki8KLX0gTlBFbWJlZFByaW50OwotCi10eXBlZGVmIHN0cnVjdCBfTlBQcmludAotewotICB1aW50
MTZfdCBtb2RlOyAgICAgICAgICAgICAgIC8qIE5QX0ZVTEwgb3IgTlBfRU1CRUQgKi8KLSAgdW5p
b24KLSAgewotICAgIE5QRnVsbFByaW50IGZ1bGxQcmludDsgICAvKiBpZiBtb2RlIGlzIE5QX0ZV
TEwgKi8KLSAgICBOUEVtYmVkUHJpbnQgZW1iZWRQcmludDsgLyogaWYgbW9kZSBpcyBOUF9FTUJF
RCAqLwotICB9IHByaW50OwotfSBOUFByaW50OwotCi0jaWYgZGVmaW5lZChYUF9NQUNPU1gpCi0j
aWZuZGVmIE5QX05PX0NBUkJPTgotdHlwZWRlZiBFdmVudFJlY29yZCBOUEV2ZW50OwotI2Vsc2UK
LXR5cGVkZWYgdm9pZCogIE5QRXZlbnQ7Ci0jZW5kaWYKLSNlbGlmIGRlZmluZWQoWFBfU1lNQklB
TikKLXR5cGVkZWYgUUV2ZW50IE5QRXZlbnQ7Ci0jZWxpZiBkZWZpbmVkKFhQX1dJTikKLXR5cGVk
ZWYgc3RydWN0IF9OUEV2ZW50Ci17Ci0gIHVpbnQxNl90IGV2ZW50OwotICB1aW50cHRyX3Qgd1Bh
cmFtOwotICB1aW50cHRyX3QgbFBhcmFtOwotfSBOUEV2ZW50OwotI2VsaWYgZGVmaW5lZChYUF9P
UzIpCi10eXBlZGVmIHN0cnVjdCBfTlBFdmVudAotewotICB1aW50MzJfdCBldmVudDsKLSAgdWlu
dDMyX3Qgd1BhcmFtOwotICB1aW50MzJfdCBsUGFyYW07Ci19IE5QRXZlbnQ7Ci0jZWxpZiBkZWZp
bmVkKFhQX1VOSVgpCi10eXBlZGVmIFhFdmVudCBOUEV2ZW50OwotI2Vsc2UKLXR5cGVkZWYgdm9p
ZCogIE5QRXZlbnQ7Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoWFBfTUFDT1NYKQotdHlwZWRlZiB2
b2lkKiBOUFJlZ2lvbjsKLSNpZm5kZWYgTlBfTk9fUVVJQ0tEUkFXCi10eXBlZGVmIFJnbkhhbmRs
ZSBOUFFEUmVnaW9uOwotI2VuZGlmCi10eXBlZGVmIENHUGF0aFJlZiBOUENHUmVnaW9uOwotI2Vs
aWYgZGVmaW5lZChYUF9XSU4pCi10eXBlZGVmIEhSR04gTlBSZWdpb247Ci0jZWxpZiBkZWZpbmVk
KFhQX1VOSVgpCi10eXBlZGVmIFJlZ2lvbiBOUFJlZ2lvbjsKLSNlbGlmIGRlZmluZWQoWFBfU1lN
QklBTikKLXR5cGVkZWYgUVJlZ2lvbiogTlBSZWdpb247Ci0jZWxzZQotdHlwZWRlZiB2b2lkICpO
UFJlZ2lvbjsKLSNlbmRpZgotCi10eXBlZGVmIHN0cnVjdCBfTlBOU1N0cmluZyBOUE5TU3RyaW5n
OwotdHlwZWRlZiBzdHJ1Y3QgX05QTlNXaW5kb3cgTlBOU1dpbmRvdzsKLXR5cGVkZWYgc3RydWN0
IF9OUE5TTWVudSAgIE5QTlNNZW51OwotCi0jaWYgZGVmaW5lZChYUF9NQUNPU1gpCi10eXBlZGVm
IE5QTlNNZW51IE5QTWVudTsKLSNlbHNlCi10eXBlZGVmIHZvaWQgKk5QTWVudTsKLSNlbmRpZgot
Ci10eXBlZGVmIGVudW0gewotICBOUENvb3JkaW5hdGVTcGFjZVBsdWdpbiA9IDEsCi0gIE5QQ29v
cmRpbmF0ZVNwYWNlV2luZG93LAotICBOUENvb3JkaW5hdGVTcGFjZUZsaXBwZWRXaW5kb3csCi0g
IE5QQ29vcmRpbmF0ZVNwYWNlU2NyZWVuLAotICBOUENvb3JkaW5hdGVTcGFjZUZsaXBwZWRTY3Jl
ZW4KLX0gTlBDb29yZGluYXRlU3BhY2U7Ci0KLSNpZiBkZWZpbmVkKFhQX01BQ09TWCkKLQotI2lm
bmRlZiBOUF9OT19RVUlDS0RSQVcKLXR5cGVkZWYgc3RydWN0IE5QX1BvcnQKLXsKLSAgQ0dyYWZQ
dHIgcG9ydDsKLSAgaW50MzJfdCBwb3J0eDsgLyogcG9zaXRpb24gaW5zaWRlIHRoZSB0b3Btb3N0
IHdpbmRvdyAqLwotICBpbnQzMl90IHBvcnR5OwotfSBOUF9Qb3J0OwotI2VuZGlmIC8qIE5QX05P
X1FVSUNLRFJBVyAqLwotCi0vKgotICogTlBfQ0dDb250ZXh0IGlzIHRoZSB0eXBlIG9mIHRoZSBO
UFdpbmRvdydzICd3aW5kb3cnIHdoZW4gdGhlIHBsdWdpbiBzcGVjaWZpZXMgTlBEcmF3aW5nTW9k
ZWxDb3JlR3JhcGhpY3MKLSAqIGFzIGl0cyBkcmF3aW5nIG1vZGVsLgotICovCi0KLXR5cGVkZWYg
c3RydWN0IE5QX0NHQ29udGV4dAotewotICBDR0NvbnRleHRSZWYgY29udGV4dDsKLSNpZmRlZiBO
UF9OT19DQVJCT04KLSAgTlBOU1dpbmRvdyAqd2luZG93OwotI2Vsc2UKLSAgdm9pZCAqd2luZG93
OyAvKiBBIFdpbmRvd1JlZiBvciBOVUxMIGZvciB0aGUgQ29jb2EgZXZlbnQgbW9kZWwuICovCi0j
ZW5kaWYKLX0gTlBfQ0dDb250ZXh0OwotCi0vKgotICogTlBfR0xDb250ZXh0IGlzIHRoZSB0eXBl
IG9mIHRoZSBOUFdpbmRvdydzICd3aW5kb3cnIHdoZW4gdGhlIHBsdWdpbiBzcGVjaWZpZXMgTlBE
cmF3aW5nTW9kZWxPcGVuR0wgYXMgaXRzCi0gKiBkcmF3aW5nIG1vZGVsLgotICovCi0KLXR5cGVk
ZWYgc3RydWN0IE5QX0dMQ29udGV4dAotewotICBDR0xDb250ZXh0T2JqIGNvbnRleHQ7Ci0jaWZk
ZWYgTlBfTk9fQ0FSQk9OCi0gIE5QTlNXaW5kb3cgKndpbmRvdzsKLSNlbHNlCi0gIHZvaWQgKndp
bmRvdzsgLyogQ2FuIGJlIGVpdGhlciBhbiBOU1dpbmRvdyBvciBhIFdpbmRvd1JlZiBkZXBlbmRp
bmcgb24gdGhlIGV2ZW50IG1vZGVsICovCi0jZW5kaWYKLX0gTlBfR0xDb250ZXh0OwotCi10eXBl
ZGVmIGVudW0gewotICBOUENvY29hRXZlbnREcmF3UmVjdCA9IDEsCi0gIE5QQ29jb2FFdmVudE1v
dXNlRG93biwKLSAgTlBDb2NvYUV2ZW50TW91c2VVcCwKLSAgTlBDb2NvYUV2ZW50TW91c2VNb3Zl
ZCwKLSAgTlBDb2NvYUV2ZW50TW91c2VFbnRlcmVkLAotICBOUENvY29hRXZlbnRNb3VzZUV4aXRl
ZCwKLSAgTlBDb2NvYUV2ZW50TW91c2VEcmFnZ2VkLAotICBOUENvY29hRXZlbnRLZXlEb3duLAot
ICBOUENvY29hRXZlbnRLZXlVcCwKLSAgTlBDb2NvYUV2ZW50RmxhZ3NDaGFuZ2VkLAotICBOUENv
Y29hRXZlbnRGb2N1c0NoYW5nZWQsCi0gIE5QQ29jb2FFdmVudFdpbmRvd0ZvY3VzQ2hhbmdlZCwK
LSAgTlBDb2NvYUV2ZW50U2Nyb2xsV2hlZWwsCi0gIE5QQ29jb2FFdmVudFRleHRJbnB1dAotfSBO
UENvY29hRXZlbnRUeXBlOwotCi10eXBlZGVmIHN0cnVjdCBfTlBDb2NvYUV2ZW50IHsKLSAgTlBD
b2NvYUV2ZW50VHlwZSB0eXBlOwotICB1aW50MzJfdCB2ZXJzaW9uOwotICB1bmlvbiB7Ci0gICAg
c3RydWN0IHsKLSAgICAgIHVpbnQzMl90IG1vZGlmaWVyRmxhZ3M7Ci0gICAgICBkb3VibGUgICBw
bHVnaW5YOwotICAgICAgZG91YmxlICAgcGx1Z2luWTsKLSAgICAgIGludDMyX3QgIGJ1dHRvbk51
bWJlcjsKLSAgICAgIGludDMyX3QgIGNsaWNrQ291bnQ7Ci0gICAgICBkb3VibGUgICBkZWx0YVg7
Ci0gICAgICBkb3VibGUgICBkZWx0YVk7Ci0gICAgICBkb3VibGUgICBkZWx0YVo7Ci0gICAgfSBt
b3VzZTsKLSAgICBzdHJ1Y3QgewotICAgICAgdWludDMyX3QgICAgbW9kaWZpZXJGbGFnczsKLSAg
ICAgIE5QTlNTdHJpbmcgKmNoYXJhY3RlcnM7Ci0gICAgICBOUE5TU3RyaW5nICpjaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnM7Ci0gICAgICBOUEJvb2wgICAgICBpc0FSZXBlYXQ7Ci0gICAgICB1
aW50MTZfdCAgICBrZXlDb2RlOwotICAgIH0ga2V5OwotICAgIHN0cnVjdCB7Ci0gICAgICBDR0Nv
bnRleHRSZWYgY29udGV4dDsKLSAgICAgIGRvdWJsZSB4OwotICAgICAgZG91YmxlIHk7Ci0gICAg
ICBkb3VibGUgd2lkdGg7Ci0gICAgICBkb3VibGUgaGVpZ2h0OwotICAgIH0gZHJhdzsKLSAgICBz
dHJ1Y3QgewotICAgICAgTlBCb29sIGhhc0ZvY3VzOwotICAgIH0gZm9jdXM7Ci0gICAgc3RydWN0
IHsKLSAgICAgIE5QTlNTdHJpbmcgKnRleHQ7Ci0gICAgfSB0ZXh0OwotICB9IGRhdGE7Ci19IE5Q
Q29jb2FFdmVudDsKLQotI2lmbmRlZiBOUF9OT19DQVJCT04KLS8qIE5vbi1zdGFuZGFyZCBldmVu
dCB0eXBlcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gSGFuZGxlRXZlbnQgKi8KLWVudW0gTlBFdmVu
dFR5cGUgewotICBOUEV2ZW50VHlwZV9HZXRGb2N1c0V2ZW50ID0gKG9zRXZ0ICsgMTYpLAotICBO
UEV2ZW50VHlwZV9Mb3NlRm9jdXNFdmVudCwKLSAgTlBFdmVudFR5cGVfQWRqdXN0Q3Vyc29yRXZl
bnQsCi0gIE5QRXZlbnRUeXBlX01lbnVDb21tYW5kRXZlbnQsCi0gIE5QRXZlbnRUeXBlX0NsaXBw
aW5nQ2hhbmdlZEV2ZW50LAotICBOUEV2ZW50VHlwZV9TY3JvbGxpbmdCZWdpbnNFdmVudCA9IDEw
MDAsCi0gIE5QRXZlbnRUeXBlX1Njcm9sbGluZ0VuZHNFdmVudAotfTsKLSNlbmRpZiAvKiBOUF9O
T19DQVJCT04gKi8KLQotI2VuZGlmIC8qIFhQX01BQ09TWCAqLwotCi0vKgotICogVmFsdWVzIGZv
ciBtb2RlIHBhc3NlZCB0byBOUFBfTmV3OgotICovCi0jZGVmaW5lIE5QX0VNQkVEIDEKLSNkZWZp
bmUgTlBfRlVMTCAgMgotCi0vKgotICogVmFsdWVzIGZvciBzdHJlYW0gdHlwZSBwYXNzZWQgdG8g
TlBQX05ld1N0cmVhbToKLSAqLwotI2RlZmluZSBOUF9OT1JNQUwgICAgIDEKLSNkZWZpbmUgTlBf
U0VFSyAgICAgICAyCi0jZGVmaW5lIE5QX0FTRklMRSAgICAgMwotI2RlZmluZSBOUF9BU0ZJTEVP
TkxZIDQKLQotI2RlZmluZSBOUF9NQVhSRUFEWSAoKCh1bnNpZ25lZCkofjApPDwxKT4+MSkKLQot
LyoKLSAqIEZsYWdzIGZvciBOUFBfQ2xlYXJTaXRlRGF0YS4KLSAqLwotI2RlZmluZSBOUF9DTEVB
Ul9BTEwgICAwCi0jZGVmaW5lIE5QX0NMRUFSX0NBQ0hFICgxIDw8IDApCi0KLSNpZiAhZGVmaW5l
ZChfX0xQNjRfXykKLSNpZiBkZWZpbmVkKFhQX01BQ09TWCkKLSNwcmFnbWEgb3B0aW9ucyBhbGln
bj1yZXNldAotI2VuZGlmCi0jZW5kaWYgLyogX19MUDY0X18gKi8KLQotLyotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ki8KLS8qICAgICAgIEVycm9yIGFuZCBSZWFzb24gQ29kZSBkZWZpbml0aW9ucyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICovCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0vKgotICogVmFsdWVz
IG9mIHR5cGUgTlBFcnJvcjoKLSAqLwotI2RlZmluZSBOUEVSUl9CQVNFICAgICAgICAgICAgICAg
ICAgICAgICAgIDAKLSNkZWZpbmUgTlBFUlJfTk9fRVJST1IgICAgICAgICAgICAgICAgICAgIChO
UEVSUl9CQVNFICsgMCkKLSNkZWZpbmUgTlBFUlJfR0VORVJJQ19FUlJPUiAgICAgICAgICAgICAg
IChOUEVSUl9CQVNFICsgMSkKLSNkZWZpbmUgTlBFUlJfSU5WQUxJRF9JTlNUQU5DRV9FUlJPUiAg
ICAgIChOUEVSUl9CQVNFICsgMikKLSNkZWZpbmUgTlBFUlJfSU5WQUxJRF9GVU5DVEFCTEVfRVJS
T1IgICAgIChOUEVSUl9CQVNFICsgMykKLSNkZWZpbmUgTlBFUlJfTU9EVUxFX0xPQURfRkFJTEVE
X0VSUk9SICAgIChOUEVSUl9CQVNFICsgNCkKLSNkZWZpbmUgTlBFUlJfT1VUX09GX01FTU9SWV9F
UlJPUiAgICAgICAgIChOUEVSUl9CQVNFICsgNSkKLSNkZWZpbmUgTlBFUlJfSU5WQUxJRF9QTFVH
SU5fRVJST1IgICAgICAgIChOUEVSUl9CQVNFICsgNikKLSNkZWZpbmUgTlBFUlJfSU5WQUxJRF9Q
TFVHSU5fRElSX0VSUk9SICAgIChOUEVSUl9CQVNFICsgNykKLSNkZWZpbmUgTlBFUlJfSU5DT01Q
QVRJQkxFX1ZFUlNJT05fRVJST1IgIChOUEVSUl9CQVNFICsgOCkKLSNkZWZpbmUgTlBFUlJfSU5W
QUxJRF9QQVJBTSAgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsgOSkKLSNkZWZpbmUgTlBFUlJf
SU5WQUxJRF9VUkwgICAgICAgICAgICAgICAgIChOUEVSUl9CQVNFICsgMTApCi0jZGVmaW5lIE5Q
RVJSX0ZJTEVfTk9UX0ZPVU5EICAgICAgICAgICAgICAoTlBFUlJfQkFTRSArIDExKQotI2RlZmlu
ZSBOUEVSUl9OT19EQVRBICAgICAgICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAxMikKLSNk
ZWZpbmUgTlBFUlJfU1RSRUFNX05PVF9TRUVLQUJMRSAgICAgICAgIChOUEVSUl9CQVNFICsgMTMp
Ci0KLS8qCi0gKiBWYWx1ZXMgb2YgdHlwZSBOUFJlYXNvbjoKLSAqLwotI2RlZmluZSBOUFJFU19C
QVNFICAgICAgICAgIDAKLSNkZWZpbmUgTlBSRVNfRE9ORSAgICAgICAgIChOUFJFU19CQVNFICsg
MCkKLSNkZWZpbmUgTlBSRVNfTkVUV09SS19FUlIgIChOUFJFU19CQVNFICsgMSkKLSNkZWZpbmUg
TlBSRVNfVVNFUl9CUkVBSyAgIChOUFJFU19CQVNFICsgMikKLQotLyoKLSAqIERvbid0IHVzZSB0
aGVzZSBvYnNvbGV0ZSBlcnJvciBjb2RlcyBhbnkgbW9yZS4KLSAqLwotI2RlZmluZSBOUF9OT0VS
UiAgTlBfTk9FUlJfaXNfb2Jzb2xldGVfdXNlX05QRVJSX05PX0VSUk9SCi0jZGVmaW5lIE5QX0VJ
TlZBTCBOUF9FSU5WQUxfaXNfb2Jzb2xldGVfdXNlX05QRVJSX0dFTkVSSUNfRVJST1IKLSNkZWZp
bmUgTlBfRUFCT1JUIE5QX0VBQk9SVF9pc19vYnNvbGV0ZV91c2VfTlBSRVNfVVNFUl9CUkVBSwot
Ci0vKgotICogVmVyc2lvbiBmZWF0dXJlIGluZm9ybWF0aW9uCi0gKi8KLSNkZWZpbmUgTlBWRVJT
X0hBU19TVFJFQU1PVVRQVVQgICAgICAgICAgICAgOAotI2RlZmluZSBOUFZFUlNfSEFTX05PVElG
SUNBVElPTiAgICAgICAgICAgICA5Ci0jZGVmaW5lIE5QVkVSU19IQVNfTElWRUNPTk5FQ1QgICAg
ICAgICAgICAgIDkKLSNkZWZpbmUgTlBWRVJTX1dJTjE2X0hBU19MSVZFQ09OTkVDVCAgICAgICAg
OQotI2RlZmluZSBOUFZFUlNfNjhLX0hBU19MSVZFQ09OTkVDVCAgICAgICAgICAxMQotI2RlZmlu
ZSBOUFZFUlNfSEFTX1dJTkRPV0xFU1MgICAgICAgICAgICAgICAxMQotI2RlZmluZSBOUFZFUlNf
SEFTX1hQQ09OTkVDVF9TQ1JJUFRJTkcgICAgICAxMyAgLyogTm90IGltcGxlbWVudGVkIGluIFdl
YktpdCAqLwotI2RlZmluZSBOUFZFUlNfSEFTX05QUlVOVElNRV9TQ1JJUFRJTkcgICAgICAxNAot
I2RlZmluZSBOUFZFUlNfSEFTX0ZPUk1fVkFMVUVTICAgICAgICAgICAgICAxNSAgLyogTm90IGlt
cGxlbWVudGVkIGluIFdlYktpdDsgc2VlIGJ1ZyAxMzA2MSAqLwotI2RlZmluZSBOUFZFUlNfSEFT
X1BPUFVQU19FTkFCTEVEX1NUQVRFICAgICAxNiAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktp
dCAqLwotI2RlZmluZSBOUFZFUlNfSEFTX1JFU1BPTlNFX0hFQURFUlMgICAgICAgICAxNwotI2Rl
ZmluZSBOUFZFUlNfSEFTX05QT0JKRUNUX0VOVU0gICAgICAgICAgICAxOAotI2RlZmluZSBOUFZF
UlNfSEFTX1BMVUdJTl9USFJFQURfQVNZTkNfQ0FMTCAxOQotI2RlZmluZSBOUFZFUlNfSEFTX0FM
TF9ORVRXT1JLX1NUUkVBTVMgICAgICAyMAotI2RlZmluZSBOUFZFUlNfSEFTX1VSTF9BTkRfQVVU
SF9JTkZPICAgICAgICAyMQotI2RlZmluZSBOUFZFUlNfSEFTX1BSSVZBVEVfTU9ERSAgICAgICAg
ICAgICAyMgotI2RlZmluZSBOUFZFUlNfTUFDT1NYX0hBU19FVkVOVF9NT0RFTFMgICAgICAyMwot
I2RlZmluZSBOUFZFUlNfSEFTX0NBTkNFTF9TUkNfU1RSRUFNICAgICAgICAyNAotI2RlZmluZSBO
UFZFUlNfSEFTX0FEVkFOQ0VEX0tFWV9IQU5ETElORyAgICAyNQotI2RlZmluZSBOUFZFUlNfSEFT
X1VSTF9SRURJUkVDVF9IQU5ETElORyAgICAyNgotI2RlZmluZSBOUFZFUlNfSEFTX0NMRUFSX1NJ
VEVfREFUQSAgICAgICAgICAyNwotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyogICAgICAgICAgICAg
ICAgICAgICAgICBGdW5jdGlvbiBQcm90b3R5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ki8KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLSNpZiBkZWZpbmVkKF9fT1MyX18pCi0jZGVmaW5lIE5Q
X0xPQUREUyBfU3lzdGVtCi0jZWxzZQotI2RlZmluZSBOUF9MT0FERFMKLSNlbmRpZgotCi0jaWZk
ZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qIE5QUF8qIGZ1bmN0aW9u
cyBhcmUgcHJvdmlkZWQgYnkgdGhlIHBsdWdpbiBhbmQgY2FsbGVkIGJ5IHRoZSBuYXZpZ2F0b3Iu
ICovCi0KLSNpZiBkZWZpbmVkKFhQX1VOSVgpCi1jaGFyKiBOUFBfR2V0TUlNRURlc2NyaXB0aW9u
KHZvaWQpOwotI2VuZGlmCi0KLU5QRXJyb3IgTlBfTE9BRERTIE5QUF9Jbml0aWFsaXplKHZvaWQp
Owotdm9pZCAgICBOUF9MT0FERFMgTlBQX1NodXRkb3duKHZvaWQpOwotTlBFcnJvciBOUF9MT0FE
RFMgTlBQX05ldyhOUE1JTUVUeXBlIHBsdWdpblR5cGUsIE5QUCBpbnN0YW5jZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDE2X3QgbW9kZSwgaW50MTZfdCBhcmdjLCBjaGFyKiBhcmdu
W10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEq
IHNhdmVkKTsKLU5QRXJyb3IgTlBfTE9BRERTIE5QUF9EZXN0cm95KE5QUCBpbnN0YW5jZSwgTlBT
YXZlZERhdGEqKiBzYXZlKTsKLU5QRXJyb3IgTlBfTE9BRERTIE5QUF9TZXRXaW5kb3coTlBQIGlu
c3RhbmNlLCBOUFdpbmRvdyogd2luZG93KTsKLU5QRXJyb3IgTlBfTE9BRERTIE5QUF9OZXdTdHJl
YW0oTlBQIGluc3RhbmNlLCBOUE1JTUVUeXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5QU3RyZWFtKiBzdHJlYW0sIE5QQm9vbCBzZWVrYWJsZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QqIHN0eXBlKTsKLU5QRXJyb3IgTlBfTE9BRERT
IE5QUF9EZXN0cm95U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNvbik7Ci1pbnQzMl90
IE5QX0xPQUREUyBOUFBfV3JpdGVSZWFkeShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0p
OwotaW50MzJfdCBOUF9MT0FERFMgTlBQX1dyaXRlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0
cmVhbSwgaW50MzJfdCBvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJf
dCBsZW4sIHZvaWQqIGJ1ZmZlcik7Ci12b2lkICAgIE5QX0xPQUREUyBOUFBfU3RyZWFtQXNGaWxl
KE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogZm5hbWUpOwotdm9pZCAgICBOUF9MT0FERFMgTlBQX1By
aW50KE5QUCBpbnN0YW5jZSwgTlBQcmludCogcGxhdGZvcm1QcmludCk7Ci1pbnQxNl90IE5QX0xP
QUREUyBOUFBfSGFuZGxlRXZlbnQoTlBQIGluc3RhbmNlLCB2b2lkKiBldmVudCk7Ci12b2lkICAg
IE5QX0xPQUREUyBOUFBfVVJMTm90aWZ5KE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogdXJsLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOUFJlYXNvbiByZWFzb24sIHZvaWQqIG5v
dGlmeURhdGEpOwotanJlZiAgICBOUF9MT0FERFMgTlBQX0dldEphdmFDbGFzcyh2b2lkKTsKLU5Q
RXJyb3IgTlBfTE9BRERTIE5QUF9HZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QUFZhcmlhYmxlIHZh
cmlhYmxlLCB2b2lkICp2YWx1ZSk7Ci1OUEVycm9yIE5QX0xPQUREUyBOUFBfU2V0VmFsdWUoTlBQ
IGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUpOwotTlBCb29sICBO
UF9MT0FERFMgTlBQX0dvdEZvY3VzKE5QUCBpbnN0YW5jZSwgTlBGb2N1c0RpcmVjdGlvbiBkaXJl
Y3Rpb24pOwotdm9pZCAgICBOUF9MT0FERFMgTlBQX0xvc3RGb2N1cyhOUFAgaW5zdGFuY2UpOwot
dm9pZCAgICBOUF9MT0FERFMgTlBQX1VSTFJlZGlyZWN0Tm90aWZ5KE5QUCBpbnN0YW5jZSwgY29u
c3QgY2hhciogdXJsLCBpbnQzMl90IHN0YXR1cywgdm9pZCogbm90aWZ5RGF0YSk7Ci1OUEVycm9y
IE5QX0xPQUREUyBOUFBfQ2xlYXJTaXRlRGF0YShjb25zdCBjaGFyKiBzaXRlLCB1aW50NjRfdCBm
bGFncywgdWludDY0X3QgbWF4QWdlKTsKLWNoYXIqKiAgTlBfTE9BRERTIE5QUF9HZXRTaXRlc1dp
dGhEYXRhKHZvaWQpOwotCi0vKiBOUE5fKiBmdW5jdGlvbnMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBu
YXZpZ2F0b3IgYW5kIGNhbGxlZCBieSB0aGUgcGx1Z2luLiAqLwotdm9pZCAgICAgICAgTlBfTE9B
RERTIE5QTl9WZXJzaW9uKGludCogcGx1Z2luX21ham9yLCBpbnQqIHBsdWdpbl9taW5vciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG5ldHNjYXBlX21ham9yLCBpbnQq
IG5ldHNjYXBlX21pbm9yKTsKLU5QRXJyb3IgICAgIE5QX0xPQUREUyBOUE5fR2V0VVJMTm90aWZ5
KE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogdXJsLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGFyZ2V0LCB2b2lkKiBub3RpZnlEYXRhKTsKLU5Q
RXJyb3IgICAgIE5QX0xPQUREUyBOUE5fR2V0VVJMKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciog
dXJsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGFyZ2V0
KTsKLU5QRXJyb3IgICAgIE5QX0xPQUREUyBOUE5fUG9zdFVSTE5vdGlmeShOUFAgaW5zdGFuY2Us
IGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiB0YXJnZXQsIHVpbnQzMl90IGxlbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBidWYsIE5QQm9vbCBmaWxlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIG5vdGlmeURhdGEpOwotTlBF
cnJvciAgICAgTlBfTE9BRERTIE5QTl9Qb3N0VVJMKE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciog
dXJsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdl
dCwgdWludDMyX3QgbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGJ1ZiwgTlBCb29sIGZpbGUpOwotTlBFcnJvciAgICAgTlBfTE9BRERTIE5QTl9SZXF1
ZXN0UmVhZChOUFN0cmVhbSogc3RyZWFtLCBOUEJ5dGVSYW5nZSogcmFuZ2VMaXN0KTsKLU5QRXJy
b3IgICAgIE5QX0xPQUREUyBOUE5fTmV3U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBNSU1FVHlwZSB0
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGFy
Z2V0LCBOUFN0cmVhbSoqIHN0cmVhbSk7Ci1pbnQzMl90ICAgICBOUF9MT0FERFMgTlBOX1dyaXRl
KE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgaW50MzJfdCBsZW4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIGJ1ZmZlcik7Ci1OUEVycm9yICAgICBOUF9MT0FE
RFMgTlBOX0Rlc3Ryb3lTdHJlYW0oTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJlYXNvbik7Ci12
b2lkICAgICAgICBOUF9MT0FERFMgTlBOX1N0YXR1cyhOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIq
IG1lc3NhZ2UpOwotY29uc3QgY2hhciogTlBfTE9BRERTIE5QTl9Vc2VyQWdlbnQoTlBQIGluc3Rh
bmNlKTsKLXZvaWQqICAgICAgIE5QX0xPQUREUyBOUE5fTWVtQWxsb2ModWludDMyX3Qgc2l6ZSk7
Ci12b2lkICAgICAgICBOUF9MT0FERFMgTlBOX01lbUZyZWUodm9pZCogcHRyKTsKLXVpbnQzMl90
ICAgIE5QX0xPQUREUyBOUE5fTWVtRmx1c2godWludDMyX3Qgc2l6ZSk7Ci12b2lkICAgICAgICBO
UF9MT0FERFMgTlBOX1JlbG9hZFBsdWdpbnMoTlBCb29sIHJlbG9hZFBhZ2VzKTsKLUpSSUVudiog
ICAgIE5QX0xPQUREUyBOUE5fR2V0SmF2YUVudih2b2lkKTsKLWpyZWYgICAgICAgIE5QX0xPQURE
UyBOUE5fR2V0SmF2YVBlZXIoTlBQIGluc3RhbmNlKTsKLU5QRXJyb3IgICAgIE5QX0xPQUREUyBO
UE5fR2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdmFsdWUpOwotTlBFcnJvciAgICAgTlBf
TE9BRERTIE5QTl9TZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QUFZhcmlhYmxlIHZhcmlhYmxlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSk7Ci12b2lkICAg
ICAgICBOUF9MT0FERFMgTlBOX0ludmFsaWRhdGVSZWN0KE5QUCBpbnN0YW5jZSwgTlBSZWN0ICpp
bnZhbGlkUmVjdCk7Ci12b2lkICAgICAgICBOUF9MT0FERFMgTlBOX0ludmFsaWRhdGVSZWdpb24o
TlBQIGluc3RhbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5QUmVnaW9uIGludmFsaWRSZWdpb24pOwotdm9pZCAgICAgICAgTlBfTE9BRERTIE5QTl9Gb3Jj
ZVJlZHJhdyhOUFAgaW5zdGFuY2UpOwotdm9pZCAgICAgICAgTlBfTE9BRERTIE5QTl9QdXNoUG9w
dXBzRW5hYmxlZFN0YXRlKE5QUCBpbnN0YW5jZSwgTlBCb29sIGVuYWJsZWQpOwotdm9pZCAgICAg
ICAgTlBfTE9BRERTIE5QTl9Qb3BQb3B1cHNFbmFibGVkU3RhdGUoTlBQIGluc3RhbmNlKTsKLXZv
aWQgICAgICAgIE5QX0xPQUREUyBOUE5fUGx1Z2luVGhyZWFkQXN5bmNDYWxsKE5QUCBpbnN0YW5j
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg
KCpmdW5jKSAodm9pZCAqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKnVzZXJEYXRhKTsKLU5QRXJyb3IgICAgIE5QX0xPQUREUyBOUE5fR2V0
VmFsdWVGb3JVUkwoTlBQIGluc3RhbmNlLCBOUE5VUkxWYXJpYWJsZSB2YXJpYWJsZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXJsLCBjaGFy
ICoqdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90ICpsZW4pOwotTlBFcnJvciAgICAgTlBfTE9BRERTIE5QTl9TZXRWYWx1ZUZvclVSTChOUFAg
aW5zdGFuY2UsIE5QTlVSTFZhcmlhYmxlIHZhcmlhYmxlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1cmwsIGNvbnN0IGNoYXIgKnZhbHVlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW4pOwot
TlBFcnJvciAgICAgTlBfTE9BRERTIE5QTl9HZXRBdXRoZW50aWNhdGlvbkluZm8oTlBQIGluc3Rh
bmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqcHJvdG9jb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpob3N0LCBpbnQzMl90IHBvcnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzY2hlbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICpyZWFsbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKip1c2VybmFtZSwgdWludDMyX3QgKnVsZW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqcGFzc3dvcmQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqcGxlbik7Ci11aW50
MzJfdCAgICBOUF9MT0FERFMgTlBOX1NjaGVkdWxlVGltZXIoTlBQIGluc3RhbmNlLCB1aW50MzJf
dCBpbnRlcnZhbCwgTlBCb29sIHJlcGVhdCwgdm9pZCAoKnRpbWVyRnVuYykoTlBQIG5wcCwgdWlu
dDMyX3QgdGltZXJJRCkpOwotdm9pZCAgICAgICAgTlBfTE9BRERTIE5QTl9VbnNjaGVkdWxlVGlt
ZXIoTlBQIGluc3RhbmNlLCB1aW50MzJfdCB0aW1lcklEKTsKLU5QRXJyb3IgICAgIE5QX0xPQURE
UyBOUE5fUG9wVXBDb250ZXh0TWVudShOUFAgaW5zdGFuY2UsIE5QTWVudSogbWVudSk7Ci1OUEJv
b2wgICAgICBOUF9MT0FERFMgTlBOX0NvbnZlcnRQb2ludChOUFAgaW5zdGFuY2UsIGRvdWJsZSBz
b3VyY2VYLCBkb3VibGUgc291cmNlWSwgTlBDb29yZGluYXRlU3BhY2Ugc291cmNlU3BhY2UsIGRv
dWJsZSAqZGVzdFgsIGRvdWJsZSAqZGVzdFksIE5QQ29vcmRpbmF0ZVNwYWNlIGRlc3RTcGFjZSk7
Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfSAgLyogZW5kIGV4dGVybiAiQyIgKi8KLSNlbmRpZgot
Ci0jZW5kaWYgLyogUkNfSU5WT0tFRCAqLwotI2lmIGRlZmluZWQoX19PUzJfXykKLSNwcmFnbWEg
cGFjaygpCi0jZW5kaWYKLQotI2VuZGlmIC8qIG5wYXBpX2hfICovCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvbnBydW50aW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJp
ZGdlL25wcnVudGltZS5oCShyZXZpc2lvbiA5NDU4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ucHJ1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzOTMgKzAsMCBAQAotLyogLSotIE1v
ZGU6IEM7IHRhYi13aWR0aDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyBjLWJhc2ljLW9mZnNl
dDogNCAtKi0gKi8KLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQsIEFwcGxlIENvbXB1dGVyLCBJ
bmMuIGFuZCBUaGUgTW96aWxsYSBGb3VuZGF0aW9uLiAKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICogCi0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lcyBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgb3IgVGhlIE1vemlsbGEKLSAqIEZvdW5kYXRpb24gKCJNb3ppbGxhIikgbm9yIHRo
ZSBuYW1lcyBvZiB0aGVpciBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQKLSAqIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0g
KiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIE1PWklMTEEgQU5EIFRIRUlSIENPTlRSSUJVVE9SUyAi
QVMKLSAqIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRAotICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFLCBNT1pJTExBIE9SCi0gKiBUSEVJ
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAotICogVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRgotICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcKLSAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0jaWZu
ZGVmIF9OUF9SVU5USU1FX0hfCi0jZGVmaW5lIF9OUF9SVU5USU1FX0hfCi0KLSNpbmNsdWRlICJu
cGFwaS5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8q
Ci0gICAgVGhpcyBBUEkgaXMgdXNlZCB0byBmYWNpbGl0YXRlIGJpbmRpbmcgY29kZSB3cml0dGVu
IGluIEMgdG8gc2NyaXB0Ci0gICAgb2JqZWN0cy4gIFRoZSBBUEkgaW4gdGhpcyBoZWFkZXIgZG9l
cyBub3QgYXNzdW1lIHRoZSBwcmVzZW5jZSBvZiBhCi0gICAgdXNlciBhZ2VudC4gIFRoYXQgaXMs
IGl0IGNhbiBiZSB1c2VkIHRvIGJpbmQgQyBjb2RlIHRvIHNjcmlwdGluZwotICAgIGVudmlyb25t
ZW50cyBvdXRzaWRlIG9mIHRoZSBjb250ZXh0IG9mIGEgdXNlciBhZ2VudC4KLSAgICAKLSAgICBI
b3dldmVyLCB0aGUgbm9ybWFsIHVzZSBvZiB0aGUgdGhpcyBBUEkgaXMgaW4gdGhlIGNvbnRleHQg
b2YgYQotICAgIHNjcmlwdGluZyBlbnZpcm9ubWVudCBydW5uaW5nIGluIGEgYnJvd3NlciBvciBv
dGhlciB1c2VyIGFnZW50LgotICAgIEluIHBhcnRpY3VsYXIgaXQgaXMgdXNlZCB0byBzdXBwb3J0
IHRoZSBleHRlbmRlZCBOZXRzY2FwZQotICAgIHNjcmlwdC1hYmlsaXR5IEFQSSBmb3IgcGx1Z2lu
cyAoTlAtU0FQKS4gIE5QLVNBUCBpcyBhbiBleHRlbnNpb24KLSAgICBvZiB0aGUgTmV0c2NhcGUg
cGx1Z2luIEFQSS4gIEFzIHN1Y2ggd2UgaGF2ZSBhZG9wdGVkIHRoZSB1c2Ugb2YKLSAgICB0aGUg
Ik5QIiBwcmVmaXggZm9yIHRoaXMgQVBJLgotCi0gICAgVGhlIGZvbGxvd2luZyBOUHtOfFB9VmFy
aWFibGVzIHdlcmUgYWRkZWQgdG8gdGhlIE5ldHNjYXBlIHBsdWdpbgotICAgIEFQSSAoaW4gbnBh
cGkuaCk6Ci0KLSAgICBOUE5WV2luZG93TlBPYmplY3QKLSAgICBOUE5WUGx1Z2luRWxlbWVudE5Q
T2JqZWN0Ci0gICAgTlBQVnBsdWdpblNjcmlwdGFibGVOUE9iamVjdAotCi0gICAgVGhlc2UgdmFy
aWFibGVzIGFyZSBleHBvc2VkIHRocm91Z2ggTlBOX0dldFZhbHVlKCkgYW5kCi0gICAgTlBQX0dl
dFZhbHVlKCkgKHJlc3BlY3RpdmVseSkgYW5kIGFyZSB1c2VkIHRvIGVzdGFibGlzaCB0aGUKLSAg
ICBpbml0aWFsIGJpbmRpbmcgYmV0d2VlbiB0aGUgdXNlciBhZ2VudCBhbmQgbmF0aXZlIGNvZGUu
ICBUaGUgRE9NCi0gICAgb2JqZWN0cyBpbiB0aGUgdXNlciBhZ2VudCBjYW4gYmUgZXhhbWluZWQg
YW5kIG1hbmlwdWxhdGVkIHVzaW5nCi0gICAgdGhlIE5QTl8gZnVuY3Rpb25zIHRoYXQgb3BlcmF0
ZSBvbiBOUE9iamVjdHMgZGVzY3JpYmVkIGluIHRoaXMKLSAgICBoZWFkZXIuCi0KLSAgICBUbyB0
aGUgZXh0ZW50IHBvc3NpYmxlIHRoZSBhc3N1bXB0aW9ucyBhYm91dCB0aGUgc2NyaXB0aW5nCi0g
ICAgbGFuZ3VhZ2UgdXNlZCBieSB0aGUgc2NyaXB0aW5nIGVudmlyb25tZW50IGhhdmUgYmVlbiBt
aW5pbWl6ZWQuCi0qLwotCi0jZGVmaW5lIE5QX0JFR0lOX01BQ1JPICBkbyB7Ci0jZGVmaW5lIE5Q
X0VORF9NQUNSTyAgICB9IHdoaWxlICgwKQotCi0vKgotICAgIE9iamVjdHMgKG5vbi1wcmltaXRp
dmUgZGF0YSkgcGFzc2VkIGJldHdlZW4gJ0MnIGFuZCBzY3JpcHQgaXMKLSAgICBhbHdheXMgd3Jh
cHBlZCBpbiBhbiBOUE9iamVjdC4gIFRoZSAnaW50ZXJmYWNlJyBvZiBhbiBOUE9iamVjdCBpcwot
ICAgIGRlc2NyaWJlZCBieSBhbiBOUENsYXNzLgotKi8KLXR5cGVkZWYgc3RydWN0IE5QT2JqZWN0
IE5QT2JqZWN0OwotdHlwZWRlZiBzdHJ1Y3QgTlBDbGFzcyBOUENsYXNzOwotCi10eXBlZGVmIGNo
YXIgTlBVVEY4OwotdHlwZWRlZiBzdHJ1Y3QgX05QU3RyaW5nIHsKLSAgICBjb25zdCBOUFVURjgg
KlVURjhDaGFyYWN0ZXJzOwotICAgIHVpbnQzMl90IFVURjhMZW5ndGg7Ci19IE5QU3RyaW5nOwot
Ci10eXBlZGVmIGVudW0gewotICAgIE5QVmFyaWFudFR5cGVfVm9pZCwKLSAgICBOUFZhcmlhbnRU
eXBlX051bGwsCi0gICAgTlBWYXJpYW50VHlwZV9Cb29sLAotICAgIE5QVmFyaWFudFR5cGVfSW50
MzIsCi0gICAgTlBWYXJpYW50VHlwZV9Eb3VibGUsCi0gICAgTlBWYXJpYW50VHlwZV9TdHJpbmcs
Ci0gICAgTlBWYXJpYW50VHlwZV9PYmplY3QKLX0gTlBWYXJpYW50VHlwZTsKLQotdHlwZWRlZiBz
dHJ1Y3QgX05QVmFyaWFudCB7Ci0gICAgTlBWYXJpYW50VHlwZSB0eXBlOwotICAgIHVuaW9uIHsK
LSAgICAgICAgYm9vbCBib29sVmFsdWU7Ci0gICAgICAgIGludDMyX3QgaW50VmFsdWU7Ci0gICAg
ICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKLSAgICAgICAgTlBTdHJpbmcgc3RyaW5nVmFsdWU7Ci0g
ICAgICAgIE5QT2JqZWN0ICpvYmplY3RWYWx1ZTsKLSAgICB9IHZhbHVlOwotfSBOUFZhcmlhbnQ7
Ci0KLS8qCi0gICAgTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgaXMgY2FsbGVkIG9uIGFsbCAnb3V0
JyBwYXJhbWV0ZXJzCi0gICAgcmVmZXJlbmNlcy4gIFNwZWNpZmljYWxseSBpdCBpcyB0byBiZSBj
YWxsZWQgb24gdmFyaWFudHMgdGhhdCBvd24KLSAgICB0aGVpciB2YWx1ZSwgYXMgaXMgdGhlIGNh
c2Ugd2l0aCBhbGwgbm9uLWNvbnN0IE5QVmFyaWFudCoKLSAgICBhcmd1bWVudHMgYWZ0ZXIgYSBz
dWNjZXNzZnVsIGNhbGwgdG8gYW55IG1ldGhvZHMgKGV4Y2VwdCB0aGlzIG9uZSkKLSAgICBpbiB0
aGlzIEFQSS4KLQotICAgIEFmdGVyIGNhbGxpbmcgTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUsIHRo
ZSB0eXBlIG9mIHRoZSB2YXJpYW50Ci0gICAgd2lsbCBiZSBOUFZhcmlhbnRUeXBlX1ZvaWQuCi0q
Lwotdm9pZCBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZShOUFZhcmlhbnQgKnZhcmlhbnQpOwotCi0j
ZGVmaW5lIE5QVkFSSUFOVF9JU19WT0lEKF92KSAgICAoKF92KS50eXBlID09IE5QVmFyaWFudFR5
cGVfVm9pZCkKLSNkZWZpbmUgTlBWQVJJQU5UX0lTX05VTEwoX3YpICAgICgoX3YpLnR5cGUgPT0g
TlBWYXJpYW50VHlwZV9OdWxsKQotI2RlZmluZSBOUFZBUklBTlRfSVNfQk9PTEVBTihfdikgKChf
dikudHlwZSA9PSBOUFZhcmlhbnRUeXBlX0Jvb2wpCi0jZGVmaW5lIE5QVkFSSUFOVF9JU19JTlQz
MihfdikgICAoKF92KS50eXBlID09IE5QVmFyaWFudFR5cGVfSW50MzIpCi0jZGVmaW5lIE5QVkFS
SUFOVF9JU19ET1VCTEUoX3YpICAoKF92KS50eXBlID09IE5QVmFyaWFudFR5cGVfRG91YmxlKQot
I2RlZmluZSBOUFZBUklBTlRfSVNfU1RSSU5HKF92KSAgKChfdikudHlwZSA9PSBOUFZhcmlhbnRU
eXBlX1N0cmluZykKLSNkZWZpbmUgTlBWQVJJQU5UX0lTX09CSkVDVChfdikgICgoX3YpLnR5cGUg
PT0gTlBWYXJpYW50VHlwZV9PYmplY3QpCi0KLSNkZWZpbmUgTlBWQVJJQU5UX1RPX0JPT0xFQU4o
X3YpICgoX3YpLnZhbHVlLmJvb2xWYWx1ZSkKLSNkZWZpbmUgTlBWQVJJQU5UX1RPX0lOVDMyKF92
KSAgICgoX3YpLnZhbHVlLmludFZhbHVlKQotI2RlZmluZSBOUFZBUklBTlRfVE9fRE9VQkxFKF92
KSAgKChfdikudmFsdWUuZG91YmxlVmFsdWUpCi0jZGVmaW5lIE5QVkFSSUFOVF9UT19TVFJJTkco
X3YpICAoKF92KS52YWx1ZS5zdHJpbmdWYWx1ZSkKLSNkZWZpbmUgTlBWQVJJQU5UX1RPX09CSkVD
VChfdikgICgoX3YpLnZhbHVlLm9iamVjdFZhbHVlKQotCi0jZGVmaW5lIFZPSURfVE9fTlBWQVJJ
QU5UKF92KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci1OUF9CRUdJTl9NQUNSTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF92KS50eXBlID0gTlBWYXJpYW50VHlwZV9W
b2lkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF92
KS52YWx1ZS5vYmplY3RWYWx1ZSA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi1OUF9FTkRfTUFDUk8KLQotI2RlZmluZSBOVUxMX1RPX05QVkFSSUFO
VChfdikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
TlBfQkVHSU5fTUFDUk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIChfdikudHlwZSA9IE5QVmFyaWFudFR5cGVfTnVs
bDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChfdiku
dmFsdWUub2JqZWN0VmFsdWUgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotTlBfRU5EX01BQ1JPCi0KLSNkZWZpbmUgQk9PTEVBTl9UT19OUFZBUklB
TlQoX3ZhbCwgX3YpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLU5Q
X0JFR0lOX01BQ1JPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAoX3YpLnR5cGUgPSBOUFZhcmlhbnRUeXBlX0Jvb2w7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoX3YpLnZh
bHVlLmJvb2xWYWx1ZSA9ICEhKF92YWwpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLU5QX0VORF9NQUNSTwotCi0jZGVmaW5lIElOVDMyX1RPX05QVkFSSUFOVChf
dmFsLCBfdikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1OUF9C
RUdJTl9NQUNSTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgKF92KS50eXBlID0gTlBWYXJpYW50VHlwZV9JbnQzMjsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF92KS52YWx1
ZS5pbnRWYWx1ZSA9IF92YWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi1OUF9FTkRfTUFDUk8KLQotI2RlZmluZSBET1VCTEVfVE9fTlBWQVJJQU5UKF92
YWwsIF92KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotTlBfQkVH
SU5fTUFDUk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIChfdikudHlwZSA9IE5QVmFyaWFudFR5cGVfRG91YmxlOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChfdikudmFsdWUu
ZG91YmxlVmFsdWUgPSBfdmFsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotTlBfRU5EX01BQ1JPCi0KLSNkZWZpbmUgU1RSSU5HWl9UT19OUFZBUklBTlQoX3Zh
bCwgX3YpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLU5QX0JFR0lO
X01BQ1JPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICAoX3YpLnR5cGUgPSBOUFZhcmlhbnRUeXBlX1N0cmluZzsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBOUFN0cmluZyBzdHIg
PSB7IF92YWwsIHVpbnQzMl90KHN0cmxlbihfdmFsKSkgfTsgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAoX3YpLnZhbHVlLnN0cmluZ1ZhbHVlID0gc3RyOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLU5QX0VORF9NQUNSTwotCi0jZGVmaW5lIFNU
UklOR05fVE9fTlBWQVJJQU5UKF92YWwsIF9sZW4sIF92KSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi1OUF9CRUdJTl9NQUNSTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF92KS50eXBlID0gTlBW
YXJpYW50VHlwZV9TdHJpbmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgTlBTdHJpbmcgc3RyID0geyBfdmFsLCB1aW50MzJfdChfbGVuKSB9OyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKF92KS52YWx1ZS5zdHJpbmdWYWx1ZSA9
IHN0cjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1OUF9F
TkRfTUFDUk8KLQotI2RlZmluZSBPQkpFQ1RfVE9fTlBWQVJJQU5UKF92YWwsIF92KSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotTlBfQkVHSU5fTUFDUk8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIChfdikudHlwZSA9IE5QVmFyaWFudFR5cGVfT2JqZWN0OyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChfdikudmFsdWUub2JqZWN0VmFsdWUgPSBf
dmFsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotTlBfRU5E
X01BQ1JPCi0KLQotLyoKLSAgVHlwZSBtYXBwaW5ncyAoSmF2YVNjcmlwdCB0eXBlcyBoYXZlIGJl
ZW4gdXNlZCBmb3IgaWxsdXN0cmF0aW9uCi0gICAgcHVycG9zZXMpOgotCi0gIEphdmFTY3JpcHQg
ICAgICAgdG8gICAgICAgICAgICAgQyAoTlBWYXJpYW50IHdpdGggdHlwZTopCi0gIHVuZGVmaW5l
ZCAgICAgICAgICAgICAgICAgICAgICAgTlBWYXJpYW50VHlwZV9Wb2lkCi0gIG51bGwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlBWYXJpYW50VHlwZV9OdWxsCi0gIEJvb2xlYW4gICAgICAg
ICAgICAgICAgICAgICAgICAgTlBWYXJpYW50VHlwZV9Cb29sCi0gIE51bWJlciAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlBWYXJpYW50VHlwZV9Eb3VibGUgb3IgTlBWYXJpYW50VHlwZV9JbnQz
MgotICBTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgIE5QVmFyaWFudFR5cGVfU3RyaW5n
Ci0gIE9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgTlBWYXJpYW50VHlwZV9PYmplY3QK
LQotICBDIChOUFZhcmlhbnQgd2l0aCB0eXBlOikgICB0byAgIEphdmFTY3JpcHQKLSAgTlBWYXJp
YW50VHlwZV9Wb2lkICAgICAgICAgICAgICB1bmRlZmluZWQKLSAgTlBWYXJpYW50VHlwZV9OdWxs
ICAgICAgICAgICAgICBudWxsCi0gIE5QVmFyaWFudFR5cGVfQm9vbCAgICAgICAgICAgICAgQm9v
bGVhbgotICBOUFZhcmlhbnRUeXBlX0ludDMyICAgICAgICAgICAgIE51bWJlcgotICBOUFZhcmlh
bnRUeXBlX0RvdWJsZSAgICAgICAgICAgIE51bWJlcgotICBOUFZhcmlhbnRUeXBlX1N0cmluZyAg
ICAgICAgICAgIFN0cmluZwotICBOUFZhcmlhbnRUeXBlX09iamVjdCAgICAgICAgICAgIE9iamVj
dAotKi8KLQotdHlwZWRlZiB2b2lkICpOUElkZW50aWZpZXI7Ci0KLS8qCi0gICAgTlBPYmplY3Rz
IGhhdmUgbWV0aG9kcyBhbmQgcHJvcGVydGllcy4gIE1ldGhvZHMgYW5kIHByb3BlcnRpZXMgYXJl
Ci0gICAgaWRlbnRpZmllZCB3aXRoIE5QSWRlbnRpZmllcnMuICBUaGVzZSBpZGVudGlmaWVycyBt
YXkgYmUgcmVmbGVjdGVkCi0gICAgaW4gc2NyaXB0LiAgTlBJZGVudGlmaWVycyBjYW4gYmUgZWl0
aGVyIHN0cmluZ3Mgb3IgaW50ZWdlcnMsIElPVywKLSAgICBtZXRob2RzIGFuZCBwcm9wZXJ0aWVz
IGNhbiBiZSBpZGVudGlmaWVkIGJ5IGVpdGhlciBzdHJpbmdzIG9yCi0gICAgaW50ZWdlcnMgKGku
ZS4gZm9vWyJiYXIiXSB2cyBmb29bMV0pLiBOUElkZW50aWZpZXJzIGNhbiBiZQotICAgIGNvbXBh
cmVkIHVzaW5nID09LiAgSW4gY2FzZSBvZiBhbnkgZXJyb3JzLCB0aGUgcmVxdWVzdGVkCi0gICAg
TlBJZGVudGlmaWVyKHMpIHdpbGwgYmUgTlVMTC4gTlBJZGVudGlmaWVyIGxpZmV0aW1lIGlzIGNv
bnRyb2xsZWQKLSAgICBieSB0aGUgYnJvd3Nlci4gUGx1Z2lucyBkbyBub3QgbmVlZCB0byB3b3Jy
eSBhYm91dCBtZW1vcnkgbWFuYWdlbWVudAotICAgIHdpdGggcmVnYXJkcyB0byBOUElkZW50aWZp
ZXJzLgotKi8KLU5QSWRlbnRpZmllciBOUE5fR2V0U3RyaW5nSWRlbnRpZmllcihjb25zdCBOUFVU
RjggKm5hbWUpOwotdm9pZCBOUE5fR2V0U3RyaW5nSWRlbnRpZmllcnMoY29uc3QgTlBVVEY4ICoq
bmFtZXMsIGludDMyX3QgbmFtZUNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TlBJZGVudGlmaWVyICppZGVudGlmaWVycyk7Ci1OUElkZW50aWZpZXIgTlBOX0dldEludElkZW50
aWZpZXIoaW50MzJfdCBpbnRpZCk7Ci1ib29sIE5QTl9JZGVudGlmaWVySXNTdHJpbmcoTlBJZGVu
dGlmaWVyIGlkZW50aWZpZXIpOwotCi0vKgotICAgIFRoZSBOUFVURjggcmV0dXJuZWQgZnJvbSBO
UE5fVVRGOEZyb21JZGVudGlmaWVyIFNIT1VMRCBiZSBmcmVlZC4KLSovCi1OUFVURjggKk5QTl9V
VEY4RnJvbUlkZW50aWZpZXIoTlBJZGVudGlmaWVyIGlkZW50aWZpZXIpOwotCi0vKgotICAgIEdl
dCB0aGUgaW50ZWdlciByZXByZXNlbnRlZCBieSBpZGVudGlmaWVyLiBJZiBpZGVudGlmaWVyIGlz
IG5vdCBhbgotICAgIGludGVnZXIgaWRlbnRpZmllciwgdGhlIGJlaGF2aW91ciBpcyB1bmRlZmlu
ZWQuCi0qLwotaW50MzJfdCBOUE5fSW50RnJvbUlkZW50aWZpZXIoTlBJZGVudGlmaWVyIGlkZW50
aWZpZXIpOwotCi0vKgotICAgIE5QT2JqZWN0IGJlaGF2aW9yIGlzIGltcGxlbWVudGVkIHVzaW5n
IHRoZSBmb2xsb3dpbmcgc2V0IG9mCi0gICAgY2FsbGJhY2sgZnVuY3Rpb25zLgotCi0gICAgVGhl
IE5QVmFyaWFudCAqcmVzdWx0IGFyZ3VtZW50IG9mIHRoZXNlIGZ1bmN0aW9ucyAod2hlcmUKLSAg
ICBhcHBsaWNhYmxlKSBzaG91bGQgYmUgcmVsZWFzZWQgdXNpbmcgTlBOX1JlbGVhc2VWYXJpYW50
VmFsdWUoKS4KLSovCi10eXBlZGVmIE5QT2JqZWN0ICooKk5QQWxsb2NhdGVGdW5jdGlvblB0ciko
TlBQIG5wcCwgTlBDbGFzcyAqYUNsYXNzKTsKLXR5cGVkZWYgdm9pZCAoKk5QRGVhbGxvY2F0ZUZ1
bmN0aW9uUHRyKShOUE9iamVjdCAqbnBvYmopOwotdHlwZWRlZiB2b2lkICgqTlBJbnZhbGlkYXRl
RnVuY3Rpb25QdHIpKE5QT2JqZWN0ICpucG9iaik7Ci10eXBlZGVmIGJvb2wgKCpOUEhhc01ldGhv
ZEZ1bmN0aW9uUHRyKShOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBuYW1lKTsKLXR5cGVk
ZWYgYm9vbCAoKk5QSW52b2tlRnVuY3Rpb25QdHIpKE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlm
aWVyIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOUFZh
cmlhbnQgKmFyZ3MsIHVpbnQzMl90IGFyZ0NvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTlBWYXJpYW50ICpyZXN1bHQpOwotdHlwZWRlZiBib29sICgqTlBJbnZva2VE
ZWZhdWx0RnVuY3Rpb25QdHIpKE5QT2JqZWN0ICpucG9iaiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOUFZhcmlhbnQgKmFyZ3MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYXJnQ291bnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlBWYXJpYW50ICpyZXN1bHQp
OwotdHlwZWRlZiBib29sICgqTlBIYXNQcm9wZXJ0eUZ1bmN0aW9uUHRyKShOUE9iamVjdCAqbnBv
YmosIE5QSWRlbnRpZmllciBuYW1lKTsKLXR5cGVkZWYgYm9vbCAoKk5QR2V0UHJvcGVydHlGdW5j
dGlvblB0cikoTlBPYmplY3QgKm5wb2JqLCBOUElkZW50aWZpZXIgbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlBWYXJpYW50ICpyZXN1bHQpOwotdHlwZWRl
ZiBib29sICgqTlBTZXRQcm9wZXJ0eUZ1bmN0aW9uUHRyKShOUE9iamVjdCAqbnBvYmosIE5QSWRl
bnRpZmllciBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBOUFZhcmlhbnQgKnZhbHVlKTsKLXR5cGVkZWYgYm9vbCAoKk5QUmVtb3ZlUHJvcGVydHlG
dW5jdGlvblB0cikoTlBPYmplY3QgKm5wb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOUElkZW50aWZpZXIgbmFtZSk7Ci10eXBlZGVmIGJvb2wgKCpOUEVu
dW1lcmF0aW9uRnVuY3Rpb25QdHIpKE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVyICoqdmFs
dWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpj
b3VudCk7Ci10eXBlZGVmIGJvb2wgKCpOUENvbnN0cnVjdEZ1bmN0aW9uUHRyKShOUE9iamVjdCAq
bnBvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOUFZh
cmlhbnQgKmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBhcmdDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5Q
VmFyaWFudCAqcmVzdWx0KTsKLQotLyoKLSAgICBOUE9iamVjdHMgcmV0dXJuZWQgYnkgY3JlYXRl
LCByZXRhaW4sIGludm9rZSwgYW5kIGdldFByb3BlcnR5IHBhc3MKLSAgICBhIHJlZmVyZW5jZSBj
b3VudCB0byB0aGUgY2FsbGVyLiAgVGhhdCBpcywgdGhlIGNhbGxlZSBhZGRzIGEKLSAgICByZWZl
cmVuY2UgY291bnQgd2hpY2ggcGFzc2VzIHRvIHRoZSBjYWxsZXIuICBJdCBpcyB0aGUgY2FsbGVy
J3MKLSAgICByZXNwb25zaWJpbGl0eSB0byByZWxlYXNlIHRoZSByZXR1cm5lZCBvYmplY3QuCi0K
LSAgICBOUEludm9rZUZ1bmN0aW9uUHRyIGZ1bmN0aW9uIG1heSByZXR1cm4gMCB0byBpbmRpY2F0
ZSBhIHZvaWQKLSAgICByZXN1bHQuCi0KLSAgICBOUEludmFsaWRhdGVGdW5jdGlvblB0ciBpcyBj
YWxsZWQgYnkgdGhlIHNjcmlwdGluZyBlbnZpcm9ubWVudAotICAgIHdoZW4gdGhlIG5hdGl2ZSBj
b2RlIGlzIHNodXRkb3duLiAgQW55IGF0dGVtcHQgdG8gbWVzc2FnZSBhCi0gICAgTlBPYmplY3Qg
aW5zdGFuY2UgYWZ0ZXIgdGhlIGludmFsaWRhdGUgY2FsbGJhY2sgaGFzIGJlZW4KLSAgICBjYWxs
ZWQgd2lsbCByZXN1bHQgaW4gdW5kZWZpbmVkIGJlaGF2aW9yLCBldmVuIGlmIHRoZSBuYXRpdmUg
Y29kZQotICAgIGlzIHN0aWxsIHJldGFpbmluZyB0aG9zZSBOUE9iamVjdCBpbnN0YW5jZXMuICAo
VGhlIHJ1bnRpbWUKLSAgICB3aWxsIHR5cGljYWxseSByZXR1cm4gaW1tZWRpYXRlbHksIHdpdGgg
MCBvciBOVUxMLCBmcm9tIGFuIGF0dGVtcHQKLSAgICB0byBkaXNwYXRjaCB0byBhIE5QT2JqZWN0
LCBidXQgdGhpcyBiZWhhdmlvciBzaG91bGQgbm90IGJlCi0gICAgZGVwZW5kZWQgdXBvbi4pCi0K
LSAgICBUaGUgTlBFbnVtZXJhdGlvbkZ1bmN0aW9uUHRyIGZ1bmN0aW9uIG1heSBwYXNzIGFuIGFy
cmF5IG9mCi0gICAgTlBJZGVudGlmaWVycyBiYWNrIHRvIHRoZSBjYWxsZXIuIFRoZSBjYWxsZWUg
YWxsb2NzIHRoZSBtZW1vcnkgb2YKLSAgICB0aGUgYXJyYXkgdXNpbmcgTlBOX01lbUFsbG9jKCks
IGFuZCBpdCdzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eQotICAgIHRvIHJlbGVhc2UgaXQg
dXNpbmcgTlBOX01lbUZyZWUoKS4KLSovCi1zdHJ1Y3QgTlBDbGFzcwotewotICAgIHVpbnQzMl90
IHN0cnVjdFZlcnNpb247Ci0gICAgTlBBbGxvY2F0ZUZ1bmN0aW9uUHRyIGFsbG9jYXRlOwotICAg
IE5QRGVhbGxvY2F0ZUZ1bmN0aW9uUHRyIGRlYWxsb2NhdGU7Ci0gICAgTlBJbnZhbGlkYXRlRnVu
Y3Rpb25QdHIgaW52YWxpZGF0ZTsKLSAgICBOUEhhc01ldGhvZEZ1bmN0aW9uUHRyIGhhc01ldGhv
ZDsKLSAgICBOUEludm9rZUZ1bmN0aW9uUHRyIGludm9rZTsKLSAgICBOUEludm9rZURlZmF1bHRG
dW5jdGlvblB0ciBpbnZva2VEZWZhdWx0OwotICAgIE5QSGFzUHJvcGVydHlGdW5jdGlvblB0ciBo
YXNQcm9wZXJ0eTsKLSAgICBOUEdldFByb3BlcnR5RnVuY3Rpb25QdHIgZ2V0UHJvcGVydHk7Ci0g
ICAgTlBTZXRQcm9wZXJ0eUZ1bmN0aW9uUHRyIHNldFByb3BlcnR5OwotICAgIE5QUmVtb3ZlUHJv
cGVydHlGdW5jdGlvblB0ciByZW1vdmVQcm9wZXJ0eTsKLSAgICBOUEVudW1lcmF0aW9uRnVuY3Rp
b25QdHIgZW51bWVyYXRlOwotICAgIE5QQ29uc3RydWN0RnVuY3Rpb25QdHIgY29uc3RydWN0Owot
fTsKLQotI2RlZmluZSBOUF9DTEFTU19TVFJVQ1RfVkVSU0lPTiAgICAgIDMKLQotI2RlZmluZSBO
UF9DTEFTU19TVFJVQ1RfVkVSU0lPTl9FTlVNIDIKLSNkZWZpbmUgTlBfQ0xBU1NfU1RSVUNUX1ZF
UlNJT05fQ1RPUiAzCi0KLSNkZWZpbmUgTlBfQ0xBU1NfU1RSVUNUX1ZFUlNJT05fSEFTX0VOVU0o
bnBjbGFzcykgICBcCi0gICAgICAgICgobnBjbGFzcyktPnN0cnVjdFZlcnNpb24gPj0gTlBfQ0xB
U1NfU1RSVUNUX1ZFUlNJT05fRU5VTSkKLQotI2RlZmluZSBOUF9DTEFTU19TVFJVQ1RfVkVSU0lP
Tl9IQVNfQ1RPUihucGNsYXNzKSAgIFwKLSAgICAgICAgKChucGNsYXNzKS0+c3RydWN0VmVyc2lv
biA+PSBOUF9DTEFTU19TVFJVQ1RfVkVSU0lPTl9DVE9SKQotCi1zdHJ1Y3QgTlBPYmplY3Qgewot
ICAgIE5QQ2xhc3MgKl9jbGFzczsKLSAgICB1aW50MzJfdCByZWZlcmVuY2VDb3VudDsKLSAgICAv
KgotICAgICAqIEFkZGl0aW9uYWwgc3BhY2UgbWF5IGJlIGFsbG9jYXRlZCBoZXJlIGJ5IHR5cGVz
IG9mIE5QT2JqZWN0cwotICAgICAqLwotfTsKLQotLyoKLSAgICBJZiB0aGUgY2xhc3MgaGFzIGFu
IGFsbG9jYXRlIGZ1bmN0aW9uLCBOUE5fQ3JlYXRlT2JqZWN0IGludm9rZXMKLSAgICB0aGF0IGZ1
bmN0aW9uLCBvdGhlcndpc2UgYSBOUE9iamVjdCBpcyBhbGxvY2F0ZWQgYW5kCi0gICAgcmV0dXJu
ZWQuIFRoaXMgbWV0aG9kIHdpbGwgaW5pdGlhbGl6ZSB0aGUgcmVmZXJlbmNlQ291bnQgbWVtYmVy
IG9mCi0gICAgdGhlIE5QT2JqZWN0IHRvIDEuCi0qLwotTlBPYmplY3QgKk5QTl9DcmVhdGVPYmpl
Y3QoTlBQIG5wcCwgTlBDbGFzcyAqYUNsYXNzKTsKLQotLyoKLSAgICBJbmNyZW1lbnQgdGhlIE5Q
T2JqZWN0J3MgcmVmZXJlbmNlIGNvdW50LgotKi8KLU5QT2JqZWN0ICpOUE5fUmV0YWluT2JqZWN0
KE5QT2JqZWN0ICpucG9iaik7Ci0KLS8qCi0gICAgRGVjcmVtZW50ZWQgdGhlIE5QT2JqZWN0J3Mg
cmVmZXJlbmNlIGNvdW50LiAgSWYgdGhlIHJlZmVyZW5jZQotICAgIGNvdW50IGdvZXMgdG8gemVy
bywgdGhlIGNsYXNzJ3MgZGVzdHJveSBmdW5jdGlvbiBpcyBpbnZva2UgaWYKLSAgICBzcGVjaWZp
ZWQsIG90aGVyd2lzZSB0aGUgb2JqZWN0IGlzIGZyZWVkIGRpcmVjdGx5LgotKi8KLXZvaWQgTlBO
X1JlbGVhc2VPYmplY3QoTlBPYmplY3QgKm5wb2JqKTsKLQotLyoKLSAgICBGdW5jdGlvbnMgdG8g
YWNjZXNzIHNjcmlwdCBvYmplY3RzIHJlcHJlc2VudGVkIGJ5IE5QT2JqZWN0LgotCi0gICAgQ2Fs
bHMgdG8gc2NyaXB0IG9iamVjdHMgYXJlIHN5bmNocm9ub3VzLiAgSWYgYSBmdW5jdGlvbiByZXR1
cm5zIGEKLSAgICB2YWx1ZSwgaXQgd2lsbCBiZSBzdXBwbGllZCB2aWEgdGhlIHJlc3VsdCBOUFZh
cmlhbnQKLSAgICBhcmd1bWVudC4gU3VjY2Vzc2Z1bCBjYWxscyB3aWxsIHJldHVybiB0cnVlLCBm
YWxzZSB3aWxsIGJlCi0gICAgcmV0dXJuZWQgaW4gY2FzZSBvZiBhbiBlcnJvci4KLSAgICAKLSAg
ICBDYWxscyBtYWRlIGZyb20gcGx1Z2luIGNvZGUgdG8gc2NyaXB0IG11c3QgYmUgbWFkZSBmcm9t
IHRoZSB0aHJlYWQKLSAgICBvbiB3aGljaCB0aGUgcGx1Z2luIHdhcyBpbml0aWFsaXplZC4KLSov
Ci0KLWJvb2wgTlBOX0ludm9rZShOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmll
ciBtZXRob2ROYW1lLAotICAgICAgICAgICAgICAgIGNvbnN0IE5QVmFyaWFudCAqYXJncywgdWlu
dDMyX3QgYXJnQ291bnQsIE5QVmFyaWFudCAqcmVzdWx0KTsKLWJvb2wgTlBOX0ludm9rZURlZmF1
bHQoTlBQIG5wcCwgTlBPYmplY3QgKm5wb2JqLCBjb25zdCBOUFZhcmlhbnQgKmFyZ3MsCi0gICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFyZ0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCk7
Ci1ib29sIE5QTl9FdmFsdWF0ZShOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QU3RyaW5nICpz
Y3JpcHQsCi0gICAgICAgICAgICAgICAgICBOUFZhcmlhbnQgKnJlc3VsdCk7Ci1ib29sIE5QTl9H
ZXRQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICBOUFZhcmlhbnQgKnJlc3VsdCk7Ci1ib29sIE5Q
Tl9TZXRQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBOUFZhcmlhbnQgKnZhbHVlKTsK
LWJvb2wgTlBOX1JlbW92ZVByb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVu
dGlmaWVyIHByb3BlcnR5TmFtZSk7Ci1ib29sIE5QTl9IYXNQcm9wZXJ0eShOUFAgbnBwLCBOUE9i
amVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpOwotYm9vbCBOUE5fSGFzTWV0
aG9kKE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUpOwot
Ym9vbCBOUE5fRW51bWVyYXRlKE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVy
ICoqaWRlbnRpZmllciwKLSAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqY291bnQpOwotYm9v
bCBOUE5fQ29uc3RydWN0KE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgY29uc3QgTlBWYXJpYW50
ICphcmdzLAotICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFyZ0NvdW50LCBOUFZhcmlhbnQg
KnJlc3VsdCk7Ci0KLS8qCi0gICAgTlBOX1NldEV4Y2VwdGlvbiBtYXkgYmUgY2FsbGVkIHRvIHRy
aWdnZXIgYSBzY3JpcHQgZXhjZXB0aW9uIHVwb24KLSAgICByZXR1cm4gZnJvbSBlbnRyeSBwb2lu
dHMgaW50byBOUE9iamVjdHMuICBUeXBpY2FsIHVzYWdlOgotCi0gICAgTlBOX1NldEV4Y2VwdGlv
biAobnBvYmosIG1lc3NhZ2UpOwotKi8KLXZvaWQgTlBOX1NldEV4Y2VwdGlvbihOUE9iamVjdCAq
bnBvYmosIGNvbnN0IE5QVVRGOCAqbWVzc2FnZSk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQot
I2VuZGlmCi0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL25wdHlwZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvbnB0eXBlcy5oCShyZXZpc2lvbiA5
NDU4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ucHR5cGVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTIxICswLDAgQEAKLS8qIC0qLSBNb2RlOiBDOyB0YWItd2lkdGg6IDI7IGluZGVudC10
YWJzLW1vZGU6IG5pbDsgYy1iYXNpYy1vZmZzZXQ6IDIgLSotICovCi0vKiAqKioqKiBCRUdJTiBM
SUNFTlNFIEJMT0NLICoqKioqCi0gKiBWZXJzaW9uOiBNUEwgMS4xL0dQTCAyLjAvTEdQTCAyLjEK
LSAqCi0gKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBNb3pp
bGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24KLSAqIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aAotICogdGhlIExp
Y2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICogaHR0cDov
L3d3dy5tb3ppbGxhLm9yZy9NUEwvCi0gKgotICogU29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywKLSAqIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0
aGUgTGljZW5zZQotICogZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcmlnaHRz
IGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUKLSAqIExpY2Vuc2UuCi0gKgotICogVGhlIE9yaWdp
bmFsIENvZGUgaXMgbW96aWxsYS5vcmcgY29kZS4KLSAqCi0gKiBUaGUgSW5pdGlhbCBEZXZlbG9w
ZXIgb2YgdGhlIE9yaWdpbmFsIENvZGUgaXMKLSAqIG1vemlsbGEub3JnLgotICogUG9ydGlvbnMg
Y3JlYXRlZCBieSB0aGUgSW5pdGlhbCBEZXZlbG9wZXIgYXJlIENvcHlyaWdodCAoQykgMjAwNAot
ICogdGhlIEluaXRpYWwgRGV2ZWxvcGVyLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIENv
bnRyaWJ1dG9yKHMpOgotICogICBKb2hubnkgU3RlbmJhY2sgPGpzdEBtb3ppbGxhLm9yZz4gKE9y
aWdpbmFsIGF1dGhvcikKLSAqCi0gKiBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhp
cyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZgotICogZWl0aGVyIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIgb3IgbGF0ZXIgKHRoZSAiR1BMIiksIG9y
Ci0gKiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4xIG9y
IGxhdGVyICh0aGUgIkxHUEwiKSwKLSAqIGluIHdoaWNoIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2Yg
dGhlIEdQTCBvciB0aGUgTEdQTCBhcmUgYXBwbGljYWJsZSBpbnN0ZWFkCi0gKiBvZiB0aG9zZSBh
Ym92ZS4gSWYgeW91IHdpc2ggdG8gYWxsb3cgdXNlIG9mIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZp
bGUgb25seQotICogdW5kZXIgdGhlIHRlcm1zIG9mIGVpdGhlciB0aGUgR1BMIG9yIHRoZSBMR1BM
LCBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0bwotICogdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlz
IGZpbGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBNUEwsIGluZGljYXRlIHlvdXIKLSAqIGRlY2lz
aW9uIGJ5IGRlbGV0aW5nIHRoZSBwcm92aXNpb25zIGFib3ZlIGFuZCByZXBsYWNlIHRoZW0gd2l0
aCB0aGUgbm90aWNlCi0gKiBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BM
IG9yIHRoZSBMR1BMLiBJZiB5b3UgZG8gbm90IGRlbGV0ZQotICogdGhlIHByb3Zpc2lvbnMgYWJv
dmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlcgot
ICogdGhlIHRlcm1zIG9mIGFueSBvbmUgb2YgdGhlIE1QTCwgdGhlIEdQTCBvciB0aGUgTEdQTC4K
LSAqCi0gKiAqKioqKiBFTkQgTElDRU5TRSBCTE9DSyAqKioqKiAqLwotCi0jaWZuZGVmIG5wdHlw
ZXNfaF8KLSNkZWZpbmUgbnB0eXBlc19oXwotCi0vKgotICogSGVhZGVyIGZpbGUgZm9yIGVuc3Vy
aW5nIHRoYXQgQzk5IHR5cGVzIChbdV1pbnQzMl90LCBbdV1pbnQ2NF90IGFuZCBib29sKSBhbmQK
LSAqIHRydWUvZmFsc2UgbWFjcm9zIGFyZSBhdmFpbGFibGUuCi0gKi8KLQotI2lmIGRlZmluZWQo
V0lOMzIpIHx8IGRlZmluZWQoT1MyKQotICAvKgotICAgKiBXaW4zMiBhbmQgT1MvMiBkb24ndCBr
bm93IEM5OSwgc28gZGVmaW5lIFt1XWludF8xNi8zMi82NCBoZXJlLiBUaGUgYm9vbAotICAgKiBp
cyBwcmVkZWZpbmVkIHRobywgYm90aCBpbiBDIGFuZCBDKysuCi0gICAqLwotICB0eXBlZGVmIHNo
b3J0IGludDE2X3Q7Ci0gIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWludDE2X3Q7Ci0gIHR5cGVk
ZWYgaW50IGludDMyX3Q7Ci0gIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90OwotICB0eXBl
ZGVmIGxvbmcgbG9uZyBpbnQ2NF90OwotICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1aW50
NjRfdDsKLSNlbGlmIGRlZmluZWQoX0FJWCkgfHwgZGVmaW5lZChfX3N1bikgfHwgZGVmaW5lZChf
X29zZl9fKSB8fCBkZWZpbmVkKElSSVgpIHx8IGRlZmluZWQoSFBVWCkKLSAgLyoKLSAgICogQUlY
IGFuZCBTdW5PUyBzaGlwIGEgaW50dHlwZXMuaCBoZWFkZXIgdGhhdCBkZWZpbmVzIFt1XWludDMy
X3QsCi0gICAqIGJ1dCBub3QgYm9vbCBmb3IgQy4KLSAgICovCi0gICNpbmNsdWRlIDxpbnR0eXBl
cy5oPgotCi0gICNpZm5kZWYgX19jcGx1c3BsdXMKLSAgICB0eXBlZGVmIGludCBib29sOwotICAg
ICNkZWZpbmUgdHJ1ZSAgIDEKLSAgICAjZGVmaW5lIGZhbHNlICAwCi0gICNlbmRpZgotI2VsaWYg
ZGVmaW5lZChic2RpKSB8fCBkZWZpbmVkKEZSRUVCU0QpIHx8IGRlZmluZWQoT1BFTkJTRCkKLSAg
LyoKLSAgICogQlNEL09TLCBGcmVlQlNELCBhbmQgT3BlbkJTRCBzaGlwIHN5cy90eXBlcy5oIHRo
YXQgZGVmaW5lIGludDMyX3QgYW5kIAotICAgKiB1X2ludDMyX3QuCi0gICAqLwotICAjaW5jbHVk
ZSA8c3lzL3R5cGVzLmg+Ci0KLSAgLyoKLSAgICogQlNEL09TIHNoaXBzIG5vIGhlYWRlciB0aGF0
IGRlZmluZXMgdWludDMyX3QsIG5vciBib29sIChmb3IgQykKLSAgICovCi0gICNpZiBkZWZpbmVk
KGJzZGkpCi0gIHR5cGVkZWYgdV9pbnQzMl90IHVpbnQzMl90OwotICB0eXBlZGVmIHVfaW50NjRf
dCB1aW50NjRfdDsKLQotICAjaWYgIWRlZmluZWQoX19jcGx1c3BsdXMpCi0gICAgdHlwZWRlZiBp
bnQgYm9vbDsKLSAgICAjZGVmaW5lIHRydWUgICAxCi0gICAgI2RlZmluZSBmYWxzZSAgMAotICAj
ZW5kaWYKLSAgI2Vsc2UKLSAgLyoKLSAgICogRnJlZUJTRCBhbmQgT3BlbkJTRCBkZWZpbmUgdWlu
dDMyX3QgYW5kIGJvb2wuCi0gICAqLwotICAgICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICAgICNp
bmNsdWRlIDxzdGRib29sLmg+Ci0gICNlbmRpZgotI2VsaWYgZGVmaW5lZChCRU9TKQotICAjaW5j
bHVkZSA8aW50dHlwZXMuaD4KLSNlbHNlCi0gIC8qCi0gICAqIEZvciB0aG9zZSB0aGF0IHNoaXAg
YSBzdGFuZGFyZCBDOTkgc3RkaW50LmggaGVhZGVyIGZpbGUsIGluY2x1ZGUKLSAgICogaXQuIENh
bid0IGRvIHRoZSBzYW1lIGZvciBzdGRib29sLmggdGhvLCBzaW5jZSBzb21lIHN5c3RlbXMgc2hp
cAotICAgKiB3aXRoIGEgc3RkYm9vbC5oIGZpbGUgdGhhdCBkb2Vzbid0IGNvbXBpbGUhCi0gICAq
LwotICAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0KLSAgI2lmbmRlZiBfX2NwbHVzcGx1cwotICAgICNp
ZiAhZGVmaW5lZChfX0dOVUNfXykgfHwgKF9fR05VQ19fID4gMiB8fCBfX0dOVUNfTUlOT1JfXyA+
IDk1KQotICAgICAgI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSAgICAjZWxzZQotICAgICAgLyoKLSAg
ICAgICAqIEdDQyAyLjkxIGNhbid0IGRlYWwgd2l0aCBhIHR5cGVkZWYgZm9yIGJvb2wsIGJ1dCBh
ICNkZWZpbmUKLSAgICAgICAqIHdvcmtzLgotICAgICAgICovCi0gICAgICAjZGVmaW5lIGJvb2wg
aW50Ci0gICAgICAjZGVmaW5lIHRydWUgICAxCi0gICAgICAjZGVmaW5lIGZhbHNlICAwCi0gICAg
I2VuZGlmCi0gICNlbmRpZgotI2VuZGlmCi0KLSNlbmRpZiAvKiBucHR5cGVzX2hfICovCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL25wYXBpLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9ucGFwaS5oCShyZXZpc2lvbiA5NDU4MykJKGZyb20gU291cmNlL1dlYkNv
cmUvYnJpZGdlL25wYXBpLmg6OTQ1ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL25wYXBp
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MDUgQEAKKy8qIC0qLSBNb2RlOiBDOyB0YWIt
d2lkdGg6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgYy1iYXNpYy1vZmZzZXQ6IDIgLSotICov
CisvKiAqKioqKiBCRUdJTiBMSUNFTlNFIEJMT0NLICoqKioqCisgKiBWZXJzaW9uOiBNUEwgMS4x
L0dQTCAyLjAvTEdQTCAyLjEKKyAqCisgKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBz
dWJqZWN0IHRvIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24KKyAqIDEuMSAodGhl
ICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aAorICogdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorICogaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvCisgKgorICogU29mdHdhcmUg
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBiYXNpcywKKyAqIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZQorICogZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcmlnaHRzIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUKKyAqIExpY2Vuc2Uu
CisgKgorICogVGhlIE9yaWdpbmFsIENvZGUgaXMgbW96aWxsYS5vcmcgY29kZS4KKyAqCisgKiBU
aGUgSW5pdGlhbCBEZXZlbG9wZXIgb2YgdGhlIE9yaWdpbmFsIENvZGUgaXMKKyAqIE5ldHNjYXBl
IENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uLgorICogUG9ydGlvbnMgY3JlYXRlZCBieSB0aGUg
SW5pdGlhbCBEZXZlbG9wZXIgYXJlIENvcHlyaWdodCAoQykgMTk5OAorICogdGhlIEluaXRpYWwg
RGV2ZWxvcGVyLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIENvbnRyaWJ1dG9yKHMpOgor
ICoKKyAqIEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5IGJlIHVz
ZWQgdW5kZXIgdGhlIHRlcm1zIG9mCisgKiBlaXRoZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIFZlcnNpb24gMiBvciBsYXRlciAodGhlICJHUEwiKSwgb3IKKyAqIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjEgb3IgbGF0ZXIgKHRoZSAiTEdQ
TCIpLAorICogaW4gd2hpY2ggY2FzZSB0aGUgcHJvdmlzaW9ucyBvZiB0aGUgR1BMIG9yIHRoZSBM
R1BMIGFyZSBhcHBsaWNhYmxlIGluc3RlYWQKKyAqIG9mIHRob3NlIGFib3ZlLiBJZiB5b3Ugd2lz
aCB0byBhbGxvdyB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBvbmx5CisgKiB1bmRl
ciB0aGUgdGVybXMgb2YgZWl0aGVyIHRoZSBHUEwgb3IgdGhlIExHUEwsIGFuZCBub3QgdG8gYWxs
b3cgb3RoZXJzIHRvCisgKiB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIE1QTCwgaW5kaWNhdGUgeW91cgorICogZGVjaXNpb24gYnkgZGVsZXRpbmcg
dGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UKKyAq
IGFuZCBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBHUEwgb3IgdGhlIExHUEwuIElm
IHlvdSBkbyBub3QgZGVsZXRlCisgKiB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQg
bWF5IHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyCisgKiB0aGUgdGVybXMgb2Yg
YW55IG9uZSBvZiB0aGUgTVBMLCB0aGUgR1BMIG9yIHRoZSBMR1BMLgorICoKKyAqICoqKioqIEVO
RCBMSUNFTlNFIEJMT0NLICoqKioqICovCisKKyNpZm5kZWYgbnBhcGlfaF8KKyNkZWZpbmUgbnBh
cGlfaF8KKworI2lmIGRlZmluZWQoX19PUzJfXykKKyNwcmFnbWEgcGFjaygxKQorI2VuZGlmCisK
KyNpbmNsdWRlICJucHR5cGVzLmgiCisKKyNpZiBkZWZpbmVkKF9fT1MyX18pIHx8IGRlZmluZWQo
T1MyKQorI2lmbmRlZiBYUF9PUzIKKyNkZWZpbmUgWFBfT1MyIDEKKyNlbmRpZgorI2VuZGlmCisK
KyNpZmRlZiBJTkNMVURFX0pBVkEKKyNpbmNsdWRlICJqcmkuaCIgICAgICAgICAgICAgICAgLyog
SmF2YSBSdW50aW1lIEludGVyZmFjZSAqLworI2Vsc2UKKyNkZWZpbmUganJlZiAgICB2b2lkICoK
KyNkZWZpbmUgSlJJRW52ICB2b2lkCisjZW5kaWYKKworI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAh
ZGVmaW5lZChfX1NZTUJJQU4zMl9fKQorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpZm5kZWYgWFBf
V0lOCisjZGVmaW5lIFhQX1dJTiAxCisjZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX1NZ
TUJJQU4zMl9fKQorI2lmbmRlZiBYUF9TWU1CSUFOCisjZGVmaW5lIFhQX1NZTUJJQU4gMQorI2Vu
ZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19BUFBMRV9DQ19fKSAmJiAhZGVmaW5lZChYUF9V
TklYKQorI2lmbmRlZiBYUF9NQUNPU1gKKyNkZWZpbmUgWFBfTUFDT1NYIDEKKyNlbmRpZgorI2Vu
ZGlmCisKKyNpZiBkZWZpbmVkKFhQX01BQ09TWCkgJiYgZGVmaW5lZChfX0xQNjRfXykKKyNkZWZp
bmUgTlBfTk9fUVVJQ0tEUkFXCisjZGVmaW5lIE5QX05PX0NBUkJPTgorI2VuZGlmCisKKyNpZiBk
ZWZpbmVkKFhQX01BQ09TWCkKKyNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0
aW9uU2VydmljZXMuaD4KKyNpbmNsdWRlIDxPcGVuR0wvT3BlbkdMLmg+CisjaWZuZGVmIE5QX05P
X0NBUkJPTgorI2luY2x1ZGUgPENhcmJvbi9DYXJib24uaD4KKyNlbmRpZgorI2VuZGlmCisKKyNp
ZiBkZWZpbmVkKFhQX1VOSVgpCisjaW5jbHVkZSA8WDExL1hsaWIuaD4KKyNpbmNsdWRlIDxYMTEv
WHV0aWwuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFhQX1NZ
TUJJQU4pCisjaW5jbHVkZSA8UUV2ZW50PgorI2luY2x1ZGUgPFFSZWdpb24+CisjZW5kaWYKKwor
LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgUGx1Z2luIFZlcnNp
b24gQ29uc3RhbnRzICAgICAgICAgICAgICAgICAgICAgICovCisvKi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwor
CisjZGVmaW5lIE5QX1ZFUlNJT05fTUFKT1IgMAorI2RlZmluZSBOUF9WRVJTSU9OX01JTk9SIDI0
CisKKworLyogVGhlIE9TLzIgdmVyc2lvbiBvZiBOZXRzY2FwZSB1c2VzIFJDX0RBVEEgdG8gZGVm
aW5lIHRoZQorICAgbWltZSB0eXBlcywgZmlsZSBleHRlbnNpb25zLCBldGMgdGhhdCBhcmUgcmVx
dWlyZWQuCisgICBVc2UgYSB2ZXJ0aWNhbCBiYXIgdG8gc2VwYXJhdGUgdHlwZXMsIGVuZCB0eXBl
cyB3aXRoIFwwLgorICAgRmlsZVZlcnNpb24gYW5kIFByb2R1Y3RWZXJzaW9uIGFyZSAzMmJpdCBp
bnRzLCBhbGwgb3RoZXIKKyAgIGVudHJpZXMgYXJlIHN0cmluZ3MgdGhhdCBNVVNUIGJlIHRlcm1p
bmF0ZWQgd2l0aCBhIFwwLgorCitBTiBFWEFNUExFOgorCitSQ0RBVEEgTlBfSU5GT19Qcm9kdWN0
VmVyc2lvbiB7IDEsMCwwLDEsfQorCitSQ0RBVEEgTlBfSU5GT19NSU1FVHlwZSAgICB7ICJ2aWRl
by94LXZpZGVvfCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2aWRlby94LWZsaWNr
XDAiIH0KK1JDREFUQSBOUF9JTkZPX0ZpbGVFeHRlbnRzIHsgImF2aXwiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZmxjXDAiIH0KK1JDREFUQSBOUF9JTkZPX0ZpbGVPcGVuTmFtZXsg
Ik1NT1MyIHZpZGVvIHBsYXllcigqLmF2aSl8IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk1NT1MyIEZsYy9GbGkgcGxheWVyKCouZmxjKVwwIiB9CisKK1JDREFUQSBOUF9JTkZPX0Zp
bGVWZXJzaW9uICAgICAgIHsgMSwwLDAsMSB9CitSQ0RBVEEgTlBfSU5GT19Db21wYW55TmFtZSAg
ICAgICB7ICJOZXRzY2FwZSBDb21tdW5pY2F0aW9uc1wwIiB9CitSQ0RBVEEgTlBfSU5GT19GaWxl
RGVzY3JpcHRpb24gICB7ICJOUEFWSTMyIEV4dGVuc2lvbiBETExcMCIKK1JDREFUQSBOUF9JTkZP
X0ludGVybmFsTmFtZSAgICAgIHsgIk5QQVZJMzJcMCIgKQorUkNEQVRBIE5QX0lORk9fTGVnYWxD
b3B5cmlnaHQgICAgeyAiQ29weXJpZ2h0IE5ldHNjYXBlIENvbW11bmljYXRpb25zIFwyNTEgMTk5
NlwwIgorUkNEQVRBIE5QX0lORk9fT3JpZ2luYWxGaWxlbmFtZSAgeyAiTlZBUEkzMi5ETEwiIH0K
K1JDREFUQSBOUF9JTkZPX1Byb2R1Y3ROYW1lICAgICAgIHsgIk5QQVZJMzIgRHluYW1pYyBMaW5r
IExpYnJhcnlcMCIgfQorKi8KKy8qIFJDX0RBVEEgdHlwZXMgZm9yIHZlcnNpb24gaW5mbyAtIHJl
cXVpcmVkICovCisjZGVmaW5lIE5QX0lORk9fUHJvZHVjdFZlcnNpb24gICAgICAxCisjZGVmaW5l
IE5QX0lORk9fTUlNRVR5cGUgICAgICAgICAgICAyCisjZGVmaW5lIE5QX0lORk9fRmlsZU9wZW5O
YW1lICAgICAgICAzCisjZGVmaW5lIE5QX0lORk9fRmlsZUV4dGVudHMgICAgICAgICA0CisvKiBS
Q19EQVRBIHR5cGVzIGZvciB2ZXJzaW9uIGluZm8gLSB1c2VkIGlmIGZvdW5kICovCisjZGVmaW5l
IE5QX0lORk9fRmlsZURlc2NyaXB0aW9uICAgICA1CisjZGVmaW5lIE5QX0lORk9fUHJvZHVjdE5h
bWUgICAgICAgICA2CisvKiBSQ19EQVRBIHR5cGVzIGZvciB2ZXJzaW9uIGluZm8gLSBvcHRpb25h
bCAqLworI2RlZmluZSBOUF9JTkZPX0NvbXBhbnlOYW1lICAgICAgICAgNworI2RlZmluZSBOUF9J
TkZPX0ZpbGVWZXJzaW9uICAgICAgICAgOAorI2RlZmluZSBOUF9JTkZPX0ludGVybmFsTmFtZSAg
ICAgICAgOQorI2RlZmluZSBOUF9JTkZPX0xlZ2FsQ29weXJpZ2h0ICAgICAgMTAKKyNkZWZpbmUg
TlBfSU5GT19PcmlnaW5hbEZpbGVuYW1lICAgIDExCisKKyNpZm5kZWYgUkNfSU5WT0tFRAorCisv
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLworLyogICAgICAgICAgICAgICAgICAgICAgIERlZmluaXRpb24gb2Yg
QmFzaWMgVHlwZXMgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisK
KyNpZm5kZWYgRkFMU0UKKyNkZWZpbmUgRkFMU0UgKDApCisjZW5kaWYKKyNpZm5kZWYgVFJVRQor
I2RlZmluZSBUUlVFICgxKQorI2VuZGlmCisjaWZuZGVmIE5VTEwKKyNkZWZpbmUgTlVMTCAoMEwp
CisjZW5kaWYKKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIE5QQm9vbDsKK3R5cGVkZWYgaW50MTZf
dCAgICAgICBOUEVycm9yOwordHlwZWRlZiBpbnQxNl90ICAgICAgIE5QUmVhc29uOwordHlwZWRl
ZiBjaGFyKiAgICAgICAgIE5QTUlNRVR5cGU7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiAgICAg
ICAgICAgICAgICAgICAgICAgU3RydWN0dXJlcyBhbmQgZGVmaW5pdGlvbnMgICAgICAgICAgICAg
ICAgICAgICAqLworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworI2lmICFkZWZpbmVkKF9fTFA2NF9fKQor
I2lmIGRlZmluZWQoWFBfTUFDT1NYKQorI3ByYWdtYSBvcHRpb25zIGFsaWduPW1hYzY4aworI2Vu
ZGlmCisjZW5kaWYgLyogX19MUDY0X18gKi8KKworLyoKKyAqICBOUFAgaXMgYSBwbHVnLWluJ3Mg
b3BhcXVlIGluc3RhbmNlIGhhbmRsZQorICovCit0eXBlZGVmIHN0cnVjdCBfTlBQCit7CisgIHZv
aWQqIHBkYXRhOyAgICAgIC8qIHBsdWctaW4gcHJpdmF0ZSBkYXRhICovCisgIHZvaWQqIG5kYXRh
OyAgICAgIC8qIG5ldHNjYXBlIHByaXZhdGUgZGF0YSAqLworfSBOUFBfdDsKKwordHlwZWRlZiBO
UFBfdCogIE5QUDsKKwordHlwZWRlZiBzdHJ1Y3QgX05QU3RyZWFtCit7CisgIHZvaWQqICAgIHBk
YXRhOyAvKiBwbHVnLWluIHByaXZhdGUgZGF0YSAqLworICB2b2lkKiAgICBuZGF0YTsgLyogbmV0
c2NhcGUgcHJpdmF0ZSBkYXRhICovCisgIGNvbnN0ICAgIGNoYXIqIHVybDsKKyAgdWludDMyX3Qg
ZW5kOworICB1aW50MzJfdCBsYXN0bW9kaWZpZWQ7CisgIHZvaWQqICAgIG5vdGlmeURhdGE7Cisg
IGNvbnN0ICAgIGNoYXIqIGhlYWRlcnM7IC8qIFJlc3BvbnNlIGhlYWRlcnMgZnJvbSBob3N0Lgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBFeGlzdHMgb25seSBmb3IgPj0gTlBWRVJTX0hB
U19SRVNQT05TRV9IRUFERVJTLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBVc2VkIGZv
ciBIVFRQIG9ubHk7IE5VTEwgZm9yIG5vbi1IVFRQLgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKiBBdmFpbGFibGUgZnJvbSBOUFBfTmV3U3RyZWFtIG9ud2FyZHMuCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqIFBsdWdpbiBzaG91bGQgY29weSB0aGlzIGRhdGEgYmVmb3JlIHN0b3Jp
bmcgaXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluY2x1ZGVzIEhUVFAgc3RhdHVz
IGxpbmUgYW5kIGFsbCBoZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBwcmVm
ZXJhYmx5IHZlcmJhdGltIGFzIHJlY2VpdmVkIGZyb20gc2VydmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKiBoZWFkZXJzIGZvcm1hdHRlZCBhcyBpbiBIVFRQICgiSGVhZGVyOiBWYWx1
ZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBhbmQgbmV3bGluZXMgKFxuLCBOT1Qg
XHJcbikgc2VwYXJhdGluZyBsaW5lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICogVGVy
bWluYXRlZCBieSBcblwwIChOT1QgXG5cblwwKS4gKi8KK30gTlBTdHJlYW07CisKK3R5cGVkZWYg
c3RydWN0IF9OUEJ5dGVSYW5nZQoreworICBpbnQzMl90ICBvZmZzZXQ7IC8qIG5lZ2F0aXZlIG9m
ZnNldCBtZWFucyBmcm9tIHRoZSBlbmQgKi8KKyAgdWludDMyX3QgbGVuZ3RoOworICBzdHJ1Y3Qg
X05QQnl0ZVJhbmdlKiBuZXh0OworfSBOUEJ5dGVSYW5nZTsKKwordHlwZWRlZiBzdHJ1Y3QgX05Q
U2F2ZWREYXRhCit7CisgIGludDMyX3QgbGVuOworICB2b2lkKiAgIGJ1ZjsKK30gTlBTYXZlZERh
dGE7CisKK3R5cGVkZWYgc3RydWN0IF9OUFJlY3QKK3sKKyAgdWludDE2X3QgdG9wOworICB1aW50
MTZfdCBsZWZ0OworICB1aW50MTZfdCBib3R0b207CisgIHVpbnQxNl90IHJpZ2h0OworfSBOUFJl
Y3Q7CisKK3R5cGVkZWYgc3RydWN0IF9OUFNpemUKK3sKKyAgaW50MzJfdCB3aWR0aDsKKyAgaW50
MzJfdCBoZWlnaHQ7Cit9IE5QU2l6ZTsKKwordHlwZWRlZiBlbnVtIHsKKyAgTlBGb2N1c05leHQg
PSAwLAorICBOUEZvY3VzUHJldmlvdXMgPSAxCit9IE5QRm9jdXNEaXJlY3Rpb247CisKKy8qIFJl
dHVybiB2YWx1ZXMgZm9yIE5QUF9IYW5kbGVFdmVudCAqLworI2RlZmluZSBrTlBFdmVudE5vdEhh
bmRsZWQgMAorI2RlZmluZSBrTlBFdmVudEhhbmRsZWQgMQorLyogRXhhY3QgbWVhbmluZyBtdXN0
IGJlIHNwZWMnZCBpbiBldmVudCBtb2RlbC4gKi8KKyNkZWZpbmUga05QRXZlbnRTdGFydElNRSAy
CisKKyNpZiBkZWZpbmVkKFhQX1VOSVgpCisvKgorICogVW5peCBzcGVjaWZpYyBzdHJ1Y3R1cmVz
IGFuZCBkZWZpbml0aW9ucworICovCisKKy8qCisgKiBDYWxsYmFjayBTdHJ1Y3R1cmVzLgorICoK
KyAqIFRoZXNlIGFyZSB1c2VkIHRvIHBhc3MgYWRkaXRpb25hbCBwbGF0Zm9ybSBzcGVjaWZpYyBp
bmZvcm1hdGlvbi4KKyAqLworZW51bSB7CisgIE5QX1NFVFdJTkRPVyA9IDEsCisgIE5QX1BSSU5U
Cit9OworCit0eXBlZGVmIHN0cnVjdAoreworICBpbnQzMl90IHR5cGU7Cit9IE5QQW55Q2FsbGJh
Y2tTdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIGludDMyX3QgICAgICB0eXBlOworICBE
aXNwbGF5KiAgICAgZGlzcGxheTsKKyAgVmlzdWFsKiAgICAgIHZpc3VhbDsKKyAgQ29sb3JtYXAg
ICAgIGNvbG9ybWFwOworICB1bnNpZ25lZCBpbnQgZGVwdGg7Cit9IE5QU2V0V2luZG93Q2FsbGJh
Y2tTdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIGludDMyX3QgdHlwZTsKKyAgRklMRSog
ZnA7Cit9IE5QUHJpbnRDYWxsYmFja1N0cnVjdDsKKworI2VuZGlmIC8qIFhQX1VOSVggKi8KKwor
I2lmIGRlZmluZWQoWFBfTUFDT1NYKQordHlwZWRlZiBlbnVtIHsKKyNpZm5kZWYgTlBfTk9fUVVJ
Q0tEUkFXCisgIE5QRHJhd2luZ01vZGVsUXVpY2tEcmF3ID0gMCwKKyNlbmRpZgorICBOUERyYXdp
bmdNb2RlbENvcmVHcmFwaGljcyA9IDEsCisgIE5QRHJhd2luZ01vZGVsT3BlbkdMID0gMiwKKyAg
TlBEcmF3aW5nTW9kZWxDb3JlQW5pbWF0aW9uID0gMworfSBOUERyYXdpbmdNb2RlbDsKKwordHlw
ZWRlZiBlbnVtIHsKKyNpZm5kZWYgTlBfTk9fQ0FSQk9OCisgIE5QRXZlbnRNb2RlbENhcmJvbiA9
IDAsCisjZW5kaWYKKyAgTlBFdmVudE1vZGVsQ29jb2EgPSAxCit9IE5QRXZlbnRNb2RlbDsKKyNl
bmRpZgorCisvKgorICogICBUaGUgZm9sbG93aW5nIG1hc2tzIGFyZSBhcHBsaWVkIG9uIGNlcnRh
aW4gcGxhdGZvcm1zIHRvIE5QTlYgYW5kCisgKiAgIE5QUFYgc2VsZWN0b3JzIHRoYXQgcGFzcyBh
cm91bmQgcG9pbnRlcnMgdG8gQ09NIGludGVyZmFjZXMuIE5ld2VyCisgKiAgIGNvbXBpbGVycyBv
biBzb21lIHBsYXRmb3JtcyBtYXkgZ2VuZXJhdGUgdnRhYmxlcyB0aGF0IGFyZSBub3QKKyAqICAg
Y29tcGF0aWJsZSB3aXRoIG9sZGVyIGNvbXBpbGVycy4gVG8gcHJldmVudCBvbGRlciBwbHVnaW5z
IGZyb20KKyAqICAgbm90IHVuZGVyc3RhbmRpbmcgYSBuZXcgYnJvd3NlcidzIEFCSSwgdGhlc2Ug
bWFza3MgY2hhbmdlIHRoZQorICogICB2YWx1ZXMgb2YgdGhvc2Ugc2VsZWN0b3JzIG9uIHRob3Nl
IHBsYXRmb3Jtcy4gVG8gcmVtYWluIGJhY2t3YXJkcworICogICBjb21wYXRpYmxlIHdpdGggZGlm
ZmVyZW50IHZlcnNpb25zIG9mIHRoZSBicm93c2VyLCBwbHVnaW5zIGNhbgorICogICB1c2UgdGhl
c2UgbWFza3MgdG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5lIGFuZCB1c2UgdGhlIGNvcnJlY3QgQysr
CisgKiAgIEFCSSB0aGF0IHRoZSBicm93c2VyIGlzIGV4cGVjdGluZy4gVGhpcyBkb2VzIG5vdCBh
cHBseSB0byBXaW5kb3dzCisgKiAgIGFzIE1pY3Jvc29mdCdzIENPTSBBQkkgd2lsbCBsaWtlbHkg
bm90IGNoYW5nZS4KKyAqLworCisjZGVmaW5lIE5QX0FCSV9HQ0MzX01BU0sgIDB4MTAwMDAwMDAK
Ky8qCisgKiAgIGdjYyAzLnggZ2VuZXJhdGVkIHZ0YWJsZXMgb24gVU5JWCBhbmQgT1NYIGFyZSBp
bmNvbXBhdGlibGUgd2l0aAorICogICBwcmV2aW91cyBjb21waWxlcnMuCisgKi8KKyNpZiAoZGVm
aW5lZChYUF9VTklYKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gMykpCisj
ZGVmaW5lIF9OUF9BQklfTUlYSU5fRk9SX0dDQzMgTlBfQUJJX0dDQzNfTUFTSworI2Vsc2UKKyNk
ZWZpbmUgX05QX0FCSV9NSVhJTl9GT1JfR0NDMyAwCisjZW5kaWYKKworI2lmIGRlZmluZWQoWFBf
TUFDT1NYKQorI2RlZmluZSBOUF9BQklfTUFDSE9fTUFTSyAweDAxMDAwMDAwCisjZGVmaW5lIF9O
UF9BQklfTUlYSU5fRk9SX01BQ0hPIE5QX0FCSV9NQUNIT19NQVNLCisjZWxzZQorI2RlZmluZSBf
TlBfQUJJX01JWElOX0ZPUl9NQUNITyAwCisjZW5kaWYKKworI2RlZmluZSBOUF9BQklfTUFTSyAo
X05QX0FCSV9NSVhJTl9GT1JfR0NDMyB8IF9OUF9BQklfTUlYSU5fRk9SX01BQ0hPKQorCisvKgor
ICogTGlzdCBvZiB2YXJpYWJsZSBuYW1lcyBmb3Igd2hpY2ggTlBQX0dldFZhbHVlIHNoYWxsIGJl
IGltcGxlbWVudGVkCisgKi8KK3R5cGVkZWYgZW51bSB7CisgIE5QUFZwbHVnaW5OYW1lU3RyaW5n
ID0gMSwKKyAgTlBQVnBsdWdpbkRlc2NyaXB0aW9uU3RyaW5nLAorICBOUFBWcGx1Z2luV2luZG93
Qm9vbCwKKyAgTlBQVnBsdWdpblRyYW5zcGFyZW50Qm9vbCwKKyAgTlBQVmphdmFDbGFzcywgICAg
ICAgICAgICAgICAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLworICBOUFBWcGx1Z2lu
V2luZG93U2l6ZSwgICAgICAgICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCisgIE5Q
UFZwbHVnaW5UaW1lckludGVydmFsLCAgICAgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQg
Ki8KKyAgTlBQVnBsdWdpblNjcmlwdGFibGVJbnN0YW5jZSA9ICgxMCB8IE5QX0FCSV9NQVNLKSwg
LyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLworICBOUFBWcGx1Z2luU2NyaXB0YWJsZUlJ
RCA9IDExLCAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCisgIE5QUFZqYXZhc2NyaXB0
UHVzaENhbGxlckJvb2wgPSAxMiwgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KKyAg
TlBQVnBsdWdpbktlZXBMaWJyYXJ5SW5NZW1vcnkgPSAxMywgLyogTm90IGltcGxlbWVudGVkIGlu
IFdlYktpdCAqLworICBOUFBWcGx1Z2luTmVlZHNYRW1iZWQgICAgICAgICA9IDE0LCAvKiBOb3Qg
aW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCisKKyAgLyogR2V0IHRoZSBOUE9iamVjdCBmb3Igc2Ny
aXB0aW5nIHRoZSBwbHVnaW4uIEludHJvZHVjZWQgaW4gTlBBUEkgbWlub3IgdmVyc2lvbiAxNC4K
KyAgICovCisgIE5QUFZwbHVnaW5TY3JpcHRhYmxlTlBPYmplY3QgID0gMTUsCisKKyAgLyogR2V0
IHRoZSBwbHVnaW4gdmFsdWUgKGFzIFwwLXRlcm1pbmF0ZWQgVVRGLTggc3RyaW5nIGRhdGEpIGZv
cgorICAgKiBmb3JtIHN1Ym1pc3Npb24gaWYgdGhlIHBsdWdpbiBpcyBwYXJ0IG9mIGEgZm9ybS4g
VXNlCisgICAqIE5QTl9NZW1BbGxvYygpIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIHN0cmlu
ZyBkYXRhLiBJbnRyb2R1Y2VkCisgICAqIGluIE5QQVBJIG1pbm9yIHZlcnNpb24gMTUuCisgICAq
LworICBOUFBWZm9ybVZhbHVlID0gMTYsICAgIC8qIE5vdCBpbXBsZW1lbnRlZCBpbiBXZWJLaXQg
Ki8KKworICBOUFBWcGx1Z2luVXJsUmVxdWVzdHNEaXNwbGF5ZWRCb29sID0gMTcsIC8qIE5vdCBp
bXBsZW1lbnRlZCBpbiBXZWJLaXQgKi8KKworICAvKiBDaGVja3MgaWYgdGhlIHBsdWdpbiBpcyBp
bnRlcmVzdGVkIGluIHJlY2VpdmluZyB0aGUgaHR0cCBib2R5IG9mCisgICAqIGFsbCBodHRwIHJl
cXVlc3RzIChpbmNsdWRpbmcgZmFpbGVkIG9uZXMsIGh0dHAgc3RhdHVzICE9IDIwMCkuCisgICAq
LworICBOUFBWcGx1Z2luV2FudHNBbGxOZXR3b3JrU3RyZWFtcyA9IDE4LAorCisgIC8qIEJyb3dz
ZXJzIGNhbiByZXRyaWV2ZSBhIG5hdGl2ZSBBVEsgYWNjZXNzaWJpbGl0eSBwbHVnIElEIHZpYSB0
aGlzIHZhcmlhYmxlLiAqLworICBOUFBWcGx1Z2luTmF0aXZlQWNjZXNzaWJsZUF0a1BsdWdJZCA9
IDE5LAorCisgIC8qIENoZWNrcyB0byBzZWUgaWYgdGhlIHBsdWctaW4gd291bGQgbGlrZSB0aGUg
YnJvd3NlciB0byBsb2FkIHRoZSAic3JjIiBhdHRyaWJ1dGUuICovCisgIE5QUFZwbHVnaW5DYW5j
ZWxTcmNTdHJlYW0gPSAyMAorCisjaWYgZGVmaW5lZChYUF9NQUNPU1gpCisgIC8qIFVzZWQgZm9y
IG5lZ290aWF0aW5nIGRyYXdpbmcgbW9kZWxzICovCisgICwgTlBQVnBsdWdpbkRyYXdpbmdNb2Rl
bCA9IDEwMDAKKyAgLyogVXNlZCBmb3IgbmVnb3RpYXRpbmcgZXZlbnQgbW9kZWxzICovCisgICwg
TlBQVnBsdWdpbkV2ZW50TW9kZWwgPSAxMDAxCisgIC8qIEluIHRoZSBOUERyYXdpbmdNb2RlbENv
cmVBbmltYXRpb24gZHJhd2luZyBtb2RlbCwgdGhlIGJyb3dzZXIgYXNrcyB0aGUgcGx1Zy1pbiBm
b3IgYSBDb3JlIEFuaW1hdGlvbiBsYXllci4gKi8KKyAgLCBOUFBWcGx1Z2luQ29yZUFuaW1hdGlv
bkxheWVyID0gMTAwMworI2VuZGlmCisKKyNpZiBkZWZpbmVkKE1PWl9QTEFURk9STV9NQUVNTykg
JiYgKE1PWl9QTEFURk9STV9NQUVNTyA+PSA1KQorICAsIE5QUFZwbHVnaW5XaW5kb3dsZXNzTG9j
YWxCb29sID0gMjAwMgorI2VuZGlmCit9IE5QUFZhcmlhYmxlOworCisvKgorICogTGlzdCBvZiB2
YXJpYWJsZSBuYW1lcyBmb3Igd2hpY2ggTlBOX0dldFZhbHVlIHNob3VsZCBiZSBpbXBsZW1lbnRl
ZC4KKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgTlBOVnhEaXNwbGF5ID0gMSwKKyAgTlBOVnh0QXBw
Q29udGV4dCwKKyAgTlBOVm5ldHNjYXBlV2luZG93LAorICBOUE5WamF2YXNjcmlwdEVuYWJsZWRC
b29sLAorICBOUE5WYXNkRW5hYmxlZEJvb2wsCisgIE5QTlZpc09mZmxpbmVCb29sLAorCisgIE5Q
TlZzZXJ2aWNlTWFuYWdlciA9ICgxMCB8IE5QX0FCSV9NQVNLKSwgIC8qIE5vdCBpbXBsZW1lbnRl
ZCBpbiBXZWJLaXQgKi8KKyAgTlBOVkRPTUVsZW1lbnQgICAgID0gKDExIHwgTlBfQUJJX01BU0sp
LCAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLworICBOUE5WRE9NV2luZG93ICAgICAg
PSAoMTIgfCBOUF9BQklfTUFTSyksICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0ICovCisg
IE5QTlZUb29sa2l0ICAgICAgICA9ICgxMyB8IE5QX0FCSV9NQVNLKSwgIC8qIE5vdCBpbXBsZW1l
bnRlZCBpbiBXZWJLaXQgKi8KKyAgTlBOVlN1cHBvcnRzWEVtYmVkQm9vbCA9IDE0LCAgICAgICAg
ICAgICAgLyogTm90IGltcGxlbWVudGVkIGluIFdlYktpdCAqLworCisgIC8qIEdldCB0aGUgTlBP
YmplY3Qgd3JhcHBlciBmb3IgdGhlIGJyb3dzZXIgd2luZG93LiAqLworICBOUE5WV2luZG93TlBP
YmplY3QgPSAxNSwKKworICAvKiBHZXQgdGhlIE5QT2JqZWN0IHdyYXBwZXIgZm9yIHRoZSBwbHVn
aW5zIERPTSBlbGVtZW50LiAqLworICBOUE5WUGx1Z2luRWxlbWVudE5QT2JqZWN0ID0gMTYsCisK
KyAgTlBOVlN1cHBvcnRzV2luZG93bGVzcyA9IDE3LAorCisgIE5QTlZwcml2YXRlTW9kZUJvb2wg
PSAxOAorCisjaWYgZGVmaW5lZChYUF9NQUNPU1gpCisgIC8qIFVzZWQgZm9yIG5lZ290aWF0aW5n
IGRyYXdpbmcgbW9kZWxzICovCisgICwgTlBOVnBsdWdpbkRyYXdpbmdNb2RlbCA9IDEwMDAKKyNp
Zm5kZWYgTlBfTk9fUVVJQ0tEUkFXCisgICwgTlBOVnN1cHBvcnRzUXVpY2tEcmF3Qm9vbCA9IDIw
MDAKKyNlbmRpZgorICAsIE5QTlZzdXBwb3J0c0NvcmVHcmFwaGljc0Jvb2wgPSAyMDAxCisgICwg
TlBOVnN1cHBvcnRzT3BlbkdMQm9vbCA9IDIwMDIKKyAgLCBOUE5Wc3VwcG9ydHNDb3JlQW5pbWF0
aW9uQm9vbCA9IDIwMDMKKyNpZm5kZWYgTlBfTk9fQ0FSQk9OCisgICwgTlBOVnN1cHBvcnRzQ2Fy
Ym9uQm9vbCA9IDMwMDAgLyogVFJVRSBpZiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0aGUgQ2FyYm9u
IGV2ZW50IG1vZGVsICovCisjZW5kaWYKKyAgLCBOUE5Wc3VwcG9ydHNDb2NvYUJvb2wgPSAzMDAx
IC8qIFRSVUUgaWYgdGhlIGJyb3dzZXIgc3VwcG9ydHMgdGhlIENvY29hIGV2ZW50IG1vZGVsICov
CisgICwgTlBOVnN1cHBvcnRzVXBkYXRlZENvY29hVGV4dElucHV0Qm9vbCA9IDMwMDIgLyogVFJV
RSBpZiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0aGUgdXBkYXRlZAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvY29hIHRleHQgaW5wdXQgc3BlY2lm
aWNhdGlvbi4gKi8KKyAgLCBOUE5Wc3VwcG9ydHNDb21wb3NpdGluZ0NvcmVBbmltYXRpb25QbHVn
aW5zQm9vbCA9IDc0NjU2IC8qIFRSVUUgaWYgdGhlIGJyb3dzZXIgc3VwcG9ydHMKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENB
IG1vZGVsIGNvbXBvc2l0aW5nICovCisjZW5kaWYgLyogWFBfTUFDT1NYICovCisjaWYgZGVmaW5l
ZChNT1pfUExBVEZPUk1fTUFFTU8pICYmIChNT1pfUExBVEZPUk1fTUFFTU8gPj0gNSkKKyAgLCBO
UE5WU3VwcG9ydHNXaW5kb3dsZXNzTG9jYWwgPSAyMDAyCisjZW5kaWYKK30gTlBOVmFyaWFibGU7
CisKK3R5cGVkZWYgZW51bSB7CisgIE5QTlVSTFZDb29raWUgPSA1MDEsCisgIE5QTlVSTFZQcm94
eQorfSBOUE5VUkxWYXJpYWJsZTsKKworLyoKKyAqIFRoZSB0eXBlIG9mIFRvb2xraXQgdGhlIHdp
ZGdldHMgdXNlCisgKi8KK3R5cGVkZWYgZW51bSB7CisgIE5QTlZHdGsxMiA9IDEsCisgIE5QTlZH
dGsyCit9IE5QTlRvb2xraXRUeXBlOworCisvKgorICogVGhlIHR5cGUgb2YgYSBOUFdpbmRvdyAt
IGl0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZGF0YSBzdHJ1Y3R1cmUKKyAqIHJldHVybmVk
IGluIHRoZSB3aW5kb3cgZmllbGQuCisgKi8KK3R5cGVkZWYgZW51bSB7CisgIE5QV2luZG93VHlw
ZVdpbmRvdyA9IDEsCisgIE5QV2luZG93VHlwZURyYXdhYmxlCit9IE5QV2luZG93VHlwZTsKKwor
dHlwZWRlZiBzdHJ1Y3QgX05QV2luZG93Cit7CisgIHZvaWQqIHdpbmRvdzsgIC8qIFBsYXRmb3Jt
IHNwZWNpZmljIHdpbmRvdyBoYW5kbGUgKi8KKyAgICAgICAgICAgICAgICAgLyogT1MvMjogeCAt
IFBvc2l0aW9uIG9mIGJvdHRvbSBsZWZ0IGNvcm5lciAqLworICAgICAgICAgICAgICAgICAvKiBP
Uy8yOiB5IC0gcmVsYXRpdmUgdG8gdmlzaWJsZSBuZXRzY2FwZSB3aW5kb3cgKi8KKyAgaW50MzJf
dCAgeDsgICAgICAvKiBQb3NpdGlvbiBvZiB0b3AgbGVmdCBjb3JuZXIgcmVsYXRpdmUgKi8KKyAg
aW50MzJfdCAgeTsgICAgICAvKiB0byBhIG5ldHNjYXBlIHBhZ2UuICovCisgIHVpbnQzMl90IHdp
ZHRoOyAgLyogTWF4aW11bSB3aW5kb3cgc2l6ZSAqLworICB1aW50MzJfdCBoZWlnaHQ7CisgIE5Q
UmVjdCAgIGNsaXBSZWN0OyAvKiBDbGlwcGluZyByZWN0YW5nbGUgaW4gcG9ydCBjb29yZGluYXRl
cyAqLworI2lmIGRlZmluZWQoWFBfVU5JWCkgfHwgZGVmaW5lZChYUF9TWU1CSUFOKQorICB2b2lk
ICogd3NfaW5mbzsgLyogUGxhdGZvcm0tZGVwZW5kZW50IGFkZGl0b25hbCBkYXRhICovCisjZW5k
aWYgLyogWFBfVU5JWCB8fCBYUF9TWU1CSUFOICovCisgIE5QV2luZG93VHlwZSB0eXBlOyAvKiBJ
cyB0aGlzIGEgd2luZG93IG9yIGEgZHJhd2FibGU/ICovCit9IE5QV2luZG93OworCit0eXBlZGVm
IHN0cnVjdCBfTlBJbWFnZUV4cG9zZQoreworICBjaGFyKiAgICBkYXRhOyAgICAgICAvKiBpbWFn
ZSBwb2ludGVyICovCisgIGludDMyX3QgIHN0cmlkZTsgICAgIC8qIFN0cmlkZSBvZiBkYXRhIGlt
YWdlIHBvaW50ZXIgKi8KKyAgaW50MzJfdCAgZGVwdGg7ICAgICAgLyogRGVwdGggb2YgaW1hZ2Ug
cG9pbnRlciAqLworICBpbnQzMl90ICB4OyAgICAgICAgICAvKiBFeHBvc2UgeCAqLworICBpbnQz
Ml90ICB5OyAgICAgICAgICAvKiBFeHBvc2UgeSAqLworICB1aW50MzJfdCB3aWR0aDsgICAgICAv
KiBFeHBvc2Ugd2lkdGggKi8KKyAgdWludDMyX3QgaGVpZ2h0OyAgICAgLyogRXhwb3NlIGhlaWdo
dCAqLworICBOUFNpemUgICBkYXRhU2l6ZTsgICAvKiBEYXRhIGJ1ZmZlciBzaXplICovCisgIGZs
b2F0ICAgIHRyYW5zbGF0ZVg7IC8qIHRyYW5zbGF0ZSBYIG1hdHJpeCB2YWx1ZSAqLworICBmbG9h
dCAgICB0cmFuc2xhdGVZOyAvKiB0cmFuc2xhdGUgWSBtYXRyaXggdmFsdWUgKi8KKyAgZmxvYXQg
ICAgc2NhbGVYOyAgICAgLyogc2NhbGUgWCBtYXRyaXggdmFsdWUgKi8KKyAgZmxvYXQgICAgc2Nh
bGVZOyAgICAgLyogc2NhbGUgWSBtYXRyaXggdmFsdWUgKi8KK30gTlBJbWFnZUV4cG9zZTsKKwor
dHlwZWRlZiBzdHJ1Y3QgX05QRnVsbFByaW50Cit7CisgIE5QQm9vbCBwbHVnaW5QcmludGVkOy8q
IFNldCBUUlVFIGlmIHBsdWdpbiBoYW5kbGVkIGZ1bGxzY3JlZW4gcHJpbnRpbmcgKi8KKyAgTlBC
b29sIHByaW50T25lOyAgICAgLyogVFJVRSBpZiBwbHVnaW4gc2hvdWxkIHByaW50IG9uZSBjb3B5
IHRvIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRlciAqLworICB2b2lk
KiBwbGF0Zm9ybVByaW50OyAvKiBQbGF0Zm9ybS1zcGVjaWZpYyBwcmludGluZyBpbmZvICovCit9
IE5QRnVsbFByaW50OworCit0eXBlZGVmIHN0cnVjdCBfTlBFbWJlZFByaW50Cit7CisgIE5QV2lu
ZG93IHdpbmRvdzsKKyAgdm9pZCogcGxhdGZvcm1QcmludDsgLyogUGxhdGZvcm0tc3BlY2lmaWMg
cHJpbnRpbmcgaW5mbyAqLworfSBOUEVtYmVkUHJpbnQ7CisKK3R5cGVkZWYgc3RydWN0IF9OUFBy
aW50Cit7CisgIHVpbnQxNl90IG1vZGU7ICAgICAgICAgICAgICAgLyogTlBfRlVMTCBvciBOUF9F
TUJFRCAqLworICB1bmlvbgorICB7CisgICAgTlBGdWxsUHJpbnQgZnVsbFByaW50OyAgIC8qIGlm
IG1vZGUgaXMgTlBfRlVMTCAqLworICAgIE5QRW1iZWRQcmludCBlbWJlZFByaW50OyAvKiBpZiBt
b2RlIGlzIE5QX0VNQkVEICovCisgIH0gcHJpbnQ7Cit9IE5QUHJpbnQ7CisKKyNpZiBkZWZpbmVk
KFhQX01BQ09TWCkKKyNpZm5kZWYgTlBfTk9fQ0FSQk9OCit0eXBlZGVmIEV2ZW50UmVjb3JkIE5Q
RXZlbnQ7CisjZWxzZQordHlwZWRlZiB2b2lkKiAgTlBFdmVudDsKKyNlbmRpZgorI2VsaWYgZGVm
aW5lZChYUF9TWU1CSUFOKQordHlwZWRlZiBRRXZlbnQgTlBFdmVudDsKKyNlbGlmIGRlZmluZWQo
WFBfV0lOKQordHlwZWRlZiBzdHJ1Y3QgX05QRXZlbnQKK3sKKyAgdWludDE2X3QgZXZlbnQ7Cisg
IHVpbnRwdHJfdCB3UGFyYW07CisgIHVpbnRwdHJfdCBsUGFyYW07Cit9IE5QRXZlbnQ7CisjZWxp
ZiBkZWZpbmVkKFhQX09TMikKK3R5cGVkZWYgc3RydWN0IF9OUEV2ZW50Cit7CisgIHVpbnQzMl90
IGV2ZW50OworICB1aW50MzJfdCB3UGFyYW07CisgIHVpbnQzMl90IGxQYXJhbTsKK30gTlBFdmVu
dDsKKyNlbGlmIGRlZmluZWQoWFBfVU5JWCkKK3R5cGVkZWYgWEV2ZW50IE5QRXZlbnQ7CisjZWxz
ZQordHlwZWRlZiB2b2lkKiAgTlBFdmVudDsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChYUF9NQUNP
U1gpCit0eXBlZGVmIHZvaWQqIE5QUmVnaW9uOworI2lmbmRlZiBOUF9OT19RVUlDS0RSQVcKK3R5
cGVkZWYgUmduSGFuZGxlIE5QUURSZWdpb247CisjZW5kaWYKK3R5cGVkZWYgQ0dQYXRoUmVmIE5Q
Q0dSZWdpb247CisjZWxpZiBkZWZpbmVkKFhQX1dJTikKK3R5cGVkZWYgSFJHTiBOUFJlZ2lvbjsK
KyNlbGlmIGRlZmluZWQoWFBfVU5JWCkKK3R5cGVkZWYgUmVnaW9uIE5QUmVnaW9uOworI2VsaWYg
ZGVmaW5lZChYUF9TWU1CSUFOKQordHlwZWRlZiBRUmVnaW9uKiBOUFJlZ2lvbjsKKyNlbHNlCit0
eXBlZGVmIHZvaWQgKk5QUmVnaW9uOworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IF9OUE5TU3Ry
aW5nIE5QTlNTdHJpbmc7Cit0eXBlZGVmIHN0cnVjdCBfTlBOU1dpbmRvdyBOUE5TV2luZG93Owor
dHlwZWRlZiBzdHJ1Y3QgX05QTlNNZW51ICAgTlBOU01lbnU7CisKKyNpZiBkZWZpbmVkKFhQX01B
Q09TWCkKK3R5cGVkZWYgTlBOU01lbnUgTlBNZW51OworI2Vsc2UKK3R5cGVkZWYgdm9pZCAqTlBN
ZW51OworI2VuZGlmCisKK3R5cGVkZWYgZW51bSB7CisgIE5QQ29vcmRpbmF0ZVNwYWNlUGx1Z2lu
ID0gMSwKKyAgTlBDb29yZGluYXRlU3BhY2VXaW5kb3csCisgIE5QQ29vcmRpbmF0ZVNwYWNlRmxp
cHBlZFdpbmRvdywKKyAgTlBDb29yZGluYXRlU3BhY2VTY3JlZW4sCisgIE5QQ29vcmRpbmF0ZVNw
YWNlRmxpcHBlZFNjcmVlbgorfSBOUENvb3JkaW5hdGVTcGFjZTsKKworI2lmIGRlZmluZWQoWFBf
TUFDT1NYKQorCisjaWZuZGVmIE5QX05PX1FVSUNLRFJBVwordHlwZWRlZiBzdHJ1Y3QgTlBfUG9y
dAoreworICBDR3JhZlB0ciBwb3J0OworICBpbnQzMl90IHBvcnR4OyAvKiBwb3NpdGlvbiBpbnNp
ZGUgdGhlIHRvcG1vc3Qgd2luZG93ICovCisgIGludDMyX3QgcG9ydHk7Cit9IE5QX1BvcnQ7Cisj
ZW5kaWYgLyogTlBfTk9fUVVJQ0tEUkFXICovCisKKy8qCisgKiBOUF9DR0NvbnRleHQgaXMgdGhl
IHR5cGUgb2YgdGhlIE5QV2luZG93J3MgJ3dpbmRvdycgd2hlbiB0aGUgcGx1Z2luIHNwZWNpZmll
cyBOUERyYXdpbmdNb2RlbENvcmVHcmFwaGljcworICogYXMgaXRzIGRyYXdpbmcgbW9kZWwuCisg
Ki8KKwordHlwZWRlZiBzdHJ1Y3QgTlBfQ0dDb250ZXh0Cit7CisgIENHQ29udGV4dFJlZiBjb250
ZXh0OworI2lmZGVmIE5QX05PX0NBUkJPTgorICBOUE5TV2luZG93ICp3aW5kb3c7CisjZWxzZQor
ICB2b2lkICp3aW5kb3c7IC8qIEEgV2luZG93UmVmIG9yIE5VTEwgZm9yIHRoZSBDb2NvYSBldmVu
dCBtb2RlbC4gKi8KKyNlbmRpZgorfSBOUF9DR0NvbnRleHQ7CisKKy8qCisgKiBOUF9HTENvbnRl
eHQgaXMgdGhlIHR5cGUgb2YgdGhlIE5QV2luZG93J3MgJ3dpbmRvdycgd2hlbiB0aGUgcGx1Z2lu
IHNwZWNpZmllcyBOUERyYXdpbmdNb2RlbE9wZW5HTCBhcyBpdHMKKyAqIGRyYXdpbmcgbW9kZWwu
CisgKi8KKwordHlwZWRlZiBzdHJ1Y3QgTlBfR0xDb250ZXh0Cit7CisgIENHTENvbnRleHRPYmog
Y29udGV4dDsKKyNpZmRlZiBOUF9OT19DQVJCT04KKyAgTlBOU1dpbmRvdyAqd2luZG93OworI2Vs
c2UKKyAgdm9pZCAqd2luZG93OyAvKiBDYW4gYmUgZWl0aGVyIGFuIE5TV2luZG93IG9yIGEgV2lu
ZG93UmVmIGRlcGVuZGluZyBvbiB0aGUgZXZlbnQgbW9kZWwgKi8KKyNlbmRpZgorfSBOUF9HTENv
bnRleHQ7CisKK3R5cGVkZWYgZW51bSB7CisgIE5QQ29jb2FFdmVudERyYXdSZWN0ID0gMSwKKyAg
TlBDb2NvYUV2ZW50TW91c2VEb3duLAorICBOUENvY29hRXZlbnRNb3VzZVVwLAorICBOUENvY29h
RXZlbnRNb3VzZU1vdmVkLAorICBOUENvY29hRXZlbnRNb3VzZUVudGVyZWQsCisgIE5QQ29jb2FF
dmVudE1vdXNlRXhpdGVkLAorICBOUENvY29hRXZlbnRNb3VzZURyYWdnZWQsCisgIE5QQ29jb2FF
dmVudEtleURvd24sCisgIE5QQ29jb2FFdmVudEtleVVwLAorICBOUENvY29hRXZlbnRGbGFnc0No
YW5nZWQsCisgIE5QQ29jb2FFdmVudEZvY3VzQ2hhbmdlZCwKKyAgTlBDb2NvYUV2ZW50V2luZG93
Rm9jdXNDaGFuZ2VkLAorICBOUENvY29hRXZlbnRTY3JvbGxXaGVlbCwKKyAgTlBDb2NvYUV2ZW50
VGV4dElucHV0Cit9IE5QQ29jb2FFdmVudFR5cGU7CisKK3R5cGVkZWYgc3RydWN0IF9OUENvY29h
RXZlbnQgeworICBOUENvY29hRXZlbnRUeXBlIHR5cGU7CisgIHVpbnQzMl90IHZlcnNpb247Cisg
IHVuaW9uIHsKKyAgICBzdHJ1Y3QgeworICAgICAgdWludDMyX3QgbW9kaWZpZXJGbGFnczsKKyAg
ICAgIGRvdWJsZSAgIHBsdWdpblg7CisgICAgICBkb3VibGUgICBwbHVnaW5ZOworICAgICAgaW50
MzJfdCAgYnV0dG9uTnVtYmVyOworICAgICAgaW50MzJfdCAgY2xpY2tDb3VudDsKKyAgICAgIGRv
dWJsZSAgIGRlbHRhWDsKKyAgICAgIGRvdWJsZSAgIGRlbHRhWTsKKyAgICAgIGRvdWJsZSAgIGRl
bHRhWjsKKyAgICB9IG1vdXNlOworICAgIHN0cnVjdCB7CisgICAgICB1aW50MzJfdCAgICBtb2Rp
ZmllckZsYWdzOworICAgICAgTlBOU1N0cmluZyAqY2hhcmFjdGVyczsKKyAgICAgIE5QTlNTdHJp
bmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczsKKyAgICAgIE5QQm9vbCAgICAgIGlzQVJl
cGVhdDsKKyAgICAgIHVpbnQxNl90ICAgIGtleUNvZGU7CisgICAgfSBrZXk7CisgICAgc3RydWN0
IHsKKyAgICAgIENHQ29udGV4dFJlZiBjb250ZXh0OworICAgICAgZG91YmxlIHg7CisgICAgICBk
b3VibGUgeTsKKyAgICAgIGRvdWJsZSB3aWR0aDsKKyAgICAgIGRvdWJsZSBoZWlnaHQ7CisgICAg
fSBkcmF3OworICAgIHN0cnVjdCB7CisgICAgICBOUEJvb2wgaGFzRm9jdXM7CisgICAgfSBmb2N1
czsKKyAgICBzdHJ1Y3QgeworICAgICAgTlBOU1N0cmluZyAqdGV4dDsKKyAgICB9IHRleHQ7Cisg
IH0gZGF0YTsKK30gTlBDb2NvYUV2ZW50OworCisjaWZuZGVmIE5QX05PX0NBUkJPTgorLyogTm9u
LXN0YW5kYXJkIGV2ZW50IHR5cGVzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBIYW5kbGVFdmVudCAq
LworZW51bSBOUEV2ZW50VHlwZSB7CisgIE5QRXZlbnRUeXBlX0dldEZvY3VzRXZlbnQgPSAob3NF
dnQgKyAxNiksCisgIE5QRXZlbnRUeXBlX0xvc2VGb2N1c0V2ZW50LAorICBOUEV2ZW50VHlwZV9B
ZGp1c3RDdXJzb3JFdmVudCwKKyAgTlBFdmVudFR5cGVfTWVudUNvbW1hbmRFdmVudCwKKyAgTlBF
dmVudFR5cGVfQ2xpcHBpbmdDaGFuZ2VkRXZlbnQsCisgIE5QRXZlbnRUeXBlX1Njcm9sbGluZ0Jl
Z2luc0V2ZW50ID0gMTAwMCwKKyAgTlBFdmVudFR5cGVfU2Nyb2xsaW5nRW5kc0V2ZW50Cit9Owor
I2VuZGlmIC8qIE5QX05PX0NBUkJPTiAqLworCisjZW5kaWYgLyogWFBfTUFDT1NYICovCisKKy8q
CisgKiBWYWx1ZXMgZm9yIG1vZGUgcGFzc2VkIHRvIE5QUF9OZXc6CisgKi8KKyNkZWZpbmUgTlBf
RU1CRUQgMQorI2RlZmluZSBOUF9GVUxMICAyCisKKy8qCisgKiBWYWx1ZXMgZm9yIHN0cmVhbSB0
eXBlIHBhc3NlZCB0byBOUFBfTmV3U3RyZWFtOgorICovCisjZGVmaW5lIE5QX05PUk1BTCAgICAg
MQorI2RlZmluZSBOUF9TRUVLICAgICAgIDIKKyNkZWZpbmUgTlBfQVNGSUxFICAgICAzCisjZGVm
aW5lIE5QX0FTRklMRU9OTFkgNAorCisjZGVmaW5lIE5QX01BWFJFQURZICgoKHVuc2lnbmVkKSh+
MCk8PDEpPj4xKQorCisvKgorICogRmxhZ3MgZm9yIE5QUF9DbGVhclNpdGVEYXRhLgorICovCisj
ZGVmaW5lIE5QX0NMRUFSX0FMTCAgIDAKKyNkZWZpbmUgTlBfQ0xFQVJfQ0FDSEUgKDEgPDwgMCkK
KworI2lmICFkZWZpbmVkKF9fTFA2NF9fKQorI2lmIGRlZmluZWQoWFBfTUFDT1NYKQorI3ByYWdt
YSBvcHRpb25zIGFsaWduPXJlc2V0CisjZW5kaWYKKyNlbmRpZiAvKiBfX0xQNjRfXyAqLworCisv
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLworLyogICAgICAgRXJyb3IgYW5kIFJlYXNvbiBDb2RlIGRlZmluaXRp
b25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisK
Ky8qCisgKiBWYWx1ZXMgb2YgdHlwZSBOUEVycm9yOgorICovCisjZGVmaW5lIE5QRVJSX0JBU0Ug
ICAgICAgICAgICAgICAgICAgICAgICAgMAorI2RlZmluZSBOUEVSUl9OT19FUlJPUiAgICAgICAg
ICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAwKQorI2RlZmluZSBOUEVSUl9HRU5FUklDX0VSUk9S
ICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAxKQorI2RlZmluZSBOUEVSUl9JTlZBTElEX0lO
U1RBTkNFX0VSUk9SICAgICAgKE5QRVJSX0JBU0UgKyAyKQorI2RlZmluZSBOUEVSUl9JTlZBTElE
X0ZVTkNUQUJMRV9FUlJPUiAgICAgKE5QRVJSX0JBU0UgKyAzKQorI2RlZmluZSBOUEVSUl9NT0RV
TEVfTE9BRF9GQUlMRURfRVJST1IgICAgKE5QRVJSX0JBU0UgKyA0KQorI2RlZmluZSBOUEVSUl9P
VVRfT0ZfTUVNT1JZX0VSUk9SICAgICAgICAgKE5QRVJSX0JBU0UgKyA1KQorI2RlZmluZSBOUEVS
Ul9JTlZBTElEX1BMVUdJTl9FUlJPUiAgICAgICAgKE5QRVJSX0JBU0UgKyA2KQorI2RlZmluZSBO
UEVSUl9JTlZBTElEX1BMVUdJTl9ESVJfRVJST1IgICAgKE5QRVJSX0JBU0UgKyA3KQorI2RlZmlu
ZSBOUEVSUl9JTkNPTVBBVElCTEVfVkVSU0lPTl9FUlJPUiAgKE5QRVJSX0JBU0UgKyA4KQorI2Rl
ZmluZSBOUEVSUl9JTlZBTElEX1BBUkFNICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyA5KQor
I2RlZmluZSBOUEVSUl9JTlZBTElEX1VSTCAgICAgICAgICAgICAgICAgKE5QRVJSX0JBU0UgKyAx
MCkKKyNkZWZpbmUgTlBFUlJfRklMRV9OT1RfRk9VTkQgICAgICAgICAgICAgIChOUEVSUl9CQVNF
ICsgMTEpCisjZGVmaW5lIE5QRVJSX05PX0RBVEEgICAgICAgICAgICAgICAgICAgICAoTlBFUlJf
QkFTRSArIDEyKQorI2RlZmluZSBOUEVSUl9TVFJFQU1fTk9UX1NFRUtBQkxFICAgICAgICAgKE5Q
RVJSX0JBU0UgKyAxMykKKworLyoKKyAqIFZhbHVlcyBvZiB0eXBlIE5QUmVhc29uOgorICovCisj
ZGVmaW5lIE5QUkVTX0JBU0UgICAgICAgICAgMAorI2RlZmluZSBOUFJFU19ET05FICAgICAgICAg
KE5QUkVTX0JBU0UgKyAwKQorI2RlZmluZSBOUFJFU19ORVRXT1JLX0VSUiAgKE5QUkVTX0JBU0Ug
KyAxKQorI2RlZmluZSBOUFJFU19VU0VSX0JSRUFLICAgKE5QUkVTX0JBU0UgKyAyKQorCisvKgor
ICogRG9uJ3QgdXNlIHRoZXNlIG9ic29sZXRlIGVycm9yIGNvZGVzIGFueSBtb3JlLgorICovCisj
ZGVmaW5lIE5QX05PRVJSICBOUF9OT0VSUl9pc19vYnNvbGV0ZV91c2VfTlBFUlJfTk9fRVJST1IK
KyNkZWZpbmUgTlBfRUlOVkFMIE5QX0VJTlZBTF9pc19vYnNvbGV0ZV91c2VfTlBFUlJfR0VORVJJ
Q19FUlJPUgorI2RlZmluZSBOUF9FQUJPUlQgTlBfRUFCT1JUX2lzX29ic29sZXRlX3VzZV9OUFJF
U19VU0VSX0JSRUFLCisKKy8qCisgKiBWZXJzaW9uIGZlYXR1cmUgaW5mb3JtYXRpb24KKyAqLwor
I2RlZmluZSBOUFZFUlNfSEFTX1NUUkVBTU9VVFBVVCAgICAgICAgICAgICA4CisjZGVmaW5lIE5Q
VkVSU19IQVNfTk9USUZJQ0FUSU9OICAgICAgICAgICAgIDkKKyNkZWZpbmUgTlBWRVJTX0hBU19M
SVZFQ09OTkVDVCAgICAgICAgICAgICAgOQorI2RlZmluZSBOUFZFUlNfV0lOMTZfSEFTX0xJVkVD
T05ORUNUICAgICAgICA5CisjZGVmaW5lIE5QVkVSU182OEtfSEFTX0xJVkVDT05ORUNUICAgICAg
ICAgIDExCisjZGVmaW5lIE5QVkVSU19IQVNfV0lORE9XTEVTUyAgICAgICAgICAgICAgIDExCisj
ZGVmaW5lIE5QVkVSU19IQVNfWFBDT05ORUNUX1NDUklQVElORyAgICAgIDEzICAvKiBOb3QgaW1w
bGVtZW50ZWQgaW4gV2ViS2l0ICovCisjZGVmaW5lIE5QVkVSU19IQVNfTlBSVU5USU1FX1NDUklQ
VElORyAgICAgIDE0CisjZGVmaW5lIE5QVkVSU19IQVNfRk9STV9WQUxVRVMgICAgICAgICAgICAg
IDE1ICAvKiBOb3QgaW1wbGVtZW50ZWQgaW4gV2ViS2l0OyBzZWUgYnVnIDEzMDYxICovCisjZGVm
aW5lIE5QVkVSU19IQVNfUE9QVVBTX0VOQUJMRURfU1RBVEUgICAgIDE2ICAvKiBOb3QgaW1wbGVt
ZW50ZWQgaW4gV2ViS2l0ICovCisjZGVmaW5lIE5QVkVSU19IQVNfUkVTUE9OU0VfSEVBREVSUyAg
ICAgICAgIDE3CisjZGVmaW5lIE5QVkVSU19IQVNfTlBPQkpFQ1RfRU5VTSAgICAgICAgICAgIDE4
CisjZGVmaW5lIE5QVkVSU19IQVNfUExVR0lOX1RIUkVBRF9BU1lOQ19DQUxMIDE5CisjZGVmaW5l
IE5QVkVSU19IQVNfQUxMX05FVFdPUktfU1RSRUFNUyAgICAgIDIwCisjZGVmaW5lIE5QVkVSU19I
QVNfVVJMX0FORF9BVVRIX0lORk8gICAgICAgIDIxCisjZGVmaW5lIE5QVkVSU19IQVNfUFJJVkFU
RV9NT0RFICAgICAgICAgICAgIDIyCisjZGVmaW5lIE5QVkVSU19NQUNPU1hfSEFTX0VWRU5UX01P
REVMUyAgICAgIDIzCisjZGVmaW5lIE5QVkVSU19IQVNfQ0FOQ0VMX1NSQ19TVFJFQU0gICAgICAg
IDI0CisjZGVmaW5lIE5QVkVSU19IQVNfQURWQU5DRURfS0VZX0hBTkRMSU5HICAgIDI1CisjZGVm
aW5lIE5QVkVSU19IQVNfVVJMX1JFRElSRUNUX0hBTkRMSU5HICAgIDI2CisjZGVmaW5lIE5QVkVS
U19IQVNfQ0xFQVJfU0lURV9EQVRBICAgICAgICAgIDI3CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisv
KiAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uIFByb3RvdHlwZXMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqLworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworI2lmIGRlZmluZWQoX19PUzJf
XykKKyNkZWZpbmUgTlBfTE9BRERTIF9TeXN0ZW0KKyNlbHNlCisjZGVmaW5lIE5QX0xPQUREUwor
I2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyog
TlBQXyogZnVuY3Rpb25zIGFyZSBwcm92aWRlZCBieSB0aGUgcGx1Z2luIGFuZCBjYWxsZWQgYnkg
dGhlIG5hdmlnYXRvci4gKi8KKworI2lmIGRlZmluZWQoWFBfVU5JWCkKK2NoYXIqIE5QUF9HZXRN
SU1FRGVzY3JpcHRpb24odm9pZCk7CisjZW5kaWYKKworTlBFcnJvciBOUF9MT0FERFMgTlBQX0lu
aXRpYWxpemUodm9pZCk7Cit2b2lkICAgIE5QX0xPQUREUyBOUFBfU2h1dGRvd24odm9pZCk7CitO
UEVycm9yIE5QX0xPQUREUyBOUFBfTmV3KE5QTUlNRVR5cGUgcGx1Z2luVHlwZSwgTlBQIGluc3Rh
bmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBtb2RlLCBpbnQxNl90IGFy
Z2MsIGNoYXIqIGFyZ25bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogYXJndltd
LCBOUFNhdmVkRGF0YSogc2F2ZWQpOworTlBFcnJvciBOUF9MT0FERFMgTlBQX0Rlc3Ryb3koTlBQ
IGluc3RhbmNlLCBOUFNhdmVkRGF0YSoqIHNhdmUpOworTlBFcnJvciBOUF9MT0FERFMgTlBQX1Nl
dFdpbmRvdyhOUFAgaW5zdGFuY2UsIE5QV2luZG93KiB3aW5kb3cpOworTlBFcnJvciBOUF9MT0FE
RFMgTlBQX05ld1N0cmVhbShOUFAgaW5zdGFuY2UsIE5QTUlNRVR5cGUgdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlBTdHJlYW0qIHN0cmVhbSwgTlBCb29sIHNlZWthYmxl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCogc3R5cGUpOworTlBF
cnJvciBOUF9MT0FERFMgTlBQX0Rlc3Ryb3lTdHJlYW0oTlBQIGluc3RhbmNlLCBOUFN0cmVhbSog
c3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlBSZWFzb24gcmVh
c29uKTsKK2ludDMyX3QgTlBfTE9BRERTIE5QUF9Xcml0ZVJlYWR5KE5QUCBpbnN0YW5jZSwgTlBT
dHJlYW0qIHN0cmVhbSk7CitpbnQzMl90IE5QX0xPQUREUyBOUFBfV3JpdGUoTlBQIGluc3RhbmNl
LCBOUFN0cmVhbSogc3RyZWFtLCBpbnQzMl90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQzMl90IGxlbiwgdm9pZCogYnVmZmVyKTsKK3ZvaWQgICAgTlBfTE9BRERTIE5Q
UF9TdHJlYW1Bc0ZpbGUoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmbmFtZSk7Cit2b2lkICAgIE5Q
X0xPQUREUyBOUFBfUHJpbnQoTlBQIGluc3RhbmNlLCBOUFByaW50KiBwbGF0Zm9ybVByaW50KTsK
K2ludDE2X3QgTlBfTE9BRERTIE5QUF9IYW5kbGVFdmVudChOUFAgaW5zdGFuY2UsIHZvaWQqIGV2
ZW50KTsKK3ZvaWQgICAgTlBfTE9BRERTIE5QUF9VUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25z
dCBjaGFyKiB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QUmVhc29uIHJl
YXNvbiwgdm9pZCogbm90aWZ5RGF0YSk7CitqcmVmICAgIE5QX0xPQUREUyBOUFBfR2V0SmF2YUNs
YXNzKHZvaWQpOworTlBFcnJvciBOUF9MT0FERFMgTlBQX0dldFZhbHVlKE5QUCBpbnN0YW5jZSwg
TlBQVmFyaWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKTsKK05QRXJyb3IgTlBfTE9BRERTIE5Q
UF9TZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1
ZSk7CitOUEJvb2wgIE5QX0xPQUREUyBOUFBfR290Rm9jdXMoTlBQIGluc3RhbmNlLCBOUEZvY3Vz
RGlyZWN0aW9uIGRpcmVjdGlvbik7Cit2b2lkICAgIE5QX0xPQUREUyBOUFBfTG9zdEZvY3VzKE5Q
UCBpbnN0YW5jZSk7Cit2b2lkICAgIE5QX0xPQUREUyBOUFBfVVJMUmVkaXJlY3ROb3RpZnkoTlBQ
IGluc3RhbmNlLCBjb25zdCBjaGFyKiB1cmwsIGludDMyX3Qgc3RhdHVzLCB2b2lkKiBub3RpZnlE
YXRhKTsKK05QRXJyb3IgTlBfTE9BRERTIE5QUF9DbGVhclNpdGVEYXRhKGNvbnN0IGNoYXIqIHNp
dGUsIHVpbnQ2NF90IGZsYWdzLCB1aW50NjRfdCBtYXhBZ2UpOworY2hhcioqICBOUF9MT0FERFMg
TlBQX0dldFNpdGVzV2l0aERhdGEodm9pZCk7CisKKy8qIE5QTl8qIGZ1bmN0aW9ucyBhcmUgcHJv
dmlkZWQgYnkgdGhlIG5hdmlnYXRvciBhbmQgY2FsbGVkIGJ5IHRoZSBwbHVnaW4uICovCit2b2lk
ICAgICAgICBOUF9MT0FERFMgTlBOX1ZlcnNpb24oaW50KiBwbHVnaW5fbWFqb3IsIGludCogcGx1
Z2luX21pbm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbmV0c2Nh
cGVfbWFqb3IsIGludCogbmV0c2NhcGVfbWlub3IpOworTlBFcnJvciAgICAgTlBfTE9BRERTIE5Q
Tl9HZXRVUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiB1cmwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0YXJnZXQsIHZvaWQqIG5v
dGlmeURhdGEpOworTlBFcnJvciAgICAgTlBfTE9BRERTIE5QTl9HZXRVUkwoTlBQIGluc3RhbmNl
LCBjb25zdCBjaGFyKiB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiB0YXJnZXQpOworTlBFcnJvciAgICAgTlBfTE9BRERTIE5QTl9Qb3N0VVJMTm90aWZ5
KE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyX3QgbGVuLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJ1ZiwgTlBCb29s
IGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogbm90
aWZ5RGF0YSk7CitOUEVycm9yICAgICBOUF9MT0FERFMgTlBOX1Bvc3RVUkwoTlBQIGluc3RhbmNl
LCBjb25zdCBjaGFyKiB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogdGFyZ2V0LCB1aW50MzJfdCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogYnVmLCBOUEJvb2wgZmlsZSk7CitOUEVycm9yICAgICBOUF9M
T0FERFMgTlBOX1JlcXVlc3RSZWFkKE5QU3RyZWFtKiBzdHJlYW0sIE5QQnl0ZVJhbmdlKiByYW5n
ZUxpc3QpOworTlBFcnJvciAgICAgTlBfTE9BRERTIE5QTl9OZXdTdHJlYW0oTlBQIGluc3RhbmNl
LCBOUE1JTUVUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiB0YXJnZXQsIE5QU3RyZWFtKiogc3RyZWFtKTsKK2ludDMyX3QgICAgIE5QX0xP
QUREUyBOUE5fV3JpdGUoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBpbnQzMl90IGxl
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogYnVmZmVyKTsKK05QRXJy
b3IgICAgIE5QX0xPQUREUyBOUE5fRGVzdHJveVN0cmVhbShOUFAgaW5zdGFuY2UsIE5QU3RyZWFt
KiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlBSZWFz
b24gcmVhc29uKTsKK3ZvaWQgICAgICAgIE5QX0xPQUREUyBOUE5fU3RhdHVzKE5QUCBpbnN0YW5j
ZSwgY29uc3QgY2hhciogbWVzc2FnZSk7Citjb25zdCBjaGFyKiBOUF9MT0FERFMgTlBOX1VzZXJB
Z2VudChOUFAgaW5zdGFuY2UpOwordm9pZCogICAgICAgTlBfTE9BRERTIE5QTl9NZW1BbGxvYyh1
aW50MzJfdCBzaXplKTsKK3ZvaWQgICAgICAgIE5QX0xPQUREUyBOUE5fTWVtRnJlZSh2b2lkKiBw
dHIpOwordWludDMyX3QgICAgTlBfTE9BRERTIE5QTl9NZW1GbHVzaCh1aW50MzJfdCBzaXplKTsK
K3ZvaWQgICAgICAgIE5QX0xPQUREUyBOUE5fUmVsb2FkUGx1Z2lucyhOUEJvb2wgcmVsb2FkUGFn
ZXMpOworSlJJRW52KiAgICAgTlBfTE9BRERTIE5QTl9HZXRKYXZhRW52KHZvaWQpOworanJlZiAg
ICAgICAgTlBfTE9BRERTIE5QTl9HZXRKYXZhUGVlcihOUFAgaW5zdGFuY2UpOworTlBFcnJvciAg
ICAgTlBfTE9BRERTIE5QTl9HZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QTlZhcmlhYmxlIHZhcmlh
YmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSk7CitO
UEVycm9yICAgICBOUF9MT0FERFMgTlBOX1NldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBQVmFyaWFi
bGUgdmFyaWFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnZh
bHVlKTsKK3ZvaWQgICAgICAgIE5QX0xPQUREUyBOUE5fSW52YWxpZGF0ZVJlY3QoTlBQIGluc3Rh
bmNlLCBOUFJlY3QgKmludmFsaWRSZWN0KTsKK3ZvaWQgICAgICAgIE5QX0xPQUREUyBOUE5fSW52
YWxpZGF0ZVJlZ2lvbihOUFAgaW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlBSZWdpb24gaW52YWxpZFJlZ2lvbik7Cit2b2lkICAgICAgICBOUF9M
T0FERFMgTlBOX0ZvcmNlUmVkcmF3KE5QUCBpbnN0YW5jZSk7Cit2b2lkICAgICAgICBOUF9MT0FE
RFMgTlBOX1B1c2hQb3B1cHNFbmFibGVkU3RhdGUoTlBQIGluc3RhbmNlLCBOUEJvb2wgZW5hYmxl
ZCk7Cit2b2lkICAgICAgICBOUF9MT0FERFMgTlBOX1BvcFBvcHVwc0VuYWJsZWRTdGF0ZShOUFAg
aW5zdGFuY2UpOwordm9pZCAgICAgICAgTlBfTE9BRERTIE5QTl9QbHVnaW5UaHJlYWRBc3luY0Nh
bGwoTlBQIGluc3RhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAoKmZ1bmMpICh2b2lkICopLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlckRhdGEpOworTlBFcnJvciAgICAgTlBf
TE9BRERTIE5QTl9HZXRWYWx1ZUZvclVSTChOUFAgaW5zdGFuY2UsIE5QTlVSTFZhcmlhYmxlIHZh
cmlhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyICp1cmwsIGNoYXIgKip2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgKmxlbik7CitOUEVycm9yICAgICBOUF9MT0FERFMgTlBOX1NldFZh
bHVlRm9yVVJMKE5QUCBpbnN0YW5jZSwgTlBOVVJMVmFyaWFibGUgdmFyaWFibGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVybCwgY29uc3Qg
Y2hhciAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMl90IGxlbik7CitOUEVycm9yICAgICBOUF9MT0FERFMgTlBOX0dldEF1dGhlbnRpY2F0aW9u
SW5mbyhOUFAgaW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpwcm90b2NvbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmhvc3QsIGludDMyX3QgcG9ydCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKnNjaGVtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKnJlYWxtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKnVzZXJuYW1lLCB1aW50MzJfdCAqdWxlbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipwYXNzd29yZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
ICpwbGVuKTsKK3VpbnQzMl90ICAgIE5QX0xPQUREUyBOUE5fU2NoZWR1bGVUaW1lcihOUFAgaW5z
dGFuY2UsIHVpbnQzMl90IGludGVydmFsLCBOUEJvb2wgcmVwZWF0LCB2b2lkICgqdGltZXJGdW5j
KShOUFAgbnBwLCB1aW50MzJfdCB0aW1lcklEKSk7Cit2b2lkICAgICAgICBOUF9MT0FERFMgTlBO
X1Vuc2NoZWR1bGVUaW1lcihOUFAgaW5zdGFuY2UsIHVpbnQzMl90IHRpbWVySUQpOworTlBFcnJv
ciAgICAgTlBfTE9BRERTIE5QTl9Qb3BVcENvbnRleHRNZW51KE5QUCBpbnN0YW5jZSwgTlBNZW51
KiBtZW51KTsKK05QQm9vbCAgICAgIE5QX0xPQUREUyBOUE5fQ29udmVydFBvaW50KE5QUCBpbnN0
YW5jZSwgZG91YmxlIHNvdXJjZVgsIGRvdWJsZSBzb3VyY2VZLCBOUENvb3JkaW5hdGVTcGFjZSBz
b3VyY2VTcGFjZSwgZG91YmxlICpkZXN0WCwgZG91YmxlICpkZXN0WSwgTlBDb29yZGluYXRlU3Bh
Y2UgZGVzdFNwYWNlKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9ICAvKiBlbmQgZXh0ZXJuICJD
IiAqLworI2VuZGlmCisKKyNlbmRpZiAvKiBSQ19JTlZPS0VEICovCisjaWYgZGVmaW5lZChfX09T
Ml9fKQorI3ByYWdtYSBwYWNrKCkKKyNlbmRpZgorCisjZW5kaWYgLyogbnBhcGlfaF8gKi8KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbnBydW50aW1lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9ucHJ1bnRpbWUuaAkocmV2aXNpb24gOTQ1ODMpCShmcm9tIFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ucHJ1bnRpbWUuaDo5NDU4MykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvbnBydW50aW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOTMgQEAKKy8q
IC0qLSBNb2RlOiBDOyB0YWItd2lkdGg6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgYy1iYXNp
Yy1vZmZzZXQ6IDQgLSotICovCisvKgorICogQ29weXJpZ2h0IChjKSAyMDA0LCBBcHBsZSBDb21w
dXRlciwgSW5jLiBhbmQgVGhlIE1vemlsbGEgRm91bmRhdGlvbi4gCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
IAorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZXMgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG9yIFRoZSBNb3ppbGxhCisgKiBGb3VuZGF0aW9uICgiTW96aWxsYSIp
IG5vciB0aGUgbmFtZXMgb2YgdGhlaXIgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkCisgKiB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dAorICogc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBNT1pJTExBIEFORCBUSEVJUiBDT05UUklC
VVRPUlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorICogUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSwgTU9aSUxMQSBPUgor
ICogVEhFSVIgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAq
LworI2lmbmRlZiBfTlBfUlVOVElNRV9IXworI2RlZmluZSBfTlBfUlVOVElNRV9IXworCisjaW5j
bHVkZSAibnBhcGkuaCIKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRp
ZgorCisvKgorICAgIFRoaXMgQVBJIGlzIHVzZWQgdG8gZmFjaWxpdGF0ZSBiaW5kaW5nIGNvZGUg
d3JpdHRlbiBpbiBDIHRvIHNjcmlwdAorICAgIG9iamVjdHMuICBUaGUgQVBJIGluIHRoaXMgaGVh
ZGVyIGRvZXMgbm90IGFzc3VtZSB0aGUgcHJlc2VuY2Ugb2YgYQorICAgIHVzZXIgYWdlbnQuICBU
aGF0IGlzLCBpdCBjYW4gYmUgdXNlZCB0byBiaW5kIEMgY29kZSB0byBzY3JpcHRpbmcKKyAgICBl
bnZpcm9ubWVudHMgb3V0c2lkZSBvZiB0aGUgY29udGV4dCBvZiBhIHVzZXIgYWdlbnQuCisgICAg
CisgICAgSG93ZXZlciwgdGhlIG5vcm1hbCB1c2Ugb2YgdGhlIHRoaXMgQVBJIGlzIGluIHRoZSBj
b250ZXh0IG9mIGEKKyAgICBzY3JpcHRpbmcgZW52aXJvbm1lbnQgcnVubmluZyBpbiBhIGJyb3dz
ZXIgb3Igb3RoZXIgdXNlciBhZ2VudC4KKyAgICBJbiBwYXJ0aWN1bGFyIGl0IGlzIHVzZWQgdG8g
c3VwcG9ydCB0aGUgZXh0ZW5kZWQgTmV0c2NhcGUKKyAgICBzY3JpcHQtYWJpbGl0eSBBUEkgZm9y
IHBsdWdpbnMgKE5QLVNBUCkuICBOUC1TQVAgaXMgYW4gZXh0ZW5zaW9uCisgICAgb2YgdGhlIE5l
dHNjYXBlIHBsdWdpbiBBUEkuICBBcyBzdWNoIHdlIGhhdmUgYWRvcHRlZCB0aGUgdXNlIG9mCisg
ICAgdGhlICJOUCIgcHJlZml4IGZvciB0aGlzIEFQSS4KKworICAgIFRoZSBmb2xsb3dpbmcgTlB7
TnxQfVZhcmlhYmxlcyB3ZXJlIGFkZGVkIHRvIHRoZSBOZXRzY2FwZSBwbHVnaW4KKyAgICBBUEkg
KGluIG5wYXBpLmgpOgorCisgICAgTlBOVldpbmRvd05QT2JqZWN0CisgICAgTlBOVlBsdWdpbkVs
ZW1lbnROUE9iamVjdAorICAgIE5QUFZwbHVnaW5TY3JpcHRhYmxlTlBPYmplY3QKKworICAgIFRo
ZXNlIHZhcmlhYmxlcyBhcmUgZXhwb3NlZCB0aHJvdWdoIE5QTl9HZXRWYWx1ZSgpIGFuZAorICAg
IE5QUF9HZXRWYWx1ZSgpIChyZXNwZWN0aXZlbHkpIGFuZCBhcmUgdXNlZCB0byBlc3RhYmxpc2gg
dGhlCisgICAgaW5pdGlhbCBiaW5kaW5nIGJldHdlZW4gdGhlIHVzZXIgYWdlbnQgYW5kIG5hdGl2
ZSBjb2RlLiAgVGhlIERPTQorICAgIG9iamVjdHMgaW4gdGhlIHVzZXIgYWdlbnQgY2FuIGJlIGV4
YW1pbmVkIGFuZCBtYW5pcHVsYXRlZCB1c2luZworICAgIHRoZSBOUE5fIGZ1bmN0aW9ucyB0aGF0
IG9wZXJhdGUgb24gTlBPYmplY3RzIGRlc2NyaWJlZCBpbiB0aGlzCisgICAgaGVhZGVyLgorCisg
ICAgVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB0aGUgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHNjcmlw
dGluZworICAgIGxhbmd1YWdlIHVzZWQgYnkgdGhlIHNjcmlwdGluZyBlbnZpcm9ubWVudCBoYXZl
IGJlZW4gbWluaW1pemVkLgorKi8KKworI2RlZmluZSBOUF9CRUdJTl9NQUNSTyAgZG8geworI2Rl
ZmluZSBOUF9FTkRfTUFDUk8gICAgfSB3aGlsZSAoMCkKKworLyoKKyAgICBPYmplY3RzIChub24t
cHJpbWl0aXZlIGRhdGEpIHBhc3NlZCBiZXR3ZWVuICdDJyBhbmQgc2NyaXB0IGlzCisgICAgYWx3
YXlzIHdyYXBwZWQgaW4gYW4gTlBPYmplY3QuICBUaGUgJ2ludGVyZmFjZScgb2YgYW4gTlBPYmpl
Y3QgaXMKKyAgICBkZXNjcmliZWQgYnkgYW4gTlBDbGFzcy4KKyovCit0eXBlZGVmIHN0cnVjdCBO
UE9iamVjdCBOUE9iamVjdDsKK3R5cGVkZWYgc3RydWN0IE5QQ2xhc3MgTlBDbGFzczsKKwordHlw
ZWRlZiBjaGFyIE5QVVRGODsKK3R5cGVkZWYgc3RydWN0IF9OUFN0cmluZyB7CisgICAgY29uc3Qg
TlBVVEY4ICpVVEY4Q2hhcmFjdGVyczsKKyAgICB1aW50MzJfdCBVVEY4TGVuZ3RoOworfSBOUFN0
cmluZzsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBOUFZhcmlhbnRUeXBlX1ZvaWQsCisgICAgTlBW
YXJpYW50VHlwZV9OdWxsLAorICAgIE5QVmFyaWFudFR5cGVfQm9vbCwKKyAgICBOUFZhcmlhbnRU
eXBlX0ludDMyLAorICAgIE5QVmFyaWFudFR5cGVfRG91YmxlLAorICAgIE5QVmFyaWFudFR5cGVf
U3RyaW5nLAorICAgIE5QVmFyaWFudFR5cGVfT2JqZWN0Cit9IE5QVmFyaWFudFR5cGU7CisKK3R5
cGVkZWYgc3RydWN0IF9OUFZhcmlhbnQgeworICAgIE5QVmFyaWFudFR5cGUgdHlwZTsKKyAgICB1
bmlvbiB7CisgICAgICAgIGJvb2wgYm9vbFZhbHVlOworICAgICAgICBpbnQzMl90IGludFZhbHVl
OworICAgICAgICBkb3VibGUgZG91YmxlVmFsdWU7CisgICAgICAgIE5QU3RyaW5nIHN0cmluZ1Zh
bHVlOworICAgICAgICBOUE9iamVjdCAqb2JqZWN0VmFsdWU7CisgICAgfSB2YWx1ZTsKK30gTlBW
YXJpYW50OworCisvKgorICAgIE5QTl9SZWxlYXNlVmFyaWFudFZhbHVlIGlzIGNhbGxlZCBvbiBh
bGwgJ291dCcgcGFyYW1ldGVycworICAgIHJlZmVyZW5jZXMuICBTcGVjaWZpY2FsbHkgaXQgaXMg
dG8gYmUgY2FsbGVkIG9uIHZhcmlhbnRzIHRoYXQgb3duCisgICAgdGhlaXIgdmFsdWUsIGFzIGlz
IHRoZSBjYXNlIHdpdGggYWxsIG5vbi1jb25zdCBOUFZhcmlhbnQqCisgICAgYXJndW1lbnRzIGFm
dGVyIGEgc3VjY2Vzc2Z1bCBjYWxsIHRvIGFueSBtZXRob2RzIChleGNlcHQgdGhpcyBvbmUpCisg
ICAgaW4gdGhpcyBBUEkuCisKKyAgICBBZnRlciBjYWxsaW5nIE5QTl9SZWxlYXNlVmFyaWFudFZh
bHVlLCB0aGUgdHlwZSBvZiB0aGUgdmFyaWFudAorICAgIHdpbGwgYmUgTlBWYXJpYW50VHlwZV9W
b2lkLgorKi8KK3ZvaWQgTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUoTlBWYXJpYW50ICp2YXJpYW50
KTsKKworI2RlZmluZSBOUFZBUklBTlRfSVNfVk9JRChfdikgICAgKChfdikudHlwZSA9PSBOUFZh
cmlhbnRUeXBlX1ZvaWQpCisjZGVmaW5lIE5QVkFSSUFOVF9JU19OVUxMKF92KSAgICAoKF92KS50
eXBlID09IE5QVmFyaWFudFR5cGVfTnVsbCkKKyNkZWZpbmUgTlBWQVJJQU5UX0lTX0JPT0xFQU4o
X3YpICgoX3YpLnR5cGUgPT0gTlBWYXJpYW50VHlwZV9Cb29sKQorI2RlZmluZSBOUFZBUklBTlRf
SVNfSU5UMzIoX3YpICAgKChfdikudHlwZSA9PSBOUFZhcmlhbnRUeXBlX0ludDMyKQorI2RlZmlu
ZSBOUFZBUklBTlRfSVNfRE9VQkxFKF92KSAgKChfdikudHlwZSA9PSBOUFZhcmlhbnRUeXBlX0Rv
dWJsZSkKKyNkZWZpbmUgTlBWQVJJQU5UX0lTX1NUUklORyhfdikgICgoX3YpLnR5cGUgPT0gTlBW
YXJpYW50VHlwZV9TdHJpbmcpCisjZGVmaW5lIE5QVkFSSUFOVF9JU19PQkpFQ1QoX3YpICAoKF92
KS50eXBlID09IE5QVmFyaWFudFR5cGVfT2JqZWN0KQorCisjZGVmaW5lIE5QVkFSSUFOVF9UT19C
T09MRUFOKF92KSAoKF92KS52YWx1ZS5ib29sVmFsdWUpCisjZGVmaW5lIE5QVkFSSUFOVF9UT19J
TlQzMihfdikgICAoKF92KS52YWx1ZS5pbnRWYWx1ZSkKKyNkZWZpbmUgTlBWQVJJQU5UX1RPX0RP
VUJMRShfdikgICgoX3YpLnZhbHVlLmRvdWJsZVZhbHVlKQorI2RlZmluZSBOUFZBUklBTlRfVE9f
U1RSSU5HKF92KSAgKChfdikudmFsdWUuc3RyaW5nVmFsdWUpCisjZGVmaW5lIE5QVkFSSUFOVF9U
T19PQkpFQ1QoX3YpICAoKF92KS52YWx1ZS5vYmplY3RWYWx1ZSkKKworI2RlZmluZSBWT0lEX1RP
X05QVkFSSUFOVChfdikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorTlBfQkVHSU5fTUFDUk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChfdikudHlwZSA9IE5QVmFyaWFu
dFR5cGVfVm9pZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIChfdikudmFsdWUub2JqZWN0VmFsdWUgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorTlBfRU5EX01BQ1JPCisKKyNkZWZpbmUgTlVMTF9UT19O
UFZBUklBTlQoX3YpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKK05QX0JFR0lOX01BQ1JPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3YpLnR5cGUgPSBOUFZhcmlhbnRU
eXBlX051bGw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAoX3YpLnZhbHVlLm9iamVjdFZhbHVlID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKK05QX0VORF9NQUNSTworCisjZGVmaW5lIEJPT0xFQU5fVE9f
TlBWQVJJQU5UKF92YWwsIF92KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCitOUF9CRUdJTl9NQUNSTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKF92KS50eXBlID0gTlBWYXJpYW50VHlw
ZV9Cb29sOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
KF92KS52YWx1ZS5ib29sVmFsdWUgPSAhIShfdmFsKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCitOUF9FTkRfTUFDUk8KKworI2RlZmluZSBJTlQzMl9UT19OUFZB
UklBTlQoX3ZhbCwgX3YpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorTlBfQkVHSU5fTUFDUk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChfdikudHlwZSA9IE5QVmFyaWFudFR5cGVf
SW50MzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChf
dikudmFsdWUuaW50VmFsdWUgPSBfdmFsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorTlBfRU5EX01BQ1JPCisKKyNkZWZpbmUgRE9VQkxFX1RPX05QVkFS
SUFOVChfdmFsLCBfdikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
K05QX0JFR0lOX01BQ1JPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3YpLnR5cGUgPSBOUFZhcmlhbnRUeXBlX0Rv
dWJsZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3Yp
LnZhbHVlLmRvdWJsZVZhbHVlID0gX3ZhbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKK05QX0VORF9NQUNSTworCisjZGVmaW5lIFNUUklOR1pfVE9fTlBWQVJJ
QU5UKF92YWwsIF92KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitO
UF9CRUdJTl9NQUNSTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgKF92KS50eXBlID0gTlBWYXJpYW50VHlwZV9TdHJp
bmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgTlBTdHJp
bmcgc3RyID0geyBfdmFsLCB1aW50MzJfdChzdHJsZW4oX3ZhbCkpIH07ICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgKF92KS52YWx1ZS5zdHJpbmdWYWx1ZSA9IHN0cjsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitOUF9FTkRfTUFDUk8KKworI2Rl
ZmluZSBTVFJJTkdOX1RPX05QVkFSSUFOVChfdmFsLCBfbGVuLCBfdikgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorTlBfQkVHSU5fTUFDUk8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChfdikudHlw
ZSA9IE5QVmFyaWFudFR5cGVfU3RyaW5nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIE5QU3RyaW5nIHN0ciA9IHsgX3ZhbCwgdWludDMyX3QoX2xlbikgfTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChfdikudmFsdWUuc3RyaW5n
VmFsdWUgPSBzdHI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorTlBfRU5EX01BQ1JPCisKKyNkZWZpbmUgT0JKRUNUX1RPX05QVkFSSUFOVChfdmFsLCBfdikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK05QX0JFR0lOX01BQ1JP
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAoX3YpLnR5cGUgPSBOUFZhcmlhbnRUeXBlX09iamVjdDsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3YpLnZhbHVlLm9iamVjdFZh
bHVlID0gX3ZhbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
K05QX0VORF9NQUNSTworCisKKy8qCisgIFR5cGUgbWFwcGluZ3MgKEphdmFTY3JpcHQgdHlwZXMg
aGF2ZSBiZWVuIHVzZWQgZm9yIGlsbHVzdHJhdGlvbgorICAgIHB1cnBvc2VzKToKKworICBKYXZh
U2NyaXB0ICAgICAgIHRvICAgICAgICAgICAgIEMgKE5QVmFyaWFudCB3aXRoIHR5cGU6KQorICB1
bmRlZmluZWQgICAgICAgICAgICAgICAgICAgICAgIE5QVmFyaWFudFR5cGVfVm9pZAorICBudWxs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QVmFyaWFudFR5cGVfTnVsbAorICBCb29sZWFu
ICAgICAgICAgICAgICAgICAgICAgICAgIE5QVmFyaWFudFR5cGVfQm9vbAorICBOdW1iZXIgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5QVmFyaWFudFR5cGVfRG91YmxlIG9yIE5QVmFyaWFudFR5
cGVfSW50MzIKKyAgU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICBOUFZhcmlhbnRUeXBl
X1N0cmluZworICBPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgIE5QVmFyaWFudFR5cGVf
T2JqZWN0CisKKyAgQyAoTlBWYXJpYW50IHdpdGggdHlwZTopICAgdG8gICBKYXZhU2NyaXB0Cisg
IE5QVmFyaWFudFR5cGVfVm9pZCAgICAgICAgICAgICAgdW5kZWZpbmVkCisgIE5QVmFyaWFudFR5
cGVfTnVsbCAgICAgICAgICAgICAgbnVsbAorICBOUFZhcmlhbnRUeXBlX0Jvb2wgICAgICAgICAg
ICAgIEJvb2xlYW4KKyAgTlBWYXJpYW50VHlwZV9JbnQzMiAgICAgICAgICAgICBOdW1iZXIKKyAg
TlBWYXJpYW50VHlwZV9Eb3VibGUgICAgICAgICAgICBOdW1iZXIKKyAgTlBWYXJpYW50VHlwZV9T
dHJpbmcgICAgICAgICAgICBTdHJpbmcKKyAgTlBWYXJpYW50VHlwZV9PYmplY3QgICAgICAgICAg
ICBPYmplY3QKKyovCisKK3R5cGVkZWYgdm9pZCAqTlBJZGVudGlmaWVyOworCisvKgorICAgIE5Q
T2JqZWN0cyBoYXZlIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMuICBNZXRob2RzIGFuZCBwcm9wZXJ0
aWVzIGFyZQorICAgIGlkZW50aWZpZWQgd2l0aCBOUElkZW50aWZpZXJzLiAgVGhlc2UgaWRlbnRp
ZmllcnMgbWF5IGJlIHJlZmxlY3RlZAorICAgIGluIHNjcmlwdC4gIE5QSWRlbnRpZmllcnMgY2Fu
IGJlIGVpdGhlciBzdHJpbmdzIG9yIGludGVnZXJzLCBJT1csCisgICAgbWV0aG9kcyBhbmQgcHJv
cGVydGllcyBjYW4gYmUgaWRlbnRpZmllZCBieSBlaXRoZXIgc3RyaW5ncyBvcgorICAgIGludGVn
ZXJzIChpLmUuIGZvb1siYmFyIl0gdnMgZm9vWzFdKS4gTlBJZGVudGlmaWVycyBjYW4gYmUKKyAg
ICBjb21wYXJlZCB1c2luZyA9PS4gIEluIGNhc2Ugb2YgYW55IGVycm9ycywgdGhlIHJlcXVlc3Rl
ZAorICAgIE5QSWRlbnRpZmllcihzKSB3aWxsIGJlIE5VTEwuIE5QSWRlbnRpZmllciBsaWZldGlt
ZSBpcyBjb250cm9sbGVkCisgICAgYnkgdGhlIGJyb3dzZXIuIFBsdWdpbnMgZG8gbm90IG5lZWQg
dG8gd29ycnkgYWJvdXQgbWVtb3J5IG1hbmFnZW1lbnQKKyAgICB3aXRoIHJlZ2FyZHMgdG8gTlBJ
ZGVudGlmaWVycy4KKyovCitOUElkZW50aWZpZXIgTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoY29u
c3QgTlBVVEY4ICpuYW1lKTsKK3ZvaWQgTlBOX0dldFN0cmluZ0lkZW50aWZpZXJzKGNvbnN0IE5Q
VVRGOCAqKm5hbWVzLCBpbnQzMl90IG5hbWVDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5QSWRlbnRpZmllciAqaWRlbnRpZmllcnMpOworTlBJZGVudGlmaWVyIE5QTl9HZXRJ
bnRJZGVudGlmaWVyKGludDMyX3QgaW50aWQpOworYm9vbCBOUE5fSWRlbnRpZmllcklzU3RyaW5n
KE5QSWRlbnRpZmllciBpZGVudGlmaWVyKTsKKworLyoKKyAgICBUaGUgTlBVVEY4IHJldHVybmVk
IGZyb20gTlBOX1VURjhGcm9tSWRlbnRpZmllciBTSE9VTEQgYmUgZnJlZWQuCisqLworTlBVVEY4
ICpOUE5fVVRGOEZyb21JZGVudGlmaWVyKE5QSWRlbnRpZmllciBpZGVudGlmaWVyKTsKKworLyoK
KyAgICBHZXQgdGhlIGludGVnZXIgcmVwcmVzZW50ZWQgYnkgaWRlbnRpZmllci4gSWYgaWRlbnRp
ZmllciBpcyBub3QgYW4KKyAgICBpbnRlZ2VyIGlkZW50aWZpZXIsIHRoZSBiZWhhdmlvdXIgaXMg
dW5kZWZpbmVkLgorKi8KK2ludDMyX3QgTlBOX0ludEZyb21JZGVudGlmaWVyKE5QSWRlbnRpZmll
ciBpZGVudGlmaWVyKTsKKworLyoKKyAgICBOUE9iamVjdCBiZWhhdmlvciBpcyBpbXBsZW1lbnRl
ZCB1c2luZyB0aGUgZm9sbG93aW5nIHNldCBvZgorICAgIGNhbGxiYWNrIGZ1bmN0aW9ucy4KKwor
ICAgIFRoZSBOUFZhcmlhbnQgKnJlc3VsdCBhcmd1bWVudCBvZiB0aGVzZSBmdW5jdGlvbnMgKHdo
ZXJlCisgICAgYXBwbGljYWJsZSkgc2hvdWxkIGJlIHJlbGVhc2VkIHVzaW5nIE5QTl9SZWxlYXNl
VmFyaWFudFZhbHVlKCkuCisqLwordHlwZWRlZiBOUE9iamVjdCAqKCpOUEFsbG9jYXRlRnVuY3Rp
b25QdHIpKE5QUCBucHAsIE5QQ2xhc3MgKmFDbGFzcyk7Cit0eXBlZGVmIHZvaWQgKCpOUERlYWxs
b2NhdGVGdW5jdGlvblB0cikoTlBPYmplY3QgKm5wb2JqKTsKK3R5cGVkZWYgdm9pZCAoKk5QSW52
YWxpZGF0ZUZ1bmN0aW9uUHRyKShOUE9iamVjdCAqbnBvYmopOwordHlwZWRlZiBib29sICgqTlBI
YXNNZXRob2RGdW5jdGlvblB0cikoTlBPYmplY3QgKm5wb2JqLCBOUElkZW50aWZpZXIgbmFtZSk7
Cit0eXBlZGVmIGJvb2wgKCpOUEludm9rZUZ1bmN0aW9uUHRyKShOUE9iamVjdCAqbnBvYmosIE5Q
SWRlbnRpZmllciBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgTlBWYXJpYW50ICphcmdzLCB1aW50MzJfdCBhcmdDb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5QVmFyaWFudCAqcmVzdWx0KTsKK3R5cGVkZWYgYm9vbCAoKk5Q
SW52b2tlRGVmYXVsdEZ1bmN0aW9uUHRyKShOUE9iamVjdCAqbnBvYmosCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTlBWYXJpYW50ICphcmdzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFyZ0NvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QVmFyaWFudCAq
cmVzdWx0KTsKK3R5cGVkZWYgYm9vbCAoKk5QSGFzUHJvcGVydHlGdW5jdGlvblB0cikoTlBPYmpl
Y3QgKm5wb2JqLCBOUElkZW50aWZpZXIgbmFtZSk7Cit0eXBlZGVmIGJvb2wgKCpOUEdldFByb3Bl
cnR5RnVuY3Rpb25QdHIpKE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVyIG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5QVmFyaWFudCAqcmVzdWx0KTsK
K3R5cGVkZWYgYm9vbCAoKk5QU2V0UHJvcGVydHlGdW5jdGlvblB0cikoTlBPYmplY3QgKm5wb2Jq
LCBOUElkZW50aWZpZXIgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgTlBWYXJpYW50ICp2YWx1ZSk7Cit0eXBlZGVmIGJvb2wgKCpOUFJlbW92ZVBy
b3BlcnR5RnVuY3Rpb25QdHIpKE5QT2JqZWN0ICpucG9iaiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlBJZGVudGlmaWVyIG5hbWUpOwordHlwZWRlZiBib29s
ICgqTlBFbnVtZXJhdGlvbkZ1bmN0aW9uUHRyKShOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmll
ciAqKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCAqY291bnQpOwordHlwZWRlZiBib29sICgqTlBDb25zdHJ1Y3RGdW5jdGlvblB0cikoTlBP
YmplY3QgKm5wb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgTlBWYXJpYW50ICphcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3QgYXJnQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOUFZhcmlhbnQgKnJlc3VsdCk7CisKKy8qCisgICAgTlBPYmplY3RzIHJldHVybmVkIGJ5
IGNyZWF0ZSwgcmV0YWluLCBpbnZva2UsIGFuZCBnZXRQcm9wZXJ0eSBwYXNzCisgICAgYSByZWZl
cmVuY2UgY291bnQgdG8gdGhlIGNhbGxlci4gIFRoYXQgaXMsIHRoZSBjYWxsZWUgYWRkcyBhCisg
ICAgcmVmZXJlbmNlIGNvdW50IHdoaWNoIHBhc3NlcyB0byB0aGUgY2FsbGVyLiAgSXQgaXMgdGhl
IGNhbGxlcidzCisgICAgcmVzcG9uc2liaWxpdHkgdG8gcmVsZWFzZSB0aGUgcmV0dXJuZWQgb2Jq
ZWN0LgorCisgICAgTlBJbnZva2VGdW5jdGlvblB0ciBmdW5jdGlvbiBtYXkgcmV0dXJuIDAgdG8g
aW5kaWNhdGUgYSB2b2lkCisgICAgcmVzdWx0LgorCisgICAgTlBJbnZhbGlkYXRlRnVuY3Rpb25Q
dHIgaXMgY2FsbGVkIGJ5IHRoZSBzY3JpcHRpbmcgZW52aXJvbm1lbnQKKyAgICB3aGVuIHRoZSBu
YXRpdmUgY29kZSBpcyBzaHV0ZG93bi4gIEFueSBhdHRlbXB0IHRvIG1lc3NhZ2UgYQorICAgIE5Q
T2JqZWN0IGluc3RhbmNlIGFmdGVyIHRoZSBpbnZhbGlkYXRlIGNhbGxiYWNrIGhhcyBiZWVuCisg
ICAgY2FsbGVkIHdpbGwgcmVzdWx0IGluIHVuZGVmaW5lZCBiZWhhdmlvciwgZXZlbiBpZiB0aGUg
bmF0aXZlIGNvZGUKKyAgICBpcyBzdGlsbCByZXRhaW5pbmcgdGhvc2UgTlBPYmplY3QgaW5zdGFu
Y2VzLiAgKFRoZSBydW50aW1lCisgICAgd2lsbCB0eXBpY2FsbHkgcmV0dXJuIGltbWVkaWF0ZWx5
LCB3aXRoIDAgb3IgTlVMTCwgZnJvbSBhbiBhdHRlbXB0CisgICAgdG8gZGlzcGF0Y2ggdG8gYSBO
UE9iamVjdCwgYnV0IHRoaXMgYmVoYXZpb3Igc2hvdWxkIG5vdCBiZQorICAgIGRlcGVuZGVkIHVw
b24uKQorCisgICAgVGhlIE5QRW51bWVyYXRpb25GdW5jdGlvblB0ciBmdW5jdGlvbiBtYXkgcGFz
cyBhbiBhcnJheSBvZgorICAgIE5QSWRlbnRpZmllcnMgYmFjayB0byB0aGUgY2FsbGVyLiBUaGUg
Y2FsbGVlIGFsbG9jcyB0aGUgbWVtb3J5IG9mCisgICAgdGhlIGFycmF5IHVzaW5nIE5QTl9NZW1B
bGxvYygpLCBhbmQgaXQncyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkKKyAgICB0byByZWxl
YXNlIGl0IHVzaW5nIE5QTl9NZW1GcmVlKCkuCisqLworc3RydWN0IE5QQ2xhc3MKK3sKKyAgICB1
aW50MzJfdCBzdHJ1Y3RWZXJzaW9uOworICAgIE5QQWxsb2NhdGVGdW5jdGlvblB0ciBhbGxvY2F0
ZTsKKyAgICBOUERlYWxsb2NhdGVGdW5jdGlvblB0ciBkZWFsbG9jYXRlOworICAgIE5QSW52YWxp
ZGF0ZUZ1bmN0aW9uUHRyIGludmFsaWRhdGU7CisgICAgTlBIYXNNZXRob2RGdW5jdGlvblB0ciBo
YXNNZXRob2Q7CisgICAgTlBJbnZva2VGdW5jdGlvblB0ciBpbnZva2U7CisgICAgTlBJbnZva2VE
ZWZhdWx0RnVuY3Rpb25QdHIgaW52b2tlRGVmYXVsdDsKKyAgICBOUEhhc1Byb3BlcnR5RnVuY3Rp
b25QdHIgaGFzUHJvcGVydHk7CisgICAgTlBHZXRQcm9wZXJ0eUZ1bmN0aW9uUHRyIGdldFByb3Bl
cnR5OworICAgIE5QU2V0UHJvcGVydHlGdW5jdGlvblB0ciBzZXRQcm9wZXJ0eTsKKyAgICBOUFJl
bW92ZVByb3BlcnR5RnVuY3Rpb25QdHIgcmVtb3ZlUHJvcGVydHk7CisgICAgTlBFbnVtZXJhdGlv
bkZ1bmN0aW9uUHRyIGVudW1lcmF0ZTsKKyAgICBOUENvbnN0cnVjdEZ1bmN0aW9uUHRyIGNvbnN0
cnVjdDsKK307CisKKyNkZWZpbmUgTlBfQ0xBU1NfU1RSVUNUX1ZFUlNJT04gICAgICAzCisKKyNk
ZWZpbmUgTlBfQ0xBU1NfU1RSVUNUX1ZFUlNJT05fRU5VTSAyCisjZGVmaW5lIE5QX0NMQVNTX1NU
UlVDVF9WRVJTSU9OX0NUT1IgMworCisjZGVmaW5lIE5QX0NMQVNTX1NUUlVDVF9WRVJTSU9OX0hB
U19FTlVNKG5wY2xhc3MpICAgXAorICAgICAgICAoKG5wY2xhc3MpLT5zdHJ1Y3RWZXJzaW9uID49
IE5QX0NMQVNTX1NUUlVDVF9WRVJTSU9OX0VOVU0pCisKKyNkZWZpbmUgTlBfQ0xBU1NfU1RSVUNU
X1ZFUlNJT05fSEFTX0NUT1IobnBjbGFzcykgICBcCisgICAgICAgICgobnBjbGFzcyktPnN0cnVj
dFZlcnNpb24gPj0gTlBfQ0xBU1NfU1RSVUNUX1ZFUlNJT05fQ1RPUikKKworc3RydWN0IE5QT2Jq
ZWN0IHsKKyAgICBOUENsYXNzICpfY2xhc3M7CisgICAgdWludDMyX3QgcmVmZXJlbmNlQ291bnQ7
CisgICAgLyoKKyAgICAgKiBBZGRpdGlvbmFsIHNwYWNlIG1heSBiZSBhbGxvY2F0ZWQgaGVyZSBi
eSB0eXBlcyBvZiBOUE9iamVjdHMKKyAgICAgKi8KK307CisKKy8qCisgICAgSWYgdGhlIGNsYXNz
IGhhcyBhbiBhbGxvY2F0ZSBmdW5jdGlvbiwgTlBOX0NyZWF0ZU9iamVjdCBpbnZva2VzCisgICAg
dGhhdCBmdW5jdGlvbiwgb3RoZXJ3aXNlIGEgTlBPYmplY3QgaXMgYWxsb2NhdGVkIGFuZAorICAg
IHJldHVybmVkLiBUaGlzIG1ldGhvZCB3aWxsIGluaXRpYWxpemUgdGhlIHJlZmVyZW5jZUNvdW50
IG1lbWJlciBvZgorICAgIHRoZSBOUE9iamVjdCB0byAxLgorKi8KK05QT2JqZWN0ICpOUE5fQ3Jl
YXRlT2JqZWN0KE5QUCBucHAsIE5QQ2xhc3MgKmFDbGFzcyk7CisKKy8qCisgICAgSW5jcmVtZW50
IHRoZSBOUE9iamVjdCdzIHJlZmVyZW5jZSBjb3VudC4KKyovCitOUE9iamVjdCAqTlBOX1JldGFp
bk9iamVjdChOUE9iamVjdCAqbnBvYmopOworCisvKgorICAgIERlY3JlbWVudGVkIHRoZSBOUE9i
amVjdCdzIHJlZmVyZW5jZSBjb3VudC4gIElmIHRoZSByZWZlcmVuY2UKKyAgICBjb3VudCBnb2Vz
IHRvIHplcm8sIHRoZSBjbGFzcydzIGRlc3Ryb3kgZnVuY3Rpb24gaXMgaW52b2tlIGlmCisgICAg
c3BlY2lmaWVkLCBvdGhlcndpc2UgdGhlIG9iamVjdCBpcyBmcmVlZCBkaXJlY3RseS4KKyovCit2
b2lkIE5QTl9SZWxlYXNlT2JqZWN0KE5QT2JqZWN0ICpucG9iaik7CisKKy8qCisgICAgRnVuY3Rp
b25zIHRvIGFjY2VzcyBzY3JpcHQgb2JqZWN0cyByZXByZXNlbnRlZCBieSBOUE9iamVjdC4KKwor
ICAgIENhbGxzIHRvIHNjcmlwdCBvYmplY3RzIGFyZSBzeW5jaHJvbm91cy4gIElmIGEgZnVuY3Rp
b24gcmV0dXJucyBhCisgICAgdmFsdWUsIGl0IHdpbGwgYmUgc3VwcGxpZWQgdmlhIHRoZSByZXN1
bHQgTlBWYXJpYW50CisgICAgYXJndW1lbnQuIFN1Y2Nlc3NmdWwgY2FsbHMgd2lsbCByZXR1cm4g
dHJ1ZSwgZmFsc2Ugd2lsbCBiZQorICAgIHJldHVybmVkIGluIGNhc2Ugb2YgYW4gZXJyb3IuCisg
ICAgCisgICAgQ2FsbHMgbWFkZSBmcm9tIHBsdWdpbiBjb2RlIHRvIHNjcmlwdCBtdXN0IGJlIG1h
ZGUgZnJvbSB0aGUgdGhyZWFkCisgICAgb24gd2hpY2ggdGhlIHBsdWdpbiB3YXMgaW5pdGlhbGl6
ZWQuCisqLworCitib29sIE5QTl9JbnZva2UoTlBQIG5wcCwgTlBPYmplY3QgKm5wb2JqLCBOUElk
ZW50aWZpZXIgbWV0aG9kTmFtZSwKKyAgICAgICAgICAgICAgICBjb25zdCBOUFZhcmlhbnQgKmFy
Z3MsIHVpbnQzMl90IGFyZ0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCk7Citib29sIE5QTl9JbnZv
a2VEZWZhdWx0KE5QUCBucHAsIE5QT2JqZWN0ICpucG9iaiwgY29uc3QgTlBWYXJpYW50ICphcmdz
LAorICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50ICpy
ZXN1bHQpOworYm9vbCBOUE5fRXZhbHVhdGUoTlBQIG5wcCwgTlBPYmplY3QgKm5wb2JqLCBOUFN0
cmluZyAqc2NyaXB0LAorICAgICAgICAgICAgICAgICAgTlBWYXJpYW50ICpyZXN1bHQpOworYm9v
bCBOUE5fR2V0UHJvcGVydHkoTlBQIG5wcCwgTlBPYmplY3QgKm5wb2JqLCBOUElkZW50aWZpZXIg
cHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgTlBWYXJpYW50ICpyZXN1bHQpOwor
Ym9vbCBOUE5fU2V0UHJvcGVydHkoTlBQIG5wcCwgTlBPYmplY3QgKm5wb2JqLCBOUElkZW50aWZp
ZXIgcHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgTlBWYXJpYW50ICp2
YWx1ZSk7Citib29sIE5QTl9SZW1vdmVQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmos
IE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpOworYm9vbCBOUE5fSGFzUHJvcGVydHkoTlBQIG5w
cCwgTlBPYmplY3QgKm5wb2JqLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKTsKK2Jvb2wgTlBO
X0hhc01ldGhvZChOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QSWRlbnRpZmllciBtZXRob2RO
YW1lKTsKK2Jvb2wgTlBOX0VudW1lcmF0ZShOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIE5QSWRl
bnRpZmllciAqKmlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmNvdW50
KTsKK2Jvb2wgTlBOX0NvbnN0cnVjdChOUFAgbnBwLCBOUE9iamVjdCAqbnBvYmosIGNvbnN0IE5Q
VmFyaWFudCAqYXJncywKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhcmdDb3VudCwgTlBW
YXJpYW50ICpyZXN1bHQpOworCisvKgorICAgIE5QTl9TZXRFeGNlcHRpb24gbWF5IGJlIGNhbGxl
ZCB0byB0cmlnZ2VyIGEgc2NyaXB0IGV4Y2VwdGlvbiB1cG9uCisgICAgcmV0dXJuIGZyb20gZW50
cnkgcG9pbnRzIGludG8gTlBPYmplY3RzLiAgVHlwaWNhbCB1c2FnZToKKworICAgIE5QTl9TZXRF
eGNlcHRpb24gKG5wb2JqLCBtZXNzYWdlKTsKKyovCit2b2lkIE5QTl9TZXRFeGNlcHRpb24oTlBP
YmplY3QgKm5wb2JqLCBjb25zdCBOUFVURjggKm1lc3NhZ2UpOworCisjaWZkZWYgX19jcGx1c3Bs
dXMKK30KKyNlbmRpZgorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbnB0
eXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbnB0eXBlcy5oCShy
ZXZpc2lvbiA5NDU4MykJKGZyb20gU291cmNlL1dlYkNvcmUvYnJpZGdlL25wdHlwZXMuaDo5NDU4
MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbnB0eXBlcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTIxIEBACisvKiAtKi0gTW9kZTogQzsgdGFiLXdpZHRoOiAyOyBpbmRlbnQtdGFi
cy1tb2RlOiBuaWw7IGMtYmFzaWMtb2Zmc2V0OiAyIC0qLSAqLworLyogKioqKiogQkVHSU4gTElD
RU5TRSBCTE9DSyAqKioqKgorICogVmVyc2lvbjogTVBMIDEuMS9HUEwgMi4wL0xHUEwgMi4xCisg
KgorICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgTW96aWxs
YSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uCisgKiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgKKyAqIHRoZSBMaWNl
bnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqIGh0dHA6Ly93
d3cubW96aWxsYS5vcmcvTVBMLworICoKKyAqIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsCisgKiBXSVRIT1VU
IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhl
IExpY2Vuc2UKKyAqIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHJpZ2h0cyBh
bmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlCisgKiBMaWNlbnNlLgorICoKKyAqIFRoZSBPcmlnaW5h
bCBDb2RlIGlzIG1vemlsbGEub3JnIGNvZGUuCisgKgorICogVGhlIEluaXRpYWwgRGV2ZWxvcGVy
IG9mIHRoZSBPcmlnaW5hbCBDb2RlIGlzCisgKiBtb3ppbGxhLm9yZy4KKyAqIFBvcnRpb25zIGNy
ZWF0ZWQgYnkgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGFyZSBDb3B5cmlnaHQgKEMpIDIwMDQKKyAq
IHRoZSBJbml0aWFsIERldmVsb3Blci4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBDb250
cmlidXRvcihzKToKKyAqICAgSm9obm55IFN0ZW5iYWNrIDxqc3RAbW96aWxsYS5vcmc+IChPcmln
aW5hbCBhdXRob3IpCisgKgorICogQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMg
ZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YKKyAqIGVpdGhlciB0aGUgR05VIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyIG9yIGxhdGVyICh0aGUgIkdQTCIpLCBvcgor
ICogdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMSBvciBs
YXRlciAodGhlICJMR1BMIiksCisgKiBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRo
ZSBHUEwgb3IgdGhlIExHUEwgYXJlIGFwcGxpY2FibGUgaW5zdGVhZAorICogb2YgdGhvc2UgYWJv
dmUuIElmIHlvdSB3aXNoIHRvIGFsbG93IHVzZSBvZiB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxl
IG9ubHkKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiBlaXRoZXIgdGhlIEdQTCBvciB0aGUgTEdQTCwg
YW5kIG5vdCB0byBhbGxvdyBvdGhlcnMgdG8KKyAqIHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcyBm
aWxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTVBMLCBpbmRpY2F0ZSB5b3VyCisgKiBkZWNpc2lv
biBieSBkZWxldGluZyB0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGgg
dGhlIG5vdGljZQorICogYW5kIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIEdQTCBv
ciB0aGUgTEdQTC4gSWYgeW91IGRvIG5vdCBkZWxldGUKKyAqIHRoZSBwcm92aXNpb25zIGFib3Zl
LCBhIHJlY2lwaWVudCBtYXkgdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIKKyAq
IHRoZSB0ZXJtcyBvZiBhbnkgb25lIG9mIHRoZSBNUEwsIHRoZSBHUEwgb3IgdGhlIExHUEwuCisg
KgorICogKioqKiogRU5EIExJQ0VOU0UgQkxPQ0sgKioqKiogKi8KKworI2lmbmRlZiBucHR5cGVz
X2hfCisjZGVmaW5lIG5wdHlwZXNfaF8KKworLyoKKyAqIEhlYWRlciBmaWxlIGZvciBlbnN1cmlu
ZyB0aGF0IEM5OSB0eXBlcyAoW3VdaW50MzJfdCwgW3VdaW50NjRfdCBhbmQgYm9vbCkgYW5kCisg
KiB0cnVlL2ZhbHNlIG1hY3JvcyBhcmUgYXZhaWxhYmxlLgorICovCisKKyNpZiBkZWZpbmVkKFdJ
TjMyKSB8fCBkZWZpbmVkKE9TMikKKyAgLyoKKyAgICogV2luMzIgYW5kIE9TLzIgZG9uJ3Qga25v
dyBDOTksIHNvIGRlZmluZSBbdV1pbnRfMTYvMzIvNjQgaGVyZS4gVGhlIGJvb2wKKyAgICogaXMg
cHJlZGVmaW5lZCB0aG8sIGJvdGggaW4gQyBhbmQgQysrLgorICAgKi8KKyAgdHlwZWRlZiBzaG9y
dCBpbnQxNl90OworICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVpbnQxNl90OworICB0eXBlZGVm
IGludCBpbnQzMl90OworICB0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50MzJfdDsKKyAgdHlwZWRl
ZiBsb25nIGxvbmcgaW50NjRfdDsKKyAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWludDY0
X3Q7CisjZWxpZiBkZWZpbmVkKF9BSVgpIHx8IGRlZmluZWQoX19zdW4pIHx8IGRlZmluZWQoX19v
c2ZfXykgfHwgZGVmaW5lZChJUklYKSB8fCBkZWZpbmVkKEhQVVgpCisgIC8qCisgICAqIEFJWCBh
bmQgU3VuT1Mgc2hpcCBhIGludHR5cGVzLmggaGVhZGVyIHRoYXQgZGVmaW5lcyBbdV1pbnQzMl90
LAorICAgKiBidXQgbm90IGJvb2wgZm9yIEMuCisgICAqLworICAjaW5jbHVkZSA8aW50dHlwZXMu
aD4KKworICAjaWZuZGVmIF9fY3BsdXNwbHVzCisgICAgdHlwZWRlZiBpbnQgYm9vbDsKKyAgICAj
ZGVmaW5lIHRydWUgICAxCisgICAgI2RlZmluZSBmYWxzZSAgMAorICAjZW5kaWYKKyNlbGlmIGRl
ZmluZWQoYnNkaSkgfHwgZGVmaW5lZChGUkVFQlNEKSB8fCBkZWZpbmVkKE9QRU5CU0QpCisgIC8q
CisgICAqIEJTRC9PUywgRnJlZUJTRCwgYW5kIE9wZW5CU0Qgc2hpcCBzeXMvdHlwZXMuaCB0aGF0
IGRlZmluZSBpbnQzMl90IGFuZCAKKyAgICogdV9pbnQzMl90LgorICAgKi8KKyAgI2luY2x1ZGUg
PHN5cy90eXBlcy5oPgorCisgIC8qCisgICAqIEJTRC9PUyBzaGlwcyBubyBoZWFkZXIgdGhhdCBk
ZWZpbmVzIHVpbnQzMl90LCBub3IgYm9vbCAoZm9yIEMpCisgICAqLworICAjaWYgZGVmaW5lZChi
c2RpKQorICB0eXBlZGVmIHVfaW50MzJfdCB1aW50MzJfdDsKKyAgdHlwZWRlZiB1X2ludDY0X3Qg
dWludDY0X3Q7CisKKyAgI2lmICFkZWZpbmVkKF9fY3BsdXNwbHVzKQorICAgIHR5cGVkZWYgaW50
IGJvb2w7CisgICAgI2RlZmluZSB0cnVlICAgMQorICAgICNkZWZpbmUgZmFsc2UgIDAKKyAgI2Vu
ZGlmCisgICNlbHNlCisgIC8qCisgICAqIEZyZWVCU0QgYW5kIE9wZW5CU0QgZGVmaW5lIHVpbnQz
Ml90IGFuZCBib29sLgorICAgKi8KKyAgICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAgICAjaW5j
bHVkZSA8c3RkYm9vbC5oPgorICAjZW5kaWYKKyNlbGlmIGRlZmluZWQoQkVPUykKKyAgI2luY2x1
ZGUgPGludHR5cGVzLmg+CisjZWxzZQorICAvKgorICAgKiBGb3IgdGhvc2UgdGhhdCBzaGlwIGEg
c3RhbmRhcmQgQzk5IHN0ZGludC5oIGhlYWRlciBmaWxlLCBpbmNsdWRlCisgICAqIGl0LiBDYW4n
dCBkbyB0aGUgc2FtZSBmb3Igc3RkYm9vbC5oIHRobywgc2luY2Ugc29tZSBzeXN0ZW1zIHNoaXAK
KyAgICogd2l0aCBhIHN0ZGJvb2wuaCBmaWxlIHRoYXQgZG9lc24ndCBjb21waWxlIQorICAgKi8K
KyAgI2luY2x1ZGUgPHN0ZGludC5oPgorCisgICNpZm5kZWYgX19jcGx1c3BsdXMKKyAgICAjaWYg
IWRlZmluZWQoX19HTlVDX18pIHx8IChfX0dOVUNfXyA+IDIgfHwgX19HTlVDX01JTk9SX18gPiA5
NSkKKyAgICAgICNpbmNsdWRlIDxzdGRib29sLmg+CisgICAgI2Vsc2UKKyAgICAgIC8qCisgICAg
ICAgKiBHQ0MgMi45MSBjYW4ndCBkZWFsIHdpdGggYSB0eXBlZGVmIGZvciBib29sLCBidXQgYSAj
ZGVmaW5lCisgICAgICAgKiB3b3Jrcy4KKyAgICAgICAqLworICAgICAgI2RlZmluZSBib29sIGlu
dAorICAgICAgI2RlZmluZSB0cnVlICAgMQorICAgICAgI2RlZmluZSBmYWxzZSAgMAorICAgICNl
bmRpZgorICAjZW5kaWYKKyNlbmRpZgorCisjZW5kaWYgLyogbnB0eXBlc19oXyAqLwpJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
OTQ1OTApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxMS0wOS0wNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisg
ICAgICAgIE1vdmUgTlBBUEkgaGVhZGVycyBpbiBicmlkZ2UgdG8gcGx1Z2lucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc2NjEKKworICAgICAgICBV
cGRhdGUgZm9yd2FyZGluZyBoZWFkZXJzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvdW5p
eC9UZXN0TmV0c2NhcGVQbHVnaW4vRm9yd2FyZGluZ0hlYWRlcnMvV2ViS2l0L25wYXBpLmg6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvdW5peC9UZXN0TmV0c2NhcGVQbHVnaW4vRm9yd2FyZGlu
Z0hlYWRlcnMvV2ViS2l0L25wcnVudGltZS5oOgorCiAyMDExLTA5LTA2ICBBZGFtIEJhcnRoICA8
YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIGEgaGllcmFyY2hpYWwgc3RydWN0dXJl
IGZvciB0aGUgZ2FyZGVuLW8tbWF0aWMgcmVzdWx0cyB2aWV3CkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS91bml4L1Rlc3ROZXRzY2FwZVBsdWdpbi9Gb3J3YXJkaW5nSGVhZGVycy9XZWJLaXQv
bnBhcGkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS91bml4L1Rlc3ROZXRz
Y2FwZVBsdWdpbi9Gb3J3YXJkaW5nSGVhZGVycy9XZWJLaXQvbnBhcGkuaAkocmV2aXNpb24gOTQ1
ODMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS91bml4L1Rlc3ROZXRzY2FwZVBsdWdpbi9Gb3J3
YXJkaW5nSGVhZGVycy9XZWJLaXQvbnBhcGkuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMSBAQAot
I2luY2x1ZGUgPGJyaWRnZS9ucGFwaS5oPgorI2luY2x1ZGUgPHBsdWdpbnMvbnBhcGkuaD4KSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3VuaXgvVGVzdE5ldHNjYXBlUGx1Z2luL0ZvcndhcmRp
bmdIZWFkZXJzL1dlYktpdC9ucHJ1bnRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS91bml4L1Rlc3ROZXRzY2FwZVBsdWdpbi9Gb3J3YXJkaW5nSGVhZGVycy9XZWJLaXQv
bnBydW50aW1lLmgJKHJldmlzaW9uIDk0NTgzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvdW5p
eC9UZXN0TmV0c2NhcGVQbHVnaW4vRm9yd2FyZGluZ0hlYWRlcnMvV2ViS2l0L25wcnVudGltZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xICsxIEBACi0jaW5jbHVkZSA8YnJpZGdlL25wcnVudGltZS5o
PgorI2luY2x1ZGUgPHBsdWdpbnMvbnBydW50aW1lLmg+Cg==
</data>
<flag name="review"
          id="102906"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>