<?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>137936</bug_id>
          
          <creation_ts>2014-10-21 15:49:22 -0700</creation_ts>
          <short_desc>Remove USE(CFNETWORK)+PLATFORM(COCOA) code path</short_desc>
          <delta_ts>2015-12-31 01:22:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>142540</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mitz</cc>
    
    <cc>philipj</cc>
    
    <cc>psolanki</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1043294</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-10-21 15:49:22 -0700</bug_when>
    <thetext>This C API path is currently used on iOS. It is adding tons of complexity and bug surface for questionable benefits. We should remove it and switch to the CFNetwork ObjC API which we already use on OS X.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043295</commentid>
    <comment_count>1</comment_count>
      <attachid>240227</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-10-21 15:50:37 -0700</bug_when>
    <thetext>Created attachment 240227
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043319</commentid>
    <comment_count>2</comment_count>
      <attachid>240231</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-10-21 17:29:45 -0700</bug_when>
    <thetext>Created attachment 240231
another</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043320</commentid>
    <comment_count>3</comment_count>
      <attachid>240232</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-10-21 17:33:16 -0700</bug_when>
    <thetext>Created attachment 240232
another</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043323</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-21 17:35:59 -0700</bug_when>
    <thetext>Attachment 240232 did not pass style-queue:


ERROR: Source/WebKit2/Shared/Downloads/ios/DownloadIOS.mm:1:  Could not find a newline character at the end of the file.  [whitespace/ending_newline] [5]
Total errors found: 1 in 22 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>1070106</commentid>
    <comment_count>5</comment_count>
      <attachid>246813</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-18 06:02:55 -0800</bug_when>
    <thetext>Created attachment 246813
rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070107</commentid>
    <comment_count>6</comment_count>
      <attachid>246814</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-18 07:09:12 -0800</bug_when>
    <thetext>Created attachment 246814
rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070175</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-02-18 12:03:23 -0800</bug_when>
    <thetext>I strongly oppose doing this at this time.

While using the same code path on both platforms is so obviously the way to go, there couldn&apos;t be a worse time to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070203</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-18 13:15:36 -0800</bug_when>
    <thetext>The iOS build failure on EWS is due to NSURLDownload being a private header. Internal build seems to run fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149652</commentid>
    <comment_count>9</comment_count>
      <attachid>267462</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-16 09:49:47 -0800</bug_when>
    <thetext>Created attachment 267462
Rebased onto r194115</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149692</commentid>
    <comment_count>10</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-16 11:10:51 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created attachment 267462 [details]
&gt; Rebased onto r194115

This patch still has a scheduling bug where NSURLConnection callbacks are happening on the main thread (without the WebThread lock), but I have a fix for that that I&apos;m testing locally.

This patch is looking very promising now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149861</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-12-16 19:32:42 -0800</bug_when>
    <thetext>At the time we switched to the C API it was a significant speedup. Has this changed since?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149877</commentid>
    <comment_count>12</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-16 21:22:31 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; At the time we switched to the C API it was a significant speedup. Has this
&gt; changed since?

Performance of this change has not been tested yet.  However, I think the switch to CFURLConnection occurred prior to many CF types being [re-]implemented in terms of NS types.  I plan to engage the perf team to test this change before landing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149880</commentid>
    <comment_count>13</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-16 21:26:27 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; Created attachment 267462 [details]
&gt; &gt; Rebased onto r194115
&gt; 
&gt; This patch still has a scheduling bug where NSURLConnection callbacks are
&gt; happening on the main thread (without the WebThread lock), but I have a fix
&gt; for that that I&apos;m testing locally.

Fixed scheduling issue in Page::platformInitialize() in PageMac.mm.  Also fixed a crash that happened on all quicklook tests due to the -clearHandle method being called on a class that didn&apos;t implement it.

With these fixes, the NSURLConnection loader is experiencing roughly the same crashes as the exiting CFURLConnection code path (less than 10 total crashes on a full test run).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149886</commentid>
    <comment_count>14</comment_count>
      <attachid>267532</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-16 21:33:22 -0800</bug_when>
    <thetext>Created attachment 267532
Patch to find build errors (iOS WK1 scheduling fixed; quickook tests fixed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149891</commentid>
    <comment_count>15</comment_count>
      <attachid>267533</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-16 21:40:11 -0800</bug_when>
    <thetext>Created attachment 267533
Patch to find build errors (iOS WK1 scheduling fixed; quickook tests fixed) v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149892</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-16 21:41:34 -0800</bug_when>
    <thetext>Attachment 267533 did not pass style-queue:


ERROR: Source/WebCore/platform/network/ios/QuickLook.mm:41:  *SoftLink.h header should be included after all other headers.  [build/include_order] [4]
Total errors found: 1 in 34 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>1149959</commentid>
    <comment_count>17</comment_count>
      <attachid>267553</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-17 03:14:38 -0800</bug_when>
    <thetext>Created attachment 267553
Patch to find build errors (fixes for iOS and Windows)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149962</commentid>
    <comment_count>18</comment_count>
      <attachid>267554</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-17 03:20:10 -0800</bug_when>
    <thetext>Created attachment 267554
Patch to find build errors (fixes for iOS and Windows) v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149968</commentid>
    <comment_count>19</comment_count>
      <attachid>267557</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-17 04:45:51 -0800</bug_when>
    <thetext>Created attachment 267557
Patch to find build errors (fix NSURLDownload on iOS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149990</commentid>
    <comment_count>20</comment_count>
      <attachid>267564</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-17 09:00:51 -0800</bug_when>
    <thetext>Created attachment 267564
Patch to find build errors (fix WebDownload on iOS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149997</commentid>
    <comment_count>21</comment_count>
      <attachid>267567</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-17 09:49:59 -0800</bug_when>
    <thetext>Created attachment 267567
Patch to find build errors (fix WebDownload on iOS) v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150003</commentid>
    <comment_count>22</comment_count>
      <attachid>267569</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-17 10:47:42 -0800</bug_when>
    <thetext>Created attachment 267569
Patch to find build errors (fix DownloadMac.mm on iOS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150351</commentid>
    <comment_count>23</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-12-18 11:13:45 -0800</bug_when>
    <thetext>One option would be to land https://bugs.webkit.org/show_bug.cgi?id=142540 first. It just switches the code paths (and makes them work) without deleting anything. That might be good for checking regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151355</commentid>
    <comment_count>24</comment_count>
      <attachid>267925</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-26 04:21:18 -0800</bug_when>
    <thetext>Created attachment 267925
Rebaseline onto r194421 (build is likely broken again)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151433</commentid>
    <comment_count>25</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-27 17:38:52 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; One option would be to land https://bugs.webkit.org/show_bug.cgi?id=142540
&gt; first. It just switches the code paths (and makes them work) without
&gt; deleting anything. That might be good for checking regressions.

Okay.  I need to port some fixes from this patch to that one.  Probably a better idea to land them separately anyway.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151693</commentid>
    <comment_count>26</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-31 01:22:32 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #23)
&gt; &gt; One option would be to land https://bugs.webkit.org/show_bug.cgi?id=142540
&gt; &gt; first. It just switches the code paths (and makes them work) without
&gt; &gt; deleting anything. That might be good for checking regressions.
&gt; 
&gt; Okay.  I need to port some fixes from this patch to that one.  Probably a
&gt; better idea to land them separately anyway.  :)

There is now a patch up on Bug 142540 for review.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240227</attachid>
            <date>2014-10-21 15:50:37 -0700</date>
            <delta_ts>2014-10-21 17:29:45 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>remove-cocoa-cfnetwork-2.patch</filename>
            <type>text/plain</type>
            <size>75915</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNTEyLDkgKzUxMiw2IEBACiAKICNkZWZpbmUgRE9O
VF9GSU5BTElaRV9PTl9NQUlOX1RIUkVBRCAxCiAjZGVmaW5lIEhBVkVfUkVBRExJTkUgMQotI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jZGVmaW5lIFdURl9VU0VfQ0ZORVRXT1JLIDEKLSNl
bmRpZgogI2RlZmluZSBXVEZfVVNFX1VJS0lUX0VESVRJTkcgMQogI2RlZmluZSBXVEZfVVNFX1dF
Ql9USFJFQUQgMQogI2RlZmluZSBXVEZfVVNFX1FVSUNLX0xPT0sgMQpJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4JKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNTI5LDYgKzI1MjksNyBAQCBfV2ViVGhyZWFkTG9ja0Zy
b21BbnlUaHJlYWROb0xvZwogX1dlYlRocmVhZExvY2tQb3BNb2RhbAogX1dlYlRocmVhZExvY2tQ
dXNoTW9kYWwKIF9XZWJUaHJlYWRNYWtlTlNJbnZvY2F0aW9uCitfV2ViVGhyZWFkTlNSdW5Mb29w
CiBfV2ViVGhyZWFkTm90Q3VycmVudAogX1dlYlRocmVhZFBvc3ROb3RpZmljYXRpb24KIF9XZWJU
aHJlYWRSdW4KQEAgLTI4MzEsMTAgKzI4MzIsNiBAQCBfd2tJc0dCMTgwMzBDb21wbGlhbmNlUmVx
dWlyZWQKIF93a1NldExheWVyQ29udGVudHNTY2FsZQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJ
T1MpICYmIFVTRShDRk5FVFdPUkspCi1fX1pON1dlYkNvcmUyMFJlc291cmNlSGFuZGxlQ2xpZW50
MjJ3aWxsQ2FjaGVSZXNwb25zZUFzeW5jRVBOU18xNFJlc291cmNlSGFuZGxlRVBLMjBfQ0ZDYWNo
ZWRVUkxSZXNwb25zZQotI2VuZGlmCi0KICNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogX19aTjdXZWJDb3JlMTVQcm90ZWN0aW9uU3Bh
Y2UyOGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGFFUDIwTlNVUkxQcm90ZWN0aW9uU3BhY2UK
IF9fWk43V2ViQ29yZTE2RGlza0NhY2hlTW9uaXRvckMyRVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RF
TlNfOVNlc3Npb25JREVQSzIwX0NGQ2FjaGVkVVJMUmVzcG9uc2UKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUs
MTAgQEAKICNpbmNsdWRlICJRdWlja0xvb2suaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09D
T0EpCisjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFpci5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OwpAQCAtMTQzLDcgKzE0
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGluZzsg
fQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICB2b2lk
IHNjaGVkdWxlKFNjaGVkdWxlUGFpciYpOwogICAgICAgICB2b2lkIHVuc2NoZWR1bGUoU2NoZWR1
bGVQYWlyJik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcAkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk5LDcgKzU5OSw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OnJlY2VpdmVkQ2FuY2VsbGF0aW8KICAgICBjYW5jZWwoKTsKIH0KIAotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKIAogdm9pZCBSZXNvdXJjZUxvYWRl
cjo6c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQogewpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKTsK
IAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNjaGVk
dWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAgICAgdm9pZCB1bnNjaGVkdWxlKFdURjo6U2NoZWR1
bGVQYWlyJik7CiAjZW5kaWYKQEAgLTE1NiwxMiArMTU2LDkgQEAgcHJvdGVjdGVkOgogCiAgICAg
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKCkgeyByZXR1cm4gbV9vcHRpb25z
OyB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNw
b25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBvdmVycmlkZTsKICNl
bmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwg
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSos
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwotI2VuZGlmCiAKICAgICBSZWZQdHI8
UmVzb3VyY2VIYW5kbGU+IG1faGFuZGxlOwogICAgIFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3Bw
CShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0RvY3VtZW50
TG9hZGVyTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLSNpZiBQTEFURk9STShNQUMpCi0KIHN0YXRpYyB2b2lkIHNjaGVkdWxl
QWxsKGNvbnN0IFJlc291cmNlTG9hZGVyTWFwJiBsb2FkZXJzLCBTY2hlZHVsZVBhaXImIHBhaXIp
CiB7CiAgICAgVmVjdG9yPFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4+IGxvYWRlcnNDb3B5OwpAQCAt
NjksNiArNjcsNCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp1bnNjaGVkdWxlKFNjaGVkdWxlCiAg
ICAgdW5zY2hlZHVsZUFsbChtX211bHRpcGFydFN1YnJlc291cmNlTG9hZGVycywgcGFpcik7CiB9
CiAKLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zNywyOCArMzcsOCBAQAogI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjZW5kaWYK
IAotI2lmIFVTRShDRk5FVFdPUkspCi1AaW50ZXJmYWNlIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKERl
dGFpbHMpCi0tKGlkKV9pbml0V2l0aENGQ2FjaGVkVVJMUmVzcG9uc2U6KENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYpY2FjaGVkUmVzcG9uc2U7Ci0tKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpX0NGQ2Fj
aGVkVVJMUmVzcG9uc2U7Ci1AZW5kCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0j
aWYgVVNFKENGTkVUV09SSykKLQotQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBSZXNvdXJjZUxvYWRl
cjo6d2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmIGNhY2hlZFJlc3BvbnNlKQotewotICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFj
a3MoKSA9PSBEb05vdFNlbmRDYWxsYmFja3MpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmV0
YWluUHRyPE5TQ2FjaGVkVVJMUmVzcG9uc2U+IG5zQ2FjaGVkUmVzcG9uc2UgPSBhZG9wdE5TKFtb
TlNDYWNoZWRVUkxSZXNwb25zZSBhbGxvY10gX2luaXRXaXRoQ0ZDYWNoZWRVUkxSZXNwb25zZTpj
YWNoZWRSZXNwb25zZV0pOwotICAgIHJldHVybiBbZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2ls
bENhY2hlUmVzcG9uc2UoZG9jdW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCBuc0NhY2hlZFJl
c3BvbnNlLmdldCgpKSBfQ0ZDYWNoZWRVUkxSZXNwb25zZV07Ci19Ci0KLSNlbHNlCi0KIE5TQ2Fj
aGVkVVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJj
ZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNlKQogewogICAgIGlmIChtX29w
dGlvbnMuc2VuZExvYWRDYWxsYmFja3MoKSA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBAIC02Niw4
ICs0Niw2IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWwKICAgICBy
ZXR1cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9jdW1lbnRM
b2FkZXIoKSwgaWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9CiAKLSNlbmRpZgotCiAjaWYgVVNF
KE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvUGFnZU1hYy5jcHAJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL1BhZ2VNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxNCArNDQsMTIgQEAg
dm9pZCBQYWdlOjphZGRTY2hlZHVsZVBhaXIoUGFzc1JlZlB0cjxTYwogICAgICAgICBtX3NjaGVk
dWxlZFJ1bkxvb3BQYWlycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVQYWlySGFzaFNldD4o
KTsKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycy0+YWRkKHBhaXIpOwogCi0jaWYgIVBMQVRG
T1JNKElPUykKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChE
b2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKSkKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zY2hlZHVsZSgqcGFpcik7CiAg
ICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVy
KCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2Fk
ZXItPnNjaGVkdWxlKCpwYWlyKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIC8vIEZJWE1FOiBtYWtl
IFNoYXJlZFRpbWVyTWFjIHVzZSB0aGVzZSBTY2hlZHVsZVBhaXJzLgogfQpAQCAtNjUsMTQgKzYz
LDEyIEBAIHZvaWQgUGFnZTo6cmVtb3ZlU2NoZWR1bGVQYWlyKFBhc3NSZWZQdHIKICAgICBSZWZQ
dHI8U2NoZWR1bGVQYWlyPiBwYWlyID0gcHJwUGFpcjsKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQ
YWlycy0+cmVtb3ZlKHBhaXIpOwogCi0jaWYgIVBMQVRGT1JNKElPUykKICAgICBmb3IgKEZyYW1l
KiBmcmFtZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRM
b2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIGRv
Y3VtZW50TG9hZGVyLT51bnNjaGVkdWxlKCpwYWlyKTsKICAgICAgICAgaWYgKERvY3VtZW50TG9h
ZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50
TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+dW5zY2hlZHVsZSgqcGFpcik7
CiAgICAgfQotI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0JKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1ODgsMTUgKzE1ODgsOSBAQCBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBuc0NoYWxsZW5nZSkKIHsKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIFVOVVNFRF9QQVJBTShuc0NoYWxsZW5nZSk7Ci0gICAgLy8gRklY
TUU6IDxyZGFyOi8vcHJvYmxlbS8xNTc5OTg0ND4KLSAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQog
ICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZShuc0NoYWxsZW5nZSk7CiAKICAg
ICByZXR1cm4gcGxheWVyKCktPnNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoY2hhbGxlbmdlKTsKLSNlbmRpZgogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0KiBhdlJlcXVlc3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQkocmV2aXNp
b24gMTc0OTAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTY0LDEzICs2NCw2IEBAIFdFQkNPUkVf
RVhQT1JUIHZvaWQgKCp3a0NGVVJMUmVxdWVzdEFsbG8KIFdFQkNPUkVfRVhQT1JUIENGQXJyYXlS
ZWYgKCp3a0NvcHlOU1VSTFJlc3BvbnNlQ2VydGlmaWNhdGVDaGFpbikoTlNVUkxSZXNwb25zZSop
OwogV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdFbmNvZGluZyAoKndrR2V0V2ViRGVmYXVsdENGU3Ry
aW5nRW5jb2RpbmcpKHZvaWQpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLVdFQkNPUkVfRVhQT1JU
IENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgKCp3a0dldERlZmF1bHRIVFRQQ29va2llU3RvcmFnZSko
KTsKLVdFQkNPUkVfRVhQT1JUIFdLQ0ZVUkxDcmVkZW50aWFsUmVmICgqd2tDb3B5Q3JlZGVudGlh
bEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0
aW9uU3BhY2UpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q0ZVUkxSZXF1ZXN0U2hvdWxk
Q29udGVudFNuaWZmKShDRk11dGFibGVVUkxSZXF1ZXN0UmVmLCBib29sKTsKLVdFQkNPUkVfRVhQ
T1JUIHZvaWQgKCp3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbikoQ0ZVUkxTdG9yYWdlU2Vzc2lv
blJlZiwgQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZik7Ci0jZW5kaWYKLQogV0VCQ09SRV9FWFBPUlQg
Ym9vbCAoKndrR2V0VmVydGljYWxHbHlwaHNGb3JDaGFyYWN0ZXJzKShDVEZvbnRSZWYsIGNvbnN0
IFVuaUNoYXJbXSwgQ0dHbHlwaFtdLCBzaXplX3QpOwogV0VCQ09SRV9FWFBPUlQgQ1RMaW5lUmVm
ICgqd2tDcmVhdGVDVExpbmVXaXRoVW5pQ2hhclByb3ZpZGVyKShjb25zdCBVbmlDaGFyKiAoKnBy
b3ZpZGUpKENGSW5kZXggc3RyaW5nSW5kZXgsIENGSW5kZXgqIGNoYXJDb3VudCwgQ0ZEaWN0aW9u
YXJ5UmVmKiBhdHRyaWJ1dGVzLCB2b2lkKiksIHZvaWQgKCpkaXNwb3NlKShjb25zdCBVbmlDaGFy
KiBjaGFycywgdm9pZCopLCB2b2lkKik7CiBXRUJDT1JFX0VYUE9SVCBib29sICgqd2tDVEZvbnRU
cmFuc2Zvcm1HbHlwaHMpKENURm9udFJlZiBmb250LCBDR0dseXBoIGdseXBoc1tdLCBDR1NpemUg
YWR2YW5jZXNbXSwgQ0ZJbmRleCBjb3VudCwgd2tDVEZvbnRUcmFuc2Zvcm1PcHRpb25zIG9wdGlv
bnMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC05NywxMyArOTcsNiBAQCB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVh
CiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRT
dHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CiBDRkhUVFBN
ZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwg
Q0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYg
cHJveHlQb3J0KTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi1DRkhUVFBDb29raWVTdG9yYWdlUmVm
ICgqd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UpKCk7Ci1XS0NGVVJMQ3JlZGVudGlhbFJl
ZiAoKndrQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFnZSkoQ0ZVUkxQcm90ZWN0
aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlKTsKLXZvaWQgKCp3a1NldENGVVJMUmVxdWVzdFNo
b3VsZENvbnRlbnRTbmlmZikoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiwgYm9vbCk7Ci12b2lkICgq
d2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIENGTXV0
YWJsZVVSTFJlcXVlc3RSZWYpOwotI2VuZGlmCi0KIGJvb2wgKCp3a0dldFZlcnRpY2FsR2x5cGhz
Rm9yQ2hhcmFjdGVycykoQ1RGb250UmVmLCBjb25zdCBVbmlDaGFyW10sIENHR2x5cGhbXSwgc2l6
ZV90KTsKIAogdm9pZCogd2tHZXRIeXBoZW5hdGlvbkxvY2F0aW9uQmVmb3JlSW5kZXg7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlv
blNwYWNlQmFzZS5jcHAJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgogCi0jaWYgVVNFKENG
TkVUV09SSykgJiYgIVBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFByb3RlY3Rp
b25TcGFjZVByaXYuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCShyZXZpc2lv
biAxNzQ5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUksp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbigpIGNvbnN0OwogICAgIGlkIG1ha2VEZWxl
Z2F0ZShib29sKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAjaWYgVVNFKENGTkVUV09S
SykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZik7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVT
RShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKik7CiAjZW5k
aWYKIApAQCAtMjUyLDEwICsyNTIsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIENGU3RyaW5nUmVmIHN5bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2RlKCk7CiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENGTkVUV09SSykKLSAgICBzdGF0aWMgQ0ZNdXRhYmxl
RGljdGlvbmFyeVJlZiBjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKLSNlbmRpZgotCiAgICAgdHlwZWRlZiBQYXNzUmVmUHRyPFJlc291
cmNlSGFuZGxlPiAoKkJ1aWx0aW5Db25zdHJ1Y3RvcikoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KTsKICAgICBzdGF0aWMgdm9pZCBy
ZWdpc3RlckJ1aWx0aW5Db25zdHJ1Y3Rvcihjb25zdCBBdG9taWNTdHJpbmcmIHByb3RvY29sLCBC
dWlsdGluQ29uc3RydWN0b3IpOwogCkBAIC0yOTAsMTEgKzI4NiwxMSBAQCBwcml2YXRlOgogICAg
IHZvaWQgY3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IsIENGRGljdGlv
bmFyeVJlZiBjbGllbnRQcm9wZXJ0aWVzKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAm
JiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBjcmVhdGVOU1VS
TENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Us
IGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IpOwogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShJT1MpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKElPUykK
ICAgICB2b2lkIGNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRV
c2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdC
ZWhhdmlvciwgTlNEaWN0aW9uYXJ5ICpjb25uZWN0aW9uUHJvcGVydGllcyk7CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVy
bmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUludGVybmFsLmgJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTAsMTEgKzE1MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZTsKICNlbmRpZgot
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICAgICAgUmV0YWluUHRyPE5TVVJMQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAg
ICAgICBSZXRhaW5QdHI8aWQ+IG1fZGVsZWdhdGU7Ci0jZW5kaWYKLSNpZiBQTEFURk9STShDT0NP
QSkKICAgICAgICAgYm9vbCBtX3N0YXJ0V2hlblNjaGVkdWxlZDsKICAgICAgICAgYm9vbCBtX25l
ZWRzU2l0ZVNwZWNpZmljUXVpcmtzOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAJKHJldmlz
aW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVu
dGljYXRpb25DRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEzICs1Myw4IEBAIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkMKIAogQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiBjZkNoYWxs
ZW5nZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
dXRoZW50aWNhdGlvbkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQpCi0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UoUHJvdGVjdGlvblNwYWNl
KENGVVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjZkNoYWxsZW5nZSkpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWRlbnRpYWwoQ0ZVUkxBdXRoQ2hhbGxl
bmdlR2V0UHJvcG9zZWRDcmVkZW50aWFsKGNmQ2hhbGxlbmdlKSksCi0jZWxzZQogICAgIDogQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVj
dGlvblNwYWNlKGNmQ2hhbGxlbmdlKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRlbnRpYWwoY2ZDaGFsbGVu
Z2UpKSwKLSNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGVVJMQXV0
aENoYWxsZW5nZUdldFByZXZpb3VzRmFpbHVyZUNvdW50KGNmQ2hhbGxlbmdlKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0ZVUkxSZXNwb25zZVJlZilDRlVSTEF1dGhDaGFs
bGVuZ2VHZXRGYWlsdXJlUmVzcG9uc2UoY2ZDaGFsbGVuZ2UpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENGVVJMQXV0aENoYWxsZW5nZUdldEVycm9yKGNmQ2hhbGxlbmdlKSkK
QEAgLTkzLDE0ICs4OCwxMCBAQCBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY3JlYXRlQ0YoY29uc3Qg
QXV0CiB7CiAgICAgLy8gRklYTUU6IFdoeSBub3QgY2FjaGUgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVm
IGluIG1fY2ZDaGFsbGVuZ2U/IEZvdW5kYXRpb24gY291bnRlcnBhcnQgZG9lcyB0aGF0LgogCi0j
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9IENG
VVJMQXV0aENoYWxsZW5nZUNyZWF0ZSgwLCBjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgp
LmNmU3BhY2UoKSwgY29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKS5jZkNyZWRlbnRp
YWwoKSwKLSNlbHNlCiAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlh
bCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKSkp
OwogICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gcHJvdGVjdGlvblNwYWNl
ID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKSk7CiAK
ICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgcmVzdWx0ID0gQ0ZVUkxBdXRoQ2hhbGxlbmdlQ3Jl
YXRlKDAsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSwgY3JlZGVudGlhbC5nZXQoKSwKLSNlbmRpZgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVDaGFsbGVuZ2UucHJl
dmlvdXNGYWlsdXJlQ291bnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb3JlQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmNmVVJMUmVzcG9uc2UoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlQ2hhbGxlbmdlLmVycm9y
KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJD
Rk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Db29raWVKYXJDRk5ldC5jcHAJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShXSU4pIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPD0gMTA5MCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPCA4MDAwMCkKKyNpZiBQTEFURk9STShXSU4pCiBlbnVtIHsKICAgICBDRkhU
VFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluID0gMwogfTsKQEAgLTEwMywxMyArMTAzLDkgQEAgc3RhdGljIFJldGFpblB0cjxDRkFycmF5
UmVmPiBjb3B5Q29va2llcwogewogICAgIGJvb2wgc2VjdXJlID0gdXJsLnByb3RvY29sSXMoImh0
dHBzIik7CiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSA4MDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEwMDApCi0gICAgcmV0dXJuIGFkb3B0Q0YoX0NGSFRUUENvb2tp
ZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTFdpdGhNYWluRG9jdW1lbnRVUkwoc2Vzc2lvbi5jb29r
aWVTdG9yYWdlKCkuZ2V0KCksIHVybC5jcmVhdGVDRlVSTCgpLmdldCgpLCBmaXJzdFBhcnR5LmNy
ZWF0ZUNGVVJMKCkuZ2V0KCksIHNlY3VyZSkpOwotI2Vsc2UKICAgICAvLyBfQ0ZIVFRQQ29va2ll
U3RvcmFnZUNvcHlDb29raWVzRm9yVVJMV2l0aE1haW5Eb2N1bWVudFVSTCBpcyBub3QgYXZhaWxh
YmxlIG9uIG90aGVyIHBsYXRmb3Jtcy4KICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eSk7CiAg
ICAgcmV0dXJuIGFkb3B0Q0YoQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9yVVJMKHNl
c3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmwuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgc2Vj
dXJlKSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5j
cHAJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMz
LDcgQEAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgiCi0jZWxpZiBQTEFURk9STShXSU4pCisjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1
ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNlbmRp
ZgogCkBAIC00NywyOSArNDUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDcmVkZW50aWFs
IENyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVj
dGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
UmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbENGID0gYWRvcHRDRih3a0Nv
cHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UocHJvdGVjdGlvblNwYWNlLmNmU3Bh
Y2UoKSkpOwotICAgIHJldHVybiBDcmVkZW50aWFsKGNyZWRlbnRpYWxDRi5nZXQoKSk7Ci0jZWxz
ZQogICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gcHJvdGVjdGlvblNwYWNl
Q0YgPSBhZG9wdENGKGNyZWF0ZUNGKHByb3RlY3Rpb25TcGFjZSkpOwogICAgIFJldGFpblB0cjxD
RlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWxDRiA9IGFkb3B0Q0Yod2tDb3B5Q3JlZGVudGlh
bEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKHByb3RlY3Rpb25TcGFjZUNGLmdldCgpKSk7CiAgICAg
cmV0dXJuIGNvcmUoY3JlZGVudGlhbENGLmdldCgpKTsKLSNlbmRpZgogfQogCi0jaWYgUExBVEZP
Uk0oSU9TKQotdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6c2F2ZVRvUGVyc2lzdGVudFN0b3JhZ2Uo
Y29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwm
IGNyZWRlbnRpYWwpCi17Ci0gICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VSZWY+
IHN0b3JhZ2VDRiA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZUNyZWF0ZSgwKSk7Ci0K
LSAgICBpZiAoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpID09IENyZWRlbnRpYWxQZXJzaXN0ZW5j
ZU5vbmUpIHsKLSAgICAgICAgQ3JlZGVudGlhbCBzZXNzaW9uQ3JlZGVudGlhbChjcmVkZW50aWFs
LCBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsKLSAgICAgICAgQ0ZVUkxDcmVkZW50
aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0b3JhZ2VD
Ri5nZXQoKSwgc2Vzc2lvbkNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIHByb3RlY3Rpb25TcGFj
ZS5jZlNwYWNlKCkpOwotICAgIH0gZWxzZQotICAgICAgICBDRlVSTENyZWRlbnRpYWxTdG9yYWdl
U2V0RGVmYXVsdENyZWRlbnRpYWxGb3JQcm90ZWN0aW9uU3BhY2Uoc3RvcmFnZUNGLmdldCgpLCBj
cmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKTsKLX0K
LSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQ0ZORVRX
T1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVy
cm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUVycm9yLmgJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw5ICs4
OCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RhdGFJc1VwVG9EYXRlOwogI2lmIFVTRShDRk5F
VFdPUkspCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0ZFcnJvclJlZj4gbV9wbGF0Zm9ybUVycm9y
OwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG11dGFibGUgUmV0YWluUHRyPE5TRXJyb3I+IG1f
cGxhdGZvcm1OU0Vycm9yOwotI2VuZGlmCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IG1fY2VydGlmaWNhdGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0
LmNwcAkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTUgKzUy
LDExIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oIgotI2luY2x1ZGUg
IldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUg
IldlYkNvcmVVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENvbm5lY3Rp
b25Qcml2Lmg+CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdFByaXYuaD4KICNlbmRp
ZgotI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50
ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgpAQCAtMjE4LDE0ICsyMTQsNyBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3RpCiAgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUocHJvcGVydGllc0RpY3Rpb25hcnkuZ2V0KCksIGtDRlVSTENvbm5lY3Rpb25Tb2NrZXRT
dHJlYW1Qcm9wZXJ0aWVzLCBzdHJlYW1Qcm9wZXJ0aWVzKTsKICAgICBDRlJlbGVhc2Uoc3RyZWFt
UHJvcGVydGllcyk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBpZiAoY2xpZW50KCkgJiYg
Y2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKQotICAgICAgICBkLT5tX2Nvbm5lY3Rpb25E
ZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlKHRoaXMpKTsKLSAgICBlbHNlCi0gICAgICAgIGQtPm1fY29u
bmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7Ci0jZWxzZQogICAgIGQtPm1fY29ubmVjdGlv
bkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7Ci0jZW5kaWYKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxl
Z2F0ZS0+c2V0dXBSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgQ0ZVUkxDb25uZWN0aW9u
Q2xpZW50X1Y2IGNsaWVudCA9IGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlLT5tYWtlQ29ubmVjdGlv
bkNsaWVudCgpOwpAQCAtMzQzLDEyICszMzIsOSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRS
ZWNlaXZlQXV0aGVudGljCiAKICAgICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9w
YXNzLmlzTnVsbCgpKSB7CiAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNm
Q3JlZGVudGlhbCA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGQtPm1fdXNlci5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkLT5tX3Bhc3MuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwgMCwga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkpOwot
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBDcmVk
ZW50aWFsKGNmQ3JlZGVudGlhbC5nZXQoKSk7Ci0jZWxzZQorCiAgICAgICAgIENyZWRlbnRpYWwg
Y3JlZGVudGlhbCA9IGNvcmUoY2ZDcmVkZW50aWFsLmdldCgpKTsKLSNlbmRpZgotICAgICAgICAK
KwogICAgICAgICBVUkwgdXJsVG9TdG9yZTsKICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJl
UmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkKICAgICAgICAgICAgIHVybFRvU3Rv
cmUgPSBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCk7CkBAIC0zNzcsMTIgKzM2Myw4
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWMKICAgICAgICAgICAg
ICAgICAgICAgLy8gU3RvcmUgdGhlIGNyZWRlbnRpYWwgYmFjaywgcG9zc2libHkgYWRkaW5nIGl0
IGFzIGEgZGVmYXVsdCBmb3IgdGhpcyBkaXJlY3RvcnkuCiAgICAgICAgICAgICAgICAgICAgIENy
ZWRlbnRpYWxTdG9yYWdlOjpzZXQoY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFj
ZSgpLCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkpOwogICAgICAgICAgICAgICAg
IH0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25V
c2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRp
YWwoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbHNlCiAgICAgICAg
ICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRv
cHRDRihjcmVhdGVDRihjcmVkZW50aWFsKSk7CiAgICAgICAgICAgICAgICAgQ0ZVUkxDb25uZWN0
aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQo
KSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRpZgogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDMyLDIwICs0MTQs
MTIgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKAogICAgICAgICBD
cmVkZW50aWFsU3RvcmFnZTo6c2V0KHdlYkNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2UoKSwgdXJsVG9TdG9yZSk7CiAKICAgICAgICAgaWYgKGQtPm1fY29ubmVjdGlvbikgewot
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVu
dGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIHdlYkNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCks
IGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZWxzZQogICAgICAgICAgICAg
UmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihjcmVh
dGVDRih3ZWJDcmVkZW50aWFsKSk7CiAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVk
ZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVu
Z2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2VuZGlmCiAgICAgICAgIH0KICAgICB9IGVs
c2UgaWYgKGQtPm1fY29ubmVjdGlvbikgewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBD
RlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY3JlZGVu
dGlhbC5jZkNyZWRlbnRpYWwoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsK
LSNlbHNlCiAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlh
bCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOwogICAgICAgICBDRlVSTENvbm5lY3Rp
b25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgp
LCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2VuZGlmCiAgICAgfQogCiAg
ICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwpAQCAtNTkxLDMwICs1NjUsNiBAQCBib29sIFJlc291
cmNlSGFuZGxlOjpsb2Fkc0Jsb2NrZWQoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotI2lmIFBM
QVRGT1JNKENPQ09BKQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUoU2NoZWR1bGVQYWly
JiBwYWlyKQotewotICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gcGFpci5ydW5Mb29wKCk7Ci0g
ICAgaWYgKCFydW5Mb29wKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlVSTENvbm5lY3Rpb25T
Y2hlZHVsZVdpdGhSdW5Mb29wKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgcnVuTG9vcCwgcGFpci5t
b2RlKCkpOwotICAgIGlmIChkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCkgewotICAgICAgICBDRlVS
TENvbm5lY3Rpb25TdGFydChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOwotICAgICAgICBkLT5tX3N0
YXJ0V2hlblNjaGVkdWxlZCA9IGZhbHNlOwotICAgIH0KLX0KLQotdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCi17Ci0gICAgQ0ZSdW5Mb29wUmVmIHJ1
bkxvb3AgPSBwYWlyLnJ1bkxvb3AoKTsKLSAgICBpZiAoIXJ1bkxvb3ApCi0gICAgICAgIHJldHVy
bjsKLQotICAgIENGVVJMQ29ubmVjdGlvblVuc2NoZWR1bGVGcm9tUnVuTG9vcChkLT5tX2Nvbm5l
Y3Rpb24uZ2V0KCksIHJ1bkxvb3AsIHBhaXIubW9kZSgpKTsKLX0KLSNlbmRpZgotCiBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIFJlc291cmNlSGFuZGxlOjpjdXJyZW50UmVxdWVzdCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGQtPm1fY3VycmVudFJlcXVlc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDE3NDkwMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEwICszMiw2IEBA
CiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZS5oIgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2ViS2l0U3lz
dGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9u
c2UuaAkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDkgKzUzLDYgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgbV9pc051bGwgPSAhY2ZSZXNwb25zZTsKICAgICB9Ci0j
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VSZXNwb25zZShO
U1VSTFJlc3BvbnNlICopOwotI2VuZGlmCiAjZWxzZQogICAgIFJlc291cmNlUmVzcG9uc2UoTlNV
UkxSZXNwb25zZSAqbnNSZXNwb25zZSkKICAgICAgICAgOiBtX2luaXRMZXZlbChVbmluaXRpYWxp
emVkKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJl
c3BvbnNlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAkocmV2aXNpb24gMTc0OTAwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsNiBAQAogI2luY2x1ZGUgPENGTmV0d29y
ay9DRlVSTFJlc3BvbnNlUHJpdi5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lm
IFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNl
bmRpZgotCiAvLyBXZSB3b3VsZCBsaWtlIGEgYmV0dGVyIHZhbHVlIGZvciBhIG1heGltdW0gdGlt
ZV90LAogLy8gYnV0IHRoZXJlIGlzIG5vIHdheSB0byBkbyB0aGF0IGluIEMgd2l0aCBhbnkgY2Vy
dGFpbnR5LgogLy8gSU5UX01BWCBzaG91bGQgd29yayB3ZWxsIGVub3VnaCBmb3Igb3VyIHB1cnBv
c2VzLgpAQCAtNTIsMTMgKzQ4LDkgQEAgc3RhdGljIGNvbnN0IGludCBudW1Db21tb25IZWFkZXJG
aWVsZHMgPQogQ0ZVUkxSZXNwb25zZVJlZiBSZXNvdXJjZVJlc3BvbnNlOjpjZlVSTFJlc3BvbnNl
KCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051bGwpIHsKLSNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICAgICAgbnNVUkxSZXNwb25zZSgpOwotI2Vsc2UKICAgICAgICAg
UmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBtX3VybC5jcmVhdGVDRlVSTCgpOwogICAgICAgICAv
LyBGSVhNRTogVGhpcyBjcmVhdGVzIGEgdmVyeSBpbmNvbXBsZXRlIENGVVJMUmVzcG9uc2UsIHdo
aWNoIGRvZXMgbm90IGV2ZW4gaGF2ZSBhIHN0YXR1cyBjb2RlLgogICAgICAgICBtX2NmUmVzcG9u
c2UgPSBhZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJsLmdldCgpLCBtX21pbWVUeXBl
LnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
LCBtX3RleHRFbmNvZGluZ05hbWUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NG
VVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOwotI2VuZGlmCiAgICAgfQogCiAgICAgcmV0dXJuIG1f
Y2ZSZXNwb25zZS5nZXQoKTsKQEAgLTExOSw5ICsxMTEsNiBAQCB2b2lkIFJlc291cmNlUmVzcG9u
c2U6OnBsYXRmb3JtTGF6eUluaXQoCiAKIENlcnRpZmljYXRlSW5mbyBSZXNvdXJjZVJlc3BvbnNl
OjpwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgcmV0dXJuIENlcnRpZmljYXRlSW5mbyhhZG9wdENGKHdrQ29weU5TVVJMUmVzcG9uc2VD
ZXJ0aWZpY2F0ZUNoYWluKG5zVVJMUmVzcG9uc2UoKSkpKTsKLSNlbmRpZgogICAgIHJldHVybiBD
ZXJ0aWZpY2F0ZUluZm8oKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCShyZXZpc2lvbiAxNzQ5
MDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxD
b2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsNiBAQAogI2luY2x1ZGUgPFNlY3Vy
aXR5L1NlY0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMQ3JlZGVudGlhbCogQ0ZVUkxDcmVk
ZW50aWFsUmVmOwotI2VuZGlmCi0KIE9CSkNfQ0xBU1MgTlNVUkxDcmVkZW50aWFsOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC01MiwxOCArNDgsMTIgQEAgcHVibGljOgogCiAgICAgQ3JlZGVu
dGlhbChjb25zdCBDcmVkZW50aWFsJiwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlKTsKIAotI2lmIFVT
RShDRk5FVFdPUkspCi0gICAgZXhwbGljaXQgQ3JlZGVudGlhbChDRlVSTENyZWRlbnRpYWxSZWYp
OwotI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ3JlZGVudGlhbChOU1VSTENy
ZWRlbnRpYWwgKik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsK
IAogICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fbnNDcmVkZW50aWFsICYmIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEobV9uc0NyZWRl
bnRpYWwuZ2V0KCkpOyB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJMQ3JlZGVudGlh
bFJlZiBjZkNyZWRlbnRpYWwoKSBjb25zdDsKLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIE5T
VVJMQ3JlZGVudGlhbCAqbnNDcmVkZW50aWFsKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgYm9vbCBw
bGF0Zm9ybUNvbXBhcmUoY29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IENyZWRlbnRpYWwmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
Q3JlZGVudGlhbENvY29hLm1tCShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzMsMTMgKzMzLDYgQEAgZW51bSB7CiB9OwogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotQGludGVyZmFjZSBOU1VSTENyZWRlbnRpYWwgKFdlYkRldGFpbHMpCi0tIChpZClfaW5pdFdp
dGhDRlVSTENyZWRlbnRpYWw6KENGVVJMQ3JlZGVudGlhbFJlZiljcmVkZW50aWFsOwotLSAoQ0ZV
UkxDcmVkZW50aWFsUmVmKSBfQ0ZVUkxDcmVkZW50aWFsOwotQGVuZAotI2VuZGlmCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHRvTlNV
UkxDcmVkZW50aWFsUGVyc2lzdGVuY2UoQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNl
KQpAQCAtOTgsMjYgKzkxLDEyIEBAIENyZWRlbnRpYWw6OkNyZWRlbnRpYWwoY29uc3QgQ3JlZGVu
dGlhbCYKICAgICB9CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ3JlZGVudGlhbDo6Q3JlZGVu
dGlhbChDRlVSTENyZWRlbnRpYWxSZWYgY3JlZGVudGlhbCkKLSAgICA6IENyZWRlbnRpYWwoYWRv
cHROUyhbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10gX2luaXRXaXRoQ0ZVUkxDcmVkZW50aWFsOmNy
ZWRlbnRpYWxdKS5nZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBDcmVkZW50aWFsOjpDcmVkZW50aWFs
KE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkKICAgICA6IENyZWRlbnRpYWxCYXNlKGNyZWRl
bnRpYWwudXNlciwgY3JlZGVudGlhbC5wYXNzd29yZCwgdG9DcmVkZW50aWFsUGVyc2lzdGVuY2Uo
Y3JlZGVudGlhbC5wZXJzaXN0ZW5jZSkpCiAgICAgLCBtX25zQ3JlZGVudGlhbChjcmVkZW50aWFs
KQogewogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJMQ3JlZGVudGlhbFJlZiBDcmVkZW50
aWFsOjpjZkNyZWRlbnRpYWwoKSBjb25zdAotewotICAgIHJldHVybiBbbnNDcmVkZW50aWFsKCkg
X0NGVVJMQ3JlZGVudGlhbF07Ci19Ci0jZW5kaWYKLQogTlNVUkxDcmVkZW50aWFsICpDcmVkZW50
aWFsOjpuc0NyZWRlbnRpYWwoKSBjb25zdAogewogICAgIGlmIChtX25zQ3JlZGVudGlhbCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLmgJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EuaAkod29y
a2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDYgQEAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VC
YXNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNFKENGTkVUV09SSykK
LXR5cGVkZWYgc3RydWN0IF9DRlVSTFByb3RlY3Rpb25TcGFjZSogQ0ZVUkxQcm90ZWN0aW9uU3Bh
Y2VSZWY7Ci0jZW5kaWYKLQogT0JKQ19DTEFTUyBOU1VSTFByb3RlY3Rpb25TcGFjZTsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsOSArNDMsNiBAQCBwdWJsaWM6CiAKICAgICBQcm90ZWN0
aW9uU3BhY2UoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIGRlbGV0ZWRWYWx1ZSkgOiBQ
cm90ZWN0aW9uU3BhY2VCYXNlKGRlbGV0ZWRWYWx1ZSkgeyB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotICAgIGV4cGxpY2l0IFByb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZik7
Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBQcm90ZWN0aW9uU3BhY2UoTlNV
UkxQcm90ZWN0aW9uU3BhY2UgKik7CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUo
Y29uc3QgUHJvdGVjdGlvblNwYWNlJiBhLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGIpOwpAQCAt
NjAsOSArNTMsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlY2VpdmVz
Q3JlZGVudGlhbFNlY3VyZWx5KCkgY29uc3Q7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENG
VVJMUHJvdGVjdGlvblNwYWNlUmVmIGNmU3BhY2UoKSBjb25zdDsKLSNlbmRpZgogICAgIFdFQkNP
UkVfRVhQT1JUIE5TVVJMUHJvdGVjdGlvblNwYWNlICpuc1NwYWNlKCkgY29uc3Q7CiAKIHByaXZh
dGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rp
b25TcGFjZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0JKHJldmlzaW9uIDE3NDkwMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDIyICsyNiw4IEBACiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIlByb3RlY3Rpb25TcGFjZUNvY29hLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotQGludGVyZmFjZSBOU1VSTFByb3RlY3Rpb25TcGFjZSAoV2ViRGV0YWlscykKLS0gKENGVVJM
UHJvdGVjdGlvblNwYWNlUmVmKSBfQ0ZVUkxQcm90ZWN0aW9uU3BhY2U7Ci0tIChpZClfaW5pdFdp
dGhDRlVSTFByb3RlY3Rpb25TcGFjZTooQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpY2ZQcm90U3Bh
Y2U7Ci1AZW5kCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVU
V09SSykKLVByb3RlY3Rpb25TcGFjZTo6UHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNw
YWNlUmVmIHNwYWNlKQotICAgIDogUHJvdGVjdGlvblNwYWNlKGFkb3B0TlMoW1tOU1VSTFByb3Rl
Y3Rpb25TcGFjZSBhbGxvY10gX2luaXRXaXRoQ0ZVUkxQcm90ZWN0aW9uU3BhY2U6c3BhY2VdKS5n
ZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBzdGF0aWMgUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZSB0
eXBlKE5TVVJMUHJvdGVjdGlvblNwYWNlICpzcGFjZSkKIHsKICAgICBpZiAoW3NwYWNlIGlzUHJv
eHldKSB7CkBAIC0xMDUsMTMgKzkxLDYgQEAgUHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9uU3Bh
Y2UoTlNVUkxQcgogICAgIG1fbnNTcGFjZSA9IHNwYWNlOwogfQogCi0jaWYgVVNFKENGTkVUV09S
SykKLUNGVVJMUHJvdGVjdGlvblNwYWNlUmVmIFByb3RlY3Rpb25TcGFjZTo6Y2ZTcGFjZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIFtuc1NwYWNlKCkgX0NGVVJMUHJvdGVjdGlvblNwYWNlXTsKLX0K
LSNlbmRpZgotCiBOU1VSTFByb3RlY3Rpb25TcGFjZSAqUHJvdGVjdGlvblNwYWNlOjpuc1NwYWNl
KCkgY29uc3QKIHsKICAgICBpZiAobV9uc1NwYWNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENv
Y29hLm1tCShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Mywx
NSArNTMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBOU1VSTFJlcXVlc3QgKlJlc291cmNlUmVx
dWVzdDo6bnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNvbnN0
CiB7CiAgICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KGJvZHlQb2xpY3kpOwotI2lmIFVTRShDRk5F
VFdPUkspCi0gICAgaWYgKCFtX25zUmVxdWVzdCkKLSAgICAgICAgY29uc3RfY2FzdDxSZXNvdXJj
ZVJlcXVlc3QqPih0aGlzKS0+dXBkYXRlTlNVUkxSZXF1ZXN0KCk7Ci0jZW5kaWYKICAgICByZXR1
cm4gW1ttX25zUmVxdWVzdC5nZXQoKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAotI2lmICFV
U0UoQ0ZORVRXT1JLKQotCiBDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJl
cXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9keVBvbGljeSkgY29uc3QKIHsKICAgICByZXR1
cm4gW25zVVJMUmVxdWVzdChib2R5UG9saWN5KSBfQ0ZVUkxSZXF1ZXN0XTsKQEAgLTI0OCw4ICsy
NDIsNiBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24oCiAgICAgbV9u
c1JlcXVlc3QgPSBhZG9wdE5TKHdrQ29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24oc3RvcmFn
ZVNlc3Npb24sIG1fbnNSZXF1ZXN0LmdldCgpKSk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRX
T1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NP
QSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNr
TG9vay5oCShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9RdWlja0xvb2suaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTEgKzQ0LDYgQEAgT0JK
Q19DTEFTUyBOU1VSTENvbm5lY3Rpb247CiBPQkpDX0NMQVNTIE5TVVJMUmVzcG9uc2U7CiBPQkpD
X0NMQVNTIFFMUHJldmlld0NvbnZlcnRlcjsKIAotI2lmIFVTRShDRk5FVFdPUkspCi10eXBlZGVm
IHN0cnVjdCBfQ0ZVUkxSZXNwb25zZSogQ0ZVUkxSZXNwb25zZVJlZjsKLXR5cGVkZWYgc3RydWN0
IF9DRlVSTENvbm5lY3Rpb24qIENGVVJMQ29ubmVjdGlvblJlZjsKLSNlbmRpZgotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFF1aWNrTG9va0hhbmRsZUNsaWVudDsKQEAgLTg2LDkgKzgx
LDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3VsZENyZWF0
ZUZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJjZUhhbmRsZSosIE5TVVJMQ29ubmVjdGlv
biAqLCBOU1VSTFJlc3BvbnNlICosIGlkIGRlbGVnYXRlKTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGUoUmVzb3Vy
Y2VIYW5kbGUqLCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUqLCBDRlVSTFJlc3BvbnNlUmVmKTsKLSNlbmRpZgogICAgIC8vIEZJWE1FOiBVc2Ugb2YgUmVz
b3VyY2VMb2FkZXIgaGVyZSBpcyBhIHBsYXRmb3JtIHZpb2xhdGlvbi4KICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJlc291
cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCkBAIC0xMDAsOSArOTIsNiBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGYWlsKCk7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBOU1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNlKCk7Ci0jaWYgVVNFKENGTkVUV09S
SykKLSAgICBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UoKTsKLSNlbmRpZgogCiAgICAgdm9p
ZCBzZXRDbGllbnQoUGFzc1JlZlB0cjxRdWlja0xvb2tIYW5kbGVDbGllbnQ+IGNsaWVudCkgeyBt
X2NsaWVudCA9IGNsaWVudDsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9RdWlja0xvb2subW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0JKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDE1ICs0OCw2IEBACiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0IDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5ldHdv
cmsvQ0ZVUkxDb25uZWN0aW9uLmg+Ci0KLUBpbnRlcmZhY2UgTlNVUkxSZXNwb25zZSAoUXVpY2tM
b29rRGV0YWlscykKLSsoTlNVUkxSZXNwb25zZSAqKV9yZXNwb25zZVdpdGhDRlVSTFJlc3BvbnNl
OihDRlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNlOwotLShDRlVSTFJlc3BvbnNlUmVmKV9DRlVSTFJl
c3BvbnNlOwotQGVuZAotI2VuZGlmCi0KIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoUXVp
Y2tMb29rKQogU09GVF9MSU5LX0NMQVNTKFF1aWNrTG9vaywgUUxQcmV2aWV3Q29udmVydGVyKQog
U09GVF9MSU5LX01BWV9GQUlMKFF1aWNrTG9vaywgUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5
cGVzLCBOU1NldCAqLCAoKSwgKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbQkocmV2aXNpb24gMTc0
OTAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VIYW5k
bGVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMzkgKzEgQEAKLS8vCi0vLyAgUmVzb3VyY2VI
YW5kbGVJUGhvbmUubW0KLS8vICBXZWJDb3JlCi0vLwotLy8gIENvcHlyaWdodCAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgotCi0jaWYgVVNFKENGTkVUV09SSykKLQot
I2ltcG9ydCA8Q0ZOZXR3b3JrL0NGU29ja2V0U3RyZWFtUHJpdi5oPgotI2ltcG9ydCA8Rm91bmRh
dGlvbi9OU1VSTFJlcXVlc3RQcml2YXRlLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNGTXV0YWJsZURpY3Rpb25hcnlSZWYgUmVzb3VyY2VI
YW5kbGU6OmNyZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBOU1N0cmluZyAqaG9zdCA9IHJlcXVlc3QudXJsKCku
aG9zdCgpOwotICAgIE5TQXJyYXkgKmNlcnRBcnJheSA9IFtOU1VSTFJlcXVlc3QgYWxsb3dzU3Bl
Y2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdDpob3N0XTsKLSAgICBCT09MIGFsbG93c0FueUNl
cnRpZmljYXRlID0gW05TVVJMUmVxdWVzdCBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlRm9ySG9z
dDpob3N0XTsKLSAgICBpZiAoIWNlcnRBcnJheSAmJiAhYWxsb3dzQW55Q2VydGlmaWNhdGUpCi0g
ICAgICAgIHJldHVybiAwOwotCi0gICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBzc2xQcm9wcyA9
IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5
cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNr
cyk7Ci0gICAgaWYgKGNlcnRBcnJheSkKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3Ns
UHJvcHMsIF9rQ0ZTdHJlYW1TU0xUcnVzdGVkTGVhZkNlcnRpZmljYXRlcywgKENGVHlwZVJlZikg
Y2VydEFycmF5KTsKLQotICAgIGlmIChhbGxvd3NBbnlDZXJ0aWZpY2F0ZSkKLSAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoc3NsUHJvcHMsIGtDRlN0cmVhbVNTTFZhbGlkYXRlc0NlcnRpZmlj
YXRlQ2hhaW4sIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgcmV0dXJuIHNzbFByb3BzOwotfQotCi19
Ci0KLSNlbmRpZgorLy8gUmVtb3ZlIG1lCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VSZXF1ZXN0SU9TLm1tCShyZXZpc2lv
biAxNzQ5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJj
ZVJlcXVlc3RJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwLDQ0ICs0MCw2IEBAIGJvb2wgUmVz
b3VyY2VSZXF1ZXN0Ojp1c2VRdWlja0xvb2tSZXNvdXIKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1SZXNvdXJjZVJlcXVlc3Q6OlJlc291cmNlUmVxdWVzdChO
U1VSTFJlcXVlc3QgKm5zUmVxdWVzdCkKLSAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoKQotICAg
ICwgbV9tYWluUmVzb3VyY2VSZXF1ZXN0KGZhbHNlKQotICAgICwgbV9jZlJlcXVlc3QoW25zUmVx
dWVzdCBfQ0ZVUkxSZXF1ZXN0XSkKLSAgICAsIG1fbnNSZXF1ZXN0KG5zUmVxdWVzdCkKLXsKLX0K
LQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZU5TVVJMUmVxdWVzdCgpCi17Ci0gICAgaWYg
KG1fY2ZSZXF1ZXN0KQotICAgICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMoW1tOU011dGFibGVV
UkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6bV9jZlJlcXVlc3QuZ2V0KCld
KTsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmNsZWFyT3JVcGRhdGVOU1VSTFJlcXVlc3Qo
KQotewotICAgIC8vIFRoZXJlIGlzIGNsaWVudCBjb2RlIHRoYXQgZXh0ZW5kcyBOU1VSTFJlcXVl
c3QgYW5kIGV4cGVjdHMgdG8gZ2V0IGJhY2ssIGluIHRoZSBkZWxlZ2F0ZQotICAgIC8vIGNhbGxi
YWNrcywgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgdGhhdCB0aGV5IHBhc3NlZCBpbnRvIFdl
YktpdC4gVG8ga2VlcCB0aGVuIHJ1bm5pbmcsIHdlCi0gICAgLy8gY3JlYXRlIGFuIG9iamVjdCBv
ZiB0aGUgc2FtZSB0eXBlIGFuZCByZXR1cm4gdGhhdC4gU2VlIDxyZGFyOi8vOTg0MzU4Mj4uCi0g
ICAgLy8gQWxzbywgZGV2ZWxvcGVycyByZWFsbHkgcmVhbGx5IHdhbnQgYW4gTlNNdXRhYmxlVVJM
UmVxdWVzdCBzbyB0cnkgdG8gY3JlYXRlIGFuCi0gICAgLy8gTlNNdXRhYmxlVVJMUmVxdWVzdCBp
bnN0ZWFkIG9mIE5TVVJMUmVxdWVzdC4KLSAgICBzdGF0aWMgQ2xhc3MgbnNVUkxSZXF1ZXN0Q2xh
c3MgPSBbTlNVUkxSZXF1ZXN0IGNsYXNzXTsKLSAgICBzdGF0aWMgQ2xhc3MgbnNNdXRhYmxlVVJM
UmVxdWVzdENsYXNzID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgY2xhc3NdOwotICAgIENsYXNzIHJl
cXVlc3RDbGFzcyA9IFttX25zUmVxdWVzdC5nZXQoKSBjbGFzc107Ci0KLSAgICBpZiAoIW1fY2ZS
ZXF1ZXN0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAocmVxdWVzdENsYXNzICYmIHJlcXVl
c3RDbGFzcyAhPSBuc1VSTFJlcXVlc3RDbGFzcyAmJiByZXF1ZXN0Q2xhc3MgIT0gbnNNdXRhYmxl
VVJMUmVxdWVzdENsYXNzKQotICAgICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMoW1tyZXF1ZXN0
Q2xhc3MgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDptX2NmUmVxdWVzdC5nZXQoKV0pOwot
ICAgIGVsc2UKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBudWxscHRyOwotfQotCi0jZW5kaWYgLy8g
VVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0
aGVudGljYXRpb25NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0JKHJldmlzaW9uIDE3NDkwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiwyNiArMzIsMTEgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFBy
b3RlY3Rpb25TcGFjZS5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLQotQGludGVyZmFjZSBOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIChEZXRhaWxzKQotI2lmIFBMQVRGT1JNKElPUykKLSso
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKV9jcmVhdGVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUZvckNGQXV0aENoYWxsZW5nZTooQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKWNmQ2hhbGxlbmdl
IHNlbmRlcjooaWQgPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI+KXNlbmRlcjsK
LSNlbHNlCi0rKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKilfYXV0aGVudGljYXRpb25D
aGFsbGVuZ2VGb3JDRkF1dGhDaGFsbGVuZ2U6KENGVVJMQXV0aENoYWxsZW5nZVJlZiljZkNoYWxs
ZW5nZSBzZW5kZXI6KGlkIDxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyPilzZW5k
ZXI7Ci0jZW5kaWYKLUBlbmQKLQotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBAaW50ZXJmYWNlIFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVy
IDogTlNPYmplY3QgPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI+CiB7CiAgICAg
QXV0aGVudGljYXRpb25DbGllbnQqIG1fY2xpZW50OwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAg
Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIG1fY2ZDaGFsbGVuZ2U7Ci0jZW5kaWYKIH0KIC0gKGlkKWlu
aXRXaXRoQXV0aGVudGljYXRpb25DbGllbnQ6KEF1dGhlbnRpY2F0aW9uQ2xpZW50KiljbGllbnQ7
CiAtIChBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50OwpAQCAtOTcsNDcgKzgyLDEwIEBAIC0g
KHZvaWQpY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE4KICAgICAgICAgbV9jbGllbnQt
PnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvcmUoY2hhbGxlbmdlKSk7CiB9CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotLSAodm9pZClzZXRDRkNoYWxsZW5nZTooQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKWNo
YWxsZW5nZQotewotICAgIG1fY2ZDaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7Ci19Ci0KLS0gKENGVVJM
QXV0aENoYWxsZW5nZVJlZiljZkNoYWxsZW5nZQotewotICAgIHJldHVybiBtX2NmQ2hhbGxlbmdl
OwotfQotI2VuZGlmCi0KIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENG
TkVUV09SSykKLQotQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY29yZShOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlICptYWNDaGFsbGVuZ2UpCi17Ci0gICAgV2ViQ29yZUF1dGhlbnRpY2F0aW9u
Q2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgKmNoYWxsZW5nZVNlbmRlciA9IChXZWJDb3JlQXV0aGVu
dGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciopIFttYWNDaGFsbGVuZ2Ugc2VuZGVyXTsK
LSAgICByZXR1cm4gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoW2NoYWxsZW5nZVNlbmRlciBjZkNo
YWxsZW5nZV0sIFtjaGFsbGVuZ2VTZW5kZXIgY2xpZW50XSk7Ci19Ci0KLU5TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgKm1hYyhjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNo
YWxsZW5nZSkKLXsKLSAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0aENsaWVudCA9IGNvcmVD
aGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKTsKLSAgICBSZXRhaW5QdHI8V2ViQ29yZUF1
dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXI+IGNoYWxsZW5nZVNlbmRlciA9IGFk
b3B0TlMoW1tXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciBhbGxv
Y10gaW5pdFdpdGhBdXRoZW50aWNhdGlvbkNsaWVudDphdXRoQ2xpZW50XSk7Ci0gICAgUmV0YWlu
UHRyPENGVVJMQXV0aENoYWxsZW5nZVJlZj4gYXV0aENoYWxsZW5nZSA9IGNvcmVDaGFsbGVuZ2Uu
Y2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCk7Ci0gICAgaWYgKCFhdXRoQ2hhbGxlbmdlKQotICAgICAg
ICBhdXRoQ2hhbGxlbmdlID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlKSk7Ci0gICAg
W2NoYWxsZW5nZVNlbmRlci5nZXQoKSBzZXRDRkNoYWxsZW5nZTphdXRoQ2hhbGxlbmdlLmdldCgp
XTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgcmV0dXJuIFtbTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSBfY3JlYXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VGb3JDRkF1dGhDaGFsbGVuZ2U6
YXV0aENoYWxsZW5nZS5nZXQoKSBzZW5kZXI6Y2hhbGxlbmdlU2VuZGVyLmdldCgpXSBhdXRvcmVs
ZWFzZV07Ci0jZWxzZQotICAgIHJldHVybiBbW05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
X2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRm9yQ0ZBdXRoQ2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2Uu
Z2V0KCkgc2VuZGVyOmNoYWxsZW5nZVNlbmRlci5nZXQoKV0gYXV0b3JlbGVhc2VdOwotI2VuZGlm
Ci19Ci0KLSNlbHNlCi0KIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDcmVkZW50aWFs
JiBwcm9wb3NlZENyZWRlbnRpYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsCkBAIC0yMTEsNiAr
MTU5LDQgQEAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY29yZShOU1VSTEF1dGhlbgogICAgIHJl
dHVybiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtYWNDaGFsbGVuZ2UpOwogfQogCi0jZW5kaWYg
Ly8gVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQko
cmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
Q29va2llSmFyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIlBsYXRmb3JtQ29va2llSmFyLmgiCiAKLSNpZiAhVVNFKENG
TkVUV09SSykKLQogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJDb29raWUu
aCIKICNpbXBvcnQgIkNvb2tpZVN0b3JhZ2UuaCIKQEAgLTIyMiw1ICsyMjAsMyBAQCB2b2lkIGRl
bGV0ZUFsbENvb2tpZXNNb2RpZmllZEFmdGVyRGF0ZShjCiB9CiAKIH0KLQotI2VuZGlmIC8vICFV
U0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
Q3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0JKHJldmlzaW9uIDE3NDkw
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9y
YWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKIAotI2lmICFVU0UoQ0ZORVRX
T1JLKQotCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYWMuaCIKICNpbmNsdWRlICJDcmVkZW50
aWFsLmgiCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCkBAIC01Miw1ICs1MCwzIEBAIHZv
aWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNhdmVUb1BlcnNpc3RlbnQKICNlbmRpZgogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJl
YW1NYWMuaAkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjks
NiBAQAogI2lmbmRlZiBGb3JtRGF0YVN0cmVhbU1hY19oCiAjZGVmaW5lIEZvcm1EYXRhU3RyZWFt
TWFjX2gKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMUmVxdWVzdCogQ0ZVUkxSZXF1ZXN0UmVmOwpA
QCAtNDksNiArNDcsNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogCiAjZW5kaWYgLy8gRm9ybURhdGFT
dHJlYW1NYWNfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9y
bURhdGFTdHJlYW1NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0JKHJldmlzaW9uIDE3NDkwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIkZvcm1EYXRhU3RyZWFtTWFjLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9y
dCAiRm9ybURhdGEuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKICNpbXBvcnQg
PHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC01Miw1ICs1MCwzIEBAIEZvcm1EYXRhKiBodHRwQm9keUZy
b21TdHJlYW0oTlNJbnB1dFN0cmUKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gIVVTRShDRk5FVFdPUkspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0JKHJldmlzaW9uIDE3NDkw
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSw2IEBACiAjaW1wb3J0IDxDb3JlRm91
bmRhdGlvbi9DRkVycm9yLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAot
I2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQgPENGTmV0d29yay9D
RlNvY2tldFN0cmVhbVByaXYuaD4KLSNlbmRpZgotCiBAaW50ZXJmYWNlIE5TRXJyb3IgKFdlYkV4
dHJhcykKIC0gKE5TU3RyaW5nICopX3dlYl9sb2NhbGl6ZWREZXNjcmlwdGlvbjsKIEBlbmQKQEAg
LTkxLDg1ICs4Nyw2IEBAIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIK
IAogQGVuZAogCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotc3RhdGljIE5TRXJyb3IgKk5TRXJyb3JG
cm9tQ0ZFcnJvcihDRkVycm9yUmVmIGNmRXJyb3IsIE5TVVJMICp1cmwpCi17Ci0gICAgQ0ZJbmRl
eCBlcnJDb2RlID0gQ0ZFcnJvckdldENvZGUoY2ZFcnJvcik7Ci0gICAgaWYgKENGRXF1YWwoQ0ZF
cnJvckdldERvbWFpbihjZkVycm9yKSwga0NGRXJyb3JEb21haW5DRk5ldHdvcmspICYmIGVyckNv
ZGUgPD0ga0NGVVJMRXJyb3JVbmtub3duICYmIGVyckNvZGUgPiAtNDAwMCkgewotICAgICAgICAv
LyBUaGlzIGlzIGFuIFVSTCBlcnJvciBhbmQgbmVlZHMgdG8gYmUgdHJhbnNsYXRlZCB0byB0aGUg
TlNVUkxFcnJvckRvbWFpbgotICAgICAgICBpZCBrZXlzWzEwXSwgdmFsdWVzWzEwXTsKLSAgICAg
ICAgQ0ZEaWN0aW9uYXJ5UmVmIHVzZXJJbmZvID0gQ0ZFcnJvckNvcHlVc2VySW5mbyhjZkVycm9y
KTsKLSAgICAgICAgTlNFcnJvciAqcmVzdWx0OwotICAgICAgICBOU0ludGVnZXIgY291bnQgPSAw
OwotCi0gICAgICAgIGlmICh1cmwpIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNVUkxF
cnJvckZhaWxpbmdVUkxFcnJvcktleTsKLSAgICAgICAgICAgIHZhbHVlc1tjb3VudF0gPSB1cmw7
Ci0gICAgICAgICAgICBjb3VudCArKzsKLQotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU1VS
TEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5OwotICAgICAgICAgICAgdmFsdWVzW2NvdW50
XSA9IFt1cmwgYWJzb2x1dGVTdHJpbmddOwotICAgICAgICAgICAgY291bnQgKys7Ci0gICAgICAg
IH0KLQotICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVz
ZXJJbmZvLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0aW9uS2V5KTsKLSAgICAgICAgaWYgKHZh
bHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWREZXNj
cmlwdGlvbktleTsKLSAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSAgICAgICAg
dmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGRXJy
b3JMb2NhbGl6ZWRGYWlsdXJlUmVhc29uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0p
IHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJy
b3JLZXk7Ci0gICAgICAgICAgICBjb3VudCArKzsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVl
c1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRkVycm9yTG9j
YWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0p
IHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rp
b25FcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAi
LVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICAgICAgaWYgKHVzZXJJbmZvICYmICh2YWx1
ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZTdHJlYW1Q
cm9wZXJ0eVNTTFBlZXJDZXJ0aWZpY2F0ZXMpKSAhPSBuaWwpIHsKLSAgICAgICAgICAgIC8vIE5l
ZWQgdG8gdHJhbnNsYXRlIHRoZSBjZXJ0Ci0gICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNF
cnJvclBlZXJDZXJ0aWZpY2F0ZUNoYWluS2V5IjsKLSAgICAgICAgICAgIGNvdW50ICsrOwotCi0g
ICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJ
bmZvLCBfa0NGU3RyZWFtUHJvcGVydHlTU0xDbGllbnRDZXJ0aWZpY2F0ZXMpOwotICAgICAgICAg
ICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAi
TlNFcnJvckNsaWVudENlcnRpZmljYXRlQ2hhaW5LZXkiOwotICAgICAgICAgICAgICAgIGNvdW50
ICsrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNG
RGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBfa0NGU3RyZWFtUHJvcGVydHlTU0xDbGllbnRD
ZXJ0aWZpY2F0ZVN0YXRlKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZXNbY291bnRdKSB7Ci0gICAg
ICAgICAgICAgICAga2V5c1tjb3VudF0gPSBAIk5TRXJyb3JDbGllbnRDZXJ0aWZpY2F0ZVN0YXRl
S2V5IjsKLSAgICAgICAgICAgICAgICBjb3VudCArKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotCi0gICAgICAgIGlmICh1c2VySW5mbyAm
JiAodmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NG
U3RyZWFtUHJvcGVydHlTU0xQZWVyVHJ1c3QpKSAhPSBuaWwpIHsKLSAgICAgICAgICAgIGtleXNb
Y291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxQZWVyVHJ1c3RFcnJvcktleTsKLSAgICAgICAg
ICAgIGNvdW50Kys7Ci0gICAgICAgIH0KLQotICAgICAgICBrZXlzW2NvdW50XSA9IE5TVW5kZXJs
eWluZ0Vycm9yS2V5OwotICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKWNmRXJyb3I7Ci0gICAg
ICAgIGNvdW50ICsrOwotCi0gICAgICAgIHJlc3VsdCA9IFtXZWJDdXN0b21OU1VSTEVycm9yIGVy
cm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6KGVyckNvZGUgPT0ga0NGVVJMRXJy
b3JVbmtub3duID8gKENGSW5kZXgpTlNVUkxFcnJvclVua25vd24gOiBlcnJDb2RlKSB1c2VySW5m
bzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0czp2YWx1ZXMgZm9yS2V5czprZXlz
IGNvdW50OmNvdW50XV07Ci0gICAgICAgIGlmICh1c2VySW5mbykKLSAgICAgICAgICAgIENGUmVs
ZWFzZSh1c2VySW5mbyk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIHJldHVy
biAoTlNFcnJvciAqKWNmRXJyb3I7Ci19Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTkwLDUzICsx
MDcsNiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZU5TRXJyb3JGCiAgICAgcmV0
dXJuIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpyZXNvdXJjZUVycm9y
LmRvbWFpbigpIGNvZGU6cmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSB1c2VySW5mbzp1c2VySW5m
by5nZXQoKV0pOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VFcnJvcjo6UmVz
b3VyY2VFcnJvcihOU0Vycm9yICplcnJvcikKLSAgICA6IG1fZGF0YUlzVXBUb0RhdGUoZmFsc2Up
Ci0gICAgLCBtX3BsYXRmb3JtRXJyb3IocmVpbnRlcnByZXRfY2FzdDxDRkVycm9yUmVmPihlcnJv
cikpCi17Ci0gICAgbV9pc051bGwgPSAhZXJyb3I7Ci0gICAgaWYgKCFtX2lzTnVsbCkKLSAgICAg
ICAgbV9pc1RpbWVvdXQgPSBbZXJyb3IgY29kZV0gPT0gTlNVUkxFcnJvclRpbWVkT3V0OwotfQot
Ci1OU0Vycm9yICpSZXNvdXJjZUVycm9yOjpuc0Vycm9yKCkgY29uc3QKLXsKLSAgICBpZiAobV9p
c051bGwpIHsKLSAgICAgICAgQVNTRVJUKCFtX3BsYXRmb3JtRXJyb3IpOwotICAgICAgICByZXR1
cm4gbmlsOwotICAgIH0KLQotICAgIGlmIChtX3BsYXRmb3JtTlNFcnJvcikKLSAgICAgICAgcmV0
dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOwotCi0gICAgaWYgKG1fcGxhdGZvcm1FcnJvcikg
ewotICAgICAgICBDRkVycm9yUmVmIGVycm9yID0gbV9wbGF0Zm9ybUVycm9yLmdldCgpOwotICAg
ICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiB1c2VySW5mbyA9IGFkb3B0Q0YoQ0ZFcnJv
ckNvcHlVc2VySW5mbyhlcnJvcikpOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgbV9wbGF0
Zm9ybU5TRXJyb3IgPSBOU0Vycm9yRnJvbUNGRXJyb3IoZXJyb3IsIChOU1VSTCAqKVsoTlNEaWN0
aW9uYXJ5ICopdXNlckluZm8uZ2V0KCkgb2JqZWN0Rm9yS2V5OihpZCkga0NGVVJMRXJyb3JGYWls
aW5nVVJMRXJyb3JLZXldKTsKLSAgICAgICAgLy8gSWYgTlNFcnJvckZyb21DRkVycm9yIGNyZWF0
ZWQgYSBuZXcgTlNFcnJvciBmb3IgdXMsIHJldHVybiB0aGF0LgotICAgICAgICBpZiAobV9wbGF0
Zm9ybU5TRXJyb3IuZ2V0KCkgIT0gKE5TRXJyb3IgKillcnJvcikKLSAgICAgICAgICAgIHJldHVy
biBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLQotICAgICAgICAvLyBPdGhlcndpc2UgZmFsbCB0
aHJvdWdoIHRvIGNyZWF0ZSBhIG5ldyBOU0Vycm9yIGZyb20gdGhlIENGRXJyb3IuCi0jZW5kaWYK
LSAgICAgICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5p
dFdpdGhEb21haW46KE5TU3RyaW5nICopQ0ZFcnJvckdldERvbWFpbihlcnJvcikgY29kZTpDRkVy
cm9yR2V0Q29kZShlcnJvcikgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvLmdldCgp
XSk7Ci0gICAgICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLSAgICB9Ci0KLSAg
ICBtX3BsYXRmb3JtTlNFcnJvciA9IGNyZWF0ZU5TRXJyb3JGcm9tUmVzb3VyY2VFcnJvckJhc2Uo
KnRoaXMpOwotICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLX0KLQotUmVzb3Vy
Y2VFcnJvcjo6b3BlcmF0b3IgTlNFcnJvciAqKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbnNFcnJv
cigpOwotfQotCi0jZWxzZQotCiBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKE5TRXJyb3Ig
Km5zRXJyb3IpCiAgICAgOiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQogICAgICwgbV9wbGF0Zm9y
bUVycm9yKG5zRXJyb3IpCkBAIC0zMDksNiArMTc5LDQgQEAgUmVzb3VyY2VFcnJvcjo6b3BlcmF0
b3IgQ0ZFcnJvclJlZigpIGNvbgogICAgIHJldHVybiBjZkVycm9yKCk7CiB9CiAKLSNlbmRpZiAv
LyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRs
ZU1hYy5tbQkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU1LDE2ICs1
NSw2IEBACiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaWYgX19oYXNfaW5jbHVkZSg8Q0ZOZXR3
b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4pCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxDb25u
ZWN0aW9uUHJpdi5oPgotI2VuZGlmCi10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxDb25uZWN0aW9uKiBD
RlVSTENvbm5lY3Rpb25SZWY7Ci1leHRlcm4gIkMiIHsKLUNGRGljdGlvbmFyeVJlZiBfQ0ZVUkxD
b25uZWN0aW9uQ29weVRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmKTsKLX0KLSNlbmRpZiAv
LyBVU0UoQ0ZORVRXT1JLKQotCiAjaWYgX19oYXNfaW5jbHVkZSg8Rm91bmRhdGlvbi9OU1VSTENv
bm5lY3Rpb25Qcml2YXRlLmg+KQogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTENvbm5lY3Rpb25Q
cml2YXRlLmg+CiAjZWxzZQpAQCAtNzQsMTYgKzY0LDYgQEAgLSAoTlNEaWN0aW9uYXJ5ICopX3Rp
bWluZ0RhdGE7CiBAZW5kCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKLSNpbXBvcnQgIkNG
VVJMUmVxdWVzdFNQSS5oIgotI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgi
Ci0jaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCi0KLUBpbnRlcmZhY2UgTlNVUkxSZXF1ZXN0
IChpT1NEZXRhaWxzKQotLSAoQ0ZVUkxSZXF1ZXN0UmVmKSBfQ0ZVUkxSZXF1ZXN0OwotQGVuZAot
I2VuZGlmCi0KICNpZiBVU0UoUVVJQ0tfTE9PSykKICNpbXBvcnQgIlF1aWNrTG9vay5oIgogI2Vu
ZGlmCkBAIC05NSw5ICs3NSw3IEBAIC0oaWQpX2luaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0
ICopcmUKIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotI2lmICFVU0UoQ0ZORVRX
T1JLKQotICAgIAorCiBzdGF0aWMgdm9pZCBhcHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcihS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiB7
CiAgICAgU3RyaW5nIGF1dGhlbnRpY2F0aW9uSGVhZGVyID0gIkJhc2ljICIgKyBiYXNlNjRFbmNv
ZGUoU3RyaW5nKGNyZWRlbnRpYWwudXNlcigpICsgIjoiICsgY3JlZGVudGlhbC5wYXNzd29yZCgp
KS51dGY4KCkpOwpAQCAtMTA1LDcgKzgzLDYgQEAgc3RhdGljIHZvaWQgYXBwbHlCYXNpY0F1dGhv
cml6YXRpb25IZWFkZQogICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJO
YW1lOjpBdXRob3JpemF0aW9uLCBhdXRoZW50aWNhdGlvbkhlYWRlcik7CiB9CiAKLSNpZiAhUExB
VEZPUk0oSU9TKQogc3RhdGljIE5TT3BlcmF0aW9uUXVldWUgKm9wZXJhdGlvblF1ZXVlRm9yQXN5
bmNDbGllbnRzKCkKIHsKICAgICBzdGF0aWMgTlNPcGVyYXRpb25RdWV1ZSAqcXVldWU7CkBAIC0x
MTYsNyArOTMsNiBAQCBzdGF0aWMgTlNPcGVyYXRpb25RdWV1ZSAqb3BlcmF0aW9uUXVldWVGCiAg
ICAgfQogICAgIHJldHVybiBxdWV1ZTsKIH0KLSNlbmRpZgogCiBSZXNvdXJjZUhhbmRsZUludGVy
bmFsOjp+UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCgpCiB7CkBAIC0yNjEsMTEgKzIzNyw2IEBAIGJv
b2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKICAgICAgICAgKE5TRGljdGlvbmFyeSAqKWNsaWVu
dCgpLT5jb25uZWN0aW9uUHJvcGVydGllcyh0aGlzKS5nZXQoKSk7CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKElPUykKLSAgICBOU1VSTENvbm5lY3Rpb24gKnVybENvbm5lY3Rpb24gPSBjb25uZWN0
aW9uKCk7Ci0gICAgW3VybENvbm5lY3Rpb24gc2NoZWR1bGVJblJ1bkxvb3A6V2ViVGhyZWFkTlNS
dW5Mb29wKCkgZm9yTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZV07Ci0gICAgW3VybENvbm5lY3Rp
b24gc3RhcnRdOwotI2Vsc2UKICAgICBib29sIHNjaGVkdWxlZCA9IGZhbHNlOwogICAgIGlmIChT
Y2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRQYWlycyA9IGQtPm1fY29udGV4dC0+c2NoZWR1
bGVkUnVuTG9vcFBhaXJzKCkpIHsKICAgICAgICAgU2NoZWR1bGVQYWlySGFzaFNldDo6aXRlcmF0
b3IgZW5kID0gc2NoZWR1bGVkUGFpcnMtPmVuZCgpOwpAQCAtMjg5LDcgKzI2MCw2IEBAIGJvb2wg
UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKICAgICAgICAgW2Nvbm5lY3Rpb24oKSBzdGFydF07CiAg
ICAgZWxzZQogICAgICAgICBkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCA9IHRydWU7Ci0jZW5kaWYK
IAogICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIHN0YXJ0aW5nIGNvbm5lY3Rpb24gJXAgZm9y
ICVAIiwgdGhpcywgY29ubmVjdGlvbigpLCBmaXJzdFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9O
b3RVcGRhdGVIVFRQQm9keSkpOwogICAgIApAQCAtMzIyLDggKzI5Miw2IEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG8KICAgICAgICAgd2tTZXROU1VSTENvbm5lY3Rp
b25EZWZlcnNDYWxsYmFja3MoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBkZWZlcnMpOwogfQogCi0j
aWYgUExBVEZPUk0oTUFDKQotCiB2b2lkIFJlc291cmNlSGFuZGxlOjpzY2hlZHVsZShTY2hlZHVs
ZVBhaXImIHBhaXIpCiB7CiAgICAgTlNSdW5Mb29wICpydW5Mb29wID0gcGFpci5uc1J1bkxvb3Ao
KTsKQEAgLTM0Miw4ICszMTAsNiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp1bnNjaGVkdWxlKFNj
aGVkdWxlCiAgICAgICAgIFtkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkgdW5zY2hlZHVsZUZyb21SdW5M
b29wOnJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKilwYWlyLm1vZGUoKV07CiB9CiAKLSNlbmRp
ZgotCiBpZCBSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKGJvb2wgc2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKCFkLT5tX2RlbGVnYXRlKTsKQEAgLTcyNCw5ICs2
OTAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxDYWNoZVJlCiAKICAgICBb
KGlkKWRlbGVnYXRlKCkgY29udGludWVXaWxsQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9Ci0g
ICAgCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0gICAgCisKICNpZiBFTkFCTEUoV0VCX1RJ
TUlORykKICAgICAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRh
KE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSwgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcpCkBA
IC03NjMsMjIgKzcyNywxMSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpzZXRDb2xsZWN0c1RpbWlu
Z0RhCiAgICAgfSk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIAotdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm5l
Y3Rpb24sIFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nKQotewotICAgIGdldENvbm5lY3Rpb25U
aW1pbmdEYXRhKChfX2JyaWRnZSBOU0RpY3Rpb25hcnkqKShhZG9wdENGKF9DRlVSTENvbm5lY3Rp
b25Db3B5VGltaW5nRGF0YShjb25uZWN0aW9uKSkuZ2V0KCkpLCB0aW1pbmcpOwotfQotICAgIAot
I2Vsc2UKLSAgICAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRh
KE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcp
CiB7CiAgICAgZ2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoW2Nvbm5lY3Rpb24gX3RpbWluZ0RhdGFd
LCB0aW1pbmcpOwogfQotICAgIAotI2VuZGlmCi0gICAgCisKICNlbmRpZiAvLyBFTkFCTEUoV0VC
X1RJTUlORykKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5t
bQkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NCwyOSArNjQsNiBA
QCBib29sIFJlc291cmNlUmVxdWVzdDo6dXNlUXVpY2tMb29rUmVzb3VyCiAgICAgcmV0dXJuIGZs
YWc7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1SZXNvdXJjZVJlcXVlc3Q6OlJlc291cmNl
UmVxdWVzdChOU1VSTFJlcXVlc3QgKm5zUmVxdWVzdCkKLSAgICA6IFJlc291cmNlUmVxdWVzdEJh
c2UoKQotICAgICwgbV9jZlJlcXVlc3QoW25zUmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSkKLSAgICAs
IG1fbnNSZXF1ZXN0KG5zUmVxdWVzdCkKLXsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVw
ZGF0ZU5TVVJMUmVxdWVzdCgpCi17Ci0gICAgaWYgKG1fY2ZSZXF1ZXN0KQotICAgICAgICBtX25z
UmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVx
dWVzdDptX2NmUmVxdWVzdC5nZXQoKV0pOwotfQotCi12b2lkIFJlc291cmNlUmVxdWVzdDo6YXBw
bHlXZWJBcmNoaXZlSGFja0Zvck1haWwoKQotewotICAgIC8vIEhhY2sgYmVjYXVzZSBNYWlsIGNo
ZWNrcyBmb3IgdGhpcyBwcm9wZXJ0eSB0byBkZXRlY3QgZGF0YSAvIGFyY2hpdmUgbG9hZHMKLSAg
ICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlVSTFJlcXVlc3QoRG9Ob3RVcGRh
dGVIVFRQQm9keSksIENGU1RSKCJXZWJEYXRhUmVxdWVzdCIpLCBDRlNUUigiIikpOwotfQotCi0j
ZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNw
b25zZU1hYy5tbQkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzEs
MzYgKzcxLDYgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjppbml0TlNVUkxSZXNwb25zZQogICAg
IFttX25zUmVzcG9uc2UuZ2V0KCkgX3NldE1JTUVUeXBlOihOU1N0cmluZyAqKW1fbWltZVR5cGVd
OwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLQotTlNVUkxSZXNwb25zZSAqUmVzb3VyY2VSZXNw
b25zZTo6bnNVUkxSZXNwb25zZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX25zUmVzcG9uc2UgJiYg
IW1fY2ZSZXNwb25zZSAmJiAhbV9pc051bGwpIHsKLSAgICAgICAgaW5pdE5TVVJMUmVzcG9uc2Uo
KTsKLSAgICAgICAgbV9jZlJlc3BvbnNlID0gW21fbnNSZXNwb25zZS5nZXQoKSBfQ0ZVUkxSZXNw
b25zZV07Ci0gICAgICAgIHJldHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7Ci0gICAgfQotCi0gICAg
aWYgKCFtX2NmUmVzcG9uc2UpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBpZiAoIW1fbnNS
ZXNwb25zZSkKLSAgICAgICAgbV9uc1Jlc3BvbnNlID0gW05TVVJMUmVzcG9uc2UgX3Jlc3BvbnNl
V2l0aENGVVJMUmVzcG9uc2U6bV9jZlJlc3BvbnNlLmdldCgpXTsKLQotICAgIHJldHVybiBtX25z
UmVzcG9uc2UuZ2V0KCk7Ci19Ci0KLVJlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2Uo
TlNVUkxSZXNwb25zZSogbnNSZXNwb25zZSkKLSAgICA6IG1faW5pdExldmVsKFVuaW5pdGlhbGl6
ZWQpCi0gICAgLCBtX3BsYXRmb3JtUmVzcG9uc2VJc1VwVG9EYXRlKHRydWUpCi0gICAgLCBtX2Nm
UmVzcG9uc2UoW25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdKQotICAgICwgbV9uc1Jlc3BvbnNl
KG5zUmVzcG9uc2UpCi17Ci0gICAgbV9pc051bGwgPSAhbnNSZXNwb25zZTsKLX0KLQotI2Vsc2UK
LQogc3RhdGljIE5TU3RyaW5nKiBjb25zdCBjb21tb25IZWFkZXJGaWVsZHNbXSA9IHsKICAgICBA
IkFnZSIsIEAiQ2FjaGUtQ29udHJvbCIsIEAiQ29udGVudC1UeXBlIiwgQCJEYXRlIiwgQCJFdGFn
IiwgQCJFeHBpcmVzIiwgQCJMYXN0LU1vZGlmaWVkIiwgQCJQcmFnbWEiCiB9OwpAQCAtMTg5LDcg
KzE1OSw1IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGMKICAgICBy
ZXR1cm4gYS5uc1VSTFJlc3BvbnNlKCkgPT0gYi5uc1VSTFJlc3BvbnNlKCk7CiB9CiAKLSNlbmRp
ZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
RGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgJKHJldmlzaW9uIDE3NDkwMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRl
ZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKICNkZWZpbmUgV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiB9CkBAIC0zOSw1ICszNyw0IEBAIEBp
bnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2EKIC0gKHZvaWQpZGV0YWNoSGFu
ZGxlOwogQGVuZAogCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCiAjZW5kaWYgLy8gV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzRGVsZWdhdGUubW0JKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIgogCi0jaWYgIVVTRShDRk5F
VFdPUkspCi0KICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW1wb3J0ICJB
dXRoZW50aWNhdGlvbk1hYy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtMjkxLDYgKzI4OSwz
IEBAIC0gKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKiljb25uZWN0aW9uOihOU1UKIH0KIAogQGVuZAot
Ci0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCShyZXZpc2lv
biAxNzQ5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlv
blF1ZXVlRGVsZWdhdGVfaAogI2RlZmluZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlv
blF1ZXVlRGVsZWdhdGVfaAogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbmNsdWRlIDxkaXNw
YXRjaC9kaXNwYXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtNTksNSAr
NTcsNCBAQCBAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRsZVdpdGhDcmVkCiAKIEBlbmQK
IAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogI2VuZGlmIC8vIFdlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVs
ZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCShyZXZp
c2lvbiAxNzQ5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgiCiAKLSNpZiAhVVNFKENG
TkVUV09SSykKLQogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQg
IkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC0zNDgsNiArMzQ2
LDMgQEAgLSAoQk9PTCljb25uZWN0aW9uU2hvdWxkVXNlQ3JlZGVudGlhbFN0bwogfQogCiBAZW5k
Ci0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQko
cmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVVSTFJlc3BvbnNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNyArMzI1LDYgQEAg
dm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcAogfQogI2VuZGlmCiAKLSNp
ZiAhVVNFKENGTkVUV09SSykKIE5TVVJMUmVzcG9uc2UgKnN5bnRoZXNpemVSZWRpcmVjdFJlc3Bv
bnNlSWZOZWNlc3NhcnkoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uLCBOU1VSTFJlcXVlc3Qg
Km5ld1JlcXVlc3QsIE5TVVJMUmVzcG9uc2UgKnJlZGlyZWN0UmVzcG9uc2UpCiB7CiAjaWYgUExB
VEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKQEAg
LTM0NSw2ICszNDQsNSBAQCBOU1VSTFJlc3BvbnNlICpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25z
CiAgICAgcmV0dXJuIHJlZGlyZWN0UmVzcG9uc2U7CiAjZW5kaWYKIH0KLSNlbmRpZgogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSwx
MiArMTM1LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJh
eShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENGQXJyYXlSZWYpIG92ZXJyaWRlOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFsIHZv
aWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwotI2Vsc2UKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bENhY2hlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJM
UmVzcG9uc2UgKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNlbmRpZgogCiAgICAgdm9pZCBjb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMubW0J
KHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOSwzMSArMTA5
LDE3IEBAIHNpemVfdCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmZpbGVCYWNrZWQKICAgICByZXR1
cm4gU2hhcmVkTWVtb3J5OjpzeXN0ZW1QYWdlU2l6ZSgpOwogfQogCi0jaWYgVVNFKENGTkVUV09S
SykKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkK
LXsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKLQotICAg
IGlmIChtX2J5dGVzUmVjZWl2ZWQgPj0gZmlsZUJhY2tlZFJlc291cmNlTWluaW11bVNpemUoKSkK
LSAgICAgICAgTmV0d29ya0Rpc2tDYWNoZU1vbml0b3I6Om1vbml0b3JGaWxlQmFja2luZ1N0b3Jl
Q3JlYXRpb24oY2ZSZXNwb25zZSwgdGhpcyk7Ci0KLSAgICBtX2hhbmRsZS0+Y29udGludWVXaWxs
Q2FjaGVSZXNwb25zZShjZlJlc3BvbnNlKTsKLX0KLQotI2Vsc2UKLQogdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSwgTlNDYWNoZWRVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkKIHsKICAgICBBU1NFUlRfVU5VU0VE
KGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA5MAorI2lmIFBMQVRGT1JNKElPUykgfHxfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwOTAKICAgICBpZiAobV9ieXRlc1JlY2VpdmVkID49IGZpbGVC
YWNrZWRSZXNvdXJjZU1pbmltdW1TaXplKCkpCiAgICAgICAgIE5ldHdvcmtEaXNrQ2FjaGVNb25p
dG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKFtuc1Jlc3BvbnNlIF9DRkNhY2hl
ZFVSTFJlc3BvbnNlXSwgdGhpcyk7CiAjZW5kaWYKIAogICAgIG1faGFuZGxlLT5jb250aW51ZVdp
bGxDYWNoZVJlc3BvbnNlKG5zUmVzcG9uc2UpOwogfQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JL
KQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24g
MTc0OTAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZAogICAgIGVuY29kZXIgPDwgdGV4dENoZWNrZXJT
dGF0ZTsKICAgICBlbmNvZGVyIDw8IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7CiAgICAgZW5j
b2RlciA8PCBkZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbDsKLSNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBlbmNvZGVyIDw8
IHVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXI7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkK
QEAgLTIyMCw3ICsyMjAsNyBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRs
ZUlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIHN0
cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIGRvdWJsZSBkZWZhdWx0
UmVxdWVzdFRpbWVvdXRJbnRlcnZhbDsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFN0cmluZyB1aVByb2Nlc3NCdW5kbGVJ
ZGVudGlmaWVyOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9h
ZHMvRG93bmxvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3du
bG9hZHMvRG93bmxvYWQuY3BwCShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMs
NiBAQCBEb3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiBkb3duCiAgICAgOiBtX2Rv
d25sb2FkTWFuYWdlcihkb3dubG9hZE1hbmFnZXIpCiAgICAgLCBtX2Rvd25sb2FkSUQoZG93bmxv
YWRJRCkKICAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAg
LCBtX2FsbG93T3ZlcndyaXRlKGZhbHNlKQotI2VuZGlmCiB7CiAgICAgQVNTRVJUKG1fZG93bmxv
YWRJRCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2Fk
LmgJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMv
RG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTAgKzQzLDYgQEAgT0JKQ19DTEFTUyBX
S0Rvd25sb2FkQXNEZWxlZ2F0ZTsKICNpbmNsdWRlIDxtZW1vcnk+CiAjZW5kaWYKIAotI2lmIFVT
RShDRk5FVFdPUkspCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWRQcml2Lmg+Ci0j
ZW5kaWYKLQogbmFtZXNwYWNlIElQQyB7CiAgICAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KQEAg
LTkxLDExICs4Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOwogICAgIHZvaWQgZGlkRGVjaWRlRGVzdGluYXRpb24o
Y29uc3QgU3RyaW5nJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotICAgIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3Rp
bmF0aW9uOyB9Ci0gICAgRG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0aGVudGljYXRp
b25DbGllbnQoKTsKLSNlbmRpZgotCiAgICAgLy8gQXV0aGVudGljYXRpb24KICAgICBzdGF0aWMg
dm9pZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik7CiAgICAgc3RhdGljIHZvaWQgcmVj
ZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CkBAIC0xMjksMTAgKzEyMCw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2FsbG93T3ZlcndyaXRlOwogICAgIFN0cmluZyBtX2Rlc3RpbmF0aW9uOwogICAg
IFN0cmluZyBtX2J1bmRsZVBhdGg7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBSZXRhaW5QdHI8
Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3dubG9hZDsKLSAgICBSZWZQdHI8RG93bmxvYWRBdXRoZW50
aWNhdGlvbkNsaWVudD4gbV9hdXRoZW50aWNhdGlvbkNsaWVudDsKLSNlbmRpZgogI2lmIFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZUNsaWVudD4gbV9kb3dubG9hZENsaWVudDsKICAgICBSZWZQdHI8V2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU+IG1fcmVzb3VyY2VIYW5kbGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQkocmV2aXNpb24g
MTc0OTAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiRG93bmxvYWQuaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiAwCiAKICNp
bXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgPENGTmV0d29yay9DRlVSTERvd25sb2Fk
Lmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9E
b3dubG9hZE1hYy5tbQkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2
LDkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRG93bmxvYWQuaCIKIAotI2lmIFBM
QVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKIAorI2ltcG9ydCA8Rm91bmRhdGlvbi9O
U1VSTERvd25sb2FkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uTWFjLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL05vdEltcGxlbWVudGVkLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dl
YkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQkocmV2aXNpb24gMTc0OTAwKQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM4LDQzICszOCwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZXNv
dXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCi0jaWYg
VVNFKENGTkVUV09SSykKLSNpbXBvcnQgPENGTmV0d29yay9DRlVSTFJlcXVlc3QuaD4KLSNlbmRp
ZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIElQQyB7CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29k
ZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQotewotICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+
IHJlcXVlc3RUb1NlcmlhbGl6ZSA9IHJlc291cmNlUmVxdWVzdC5jZlVSTFJlcXVlc3QoRG9Ob3RV
cGRhdGVIVFRQQm9keSk7Ci0KLSAgICBib29sIHJlcXVlc3RJc1ByZXNlbnQgPSByZXF1ZXN0VG9T
ZXJpYWxpemU7Ci0gICAgZW5jb2RlciA8PCByZXF1ZXN0SXNQcmVzZW50OwotCi0gICAgaWYgKCFy
ZXF1ZXN0SXNQcmVzZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBXZSBkb24ndCBzZW5k
IEhUVFAgYm9keSBvdmVyIElQQyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgotICAgIC8vIEFsc28s
IGl0J3Mgbm90IGFsd2F5cyBwb3NzaWJsZSB0byBkbywgYXMgc3RyZWFtcyBjYW4gb25seSBiZSBj
cmVhdGVkIGluIHByb2Nlc3MgdGhhdCBkb2VzIG5ldHdvcmtpbmcuCi0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gcmVxdWVzdEhUVFBCb2R5ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJl
cXVlc3RCb2R5KHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSkpOwotICAgIFJldGFpblB0cjxDRlJl
YWRTdHJlYW1SZWY+IHJlcXVlc3RIVFRQQm9keVN0cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0
Q29weUhUVFBSZXF1ZXN0Qm9keVN0cmVhbShyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCkpKTsKLSAg
ICBpZiAocmVxdWVzdEhUVFBCb2R5IHx8IHJlcXVlc3RIVFRQQm9keVN0cmVhbSkgewotICAgICAg
ICBDRk11dGFibGVVUkxSZXF1ZXN0UmVmIG11dGFibGVSZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3Jl
YXRlTXV0YWJsZUNvcHkoMCwgcmVxdWVzdFRvU2VyaWFsaXplLmdldCgpKTsKLSAgICAgICAgcmVx
dWVzdFRvU2VyaWFsaXplID0gYWRvcHRDRihtdXRhYmxlUmVxdWVzdCk7Ci0gICAgICAgIENGVVJM
UmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9keShtdXRhYmxlUmVxdWVzdCwgbmlsKTsKLSAgICAgICAg
Q0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RCb2R5U3RyZWFtKG11dGFibGVSZXF1ZXN0LCBuaWwp
OwotICAgIH0KLQotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBh
ZG9wdENGKFdLQ0ZVUkxSZXF1ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24ocmVx
dWVzdFRvU2VyaWFsaXplLmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOwotICAgIElQ
Qzo6ZW5jb2RlKGVuY29kZXIsIGRpY3Rpb25hcnkuZ2V0KCkpOwotCi0gICAgLy8gVGhlIGZhbGxi
YWNrIGFycmF5IGlzIHBhcnQgb2YgQ0ZVUkxSZXF1ZXN0LCBidXQgaXQgaXMgbm90IGVuY29kZWQg
YnkgV0tDRlVSTFJlcXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbi4KLSAgICBl
bmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29k
aW5nRmFsbGJhY2tBcnJheSgpOwotfQotI2Vsc2UKIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJj
ZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKICAgICBSZXRhaW5QdHI8
TlNVUkxSZXF1ZXN0PiByZXF1ZXN0VG9TZXJpYWxpemUgPSByZXNvdXJjZVJlcXVlc3QubnNVUkxS
ZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpOwpAQCAtOTksNyArNjYsNiBAQCB2b2lkIEFyZ3Vt
ZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jCiAgICAgLy8gVGhlIGZhbGxiYWNrIGFycmF5
IGlzIHBhcnQgb2YgTlNVUkxSZXF1ZXN0LCBidXQgaXQgaXMgbm90IGVuY29kZWQgYnkgV0tOU1VS
TFJlcXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbi4KICAgICBlbmNvZGVyIDw8
IHJlc291cmNlUmVxdWVzdC5yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJh
Y2tBcnJheSgpOwogfQotI2VuZGlmCiAKIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVl
c3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJj
ZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKQEAgLTExNiwyMCArODIsMTIgQEAgYm9vbCBB
cmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlYwogICAgIGlmICghSVBDOjpkZWNvZGUo
ZGVjb2RlciwgZGljdGlvbmFyeSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotI2lmIFVTRShD
Rk5FVFdPUkspCi0gICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gY2ZVUkxSZXF1ZXN0ID0g
YWRvcHRDRihXS0NyZWF0ZUNGVVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlv
bihkaWN0aW9uYXJ5LmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOwotICAgIGlmICgh
Y2ZVUkxSZXF1ZXN0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXNvdXJjZVJlcXVl
c3QgPSBSZXNvdXJjZVJlcXVlc3QoY2ZVUkxSZXF1ZXN0LmdldCgpKTsKLSNlbHNlCiAgICAgUmV0
YWluUHRyPE5TVVJMUmVxdWVzdD4gbnNVUkxSZXF1ZXN0ID0gV0tOU1VSTFJlcXVlc3RGcm9tU2Vy
aWFsaXphYmxlUmVwcmVzZW50YXRpb24oZGljdGlvbmFyeS5nZXQoKSwgSVBDOjp0b2tlbk51bGxU
eXBlUmVmKCkpOwogICAgIGlmICghbnNVUkxSZXF1ZXN0KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICByZXNvdXJjZVJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QobnNVUkxSZXF1ZXN0Lmdl
dCgpKTsKLSNlbmRpZgotICAgIAorCiAgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VDb250ZW50
RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQgV2Vi
UHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoY28KICAgICBpZiAocGFyYW1ldGVycy5zaG91
bGRVc2VGb250U21vb3RoaW5nKQogICAgICAgICBzZXRTaG91bGRVc2VGb250U21vb3RoaW5nKHRy
dWUpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgU2Vzc2lvblRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKHBhcmFtZXRl
cnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CiAjZW5kaWYKIApAQCAtNDY3LDE0ICs0Njcs
MTQgQEAgdm9pZCBXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQwogCiB2b2lkIFdl
YlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25J
RCkKIHsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVAp
CisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsKICNlbmRp
ZgogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNl
c3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdP
UkspIHx8IFVTRShTT1VQKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKICAgICBT
ZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oc2Vzc2lvbklEKTsKICNlbmRpZgogfQpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0SmF2YVNj
cmlwdENhbkFjYwogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBib29sIGVuYWJsZWQpCiB7CiAgICAgLy8g
RklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVGhpcyB0ZXN0LW9ubHkgZnVuY3Rpb24gZG9lc24ndCB3
b3JrIHdpdGggTmV0d29ya1Byb2Nlc3MsIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE1Mjc0Pi4KLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykg
fHwgVVNFKFNPVVApCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIGlmIChl
bmFibGVkKQogICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKICAg
ICBlbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCShyZXZpc2lv
biAxNzQ5MDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0MiwxMyArMTQyLDYg
QEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAgICBJTklUKFdp
bmRvd1NldEFscGhhKTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCi0jaWYgVVNFKENGTkVU
V09SSykKLSAgICAgICAgSU5JVChHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UpOwotICAgICAg
ICBJTklUKENvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UpOwotICAgICAgICBJ
TklUKFNldENGVVJMUmVxdWVzdFNob3VsZENvbnRlbnRTbmlmZik7Ci0gICAgICAgIElOSVQoU2V0
UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKTsKLSNlbmRpZgotCiAjaWYgIVBMQVRGT1JNKElPUykKICAg
ICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJzKTsKICAgICAgICAg
SU5JVChTcGVlY2hTeW50aGVzaXNHZXREZWZhdWx0Vm9pY2VJZGVudGlmaWVyRm9yTG9jYWxlKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0JKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtODIsMTEgKzgy
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFs
aXplKCkKIHsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIG1fcGFnZS0+YWRkU2NoZWR1bGVQYWly
KFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBnZXRDRlJ1
bkxvb3BdLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpKTsKLSNlbHNlCiAgICAgbV9wYWdlLT5hZGRT
Y2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUoW05TUnVuTG9vcCBjdXJyZW50UnVuTG9v
cF0sIGtDRlJ1bkxvb3BDb21tb25Nb2RlcykpOwotI2VuZGlmCiAKICAgICBXS0FjY2Vzc2liaWxp
dHlXZWJQYWdlT2JqZWN0KiBtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBbW1tXS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5oCShyZXZpc2lvbiAx
NzQ5MDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdFZlcnNpb25DaGVja3MuaAko
d29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQAogI2RlZmluZSBXRUJLSVRfRklSU1RfVkVS
U0lPTl9XSVRIX0NTU19BVFRSSUJVVEVfU0VUVEVSU19JR05PUklOR19QUklPUklUWSAyMjM5IC8v
IGlPUyA2LjAKICNkZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9ZT1VUVUJFX0VNQkVE
X0lGUkFNRV9UUkFOU0ZPUk0gMjIzOSAvLyBpT1MgNi4wCiAjZGVmaW5lIFdFQktJVF9GSVJTVF9W
RVJTSU9OX1dJVEhPVVRfTEVHQUNZX0JBQ0tHUk9VTkRTSVpFX1NIT1JUSEFORF9CRUhBVklPUiAy
NjY1IC8vIGlPUyA3LjAKKyNkZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9MT0FESU5H
X0RVUklOR19DT01NT05fUlVOTE9PUF9NT0RFUyAyNjY1IC8vIGlPUyA3LjAKICNlbmRpZiAvLyBQ
TEFURk9STShJT1MpCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05NzUsMTIgKzk3NSwxMyBAQCAt
ICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAKICNpZiAhUExBVEZPUk0o
SU9TKQogICAgIE5TUnVuTG9vcCAqcnVuTG9vcCA9IFtOU1J1bkxvb3AgbWFpblJ1bkxvb3BdOwot
CisjZWxzZQorICAgIE5TUnVuTG9vcCAqcnVuTG9vcCA9IFdlYlRocmVhZE5TUnVuTG9vcCgpOwor
I2VuZGlmCiAgICAgaWYgKFdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lP
Tl9XSVRIX0xPQURJTkdfRFVSSU5HX0NPTU1PTl9SVU5MT09QX01PREVTKSkKICAgICAgICAgW3Nl
bGYgc2NoZWR1bGVJblJ1bkxvb3A6cnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKWtDRlJ1bkxv
b3BDb21tb25Nb2Rlc107CiAgICAgZWxzZQogICAgICAgICBbc2VsZiBzY2hlZHVsZUluUnVuTG9v
cDpydW5Mb29wIGZvck1vZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGVdOwotI2VuZGlmCiAKICAgICBb
c2VsZiBfYWRkVG9BbGxXZWJWaWV3c1NldF07CiAgICAgW3NlbGYgc2V0R3JvdXBOYW1lOmdyb3Vw
TmFtZV07CkBAIC02NTQ1LDI5ICs2NTQ2LDE5IEBAIC0gKEJPT0wpdmFsaWRhdGVVc2VySW50ZXJm
YWNlSXRlbTooaWQgPE4KIAogQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlBlbmRpbmdQdWJs
aWMpCiAKLSNpZiAhUExBVEZPUk0oSU9TKQogLSAodm9pZClzY2hlZHVsZUluUnVuTG9vcDooTlNS
dW5Mb29wICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGUKIHsKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotICAgIENGUnVuTG9vcFJlZiBzY2hlZHVsZVBhaXJSdW5Mb29wID0gW3J1bkxvb3Ag
Z2V0Q0ZSdW5Mb29wXTsKLSNlbHNlCiAgICAgTlNSdW5Mb29wICpzY2hlZHVsZVBhaXJSdW5Mb29w
ID0gcnVuTG9vcDsKLSNlbmRpZgogICAgIGlmIChydW5Mb29wICYmIG1vZGUpCiAgICAgICAgIGNv
cmUoc2VsZiktPmFkZFNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShzY2hlZHVsZVBh
aXJSdW5Mb29wLCAoQ0ZTdHJpbmdSZWYpbW9kZSkpOwogfQogCiAtICh2b2lkKXVuc2NoZWR1bGVG
cm9tUnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGUK
IHsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGUnVuTG9vcFJlZiBzY2hlZHVsZVBhaXJSdW5M
b29wID0gW3J1bkxvb3AgZ2V0Q0ZSdW5Mb29wXTsKLSNlbHNlCiAgICAgTlNSdW5Mb29wICpzY2hl
ZHVsZVBhaXJSdW5Mb29wID0gcnVuTG9vcDsKLSNlbmRpZgogICAgIGlmIChydW5Mb29wICYmIG1v
ZGUpCiAgICAgICAgIGNvcmUoc2VsZiktPnJlbW92ZVNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6
OmNyZWF0ZShzY2hlZHVsZVBhaXJSdW5Mb29wLCAoQ0ZTdHJpbmdSZWYpbW9kZSkpOwogfQotI2Vu
ZGlmCiAKIHN0YXRpYyBCT09MIGZpbmRTdHJpbmcoTlNWaWV3IDxXZWJEb2N1bWVudFNlYXJjaGlu
Zz4gKnNlYXJjaFZpZXcsIE5TU3RyaW5nICpzdHJpbmcsIFdlYkZpbmRPcHRpb25zIG9wdGlvbnMp
CiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCShy
ZXZpc2lvbiAxNzQ5MDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MCwxMCArMTkwLDggQEAgQGludGVyZmFjZSBXZWJW
aWV3IChXZWJWaWV3RWRpdGluZ0FjdGlvbgogCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlBlbmRp
bmdQdWJsaWMpCiAKLSNpZiAhVEFSR0VUX09TX0lQSE9ORQogLSAodm9pZClzY2hlZHVsZUluUnVu
TG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGU7CiAtICh2
b2lkKXVuc2NoZWR1bGVGcm9tUnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JNb2RlOihO
U1N0cmluZyAqKW1vZGU7Ci0jZW5kaWYKIAogLSAoQk9PTClmaW5kU3RyaW5nOihOU1N0cmluZyAq
KXN0cmluZyBvcHRpb25zOihXZWJGaW5kT3B0aW9ucylvcHRpb25zOwogLSAoRE9NUmFuZ2UgKilE
T01SYW5nZU9mU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyByZWxhdGl2ZVRvOihET01SYW5nZSAq
KXByZXZpb3VzUmFuZ2Ugb3B0aW9uczooV2ViRmluZE9wdGlvbnMpb3B0aW9uczsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240231</attachid>
            <date>2014-10-21 17:29:45 -0700</date>
            <delta_ts>2014-10-21 17:33:16 -0700</delta_ts>
            <desc>another</desc>
            <filename>remove-cocoa-cfnetwork-4.patch</filename>
            <type>text/plain</type>
            <size>82269</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNTEyLDkgKzUxMiw2IEBACiAKICNkZWZpbmUgRE9O
VF9GSU5BTElaRV9PTl9NQUlOX1RIUkVBRCAxCiAjZGVmaW5lIEhBVkVfUkVBRExJTkUgMQotI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jZGVmaW5lIFdURl9VU0VfQ0ZORVRXT1JLIDEKLSNl
bmRpZgogI2RlZmluZSBXVEZfVVNFX1VJS0lUX0VESVRJTkcgMQogI2RlZmluZSBXVEZfVVNFX1dF
Ql9USFJFQUQgMQogI2RlZmluZSBXVEZfVVNFX1FVSUNLX0xPT0sgMQpJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4JKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNTI5LDYgKzI1MjksNyBAQCBfV2ViVGhyZWFkTG9ja0Zy
b21BbnlUaHJlYWROb0xvZwogX1dlYlRocmVhZExvY2tQb3BNb2RhbAogX1dlYlRocmVhZExvY2tQ
dXNoTW9kYWwKIF9XZWJUaHJlYWRNYWtlTlNJbnZvY2F0aW9uCitfV2ViVGhyZWFkTlNSdW5Mb29w
CiBfV2ViVGhyZWFkTm90Q3VycmVudAogX1dlYlRocmVhZFBvc3ROb3RpZmljYXRpb24KIF9XZWJU
aHJlYWRSdW4KQEAgLTI4MzEsMTAgKzI4MzIsNiBAQCBfd2tJc0dCMTgwMzBDb21wbGlhbmNlUmVx
dWlyZWQKIF93a1NldExheWVyQ29udGVudHNTY2FsZQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJ
T1MpICYmIFVTRShDRk5FVFdPUkspCi1fX1pON1dlYkNvcmUyMFJlc291cmNlSGFuZGxlQ2xpZW50
MjJ3aWxsQ2FjaGVSZXNwb25zZUFzeW5jRVBOU18xNFJlc291cmNlSGFuZGxlRVBLMjBfQ0ZDYWNo
ZWRVUkxSZXNwb25zZQotI2VuZGlmCi0KICNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogX19aTjdXZWJDb3JlMTVQcm90ZWN0aW9uU3Bh
Y2UyOGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGFFUDIwTlNVUkxQcm90ZWN0aW9uU3BhY2UK
IF9fWk43V2ViQ29yZTE2RGlza0NhY2hlTW9uaXRvckMyRVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RF
TlNfOVNlc3Npb25JREVQSzIwX0NGQ2FjaGVkVVJMUmVzcG9uc2UKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUs
MTAgQEAKICNpbmNsdWRlICJRdWlja0xvb2suaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09D
T0EpCisjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFpci5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OwpAQCAtMTQzLDcgKzE0
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGluZzsg
fQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICB2b2lk
IHNjaGVkdWxlKFNjaGVkdWxlUGFpciYpOwogICAgICAgICB2b2lkIHVuc2NoZWR1bGUoU2NoZWR1
bGVQYWlyJik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcAkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk5LDcgKzU5OSw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OnJlY2VpdmVkQ2FuY2VsbGF0aW8KICAgICBjYW5jZWwoKTsKIH0KIAotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKIAogdm9pZCBSZXNvdXJjZUxvYWRl
cjo6c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQogewpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKTsK
IAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNjaGVk
dWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAgICAgdm9pZCB1bnNjaGVkdWxlKFdURjo6U2NoZWR1
bGVQYWlyJik7CiAjZW5kaWYKQEAgLTE1NiwxMiArMTU2LDkgQEAgcHJvdGVjdGVkOgogCiAgICAg
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKCkgeyByZXR1cm4gbV9vcHRpb25z
OyB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNw
b25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBvdmVycmlkZTsKICNl
bmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwg
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSos
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwotI2VuZGlmCiAKICAgICBSZWZQdHI8
UmVzb3VyY2VIYW5kbGU+IG1faGFuZGxlOwogICAgIFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3Bw
CShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0RvY3VtZW50
TG9hZGVyTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLSNpZiBQTEFURk9STShNQUMpCi0KIHN0YXRpYyB2b2lkIHNjaGVkdWxl
QWxsKGNvbnN0IFJlc291cmNlTG9hZGVyTWFwJiBsb2FkZXJzLCBTY2hlZHVsZVBhaXImIHBhaXIp
CiB7CiAgICAgVmVjdG9yPFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4+IGxvYWRlcnNDb3B5OwpAQCAt
NjksNiArNjcsNCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp1bnNjaGVkdWxlKFNjaGVkdWxlCiAg
ICAgdW5zY2hlZHVsZUFsbChtX211bHRpcGFydFN1YnJlc291cmNlTG9hZGVycywgcGFpcik7CiB9
CiAKLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zNywyOCArMzcsOCBAQAogI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjZW5kaWYK
IAotI2lmIFVTRShDRk5FVFdPUkspCi1AaW50ZXJmYWNlIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKERl
dGFpbHMpCi0tKGlkKV9pbml0V2l0aENGQ2FjaGVkVVJMUmVzcG9uc2U6KENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYpY2FjaGVkUmVzcG9uc2U7Ci0tKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpX0NGQ2Fj
aGVkVVJMUmVzcG9uc2U7Ci1AZW5kCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0j
aWYgVVNFKENGTkVUV09SSykKLQotQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBSZXNvdXJjZUxvYWRl
cjo6d2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmIGNhY2hlZFJlc3BvbnNlKQotewotICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFj
a3MoKSA9PSBEb05vdFNlbmRDYWxsYmFja3MpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmV0
YWluUHRyPE5TQ2FjaGVkVVJMUmVzcG9uc2U+IG5zQ2FjaGVkUmVzcG9uc2UgPSBhZG9wdE5TKFtb
TlNDYWNoZWRVUkxSZXNwb25zZSBhbGxvY10gX2luaXRXaXRoQ0ZDYWNoZWRVUkxSZXNwb25zZTpj
YWNoZWRSZXNwb25zZV0pOwotICAgIHJldHVybiBbZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2ls
bENhY2hlUmVzcG9uc2UoZG9jdW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCBuc0NhY2hlZFJl
c3BvbnNlLmdldCgpKSBfQ0ZDYWNoZWRVUkxSZXNwb25zZV07Ci19Ci0KLSNlbHNlCi0KIE5TQ2Fj
aGVkVVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJj
ZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNlKQogewogICAgIGlmIChtX29w
dGlvbnMuc2VuZExvYWRDYWxsYmFja3MoKSA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBAIC02Niw4
ICs0Niw2IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWwKICAgICBy
ZXR1cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9jdW1lbnRM
b2FkZXIoKSwgaWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9CiAKLSNlbmRpZgotCiAjaWYgVVNF
KE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvUGFnZU1hYy5jcHAJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL1BhZ2VNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxNCArNDQsMTIgQEAg
dm9pZCBQYWdlOjphZGRTY2hlZHVsZVBhaXIoUGFzc1JlZlB0cjxTYwogICAgICAgICBtX3NjaGVk
dWxlZFJ1bkxvb3BQYWlycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVQYWlySGFzaFNldD4o
KTsKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycy0+YWRkKHBhaXIpOwogCi0jaWYgIVBMQVRG
T1JNKElPUykKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChE
b2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKSkKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zY2hlZHVsZSgqcGFpcik7CiAg
ICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVy
KCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2Fk
ZXItPnNjaGVkdWxlKCpwYWlyKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIC8vIEZJWE1FOiBtYWtl
IFNoYXJlZFRpbWVyTWFjIHVzZSB0aGVzZSBTY2hlZHVsZVBhaXJzLgogfQpAQCAtNjUsMTQgKzYz
LDEyIEBAIHZvaWQgUGFnZTo6cmVtb3ZlU2NoZWR1bGVQYWlyKFBhc3NSZWZQdHIKICAgICBSZWZQ
dHI8U2NoZWR1bGVQYWlyPiBwYWlyID0gcHJwUGFpcjsKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQ
YWlycy0+cmVtb3ZlKHBhaXIpOwogCi0jaWYgIVBMQVRGT1JNKElPUykKICAgICBmb3IgKEZyYW1l
KiBmcmFtZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRM
b2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIGRv
Y3VtZW50TG9hZGVyLT51bnNjaGVkdWxlKCpwYWlyKTsKICAgICAgICAgaWYgKERvY3VtZW50TG9h
ZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50
TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+dW5zY2hlZHVsZSgqcGFpcik7
CiAgICAgfQotI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0JKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1ODgsMTUgKzE1ODgsOSBAQCBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBuc0NoYWxsZW5nZSkKIHsKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIFVOVVNFRF9QQVJBTShuc0NoYWxsZW5nZSk7Ci0gICAgLy8gRklY
TUU6IDxyZGFyOi8vcHJvYmxlbS8xNTc5OTg0ND4KLSAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQog
ICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZShuc0NoYWxsZW5nZSk7CiAKICAg
ICByZXR1cm4gcGxheWVyKCktPnNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoY2hhbGxlbmdlKTsKLSNlbmRpZgogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0KiBhdlJlcXVlc3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQkocmV2aXNp
b24gMTc0OTAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTY0LDEzICs2NCw2IEBAIFdFQkNPUkVf
RVhQT1JUIHZvaWQgKCp3a0NGVVJMUmVxdWVzdEFsbG8KIFdFQkNPUkVfRVhQT1JUIENGQXJyYXlS
ZWYgKCp3a0NvcHlOU1VSTFJlc3BvbnNlQ2VydGlmaWNhdGVDaGFpbikoTlNVUkxSZXNwb25zZSop
OwogV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdFbmNvZGluZyAoKndrR2V0V2ViRGVmYXVsdENGU3Ry
aW5nRW5jb2RpbmcpKHZvaWQpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLVdFQkNPUkVfRVhQT1JU
IENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgKCp3a0dldERlZmF1bHRIVFRQQ29va2llU3RvcmFnZSko
KTsKLVdFQkNPUkVfRVhQT1JUIFdLQ0ZVUkxDcmVkZW50aWFsUmVmICgqd2tDb3B5Q3JlZGVudGlh
bEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0
aW9uU3BhY2UpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q0ZVUkxSZXF1ZXN0U2hvdWxk
Q29udGVudFNuaWZmKShDRk11dGFibGVVUkxSZXF1ZXN0UmVmLCBib29sKTsKLVdFQkNPUkVfRVhQ
T1JUIHZvaWQgKCp3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbikoQ0ZVUkxTdG9yYWdlU2Vzc2lv
blJlZiwgQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZik7Ci0jZW5kaWYKLQogV0VCQ09SRV9FWFBPUlQg
Ym9vbCAoKndrR2V0VmVydGljYWxHbHlwaHNGb3JDaGFyYWN0ZXJzKShDVEZvbnRSZWYsIGNvbnN0
IFVuaUNoYXJbXSwgQ0dHbHlwaFtdLCBzaXplX3QpOwogV0VCQ09SRV9FWFBPUlQgQ1RMaW5lUmVm
ICgqd2tDcmVhdGVDVExpbmVXaXRoVW5pQ2hhclByb3ZpZGVyKShjb25zdCBVbmlDaGFyKiAoKnBy
b3ZpZGUpKENGSW5kZXggc3RyaW5nSW5kZXgsIENGSW5kZXgqIGNoYXJDb3VudCwgQ0ZEaWN0aW9u
YXJ5UmVmKiBhdHRyaWJ1dGVzLCB2b2lkKiksIHZvaWQgKCpkaXNwb3NlKShjb25zdCBVbmlDaGFy
KiBjaGFycywgdm9pZCopLCB2b2lkKik7CiBXRUJDT1JFX0VYUE9SVCBib29sICgqd2tDVEZvbnRU
cmFuc2Zvcm1HbHlwaHMpKENURm9udFJlZiBmb250LCBDR0dseXBoIGdseXBoc1tdLCBDR1NpemUg
YWR2YW5jZXNbXSwgQ0ZJbmRleCBjb3VudCwgd2tDVEZvbnRUcmFuc2Zvcm1PcHRpb25zIG9wdGlv
bnMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC05NywxMyArOTcsNiBAQCB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVh
CiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRT
dHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CiBDRkhUVFBN
ZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwg
Q0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYg
cHJveHlQb3J0KTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi1DRkhUVFBDb29raWVTdG9yYWdlUmVm
ICgqd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UpKCk7Ci1XS0NGVVJMQ3JlZGVudGlhbFJl
ZiAoKndrQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFnZSkoQ0ZVUkxQcm90ZWN0
aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlKTsKLXZvaWQgKCp3a1NldENGVVJMUmVxdWVzdFNo
b3VsZENvbnRlbnRTbmlmZikoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiwgYm9vbCk7Ci12b2lkICgq
d2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIENGTXV0
YWJsZVVSTFJlcXVlc3RSZWYpOwotI2VuZGlmCi0KIGJvb2wgKCp3a0dldFZlcnRpY2FsR2x5cGhz
Rm9yQ2hhcmFjdGVycykoQ1RGb250UmVmLCBjb25zdCBVbmlDaGFyW10sIENHR2x5cGhbXSwgc2l6
ZV90KTsKIAogdm9pZCogd2tHZXRIeXBoZW5hdGlvbkxvY2F0aW9uQmVmb3JlSW5kZXg7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlv
blNwYWNlQmFzZS5jcHAJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgogCi0jaWYgVVNFKENG
TkVUV09SSykgJiYgIVBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFByb3RlY3Rp
b25TcGFjZVByaXYuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCShyZXZpc2lv
biAxNzQ5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUksp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbigpIGNvbnN0OwogICAgIGlkIG1ha2VEZWxl
Z2F0ZShib29sKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAjaWYgVVNFKENGTkVUV09S
SykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZik7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVT
RShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKik7CiAjZW5k
aWYKIApAQCAtMjUyLDEwICsyNTIsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIENGU3RyaW5nUmVmIHN5bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2RlKCk7CiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENGTkVUV09SSykKLSAgICBzdGF0aWMgQ0ZNdXRhYmxl
RGljdGlvbmFyeVJlZiBjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKLSNlbmRpZgotCiAgICAgdHlwZWRlZiBQYXNzUmVmUHRyPFJlc291
cmNlSGFuZGxlPiAoKkJ1aWx0aW5Db25zdHJ1Y3RvcikoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KTsKICAgICBzdGF0aWMgdm9pZCBy
ZWdpc3RlckJ1aWx0aW5Db25zdHJ1Y3Rvcihjb25zdCBBdG9taWNTdHJpbmcmIHByb3RvY29sLCBC
dWlsdGluQ29uc3RydWN0b3IpOwogCkBAIC0yOTAsMTEgKzI4NiwxMSBAQCBwcml2YXRlOgogICAg
IHZvaWQgY3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IsIENGRGljdGlv
bmFyeVJlZiBjbGllbnRQcm9wZXJ0aWVzKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAm
JiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBjcmVhdGVOU1VS
TENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Us
IGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IpOwogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShJT1MpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKElPUykK
ICAgICB2b2lkIGNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRV
c2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdC
ZWhhdmlvciwgTlNEaWN0aW9uYXJ5ICpjb25uZWN0aW9uUHJvcGVydGllcyk7CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVy
bmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUludGVybmFsLmgJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTAsMTEgKzE1MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZTsKICNlbmRpZgot
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICAgICAgUmV0YWluUHRyPE5TVVJMQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAg
ICAgICBSZXRhaW5QdHI8aWQ+IG1fZGVsZWdhdGU7Ci0jZW5kaWYKLSNpZiBQTEFURk9STShDT0NP
QSkKICAgICAgICAgYm9vbCBtX3N0YXJ0V2hlblNjaGVkdWxlZDsKICAgICAgICAgYm9vbCBtX25l
ZWRzU2l0ZVNwZWNpZmljUXVpcmtzOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAJKHJldmlz
aW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVu
dGljYXRpb25DRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEzICs1Myw4IEBAIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkMKIAogQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiBjZkNoYWxs
ZW5nZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
dXRoZW50aWNhdGlvbkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQpCi0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UoUHJvdGVjdGlvblNwYWNl
KENGVVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjZkNoYWxsZW5nZSkpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWRlbnRpYWwoQ0ZVUkxBdXRoQ2hhbGxl
bmdlR2V0UHJvcG9zZWRDcmVkZW50aWFsKGNmQ2hhbGxlbmdlKSksCi0jZWxzZQogICAgIDogQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVj
dGlvblNwYWNlKGNmQ2hhbGxlbmdlKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRlbnRpYWwoY2ZDaGFsbGVu
Z2UpKSwKLSNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGVVJMQXV0
aENoYWxsZW5nZUdldFByZXZpb3VzRmFpbHVyZUNvdW50KGNmQ2hhbGxlbmdlKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0ZVUkxSZXNwb25zZVJlZilDRlVSTEF1dGhDaGFs
bGVuZ2VHZXRGYWlsdXJlUmVzcG9uc2UoY2ZDaGFsbGVuZ2UpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENGVVJMQXV0aENoYWxsZW5nZUdldEVycm9yKGNmQ2hhbGxlbmdlKSkK
QEAgLTkzLDE0ICs4OCwxMCBAQCBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY3JlYXRlQ0YoY29uc3Qg
QXV0CiB7CiAgICAgLy8gRklYTUU6IFdoeSBub3QgY2FjaGUgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVm
IGluIG1fY2ZDaGFsbGVuZ2U/IEZvdW5kYXRpb24gY291bnRlcnBhcnQgZG9lcyB0aGF0LgogCi0j
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9IENG
VVJMQXV0aENoYWxsZW5nZUNyZWF0ZSgwLCBjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgp
LmNmU3BhY2UoKSwgY29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKS5jZkNyZWRlbnRp
YWwoKSwKLSNlbHNlCiAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlh
bCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKSkp
OwogICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gcHJvdGVjdGlvblNwYWNl
ID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKSk7CiAK
ICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgcmVzdWx0ID0gQ0ZVUkxBdXRoQ2hhbGxlbmdlQ3Jl
YXRlKDAsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSwgY3JlZGVudGlhbC5nZXQoKSwKLSNlbmRpZgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVDaGFsbGVuZ2UucHJl
dmlvdXNGYWlsdXJlQ291bnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb3JlQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmNmVVJMUmVzcG9uc2UoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlQ2hhbGxlbmdlLmVycm9y
KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJD
Rk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Db29raWVKYXJDRk5ldC5jcHAJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShXSU4pIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPD0gMTA5MCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPCA4MDAwMCkKKyNpZiBQTEFURk9STShXSU4pCiBlbnVtIHsKICAgICBDRkhU
VFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluID0gMwogfTsKQEAgLTEwMywxMyArMTAzLDkgQEAgc3RhdGljIFJldGFpblB0cjxDRkFycmF5
UmVmPiBjb3B5Q29va2llcwogewogICAgIGJvb2wgc2VjdXJlID0gdXJsLnByb3RvY29sSXMoImh0
dHBzIik7CiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSA4MDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEwMDApCi0gICAgcmV0dXJuIGFkb3B0Q0YoX0NGSFRUUENvb2tp
ZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTFdpdGhNYWluRG9jdW1lbnRVUkwoc2Vzc2lvbi5jb29r
aWVTdG9yYWdlKCkuZ2V0KCksIHVybC5jcmVhdGVDRlVSTCgpLmdldCgpLCBmaXJzdFBhcnR5LmNy
ZWF0ZUNGVVJMKCkuZ2V0KCksIHNlY3VyZSkpOwotI2Vsc2UKICAgICAvLyBfQ0ZIVFRQQ29va2ll
U3RvcmFnZUNvcHlDb29raWVzRm9yVVJMV2l0aE1haW5Eb2N1bWVudFVSTCBpcyBub3QgYXZhaWxh
YmxlIG9uIG90aGVyIHBsYXRmb3Jtcy4KICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eSk7CiAg
ICAgcmV0dXJuIGFkb3B0Q0YoQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9yVVJMKHNl
c3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmwuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgc2Vj
dXJlKSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5j
cHAJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMz
LDcgQEAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgiCi0jZWxpZiBQTEFURk9STShXSU4pCisjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1
ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNlbmRp
ZgogCkBAIC00NywyOSArNDUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDcmVkZW50aWFs
IENyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVj
dGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
UmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbENGID0gYWRvcHRDRih3a0Nv
cHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UocHJvdGVjdGlvblNwYWNlLmNmU3Bh
Y2UoKSkpOwotICAgIHJldHVybiBDcmVkZW50aWFsKGNyZWRlbnRpYWxDRi5nZXQoKSk7Ci0jZWxz
ZQogICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gcHJvdGVjdGlvblNwYWNl
Q0YgPSBhZG9wdENGKGNyZWF0ZUNGKHByb3RlY3Rpb25TcGFjZSkpOwogICAgIFJldGFpblB0cjxD
RlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWxDRiA9IGFkb3B0Q0Yod2tDb3B5Q3JlZGVudGlh
bEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKHByb3RlY3Rpb25TcGFjZUNGLmdldCgpKSk7CiAgICAg
cmV0dXJuIGNvcmUoY3JlZGVudGlhbENGLmdldCgpKTsKLSNlbmRpZgogfQogCi0jaWYgUExBVEZP
Uk0oSU9TKQotdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6c2F2ZVRvUGVyc2lzdGVudFN0b3JhZ2Uo
Y29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwm
IGNyZWRlbnRpYWwpCi17Ci0gICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VSZWY+
IHN0b3JhZ2VDRiA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZUNyZWF0ZSgwKSk7Ci0K
LSAgICBpZiAoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpID09IENyZWRlbnRpYWxQZXJzaXN0ZW5j
ZU5vbmUpIHsKLSAgICAgICAgQ3JlZGVudGlhbCBzZXNzaW9uQ3JlZGVudGlhbChjcmVkZW50aWFs
LCBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsKLSAgICAgICAgQ0ZVUkxDcmVkZW50
aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0b3JhZ2VD
Ri5nZXQoKSwgc2Vzc2lvbkNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIHByb3RlY3Rpb25TcGFj
ZS5jZlNwYWNlKCkpOwotICAgIH0gZWxzZQotICAgICAgICBDRlVSTENyZWRlbnRpYWxTdG9yYWdl
U2V0RGVmYXVsdENyZWRlbnRpYWxGb3JQcm90ZWN0aW9uU3BhY2Uoc3RvcmFnZUNGLmdldCgpLCBj
cmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKTsKLX0K
LSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQ0ZORVRX
T1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVy
cm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUVycm9yLmgJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw5ICs4
OCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RhdGFJc1VwVG9EYXRlOwogI2lmIFVTRShDRk5F
VFdPUkspCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0ZFcnJvclJlZj4gbV9wbGF0Zm9ybUVycm9y
OwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG11dGFibGUgUmV0YWluUHRyPE5TRXJyb3I+IG1f
cGxhdGZvcm1OU0Vycm9yOwotI2VuZGlmCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IG1fY2VydGlmaWNhdGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0
LmNwcAkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTYgKzUy
LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgiCi0jaW5jbHVkZSAi
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2lmIFVTRShDRk5FVFdPUkspCi0jaW5jbHVkZSAi
V2ViQ29yZVVSTFJlc3BvbnNlLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlv
blByaXYuaD4KLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0UHJpdi5oPgotI2VuZGlm
Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8cHJvY2Vzcy5oPgpAQCAt
MjE4LDE0ICsyMDgsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rp
CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUocHJvcGVydGllc0RpY3Rpb25hcnkuZ2V0KCksIGtD
RlVSTENvbm5lY3Rpb25Tb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzLCBzdHJlYW1Qcm9wZXJ0aWVzKTsK
ICAgICBDRlJlbGVhc2Uoc3RyZWFtUHJvcGVydGllcyk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBpZiAoY2xpZW50KCkgJiYgY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKQotICAg
ICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlKHRoaXMpKTsKLSAgICBl
bHNlCi0gICAgICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7Ci0jZWxz
ZQogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7Ci0jZW5kaWYKICAg
ICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+c2V0dXBSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwog
CiAgICAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IGNsaWVudCA9IGQtPm1fY29ubmVjdGlvbkRl
bGVnYXRlLT5tYWtlQ29ubmVjdGlvbkNsaWVudCgpOwpAQCAtMzQzLDEyICszMjYsOSBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljCiAKICAgICBpZiAoIWQtPm1fdXNl
ci5pc051bGwoKSAmJiAhZC0+bV9wYXNzLmlzTnVsbCgpKSB7CiAgICAgICAgIFJldGFpblB0cjxD
RlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFs
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGQtPm1fdXNlci5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwga0NGVVJMQ3JlZGVudGlh
bFBlcnNpc3RlbmNlTm9uZSkpOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBDcmVkZW50
aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKGNmQ3JlZGVudGlhbC5nZXQoKSk7Ci0jZWxzZQor
CiAgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IGNvcmUoY2ZDcmVkZW50aWFsLmdldCgp
KTsKLSNlbmRpZgotICAgICAgICAKKwogICAgICAgICBVUkwgdXJsVG9TdG9yZTsKICAgICAgICAg
aWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkK
ICAgICAgICAgICAgIHVybFRvU3RvcmUgPSBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJs
KCk7CkBAIC0zNzcsMTIgKzM1Nyw4IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVB
dXRoZW50aWMKICAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGNyZWRlbnRpYWwgYmFj
aywgcG9zc2libHkgYWRkaW5nIGl0IGFzIGEgZGVmYXVsdCBmb3IgdGhpcyBkaXJlY3RvcnkuCiAg
ICAgICAgICAgICAgICAgICAgIENyZWRlbnRpYWxTdG9yYWdlOjpzZXQoY3JlZGVudGlhbCwgY2hh
bGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJs
KCkpOwogICAgICAgICAgICAgICAgIH0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAg
ICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwg
Y3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJl
ZigpKTsKLSNlbHNlCiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJl
Zj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRihjcmVkZW50aWFsKSk7CiAgICAgICAg
ICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0
KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigp
KTsKLSNlbmRpZgogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtNDMyLDIwICs0MDgsMTIgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRD
cmVkZW50aWFsKAogICAgICAgICBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KHdlYkNyZWRlbnRpYWws
IGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CiAKICAgICAgICAgaWYg
KGQtPm1fY29ubmVjdGlvbikgewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICAgICAgQ0ZV
UkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIHdlYkNyZWRl
bnRpYWwuY2ZDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7
Ci0jZWxzZQogICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVk
ZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRih3ZWJDcmVkZW50aWFsKSk7CiAgICAgICAgICAgICBD
RlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVk
ZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2VuZGlm
CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGQtPm1fY29ubmVjdGlvbikgewotI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29u
bmVjdGlvbi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgY2hhbGxlbmdlLmNmVVJM
QXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbHNlCiAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRl
bnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOwog
ICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQo
KSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkp
OwotI2VuZGlmCiAgICAgfQogCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwpAQCAtNTkxLDMw
ICs1NTksNiBAQCBib29sIFJlc291cmNlSGFuZGxlOjpsb2Fkc0Jsb2NrZWQoKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6
c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQotewotICAgIENGUnVuTG9vcFJlZiBydW5Mb29w
ID0gcGFpci5ydW5Mb29wKCk7Ci0gICAgaWYgKCFydW5Mb29wKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29wKGQtPm1fY29ubmVjdGlvbi5n
ZXQoKSwgcnVuTG9vcCwgcGFpci5tb2RlKCkpOwotICAgIGlmIChkLT5tX3N0YXJ0V2hlblNjaGVk
dWxlZCkgewotICAgICAgICBDRlVSTENvbm5lY3Rpb25TdGFydChkLT5tX2Nvbm5lY3Rpb24uZ2V0
KCkpOwotICAgICAgICBkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCA9IGZhbHNlOwotICAgIH0KLX0K
LQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCi17
Ci0gICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBwYWlyLnJ1bkxvb3AoKTsKLSAgICBpZiAoIXJ1
bkxvb3ApCi0gICAgICAgIHJldHVybjsKLQotICAgIENGVVJMQ29ubmVjdGlvblVuc2NoZWR1bGVG
cm9tUnVuTG9vcChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIHJ1bkxvb3AsIHBhaXIubW9kZSgpKTsK
LX0KLSNlbmRpZgotCiBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIFJlc291cmNlSGFuZGxlOjpjdXJy
ZW50UmVxdWVzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGQtPm1fY3VycmVudFJlcXVlc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5j
cHAJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVk
ZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9STShXSU4p
CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5o
PgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDkgKzUzLDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9pc051bGwgPSAh
Y2ZSZXNwb25zZTsKICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgV0VCQ09SRV9FWFBP
UlQgUmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlICopOwotI2VuZGlmCiAjZWxzZQogICAg
IFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkKICAgICAgICAgOiBt
X2luaXRMZXZlbChVbmluaXRpYWxpemVkKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAko
cmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsNiBA
QAogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlc3BvbnNlUHJpdi5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRpZgotCiAvLyBXZSB3b3VsZCBsaWtlIGEgYmV0dGVyIHZh
bHVlIGZvciBhIG1heGltdW0gdGltZV90LAogLy8gYnV0IHRoZXJlIGlzIG5vIHdheSB0byBkbyB0
aGF0IGluIEMgd2l0aCBhbnkgY2VydGFpbnR5LgogLy8gSU5UX01BWCBzaG91bGQgd29yayB3ZWxs
IGVub3VnaCBmb3Igb3VyIHB1cnBvc2VzLgpAQCAtNTIsMTMgKzQ4LDkgQEAgc3RhdGljIGNvbnN0
IGludCBudW1Db21tb25IZWFkZXJGaWVsZHMgPQogQ0ZVUkxSZXNwb25zZVJlZiBSZXNvdXJjZVJl
c3BvbnNlOjpjZlVSTFJlc3BvbnNlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2ZSZXNwb25zZSAm
JiAhbV9pc051bGwpIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgbnNVUkxSZXNwb25z
ZSgpOwotI2Vsc2UKICAgICAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBtX3VybC5jcmVh
dGVDRlVSTCgpOwogICAgICAgICAvLyBGSVhNRTogVGhpcyBjcmVhdGVzIGEgdmVyeSBpbmNvbXBs
ZXRlIENGVVJMUmVzcG9uc2UsIHdoaWNoIGRvZXMgbm90IGV2ZW4gaGF2ZSBhIHN0YXR1cyBjb2Rl
LgogICAgICAgICBtX2NmUmVzcG9uc2UgPSBhZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwg
dXJsLmdldCgpLCBtX21pbWVUeXBlLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG1f
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBtX3RleHRFbmNvZGluZ05hbWUuc3RyaW5nKCkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOwotI2VuZGlmCiAg
ICAgfQogCiAgICAgcmV0dXJuIG1fY2ZSZXNwb25zZS5nZXQoKTsKQEAgLTExOSw5ICsxMTEsNiBA
QCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoCiAKIENlcnRpZmljYXRl
SW5mbyBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpIGNvbnN0CiB7
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgcmV0dXJuIENlcnRpZmljYXRlSW5mbyhhZG9wdENG
KHdrQ29weU5TVVJMUmVzcG9uc2VDZXJ0aWZpY2F0ZUNoYWluKG5zVVJMUmVzcG9uc2UoKSkpKTsK
LSNlbmRpZgogICAgIHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxD
b2NvYS5oCShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAs
NiBAQAogI2luY2x1ZGUgPFNlY3VyaXR5L1NlY0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJM
Q3JlZGVudGlhbCogQ0ZVUkxDcmVkZW50aWFsUmVmOwotI2VuZGlmCi0KIE9CSkNfQ0xBU1MgTlNV
UkxDcmVkZW50aWFsOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MiwxOCArNDgsMTIgQEAg
cHVibGljOgogCiAgICAgQ3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFsJiwgQ3JlZGVudGlhbFBl
cnNpc3RlbmNlKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgZXhwbGljaXQgQ3JlZGVudGlh
bChDRlVSTENyZWRlbnRpYWxSZWYpOwotI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgQ3JlZGVudGlhbChOU1VSTENyZWRlbnRpYWwgKik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGlzRW1wdHkoKSBjb25zdDsKIAogICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3Jt
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbnNDcmVkZW50aWFsICYmIGVuY29kaW5nUmVxdWlyZXNQ
bGF0Zm9ybURhdGEobV9uc0NyZWRlbnRpYWwuZ2V0KCkpOyB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotICAgIENGVVJMQ3JlZGVudGlhbFJlZiBjZkNyZWRlbnRpYWwoKSBjb25zdDsKLSNlbmRpZgog
ICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMQ3JlZGVudGlhbCAqbnNDcmVkZW50aWFsKCkgY29uc3Q7
CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQ3JlZGVudGlhbCYsIGNv
bnN0IENyZWRlbnRpYWwmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvQ3JlZGVudGlhbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCShyZXZpc2lvbiAxNzQ5MDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTMgKzMzLDYgQEAgZW51bSB7CiB9OwogI2VuZGlm
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQGludGVyZmFjZSBOU1VSTENyZWRlbnRpYWwgKFdlYkRl
dGFpbHMpCi0tIChpZClfaW5pdFdpdGhDRlVSTENyZWRlbnRpYWw6KENGVVJMQ3JlZGVudGlhbFJl
ZiljcmVkZW50aWFsOwotLSAoQ0ZVUkxDcmVkZW50aWFsUmVmKSBfQ0ZVUkxDcmVkZW50aWFsOwot
QGVuZAotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE5TVVJMQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlIHRvTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UoQ3JlZGVudGlhbFBl
cnNpc3RlbmNlIHBlcnNpc3RlbmNlKQpAQCAtOTgsMjYgKzkxLDEyIEBAIENyZWRlbnRpYWw6OkNy
ZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYKICAgICB9CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChDRlVSTENyZWRlbnRpYWxSZWYgY3JlZGVudGlhbCkK
LSAgICA6IENyZWRlbnRpYWwoYWRvcHROUyhbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10gX2luaXRX
aXRoQ0ZVUkxDcmVkZW50aWFsOmNyZWRlbnRpYWxdKS5nZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBD
cmVkZW50aWFsOjpDcmVkZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkKICAgICA6
IENyZWRlbnRpYWxCYXNlKGNyZWRlbnRpYWwudXNlciwgY3JlZGVudGlhbC5wYXNzd29yZCwgdG9D
cmVkZW50aWFsUGVyc2lzdGVuY2UoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSkpCiAgICAgLCBtX25z
Q3JlZGVudGlhbChjcmVkZW50aWFsKQogewogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJM
Q3JlZGVudGlhbFJlZiBDcmVkZW50aWFsOjpjZkNyZWRlbnRpYWwoKSBjb25zdAotewotICAgIHJl
dHVybiBbbnNDcmVkZW50aWFsKCkgX0NGVVJMQ3JlZGVudGlhbF07Ci19Ci0jZW5kaWYKLQogTlNV
UkxDcmVkZW50aWFsICpDcmVkZW50aWFsOjpuc0NyZWRlbnRpYWwoKSBjb25zdAogewogICAgIGlm
IChtX25zQ3JlZGVudGlhbCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLmgJKHJldmlzaW9u
IDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVj
dGlvblNwYWNlQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDYgQEAKICNpbmNs
dWRlICJQcm90ZWN0aW9uU3BhY2VCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
Ci0jaWYgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IF9DRlVSTFByb3RlY3Rpb25TcGFj
ZSogQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY7Ci0jZW5kaWYKLQogT0JKQ19DTEFTUyBOU1VSTFBy
b3RlY3Rpb25TcGFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsOSArNDMsNiBAQCBw
dWJsaWM6CiAKICAgICBQcm90ZWN0aW9uU3BhY2UoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVU
eXBlIGRlbGV0ZWRWYWx1ZSkgOiBQcm90ZWN0aW9uU3BhY2VCYXNlKGRlbGV0ZWRWYWx1ZSkgeyB9
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGV4cGxpY2l0IFByb3RlY3Rpb25TcGFjZShDRlVS
TFByb3RlY3Rpb25TcGFjZVJlZik7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBQcm90ZWN0aW9uU3BhY2UoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKik7CiAKICAgICBzdGF0aWMg
Ym9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBhLCBjb25zdCBQcm90
ZWN0aW9uU3BhY2UmIGIpOwpAQCAtNjAsOSArNTMsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KCkgY29uc3Q7CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNmU3BhY2UoKSBjb25z
dDsKLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUHJvdGVjdGlvblNwYWNlICpuc1Nw
YWNlKCkgY29uc3Q7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0J
KHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDIyICsyNiw4
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlByb3RlY3Rpb25TcGFjZUNvY29hLmgi
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQGludGVyZmFjZSBOU1VSTFByb3RlY3Rpb25TcGFjZSAo
V2ViRGV0YWlscykKLS0gKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKSBfQ0ZVUkxQcm90ZWN0aW9u
U3BhY2U7Ci0tIChpZClfaW5pdFdpdGhDRlVSTFByb3RlY3Rpb25TcGFjZTooQ0ZVUkxQcm90ZWN0
aW9uU3BhY2VSZWYpY2ZQcm90U3BhY2U7Ci1AZW5kCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLVByb3RlY3Rpb25TcGFjZTo6UHJvdGVjdGlvblNw
YWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHNwYWNlKQotICAgIDogUHJvdGVjdGlvblNwYWNl
KGFkb3B0TlMoW1tOU1VSTFByb3RlY3Rpb25TcGFjZSBhbGxvY10gX2luaXRXaXRoQ0ZVUkxQcm90
ZWN0aW9uU3BhY2U6c3BhY2VdKS5nZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBzdGF0aWMgUHJvdGVj
dGlvblNwYWNlU2VydmVyVHlwZSB0eXBlKE5TVVJMUHJvdGVjdGlvblNwYWNlICpzcGFjZSkKIHsK
ICAgICBpZiAoW3NwYWNlIGlzUHJveHldKSB7CkBAIC0xMDUsMTMgKzkxLDYgQEAgUHJvdGVjdGlv
blNwYWNlOjpQcm90ZWN0aW9uU3BhY2UoTlNVUkxQcgogICAgIG1fbnNTcGFjZSA9IHNwYWNlOwog
fQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJMUHJvdGVjdGlvblNwYWNlUmVmIFByb3RlY3Rp
b25TcGFjZTo6Y2ZTcGFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFtuc1NwYWNlKCkgX0NGVVJM
UHJvdGVjdGlvblNwYWNlXTsKLX0KLSNlbmRpZgotCiBOU1VSTFByb3RlY3Rpb25TcGFjZSAqUHJv
dGVjdGlvblNwYWNlOjpuc1NwYWNlKCkgY29uc3QKIHsKICAgICBpZiAobV9uc1NwYWNlKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RD
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC01MywxNSArNTMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBOU1VS
TFJlcXVlc3QgKlJlc291cmNlUmVxdWVzdDo6bnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9s
aWN5IGJvZHlQb2xpY3kpIGNvbnN0CiB7CiAgICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KGJvZHlQ
b2xpY3kpOwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgaWYgKCFtX25zUmVxdWVzdCkKLSAgICAg
ICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlcXVlc3QqPih0aGlzKS0+dXBkYXRlTlNVUkxSZXF1ZXN0
KCk7Ci0jZW5kaWYKICAgICByZXR1cm4gW1ttX25zUmVxdWVzdC5nZXQoKSByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKIH0KIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiBDRlVSTFJlcXVlc3RSZWYgUmVz
b3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9keVBvbGlj
eSkgY29uc3QKIHsKICAgICByZXR1cm4gW25zVVJMUmVxdWVzdChib2R5UG9saWN5KSBfQ0ZVUkxS
ZXF1ZXN0XTsKQEAgLTI0OCw4ICsyNDIsNiBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0U3Rv
cmFnZVNlc3Npb24oCiAgICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKHdrQ29weVJlcXVlc3RXaXRo
U3RvcmFnZVNlc3Npb24oc3RvcmFnZVNlc3Npb24sIG1fbnNSZXF1ZXN0LmdldCgpKSk7CiB9CiAK
LSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL1F1aWNrTG9vay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsMTEgKzQ0LDYgQEAgT0JKQ19DTEFTUyBOU1VSTENvbm5lY3Rpb247CiBPQkpDX0NMQVNT
IE5TVVJMUmVzcG9uc2U7CiBPQkpDX0NMQVNTIFFMUHJldmlld0NvbnZlcnRlcjsKIAotI2lmIFVT
RShDRk5FVFdPUkspCi10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxSZXNwb25zZSogQ0ZVUkxSZXNwb25z
ZVJlZjsKLXR5cGVkZWYgc3RydWN0IF9DRlVSTENvbm5lY3Rpb24qIENGVVJMQ29ubmVjdGlvblJl
ZjsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFF1aWNrTG9va0hhbmRs
ZUNsaWVudDsKQEAgLTg2LDkgKzgxLDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIHNob3VsZENyZWF0ZUZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOwogCiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJjZUhh
bmRsZSosIE5TVVJMQ29ubmVjdGlvbiAqLCBOU1VSTFJlc3BvbnNlICosIGlkIGRlbGVnYXRlKTsK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29r
SGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VIYW5kbGUqLCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqLCBDRlVSTFJlc3BvbnNlUmVmKTsKLSNlbmRpZgogICAg
IC8vIEZJWE1FOiBVc2Ugb2YgUmVzb3VyY2VMb2FkZXIgaGVyZSBpcyBhIHBsYXRmb3JtIHZpb2xh
dGlvbi4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9v
a0hhbmRsZT4gY3JlYXRlKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwogCkBAIC0xMDAsOSArOTIsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
aWRGYWlsKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNl
KCk7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2Uo
KTsKLSNlbmRpZgogCiAgICAgdm9pZCBzZXRDbGllbnQoUGFzc1JlZlB0cjxRdWlja0xvb2tIYW5k
bGVDbGllbnQ+IGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCShyZXZpc2lv
biAxNzQ5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xv
b2subW0JKHdvcmtpbmcgY29weSkKQEAgLTQ4LDE1ICs0OCw2IEBACiAjaW1wb3J0IDx3dGYvVmVj
dG9yLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFVTRShDRk5FVFdP
UkspCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uLmg+Ci0KLUBpbnRlcmZhY2Ug
TlNVUkxSZXNwb25zZSAoUXVpY2tMb29rRGV0YWlscykKLSsoTlNVUkxSZXNwb25zZSAqKV9yZXNw
b25zZVdpdGhDRlVSTFJlc3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNlOwotLShDRlVS
TFJlc3BvbnNlUmVmKV9DRlVSTFJlc3BvbnNlOwotQGVuZAotI2VuZGlmCi0KIFNPRlRfTElOS19G
UkFNRVdPUktfT1BUSU9OQUwoUXVpY2tMb29rKQogU09GVF9MSU5LX0NMQVNTKFF1aWNrTG9vaywg
UUxQcmV2aWV3Q29udmVydGVyKQogU09GVF9MSU5LX01BWV9GQUlMKFF1aWNrTG9vaywgUUxQcmV2
aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzLCBOU1NldCAqLCAoKSwgKCkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRs
ZUlPUy5tbQkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvUmVzb3VyY2VIYW5kbGVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMzkgKzEg
QEAKLS8vCi0vLyAgUmVzb3VyY2VIYW5kbGVJUGhvbmUubW0KLS8vICBXZWJDb3JlCi0vLwotLy8g
IENvcHlyaWdodCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0KLSNp
bXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgotCi0j
aWYgVVNFKENGTkVUV09SSykKLQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGU29ja2V0U3RyZWFtUHJp
di5oPgotI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFJlcXVlc3RQcml2YXRlLmg+Ci0KLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNGTXV0YWJsZURp
Y3Rpb25hcnlSZWYgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxS
ZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBOU1N0cmluZyAq
aG9zdCA9IHJlcXVlc3QudXJsKCkuaG9zdCgpOwotICAgIE5TQXJyYXkgKmNlcnRBcnJheSA9IFtO
U1VSTFJlcXVlc3QgYWxsb3dzU3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdDpob3N0XTsK
LSAgICBCT09MIGFsbG93c0FueUNlcnRpZmljYXRlID0gW05TVVJMUmVxdWVzdCBhbGxvd3NBbnlI
VFRQU0NlcnRpZmljYXRlRm9ySG9zdDpob3N0XTsKLSAgICBpZiAoIWNlcnRBcnJheSAmJiAhYWxs
b3dzQW55Q2VydGlmaWNhdGUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBzc2xQcm9wcyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAgaWYgKGNlcnRBcnJheSkKLSAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoc3NsUHJvcHMsIF9rQ0ZTdHJlYW1TU0xUcnVzdGVkTGVhZkNlcnRp
ZmljYXRlcywgKENGVHlwZVJlZikgY2VydEFycmF5KTsKLQotICAgIGlmIChhbGxvd3NBbnlDZXJ0
aWZpY2F0ZSkKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3NsUHJvcHMsIGtDRlN0cmVh
bVNTTFZhbGlkYXRlc0NlcnRpZmljYXRlQ2hhaW4sIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgcmV0
dXJuIHNzbFByb3BzOwotfQotCi19Ci0KLSNlbmRpZgorLy8gUmVtb3ZlIG1lCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VS
ZXF1ZXN0SU9TLm1tCShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTQw
LDQ0ICs0MCw2IEBAIGJvb2wgUmVzb3VyY2VSZXF1ZXN0Ojp1c2VRdWlja0xvb2tSZXNvdXIKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1SZXNvdXJjZVJlcXVl
c3Q6OlJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVlc3QgKm5zUmVxdWVzdCkKLSAgICA6IFJlc291
cmNlUmVxdWVzdEJhc2UoKQotICAgICwgbV9tYWluUmVzb3VyY2VSZXF1ZXN0KGZhbHNlKQotICAg
ICwgbV9jZlJlcXVlc3QoW25zUmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSkKLSAgICAsIG1fbnNSZXF1
ZXN0KG5zUmVxdWVzdCkKLXsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZU5TVVJM
UmVxdWVzdCgpCi17Ci0gICAgaWYgKG1fY2ZSZXF1ZXN0KQotICAgICAgICBtX25zUmVxdWVzdCA9
IGFkb3B0TlMoW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVl
c3Q6bV9jZlJlcXVlc3QuZ2V0KCldKTsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmNsZWFy
T3JVcGRhdGVOU1VSTFJlcXVlc3QoKQotewotICAgIC8vIFRoZXJlIGlzIGNsaWVudCBjb2RlIHRo
YXQgZXh0ZW5kcyBOU1VSTFJlcXVlc3QgYW5kIGV4cGVjdHMgdG8gZ2V0IGJhY2ssIGluIHRoZSBk
ZWxlZ2F0ZQotICAgIC8vIGNhbGxiYWNrcywgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgdGhh
dCB0aGV5IHBhc3NlZCBpbnRvIFdlYktpdC4gVG8ga2VlcCB0aGVuIHJ1bm5pbmcsIHdlCi0gICAg
Ly8gY3JlYXRlIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFuZCByZXR1cm4gdGhhdC4gU2Vl
IDxyZGFyOi8vOTg0MzU4Mj4uCi0gICAgLy8gQWxzbywgZGV2ZWxvcGVycyByZWFsbHkgcmVhbGx5
IHdhbnQgYW4gTlNNdXRhYmxlVVJMUmVxdWVzdCBzbyB0cnkgdG8gY3JlYXRlIGFuCi0gICAgLy8g
TlNNdXRhYmxlVVJMUmVxdWVzdCBpbnN0ZWFkIG9mIE5TVVJMUmVxdWVzdC4KLSAgICBzdGF0aWMg
Q2xhc3MgbnNVUkxSZXF1ZXN0Q2xhc3MgPSBbTlNVUkxSZXF1ZXN0IGNsYXNzXTsKLSAgICBzdGF0
aWMgQ2xhc3MgbnNNdXRhYmxlVVJMUmVxdWVzdENsYXNzID0gW05TTXV0YWJsZVVSTFJlcXVlc3Qg
Y2xhc3NdOwotICAgIENsYXNzIHJlcXVlc3RDbGFzcyA9IFttX25zUmVxdWVzdC5nZXQoKSBjbGFz
c107Ci0KLSAgICBpZiAoIW1fY2ZSZXF1ZXN0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
cmVxdWVzdENsYXNzICYmIHJlcXVlc3RDbGFzcyAhPSBuc1VSTFJlcXVlc3RDbGFzcyAmJiByZXF1
ZXN0Q2xhc3MgIT0gbnNNdXRhYmxlVVJMUmVxdWVzdENsYXNzKQotICAgICAgICBtX25zUmVxdWVz
dCA9IGFkb3B0TlMoW1tyZXF1ZXN0Q2xhc3MgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDpt
X2NmUmVxdWVzdC5nZXQoKV0pOwotICAgIGVsc2UKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBudWxs
cHRyOwotfQotCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0JKHJl
dmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1
dGhlbnRpY2F0aW9uTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwyNiArMzIsMTEgQEAKICNp
bXBvcnQgPEZvdW5kYXRpb24vTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2ltcG9y
dCA8Rm91bmRhdGlvbi9OU1VSTFByb3RlY3Rpb25TcGFjZS5oPgogCi0jaWYgVVNFKENGTkVUV09S
SykKLQotQGludGVyZmFjZSBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIChEZXRhaWxzKQot
I2lmIFBMQVRGT1JNKElPUykKLSsoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKV9jcmVh
dGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUZvckNGQXV0aENoYWxsZW5nZTooQ0ZVUkxBdXRoQ2hh
bGxlbmdlUmVmKWNmQ2hhbGxlbmdlIHNlbmRlcjooaWQgPE5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTZW5kZXI+KXNlbmRlcjsKLSNlbHNlCi0rKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKilfYXV0aGVudGljYXRpb25DaGFsbGVuZ2VGb3JDRkF1dGhDaGFsbGVuZ2U6KENGVVJMQXV0
aENoYWxsZW5nZVJlZiljZkNoYWxsZW5nZSBzZW5kZXI6KGlkIDxOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyPilzZW5kZXI7Ci0jZW5kaWYKLUBlbmQKLQotI2VuZGlmCi0KIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdlYkNvcmVBdXRoZW50aWNhdGlvbkNs
aWVudEFzQ2hhbGxlbmdlU2VuZGVyIDogTlNPYmplY3QgPE5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTZW5kZXI+CiB7CiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIG1fY2xpZW50OwotI2lm
IFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIG1fY2ZDaGFsbGVuZ2U7
Ci0jZW5kaWYKIH0KIC0gKGlkKWluaXRXaXRoQXV0aGVudGljYXRpb25DbGllbnQ6KEF1dGhlbnRp
Y2F0aW9uQ2xpZW50KiljbGllbnQ7CiAtIChBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50OwpA
QCAtOTcsNDcgKzgyLDEwIEBAIC0gKHZvaWQpY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
KE4KICAgICAgICAgbV9jbGllbnQtPnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvcmUoY2hhbGxlbmdl
KSk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotLSAodm9pZClzZXRDRkNoYWxsZW5nZTooQ0ZV
UkxBdXRoQ2hhbGxlbmdlUmVmKWNoYWxsZW5nZQotewotICAgIG1fY2ZDaGFsbGVuZ2UgPSBjaGFs
bGVuZ2U7Ci19Ci0KLS0gKENGVVJMQXV0aENoYWxsZW5nZVJlZiljZkNoYWxsZW5nZQotewotICAg
IHJldHVybiBtX2NmQ2hhbGxlbmdlOwotfQotI2VuZGlmCi0KIEBlbmQKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLQotQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
Y29yZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICptYWNDaGFsbGVuZ2UpCi17Ci0gICAg
V2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgKmNoYWxsZW5nZVNl
bmRlciA9IChXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciopIFtt
YWNDaGFsbGVuZ2Ugc2VuZGVyXTsKLSAgICByZXR1cm4gQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
W2NoYWxsZW5nZVNlbmRlciBjZkNoYWxsZW5nZV0sIFtjaGFsbGVuZ2VTZW5kZXIgY2xpZW50XSk7
Ci19Ci0KLU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKm1hYyhjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYgY29yZUNoYWxsZW5nZSkKLXsKLSAgICBBdXRoZW50aWNhdGlvbkNsaWVu
dCogYXV0aENsaWVudCA9IGNvcmVDaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKTsKLSAg
ICBSZXRhaW5QdHI8V2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXI+
IGNoYWxsZW5nZVNlbmRlciA9IGFkb3B0TlMoW1tXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRB
c0NoYWxsZW5nZVNlbmRlciBhbGxvY10gaW5pdFdpdGhBdXRoZW50aWNhdGlvbkNsaWVudDphdXRo
Q2xpZW50XSk7Ci0gICAgUmV0YWluUHRyPENGVVJMQXV0aENoYWxsZW5nZVJlZj4gYXV0aENoYWxs
ZW5nZSA9IGNvcmVDaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCk7Ci0gICAgaWYgKCFh
dXRoQ2hhbGxlbmdlKQotICAgICAgICBhdXRoQ2hhbGxlbmdlID0gYWRvcHRDRihjcmVhdGVDRihj
b3JlQ2hhbGxlbmdlKSk7Ci0gICAgW2NoYWxsZW5nZVNlbmRlci5nZXQoKSBzZXRDRkNoYWxsZW5n
ZTphdXRoQ2hhbGxlbmdlLmdldCgpXTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgcmV0dXJuIFtb
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBfY3JlYXRlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VGb3JDRkF1dGhDaGFsbGVuZ2U6YXV0aENoYWxsZW5nZS5nZXQoKSBzZW5kZXI6Y2hhbGxlbmdl
U2VuZGVyLmdldCgpXSBhdXRvcmVsZWFzZV07Ci0jZWxzZQotICAgIHJldHVybiBbW05TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRm9yQ0ZBdXRoQ2hh
bGxlbmdlOmF1dGhDaGFsbGVuZ2UuZ2V0KCkgc2VuZGVyOmNoYWxsZW5nZVNlbmRlci5nZXQoKV0g
YXV0b3JlbGVhc2VdOwotI2VuZGlmCi19Ci0KLSNlbHNlCi0KIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3Rl
Y3Rpb25TcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHJldmlvdXNGYWls
dXJlQ291bnQsCkBAIC0yMTEsNiArMTU5LDQgQEAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY29y
ZShOU1VSTEF1dGhlbgogICAgIHJldHVybiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtYWNDaGFs
bGVuZ2UpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2ll
SmFyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0Nvb2tpZUphck1hYy5tbQkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBsYXRmb3JtQ29va2ll
SmFyLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25z
LmgiCiAjaW1wb3J0ICJDb29raWUuaCIKICNpbXBvcnQgIkNvb2tpZVN0b3JhZ2UuaCIKQEAgLTIy
Miw1ICsyMjAsMyBAQCB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZEFmdGVyRGF0ZShjCiB9
CiAKIH0KLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VN
YWMubW0JKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsy
Niw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlhbFN0b3JhZ2Uu
aCIKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYWMu
aCIKICNpbmNsdWRlICJDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgi
CkBAIC01Miw1ICs1MCwzIEBAIHZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNhdmVUb1BlcnNpc3Rl
bnQKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyAhVVNFKENG
TkVUV09SSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1E
YXRhU3RyZWFtTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaAkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksOCArMjksNiBAQAogI2lmbmRlZiBGb3JtRGF0YVN0cmVhbU1hY19oCiAj
ZGVmaW5lIEZvcm1EYXRhU3RyZWFtTWFjX2gKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMUmVxdWVz
dCogQ0ZVUkxSZXF1ZXN0UmVmOwpAQCAtNDksNiArNDcsNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQog
CiAjZW5kaWYgLy8gRm9ybURhdGFTdHJlYW1NYWNfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0JKHJl
dmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zv
cm1EYXRhU3RyZWFtTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw2IEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtTWFjLmgiCiAKLSNpZiAhVVNF
KENGTkVUV09SSykKLQogI2ltcG9ydCAiRm9ybURhdGEuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3Ry
ZWFtQ0ZOZXQuaCIKICNpbXBvcnQgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC01Miw1ICs1MCwzIEBA
IEZvcm1EYXRhKiBodHRwQm9keUZyb21TdHJlYW0oTlNJbnB1dFN0cmUKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JN
YWMubW0JKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSw2
IEBACiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmg+CiAjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KIAotI2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENGTkVUV09SSykK
LSNpbXBvcnQgPENGTmV0d29yay9DRlNvY2tldFN0cmVhbVByaXYuaD4KLSNlbmRpZgotCiBAaW50
ZXJmYWNlIE5TRXJyb3IgKFdlYkV4dHJhcykKIC0gKE5TU3RyaW5nICopX3dlYl9sb2NhbGl6ZWRE
ZXNjcmlwdGlvbjsKIEBlbmQKQEAgLTkxLDg1ICs4Nyw2IEBAIC0gKHZvaWQpZW5jb2RlV2l0aENv
ZGVyOihOU0NvZGVyICopY29kZXIKIAogQGVuZAogCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotc3Rh
dGljIE5TRXJyb3IgKk5TRXJyb3JGcm9tQ0ZFcnJvcihDRkVycm9yUmVmIGNmRXJyb3IsIE5TVVJM
ICp1cmwpCi17Ci0gICAgQ0ZJbmRleCBlcnJDb2RlID0gQ0ZFcnJvckdldENvZGUoY2ZFcnJvcik7
Ci0gICAgaWYgKENGRXF1YWwoQ0ZFcnJvckdldERvbWFpbihjZkVycm9yKSwga0NGRXJyb3JEb21h
aW5DRk5ldHdvcmspICYmIGVyckNvZGUgPD0ga0NGVVJMRXJyb3JVbmtub3duICYmIGVyckNvZGUg
PiAtNDAwMCkgewotICAgICAgICAvLyBUaGlzIGlzIGFuIFVSTCBlcnJvciBhbmQgbmVlZHMgdG8g
YmUgdHJhbnNsYXRlZCB0byB0aGUgTlNVUkxFcnJvckRvbWFpbgotICAgICAgICBpZCBrZXlzWzEw
XSwgdmFsdWVzWzEwXTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHVzZXJJbmZvID0gQ0ZFcnJv
ckNvcHlVc2VySW5mbyhjZkVycm9yKTsKLSAgICAgICAgTlNFcnJvciAqcmVzdWx0OwotICAgICAg
ICBOU0ludGVnZXIgY291bnQgPSAwOwotCi0gICAgICAgIGlmICh1cmwpIHsKLSAgICAgICAgICAg
IGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxFcnJvcktleTsKLSAgICAgICAgICAg
IHZhbHVlc1tjb3VudF0gPSB1cmw7Ci0gICAgICAgICAgICBjb3VudCArKzsKLQotICAgICAgICAg
ICAga2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5OwotICAg
ICAgICAgICAgdmFsdWVzW2NvdW50XSA9IFt1cmwgYWJzb2x1dGVTdHJpbmddOwotICAgICAgICAg
ICAgY291bnQgKys7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNG
RGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0aW9u
S2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291
bnRdID0gTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleTsKLSAgICAgICAgICAgIGNvdW50ICsrOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRW
YWx1ZSh1c2VySW5mbywga0NGRXJyb3JMb2NhbGl6ZWRGYWlsdXJlUmVhc29uS2V5KTsKLSAgICAg
ICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2Nh
bGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk7Ci0gICAgICAgICAgICBjb3VudCArKzsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
dXNlckluZm8sIGtDRkVycm9yTG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uS2V5KTsKLSAgICAg
ICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2Nh
bGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25FcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50ICsrOwot
ICAgICAgICB9Ci0KLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICAgICAg
aWYgKHVzZXJJbmZvICYmICh2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVl
KHVzZXJJbmZvLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNTTFBlZXJDZXJ0aWZpY2F0ZXMpKSAhPSBuaWwp
IHsKLSAgICAgICAgICAgIC8vIE5lZWQgdG8gdHJhbnNsYXRlIHRoZSBjZXJ0Ci0gICAgICAgICAg
ICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvclBlZXJDZXJ0aWZpY2F0ZUNoYWluS2V5IjsKLSAgICAg
ICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGlj
dGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBfa0NGU3RyZWFtUHJvcGVydHlTU0xDbGllbnRDZXJ0
aWZpY2F0ZXMpOwotICAgICAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAg
ICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvckNsaWVudENlcnRpZmljYXRlQ2hhaW5LZXkiOwot
ICAgICAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2
YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBfa0NGU3Ry
ZWFtUHJvcGVydHlTU0xDbGllbnRDZXJ0aWZpY2F0ZVN0YXRlKTsKLSAgICAgICAgICAgIGlmICh2
YWx1ZXNbY291bnRdKSB7Ci0gICAgICAgICAgICAgICAga2V5c1tjb3VudF0gPSBAIk5TRXJyb3JD
bGllbnRDZXJ0aWZpY2F0ZVN0YXRlS2V5IjsKLSAgICAgICAgICAgICAgICBjb3VudCArKzsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotCi0g
ICAgICAgIGlmICh1c2VySW5mbyAmJiAodmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlH
ZXRWYWx1ZSh1c2VySW5mbywga0NGU3RyZWFtUHJvcGVydHlTU0xQZWVyVHJ1c3QpKSAhPSBuaWwp
IHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxQZWVyVHJ1
c3RFcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50Kys7Ci0gICAgICAgIH0KLQotICAgICAgICBr
ZXlzW2NvdW50XSA9IE5TVW5kZXJseWluZ0Vycm9yS2V5OwotICAgICAgICB2YWx1ZXNbY291bnRd
ID0gKGlkKWNmRXJyb3I7Ci0gICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgIHJlc3VsdCA9IFtX
ZWJDdXN0b21OU1VSTEVycm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6
KGVyckNvZGUgPT0ga0NGVVJMRXJyb3JVbmtub3duID8gKENGSW5kZXgpTlNVUkxFcnJvclVua25v
d24gOiBlcnJDb2RlKSB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0
czp2YWx1ZXMgZm9yS2V5czprZXlzIGNvdW50OmNvdW50XV07Ci0gICAgICAgIGlmICh1c2VySW5m
bykKLSAgICAgICAgICAgIENGUmVsZWFzZSh1c2VySW5mbyk7Ci0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfQotICAgIHJldHVybiAoTlNFcnJvciAqKWNmRXJyb3I7Ci19Ci0jZW5kaWYgLy8g
VVNFKENGTkVUV09SSykKLQogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMTkwLDUzICsxMDcsNiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IGNy
ZWF0ZU5TRXJyb3JGCiAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0
aERvbWFpbjpyZXNvdXJjZUVycm9yLmRvbWFpbigpIGNvZGU6cmVzb3VyY2VFcnJvci5lcnJvckNv
ZGUoKSB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykK
LQotUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihOU0Vycm9yICplcnJvcikKLSAgICA6IG1f
ZGF0YUlzVXBUb0RhdGUoZmFsc2UpCi0gICAgLCBtX3BsYXRmb3JtRXJyb3IocmVpbnRlcnByZXRf
Y2FzdDxDRkVycm9yUmVmPihlcnJvcikpCi17Ci0gICAgbV9pc051bGwgPSAhZXJyb3I7Ci0gICAg
aWYgKCFtX2lzTnVsbCkKLSAgICAgICAgbV9pc1RpbWVvdXQgPSBbZXJyb3IgY29kZV0gPT0gTlNV
UkxFcnJvclRpbWVkT3V0OwotfQotCi1OU0Vycm9yICpSZXNvdXJjZUVycm9yOjpuc0Vycm9yKCkg
Y29uc3QKLXsKLSAgICBpZiAobV9pc051bGwpIHsKLSAgICAgICAgQVNTRVJUKCFtX3BsYXRmb3Jt
RXJyb3IpOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIGlmIChtX3BsYXRmb3Jt
TlNFcnJvcikKLSAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOwotCi0gICAg
aWYgKG1fcGxhdGZvcm1FcnJvcikgewotICAgICAgICBDRkVycm9yUmVmIGVycm9yID0gbV9wbGF0
Zm9ybUVycm9yLmdldCgpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiB1c2Vy
SW5mbyA9IGFkb3B0Q0YoQ0ZFcnJvckNvcHlVc2VySW5mbyhlcnJvcikpOwotI2lmIFBMQVRGT1JN
KElPUykKLSAgICAgICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBOU0Vycm9yRnJvbUNGRXJyb3IoZXJy
b3IsIChOU1VSTCAqKVsoTlNEaWN0aW9uYXJ5ICopdXNlckluZm8uZ2V0KCkgb2JqZWN0Rm9yS2V5
OihpZCkga0NGVVJMRXJyb3JGYWlsaW5nVVJMRXJyb3JLZXldKTsKLSAgICAgICAgLy8gSWYgTlNF
cnJvckZyb21DRkVycm9yIGNyZWF0ZWQgYSBuZXcgTlNFcnJvciBmb3IgdXMsIHJldHVybiB0aGF0
LgotICAgICAgICBpZiAobV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCkgIT0gKE5TRXJyb3IgKillcnJv
cikKLSAgICAgICAgICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLQotICAgICAg
ICAvLyBPdGhlcndpc2UgZmFsbCB0aHJvdWdoIHRvIGNyZWF0ZSBhIG5ldyBOU0Vycm9yIGZyb20g
dGhlIENGRXJyb3IuCi0jZW5kaWYKLSAgICAgICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBhZG9wdE5T
KFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46KE5TU3RyaW5nICopQ0ZFcnJvckdldERv
bWFpbihlcnJvcikgY29kZTpDRkVycm9yR2V0Q29kZShlcnJvcikgdXNlckluZm86KE5TRGljdGlv
bmFyeSAqKXVzZXJJbmZvLmdldCgpXSk7Ci0gICAgICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJv
ci5nZXQoKTsKLSAgICB9Ci0KLSAgICBtX3BsYXRmb3JtTlNFcnJvciA9IGNyZWF0ZU5TRXJyb3JG
cm9tUmVzb3VyY2VFcnJvckJhc2UoKnRoaXMpOwotICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJv
ci5nZXQoKTsKLX0KLQotUmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgTlNFcnJvciAqKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbnNFcnJvcigpOwotfQotCi0jZWxzZQotCiBSZXNvdXJjZUVycm9yOjpS
ZXNvdXJjZUVycm9yKE5TRXJyb3IgKm5zRXJyb3IpCiAgICAgOiBtX2RhdGFJc1VwVG9EYXRlKGZh
bHNlKQogICAgICwgbV9wbGF0Zm9ybUVycm9yKG5zRXJyb3IpCkBAIC0zMDksNiArMTc5LDQgQEAg
UmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgQ0ZFcnJvclJlZigpIGNvbgogICAgIHJldHVybiBjZkVy
cm9yKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUhhbmRsZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTU1LDE2ICs1NSw2IEBACiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaWYg
X19oYXNfaW5jbHVkZSg8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4pCi0jaW1wb3J0
IDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPgotI2VuZGlmCi10eXBlZGVmIHN0cnVj
dCBfQ0ZVUkxDb25uZWN0aW9uKiBDRlVSTENvbm5lY3Rpb25SZWY7Ci1leHRlcm4gIkMiIHsKLUNG
RGljdGlvbmFyeVJlZiBfQ0ZVUkxDb25uZWN0aW9uQ29weVRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0
aW9uUmVmKTsKLX0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiAjaWYgX19oYXNfaW5jbHVk
ZSg8Rm91bmRhdGlvbi9OU1VSTENvbm5lY3Rpb25Qcml2YXRlLmg+KQogI2ltcG9ydCA8Rm91bmRh
dGlvbi9OU1VSTENvbm5lY3Rpb25Qcml2YXRlLmg+CiAjZWxzZQpAQCAtNzQsMTYgKzY0LDYgQEAg
LSAoTlNEaWN0aW9uYXJ5ICopX3RpbWluZ0RhdGE7CiBAZW5kCiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKElPUykKLSNpbXBvcnQgIkNGVVJMUmVxdWVzdFNQSS5oIgotI2ltcG9ydCAiUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzSU9TLmgiCi0jaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCi0KLUBp
bnRlcmZhY2UgTlNVUkxSZXF1ZXN0IChpT1NEZXRhaWxzKQotLSAoQ0ZVUkxSZXF1ZXN0UmVmKSBf
Q0ZVUkxSZXF1ZXN0OwotQGVuZAotI2VuZGlmCi0KICNpZiBVU0UoUVVJQ0tfTE9PSykKICNpbXBv
cnQgIlF1aWNrTG9vay5oIgogI2VuZGlmCkBAIC05NSw5ICs3NSw3IEBAIC0oaWQpX2luaXRXaXRo
UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmUKIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
ICAgIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotICAgIAorCiBzdGF0aWMgdm9pZCBhcHBseUJhc2lj
QXV0aG9yaXphdGlvbkhlYWRlcihSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IENyZWRl
bnRpYWwmIGNyZWRlbnRpYWwpCiB7CiAgICAgU3RyaW5nIGF1dGhlbnRpY2F0aW9uSGVhZGVyID0g
IkJhc2ljICIgKyBiYXNlNjRFbmNvZGUoU3RyaW5nKGNyZWRlbnRpYWwudXNlcigpICsgIjoiICsg
Y3JlZGVudGlhbC5wYXNzd29yZCgpKS51dGY4KCkpOwpAQCAtMTA1LDcgKzgzLDYgQEAgc3RhdGlj
IHZvaWQgYXBwbHlCYXNpY0F1dGhvcml6YXRpb25IZWFkZQogICAgIHJlcXVlc3Quc2V0SFRUUEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpBdXRob3JpemF0aW9uLCBhdXRoZW50aWNhdGlvbkhl
YWRlcik7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQogc3RhdGljIE5TT3BlcmF0aW9uUXVldWUg
Km9wZXJhdGlvblF1ZXVlRm9yQXN5bmNDbGllbnRzKCkKIHsKICAgICBzdGF0aWMgTlNPcGVyYXRp
b25RdWV1ZSAqcXVldWU7CkBAIC0xMTYsNyArOTMsNiBAQCBzdGF0aWMgTlNPcGVyYXRpb25RdWV1
ZSAqb3BlcmF0aW9uUXVldWVGCiAgICAgfQogICAgIHJldHVybiBxdWV1ZTsKIH0KLSNlbmRpZgog
CiBSZXNvdXJjZUhhbmRsZUludGVybmFsOjp+UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCgpCiB7CkBA
IC0yNjEsMTEgKzIzNyw2IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKICAgICAgICAg
KE5TRGljdGlvbmFyeSAqKWNsaWVudCgpLT5jb25uZWN0aW9uUHJvcGVydGllcyh0aGlzKS5nZXQo
KSk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICBOU1VSTENvbm5lY3Rpb24gKnVy
bENvbm5lY3Rpb24gPSBjb25uZWN0aW9uKCk7Ci0gICAgW3VybENvbm5lY3Rpb24gc2NoZWR1bGVJ
blJ1bkxvb3A6V2ViVGhyZWFkTlNSdW5Mb29wKCkgZm9yTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9k
ZV07Ci0gICAgW3VybENvbm5lY3Rpb24gc3RhcnRdOwotI2Vsc2UKICAgICBib29sIHNjaGVkdWxl
ZCA9IGZhbHNlOwogICAgIGlmIChTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRQYWlycyA9
IGQtPm1fY29udGV4dC0+c2NoZWR1bGVkUnVuTG9vcFBhaXJzKCkpIHsKICAgICAgICAgU2NoZWR1
bGVQYWlySGFzaFNldDo6aXRlcmF0b3IgZW5kID0gc2NoZWR1bGVkUGFpcnMtPmVuZCgpOwpAQCAt
Mjg5LDcgKzI2MCw2IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKICAgICAgICAgW2Nv
bm5lY3Rpb24oKSBzdGFydF07CiAgICAgZWxzZQogICAgICAgICBkLT5tX3N0YXJ0V2hlblNjaGVk
dWxlZCA9IHRydWU7Ci0jZW5kaWYKIAogICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIHN0YXJ0
aW5nIGNvbm5lY3Rpb24gJXAgZm9yICVAIiwgdGhpcywgY29ubmVjdGlvbigpLCBmaXJzdFJlcXVl
c3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSkpOwogICAgIApAQCAtMzIyLDgg
KzI5Miw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG8KICAgICAg
ICAgd2tTZXROU1VSTENvbm5lY3Rpb25EZWZlcnNDYWxsYmFja3MoZC0+bV9jb25uZWN0aW9uLmdl
dCgpLCBkZWZlcnMpOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQotCiB2b2lkIFJlc291cmNlSGFu
ZGxlOjpzY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7CiAgICAgTlNSdW5Mb29wICpydW5M
b29wID0gcGFpci5uc1J1bkxvb3AoKTsKQEAgLTM0Miw4ICszMTAsNiBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlCiAgICAgICAgIFtkLT5tX2Nvbm5lY3Rpb24uZ2V0
KCkgdW5zY2hlZHVsZUZyb21SdW5Mb29wOnJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKilwYWly
Lm1vZGUoKV07CiB9CiAKLSNlbmRpZgotCiBpZCBSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRl
KGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKCFkLT5tX2Rl
bGVnYXRlKTsKQEAgLTcyNCw5ICs2OTAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51
ZVdpbGxDYWNoZVJlCiAKICAgICBbKGlkKWRlbGVnYXRlKCkgY29udGludWVXaWxsQ2FjaGVSZXNw
b25zZTpyZXNwb25zZV07CiB9Ci0gICAgCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0gICAg
CisKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKICAgICAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6Omdl
dENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSwgUmVzb3VyY2VM
b2FkVGltaW5nJiB0aW1pbmcpCkBAIC03NjMsMjIgKzcyNywxMSBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjpzZXRDb2xsZWN0c1RpbWluZ0RhCiAgICAgfSk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotICAgIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoQ0ZV
UkxDb25uZWN0aW9uUmVmIGNvbm5lY3Rpb24sIFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nKQot
ewotICAgIGdldENvbm5lY3Rpb25UaW1pbmdEYXRhKChfX2JyaWRnZSBOU0RpY3Rpb25hcnkqKShh
ZG9wdENGKF9DRlVSTENvbm5lY3Rpb25Db3B5VGltaW5nRGF0YShjb25uZWN0aW9uKSkuZ2V0KCkp
LCB0aW1pbmcpOwotfQotICAgIAotI2Vsc2UKLSAgICAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6Omdl
dENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgUmVzb3Vy
Y2VMb2FkVGltaW5nJiB0aW1pbmcpCiB7CiAgICAgZ2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoW2Nv
bm5lY3Rpb24gX3RpbWluZ0RhdGFdLCB0aW1pbmcpOwogfQotICAgIAotI2VuZGlmCi0gICAgCisK
ICNlbmRpZiAvLyBFTkFCTEUoV0VCX1RJTUlORykKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlUmVxdWVzdE1hYy5tbQkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC02NCwyOSArNjQsNiBAQCBib29sIFJlc291cmNlUmVxdWVzdDo6dXNlUXVpY2tMb29r
UmVzb3VyCiAgICAgcmV0dXJuIGZsYWc7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1SZXNv
dXJjZVJlcXVlc3Q6OlJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVlc3QgKm5zUmVxdWVzdCkKLSAg
ICA6IFJlc291cmNlUmVxdWVzdEJhc2UoKQotICAgICwgbV9jZlJlcXVlc3QoW25zUmVxdWVzdCBf
Q0ZVUkxSZXF1ZXN0XSkKLSAgICAsIG1fbnNSZXF1ZXN0KG5zUmVxdWVzdCkKLXsKLX0KLQotdm9p
ZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZU5TVVJMUmVxdWVzdCgpCi17Ci0gICAgaWYgKG1fY2ZS
ZXF1ZXN0KQotICAgICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxs
b2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDptX2NmUmVxdWVzdC5nZXQoKV0pOwotfQotCi12b2lk
IFJlc291cmNlUmVxdWVzdDo6YXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwoKQotewotICAgIC8v
IEhhY2sgYmVjYXVzZSBNYWlsIGNoZWNrcyBmb3IgdGhpcyBwcm9wZXJ0eSB0byBkZXRlY3QgZGF0
YSAvIGFyY2hpdmUgbG9hZHMKLSAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShj
ZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSksIENGU1RSKCJXZWJEYXRhUmVxdWVzdCIp
LCBDRlNUUigiIikpOwotfQotCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
UmVzcG9uc2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQkocmV2aXNpb24gMTc0OTAwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtNzEsMzYgKzcxLDYgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpp
bml0TlNVUkxSZXNwb25zZQogICAgIFttX25zUmVzcG9uc2UuZ2V0KCkgX3NldE1JTUVUeXBlOihO
U1N0cmluZyAqKW1fbWltZVR5cGVdOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLQotTlNVUkxS
ZXNwb25zZSAqUmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSgpIGNvbnN0Ci17Ci0gICAg
aWYgKCFtX25zUmVzcG9uc2UgJiYgIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051bGwpIHsKLSAgICAg
ICAgaW5pdE5TVVJMUmVzcG9uc2UoKTsKLSAgICAgICAgbV9jZlJlc3BvbnNlID0gW21fbnNSZXNw
b25zZS5nZXQoKSBfQ0ZVUkxSZXNwb25zZV07Ci0gICAgICAgIHJldHVybiBtX25zUmVzcG9uc2Uu
Z2V0KCk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2NmUmVzcG9uc2UpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0KLSAgICBpZiAoIW1fbnNSZXNwb25zZSkKLSAgICAgICAgbV9uc1Jlc3BvbnNlID0gW05T
VVJMUmVzcG9uc2UgX3Jlc3BvbnNlV2l0aENGVVJMUmVzcG9uc2U6bV9jZlJlc3BvbnNlLmdldCgp
XTsKLQotICAgIHJldHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7Ci19Ci0KLVJlc291cmNlUmVzcG9u
c2U6OlJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSogbnNSZXNwb25zZSkKLSAgICA6IG1f
aW5pdExldmVsKFVuaW5pdGlhbGl6ZWQpCi0gICAgLCBtX3BsYXRmb3JtUmVzcG9uc2VJc1VwVG9E
YXRlKHRydWUpCi0gICAgLCBtX2NmUmVzcG9uc2UoW25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2Vd
KQotICAgICwgbV9uc1Jlc3BvbnNlKG5zUmVzcG9uc2UpCi17Ci0gICAgbV9pc051bGwgPSAhbnNS
ZXNwb25zZTsKLX0KLQotI2Vsc2UKLQogc3RhdGljIE5TU3RyaW5nKiBjb25zdCBjb21tb25IZWFk
ZXJGaWVsZHNbXSA9IHsKICAgICBAIkFnZSIsIEAiQ2FjaGUtQ29udHJvbCIsIEAiQ29udGVudC1U
eXBlIiwgQCJEYXRlIiwgQCJFdGFnIiwgQCJFeHBpcmVzIiwgQCJMYXN0LU1vZGlmaWVkIiwgQCJQ
cmFnbWEiCiB9OwpAQCAtMTg5LDcgKzE1OSw1IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6cGxh
dGZvcm1Db21wYXJlKGMKICAgICByZXR1cm4gYS5uc1VSTFJlc3BvbnNlKCkgPT0gYi5uc1VSTFJl
c3BvbnNlKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRl
LmgJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsOCArMjYsNiBAQAogI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gK
ICNkZWZpbmUgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCiAKLSNpZiAhVVNFKENG
TkVUV09SSykKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiB9
CkBAIC0zOSw1ICszNyw0IEBAIEBpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxl
Z2EKIC0gKHZvaWQpZGV0YWNoSGFuZGxlOwogQGVuZAogCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdP
UkspCiAjZW5kaWYgLy8gV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0JKHJldmlzaW9uIDE3NDkw
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0
ZS5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbk1hYy5oIgogI2ltcG9ydCAiTG9nZ2lu
Zy5oIgpAQCAtMjkxLDYgKzI4OSwzIEBAIC0gKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKiljb25uZWN0
aW9uOihOU1UKIH0KIAogQGVuZAotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5oCShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBXZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaAogI2RlZmluZSBXZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaAogCi0jaWYgIVVTRShDRk5FVFdP
UkspCi0KICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KIApAQCAtNTksNSArNTcsNCBAQCBAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhh
bmRsZVdpdGhDcmVkCiAKIEBlbmQKIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogI2VuZGlm
IC8vIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlLm1tCShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVs
ZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW1wb3J0ICJMb2dn
aW5nLmgiCkBAIC0zNDgsNiArMzQ2LDMgQEAgLSAoQk9PTCljb25uZWN0aW9uU2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0bwogfQogCiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVVUkxSZXNwb25zZS5tbQkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjUsNyArMzI1LDYgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJM
UmVzcAogfQogI2VuZGlmCiAKLSNpZiAhVVNFKENGTkVUV09SSykKIE5TVVJMUmVzcG9uc2UgKnN5
bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxDb25uZWN0aW9uICpjb25u
ZWN0aW9uLCBOU1VSTFJlcXVlc3QgKm5ld1JlcXVlc3QsIE5TVVJMUmVzcG9uc2UgKnJlZGlyZWN0
UmVzcG9uc2UpCiB7CiAjaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwOTAKQEAgLTM0NSw2ICszNDQsNSBAQCBOU1VSTFJlc3BvbnNlICpzeW50
aGVzaXplUmVkaXJlY3RSZXNwb25zCiAgICAgcmV0dXJuIHJlZGlyZWN0UmVzcG9uc2U7CiAjZW5k
aWYKIH0KLSNlbmRpZgogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTc0OTAwKQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEzNSwxMiArMTM1LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGFBcnJheShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENGQXJyYXlS
ZWYpIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaWYgVVNFKENGTkVU
V09SSykKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwotI2Vsc2UK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNlbmRp
ZgogCiAgICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXJNYWMubW0JKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEwOSwzMSArMTA5LDE3IEBAIHNpemVfdCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmZpbGVCYWNrZWQKICAgICByZXR1cm4gU2hhcmVkTWVtb3J5OjpzeXN0ZW1QYWdlU2l6ZSgpOwog
fQogCi0jaWYgVVNFKENGTkVUV09SSykKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxs
Q2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYgY2ZSZXNwb25zZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxl
ID09IG1faGFuZGxlKTsKLQotICAgIGlmIChtX2J5dGVzUmVjZWl2ZWQgPj0gZmlsZUJhY2tlZFJl
c291cmNlTWluaW11bVNpemUoKSkKLSAgICAgICAgTmV0d29ya0Rpc2tDYWNoZU1vbml0b3I6Om1v
bml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY2ZSZXNwb25zZSwgdGhpcyk7Ci0KLSAgICBt
X2hhbmRsZS0+Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShjZlJlc3BvbnNlKTsKLX0KLQotI2Vs
c2UKLQogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgTlNDYWNoZWRVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkK
IHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKIAotI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorI2lmIFBMQVRGT1JNKElP
UykgfHxfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKICAgICBpZiAobV9i
eXRlc1JlY2VpdmVkID49IGZpbGVCYWNrZWRSZXNvdXJjZU1pbmltdW1TaXplKCkpCiAgICAgICAg
IE5ldHdvcmtEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9u
KFtuc1Jlc3BvbnNlIF9DRkNhY2hlZFVSTFJlc3BvbnNlXSwgdGhpcyk7CiAjZW5kaWYKIAogICAg
IG1faGFuZGxlLT5jb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKG5zUmVzcG9uc2UpOwogfQotI2Vu
ZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyAr
MTAwLDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZAogICAgIGVu
Y29kZXIgPDwgdGV4dENoZWNrZXJTdGF0ZTsKICAgICBlbmNvZGVyIDw8IGZ1bGxLZXlib2FyZEFj
Y2Vzc0VuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBkZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZh
bDsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICBlbmNvZGVyIDw8IHVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXI7CiAjZW5kaWYK
ICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTIyMCw3ICsyMjAsNyBAQCBib29sIFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5F
VFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTE2LDcgKzExNiw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsK
IAogICAgIGRvdWJsZSBkZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbDsKIAotI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFN0
cmluZyB1aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCShyZXZpc2lvbiAxNzQ5MDAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsOSArNDMsNiBAQCBEb3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRNYW5h
Z2VyJiBkb3duCiAgICAgOiBtX2Rvd25sb2FkTWFuYWdlcihkb3dubG9hZE1hbmFnZXIpCiAgICAg
LCBtX2Rvd25sb2FkSUQoZG93bmxvYWRJRCkKICAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQotI2lm
IFVTRShDRk5FVFdPUkspCi0gICAgLCBtX2FsbG93T3ZlcndyaXRlKGZhbHNlKQotI2VuZGlmCiB7
CiAgICAgQVNTRVJUKG1fZG93bmxvYWRJRCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Eb3dubG9hZHMvRG93bmxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHJldmlzaW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTAg
KzQzLDYgQEAgT0JKQ19DTEFTUyBXS0Rvd25sb2FkQXNEZWxlZ2F0ZTsKICNpbmNsdWRlIDxtZW1v
cnk+CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NG
VVJMRG93bmxvYWRQcml2Lmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIElQQyB7CiAgICAgY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKIH0KQEAgLTkxLDExICs4Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZENhbmNlbChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOwogICAgIHZvaWQg
ZGlkRGVjaWRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9Ci0gICAgRG93bmxvYWRBdXRoZW50aWNhdGlv
bkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQoKTsKLSNlbmRpZgotCiAgICAgLy8gQXV0aGVu
dGljYXRpb24KICAgICBzdGF0aWMgdm9pZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik7
CiAgICAgc3RhdGljIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50
aWFsKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CkBAIC0xMjksMTAg
KzEyMCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2FsbG93T3ZlcndyaXRlOwogICAgIFN0cmlu
ZyBtX2Rlc3RpbmF0aW9uOwogICAgIFN0cmluZyBtX2J1bmRsZVBhdGg7Ci0jaWYgVVNFKENGTkVU
V09SSykKLSAgICBSZXRhaW5QdHI8Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3dubG9hZDsKLSAgICBS
ZWZQdHI8RG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudD4gbV9hdXRoZW50aWNhdGlvbkNsaWVu
dDsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudD4gbV9kb3dubG9hZENsaWVu
dDsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU+IG1fcmVzb3VyY2VIYW5kbGU7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL2lvcy9Eb3du
bG9hZElPUy5tbQkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Rv
d25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMTg4ICsxIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJEb3dubG9hZC5oIgot
Ci0jaWYgUExBVEZPUk0oSU9TKQotCi0jaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCi0jaW1wb3J0
IDxDRk5ldHdvcmsvQ0ZVUkxEb3dubG9hZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1Jlc291cmNlSGFuZGxlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2Uu
aD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gRklY
TUU6IElmIHBvc3NpYmxlLCB3ZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIHNvbWUgY2FsbGJhY2tz
IG9mZiB0aGUgbWFpbiB0aHJlYWQgb3IgYXQgbGVhc3QKLS8vIG1ha2luZyB0aGVtIGFzeW5jaG9u
b3VzIGNhbGxzLgotc3RhdGljIHZvaWQgZGlzcGF0Y2hPbk1haW5UaHJlYWQodm9pZCheYmxvY2sp
KCkpCi17Ci0gICAgaWYgKFJ1bkxvb3A6OmlzTWFpbigpKSB7Ci0gICAgICAgIGJsb2NrKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIGJsb2NrKTsKLX0KLQotc3RhdGljIGlubGluZSBEb3dubG9hZCogdG9Eb3du
bG9hZChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxE
b3dubG9hZCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLX0KLQotc3RhdGljIHZv
aWQgc2V0VXBEb3dubG9hZENsaWVudChDRlVSTERvd25sb2FkQ2xpZW50JiBjbGllbnQsIERvd25s
b2FkJiBkb3dubG9hZCkKLXsKLSAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkp
OwotICAgIGNsaWVudC5jbGllbnRJbmZvID0gJmRvd25sb2FkOwotCi0gICAgY2xpZW50LmRpZFN0
YXJ0ID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAg
ICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGll
bnRJbmZvKS0+ZGlkU3RhcnQoKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC53
aWxsU2VuZFJlcXVlc3QgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlVSTFJlcXVlc3RSZWYgcmVx
dWVzdCwgQ0ZVUkxSZXNwb25zZVJlZiwgY29uc3Qgdm9pZCopIC0+IENGVVJMUmVxdWVzdFJlZiB7
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlVSTFJlcXVlc3RSZWY+KENGUmV0YWluKHJl
cXVlc3QpKTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZSA9IFtdKENG
VVJMRG93bmxvYWRSZWYsIENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAg
IHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7Ci0g
ICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEgPSBbXShDRlVS
TERvd25sb2FkUmVmLCBDRkluZGV4IGxlbmd0aCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewot
ICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChj
bGllbnRJbmZvKS0+ZGlkUmVjZWl2ZURhdGEobGVuZ3RoKTsKLSAgICAgICAgfSk7Ci0gICAgfTsK
LQotICAgIGNsaWVudC5zaG91bGREZWNvZGVEYXRhT2ZNSU1FVHlwZSA9IFtdKENGVVJMRG93bmxv
YWRSZWYsIENGU3RyaW5nUmVmIGVuY29kaW5nVHlwZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykg
LT4gQm9vbGVhbiB7Ci0gICAgICAgIF9fYmxvY2sgQk9PTCByZXR1cm5WYWx1ZSA9IE5POwotICAg
ICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB0
b0Rvd25sb2FkKGNsaWVudEluZm8pLT5zaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShl
bmNvZGluZ1R5cGUpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwot
ICAgIH07Ci0KLSAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkT2JqZWN0
TmFtZSA9IFtdKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWRSZWYsIENGU3RyaW5nUmVmIG9iamVj
dE5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5U
aHJlYWQoXnsKLSAgICAgICAgICAgIGJvb2wgYWxsb3dPdmVyd3JpdGU7Ci0gICAgICAgICAgICBT
dHJpbmcgZGVzdGluYXRpb24gPSB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShvYmplY3ROYW1lLCBhbGxvd092ZXJ3cml0ZSk7Ci0g
ICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIENG
VVJMRG93bmxvYWRTZXREZXN0aW5hdGlvbihkb3dubG9hZFJlZiwgcmVpbnRlcnByZXRfY2FzdDxD
RlVSTFJlZj4oW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpkZXN0aW5hdGlvbl0pLCBhbGxvd092ZXJ3
cml0ZSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkQ3JlYXRlRGVzdGlu
YXRpb24gPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlVSTFJlZiBwYXRoLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAg
ICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihDRlVSTEdldFN0
cmluZyhwYXRoKSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkRmluaXNo
ID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAg
ICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJ
bmZvKS0+ZGlkRmluaXNoKCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlk
RmFpbCA9IFtdKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWRSZWYsIENGRXJyb3JSZWYgZXJyb3Is
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQo
XnsKLSAgICAgICAgICAgIGF1dG8gcmVzdW1lRGF0YSA9IGFkb3B0Q0YoQ0ZVUkxEb3dubG9hZENv
cHlSZXN1bWVEYXRhKGRvd25sb2FkUmVmKSk7Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVu
dEluZm8pLT5kaWRGYWlsKGVycm9yLCBJUEM6OkRhdGFSZWZlcmVuY2UocmVzdW1lRGF0YSA/IENG
RGF0YUdldEJ5dGVQdHIocmVzdW1lRGF0YS5nZXQoKSkgOiBudWxscHRyLCByZXN1bWVEYXRhID8g
Q0ZEYXRhR2V0TGVuZ3RoKHJlc3VtZURhdGEuZ2V0KCkpIDogMCkpOwotICAgICAgICB9KTsKLSAg
ICB9OwotfQotCi12b2lkIERvd25sb2FkOjpzdGFydCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAgIC8vIEZJWE1F
OiBGb3Igc29tZSByZWFzb24gdGhlIGZpbGVuYW1lIG5lZWRzIHRvIGJlIGFjY2Vzc2VkIG9yIGl0
IG1heSBiZSBpbmNvcnJlY3QgYWZ0ZXIKLSAgICAvLyBDRlVSTFJlc3BvbnNlIGlzIHNlcmlhbGl6
ZWQvZGVzZXJpYWxpemVkIChnYWlucyAudHh0IGV4dGVuc2lvbikKLSAgICByZXNwb25zZS5zdWdn
ZXN0ZWRGaWxlbmFtZSgpOwotCi0gICAgQ0ZVUkxEb3dubG9hZENsaWVudCBjbGllbnQ7Ci0gICAg
c2V0VXBEb3dubG9hZENsaWVudChjbGllbnQsICp0aGlzKTsKLSAgICBtX2Rvd25sb2FkID0gYWRv
cHRDRihDRlVSTERvd25sb2FkQ3JlYXRlQW5kU3RhcnRXaXRoTG9hZGluZ0Nvbm5lY3Rpb24oTlVM
TCwgaGFuZGxlLT5yZWxlYXNlQ29ubmVjdGlvbkZvckRvd25sb2FkKCkuZ2V0KCksIG1fcmVxdWVz
dC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpLCByZXNwb25zZS5jZlVSTFJlc3BvbnNlKCks
ICZjbGllbnQpKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6Y2FuY2VsKCkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpwbGF0Zm9ybUludmFsaWRhdGUoKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OmRpZERlY2lkZURlc3Rp
bmF0aW9uKGNvbnN0IFN0cmluZyYsIGJvb2wpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1EaWRGaW5pc2goKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVX
aXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRDYW5jZWxsYXRp
b24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRI
YW5kbGluZyhjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRDaGFsbGVuZ2VS
ZWplY3Rpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorLy8gUmVtb3ZlIG1lCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQkocmV2aXNpb24gMTc0OTAw
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiRG93bmxvYWQuaCIKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NP
QSkKIAorI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTERvd25sb2FkLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRp
Y2F0aW9uTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVy
c01hYy5tbQkocmV2aXNpb24gMTc0OTAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDQzICszOCwx
MCBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQgPENGTmV0
d29yay9DRlVSTFJlcXVlc3QuaD4KLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIElQQyB7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotdm9pZCBBcmd1bWVudENv
ZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQotewotICAg
IFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IHJlcXVlc3RUb1NlcmlhbGl6ZSA9IHJlc291cmNl
UmVxdWVzdC5jZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSk7Ci0KLSAgICBib29sIHJl
cXVlc3RJc1ByZXNlbnQgPSByZXF1ZXN0VG9TZXJpYWxpemU7Ci0gICAgZW5jb2RlciA8PCByZXF1
ZXN0SXNQcmVzZW50OwotCi0gICAgaWYgKCFyZXF1ZXN0SXNQcmVzZW50KQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBXZSBkb24ndCBzZW5kIEhUVFAgYm9keSBvdmVyIElQQyBmb3IgYmV0dGVy
IHBlcmZvcm1hbmNlLgotICAgIC8vIEFsc28sIGl0J3Mgbm90IGFsd2F5cyBwb3NzaWJsZSB0byBk
bywgYXMgc3RyZWFtcyBjYW4gb25seSBiZSBjcmVhdGVkIGluIHByb2Nlc3MgdGhhdCBkb2VzIG5l
dHdvcmtpbmcuCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcmVxdWVzdEhUVFBCb2R5ID0gYWRv
cHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5KHJlcXVlc3RUb1NlcmlhbGl6ZS5n
ZXQoKSkpOwotICAgIFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IHJlcXVlc3RIVFRQQm9keVN0
cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keVN0cmVhbShyZXF1
ZXN0VG9TZXJpYWxpemUuZ2V0KCkpKTsKLSAgICBpZiAocmVxdWVzdEhUVFBCb2R5IHx8IHJlcXVl
c3RIVFRQQm9keVN0cmVhbSkgewotICAgICAgICBDRk11dGFibGVVUkxSZXF1ZXN0UmVmIG11dGFi
bGVSZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgcmVxdWVzdFRvU2Vy
aWFsaXplLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdFRvU2VyaWFsaXplID0gYWRvcHRDRihtdXRh
YmxlUmVxdWVzdCk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9keShtdXRh
YmxlUmVxdWVzdCwgbmlsKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RCb2R5
U3RyZWFtKG11dGFibGVSZXF1ZXN0LCBuaWwpOwotICAgIH0KLQotICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBhZG9wdENGKFdLQ0ZVUkxSZXF1ZXN0Q3JlYXRlU2Vy
aWFsaXphYmxlUmVwcmVzZW50YXRpb24ocmVxdWVzdFRvU2VyaWFsaXplLmdldCgpLCBJUEM6OnRv
a2VuTnVsbFR5cGVSZWYoKSkpOwotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIGRpY3Rpb25hcnku
Z2V0KCkpOwotCi0gICAgLy8gVGhlIGZhbGxiYWNrIGFycmF5IGlzIHBhcnQgb2YgQ0ZVUkxSZXF1
ZXN0LCBidXQgaXQgaXMgbm90IGVuY29kZWQgYnkgV0tDRlVSTFJlcXVlc3RDcmVhdGVTZXJpYWxp
emFibGVSZXByZXNlbnRhdGlvbi4KLSAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5yZXNw
b25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSgpOwotfQotI2Vsc2UK
IHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEo
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCkKIHsKICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiByZXF1ZXN0VG9TZXJpYWxp
emUgPSByZXNvdXJjZVJlcXVlc3QubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpOwpA
QCAtOTksNyArNjYsNiBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5j
CiAgICAgLy8gVGhlIGZhbGxiYWNrIGFycmF5IGlzIHBhcnQgb2YgTlNVUkxSZXF1ZXN0LCBidXQg
aXQgaXMgbm90IGVuY29kZWQgYnkgV0tOU1VSTFJlcXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXBy
ZXNlbnRhdGlvbi4KICAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5yZXNwb25zZUNvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSgpOwogfQotI2VuZGlmCiAKIGJvb2wg
QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1l
bnREZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsK
QEAgLTExNiwyMCArODIsMTIgQEAgYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46
OmRlYwogICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGljdGlvbmFyeSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgUmV0YWluUHRyPENGVVJM
UmVxdWVzdFJlZj4gY2ZVUkxSZXF1ZXN0ID0gYWRvcHRDRihXS0NyZWF0ZUNGVVJMUmVxdWVzdEZy
b21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJUEM6OnRva2Vu
TnVsbFR5cGVSZWYoKSkpOwotICAgIGlmICghY2ZVUkxSZXF1ZXN0KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICByZXNvdXJjZVJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoY2ZVUkxSZXF1
ZXN0LmdldCgpKTsKLSNlbHNlCiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbnNVUkxSZXF1
ZXN0ID0gV0tOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24oZGljdGlv
bmFyeS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpOwogICAgIGlmICghbnNVUkxSZXF1
ZXN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXNvdXJjZVJlcXVlc3QgPSBSZXNv
dXJjZVJlcXVlc3QobnNVUkxSZXF1ZXN0LmdldCgpKTsKLSNlbmRpZgotICAgIAorCiAgICAgVmVj
dG9yPFN0cmluZz4gcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJy
YXk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVu
Y29kaW5nRmFsbGJhY2tBcnJheSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMTc0OTAwKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3Mo
Y28KICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRVc2VGb250U21vb3RoaW5nKQogICAgICAgICBz
ZXRTaG91bGRVc2VGb250U21vb3RoaW5nKHRydWUpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2Vzc2lvblRyYWNrZXI6
OnNldElkZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7
CiAjZW5kaWYKIApAQCAtNDY3LDE0ICs0NjcsMTQgQEAgdm9pZCBXZWJQcm9jZXNzOjpmdWxsS2V5
Ym9hcmRBY2Nlc3NNb2RlQwogCiB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwg
VVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShT
T1VQKQogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oc2Vzc2lvbklEKTsKICNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlc3Ry
b3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0jaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQorI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBVU0UoU09VUCkKICAgICBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24o
c2Vzc2lvbklEKTsKICNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlz
aW9uIDE3NDkwMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNyArMjk3LDcgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6c2V0SmF2YVNjcmlwdENhbkFjYwogdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3Vw
LCBib29sIGVuYWJsZWQpCiB7CiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVGhpcyB0
ZXN0LW9ubHkgZnVuY3Rpb24gZG9lc24ndCB3b3JrIHdpdGggTmV0d29ya1Byb2Nlc3MsIDxodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1Mjc0Pi4KLSNpZiBQTEFURk9S
TShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCisjaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShTT1VQKQogICAgIGlmIChlbmFibGVkKQogICAgICAgICBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVn
YWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKICAgICBlbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tCShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0JKHdvcmtp
bmcgY29weSkKQEAgLTE0MiwxMyArMTQyLDYgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVy
ZmFjZSh2b2lkKQogICAgICAgICBJTklUKFdpbmRvd1NldEFscGhhKTsKICNlbmRpZiAvLyAhUExB
VEZPUk0oSU9TKQogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICAgICAgSU5JVChHZXREZWZhdWx0
SFRUUENvb2tpZVN0b3JhZ2UpOwotICAgICAgICBJTklUKENvcHlDcmVkZW50aWFsRnJvbUNGUGVy
c2lzdGVudFN0b3JhZ2UpOwotICAgICAgICBJTklUKFNldENGVVJMUmVxdWVzdFNob3VsZENvbnRl
bnRTbmlmZik7Ci0gICAgICAgIElOSVQoU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKTsKLSNlbmRp
ZgotCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXRW
b2ljZUlkZW50aWZpZXJzKTsKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXREZWZhdWx0
Vm9pY2VJZGVudGlmaWVyRm9yTG9jYWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDE3NDkwMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtODIsMTEgKzgyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZv
aWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
ICAgIG1fcGFnZS0+YWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFtbTlNSdW5M
b29wIGN1cnJlbnRSdW5Mb29wXSBnZXRDRlJ1bkxvb3BdLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMp
KTsKLSNlbHNlCiAgICAgbV9wYWdlLT5hZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVh
dGUoW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0sIGtDRlJ1bkxvb3BDb21tb25Nb2RlcykpOwot
I2VuZGlmCiAKICAgICBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0KiBtb2NrQWNjZXNzaWJp
bGl0eUVsZW1lbnQgPSBbW1tXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVy
c2lvbkNoZWNrcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0
VmVyc2lvbkNoZWNrcy5oCShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9N
aXNjL1dlYktpdFZlcnNpb25DaGVja3MuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBA
QAogI2RlZmluZSBXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0NTU19BVFRSSUJVVEVfU0VUVEVS
U19JR05PUklOR19QUklPUklUWSAyMjM5IC8vIGlPUyA2LjAKICNkZWZpbmUgV0VCS0lUX0ZJUlNU
X1ZFUlNJT05fV0lUSF9ZT1VUVUJFX0VNQkVEX0lGUkFNRV9UUkFOU0ZPUk0gMjIzOSAvLyBpT1Mg
Ni4wCiAjZGVmaW5lIFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhPVVRfTEVHQUNZX0JBQ0tHUk9V
TkRTSVpFX1NIT1JUSEFORF9CRUhBVklPUiAyNjY1IC8vIGlPUyA3LjAKKyNkZWZpbmUgV0VCS0lU
X0ZJUlNUX1ZFUlNJT05fV0lUSF9MT0FESU5HX0RVUklOR19DT01NT05fUlVOTE9PUF9NT0RFUyAy
NjY1IC8vIGlPUyA3LjAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKICNpZmRlZiBfX2NwbHVz
cGx1cwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTc0
OTAwKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC05NzUsMTIgKzk3NSwxMyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldp
dGhGcmFtZU5hCiAKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIE5TUnVuTG9vcCAqcnVuTG9vcCA9
IFtOU1J1bkxvb3AgbWFpblJ1bkxvb3BdOwotCisjZWxzZQorICAgIE5TUnVuTG9vcCAqcnVuTG9v
cCA9IFdlYlRocmVhZE5TUnVuTG9vcCgpOworI2VuZGlmCiAgICAgaWYgKFdlYktpdExpbmtlZE9u
T3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0xPQURJTkdfRFVSSU5HX0NPTU1PTl9S
VU5MT09QX01PREVTKSkKICAgICAgICAgW3NlbGYgc2NoZWR1bGVJblJ1bkxvb3A6cnVuTG9vcCBm
b3JNb2RlOihOU1N0cmluZyAqKWtDRlJ1bkxvb3BDb21tb25Nb2Rlc107CiAgICAgZWxzZQogICAg
ICAgICBbc2VsZiBzY2hlZHVsZUluUnVuTG9vcDpydW5Mb29wIGZvck1vZGU6TlNEZWZhdWx0UnVu
TG9vcE1vZGVdOwotI2VuZGlmCiAKICAgICBbc2VsZiBfYWRkVG9BbGxXZWJWaWV3c1NldF07CiAg
ICAgW3NlbGYgc2V0R3JvdXBOYW1lOmdyb3VwTmFtZV07CkBAIC02NTQ1LDI5ICs2NTQ2LDE5IEBA
IC0gKEJPT0wpdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbTooaWQgPE4KIAogQGltcGxlbWVudGF0
aW9uIFdlYlZpZXcgKFdlYlBlbmRpbmdQdWJsaWMpCiAKLSNpZiAhUExBVEZPUk0oSU9TKQogLSAo
dm9pZClzY2hlZHVsZUluUnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JNb2RlOihOU1N0
cmluZyAqKW1vZGUKIHsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGUnVuTG9vcFJlZiBzY2hl
ZHVsZVBhaXJSdW5Mb29wID0gW3J1bkxvb3AgZ2V0Q0ZSdW5Mb29wXTsKLSNlbHNlCiAgICAgTlNS
dW5Mb29wICpzY2hlZHVsZVBhaXJSdW5Mb29wID0gcnVuTG9vcDsKLSNlbmRpZgogICAgIGlmIChy
dW5Mb29wICYmIG1vZGUpCiAgICAgICAgIGNvcmUoc2VsZiktPmFkZFNjaGVkdWxlUGFpcihTY2hl
ZHVsZVBhaXI6OmNyZWF0ZShzY2hlZHVsZVBhaXJSdW5Mb29wLCAoQ0ZTdHJpbmdSZWYpbW9kZSkp
OwogfQogCiAtICh2b2lkKXVuc2NoZWR1bGVGcm9tUnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9v
cCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGUKIHsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENG
UnVuTG9vcFJlZiBzY2hlZHVsZVBhaXJSdW5Mb29wID0gW3J1bkxvb3AgZ2V0Q0ZSdW5Mb29wXTsK
LSNlbHNlCiAgICAgTlNSdW5Mb29wICpzY2hlZHVsZVBhaXJSdW5Mb29wID0gcnVuTG9vcDsKLSNl
bmRpZgogICAgIGlmIChydW5Mb29wICYmIG1vZGUpCiAgICAgICAgIGNvcmUoc2VsZiktPnJlbW92
ZVNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShzY2hlZHVsZVBhaXJSdW5Mb29wLCAo
Q0ZTdHJpbmdSZWYpbW9kZSkpOwogfQotI2VuZGlmCiAKIHN0YXRpYyBCT09MIGZpbmRTdHJpbmco
TlNWaWV3IDxXZWJEb2N1bWVudFNlYXJjaGluZz4gKnNlYXJjaFZpZXcsIE5TU3RyaW5nICpzdHJp
bmcsIFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiAxNzQ5MDApCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MCwx
MCArMTkwLDggQEAgQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3RWRpdGluZ0FjdGlvbgogCiBA
aW50ZXJmYWNlIFdlYlZpZXcgKFdlYlBlbmRpbmdQdWJsaWMpCiAKLSNpZiAhVEFSR0VUX09TX0lQ
SE9ORQogLSAodm9pZClzY2hlZHVsZUluUnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JN
b2RlOihOU1N0cmluZyAqKW1vZGU7CiAtICh2b2lkKXVuc2NoZWR1bGVGcm9tUnVuTG9vcDooTlNS
dW5Mb29wICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGU7Ci0jZW5kaWYKIAogLSAo
Qk9PTClmaW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihXZWJGaW5kT3B0aW9u
cylvcHRpb25zOwogLSAoRE9NUmFuZ2UgKilET01SYW5nZU9mU3RyaW5nOihOU1N0cmluZyAqKXN0
cmluZyByZWxhdGl2ZVRvOihET01SYW5nZSAqKXByZXZpb3VzUmFuZ2Ugb3B0aW9uczooV2ViRmlu
ZE9wdGlvbnMpb3B0aW9uczsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240232</attachid>
            <date>2014-10-21 17:33:16 -0700</date>
            <delta_ts>2015-02-18 06:02:55 -0800</delta_ts>
            <desc>another</desc>
            <filename>remove-cocoa-cfnetwork-5.patch</filename>
            <type>text/plain</type>
            <size>82427</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTc1MDA0KQorKysgU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNTEyLDkgKzUxMiw2IEBACiAKICNkZWZpbmUgRE9O
VF9GSU5BTElaRV9PTl9NQUlOX1RIUkVBRCAxCiAjZGVmaW5lIEhBVkVfUkVBRExJTkUgMQotI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jZGVmaW5lIFdURl9VU0VfQ0ZORVRXT1JLIDEKLSNl
bmRpZgogI2RlZmluZSBXVEZfVVNFX1VJS0lUX0VESVRJTkcgMQogI2RlZmluZSBXVEZfVVNFX1dF
Ql9USFJFQUQgMQogI2RlZmluZSBXVEZfVVNFX1FVSUNLX0xPT0sgMQpJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4JKHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMxLDYgKzI1MzEsNyBAQCBfV2ViVGhyZWFkTG9ja0Zy
b21BbnlUaHJlYWROb0xvZwogX1dlYlRocmVhZExvY2tQb3BNb2RhbAogX1dlYlRocmVhZExvY2tQ
dXNoTW9kYWwKIF9XZWJUaHJlYWRNYWtlTlNJbnZvY2F0aW9uCitfV2ViVGhyZWFkTlNSdW5Mb29w
CiBfV2ViVGhyZWFkTm90Q3VycmVudAogX1dlYlRocmVhZFBvc3ROb3RpZmljYXRpb24KIF9XZWJU
aHJlYWRSdW4KQEAgLTI4MzIsMTAgKzI4MzMsNiBAQCBfd2tJc0dCMTgwMzBDb21wbGlhbmNlUmVx
dWlyZWQKIF93a1NldExheWVyQ29udGVudHNTY2FsZQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJ
T1MpICYmIFVTRShDRk5FVFdPUkspCi1fX1pON1dlYkNvcmUyMFJlc291cmNlSGFuZGxlQ2xpZW50
MjJ3aWxsQ2FjaGVSZXNwb25zZUFzeW5jRVBOU18xNFJlc291cmNlSGFuZGxlRVBLMjBfQ0ZDYWNo
ZWRVUkxSZXNwb25zZQotI2VuZGlmCi0KICNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogX19aTjdXZWJDb3JlMTVQcm90ZWN0aW9uU3Bh
Y2UyOGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGFFUDIwTlNVUkxQcm90ZWN0aW9uU3BhY2UK
IF9fWk43V2ViQ29yZTE2RGlza0NhY2hlTW9uaXRvckMyRVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RF
TlNfOVNlc3Npb25JREVQSzIwX0NGQ2FjaGVkVVJMUmVzcG9uc2UKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAxNzUwMDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUs
MTAgQEAKICNpbmNsdWRlICJRdWlja0xvb2suaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09D
T0EpCisjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFpci5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OwpAQCAtMTQzLDcgKzE0
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGluZzsg
fQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICB2b2lk
IHNjaGVkdWxlKFNjaGVkdWxlUGFpciYpOwogICAgICAgICB2b2lkIHVuc2NoZWR1bGUoU2NoZWR1
bGVQYWlyJik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcAkocmV2aXNpb24gMTc1MDA0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk5LDcgKzU5OSw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OnJlY2VpdmVkQ2FuY2VsbGF0aW8KICAgICBjYW5jZWwoKTsKIH0KIAotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKIAogdm9pZCBSZXNvdXJjZUxvYWRl
cjo6c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQogewpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKTsK
IAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNjaGVk
dWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAgICAgdm9pZCB1bnNjaGVkdWxlKFdURjo6U2NoZWR1
bGVQYWlyJik7CiAjZW5kaWYKQEAgLTE1NiwxMiArMTU2LDkgQEAgcHJvdGVjdGVkOgogCiAgICAg
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKCkgeyByZXR1cm4gbV9vcHRpb25z
OyB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNw
b25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBvdmVycmlkZTsKICNl
bmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwg
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSos
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwotI2VuZGlmCiAKICAgICBSZWZQdHI8
UmVzb3VyY2VIYW5kbGU+IG1faGFuZGxlOwogICAgIFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3Bw
CShyZXZpc2lvbiAxNzUwMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0RvY3VtZW50
TG9hZGVyTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLSNpZiBQTEFURk9STShNQUMpCi0KIHN0YXRpYyB2b2lkIHNjaGVkdWxl
QWxsKGNvbnN0IFJlc291cmNlTG9hZGVyTWFwJiBsb2FkZXJzLCBTY2hlZHVsZVBhaXImIHBhaXIp
CiB7CiAgICAgVmVjdG9yPFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4+IGxvYWRlcnNDb3B5OwpAQCAt
NjksNiArNjcsNCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp1bnNjaGVkdWxlKFNjaGVkdWxlCiAg
ICAgdW5zY2hlZHVsZUFsbChtX211bHRpcGFydFN1YnJlc291cmNlTG9hZGVycywgcGFpcik7CiB9
CiAKLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCShyZXZpc2lvbiAxNzUwMDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zNywyOCArMzcsOCBAQAogI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjZW5kaWYK
IAotI2lmIFVTRShDRk5FVFdPUkspCi1AaW50ZXJmYWNlIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKERl
dGFpbHMpCi0tKGlkKV9pbml0V2l0aENGQ2FjaGVkVVJMUmVzcG9uc2U6KENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYpY2FjaGVkUmVzcG9uc2U7Ci0tKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpX0NGQ2Fj
aGVkVVJMUmVzcG9uc2U7Ci1AZW5kCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0j
aWYgVVNFKENGTkVUV09SSykKLQotQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBSZXNvdXJjZUxvYWRl
cjo6d2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmIGNhY2hlZFJlc3BvbnNlKQotewotICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFj
a3MoKSA9PSBEb05vdFNlbmRDYWxsYmFja3MpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmV0
YWluUHRyPE5TQ2FjaGVkVVJMUmVzcG9uc2U+IG5zQ2FjaGVkUmVzcG9uc2UgPSBhZG9wdE5TKFtb
TlNDYWNoZWRVUkxSZXNwb25zZSBhbGxvY10gX2luaXRXaXRoQ0ZDYWNoZWRVUkxSZXNwb25zZTpj
YWNoZWRSZXNwb25zZV0pOwotICAgIHJldHVybiBbZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2ls
bENhY2hlUmVzcG9uc2UoZG9jdW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCBuc0NhY2hlZFJl
c3BvbnNlLmdldCgpKSBfQ0ZDYWNoZWRVUkxSZXNwb25zZV07Ci19Ci0KLSNlbHNlCi0KIE5TQ2Fj
aGVkVVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJj
ZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNlKQogewogICAgIGlmIChtX29w
dGlvbnMuc2VuZExvYWRDYWxsYmFja3MoKSA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBAIC02Niw4
ICs0Niw2IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWwKICAgICBy
ZXR1cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9jdW1lbnRM
b2FkZXIoKSwgaWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9CiAKLSNlbmRpZgotCiAjaWYgVVNF
KE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvUGFnZU1hYy5jcHAJKHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL1BhZ2VNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxNCArNDQsMTIgQEAg
dm9pZCBQYWdlOjphZGRTY2hlZHVsZVBhaXIoUGFzc1JlZlB0cjxTYwogICAgICAgICBtX3NjaGVk
dWxlZFJ1bkxvb3BQYWlycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVQYWlySGFzaFNldD4o
KTsKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycy0+YWRkKHBhaXIpOwogCi0jaWYgIVBMQVRG
T1JNKElPUykKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChE
b2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKSkKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zY2hlZHVsZSgqcGFpcik7CiAg
ICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVy
KCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2Fk
ZXItPnNjaGVkdWxlKCpwYWlyKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIC8vIEZJWE1FOiBtYWtl
IFNoYXJlZFRpbWVyTWFjIHVzZSB0aGVzZSBTY2hlZHVsZVBhaXJzLgogfQpAQCAtNjUsMTQgKzYz
LDEyIEBAIHZvaWQgUGFnZTo6cmVtb3ZlU2NoZWR1bGVQYWlyKFBhc3NSZWZQdHIKICAgICBSZWZQ
dHI8U2NoZWR1bGVQYWlyPiBwYWlyID0gcHJwUGFpcjsKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQ
YWlycy0+cmVtb3ZlKHBhaXIpOwogCi0jaWYgIVBMQVRGT1JNKElPUykKICAgICBmb3IgKEZyYW1l
KiBmcmFtZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRM
b2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIGRv
Y3VtZW50TG9hZGVyLT51bnNjaGVkdWxlKCpwYWlyKTsKICAgICAgICAgaWYgKERvY3VtZW50TG9h
ZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50
TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+dW5zY2hlZHVsZSgqcGFpcik7
CiAgICAgfQotI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0JKHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1ODgsMTUgKzE1ODgsOSBAQCBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBuc0NoYWxsZW5nZSkKIHsKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIFVOVVNFRF9QQVJBTShuc0NoYWxsZW5nZSk7Ci0gICAgLy8gRklY
TUU6IDxyZGFyOi8vcHJvYmxlbS8xNTc5OTg0ND4KLSAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQog
ICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZShuc0NoYWxsZW5nZSk7CiAKICAg
ICByZXR1cm4gcGxheWVyKCktPnNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoY2hhbGxlbmdlKTsKLSNlbmRpZgogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0KiBhdlJlcXVlc3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQkocmV2aXNp
b24gMTc1MDA0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTY0LDEzICs2NCw2IEBAIFdFQkNPUkVf
RVhQT1JUIHZvaWQgKCp3a0NGVVJMUmVxdWVzdEFsbG8KIFdFQkNPUkVfRVhQT1JUIENGQXJyYXlS
ZWYgKCp3a0NvcHlOU1VSTFJlc3BvbnNlQ2VydGlmaWNhdGVDaGFpbikoTlNVUkxSZXNwb25zZSop
OwogV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdFbmNvZGluZyAoKndrR2V0V2ViRGVmYXVsdENGU3Ry
aW5nRW5jb2RpbmcpKHZvaWQpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLVdFQkNPUkVfRVhQT1JU
IENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgKCp3a0dldERlZmF1bHRIVFRQQ29va2llU3RvcmFnZSko
KTsKLVdFQkNPUkVfRVhQT1JUIFdLQ0ZVUkxDcmVkZW50aWFsUmVmICgqd2tDb3B5Q3JlZGVudGlh
bEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0
aW9uU3BhY2UpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q0ZVUkxSZXF1ZXN0U2hvdWxk
Q29udGVudFNuaWZmKShDRk11dGFibGVVUkxSZXF1ZXN0UmVmLCBib29sKTsKLVdFQkNPUkVfRVhQ
T1JUIHZvaWQgKCp3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbikoQ0ZVUkxTdG9yYWdlU2Vzc2lv
blJlZiwgQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZik7Ci0jZW5kaWYKLQogV0VCQ09SRV9FWFBPUlQg
Ym9vbCAoKndrR2V0VmVydGljYWxHbHlwaHNGb3JDaGFyYWN0ZXJzKShDVEZvbnRSZWYsIGNvbnN0
IFVuaUNoYXJbXSwgQ0dHbHlwaFtdLCBzaXplX3QpOwogV0VCQ09SRV9FWFBPUlQgQ1RMaW5lUmVm
ICgqd2tDcmVhdGVDVExpbmVXaXRoVW5pQ2hhclByb3ZpZGVyKShjb25zdCBVbmlDaGFyKiAoKnBy
b3ZpZGUpKENGSW5kZXggc3RyaW5nSW5kZXgsIENGSW5kZXgqIGNoYXJDb3VudCwgQ0ZEaWN0aW9u
YXJ5UmVmKiBhdHRyaWJ1dGVzLCB2b2lkKiksIHZvaWQgKCpkaXNwb3NlKShjb25zdCBVbmlDaGFy
KiBjaGFycywgdm9pZCopLCB2b2lkKik7CiBXRUJDT1JFX0VYUE9SVCBib29sICgqd2tDVEZvbnRU
cmFuc2Zvcm1HbHlwaHMpKENURm9udFJlZiBmb250LCBDR0dseXBoIGdseXBoc1tdLCBDR1NpemUg
YWR2YW5jZXNbXSwgQ0ZJbmRleCBjb3VudCwgd2tDVEZvbnRUcmFuc2Zvcm1PcHRpb25zIG9wdGlv
bnMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC05NywxMyArOTcsNiBAQCB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVh
CiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRT
dHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CiBDRkhUVFBN
ZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwg
Q0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYg
cHJveHlQb3J0KTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi1DRkhUVFBDb29raWVTdG9yYWdlUmVm
ICgqd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UpKCk7Ci1XS0NGVVJMQ3JlZGVudGlhbFJl
ZiAoKndrQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFnZSkoQ0ZVUkxQcm90ZWN0
aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlKTsKLXZvaWQgKCp3a1NldENGVVJMUmVxdWVzdFNo
b3VsZENvbnRlbnRTbmlmZikoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiwgYm9vbCk7Ci12b2lkICgq
d2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIENGTXV0
YWJsZVVSTFJlcXVlc3RSZWYpOwotI2VuZGlmCi0KIGJvb2wgKCp3a0dldFZlcnRpY2FsR2x5cGhz
Rm9yQ2hhcmFjdGVycykoQ1RGb250UmVmLCBjb25zdCBVbmlDaGFyW10sIENHR2x5cGhbXSwgc2l6
ZV90KTsKIAogdm9pZCogd2tHZXRIeXBoZW5hdGlvbkxvY2F0aW9uQmVmb3JlSW5kZXg7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlv
blNwYWNlQmFzZS5jcHAJKHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgogCi0jaWYgVVNFKENG
TkVUV09SSykgJiYgIVBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFByb3RlY3Rp
b25TcGFjZVByaXYuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCShyZXZpc2lv
biAxNzUwMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUksp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbigpIGNvbnN0OwogICAgIGlkIG1ha2VEZWxl
Z2F0ZShib29sKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAjaWYgVVNFKENGTkVUV09S
SykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZik7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVT
RShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKik7CiAjZW5k
aWYKIApAQCAtMjUyLDEwICsyNTIsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIENGU3RyaW5nUmVmIHN5bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2RlKCk7CiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENGTkVUV09SSykKLSAgICBzdGF0aWMgQ0ZNdXRhYmxl
RGljdGlvbmFyeVJlZiBjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKLSNlbmRpZgotCiAgICAgdHlwZWRlZiBQYXNzUmVmUHRyPFJlc291
cmNlSGFuZGxlPiAoKkJ1aWx0aW5Db25zdHJ1Y3RvcikoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KTsKICAgICBzdGF0aWMgdm9pZCBy
ZWdpc3RlckJ1aWx0aW5Db25zdHJ1Y3Rvcihjb25zdCBBdG9taWNTdHJpbmcmIHByb3RvY29sLCBC
dWlsdGluQ29uc3RydWN0b3IpOwogCkBAIC0yOTAsMTEgKzI4NiwxMSBAQCBwcml2YXRlOgogICAg
IHZvaWQgY3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IsIENGRGljdGlv
bmFyeVJlZiBjbGllbnRQcm9wZXJ0aWVzKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAm
JiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBjcmVhdGVOU1VS
TENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Us
IGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IpOwogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShJT1MpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKElPUykK
ICAgICB2b2lkIGNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRV
c2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdC
ZWhhdmlvciwgTlNEaWN0aW9uYXJ5ICpjb25uZWN0aW9uUHJvcGVydGllcyk7CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVy
bmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUludGVybmFsLmgJKHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTAsMTEgKzE1MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZTsKICNlbmRpZgot
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICAgICAgUmV0YWluUHRyPE5TVVJMQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAg
ICAgICBSZXRhaW5QdHI8aWQ+IG1fZGVsZWdhdGU7Ci0jZW5kaWYKLSNpZiBQTEFURk9STShDT0NP
QSkKICAgICAgICAgYm9vbCBtX3N0YXJ0V2hlblNjaGVkdWxlZDsKICAgICAgICAgYm9vbCBtX25l
ZWRzU2l0ZVNwZWNpZmljUXVpcmtzOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAJKHJldmlz
aW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVu
dGljYXRpb25DRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEzICs1Myw4IEBAIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkMKIAogQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiBjZkNoYWxs
ZW5nZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
dXRoZW50aWNhdGlvbkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQpCi0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UoUHJvdGVjdGlvblNwYWNl
KENGVVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjZkNoYWxsZW5nZSkpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWRlbnRpYWwoQ0ZVUkxBdXRoQ2hhbGxl
bmdlR2V0UHJvcG9zZWRDcmVkZW50aWFsKGNmQ2hhbGxlbmdlKSksCi0jZWxzZQogICAgIDogQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVj
dGlvblNwYWNlKGNmQ2hhbGxlbmdlKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRlbnRpYWwoY2ZDaGFsbGVu
Z2UpKSwKLSNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGVVJMQXV0
aENoYWxsZW5nZUdldFByZXZpb3VzRmFpbHVyZUNvdW50KGNmQ2hhbGxlbmdlKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0ZVUkxSZXNwb25zZVJlZilDRlVSTEF1dGhDaGFs
bGVuZ2VHZXRGYWlsdXJlUmVzcG9uc2UoY2ZDaGFsbGVuZ2UpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENGVVJMQXV0aENoYWxsZW5nZUdldEVycm9yKGNmQ2hhbGxlbmdlKSkK
QEAgLTkzLDE0ICs4OCwxMCBAQCBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY3JlYXRlQ0YoY29uc3Qg
QXV0CiB7CiAgICAgLy8gRklYTUU6IFdoeSBub3QgY2FjaGUgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVm
IGluIG1fY2ZDaGFsbGVuZ2U/IEZvdW5kYXRpb24gY291bnRlcnBhcnQgZG9lcyB0aGF0LgogCi0j
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9IENG
VVJMQXV0aENoYWxsZW5nZUNyZWF0ZSgwLCBjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgp
LmNmU3BhY2UoKSwgY29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKS5jZkNyZWRlbnRp
YWwoKSwKLSNlbHNlCiAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlh
bCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKSkp
OwogICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gcHJvdGVjdGlvblNwYWNl
ID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKSk7CiAK
ICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgcmVzdWx0ID0gQ0ZVUkxBdXRoQ2hhbGxlbmdlQ3Jl
YXRlKDAsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSwgY3JlZGVudGlhbC5nZXQoKSwKLSNlbmRpZgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVDaGFsbGVuZ2UucHJl
dmlvdXNGYWlsdXJlQ291bnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb3JlQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmNmVVJMUmVzcG9uc2UoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlQ2hhbGxlbmdlLmVycm9y
KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJD
Rk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Db29raWVKYXJDRk5ldC5jcHAJKHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShXSU4pIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPD0gMTA5MCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPCA4MDAwMCkKKyNpZiBQTEFURk9STShXSU4pCiBlbnVtIHsKICAgICBDRkhU
VFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluID0gMwogfTsKQEAgLTEwMywxMyArMTAzLDkgQEAgc3RhdGljIFJldGFpblB0cjxDRkFycmF5
UmVmPiBjb3B5Q29va2llcwogewogICAgIGJvb2wgc2VjdXJlID0gdXJsLnByb3RvY29sSXMoImh0
dHBzIik7CiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSA4MDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEwMDApCi0gICAgcmV0dXJuIGFkb3B0Q0YoX0NGSFRUUENvb2tp
ZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTFdpdGhNYWluRG9jdW1lbnRVUkwoc2Vzc2lvbi5jb29r
aWVTdG9yYWdlKCkuZ2V0KCksIHVybC5jcmVhdGVDRlVSTCgpLmdldCgpLCBmaXJzdFBhcnR5LmNy
ZWF0ZUNGVVJMKCkuZ2V0KCksIHNlY3VyZSkpOwotI2Vsc2UKICAgICAvLyBfQ0ZIVFRQQ29va2ll
U3RvcmFnZUNvcHlDb29raWVzRm9yVVJMV2l0aE1haW5Eb2N1bWVudFVSTCBpcyBub3QgYXZhaWxh
YmxlIG9uIG90aGVyIHBsYXRmb3Jtcy4KICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eSk7CiAg
ICAgcmV0dXJuIGFkb3B0Q0YoQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9yVVJMKHNl
c3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmwuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgc2Vj
dXJlKSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5j
cHAJKHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMz
LDcgQEAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgiCi0jZWxpZiBQTEFURk9STShXSU4pCisjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1
ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNlbmRp
ZgogCkBAIC00NywyOSArNDUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDcmVkZW50aWFs
IENyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVj
dGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
UmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbENGID0gYWRvcHRDRih3a0Nv
cHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UocHJvdGVjdGlvblNwYWNlLmNmU3Bh
Y2UoKSkpOwotICAgIHJldHVybiBDcmVkZW50aWFsKGNyZWRlbnRpYWxDRi5nZXQoKSk7Ci0jZWxz
ZQogICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gcHJvdGVjdGlvblNwYWNl
Q0YgPSBhZG9wdENGKGNyZWF0ZUNGKHByb3RlY3Rpb25TcGFjZSkpOwogICAgIFJldGFpblB0cjxD
RlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWxDRiA9IGFkb3B0Q0Yod2tDb3B5Q3JlZGVudGlh
bEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKHByb3RlY3Rpb25TcGFjZUNGLmdldCgpKSk7CiAgICAg
cmV0dXJuIGNvcmUoY3JlZGVudGlhbENGLmdldCgpKTsKLSNlbmRpZgogfQogCi0jaWYgUExBVEZP
Uk0oSU9TKQotdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6c2F2ZVRvUGVyc2lzdGVudFN0b3JhZ2Uo
Y29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwm
IGNyZWRlbnRpYWwpCi17Ci0gICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VSZWY+
IHN0b3JhZ2VDRiA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZUNyZWF0ZSgwKSk7Ci0K
LSAgICBpZiAoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpID09IENyZWRlbnRpYWxQZXJzaXN0ZW5j
ZU5vbmUpIHsKLSAgICAgICAgQ3JlZGVudGlhbCBzZXNzaW9uQ3JlZGVudGlhbChjcmVkZW50aWFs
LCBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsKLSAgICAgICAgQ0ZVUkxDcmVkZW50
aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0b3JhZ2VD
Ri5nZXQoKSwgc2Vzc2lvbkNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIHByb3RlY3Rpb25TcGFj
ZS5jZlNwYWNlKCkpOwotICAgIH0gZWxzZQotICAgICAgICBDRlVSTENyZWRlbnRpYWxTdG9yYWdl
U2V0RGVmYXVsdENyZWRlbnRpYWxGb3JQcm90ZWN0aW9uU3BhY2Uoc3RvcmFnZUNGLmdldCgpLCBj
cmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKTsKLX0K
LSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQ0ZORVRX
T1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVy
cm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUVycm9yLmgJKHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw5ICs4
OCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RhdGFJc1VwVG9EYXRlOwogI2lmIFVTRShDRk5F
VFdPUkspCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0ZFcnJvclJlZj4gbV9wbGF0Zm9ybUVycm9y
OwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG11dGFibGUgUmV0YWluUHRyPE5TRXJyb3I+IG1f
cGxhdGZvcm1OU0Vycm9yOwotI2VuZGlmCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IG1fY2VydGlmaWNhdGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0
LmNwcAkocmV2aXNpb24gMTc1MDA0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTYgKzUy
LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgiCi0jaW5jbHVkZSAi
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2lmIFVTRShDRk5FVFdPUkspCi0jaW5jbHVkZSAi
V2ViQ29yZVVSTFJlc3BvbnNlLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlv
blByaXYuaD4KLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0UHJpdi5oPgotI2VuZGlm
Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8cHJvY2Vzcy5oPgpAQCAt
MjE4LDE0ICsyMDgsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rp
CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUocHJvcGVydGllc0RpY3Rpb25hcnkuZ2V0KCksIGtD
RlVSTENvbm5lY3Rpb25Tb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzLCBzdHJlYW1Qcm9wZXJ0aWVzKTsK
ICAgICBDRlJlbGVhc2Uoc3RyZWFtUHJvcGVydGllcyk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBpZiAoY2xpZW50KCkgJiYgY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKQotICAg
ICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlKHRoaXMpKTsKLSAgICBl
bHNlCi0gICAgICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7Ci0jZWxz
ZQogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7Ci0jZW5kaWYKICAg
ICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+c2V0dXBSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwog
CiAgICAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IGNsaWVudCA9IGQtPm1fY29ubmVjdGlvbkRl
bGVnYXRlLT5tYWtlQ29ubmVjdGlvbkNsaWVudCgpOwpAQCAtMzQzLDEyICszMjYsOSBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljCiAKICAgICBpZiAoIWQtPm1fdXNl
ci5pc051bGwoKSAmJiAhZC0+bV9wYXNzLmlzTnVsbCgpKSB7CiAgICAgICAgIFJldGFpblB0cjxD
RlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFs
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGQtPm1fdXNlci5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwga0NGVVJMQ3JlZGVudGlh
bFBlcnNpc3RlbmNlTm9uZSkpOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBDcmVkZW50
aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKGNmQ3JlZGVudGlhbC5nZXQoKSk7Ci0jZWxzZQor
CiAgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IGNvcmUoY2ZDcmVkZW50aWFsLmdldCgp
KTsKLSNlbmRpZgotICAgICAgICAKKwogICAgICAgICBVUkwgdXJsVG9TdG9yZTsKICAgICAgICAg
aWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkK
ICAgICAgICAgICAgIHVybFRvU3RvcmUgPSBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJs
KCk7CkBAIC0zNzcsMTIgKzM1Nyw4IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVB
dXRoZW50aWMKICAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGNyZWRlbnRpYWwgYmFj
aywgcG9zc2libHkgYWRkaW5nIGl0IGFzIGEgZGVmYXVsdCBmb3IgdGhpcyBkaXJlY3RvcnkuCiAg
ICAgICAgICAgICAgICAgICAgIENyZWRlbnRpYWxTdG9yYWdlOjpzZXQoY3JlZGVudGlhbCwgY2hh
bGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJs
KCkpOwogICAgICAgICAgICAgICAgIH0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAg
ICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwg
Y3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJl
ZigpKTsKLSNlbHNlCiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJl
Zj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRihjcmVkZW50aWFsKSk7CiAgICAgICAg
ICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0
KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigp
KTsKLSNlbmRpZgogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtNDMyLDIwICs0MDgsMTIgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRD
cmVkZW50aWFsKAogICAgICAgICBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KHdlYkNyZWRlbnRpYWws
IGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CiAKICAgICAgICAgaWYg
KGQtPm1fY29ubmVjdGlvbikgewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICAgICAgQ0ZV
UkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIHdlYkNyZWRl
bnRpYWwuY2ZDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7
Ci0jZWxzZQogICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVk
ZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRih3ZWJDcmVkZW50aWFsKSk7CiAgICAgICAgICAgICBD
RlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVk
ZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2VuZGlm
CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGQtPm1fY29ubmVjdGlvbikgewotI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29u
bmVjdGlvbi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgY2hhbGxlbmdlLmNmVVJM
QXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbHNlCiAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRl
bnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOwog
ICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQo
KSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkp
OwotI2VuZGlmCiAgICAgfQogCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwpAQCAtNTkxLDMw
ICs1NTksNiBAQCBib29sIFJlc291cmNlSGFuZGxlOjpsb2Fkc0Jsb2NrZWQoKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6
c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQotewotICAgIENGUnVuTG9vcFJlZiBydW5Mb29w
ID0gcGFpci5ydW5Mb29wKCk7Ci0gICAgaWYgKCFydW5Mb29wKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29wKGQtPm1fY29ubmVjdGlvbi5n
ZXQoKSwgcnVuTG9vcCwgcGFpci5tb2RlKCkpOwotICAgIGlmIChkLT5tX3N0YXJ0V2hlblNjaGVk
dWxlZCkgewotICAgICAgICBDRlVSTENvbm5lY3Rpb25TdGFydChkLT5tX2Nvbm5lY3Rpb24uZ2V0
KCkpOwotICAgICAgICBkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCA9IGZhbHNlOwotICAgIH0KLX0K
LQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCi17
Ci0gICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBwYWlyLnJ1bkxvb3AoKTsKLSAgICBpZiAoIXJ1
bkxvb3ApCi0gICAgICAgIHJldHVybjsKLQotICAgIENGVVJMQ29ubmVjdGlvblVuc2NoZWR1bGVG
cm9tUnVuTG9vcChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIHJ1bkxvb3AsIHBhaXIubW9kZSgpKTsK
LX0KLSNlbmRpZgotCiBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIFJlc291cmNlSGFuZGxlOjpjdXJy
ZW50UmVxdWVzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGQtPm1fY3VycmVudFJlcXVlc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5j
cHAJKHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVk
ZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9STShXSU4p
CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5o
PgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMTc1MDA0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDkgKzUzLDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9pc051bGwgPSAh
Y2ZSZXNwb25zZTsKICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgV0VCQ09SRV9FWFBP
UlQgUmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlICopOwotI2VuZGlmCiAjZWxzZQogICAg
IFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkKICAgICAgICAgOiBt
X2luaXRMZXZlbChVbmluaXRpYWxpemVkKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAko
cmV2aXNpb24gMTc1MDA0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsNiBA
QAogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlc3BvbnNlUHJpdi5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRpZgotCiAvLyBXZSB3b3VsZCBsaWtlIGEgYmV0dGVyIHZh
bHVlIGZvciBhIG1heGltdW0gdGltZV90LAogLy8gYnV0IHRoZXJlIGlzIG5vIHdheSB0byBkbyB0
aGF0IGluIEMgd2l0aCBhbnkgY2VydGFpbnR5LgogLy8gSU5UX01BWCBzaG91bGQgd29yayB3ZWxs
IGVub3VnaCBmb3Igb3VyIHB1cnBvc2VzLgpAQCAtNTIsMTMgKzQ4LDkgQEAgc3RhdGljIGNvbnN0
IGludCBudW1Db21tb25IZWFkZXJGaWVsZHMgPQogQ0ZVUkxSZXNwb25zZVJlZiBSZXNvdXJjZVJl
c3BvbnNlOjpjZlVSTFJlc3BvbnNlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2ZSZXNwb25zZSAm
JiAhbV9pc051bGwpIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgbnNVUkxSZXNwb25z
ZSgpOwotI2Vsc2UKICAgICAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBtX3VybC5jcmVh
dGVDRlVSTCgpOwogICAgICAgICAvLyBGSVhNRTogVGhpcyBjcmVhdGVzIGEgdmVyeSBpbmNvbXBs
ZXRlIENGVVJMUmVzcG9uc2UsIHdoaWNoIGRvZXMgbm90IGV2ZW4gaGF2ZSBhIHN0YXR1cyBjb2Rl
LgogICAgICAgICBtX2NmUmVzcG9uc2UgPSBhZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwg
dXJsLmdldCgpLCBtX21pbWVUeXBlLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG1f
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBtX3RleHRFbmNvZGluZ05hbWUuc3RyaW5nKCkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOwotI2VuZGlmCiAg
ICAgfQogCiAgICAgcmV0dXJuIG1fY2ZSZXNwb25zZS5nZXQoKTsKQEAgLTExOSw5ICsxMTEsNiBA
QCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoCiAKIENlcnRpZmljYXRl
SW5mbyBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpIGNvbnN0CiB7
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgcmV0dXJuIENlcnRpZmljYXRlSW5mbyhhZG9wdENG
KHdrQ29weU5TVVJMUmVzcG9uc2VDZXJ0aWZpY2F0ZUNoYWluKG5zVVJMUmVzcG9uc2UoKSkpKTsK
LSNlbmRpZgogICAgIHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxD
b2NvYS5oCShyZXZpc2lvbiAxNzUwMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAs
NiBAQAogI2luY2x1ZGUgPFNlY3VyaXR5L1NlY0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJM
Q3JlZGVudGlhbCogQ0ZVUkxDcmVkZW50aWFsUmVmOwotI2VuZGlmCi0KIE9CSkNfQ0xBU1MgTlNV
UkxDcmVkZW50aWFsOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MiwxOCArNDgsMTIgQEAg
cHVibGljOgogCiAgICAgQ3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFsJiwgQ3JlZGVudGlhbFBl
cnNpc3RlbmNlKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgZXhwbGljaXQgQ3JlZGVudGlh
bChDRlVSTENyZWRlbnRpYWxSZWYpOwotI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgQ3JlZGVudGlhbChOU1VSTENyZWRlbnRpYWwgKik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGlzRW1wdHkoKSBjb25zdDsKIAogICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3Jt
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbnNDcmVkZW50aWFsICYmIGVuY29kaW5nUmVxdWlyZXNQ
bGF0Zm9ybURhdGEobV9uc0NyZWRlbnRpYWwuZ2V0KCkpOyB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotICAgIENGVVJMQ3JlZGVudGlhbFJlZiBjZkNyZWRlbnRpYWwoKSBjb25zdDsKLSNlbmRpZgog
ICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMQ3JlZGVudGlhbCAqbnNDcmVkZW50aWFsKCkgY29uc3Q7
CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQ3JlZGVudGlhbCYsIGNv
bnN0IENyZWRlbnRpYWwmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvQ3JlZGVudGlhbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCShyZXZpc2lvbiAxNzUwMDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTMgKzMzLDYgQEAgZW51bSB7CiB9OwogI2VuZGlm
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQGludGVyZmFjZSBOU1VSTENyZWRlbnRpYWwgKFdlYkRl
dGFpbHMpCi0tIChpZClfaW5pdFdpdGhDRlVSTENyZWRlbnRpYWw6KENGVVJMQ3JlZGVudGlhbFJl
ZiljcmVkZW50aWFsOwotLSAoQ0ZVUkxDcmVkZW50aWFsUmVmKSBfQ0ZVUkxDcmVkZW50aWFsOwot
QGVuZAotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE5TVVJMQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlIHRvTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UoQ3JlZGVudGlhbFBl
cnNpc3RlbmNlIHBlcnNpc3RlbmNlKQpAQCAtOTgsMjYgKzkxLDEyIEBAIENyZWRlbnRpYWw6OkNy
ZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYKICAgICB9CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChDRlVSTENyZWRlbnRpYWxSZWYgY3JlZGVudGlhbCkK
LSAgICA6IENyZWRlbnRpYWwoYWRvcHROUyhbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10gX2luaXRX
aXRoQ0ZVUkxDcmVkZW50aWFsOmNyZWRlbnRpYWxdKS5nZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBD
cmVkZW50aWFsOjpDcmVkZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkKICAgICA6
IENyZWRlbnRpYWxCYXNlKGNyZWRlbnRpYWwudXNlciwgY3JlZGVudGlhbC5wYXNzd29yZCwgdG9D
cmVkZW50aWFsUGVyc2lzdGVuY2UoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSkpCiAgICAgLCBtX25z
Q3JlZGVudGlhbChjcmVkZW50aWFsKQogewogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJM
Q3JlZGVudGlhbFJlZiBDcmVkZW50aWFsOjpjZkNyZWRlbnRpYWwoKSBjb25zdAotewotICAgIHJl
dHVybiBbbnNDcmVkZW50aWFsKCkgX0NGVVJMQ3JlZGVudGlhbF07Ci19Ci0jZW5kaWYKLQogTlNV
UkxDcmVkZW50aWFsICpDcmVkZW50aWFsOjpuc0NyZWRlbnRpYWwoKSBjb25zdAogewogICAgIGlm
IChtX25zQ3JlZGVudGlhbCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLmgJKHJldmlzaW9u
IDE3NTAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVj
dGlvblNwYWNlQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDYgQEAKICNpbmNs
dWRlICJQcm90ZWN0aW9uU3BhY2VCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
Ci0jaWYgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IF9DRlVSTFByb3RlY3Rpb25TcGFj
ZSogQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY7Ci0jZW5kaWYKLQogT0JKQ19DTEFTUyBOU1VSTFBy
b3RlY3Rpb25TcGFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsOSArNDMsNiBAQCBw
dWJsaWM6CiAKICAgICBQcm90ZWN0aW9uU3BhY2UoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVU
eXBlIGRlbGV0ZWRWYWx1ZSkgOiBQcm90ZWN0aW9uU3BhY2VCYXNlKGRlbGV0ZWRWYWx1ZSkgeyB9
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGV4cGxpY2l0IFByb3RlY3Rpb25TcGFjZShDRlVS
TFByb3RlY3Rpb25TcGFjZVJlZik7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBQcm90ZWN0aW9uU3BhY2UoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKik7CiAKICAgICBzdGF0aWMg
Ym9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBhLCBjb25zdCBQcm90
ZWN0aW9uU3BhY2UmIGIpOwpAQCAtNjAsOSArNTMsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KCkgY29uc3Q7CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNmU3BhY2UoKSBjb25z
dDsKLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUHJvdGVjdGlvblNwYWNlICpuc1Nw
YWNlKCkgY29uc3Q7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0J
KHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDIyICsyNiw4
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlByb3RlY3Rpb25TcGFjZUNvY29hLmgi
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQGludGVyZmFjZSBOU1VSTFByb3RlY3Rpb25TcGFjZSAo
V2ViRGV0YWlscykKLS0gKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKSBfQ0ZVUkxQcm90ZWN0aW9u
U3BhY2U7Ci0tIChpZClfaW5pdFdpdGhDRlVSTFByb3RlY3Rpb25TcGFjZTooQ0ZVUkxQcm90ZWN0
aW9uU3BhY2VSZWYpY2ZQcm90U3BhY2U7Ci1AZW5kCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLVByb3RlY3Rpb25TcGFjZTo6UHJvdGVjdGlvblNw
YWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHNwYWNlKQotICAgIDogUHJvdGVjdGlvblNwYWNl
KGFkb3B0TlMoW1tOU1VSTFByb3RlY3Rpb25TcGFjZSBhbGxvY10gX2luaXRXaXRoQ0ZVUkxQcm90
ZWN0aW9uU3BhY2U6c3BhY2VdKS5nZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBzdGF0aWMgUHJvdGVj
dGlvblNwYWNlU2VydmVyVHlwZSB0eXBlKE5TVVJMUHJvdGVjdGlvblNwYWNlICpzcGFjZSkKIHsK
ICAgICBpZiAoW3NwYWNlIGlzUHJveHldKSB7CkBAIC0xMDUsMTMgKzkxLDYgQEAgUHJvdGVjdGlv
blNwYWNlOjpQcm90ZWN0aW9uU3BhY2UoTlNVUkxQcgogICAgIG1fbnNTcGFjZSA9IHNwYWNlOwog
fQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJMUHJvdGVjdGlvblNwYWNlUmVmIFByb3RlY3Rp
b25TcGFjZTo6Y2ZTcGFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFtuc1NwYWNlKCkgX0NGVVJM
UHJvdGVjdGlvblNwYWNlXTsKLX0KLSNlbmRpZgotCiBOU1VSTFByb3RlY3Rpb25TcGFjZSAqUHJv
dGVjdGlvblNwYWNlOjpuc1NwYWNlKCkgY29uc3QKIHsKICAgICBpZiAobV9uc1NwYWNlKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RD
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCShyZXZpc2lvbiAxNzUwMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC01MywxNSArNTMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBOU1VS
TFJlcXVlc3QgKlJlc291cmNlUmVxdWVzdDo6bnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9s
aWN5IGJvZHlQb2xpY3kpIGNvbnN0CiB7CiAgICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KGJvZHlQ
b2xpY3kpOwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgaWYgKCFtX25zUmVxdWVzdCkKLSAgICAg
ICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlcXVlc3QqPih0aGlzKS0+dXBkYXRlTlNVUkxSZXF1ZXN0
KCk7Ci0jZW5kaWYKICAgICByZXR1cm4gW1ttX25zUmVxdWVzdC5nZXQoKSByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKIH0KIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiBDRlVSTFJlcXVlc3RSZWYgUmVz
b3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9keVBvbGlj
eSkgY29uc3QKIHsKICAgICByZXR1cm4gW25zVVJMUmVxdWVzdChib2R5UG9saWN5KSBfQ0ZVUkxS
ZXF1ZXN0XTsKQEAgLTI0OCw4ICsyNDIsNiBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0U3Rv
cmFnZVNlc3Npb24oCiAgICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKHdrQ29weVJlcXVlc3RXaXRo
U3RvcmFnZVNlc3Npb24oc3RvcmFnZVNlc3Npb24sIG1fbnNSZXF1ZXN0LmdldCgpKSk7CiB9CiAK
LSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL1F1aWNrTG9vay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCShyZXZpc2lvbiAxNzUwMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsMTEgKzQ0LDYgQEAgT0JKQ19DTEFTUyBOU1VSTENvbm5lY3Rpb247CiBPQkpDX0NMQVNT
IE5TVVJMUmVzcG9uc2U7CiBPQkpDX0NMQVNTIFFMUHJldmlld0NvbnZlcnRlcjsKIAotI2lmIFVT
RShDRk5FVFdPUkspCi10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxSZXNwb25zZSogQ0ZVUkxSZXNwb25z
ZVJlZjsKLXR5cGVkZWYgc3RydWN0IF9DRlVSTENvbm5lY3Rpb24qIENGVVJMQ29ubmVjdGlvblJl
ZjsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFF1aWNrTG9va0hhbmRs
ZUNsaWVudDsKQEAgLTg2LDkgKzgxLDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIHNob3VsZENyZWF0ZUZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOwogCiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJjZUhh
bmRsZSosIE5TVVJMQ29ubmVjdGlvbiAqLCBOU1VSTFJlc3BvbnNlICosIGlkIGRlbGVnYXRlKTsK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29r
SGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VIYW5kbGUqLCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqLCBDRlVSTFJlc3BvbnNlUmVmKTsKLSNlbmRpZgogICAg
IC8vIEZJWE1FOiBVc2Ugb2YgUmVzb3VyY2VMb2FkZXIgaGVyZSBpcyBhIHBsYXRmb3JtIHZpb2xh
dGlvbi4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9v
a0hhbmRsZT4gY3JlYXRlKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwogCkBAIC0xMDAsOSArOTIsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
aWRGYWlsKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNl
KCk7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2Uo
KTsKLSNlbmRpZgogCiAgICAgdm9pZCBzZXRDbGllbnQoUGFzc1JlZlB0cjxRdWlja0xvb2tIYW5k
bGVDbGllbnQ+IGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCShyZXZpc2lv
biAxNzUwMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xv
b2subW0JKHdvcmtpbmcgY29weSkKQEAgLTQ4LDE1ICs0OCw2IEBACiAjaW1wb3J0IDx3dGYvVmVj
dG9yLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFVTRShDRk5FVFdP
UkspCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uLmg+Ci0KLUBpbnRlcmZhY2Ug
TlNVUkxSZXNwb25zZSAoUXVpY2tMb29rRGV0YWlscykKLSsoTlNVUkxSZXNwb25zZSAqKV9yZXNw
b25zZVdpdGhDRlVSTFJlc3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNlOwotLShDRlVS
TFJlc3BvbnNlUmVmKV9DRlVSTFJlc3BvbnNlOwotQGVuZAotI2VuZGlmCi0KIFNPRlRfTElOS19G
UkFNRVdPUktfT1BUSU9OQUwoUXVpY2tMb29rKQogU09GVF9MSU5LX0NMQVNTKFF1aWNrTG9vaywg
UUxQcmV2aWV3Q29udmVydGVyKQogU09GVF9MSU5LX01BWV9GQUlMKFF1aWNrTG9vaywgUUxQcmV2
aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzLCBOU1NldCAqLCAoKSwgKCkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRs
ZUlPUy5tbQkocmV2aXNpb24gMTc1MDA0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvUmVzb3VyY2VIYW5kbGVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMzkgKzEg
QEAKLS8vCi0vLyAgUmVzb3VyY2VIYW5kbGVJUGhvbmUubW0KLS8vICBXZWJDb3JlCi0vLwotLy8g
IENvcHlyaWdodCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0KLSNp
bXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgotCi0j
aWYgVVNFKENGTkVUV09SSykKLQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGU29ja2V0U3RyZWFtUHJp
di5oPgotI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFJlcXVlc3RQcml2YXRlLmg+Ci0KLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNGTXV0YWJsZURp
Y3Rpb25hcnlSZWYgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxS
ZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBOU1N0cmluZyAq
aG9zdCA9IHJlcXVlc3QudXJsKCkuaG9zdCgpOwotICAgIE5TQXJyYXkgKmNlcnRBcnJheSA9IFtO
U1VSTFJlcXVlc3QgYWxsb3dzU3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdDpob3N0XTsK
LSAgICBCT09MIGFsbG93c0FueUNlcnRpZmljYXRlID0gW05TVVJMUmVxdWVzdCBhbGxvd3NBbnlI
VFRQU0NlcnRpZmljYXRlRm9ySG9zdDpob3N0XTsKLSAgICBpZiAoIWNlcnRBcnJheSAmJiAhYWxs
b3dzQW55Q2VydGlmaWNhdGUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBzc2xQcm9wcyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAgaWYgKGNlcnRBcnJheSkKLSAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoc3NsUHJvcHMsIF9rQ0ZTdHJlYW1TU0xUcnVzdGVkTGVhZkNlcnRp
ZmljYXRlcywgKENGVHlwZVJlZikgY2VydEFycmF5KTsKLQotICAgIGlmIChhbGxvd3NBbnlDZXJ0
aWZpY2F0ZSkKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3NsUHJvcHMsIGtDRlN0cmVh
bVNTTFZhbGlkYXRlc0NlcnRpZmljYXRlQ2hhaW4sIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgcmV0
dXJuIHNzbFByb3BzOwotfQotCi19Ci0KLSNlbmRpZgorLy8gUmVtb3ZlIG1lCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VS
ZXF1ZXN0SU9TLm1tCShyZXZpc2lvbiAxNzUwMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTQw
LDQ0ICs0MCw2IEBAIGJvb2wgUmVzb3VyY2VSZXF1ZXN0Ojp1c2VRdWlja0xvb2tSZXNvdXIKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1SZXNvdXJjZVJlcXVl
c3Q6OlJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVlc3QgKm5zUmVxdWVzdCkKLSAgICA6IFJlc291
cmNlUmVxdWVzdEJhc2UoKQotICAgICwgbV9tYWluUmVzb3VyY2VSZXF1ZXN0KGZhbHNlKQotICAg
ICwgbV9jZlJlcXVlc3QoW25zUmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSkKLSAgICAsIG1fbnNSZXF1
ZXN0KG5zUmVxdWVzdCkKLXsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZU5TVVJM
UmVxdWVzdCgpCi17Ci0gICAgaWYgKG1fY2ZSZXF1ZXN0KQotICAgICAgICBtX25zUmVxdWVzdCA9
IGFkb3B0TlMoW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVl
c3Q6bV9jZlJlcXVlc3QuZ2V0KCldKTsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmNsZWFy
T3JVcGRhdGVOU1VSTFJlcXVlc3QoKQotewotICAgIC8vIFRoZXJlIGlzIGNsaWVudCBjb2RlIHRo
YXQgZXh0ZW5kcyBOU1VSTFJlcXVlc3QgYW5kIGV4cGVjdHMgdG8gZ2V0IGJhY2ssIGluIHRoZSBk
ZWxlZ2F0ZQotICAgIC8vIGNhbGxiYWNrcywgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgdGhh
dCB0aGV5IHBhc3NlZCBpbnRvIFdlYktpdC4gVG8ga2VlcCB0aGVuIHJ1bm5pbmcsIHdlCi0gICAg
Ly8gY3JlYXRlIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFuZCByZXR1cm4gdGhhdC4gU2Vl
IDxyZGFyOi8vOTg0MzU4Mj4uCi0gICAgLy8gQWxzbywgZGV2ZWxvcGVycyByZWFsbHkgcmVhbGx5
IHdhbnQgYW4gTlNNdXRhYmxlVVJMUmVxdWVzdCBzbyB0cnkgdG8gY3JlYXRlIGFuCi0gICAgLy8g
TlNNdXRhYmxlVVJMUmVxdWVzdCBpbnN0ZWFkIG9mIE5TVVJMUmVxdWVzdC4KLSAgICBzdGF0aWMg
Q2xhc3MgbnNVUkxSZXF1ZXN0Q2xhc3MgPSBbTlNVUkxSZXF1ZXN0IGNsYXNzXTsKLSAgICBzdGF0
aWMgQ2xhc3MgbnNNdXRhYmxlVVJMUmVxdWVzdENsYXNzID0gW05TTXV0YWJsZVVSTFJlcXVlc3Qg
Y2xhc3NdOwotICAgIENsYXNzIHJlcXVlc3RDbGFzcyA9IFttX25zUmVxdWVzdC5nZXQoKSBjbGFz
c107Ci0KLSAgICBpZiAoIW1fY2ZSZXF1ZXN0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
cmVxdWVzdENsYXNzICYmIHJlcXVlc3RDbGFzcyAhPSBuc1VSTFJlcXVlc3RDbGFzcyAmJiByZXF1
ZXN0Q2xhc3MgIT0gbnNNdXRhYmxlVVJMUmVxdWVzdENsYXNzKQotICAgICAgICBtX25zUmVxdWVz
dCA9IGFkb3B0TlMoW1tyZXF1ZXN0Q2xhc3MgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDpt
X2NmUmVxdWVzdC5nZXQoKV0pOwotICAgIGVsc2UKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBudWxs
cHRyOwotfQotCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0JKHJl
dmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1
dGhlbnRpY2F0aW9uTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwyNiArMzIsMTEgQEAKICNp
bXBvcnQgPEZvdW5kYXRpb24vTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2ltcG9y
dCA8Rm91bmRhdGlvbi9OU1VSTFByb3RlY3Rpb25TcGFjZS5oPgogCi0jaWYgVVNFKENGTkVUV09S
SykKLQotQGludGVyZmFjZSBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIChEZXRhaWxzKQot
I2lmIFBMQVRGT1JNKElPUykKLSsoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKV9jcmVh
dGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUZvckNGQXV0aENoYWxsZW5nZTooQ0ZVUkxBdXRoQ2hh
bGxlbmdlUmVmKWNmQ2hhbGxlbmdlIHNlbmRlcjooaWQgPE5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTZW5kZXI+KXNlbmRlcjsKLSNlbHNlCi0rKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKilfYXV0aGVudGljYXRpb25DaGFsbGVuZ2VGb3JDRkF1dGhDaGFsbGVuZ2U6KENGVVJMQXV0
aENoYWxsZW5nZVJlZiljZkNoYWxsZW5nZSBzZW5kZXI6KGlkIDxOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyPilzZW5kZXI7Ci0jZW5kaWYKLUBlbmQKLQotI2VuZGlmCi0KIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdlYkNvcmVBdXRoZW50aWNhdGlvbkNs
aWVudEFzQ2hhbGxlbmdlU2VuZGVyIDogTlNPYmplY3QgPE5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTZW5kZXI+CiB7CiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIG1fY2xpZW50OwotI2lm
IFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIG1fY2ZDaGFsbGVuZ2U7
Ci0jZW5kaWYKIH0KIC0gKGlkKWluaXRXaXRoQXV0aGVudGljYXRpb25DbGllbnQ6KEF1dGhlbnRp
Y2F0aW9uQ2xpZW50KiljbGllbnQ7CiAtIChBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50OwpA
QCAtOTcsNDcgKzgyLDEwIEBAIC0gKHZvaWQpY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
KE4KICAgICAgICAgbV9jbGllbnQtPnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvcmUoY2hhbGxlbmdl
KSk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotLSAodm9pZClzZXRDRkNoYWxsZW5nZTooQ0ZV
UkxBdXRoQ2hhbGxlbmdlUmVmKWNoYWxsZW5nZQotewotICAgIG1fY2ZDaGFsbGVuZ2UgPSBjaGFs
bGVuZ2U7Ci19Ci0KLS0gKENGVVJMQXV0aENoYWxsZW5nZVJlZiljZkNoYWxsZW5nZQotewotICAg
IHJldHVybiBtX2NmQ2hhbGxlbmdlOwotfQotI2VuZGlmCi0KIEBlbmQKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLQotQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
Y29yZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICptYWNDaGFsbGVuZ2UpCi17Ci0gICAg
V2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgKmNoYWxsZW5nZVNl
bmRlciA9IChXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciopIFtt
YWNDaGFsbGVuZ2Ugc2VuZGVyXTsKLSAgICByZXR1cm4gQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
W2NoYWxsZW5nZVNlbmRlciBjZkNoYWxsZW5nZV0sIFtjaGFsbGVuZ2VTZW5kZXIgY2xpZW50XSk7
Ci19Ci0KLU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKm1hYyhjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYgY29yZUNoYWxsZW5nZSkKLXsKLSAgICBBdXRoZW50aWNhdGlvbkNsaWVu
dCogYXV0aENsaWVudCA9IGNvcmVDaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKTsKLSAg
ICBSZXRhaW5QdHI8V2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXI+
IGNoYWxsZW5nZVNlbmRlciA9IGFkb3B0TlMoW1tXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRB
c0NoYWxsZW5nZVNlbmRlciBhbGxvY10gaW5pdFdpdGhBdXRoZW50aWNhdGlvbkNsaWVudDphdXRo
Q2xpZW50XSk7Ci0gICAgUmV0YWluUHRyPENGVVJMQXV0aENoYWxsZW5nZVJlZj4gYXV0aENoYWxs
ZW5nZSA9IGNvcmVDaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCk7Ci0gICAgaWYgKCFh
dXRoQ2hhbGxlbmdlKQotICAgICAgICBhdXRoQ2hhbGxlbmdlID0gYWRvcHRDRihjcmVhdGVDRihj
b3JlQ2hhbGxlbmdlKSk7Ci0gICAgW2NoYWxsZW5nZVNlbmRlci5nZXQoKSBzZXRDRkNoYWxsZW5n
ZTphdXRoQ2hhbGxlbmdlLmdldCgpXTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgcmV0dXJuIFtb
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBfY3JlYXRlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VGb3JDRkF1dGhDaGFsbGVuZ2U6YXV0aENoYWxsZW5nZS5nZXQoKSBzZW5kZXI6Y2hhbGxlbmdl
U2VuZGVyLmdldCgpXSBhdXRvcmVsZWFzZV07Ci0jZWxzZQotICAgIHJldHVybiBbW05TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRm9yQ0ZBdXRoQ2hh
bGxlbmdlOmF1dGhDaGFsbGVuZ2UuZ2V0KCkgc2VuZGVyOmNoYWxsZW5nZVNlbmRlci5nZXQoKV0g
YXV0b3JlbGVhc2VdOwotI2VuZGlmCi19Ci0KLSNlbHNlCi0KIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3Rl
Y3Rpb25TcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHJldmlvdXNGYWls
dXJlQ291bnQsCkBAIC0yMTEsNiArMTU5LDQgQEAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY29y
ZShOU1VSTEF1dGhlbgogICAgIHJldHVybiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtYWNDaGFs
bGVuZ2UpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2ll
SmFyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0Nvb2tpZUphck1hYy5tbQkocmV2aXNpb24gMTc1MDA0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBsYXRmb3JtQ29va2ll
SmFyLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25z
LmgiCiAjaW1wb3J0ICJDb29raWUuaCIKICNpbXBvcnQgIkNvb2tpZVN0b3JhZ2UuaCIKQEAgLTIy
Miw1ICsyMjAsMyBAQCB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZEFmdGVyRGF0ZShjCiB9
CiAKIH0KLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VN
YWMubW0JKHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsy
Niw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlhbFN0b3JhZ2Uu
aCIKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYWMu
aCIKICNpbmNsdWRlICJDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgi
CkBAIC01Miw1ICs1MCwzIEBAIHZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNhdmVUb1BlcnNpc3Rl
bnQKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyAhVVNFKENG
TkVUV09SSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1E
YXRhU3RyZWFtTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaAkocmV2aXNpb24gMTc1MDA0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksOCArMjksNiBAQAogI2lmbmRlZiBGb3JtRGF0YVN0cmVhbU1hY19oCiAj
ZGVmaW5lIEZvcm1EYXRhU3RyZWFtTWFjX2gKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMUmVxdWVz
dCogQ0ZVUkxSZXF1ZXN0UmVmOwpAQCAtNDksNiArNDcsNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQog
CiAjZW5kaWYgLy8gRm9ybURhdGFTdHJlYW1NYWNfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0JKHJl
dmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zv
cm1EYXRhU3RyZWFtTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw2IEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtTWFjLmgiCiAKLSNpZiAhVVNF
KENGTkVUV09SSykKLQogI2ltcG9ydCAiRm9ybURhdGEuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3Ry
ZWFtQ0ZOZXQuaCIKICNpbXBvcnQgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC01Miw1ICs1MCwzIEBA
IEZvcm1EYXRhKiBodHRwQm9keUZyb21TdHJlYW0oTlNJbnB1dFN0cmUKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JN
YWMubW0JKHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSw2
IEBACiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmg+CiAjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KIAotI2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENGTkVUV09SSykK
LSNpbXBvcnQgPENGTmV0d29yay9DRlNvY2tldFN0cmVhbVByaXYuaD4KLSNlbmRpZgotCiBAaW50
ZXJmYWNlIE5TRXJyb3IgKFdlYkV4dHJhcykKIC0gKE5TU3RyaW5nICopX3dlYl9sb2NhbGl6ZWRE
ZXNjcmlwdGlvbjsKIEBlbmQKQEAgLTkxLDg1ICs4Nyw2IEBAIC0gKHZvaWQpZW5jb2RlV2l0aENv
ZGVyOihOU0NvZGVyICopY29kZXIKIAogQGVuZAogCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotc3Rh
dGljIE5TRXJyb3IgKk5TRXJyb3JGcm9tQ0ZFcnJvcihDRkVycm9yUmVmIGNmRXJyb3IsIE5TVVJM
ICp1cmwpCi17Ci0gICAgQ0ZJbmRleCBlcnJDb2RlID0gQ0ZFcnJvckdldENvZGUoY2ZFcnJvcik7
Ci0gICAgaWYgKENGRXF1YWwoQ0ZFcnJvckdldERvbWFpbihjZkVycm9yKSwga0NGRXJyb3JEb21h
aW5DRk5ldHdvcmspICYmIGVyckNvZGUgPD0ga0NGVVJMRXJyb3JVbmtub3duICYmIGVyckNvZGUg
PiAtNDAwMCkgewotICAgICAgICAvLyBUaGlzIGlzIGFuIFVSTCBlcnJvciBhbmQgbmVlZHMgdG8g
YmUgdHJhbnNsYXRlZCB0byB0aGUgTlNVUkxFcnJvckRvbWFpbgotICAgICAgICBpZCBrZXlzWzEw
XSwgdmFsdWVzWzEwXTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHVzZXJJbmZvID0gQ0ZFcnJv
ckNvcHlVc2VySW5mbyhjZkVycm9yKTsKLSAgICAgICAgTlNFcnJvciAqcmVzdWx0OwotICAgICAg
ICBOU0ludGVnZXIgY291bnQgPSAwOwotCi0gICAgICAgIGlmICh1cmwpIHsKLSAgICAgICAgICAg
IGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxFcnJvcktleTsKLSAgICAgICAgICAg
IHZhbHVlc1tjb3VudF0gPSB1cmw7Ci0gICAgICAgICAgICBjb3VudCArKzsKLQotICAgICAgICAg
ICAga2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5OwotICAg
ICAgICAgICAgdmFsdWVzW2NvdW50XSA9IFt1cmwgYWJzb2x1dGVTdHJpbmddOwotICAgICAgICAg
ICAgY291bnQgKys7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNG
RGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0aW9u
S2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291
bnRdID0gTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleTsKLSAgICAgICAgICAgIGNvdW50ICsrOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRW
YWx1ZSh1c2VySW5mbywga0NGRXJyb3JMb2NhbGl6ZWRGYWlsdXJlUmVhc29uS2V5KTsKLSAgICAg
ICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2Nh
bGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk7Ci0gICAgICAgICAgICBjb3VudCArKzsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
dXNlckluZm8sIGtDRkVycm9yTG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uS2V5KTsKLSAgICAg
ICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2Nh
bGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25FcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50ICsrOwot
ICAgICAgICB9Ci0KLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICAgICAg
aWYgKHVzZXJJbmZvICYmICh2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVl
KHVzZXJJbmZvLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNTTFBlZXJDZXJ0aWZpY2F0ZXMpKSAhPSBuaWwp
IHsKLSAgICAgICAgICAgIC8vIE5lZWQgdG8gdHJhbnNsYXRlIHRoZSBjZXJ0Ci0gICAgICAgICAg
ICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvclBlZXJDZXJ0aWZpY2F0ZUNoYWluS2V5IjsKLSAgICAg
ICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGlj
dGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBfa0NGU3RyZWFtUHJvcGVydHlTU0xDbGllbnRDZXJ0
aWZpY2F0ZXMpOwotICAgICAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAg
ICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvckNsaWVudENlcnRpZmljYXRlQ2hhaW5LZXkiOwot
ICAgICAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2
YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBfa0NGU3Ry
ZWFtUHJvcGVydHlTU0xDbGllbnRDZXJ0aWZpY2F0ZVN0YXRlKTsKLSAgICAgICAgICAgIGlmICh2
YWx1ZXNbY291bnRdKSB7Ci0gICAgICAgICAgICAgICAga2V5c1tjb3VudF0gPSBAIk5TRXJyb3JD
bGllbnRDZXJ0aWZpY2F0ZVN0YXRlS2V5IjsKLSAgICAgICAgICAgICAgICBjb3VudCArKzsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotCi0g
ICAgICAgIGlmICh1c2VySW5mbyAmJiAodmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlH
ZXRWYWx1ZSh1c2VySW5mbywga0NGU3RyZWFtUHJvcGVydHlTU0xQZWVyVHJ1c3QpKSAhPSBuaWwp
IHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxQZWVyVHJ1
c3RFcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50Kys7Ci0gICAgICAgIH0KLQotICAgICAgICBr
ZXlzW2NvdW50XSA9IE5TVW5kZXJseWluZ0Vycm9yS2V5OwotICAgICAgICB2YWx1ZXNbY291bnRd
ID0gKGlkKWNmRXJyb3I7Ci0gICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgIHJlc3VsdCA9IFtX
ZWJDdXN0b21OU1VSTEVycm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6
KGVyckNvZGUgPT0ga0NGVVJMRXJyb3JVbmtub3duID8gKENGSW5kZXgpTlNVUkxFcnJvclVua25v
d24gOiBlcnJDb2RlKSB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0
czp2YWx1ZXMgZm9yS2V5czprZXlzIGNvdW50OmNvdW50XV07Ci0gICAgICAgIGlmICh1c2VySW5m
bykKLSAgICAgICAgICAgIENGUmVsZWFzZSh1c2VySW5mbyk7Ci0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfQotICAgIHJldHVybiAoTlNFcnJvciAqKWNmRXJyb3I7Ci19Ci0jZW5kaWYgLy8g
VVNFKENGTkVUV09SSykKLQogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMTkwLDUzICsxMDcsNiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IGNy
ZWF0ZU5TRXJyb3JGCiAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0
aERvbWFpbjpyZXNvdXJjZUVycm9yLmRvbWFpbigpIGNvZGU6cmVzb3VyY2VFcnJvci5lcnJvckNv
ZGUoKSB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykK
LQotUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihOU0Vycm9yICplcnJvcikKLSAgICA6IG1f
ZGF0YUlzVXBUb0RhdGUoZmFsc2UpCi0gICAgLCBtX3BsYXRmb3JtRXJyb3IocmVpbnRlcnByZXRf
Y2FzdDxDRkVycm9yUmVmPihlcnJvcikpCi17Ci0gICAgbV9pc051bGwgPSAhZXJyb3I7Ci0gICAg
aWYgKCFtX2lzTnVsbCkKLSAgICAgICAgbV9pc1RpbWVvdXQgPSBbZXJyb3IgY29kZV0gPT0gTlNV
UkxFcnJvclRpbWVkT3V0OwotfQotCi1OU0Vycm9yICpSZXNvdXJjZUVycm9yOjpuc0Vycm9yKCkg
Y29uc3QKLXsKLSAgICBpZiAobV9pc051bGwpIHsKLSAgICAgICAgQVNTRVJUKCFtX3BsYXRmb3Jt
RXJyb3IpOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIGlmIChtX3BsYXRmb3Jt
TlNFcnJvcikKLSAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOwotCi0gICAg
aWYgKG1fcGxhdGZvcm1FcnJvcikgewotICAgICAgICBDRkVycm9yUmVmIGVycm9yID0gbV9wbGF0
Zm9ybUVycm9yLmdldCgpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiB1c2Vy
SW5mbyA9IGFkb3B0Q0YoQ0ZFcnJvckNvcHlVc2VySW5mbyhlcnJvcikpOwotI2lmIFBMQVRGT1JN
KElPUykKLSAgICAgICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBOU0Vycm9yRnJvbUNGRXJyb3IoZXJy
b3IsIChOU1VSTCAqKVsoTlNEaWN0aW9uYXJ5ICopdXNlckluZm8uZ2V0KCkgb2JqZWN0Rm9yS2V5
OihpZCkga0NGVVJMRXJyb3JGYWlsaW5nVVJMRXJyb3JLZXldKTsKLSAgICAgICAgLy8gSWYgTlNF
cnJvckZyb21DRkVycm9yIGNyZWF0ZWQgYSBuZXcgTlNFcnJvciBmb3IgdXMsIHJldHVybiB0aGF0
LgotICAgICAgICBpZiAobV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCkgIT0gKE5TRXJyb3IgKillcnJv
cikKLSAgICAgICAgICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLQotICAgICAg
ICAvLyBPdGhlcndpc2UgZmFsbCB0aHJvdWdoIHRvIGNyZWF0ZSBhIG5ldyBOU0Vycm9yIGZyb20g
dGhlIENGRXJyb3IuCi0jZW5kaWYKLSAgICAgICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBhZG9wdE5T
KFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46KE5TU3RyaW5nICopQ0ZFcnJvckdldERv
bWFpbihlcnJvcikgY29kZTpDRkVycm9yR2V0Q29kZShlcnJvcikgdXNlckluZm86KE5TRGljdGlv
bmFyeSAqKXVzZXJJbmZvLmdldCgpXSk7Ci0gICAgICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJv
ci5nZXQoKTsKLSAgICB9Ci0KLSAgICBtX3BsYXRmb3JtTlNFcnJvciA9IGNyZWF0ZU5TRXJyb3JG
cm9tUmVzb3VyY2VFcnJvckJhc2UoKnRoaXMpOwotICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJv
ci5nZXQoKTsKLX0KLQotUmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgTlNFcnJvciAqKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbnNFcnJvcigpOwotfQotCi0jZWxzZQotCiBSZXNvdXJjZUVycm9yOjpS
ZXNvdXJjZUVycm9yKE5TRXJyb3IgKm5zRXJyb3IpCiAgICAgOiBtX2RhdGFJc1VwVG9EYXRlKGZh
bHNlKQogICAgICwgbV9wbGF0Zm9ybUVycm9yKG5zRXJyb3IpCkBAIC0zMDksNiArMTc5LDQgQEAg
UmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgQ0ZFcnJvclJlZigpIGNvbgogICAgIHJldHVybiBjZkVy
cm9yKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUhhbmRsZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkocmV2aXNpb24gMTc1MDA0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTU1LDE2ICs1NSw2IEBACiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaWYg
X19oYXNfaW5jbHVkZSg8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4pCi0jaW1wb3J0
IDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPgotI2VuZGlmCi10eXBlZGVmIHN0cnVj
dCBfQ0ZVUkxDb25uZWN0aW9uKiBDRlVSTENvbm5lY3Rpb25SZWY7Ci1leHRlcm4gIkMiIHsKLUNG
RGljdGlvbmFyeVJlZiBfQ0ZVUkxDb25uZWN0aW9uQ29weVRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0
aW9uUmVmKTsKLX0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiAjaWYgX19oYXNfaW5jbHVk
ZSg8Rm91bmRhdGlvbi9OU1VSTENvbm5lY3Rpb25Qcml2YXRlLmg+KQogI2ltcG9ydCA8Rm91bmRh
dGlvbi9OU1VSTENvbm5lY3Rpb25Qcml2YXRlLmg+CiAjZWxzZQpAQCAtNzQsMTYgKzY0LDYgQEAg
LSAoTlNEaWN0aW9uYXJ5ICopX3RpbWluZ0RhdGE7CiBAZW5kCiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKElPUykKLSNpbXBvcnQgIkNGVVJMUmVxdWVzdFNQSS5oIgotI2ltcG9ydCAiUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzSU9TLmgiCi0jaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCi0KLUBp
bnRlcmZhY2UgTlNVUkxSZXF1ZXN0IChpT1NEZXRhaWxzKQotLSAoQ0ZVUkxSZXF1ZXN0UmVmKSBf
Q0ZVUkxSZXF1ZXN0OwotQGVuZAotI2VuZGlmCi0KICNpZiBVU0UoUVVJQ0tfTE9PSykKICNpbXBv
cnQgIlF1aWNrTG9vay5oIgogI2VuZGlmCkBAIC05NSw5ICs3NSw3IEBAIC0oaWQpX2luaXRXaXRo
UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmUKIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
ICAgIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotICAgIAorCiBzdGF0aWMgdm9pZCBhcHBseUJhc2lj
QXV0aG9yaXphdGlvbkhlYWRlcihSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IENyZWRl
bnRpYWwmIGNyZWRlbnRpYWwpCiB7CiAgICAgU3RyaW5nIGF1dGhlbnRpY2F0aW9uSGVhZGVyID0g
IkJhc2ljICIgKyBiYXNlNjRFbmNvZGUoU3RyaW5nKGNyZWRlbnRpYWwudXNlcigpICsgIjoiICsg
Y3JlZGVudGlhbC5wYXNzd29yZCgpKS51dGY4KCkpOwpAQCAtMTA1LDcgKzgzLDYgQEAgc3RhdGlj
IHZvaWQgYXBwbHlCYXNpY0F1dGhvcml6YXRpb25IZWFkZQogICAgIHJlcXVlc3Quc2V0SFRUUEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpBdXRob3JpemF0aW9uLCBhdXRoZW50aWNhdGlvbkhl
YWRlcik7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQogc3RhdGljIE5TT3BlcmF0aW9uUXVldWUg
Km9wZXJhdGlvblF1ZXVlRm9yQXN5bmNDbGllbnRzKCkKIHsKICAgICBzdGF0aWMgTlNPcGVyYXRp
b25RdWV1ZSAqcXVldWU7CkBAIC0xMTYsNyArOTMsNiBAQCBzdGF0aWMgTlNPcGVyYXRpb25RdWV1
ZSAqb3BlcmF0aW9uUXVldWVGCiAgICAgfQogICAgIHJldHVybiBxdWV1ZTsKIH0KLSNlbmRpZgog
CiBSZXNvdXJjZUhhbmRsZUludGVybmFsOjp+UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCgpCiB7CkBA
IC0yNjEsMTEgKzIzNyw2IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKICAgICAgICAg
KE5TRGljdGlvbmFyeSAqKWNsaWVudCgpLT5jb25uZWN0aW9uUHJvcGVydGllcyh0aGlzKS5nZXQo
KSk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICBOU1VSTENvbm5lY3Rpb24gKnVy
bENvbm5lY3Rpb24gPSBjb25uZWN0aW9uKCk7Ci0gICAgW3VybENvbm5lY3Rpb24gc2NoZWR1bGVJ
blJ1bkxvb3A6V2ViVGhyZWFkTlNSdW5Mb29wKCkgZm9yTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9k
ZV07Ci0gICAgW3VybENvbm5lY3Rpb24gc3RhcnRdOwotI2Vsc2UKICAgICBib29sIHNjaGVkdWxl
ZCA9IGZhbHNlOwogICAgIGlmIChTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRQYWlycyA9
IGQtPm1fY29udGV4dC0+c2NoZWR1bGVkUnVuTG9vcFBhaXJzKCkpIHsKICAgICAgICAgU2NoZWR1
bGVQYWlySGFzaFNldDo6aXRlcmF0b3IgZW5kID0gc2NoZWR1bGVkUGFpcnMtPmVuZCgpOwpAQCAt
Mjg5LDcgKzI2MCw2IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKICAgICAgICAgW2Nv
bm5lY3Rpb24oKSBzdGFydF07CiAgICAgZWxzZQogICAgICAgICBkLT5tX3N0YXJ0V2hlblNjaGVk
dWxlZCA9IHRydWU7Ci0jZW5kaWYKIAogICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIHN0YXJ0
aW5nIGNvbm5lY3Rpb24gJXAgZm9yICVAIiwgdGhpcywgY29ubmVjdGlvbigpLCBmaXJzdFJlcXVl
c3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSkpOwogICAgIApAQCAtMzIyLDgg
KzI5Miw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG8KICAgICAg
ICAgd2tTZXROU1VSTENvbm5lY3Rpb25EZWZlcnNDYWxsYmFja3MoZC0+bV9jb25uZWN0aW9uLmdl
dCgpLCBkZWZlcnMpOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQotCiB2b2lkIFJlc291cmNlSGFu
ZGxlOjpzY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7CiAgICAgTlNSdW5Mb29wICpydW5M
b29wID0gcGFpci5uc1J1bkxvb3AoKTsKQEAgLTM0Miw4ICszMTAsNiBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlCiAgICAgICAgIFtkLT5tX2Nvbm5lY3Rpb24uZ2V0
KCkgdW5zY2hlZHVsZUZyb21SdW5Mb29wOnJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKilwYWly
Lm1vZGUoKV07CiB9CiAKLSNlbmRpZgotCiBpZCBSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRl
KGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKCFkLT5tX2Rl
bGVnYXRlKTsKQEAgLTcyNCw5ICs2OTAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51
ZVdpbGxDYWNoZVJlCiAKICAgICBbKGlkKWRlbGVnYXRlKCkgY29udGludWVXaWxsQ2FjaGVSZXNw
b25zZTpyZXNwb25zZV07CiB9Ci0gICAgCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0gICAg
CisKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKICAgICAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6Omdl
dENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSwgUmVzb3VyY2VM
b2FkVGltaW5nJiB0aW1pbmcpCkBAIC03NjMsMjIgKzcyNywxMSBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjpzZXRDb2xsZWN0c1RpbWluZ0RhCiAgICAgfSk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotICAgIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoQ0ZV
UkxDb25uZWN0aW9uUmVmIGNvbm5lY3Rpb24sIFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nKQot
ewotICAgIGdldENvbm5lY3Rpb25UaW1pbmdEYXRhKChfX2JyaWRnZSBOU0RpY3Rpb25hcnkqKShh
ZG9wdENGKF9DRlVSTENvbm5lY3Rpb25Db3B5VGltaW5nRGF0YShjb25uZWN0aW9uKSkuZ2V0KCkp
LCB0aW1pbmcpOwotfQotICAgIAotI2Vsc2UKLSAgICAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6Omdl
dENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgUmVzb3Vy
Y2VMb2FkVGltaW5nJiB0aW1pbmcpCiB7CiAgICAgZ2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoW2Nv
bm5lY3Rpb24gX3RpbWluZ0RhdGFdLCB0aW1pbmcpOwogfQotICAgIAotI2VuZGlmCi0gICAgCisK
ICNlbmRpZiAvLyBFTkFCTEUoV0VCX1RJTUlORykKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlUmVxdWVzdE1hYy5tbQkocmV2aXNpb24gMTc1MDA0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC02NCwyOSArNjQsNiBAQCBib29sIFJlc291cmNlUmVxdWVzdDo6dXNlUXVpY2tMb29r
UmVzb3VyCiAgICAgcmV0dXJuIGZsYWc7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1SZXNv
dXJjZVJlcXVlc3Q6OlJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVlc3QgKm5zUmVxdWVzdCkKLSAg
ICA6IFJlc291cmNlUmVxdWVzdEJhc2UoKQotICAgICwgbV9jZlJlcXVlc3QoW25zUmVxdWVzdCBf
Q0ZVUkxSZXF1ZXN0XSkKLSAgICAsIG1fbnNSZXF1ZXN0KG5zUmVxdWVzdCkKLXsKLX0KLQotdm9p
ZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZU5TVVJMUmVxdWVzdCgpCi17Ci0gICAgaWYgKG1fY2ZS
ZXF1ZXN0KQotICAgICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxs
b2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDptX2NmUmVxdWVzdC5nZXQoKV0pOwotfQotCi12b2lk
IFJlc291cmNlUmVxdWVzdDo6YXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwoKQotewotICAgIC8v
IEhhY2sgYmVjYXVzZSBNYWlsIGNoZWNrcyBmb3IgdGhpcyBwcm9wZXJ0eSB0byBkZXRlY3QgZGF0
YSAvIGFyY2hpdmUgbG9hZHMKLSAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShj
ZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSksIENGU1RSKCJXZWJEYXRhUmVxdWVzdCIp
LCBDRlNUUigiIikpOwotfQotCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
UmVzcG9uc2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQkocmV2aXNpb24gMTc1MDA0KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtNzEsMzYgKzcxLDYgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpp
bml0TlNVUkxSZXNwb25zZQogICAgIFttX25zUmVzcG9uc2UuZ2V0KCkgX3NldE1JTUVUeXBlOihO
U1N0cmluZyAqKW1fbWltZVR5cGVdOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLQotTlNVUkxS
ZXNwb25zZSAqUmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSgpIGNvbnN0Ci17Ci0gICAg
aWYgKCFtX25zUmVzcG9uc2UgJiYgIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051bGwpIHsKLSAgICAg
ICAgaW5pdE5TVVJMUmVzcG9uc2UoKTsKLSAgICAgICAgbV9jZlJlc3BvbnNlID0gW21fbnNSZXNw
b25zZS5nZXQoKSBfQ0ZVUkxSZXNwb25zZV07Ci0gICAgICAgIHJldHVybiBtX25zUmVzcG9uc2Uu
Z2V0KCk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2NmUmVzcG9uc2UpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0KLSAgICBpZiAoIW1fbnNSZXNwb25zZSkKLSAgICAgICAgbV9uc1Jlc3BvbnNlID0gW05T
VVJMUmVzcG9uc2UgX3Jlc3BvbnNlV2l0aENGVVJMUmVzcG9uc2U6bV9jZlJlc3BvbnNlLmdldCgp
XTsKLQotICAgIHJldHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7Ci19Ci0KLVJlc291cmNlUmVzcG9u
c2U6OlJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSogbnNSZXNwb25zZSkKLSAgICA6IG1f
aW5pdExldmVsKFVuaW5pdGlhbGl6ZWQpCi0gICAgLCBtX3BsYXRmb3JtUmVzcG9uc2VJc1VwVG9E
YXRlKHRydWUpCi0gICAgLCBtX2NmUmVzcG9uc2UoW25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2Vd
KQotICAgICwgbV9uc1Jlc3BvbnNlKG5zUmVzcG9uc2UpCi17Ci0gICAgbV9pc051bGwgPSAhbnNS
ZXNwb25zZTsKLX0KLQotI2Vsc2UKLQogc3RhdGljIE5TU3RyaW5nKiBjb25zdCBjb21tb25IZWFk
ZXJGaWVsZHNbXSA9IHsKICAgICBAIkFnZSIsIEAiQ2FjaGUtQ29udHJvbCIsIEAiQ29udGVudC1U
eXBlIiwgQCJEYXRlIiwgQCJFdGFnIiwgQCJFeHBpcmVzIiwgQCJMYXN0LU1vZGlmaWVkIiwgQCJQ
cmFnbWEiCiB9OwpAQCAtMTg5LDcgKzE1OSw1IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6cGxh
dGZvcm1Db21wYXJlKGMKICAgICByZXR1cm4gYS5uc1VSTFJlc3BvbnNlKCkgPT0gYi5uc1VSTFJl
c3BvbnNlKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRl
LmgJKHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsOCArMjYsNiBAQAogI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gK
ICNkZWZpbmUgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCiAKLSNpZiAhVVNFKENG
TkVUV09SSykKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiB9
CkBAIC0zOSw1ICszNyw0IEBAIEBpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxl
Z2EKIC0gKHZvaWQpZGV0YWNoSGFuZGxlOwogQGVuZAogCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdP
UkspCiAjZW5kaWYgLy8gV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0JKHJldmlzaW9uIDE3NTAw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0
ZS5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbk1hYy5oIgogI2ltcG9ydCAiTG9nZ2lu
Zy5oIgpAQCAtMjkxLDYgKzI4OSwzIEBAIC0gKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKiljb25uZWN0
aW9uOihOU1UKIH0KIAogQGVuZAotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5oCShyZXZpc2lvbiAxNzUwMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBXZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaAogI2RlZmluZSBXZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaAogCi0jaWYgIVVTRShDRk5FVFdP
UkspCi0KICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KIApAQCAtNTksNSArNTcsNCBAQCBAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhh
bmRsZVdpdGhDcmVkCiAKIEBlbmQKIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogI2VuZGlm
IC8vIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlLm1tCShyZXZpc2lvbiAxNzUwMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVs
ZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW1wb3J0ICJMb2dn
aW5nLmgiCkBAIC0zNDgsNiArMzQ2LDMgQEAgLSAoQk9PTCljb25uZWN0aW9uU2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0bwogfQogCiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVVUkxSZXNwb25zZS5tbQkocmV2aXNpb24gMTc1MDA0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjUsNyArMzI1LDYgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJM
UmVzcAogfQogI2VuZGlmCiAKLSNpZiAhVVNFKENGTkVUV09SSykKIE5TVVJMUmVzcG9uc2UgKnN5
bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxDb25uZWN0aW9uICpjb25u
ZWN0aW9uLCBOU1VSTFJlcXVlc3QgKm5ld1JlcXVlc3QsIE5TVVJMUmVzcG9uc2UgKnJlZGlyZWN0
UmVzcG9uc2UpCiB7CiAjaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwOTAKQEAgLTM0NSw2ICszNDQsNSBAQCBOU1VSTFJlc3BvbnNlICpzeW50
aGVzaXplUmVkaXJlY3RSZXNwb25zCiAgICAgcmV0dXJuIHJlZGlyZWN0UmVzcG9uc2U7CiAjZW5k
aWYKIH0KLSNlbmRpZgogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTc1MDA0KQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEzNSwxMiArMTM1LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGFBcnJheShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENGQXJyYXlS
ZWYpIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaWYgVVNFKENGTkVU
V09SSykKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwotI2Vsc2UK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNlbmRp
ZgogCiAgICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXJNYWMubW0JKHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEwOSwzMSArMTA5LDE3IEBAIHNpemVfdCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmZpbGVCYWNrZWQKICAgICByZXR1cm4gU2hhcmVkTWVtb3J5OjpzeXN0ZW1QYWdlU2l6ZSgpOwog
fQogCi0jaWYgVVNFKENGTkVUV09SSykKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxs
Q2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYgY2ZSZXNwb25zZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxl
ID09IG1faGFuZGxlKTsKLQotICAgIGlmIChtX2J5dGVzUmVjZWl2ZWQgPj0gZmlsZUJhY2tlZFJl
c291cmNlTWluaW11bVNpemUoKSkKLSAgICAgICAgTmV0d29ya0Rpc2tDYWNoZU1vbml0b3I6Om1v
bml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY2ZSZXNwb25zZSwgdGhpcyk7Ci0KLSAgICBt
X2hhbmRsZS0+Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShjZlJlc3BvbnNlKTsKLX0KLQotI2Vs
c2UKLQogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgTlNDYWNoZWRVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkK
IHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKIAotI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorI2lmIFBMQVRGT1JNKElP
UykgfHxfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKICAgICBpZiAobV9i
eXRlc1JlY2VpdmVkID49IGZpbGVCYWNrZWRSZXNvdXJjZU1pbmltdW1TaXplKCkpCiAgICAgICAg
IE5ldHdvcmtEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9u
KFtuc1Jlc3BvbnNlIF9DRkNhY2hlZFVSTFJlc3BvbnNlXSwgdGhpcyk7CiAjZW5kaWYKIAogICAg
IG1faGFuZGxlLT5jb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKG5zUmVzcG9uc2UpOwogfQotI2Vu
ZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAkocmV2aXNpb24gMTc1MDA0KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyAr
MTAwLDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZAogICAgIGVu
Y29kZXIgPDwgdGV4dENoZWNrZXJTdGF0ZTsKICAgICBlbmNvZGVyIDw8IGZ1bGxLZXlib2FyZEFj
Y2Vzc0VuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBkZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZh
bDsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICBlbmNvZGVyIDw8IHVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXI7CiAjZW5kaWYK
ICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTIyMCw3ICsyMjAsNyBAQCBib29sIFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5F
VFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTc1MDA0KQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTE2LDcgKzExNiw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsK
IAogICAgIGRvdWJsZSBkZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbDsKIAotI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFN0
cmluZyB1aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCShyZXZpc2lvbiAxNzUwMDQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsOSArNDMsNiBAQCBEb3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRNYW5h
Z2VyJiBkb3duCiAgICAgOiBtX2Rvd25sb2FkTWFuYWdlcihkb3dubG9hZE1hbmFnZXIpCiAgICAg
LCBtX2Rvd25sb2FkSUQoZG93bmxvYWRJRCkKICAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQotI2lm
IFVTRShDRk5FVFdPUkspCi0gICAgLCBtX2FsbG93T3ZlcndyaXRlKGZhbHNlKQotI2VuZGlmCiB7
CiAgICAgQVNTRVJUKG1fZG93bmxvYWRJRCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Eb3dubG9hZHMvRG93bmxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTAg
KzQ0LDYgQEAgT0JKQ19DTEFTUyBXS0Rvd25sb2FkQXNEZWxlZ2F0ZTsKICNpbmNsdWRlIDxtZW1v
cnk+CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NG
VVJMRG93bmxvYWRQcml2Lmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIElQQyB7CiAgICAgY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKIH0KQEAgLTkyLDExICs4OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZENhbmNlbChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOwogICAgIHZvaWQg
ZGlkRGVjaWRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9Ci0gICAgRG93bmxvYWRBdXRoZW50aWNhdGlv
bkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQoKTsKLSNlbmRpZgotCiAgICAgLy8gQXV0aGVu
dGljYXRpb24KICAgICBzdGF0aWMgdm9pZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik7
CiAgICAgc3RhdGljIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50
aWFsKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CkBAIC0xMzAsMTAg
KzEyMSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2FsbG93T3ZlcndyaXRlOwogICAgIFN0cmlu
ZyBtX2Rlc3RpbmF0aW9uOwogICAgIFN0cmluZyBtX2J1bmRsZVBhdGg7Ci0jaWYgVVNFKENGTkVU
V09SSykKLSAgICBSZXRhaW5QdHI8Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3dubG9hZDsKLSAgICBS
ZWZQdHI8RG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudD4gbV9hdXRoZW50aWNhdGlvbkNsaWVu
dDsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudD4gbV9kb3dubG9hZENsaWVu
dDsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU+IG1fcmVzb3VyY2VIYW5kbGU7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL2lvcy9Eb3du
bG9hZElPUy5tbQkocmV2aXNpb24gMTc1MDA0KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Rv
d25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMTkzICsxIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJEb3dubG9hZC5oIgot
Ci0jaWYgUExBVEZPUk0oSU9TKQotCi0jaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCi0jaW1wb3J0
IDxDRk5ldHdvcmsvQ0ZVUkxEb3dubG9hZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1Jlc291cmNlSGFuZGxlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2Uu
aD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gRklY
TUU6IElmIHBvc3NpYmxlLCB3ZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIHNvbWUgY2FsbGJhY2tz
IG9mZiB0aGUgbWFpbiB0aHJlYWQgb3IgYXQgbGVhc3QKLS8vIG1ha2luZyB0aGVtIGFzeW5jaG9u
b3VzIGNhbGxzLgotc3RhdGljIHZvaWQgZGlzcGF0Y2hPbk1haW5UaHJlYWQodm9pZCheYmxvY2sp
KCkpCi17Ci0gICAgaWYgKFJ1bkxvb3A6OmlzTWFpbigpKSB7Ci0gICAgICAgIGJsb2NrKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIGJsb2NrKTsKLX0KLQotc3RhdGljIGlubGluZSBEb3dubG9hZCogdG9Eb3du
bG9hZChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxE
b3dubG9hZCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLX0KLQotc3RhdGljIHZv
aWQgc2V0VXBEb3dubG9hZENsaWVudChDRlVSTERvd25sb2FkQ2xpZW50JiBjbGllbnQsIERvd25s
b2FkJiBkb3dubG9hZCkKLXsKLSAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkp
OwotICAgIGNsaWVudC5jbGllbnRJbmZvID0gJmRvd25sb2FkOwotCi0gICAgY2xpZW50LmRpZFN0
YXJ0ID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAg
ICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGll
bnRJbmZvKS0+ZGlkU3RhcnQoKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC53
aWxsU2VuZFJlcXVlc3QgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlVSTFJlcXVlc3RSZWYgcmVx
dWVzdCwgQ0ZVUkxSZXNwb25zZVJlZiwgY29uc3Qgdm9pZCopIC0+IENGVVJMUmVxdWVzdFJlZiB7
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlVSTFJlcXVlc3RSZWY+KENGUmV0YWluKHJl
cXVlc3QpKTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZSA9IFtdKENG
VVJMRG93bmxvYWRSZWYsIENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAg
IHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7Ci0g
ICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEgPSBbXShDRlVS
TERvd25sb2FkUmVmLCBDRkluZGV4IGxlbmd0aCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewot
ICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChj
bGllbnRJbmZvKS0+ZGlkUmVjZWl2ZURhdGEobGVuZ3RoKTsKLSAgICAgICAgfSk7Ci0gICAgfTsK
LQotICAgIGNsaWVudC5zaG91bGREZWNvZGVEYXRhT2ZNSU1FVHlwZSA9IFtdKENGVVJMRG93bmxv
YWRSZWYsIENGU3RyaW5nUmVmIGVuY29kaW5nVHlwZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykg
LT4gQm9vbGVhbiB7Ci0gICAgICAgIF9fYmxvY2sgQk9PTCByZXR1cm5WYWx1ZSA9IE5POwotICAg
ICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB0
b0Rvd25sb2FkKGNsaWVudEluZm8pLT5zaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShl
bmNvZGluZ1R5cGUpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwot
ICAgIH07Ci0KLSAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkT2JqZWN0
TmFtZSA9IFtdKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWRSZWYsIENGU3RyaW5nUmVmIG9iamVj
dE5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5U
aHJlYWQoXnsKLSAgICAgICAgICAgIGJvb2wgYWxsb3dPdmVyd3JpdGU7Ci0gICAgICAgICAgICBT
dHJpbmcgZGVzdGluYXRpb24gPSB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShvYmplY3ROYW1lLCBhbGxvd092ZXJ3cml0ZSk7Ci0g
ICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIENG
VVJMRG93bmxvYWRTZXREZXN0aW5hdGlvbihkb3dubG9hZFJlZiwgcmVpbnRlcnByZXRfY2FzdDxD
RlVSTFJlZj4oW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpkZXN0aW5hdGlvbl0pLCBhbGxvd092ZXJ3
cml0ZSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkQ3JlYXRlRGVzdGlu
YXRpb24gPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlVSTFJlZiBwYXRoLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAg
ICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihDRlVSTEdldFN0
cmluZyhwYXRoKSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkRmluaXNo
ID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAg
ICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJ
bmZvKS0+ZGlkRmluaXNoKCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlk
RmFpbCA9IFtdKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWRSZWYsIENGRXJyb3JSZWYgZXJyb3Is
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQo
XnsKLSAgICAgICAgICAgIGF1dG8gcmVzdW1lRGF0YSA9IGFkb3B0Q0YoQ0ZVUkxEb3dubG9hZENv
cHlSZXN1bWVEYXRhKGRvd25sb2FkUmVmKSk7Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVu
dEluZm8pLT5kaWRGYWlsKGVycm9yLCBJUEM6OkRhdGFSZWZlcmVuY2UocmVzdW1lRGF0YSA/IENG
RGF0YUdldEJ5dGVQdHIocmVzdW1lRGF0YS5nZXQoKSkgOiBudWxscHRyLCByZXN1bWVEYXRhID8g
Q0ZEYXRhR2V0TGVuZ3RoKHJlc3VtZURhdGEuZ2V0KCkpIDogMCkpOwotICAgICAgICB9KTsKLSAg
ICB9OwotfQotCi12b2lkIERvd25sb2FkOjpzdGFydCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQot
ewotICAgIC8vIEZJWE1FOiBGb3Igc29tZSByZWFzb24gdGhlIGZpbGVuYW1lIG5lZWRzIHRvIGJl
IGFjY2Vzc2VkIG9yIGl0IG1heSBiZSBpbmNvcnJlY3QgYWZ0ZXIKLSAgICAvLyBDRlVSTFJlc3Bv
bnNlIGlzIHNlcmlhbGl6ZWQvZGVzZXJpYWxpemVkIChnYWlucyAudHh0IGV4dGVuc2lvbikKLSAg
ICByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwotCi0gICAgQ0ZVUkxEb3dubG9hZENsaWVu
dCBjbGllbnQ7Ci0gICAgc2V0VXBEb3dubG9hZENsaWVudChjbGllbnQsICp0aGlzKTsKLSAgICBt
X2Rvd25sb2FkID0gYWRvcHRDRihDRlVSTERvd25sb2FkQ3JlYXRlQW5kU3RhcnRXaXRoTG9hZGlu
Z0Nvbm5lY3Rpb24oTlVMTCwgaGFuZGxlLT5yZWxlYXNlQ29ubmVjdGlvbkZvckRvd25sb2FkKCku
Z2V0KCksIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpLCByZXNwb25zZS5j
ZlVSTFJlc3BvbnNlKCksICZjbGllbnQpKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6Y2FuY2VsKCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpwbGF0Zm9ybUlu
dmFsaWRhdGUoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6
OmRpZERlY2lkZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYsIGJvb2wpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1EaWRGaW5pc2goKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkQ3JlZGVu
dGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkUmVx
dWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVj
ZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkUmVxdWVzdFRv
UGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVj
ZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorLy8gUmVtb3ZlIG1lLgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMv
bWFjL0Rvd25sb2FkTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9E
b3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCShyZXZpc2lvbiAxNzUwMDQpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjYsOCArMjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEb3dubG9h
ZC5oIgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogCisjaW1wb3J0
IDxGb3VuZGF0aW9uL05TVVJMRG93bmxvYWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25NYWMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCShyZXZp
c2lvbiAxNzUwMDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVu
dENvZGVyc01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzgsNDMgKzM4LDEwIEBACiAjaW1wb3J0
IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1
ZXN0Lmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMUmVx
dWVzdC5oPgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
SVBDIHsKIAotI2lmIFVTRShDRk5FVFdPUkspCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VS
ZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCi17Ci0gICAgUmV0YWluUHRyPENG
VVJMUmVxdWVzdFJlZj4gcmVxdWVzdFRvU2VyaWFsaXplID0gcmVzb3VyY2VSZXF1ZXN0LmNmVVJM
UmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKLQotICAgIGJvb2wgcmVxdWVzdElzUHJlc2Vu
dCA9IHJlcXVlc3RUb1NlcmlhbGl6ZTsKLSAgICBlbmNvZGVyIDw8IHJlcXVlc3RJc1ByZXNlbnQ7
Ci0KLSAgICBpZiAoIXJlcXVlc3RJc1ByZXNlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IFdlIGRvbid0IHNlbmQgSFRUUCBib2R5IG92ZXIgSVBDIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2Uu
Ci0gICAgLy8gQWxzbywgaXQncyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIGRvLCBhcyBzdHJlYW1z
IGNhbiBvbmx5IGJlIGNyZWF0ZWQgaW4gcHJvY2VzcyB0aGF0IGRvZXMgbmV0d29ya2luZy4KLSAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByZXF1ZXN0SFRUUEJvZHkgPSBhZG9wdENGKENGVVJMUmVx
dWVzdENvcHlIVFRQUmVxdWVzdEJvZHkocmVxdWVzdFRvU2VyaWFsaXplLmdldCgpKSk7Ci0gICAg
UmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gcmVxdWVzdEhUVFBCb2R5U3RyZWFtID0gYWRvcHRD
RihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5U3RyZWFtKHJlcXVlc3RUb1NlcmlhbGl6
ZS5nZXQoKSkpOwotICAgIGlmIChyZXF1ZXN0SFRUUEJvZHkgfHwgcmVxdWVzdEhUVFBCb2R5U3Ry
ZWFtKSB7Ci0gICAgICAgIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgbXV0YWJsZVJlcXVlc3QgPSBD
RlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgwLCByZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCkp
OwotICAgICAgICByZXF1ZXN0VG9TZXJpYWxpemUgPSBhZG9wdENGKG11dGFibGVSZXF1ZXN0KTsK
LSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RCb2R5KG11dGFibGVSZXF1ZXN0LCBu
aWwpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdEJvZHlTdHJlYW0obXV0YWJs
ZVJlcXVlc3QsIG5pbCk7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
ZGljdGlvbmFyeSA9IGFkb3B0Q0YoV0tDRlVSTFJlcXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXBy
ZXNlbnRhdGlvbihyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJl
ZigpKSk7Ci0gICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZGljdGlvbmFyeS5nZXQoKSk7Ci0KLSAg
ICAvLyBUaGUgZmFsbGJhY2sgYXJyYXkgaXMgcGFydCBvZiBDRlVSTFJlcXVlc3QsIGJ1dCBpdCBp
cyBub3QgZW5jb2RlZCBieSBXS0NGVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2Vu
dGF0aW9uLgotICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXF1ZXN0LnJlc3BvbnNlQ29udGVudERp
c3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KCk7Ci19Ci0jZWxzZQogdm9pZCBBcmd1bWVu
dENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewog
ICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlcXVlc3RUb1NlcmlhbGl6ZSA9IHJlc291cmNl
UmVxdWVzdC5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSk7CkBAIC05OSw3ICs2Niw2
IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmMKICAgICAvLyBUaGUg
ZmFsbGJhY2sgYXJyYXkgaXMgcGFydCBvZiBOU1VSTFJlcXVlc3QsIGJ1dCBpdCBpcyBub3QgZW5j
b2RlZCBieSBXS05TVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uLgog
ICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXF1ZXN0LnJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9u
RW5jb2RpbmdGYWxsYmFja0FycmF5KCk7CiB9Ci0jZW5kaWYKIAogYm9vbCBBcmd1bWVudENvZGVy
PFJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXImIGRl
Y29kZXIsIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewpAQCAtMTE2LDIwICs4
MiwxMiBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjCiAgICAgaWYg
KCFJUEM6OmRlY29kZShkZWNvZGVyLCBkaWN0aW9uYXJ5KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBj
ZlVSTFJlcXVlc3QgPSBhZG9wdENGKFdLQ3JlYXRlQ0ZVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJs
ZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigp
KSk7Ci0gICAgaWYgKCFjZlVSTFJlcXVlc3QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHJlc291cmNlUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChjZlVSTFJlcXVlc3QuZ2V0KCkpOwot
I2Vsc2UKICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJlcXVlc3QgPSBXS05TVVJM
UmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJ
UEM6OnRva2VuTnVsbFR5cGVSZWYoKSk7CiAgICAgaWYgKCFuc1VSTFJlcXVlc3QpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIHJlc291cmNlUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChu
c1VSTFJlcXVlc3QuZ2V0KCkpOwotI2VuZGlmCi0gICAgCisKICAgICBWZWN0b3I8U3RyaW5nPiBy
ZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFj
a0FycmF5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAxNzUwMDQpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMsNyArMzMz
LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhjbwogICAgIGlmIChw
YXJhbWV0ZXJzLnNob3VsZFVzZUZvbnRTbW9vdGhpbmcpCiAgICAgICAgIHNldFNob3VsZFVzZUZv
bnRTbW9vdGhpbmcodHJ1ZSk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09S
SykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmll
ckJhc2UocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKTsKICNlbmRpZgogCkBA
IC00NjcsMTQgKzQ2NywxNCBAQCB2b2lkIFdlYlByb2Nlc3M6OmZ1bGxLZXlib2FyZEFjY2Vzc01v
ZGVDCiAKIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNz
aW9uSUQgc2Vzc2lvbklEKQogewotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JL
KSB8fCBVU0UoU09VUCkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVApCiAgICAgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNz
aW9uSUQpOwogI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSNpZiBQTEFURk9STShDT0NPQSkg
fHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVT
RShTT1VQKQogICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQpOwog
I2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNpb24gMTc1MDA0KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlOjpzZXRKYXZhU2NyaXB0Q2FuQWNjCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRQcml2YXRl
QnJvd3NpbmdFbmFibGVkKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIGJvb2wgZW5hYmxl
ZCkKIHsKICAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBUaGlzIHRlc3Qtb25seSBmdW5j
dGlvbiBkb2Vzbid0IHdvcmsgd2l0aCBOZXR3b3JrUHJvY2VzcywgPGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTUyNzQ+LgotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBV
U0UoQ0ZORVRXT1JLKSB8fCBVU0UoU09VUCkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNP
VVApCiAgICAgaWYgKGVuYWJsZWQpCiAgICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vz
c2lvbklEKCkpOwogICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZh
Y2UubW0JKHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTQyLDEzICsxNDIsNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAg
ICAgICAgIElOSVQoV2luZG93U2V0QWxwaGEpOwogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgICAgICBJTklUKEdldERlZmF1bHRIVFRQQ29va2llU3Rv
cmFnZSk7Ci0gICAgICAgIElOSVQoQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFn
ZSk7Ci0gICAgICAgIElOSVQoU2V0Q0ZVUkxSZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZmKTsKLSAg
ICAgICAgSU5JVChTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pOwotI2VuZGlmCi0KICNpZiAhUExB
VEZPUk0oSU9TKQogICAgICAgICBJTklUKFNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmll
cnMpOwogICAgICAgICBJTklUKFNwZWVjaFN5bnRoZXNpc0dldERlZmF1bHRWb2ljZUlkZW50aWZp
ZXJGb3JMb2NhbGUpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24gMTc1MDA0KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC04MiwxMSArODIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBXZWJQYWdlOjpw
bGF0Zm9ybUluaXRpYWxpemUoKQogewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgbV9wYWdlLT5h
ZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUoW1tOU1J1bkxvb3AgY3VycmVudFJ1
bkxvb3BdIGdldENGUnVuTG9vcF0sIGtDRlJ1bkxvb3BDb21tb25Nb2RlcykpOwotI2Vsc2UKICAg
ICBtX3BhZ2UtPmFkZFNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShbTlNSdW5Mb29w
IGN1cnJlbnRSdW5Mb29wXSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKSk7Ci0jZW5kaWYKIAogICAg
IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9
IFtbW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNl
XTsKIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tz
LmgJKHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVy
c2lvbkNoZWNrcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBACiAjZGVmaW5lIFdF
QktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfQ1NTX0FUVFJJQlVURV9TRVRURVJTX0lHTk9SSU5HX1BS
SU9SSVRZIDIyMzkgLy8gaU9TIDYuMAogI2RlZmluZSBXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRI
X1lPVVRVQkVfRU1CRURfSUZSQU1FX1RSQU5TRk9STSAyMjM5IC8vIGlPUyA2LjAKICNkZWZpbmUg
V0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSE9VVF9MRUdBQ1lfQkFDS0dST1VORFNJWkVfU0hPUlRI
QU5EX0JFSEFWSU9SIDI2NjUgLy8gaU9TIDcuMAorI2RlZmluZSBXRUJLSVRfRklSU1RfVkVSU0lP
Tl9XSVRIX0xPQURJTkdfRFVSSU5HX0NPTU1PTl9SVU5MT09QX01PREVTIDI2NjUgLy8gaU9TIDcu
MAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogI2lmZGVmIF9fY3BsdXNwbHVzCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAxNzUwMDQpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTk3NSwx
MiArOTc1LDEzIEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKIAog
I2lmICFQTEFURk9STShJT1MpCiAgICAgTlNSdW5Mb29wICpydW5Mb29wID0gW05TUnVuTG9vcCBt
YWluUnVuTG9vcF07Ci0KKyNlbHNlCisgICAgTlNSdW5Mb29wICpydW5Mb29wID0gV2ViVGhyZWFk
TlNSdW5Mb29wKCk7CisjZW5kaWYKICAgICBpZiAoV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJ
VF9GSVJTVF9WRVJTSU9OX1dJVEhfTE9BRElOR19EVVJJTkdfQ09NTU9OX1JVTkxPT1BfTU9ERVMp
KQogICAgICAgICBbc2VsZiBzY2hlZHVsZUluUnVuTG9vcDpydW5Mb29wIGZvck1vZGU6KE5TU3Ry
aW5nICopa0NGUnVuTG9vcENvbW1vbk1vZGVzXTsKICAgICBlbHNlCiAgICAgICAgIFtzZWxmIHNj
aGVkdWxlSW5SdW5Mb29wOnJ1bkxvb3AgZm9yTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZV07Ci0j
ZW5kaWYKIAogICAgIFtzZWxmIF9hZGRUb0FsbFdlYlZpZXdzU2V0XTsKICAgICBbc2VsZiBzZXRH
cm91cE5hbWU6Z3JvdXBOYW1lXTsKQEAgLTY1NDUsMjkgKzY1NDYsMTkgQEAgLSAoQk9PTCl2YWxp
ZGF0ZVVzZXJJbnRlcmZhY2VJdGVtOihpZCA8TgogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAo
V2ViUGVuZGluZ1B1YmxpYykKIAotI2lmICFQTEFURk9STShJT1MpCiAtICh2b2lkKXNjaGVkdWxl
SW5SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZQog
ewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZSdW5Mb29wUmVmIHNjaGVkdWxlUGFpclJ1bkxv
b3AgPSBbcnVuTG9vcCBnZXRDRlJ1bkxvb3BdOwotI2Vsc2UKICAgICBOU1J1bkxvb3AgKnNjaGVk
dWxlUGFpclJ1bkxvb3AgPSBydW5Mb29wOwotI2VuZGlmCiAgICAgaWYgKHJ1bkxvb3AgJiYgbW9k
ZSkKICAgICAgICAgY29yZShzZWxmKS0+YWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3Jl
YXRlKHNjaGVkdWxlUGFpclJ1bkxvb3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CiB9CiAKIC0gKHZv
aWQpdW5zY2hlZHVsZUZyb21SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1vZGU6KE5T
U3RyaW5nICopbW9kZQogewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZSdW5Mb29wUmVmIHNj
aGVkdWxlUGFpclJ1bkxvb3AgPSBbcnVuTG9vcCBnZXRDRlJ1bkxvb3BdOwotI2Vsc2UKICAgICBO
U1J1bkxvb3AgKnNjaGVkdWxlUGFpclJ1bkxvb3AgPSBydW5Mb29wOwotI2VuZGlmCiAgICAgaWYg
KHJ1bkxvb3AgJiYgbW9kZSkKICAgICAgICAgY29yZShzZWxmKS0+cmVtb3ZlU2NoZWR1bGVQYWly
KFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHNjaGVkdWxlUGFpclJ1bkxvb3AsIChDRlN0cmluZ1JlZilt
b2RlKSk7CiB9Ci0jZW5kaWYKIAogc3RhdGljIEJPT0wgZmluZFN0cmluZyhOU1ZpZXcgPFdlYkRv
Y3VtZW50U2VhcmNoaW5nPiAqc2VhcmNoVmlldywgTlNTdHJpbmcgKnN0cmluZywgV2ViRmluZE9w
dGlvbnMgb3B0aW9ucykKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdQcml2YXRlLmgJKHJldmlzaW9uIDE3NTAwNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDEwICsxOTAsOCBAQCBA
aW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdFZGl0aW5nQWN0aW9uCiAKIEBpbnRlcmZhY2UgV2Vi
VmlldyAoV2ViUGVuZGluZ1B1YmxpYykKIAotI2lmICFUQVJHRVRfT1NfSVBIT05FCiAtICh2b2lk
KXNjaGVkdWxlSW5SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5n
ICopbW9kZTsKIC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5Mb29wOihOU1J1bkxvb3AgKilydW5M
b29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZTsKLSNlbmRpZgogCiAtIChCT09MKWZpbmRTdHJp
bmc6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KFdlYkZpbmRPcHRpb25zKW9wdGlvbnM7CiAt
IChET01SYW5nZSAqKURPTVJhbmdlT2ZTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHJlbGF0aXZl
VG86KERPTVJhbmdlICopcHJldmlvdXNSYW5nZSBvcHRpb25zOihXZWJGaW5kT3B0aW9ucylvcHRp
b25zOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246813</attachid>
            <date>2015-02-18 06:02:55 -0800</date>
            <delta_ts>2015-02-18 07:09:12 -0800</delta_ts>
            <desc>rebased</desc>
            <filename>remove-cocoa-cfnetwork-7.patch</filename>
            <type>text/plain</type>
            <size>91793</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTgwMTQ5KQorKysgU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNTE3LDkgKzUxNyw2IEBACiAjaWYgUExBVEZPUk0o
SU9TKQogCiAjZGVmaW5lIEhBVkVfUkVBRExJTkUgMQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCi0jZGVmaW5lIFdURl9VU0VfQ0ZORVRXT1JLIDEKLSNlbmRpZgogI2RlZmluZSBXVEZfVVNF
X1VJS0lUX0VESVRJTkcgMQogI2RlZmluZSBXVEZfVVNFX1dFQl9USFJFQUQgMQogI2RlZmluZSBX
VEZfVVNFX1FVSUNLX0xPT0sgMQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE4
MDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0yOTI2LDEwICsyOTI2LDYgQEAgX3drSXNPcHRpbWl6ZWRGdWxsc2NyZWVuU3VwcG9ydGVkCiBf
d2tTZXRMYXllckNvbnRlbnRzU2NhbGUKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBV
U0UoQ0ZORVRXT1JLKQotX19aTjdXZWJDb3JlMjBSZXNvdXJjZUhhbmRsZUNsaWVudDIyd2lsbENh
Y2hlUmVzcG9uc2VBc3luY0VQTlNfMTRSZXNvdXJjZUhhbmRsZUVQSzIwX0NGQ2FjaGVkVVJMUmVz
cG9uc2UKLSNlbmRpZgotCiAjaWYgRU5BQkxFKDNEX1JFTkRFUklORykKIF9XZWJDb3JlSGFzM0RS
ZW5kZXJpbmcKICNlbmRpZgpAQCAtMzAzOCwyNCArMzAzNCw4IEBAIF9fWk43V2ViQ29yZTE1UmVz
b3VyY2VSZXF1ZXN0MTNwYXJ0aXRpb24KIF93a0NhY2hlUGFydGl0aW9uS2V5CiAjZW5kaWYKIAot
I2lmIFVTRShDRk5FVFdPUkspCi1fX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMjVjb250aW51
ZVdpbGxDYWNoZVJlc3BvbnNlRVBLMjBfQ0ZDYWNoZWRVUkxSZXNwb25zZQotX19aTjdXZWJDb3Jl
MTRSZXNvdXJjZUhhbmRsZTI4cmVsZWFzZUNvbm5lY3Rpb25Gb3JEb3dubG9hZEV2Ci1fX1pON1dl
YkNvcmUxNVJlc291cmNlUmVxdWVzdEMxRVAxMk5TVVJMUmVxdWVzdAotX19aTjdXZWJDb3JlMTZS
ZXNvdXJjZVJlc3BvbnNlQzFFUDEzTlNVUkxSZXNwb25zZQotX19aTks3V2ViQ29yZTEzUmVzb3Vy
Y2VFcnJvcmN2UDlfX0NGRXJyb3JFdgotX19aTks3V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0MTJj
ZlVSTFJlcXVlc3RFTlNfMjBIVFRQQm9keVVwZGF0ZVBvbGljeUUKLV9fWk5LN1dlYkNvcmUxNlJl
c291cmNlUmVzcG9uc2UxM2NmVVJMUmVzcG9uc2VFdgotX3drQ29weUNyZWRlbnRpYWxGcm9tQ0ZQ
ZXJzaXN0ZW50U3RvcmFnZQotX3drR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlCi1fd2tTZXRD
RlVSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYKLV93a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lv
bgotI2VuZGlmCi0KLSNpZiAhVVNFKENGTkVUV09SSykKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VI
YW5kbGUyNWNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2VFUDE5TlNDYWNoZWRVUkxSZXNwb25zZQog
X19aTjdXZWJDb3JlMzdzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5RVAxNU5T
VVJMQ29ubmVjdGlvblAxMk5TVVJMUmVxdWVzdFAxM05TVVJMUmVzcG9uc2UKLSNlbmRpZgogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKIF9fWk43V2ViQ29yZTIxVXNlckNvbnRlbnRD
b250cm9sbGVyMjBhZGRVc2VyQ29udGVudEZpbHRlckVSS04zV1RGNlN0cmluZ0VTNF8KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAxODAxNDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNTUsNiArNTUsMTAgQEAKICNpbmNsdWRlICJRdWlja0xvb2suaCIKICNlbmRpZgogCisjaWYg
UExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFpci5oPgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OwpA
QCAtMTQyLDcgKzE0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgICAg
IGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJp
ZGVFbmNvZGluZzsgfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgICAgICB2b2lkIHNjaGVkdWxlKFNjaGVkdWxlUGFpciYpOwogICAgICAgICB2b2lkIHVuc2No
ZWR1bGUoU2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTgwMTQ5KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjI5LDcgKzYyOSw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnJlY2VpdmVkQ2FuY2VsbGF0aW8KICAgICBjYW5jZWwo
KTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKIAogdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQogewpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDE4MDE0OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzUsNyArMTM1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU3dpdGNoVG9TdWJzdGl0dXRl
UmVzb3VyY2UoKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAg
ICB2b2lkIHNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAgICAgdm9pZCB1bnNjaGVkdWxl
KFdURjo6U2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKQEAgLTE1NywxMiArMTU3LDkgQEAgcHJvdGVj
dGVkOgogCiAgICAgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKCkgeyByZXR1
cm4gbV9vcHRpb25zOyB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUksp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3
aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBv
dmVycmlkZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQ0ZORVRXT1JLKQot
ICAgIHZpcnR1YWwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNv
dXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwotI2VuZGlmCiAK
ICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IG1faGFuZGxlOwogICAgIFJlZlB0cjxGcmFtZT4g
bV9mcmFtZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5o
CShyZXZpc2lvbiAxODAxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsMTIgKzczLDkgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlICp3aWxsQ2FjaGVSZXNwb25z
ZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBvdmVycmlkZTsKICNlbmRp
ZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwgQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwotI2VuZGlmCiAKICNpZiBVU0UoTkVUV09S
S19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRGF0YUFy
cmF5KCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAJKHJldmlzaW9uIDE4MDE0OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw4ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFBM
QVRGT1JNKE1BQykKLQogc3RhdGljIHZvaWQgc2NoZWR1bGVBbGwoY29uc3QgUmVzb3VyY2VMb2Fk
ZXJNYXAmIGxvYWRlcnMsIFNjaGVkdWxlUGFpciYgcGFpcikKIHsKICAgICBWZWN0b3I8UmVmUHRy
PFJlc291cmNlTG9hZGVyPj4gbG9hZGVyc0NvcHk7CkBAIC02OSw2ICs2Nyw0IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OnVuc2NoZWR1bGUoU2NoZWR1bGUKICAgICB1bnNjaGVkdWxlQWxsKG1fbXVs
dGlwYXJ0U3VicmVzb3VyY2VMb2FkZXJzLCBwYWlyKTsKIH0KIAotI2VuZGlmCi0KIH0gLy8gbmFt
ZXNwYWNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2Fk
ZXJNYWMubW0JKHJldmlzaW9uIDE4MDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMv
UmVzb3VyY2VMb2FkZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwLDE5ICs0MCw2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLUNGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYgUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFu
ZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKLXsKLSAgICBpZiAo
bV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzKCkgPT0gRG9Ob3RTZW5kQ2FsbGJhY2tzKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIFJldGFpblB0cjxOU0NhY2hlZFVSTFJlc3BvbnNlPiBuc0Nh
Y2hlZFJlc3BvbnNlID0gYWRvcHROUyhbW05TQ2FjaGVkVVJMUmVzcG9uc2UgYWxsb2NdIF9pbml0
V2l0aENGQ2FjaGVkVVJMUmVzcG9uc2U6Y2FjaGVkUmVzcG9uc2VdKTsKLSAgICByZXR1cm4gW2Zy
YW1lTG9hZGVyKCktPmNsaWVudCgpLndpbGxDYWNoZVJlc3BvbnNlKGRvY3VtZW50TG9hZGVyKCks
IGlkZW50aWZpZXIoKSwgbnNDYWNoZWRSZXNwb25zZS5nZXQoKSkgX0NGQ2FjaGVkVVJMUmVzcG9u
c2VdOwotfQotCi0jZWxzZQotCiBOU0NhY2hlZFVSTFJlc3BvbnNlKiBSZXNvdXJjZUxvYWRlcjo6
d2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlKiBy
ZXNwb25zZSkKIHsKICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzKCkgPT0gRG9O
b3RTZW5kQ2FsbGJhY2tzKQpAQCAtNjAsOCArNDcsNiBAQCBOU0NhY2hlZFVSTFJlc3BvbnNlKiBS
ZXNvdXJjZUxvYWRlcjo6d2lsCiAgICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLndp
bGxDYWNoZVJlc3BvbnNlKGRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIoKSwgcmVzcG9uc2Up
OwogfQogCi0jZW5kaWYKLQogI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykK
IAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmIGRh
dGFBcnJheSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkocmV2aXNpb24gMTgwMTQ5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTY3
OCwxNSArMTY3OCw5IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoK
IAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9y
UmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKE5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UqIG5zQ2hhbGxlbmdlKQogewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgVU5VU0VEX1BB
UkFNKG5zQ2hhbGxlbmdlKTsKLSAgICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzE1Nzk5ODQ0
PgotICAgIHJldHVybiBmYWxzZTsKLSNlbHNlCiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
Y2hhbGxlbmdlKG5zQ2hhbGxlbmdlKTsKIAogICAgIHJldHVybiBwbGF5ZXIoKS0+c2hvdWxkV2Fp
dEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOwotI2VuZGlm
CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGlkQ2FuY2Vs
TG9hZGluZ1JlcXVlc3QoQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QqIGF2UmVxdWVzdCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlSU9TLm1tCShyZXZpc2lvbiAxODAxNDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNjMsMTMgKzYzLDYgQEAgV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrQ0ZVUkxSZXF1ZXN0
QWxsbwogV0VCQ09SRV9FWFBPUlQgQ0ZBcnJheVJlZiAoKndrQ29weU5TVVJMUmVzcG9uc2VDZXJ0
aWZpY2F0ZUNoYWluKShOU1VSTFJlc3BvbnNlKik7CiBXRUJDT1JFX0VYUE9SVCBDRlN0cmluZ0Vu
Y29kaW5nICgqd2tHZXRXZWJEZWZhdWx0Q0ZTdHJpbmdFbmNvZGluZykodm9pZCk7CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotV0VCQ09SRV9FWFBPUlQgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiAoKndr
R2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKSgpOwotV0VCQ09SRV9FWFBPUlQgV0tDRlVSTENy
ZWRlbnRpYWxSZWYgKCp3a0NvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UpKENG
VVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSk7Ci1XRUJDT1JFX0VYUE9SVCB2
b2lkICgqd2tTZXRDRlVSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYpKENGTXV0YWJsZVVSTFJl
cXVlc3RSZWYsIGJvb2wpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0UmVxdWVzdFN0b3Jh
Z2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBDRk11dGFibGVVUkxSZXF1ZXN0UmVm
KTsKLSNlbmRpZgotCiAjaWYgIVBMQVRGT1JNKElPU19TSU1VTEFUT1IpCiBXRUJDT1JFX0VYUE9S
VCBDR0NvbnRleHRSZWYgKCp3a0lPU3VyZmFjZUNvbnRleHRDcmVhdGUpKElPU3VyZmFjZVJlZiBz
dXJmYWNlLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCBDR0NvbG9yU3BhY2VSZWYg
Y29sb3JTcGFjZSk7CiBXRUJDT1JFX0VYUE9SVCBDR0ltYWdlUmVmICgqd2tJT1N1cmZhY2VDb250
ZXh0Q3JlYXRlSW1hZ2UpKENHQ29udGV4dFJlZiBjb250ZXh0KTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5oCShyZXZpc2lvbiAxODAx
NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQuaAko
d29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgV2ViVGhy
ZWFkU2hvdWxkWWllbGQoCiBzdGF0aWMgaW5saW5lIHZvaWQgV2ViVGhyZWFkU2V0U2hvdWxkWWll
bGQoKSB7IHdlYlRocmVhZFNob3VsZFlpZWxkID0gdHJ1ZTsgfQogCiBXRUJDT1JFX0VYUE9SVCBD
RlJ1bkxvb3BSZWYgV2ViVGhyZWFkUnVuTG9vcCh2b2lkKTsKLU5TUnVuTG9vcCogV2ViVGhyZWFk
TlNSdW5Mb29wKHZvaWQpOworV0VCQ09SRV9FWFBPUlQgTlNSdW5Mb29wKiBXZWJUaHJlYWROU1J1
bkxvb3Aodm9pZCk7CiBXZWJUaHJlYWRDb250ZXh0ICpXZWJUaHJlYWRDdXJyZW50Q29udGV4dCh2
b2lkKTsKIGJvb2wgV2ViVGhyZWFkQ29udGV4dElzQ3VycmVudCh2b2lkKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oCShyZXZpc2lvbiAxODAxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODEsMTIgKzI4MSw2IEBA
IGV4dGVybiB2b2lkICgqd2tTZXRDRlVSTFJlc3BvbnNlTUlNRVR5cGUKIAogZXh0ZXJuIHZvaWQo
KndrRGVzdHJveVJlbmRlcmluZ1Jlc291cmNlcykodm9pZCk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotZXh0ZXJuIENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgKCp3a0dldERlZmF1bHRIVFRQQ29va2ll
U3RvcmFnZSkoKTsKLWV4dGVybiBXS0NGVVJMQ3JlZGVudGlhbFJlZiAoKndrQ29weUNyZWRlbnRp
YWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFnZSkoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVj
dGlvblNwYWNlKTsKLWV4dGVybiB2b2lkICgqd2tTZXRDRlVSTFJlcXVlc3RTaG91bGRDb250ZW50
U25pZmYpKENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIGJvb2wpOwotZXh0ZXJuIHZvaWQgKCp3a1Nl
dFJlcXVlc3RTdG9yYWdlU2Vzc2lvbikoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiwgQ0ZNdXRhYmxl
VVJMUmVxdWVzdFJlZik7Ci0jZW5kaWYKICNpZiAhUExBVEZPUk0oSU9TKQogZXh0ZXJuIHZvaWQg
KCp3a1NldE1ldGFkYXRhVVJMKShOU1N0cmluZyAqdXJsU3RyaW5nLCBOU1N0cmluZyAqcmVmZXJy
ZXIsIE5TU3RyaW5nICpwYXRoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9uIDE4
MDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MywxMyArOTMsNiBAQCB2b2lkICgqd2tTZXRDT05O
RUNUUHJveHlGb3JTdHJlYW0pKENGUmVhCiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3Jp
emF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9y
aXphdGlvblN0cmluZyk7CiBDRkhUVFBNZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVz
cG9uc2UpKENGUmVhZFN0cmVhbVJlZiwgQ0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVm
IHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKIAotI2lmIFVTRShDRk5FVFdPUksp
Ci1DRkhUVFBDb29raWVTdG9yYWdlUmVmICgqd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2Up
KCk7Ci1XS0NGVVJMQ3JlZGVudGlhbFJlZiAoKndrQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0
ZW50U3RvcmFnZSkoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlKTsKLXZv
aWQgKCp3a1NldENGVVJMUmVxdWVzdFNob3VsZENvbnRlbnRTbmlmZikoQ0ZNdXRhYmxlVVJMUmVx
dWVzdFJlZiwgYm9vbCk7Ci12b2lkICgqd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJM
U3RvcmFnZVNlc3Npb25SZWYsIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYpOwotI2VuZGlmCi0KIHZv
aWQqIHdrR2V0SHlwaGVuYXRpb25Mb2NhdGlvbkJlZm9yZUluZGV4OwogCiBDR0NvbnRleHRSZWYg
KCp3a0lPU3VyZmFjZUNvbnRleHRDcmVhdGUpKElPU3VyZmFjZVJlZiBzdXJmYWNlLCB1bnNpZ25l
ZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVj
dGlvblNwYWNlQmFzZS5jcHAJKHJldmlzaW9uIDE4MDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgogCi0jaWYgVVNF
KENGTkVUV09SSykgJiYgIVBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFByb3Rl
Y3Rpb25TcGFjZVByaXYuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCShyZXZp
c2lvbiAxODAxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rp
b25TcGFjZSYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdP
UkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbigpIGNvbnN0OwogICAgIGlkIG1ha2VE
ZWxlZ2F0ZShib29sKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAjaWYgVVNFKENGTkVU
V09SSykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2Uo
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkgJiYg
IVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKik7CiAj
ZW5kaWYKIApAQCAtMjMzLDEwICsyMzMsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIENGU3RyaW5nUmVmIHN5bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2RlKCk7CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENGTkVUV09SSykKLSAgICBzdGF0aWMgQ0ZNdXRh
YmxlRGljdGlvbmFyeVJlZiBjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKLSNlbmRpZgotCiAgICAgdHlwZWRlZiBQYXNzUmVmUHRyPFJl
c291cmNlSGFuZGxlPiAoKkJ1aWx0aW5Db25zdHJ1Y3RvcikoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KTsKICAgICBzdGF0aWMgdm9p
ZCByZWdpc3RlckJ1aWx0aW5Db25zdHJ1Y3Rvcihjb25zdCBBdG9taWNTdHJpbmcmIHByb3RvY29s
LCBCdWlsdGluQ29uc3RydWN0b3IpOwogCkBAIC0yNzEsMTEgKzI2NywxMSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0
b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IsIENGRGlj
dGlvbmFyeVJlZiBjbGllbnRQcm9wZXJ0aWVzKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFD
KSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBjcmVhdGVO
U1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IpOwogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShJT1MpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKElP
UykKICAgICB2b2lkIGNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxp
bmdCZWhhdmlvciwgTlNEaWN0aW9uYXJ5ICpjb25uZWN0aW9uUHJvcGVydGllcyk7CiAjZW5kaWYK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHJldmlzaW9uIDE4MDE0OSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDAsMTEgKzE0MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVz
b3VyY2VSZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZTsKICNlbmRp
ZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICAgICAgUmV0YWluUHRyPE5TVVJMQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwog
ICAgICAgICBSZXRhaW5QdHI8aWQ+IG1fZGVsZWdhdGU7Ci0jZW5kaWYKLSNpZiBQTEFURk9STShD
T0NPQSkKICAgICAgICAgYm9vbCBtX3N0YXJ0V2hlblNjaGVkdWxlZDsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCShyZXZp
c2lvbiAxODAxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhl
bnRpY2F0aW9uQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MywxMyArNTMsOCBAQCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DCiAKIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2ZDaGFs
bGVuZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhlbnRpY2F0aW9uQ2xpZW50KQotI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKFByb3RlY3Rpb25TcGFj
ZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2ZDaGFsbGVuZ2UpKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVkZW50aWFsKENGVVJMQXV0aENoYWxs
ZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbChjZkNoYWxsZW5nZSkpLAotI2Vsc2UKICAgICA6IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3Rl
Y3Rpb25TcGFjZShjZkNoYWxsZW5nZSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvcG9zZWRDcmVkZW50aWFsKGNmQ2hhbGxl
bmdlKSksCi0jZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlVSTEF1
dGhDaGFsbGVuZ2VHZXRQcmV2aW91c0ZhaWx1cmVDb3VudChjZkNoYWxsZW5nZSksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKENGVVJMUmVzcG9uc2VSZWYpQ0ZVUkxBdXRoQ2hh
bGxlbmdlR2V0RmFpbHVyZVJlc3BvbnNlKGNmQ2hhbGxlbmdlKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRFcnJvcihjZkNoYWxsZW5nZSkp
CkBAIC05MywxNCArODgsMTAgQEAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNyZWF0ZUNGKGNvbnN0
IEF1dAogewogICAgIC8vIEZJWE1FOiBXaHkgbm90IGNhY2hlIENGVVJMQXV0aENoYWxsZW5nZVJl
ZiBpbiBtX2NmQ2hhbGxlbmdlPyBGb3VuZGF0aW9uIGNvdW50ZXJwYXJ0IGRvZXMgdGhhdC4KIAot
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiByZXN1bHQgPSBD
RlVSTEF1dGhDaGFsbGVuZ2VDcmVhdGUoMCwgY29yZUNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uo
KS5jZlNwYWNlKCksIGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkuY2ZDcmVkZW50
aWFsKCksCi0jZWxzZQogICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRp
YWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkp
KTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY+IHByb3RlY3Rpb25TcGFj
ZSA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSkpOwog
CiAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9IENGVVJMQXV0aENoYWxsZW5nZUNy
ZWF0ZSgwLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCksCi0jZW5kaWYK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlQ2hhbGxlbmdlLnBy
ZXZpb3VzRmFpbHVyZUNvdW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29yZUNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5jZlVSTFJlc3BvbnNlKCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUNoYWxsZW5nZS5lcnJv
cigpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFy
Q0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQ29va2llSmFyQ0ZOZXQuY3BwCShyZXZpc2lvbiAxODAxNDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oV0lOKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEIDw9IDEwOTApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEIDwgODAwMDApCisjaWYgUExBVEZPUk0oV0lOKQogZW51bSB7CiAgICAgQ0ZI
VFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERv
bWFpbiA9IDMKIH07CkBAIC0xMDMsMTMgKzEwMyw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJh
eVJlZj4gY29weUNvb2tpZXMKIHsKICAgICBib29sIHNlY3VyZSA9IHVybC5wcm90b2NvbElzKCJo
dHRwcyIpOwogCi0jaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gODAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwKQotICAgIHJldHVybiBhZG9wdENGKF9DRkhUVFBDb29r
aWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkxXaXRoTWFpbkRvY3VtZW50VVJMKHNlc3Npb24uY29v
a2llU3RvcmFnZSgpLmdldCgpLCB1cmwuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgZmlyc3RQYXJ0eS5j
cmVhdGVDRlVSTCgpLmdldCgpLCBzZWN1cmUpKTsKLSNlbHNlCiAgICAgLy8gX0NGSFRUUENvb2tp
ZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTFdpdGhNYWluRG9jdW1lbnRVUkwgaXMgbm90IGF2YWls
YWJsZSBvbiBvdGhlciBwbGF0Zm9ybXMuCiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHkpOwog
ICAgIHJldHVybiBhZG9wdENGKENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTChz
ZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsLmNyZWF0ZUNGVVJMKCkuZ2V0KCksIHNl
Y3VyZSkpOwotI2VuZGlmCiB9CiAKIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQu
Y3BwCShyZXZpc2lvbiAxODAxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw0MiAr
MzMsMTggQEAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgiCi0jZWxpZiBQTEFURk9STShXSU4pCisjaWYgUExBVEZPUk0oV0lOKQogI2lu
Y2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENyZWRl
bnRpYWxTdG9yYWdlLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDcmVkZW50
aWFsIENyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJv
dGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbENGID0gYWRvcHRDRih3
a0NvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UocHJvdGVjdGlvblNwYWNlLmNm
U3BhY2UoKSkpOwotICAgIHJldHVybiBDcmVkZW50aWFsKGNyZWRlbnRpYWxDRi5nZXQoKSk7Ci0j
ZWxzZQogICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gcHJvdGVjdGlvblNw
YWNlQ0YgPSBhZG9wdENGKGNyZWF0ZUNGKHByb3RlY3Rpb25TcGFjZSkpOwogICAgIFJldGFpblB0
cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWxDRiA9IGFkb3B0Q0Yod2tDb3B5Q3JlZGVu
dGlhbEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKHByb3RlY3Rpb25TcGFjZUNGLmdldCgpKSk7CiAg
ICAgcmV0dXJuIGNvcmUoY3JlZGVudGlhbENGLmdldCgpKTsKLSNlbmRpZgotfQotCi0jaWYgUExB
VEZPUk0oSU9TKQotdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6c2F2ZVRvUGVyc2lzdGVudFN0b3Jh
Z2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRp
YWwmIGNyZWRlbnRpYWwpCi17Ci0gICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VS
ZWY+IHN0b3JhZ2VDRiA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZUNyZWF0ZSgwKSk7
Ci0KLSAgICBpZiAoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpID09IENyZWRlbnRpYWxQZXJzaXN0
ZW5jZU5vbmUpIHsKLSAgICAgICAgQ3JlZGVudGlhbCBzZXNzaW9uQ3JlZGVudGlhbChjcmVkZW50
aWFsLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsKLSAgICAgICAgQ0ZVUkxDcmVk
ZW50aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0b3Jh
Z2VDRi5nZXQoKSwgc2Vzc2lvbkNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIHByb3RlY3Rpb25T
cGFjZS5jZlNwYWNlKCkpOwotICAgIH0gZWxzZQotICAgICAgICBDRlVSTENyZWRlbnRpYWxTdG9y
YWdlU2V0RGVmYXVsdENyZWRlbnRpYWxGb3JQcm90ZWN0aW9uU3BhY2Uoc3RvcmFnZUNGLmdldCgp
LCBjcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKTsK
IH0KLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCShyZXZpc2lv
biAxODAxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
RXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTYgKzYxLDExIEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBDRkVycm9yUmVmIGNmRXJyb3IoKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCBvcGVyYXRvciBDRkVycm9yUmVmKCkgY29uc3Q7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
I2lmIFBMQVRGT1JNKFdJTikKKyNpZiBVU0UoQ0ZORVRXT1JLKSAmJiBQTEFURk9STShXSU4pCiAg
ICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29u
c3QgU3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9u
LCBDRkRhdGFSZWYgY2VydGlmaWNhdGUpOwogICAgIFBDQ0VSVF9DT05URVhUIGNlcnRpZmljYXRl
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZShDRkRhdGFSZWYpOwogI2VuZGlmCi0g
ICAgUmVzb3VyY2VFcnJvcihDRlN0cmVhbUVycm9yIGVycm9yKTsKLSAgICBDRlN0cmVhbUVycm9y
IGNmU3RyZWFtRXJyb3IoKSBjb25zdDsKLSAgICBvcGVyYXRvciBDRlN0cmVhbUVycm9yKCkgY29u
c3Q7Ci0jZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNPUkVfRVhQT1JUIFJl
c291cmNlRXJyb3IoTlNFcnJvciAqKTsKQEAgLTg4LDkgKzgzLDYgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fZGF0YUlzVXBUb0RhdGU7CiAjaWYgVVNFKENGTkVUV09SSykKICAgICBtdXRhYmxlIFJl
dGFpblB0cjxDRkVycm9yUmVmPiBtX3BsYXRmb3JtRXJyb3I7Ci0jaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNFcnJvcj4gbV9wbGF0Zm9ybU5TRXJyb3I7Ci0jZW5k
aWYKICNpZiBQTEFURk9STShXSU4pCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9jZXJ0aWZp
Y2F0ZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCShyZXZpc2lvbiAxODAxNDkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZO
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxNiArNTIsNiBAQAogI2luY2x1ZGUgPHd0Zi90
ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFBMQVRG
T1JNKENPQ09BKQotI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuaCIKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
LmgiCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbmNsdWRlICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIK
LSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPgotI2luY2x1ZGUgPENG
TmV0d29yay9DRlVSTFJlcXVlc3RQcml2Lmg+Ci0jZW5kaWYKLSNlbmRpZgotCiAjaWYgUExBVEZP
Uk0oV0lOKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRl
cmZhY2UuaD4KICNpbmNsdWRlIDxwcm9jZXNzLmg+CkBAIC0yMTEsMTQgKzIwMSw3IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGkKICAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShwcm9wZXJ0aWVzRGljdGlvbmFyeS5nZXQoKSwga0NGVVJMQ29ubmVjdGlvblNvY2tldFN0
cmVhbVByb3BlcnRpZXMsIHN0cmVhbVByb3BlcnRpZXMpOwogICAgIENGUmVsZWFzZShzdHJlYW1Q
cm9wZXJ0aWVzKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmIChjbGllbnQoKSAmJiBj
bGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpCi0gICAgICAgIGQtPm1fY29ubmVjdGlvbkRl
bGVnYXRlID0gYWRvcHRSZWYobmV3IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUodGhpcykpOwotICAgIGVsc2UKLSAgICAgICAgZC0+bV9jb25u
ZWN0aW9uRGVsZWdhdGUgPSBhZG9wdFJlZihuZXcgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlKHRoaXMpKTsKLSNlbHNlCiAgICAgZC0+bV9jb25uZWN0aW9u
RGVsZWdhdGUgPSBhZG9wdFJlZihuZXcgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlKHRoaXMpKTsKLSNlbmRpZgogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVn
YXRlLT5zZXR1cFJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAKICAgICBDRlVSTENvbm5lY3Rpb25D
bGllbnRfVjYgY2xpZW50ID0gZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUtPm1ha2VDb25uZWN0aW9u
Q2xpZW50KCk7CkBAIC0zMzYsMTIgKzMxOSw5IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJl
Y2VpdmVBdXRoZW50aWMKIAogICAgIGlmICghZC0+bV91c2VyLmlzTnVsbCgpICYmICFkLT5tX3Bh
c3MuaXNOdWxsKCkpIHsKICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZD
cmVkZW50aWFsID0gYWRvcHRDRihDRlVSTENyZWRlbnRpYWxDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgZC0+bV91c2VyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGQtPm1fcGFzcy5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCAwLCBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSk7Ci0j
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IENyZWRl
bnRpYWwoY2ZDcmVkZW50aWFsLmdldCgpKTsKLSNlbHNlCisKICAgICAgICAgQ3JlZGVudGlhbCBj
cmVkZW50aWFsID0gY29yZShjZkNyZWRlbnRpYWwuZ2V0KCkpOwotI2VuZGlmCi0gICAgICAgIAor
CiAgICAgICAgIFVSTCB1cmxUb1N0b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVS
ZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQogICAgICAgICAgICAgdXJsVG9TdG9y
ZSA9IGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKTsKQEAgLTM3MCwxMiArMzUwLDgg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpYwogICAgICAgICAgICAg
ICAgICAgICAvLyBTdG9yZSB0aGUgY3JlZGVudGlhbCBiYWNrLCBwb3NzaWJseSBhZGRpbmcgaXQg
YXMgYSBkZWZhdWx0IGZvciB0aGlzIGRpcmVjdG9yeS4KICAgICAgICAgICAgICAgICAgICAgQ3Jl
ZGVudGlhbFN0b3JhZ2U6OnNldChjcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNl
KCksIGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKSk7CiAgICAgICAgICAgICAgICAg
fQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVz
ZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjcmVkZW50aWFsLmNmQ3JlZGVudGlh
bCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2Vsc2UKICAgICAgICAg
ICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9w
dENGKGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKICAgICAgICAgICAgICAgICBDRlVSTENvbm5lY3Rp
b25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgp
LCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2VuZGlmCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00MjUsMjAgKzQwMSwx
MiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoCiAgICAgICAgIENy
ZWRlbnRpYWxTdG9yYWdlOjpzZXQod2ViQ3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZSgpLCB1cmxUb1N0b3JlKTsKIAogICAgICAgICBpZiAoZC0+bV9jb25uZWN0aW9uKSB7Ci0j
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50
aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgd2ViQ3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwg
Y2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbHNlCiAgICAgICAgICAgICBS
ZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0
ZUNGKHdlYkNyZWRlbnRpYWwpKTsKICAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRl
bnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5n
ZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZW5kaWYKICAgICAgICAgfQogICAgIH0gZWxz
ZSBpZiAoZC0+bV9jb25uZWN0aW9uKSB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIENG
VVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjcmVkZW50
aWFsLmNmQ3JlZGVudGlhbCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwot
I2Vsc2UKICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFs
ID0gYWRvcHRDRihjcmVhdGVDRihjcmVkZW50aWFsKSk7CiAgICAgICAgIENGVVJMQ29ubmVjdGlv
blVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCks
IGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZW5kaWYKICAgICB9CiAKICAg
ICBjbGVhckF1dGhlbnRpY2F0aW9uKCk7CkBAIC01NzksMzAgKzU0Nyw2IEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG8KICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uUmVz
dW1lKGQtPm1fY29ubmVjdGlvbi5nZXQoKSk7CiB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLXZv
aWQgUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKLXsKLSAgICBD
RlJ1bkxvb3BSZWYgcnVuTG9vcCA9IHBhaXIucnVuTG9vcCgpOwotICAgIGlmICghcnVuTG9vcCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0ZVUkxDb25uZWN0aW9uU2NoZWR1bGVXaXRoUnVuTG9v
cChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIHJ1bkxvb3AsIHBhaXIubW9kZSgpKTsKLSAgICBpZiAo
ZC0+bV9zdGFydFdoZW5TY2hlZHVsZWQpIHsKLSAgICAgICAgQ0ZVUkxDb25uZWN0aW9uU3RhcnQo
ZC0+bV9jb25uZWN0aW9uLmdldCgpKTsKLSAgICAgICAgZC0+bV9zdGFydFdoZW5TY2hlZHVsZWQg
PSBmYWxzZTsKLSAgICB9Ci19Ci0KLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnVuc2NoZWR1bGUoU2No
ZWR1bGVQYWlyJiBwYWlyKQotewotICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gcGFpci5ydW5M
b29wKCk7Ci0gICAgaWYgKCFydW5Mb29wKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlVSTENv
bm5lY3Rpb25VbnNjaGVkdWxlRnJvbVJ1bkxvb3AoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBydW5M
b29wLCBwYWlyLm1vZGUoKSk7Ci19Ci0jZW5kaWYKLQogY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBS
ZXNvdXJjZUhhbmRsZTo6Y3VycmVudFJlcXVlc3QoKSBjb25zdAogewogICAgIHJldHVybiBkLT5t
X2N1cnJlbnRSZXF1ZXN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAxODAxNDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMCArMzIsNiBAQAogI2luY2x1ZGUgIk5ldHdv
cmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKIAotI2lmIFBMQVRG
T1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRpZgot
CiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJL
aXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAxODAx
NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVz
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCwxMiArNjQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIH0KICAgICAgICAgCiAjaWYgVVNFKENGTkVUV09SSykKLSNpZiBQTEFURk9STShD
T0NPQSkKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VSZXF1ZXN0KE5TVVJMUmVxdWVz
dCAqKTsKLSAgICAgICAgdm9pZCB1cGRhdGVOU1VSTFJlcXVlc3QoKTsKLSAgICAgICAgdm9pZCBj
bGVhck9yVXBkYXRlTlNVUkxSZXF1ZXN0KCk7Ci0jZW5kaWYKLQogICAgICAgICBSZXNvdXJjZVJl
cXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdCkKICAgICAgICAgICAgIDogUmVzb3VyY2VS
ZXF1ZXN0QmFzZSgpCiAgICAgICAgICAgICAsIG1fY2ZSZXF1ZXN0KGNmUmVxdWVzdCkKQEAgLTg5
LDExICs4Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhcHBseVdlYkFy
Y2hpdmVIYWNrRm9yTWFpbCgpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaWYgVVNF
KENGTkVUV09SSykKLSAgICAgICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9odHRwQm9keSB8fCBtX2NmUmVxdWVzdDsgfQotI2Vsc2UKICAgICAg
ICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9o
dHRwQm9keSB8fCBtX25zUmVxdWVzdDsgfQotI2VuZGlmCiAgICAgICAgIFdFQkNPUkVfRVhQT1JU
IE5TVVJMUmVxdWVzdCAqbnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5KSBjb25zdDsK
ICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMTgwMTQ5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDkgKzUzLDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9pc051bGwgPSAh
Y2ZSZXNwb25zZTsKICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgV0VCQ09SRV9FWFBP
UlQgUmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlICopOwotI2VuZGlmCiAjZWxzZQogICAg
IFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkKICAgICAgICAgOiBt
X2luaXRMZXZlbChVbmluaXRpYWxpemVkKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAko
cmV2aXNpb24gMTgwMTQ5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsNiBA
QAogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlc3BvbnNlUHJpdi5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRpZgotCiAvLyBXZSB3b3VsZCBsaWtlIGEgYmV0dGVyIHZh
bHVlIGZvciBhIG1heGltdW0gdGltZV90LAogLy8gYnV0IHRoZXJlIGlzIG5vIHdheSB0byBkbyB0
aGF0IGluIEMgd2l0aCBhbnkgY2VydGFpbnR5LgogLy8gSU5UX01BWCBzaG91bGQgd29yayB3ZWxs
IGVub3VnaCBmb3Igb3VyIHB1cnBvc2VzLgpAQCAtNTIsMTMgKzQ4LDkgQEAgc3RhdGljIGNvbnN0
IGludCBudW1Db21tb25IZWFkZXJGaWVsZHMgPQogQ0ZVUkxSZXNwb25zZVJlZiBSZXNvdXJjZVJl
c3BvbnNlOjpjZlVSTFJlc3BvbnNlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2ZSZXNwb25zZSAm
JiAhbV9pc051bGwpIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgbnNVUkxSZXNwb25z
ZSgpOwotI2Vsc2UKICAgICAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBtX3VybC5jcmVh
dGVDRlVSTCgpOwogICAgICAgICAvLyBGSVhNRTogVGhpcyBjcmVhdGVzIGEgdmVyeSBpbmNvbXBs
ZXRlIENGVVJMUmVzcG9uc2UsIHdoaWNoIGRvZXMgbm90IGV2ZW4gaGF2ZSBhIHN0YXR1cyBjb2Rl
LgogICAgICAgICBtX2NmUmVzcG9uc2UgPSBhZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwg
dXJsLmdldCgpLCBtX21pbWVUeXBlLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG1f
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBtX3RleHRFbmNvZGluZ05hbWUuc3RyaW5nKCkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOwotI2VuZGlmCiAg
ICAgfQogCiAgICAgcmV0dXJuIG1fY2ZSZXNwb25zZS5nZXQoKTsKQEAgLTExOSw5ICsxMTEsNiBA
QCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoCiAKIENlcnRpZmljYXRl
SW5mbyBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpIGNvbnN0CiB7
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgcmV0dXJuIENlcnRpZmljYXRlSW5mbyhhZG9wdENG
KHdrQ29weU5TVVJMUmVzcG9uc2VDZXJ0aWZpY2F0ZUNoYWluKG5zVVJMUmVzcG9uc2UoKSkpKTsK
LSNlbmRpZgogICAgIHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxD
b2NvYS5oCShyZXZpc2lvbiAxODAxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAs
NiBAQAogI2luY2x1ZGUgPFNlY3VyaXR5L1NlY0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJM
Q3JlZGVudGlhbCogQ0ZVUkxDcmVkZW50aWFsUmVmOwotI2VuZGlmCi0KIE9CSkNfQ0xBU1MgTlNV
UkxDcmVkZW50aWFsOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MiwxOCArNDgsMTIgQEAg
cHVibGljOgogCiAgICAgQ3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFsJiwgQ3JlZGVudGlhbFBl
cnNpc3RlbmNlKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgZXhwbGljaXQgQ3JlZGVudGlh
bChDRlVSTENyZWRlbnRpYWxSZWYpOwotI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgQ3JlZGVudGlhbChOU1VSTENyZWRlbnRpYWwgKik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGlzRW1wdHkoKSBjb25zdDsKIAogICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3Jt
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbnNDcmVkZW50aWFsICYmIGVuY29kaW5nUmVxdWlyZXNQ
bGF0Zm9ybURhdGEobV9uc0NyZWRlbnRpYWwuZ2V0KCkpOyB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotICAgIENGVVJMQ3JlZGVudGlhbFJlZiBjZkNyZWRlbnRpYWwoKSBjb25zdDsKLSNlbmRpZgog
ICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMQ3JlZGVudGlhbCAqbnNDcmVkZW50aWFsKCkgY29uc3Q7
CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQ3JlZGVudGlhbCYsIGNv
bnN0IENyZWRlbnRpYWwmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvQ3JlZGVudGlhbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCShyZXZpc2lvbiAxODAxNDkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsMTMgKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiQ3JlZGVudGlhbENvY29hLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQGlu
dGVyZmFjZSBOU1VSTENyZWRlbnRpYWwgKFdlYkRldGFpbHMpCi0tIChpZClfaW5pdFdpdGhDRlVS
TENyZWRlbnRpYWw6KENGVVJMQ3JlZGVudGlhbFJlZiljcmVkZW50aWFsOwotLSAoQ0ZVUkxDcmVk
ZW50aWFsUmVmKSBfQ0ZVUkxDcmVkZW50aWFsOwotQGVuZAotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHRvTlNVUkxDcmVk
ZW50aWFsUGVyc2lzdGVuY2UoQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQpAQCAt
ODQsMjYgKzc3LDEyIEBAIENyZWRlbnRpYWw6OkNyZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYK
ICAgICB9CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChD
RlVSTENyZWRlbnRpYWxSZWYgY3JlZGVudGlhbCkKLSAgICA6IENyZWRlbnRpYWwoYWRvcHROUyhb
W05TVVJMQ3JlZGVudGlhbCBhbGxvY10gX2luaXRXaXRoQ0ZVUkxDcmVkZW50aWFsOmNyZWRlbnRp
YWxdKS5nZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBDcmVkZW50aWFsOjpDcmVkZW50aWFsKE5TVVJM
Q3JlZGVudGlhbCAqY3JlZGVudGlhbCkKICAgICA6IENyZWRlbnRpYWxCYXNlKGNyZWRlbnRpYWwu
dXNlciwgY3JlZGVudGlhbC5wYXNzd29yZCwgdG9DcmVkZW50aWFsUGVyc2lzdGVuY2UoY3JlZGVu
dGlhbC5wZXJzaXN0ZW5jZSkpCiAgICAgLCBtX25zQ3JlZGVudGlhbChjcmVkZW50aWFsKQogewog
fQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJMQ3JlZGVudGlhbFJlZiBDcmVkZW50aWFsOjpj
ZkNyZWRlbnRpYWwoKSBjb25zdAotewotICAgIHJldHVybiBbbnNDcmVkZW50aWFsKCkgX0NGVVJM
Q3JlZGVudGlhbF07Ci19Ci0jZW5kaWYKLQogTlNVUkxDcmVkZW50aWFsICpDcmVkZW50aWFsOjpu
c0NyZWRlbnRpYWwoKSBjb25zdAogewogICAgIGlmIChtX25zQ3JlZGVudGlhbCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2Eu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1By
b3RlY3Rpb25TcGFjZUNvY29hLmgJKHJldmlzaW9uIDE4MDE0OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksMTAgKzI5LDYgQEAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VCYXNlLmgi
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLXR5cGVk
ZWYgc3RydWN0IF9DRlVSTFByb3RlY3Rpb25TcGFjZSogQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY7
Ci0jZW5kaWYKLQogT0JKQ19DTEFTUyBOU1VSTFByb3RlY3Rpb25TcGFjZTsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDcsOSArNDMsNiBAQCBwdWJsaWM6CiAKICAgICBQcm90ZWN0aW9uU3Bh
Y2UoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIGRlbGV0ZWRWYWx1ZSkgOiBQcm90ZWN0
aW9uU3BhY2VCYXNlKGRlbGV0ZWRWYWx1ZSkgeyB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAg
IGV4cGxpY2l0IFByb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZik7Ci0jZW5k
aWYKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBQcm90ZWN0aW9uU3BhY2UoTlNVUkxQcm90
ZWN0aW9uU3BhY2UgKik7CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBhLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGIpOwpAQCAtNTgsOSAr
NTEsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlY2VpdmVzQ3JlZGVu
dGlhbFNlY3VyZWx5KCkgY29uc3Q7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJMUHJv
dGVjdGlvblNwYWNlUmVmIGNmU3BhY2UoKSBjb25zdDsKLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQ
T1JUIE5TVVJMUHJvdGVjdGlvblNwYWNlICpuc1NwYWNlKCkgY29uc3Q7CiAKIHByaXZhdGU6Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFj
ZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0JKHJldmlzaW9uIDE4MDE0OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDIyICsyNiw4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgIlByb3RlY3Rpb25TcGFjZUNvY29hLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQGlu
dGVyZmFjZSBOU1VSTFByb3RlY3Rpb25TcGFjZSAoV2ViRGV0YWlscykKLS0gKENGVVJMUHJvdGVj
dGlvblNwYWNlUmVmKSBfQ0ZVUkxQcm90ZWN0aW9uU3BhY2U7Ci0tIChpZClfaW5pdFdpdGhDRlVS
TFByb3RlY3Rpb25TcGFjZTooQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpY2ZQcm90U3BhY2U7Ci1A
ZW5kCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykK
LVByb3RlY3Rpb25TcGFjZTo6UHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVm
IHNwYWNlKQotICAgIDogUHJvdGVjdGlvblNwYWNlKGFkb3B0TlMoW1tOU1VSTFByb3RlY3Rpb25T
cGFjZSBhbGxvY10gX2luaXRXaXRoQ0ZVUkxQcm90ZWN0aW9uU3BhY2U6c3BhY2VdKS5nZXQoKSkK
LXsKLX0KLSNlbmRpZgotCiBzdGF0aWMgUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZSB0eXBlKE5T
VVJMUHJvdGVjdGlvblNwYWNlICpzcGFjZSkKIHsKICAgICBpZiAoW3NwYWNlIGlzUHJveHldKSB7
CkBAIC0xMDUsMTMgKzkxLDYgQEAgUHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9uU3BhY2UoTlNV
UkxQcgogICAgIG1fbnNTcGFjZSA9IHNwYWNlOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNG
VVJMUHJvdGVjdGlvblNwYWNlUmVmIFByb3RlY3Rpb25TcGFjZTo6Y2ZTcGFjZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIFtuc1NwYWNlKCkgX0NGVVJMUHJvdGVjdGlvblNwYWNlXTsKLX0KLSNlbmRp
ZgotCiBOU1VSTFByb3RlY3Rpb25TcGFjZSAqUHJvdGVjdGlvblNwYWNlOjpuc1NwYWNlKCkgY29u
c3QKIHsKICAgICBpZiAobV9uc1NwYWNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
CShyZXZpc2lvbiAxODAxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MywxNSArNTMs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBOU1VSTFJlcXVlc3QgKlJlc291cmNlUmVxdWVzdDo6
bnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNvbnN0CiB7CiAg
ICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KGJvZHlQb2xpY3kpOwotI2lmIFVTRShDRk5FVFdPUksp
Ci0gICAgaWYgKCFtX25zUmVxdWVzdCkKLSAgICAgICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlcXVl
c3QqPih0aGlzKS0+dXBkYXRlTlNVUkxSZXF1ZXN0KCk7Ci0jZW5kaWYKICAgICByZXR1cm4gW1tt
X25zUmVxdWVzdC5nZXQoKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAotI2lmICFVU0UoQ0ZO
RVRXT1JLKQotCiBDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVlc3Qo
SFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9keVBvbGljeSkgY29uc3QKIHsKICAgICByZXR1cm4gW25z
VVJMUmVxdWVzdChib2R5UG9saWN5KSBfQ0ZVUkxSZXF1ZXN0XTsKQEAgLTIzMiw4ICsyMjYsNiBA
QCB2b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24oCiAgICAgbV9uc1JlcXVl
c3QgPSBhZG9wdE5TKHdrQ29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24oc3RvcmFnZVNlc3Np
b24sIG1fbnNSZXF1ZXN0LmdldCgpKSk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5o
CShyZXZpc2lvbiAxODAxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2suaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTEgKzQ0LDYgQEAgT0JKQ19DTEFT
UyBOU1VSTENvbm5lY3Rpb247CiBPQkpDX0NMQVNTIE5TVVJMUmVzcG9uc2U7CiBPQkpDX0NMQVNT
IFFMUHJldmlld0NvbnZlcnRlcjsKIAotI2lmIFVTRShDRk5FVFdPUkspCi10eXBlZGVmIHN0cnVj
dCBfQ0ZVUkxSZXNwb25zZSogQ0ZVUkxSZXNwb25zZVJlZjsKLXR5cGVkZWYgc3RydWN0IF9DRlVS
TENvbm5lY3Rpb24qIENGVVJMQ29ubmVjdGlvblJlZjsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFF1aWNrTG9va0hhbmRsZUNsaWVudDsKQEAgLTg2LDkgKzgxLDYgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3VsZENyZWF0ZUZvck1J
TUVUeXBlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlj
a0xvb2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJjZUhhbmRsZSosIE5TVVJMQ29ubmVjdGlvbiAqLCBO
U1VSTFJlc3BvbnNlICosIGlkIGRlbGVnYXRlKTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VIYW5k
bGUqLCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqLCBD
RlVSTFJlc3BvbnNlUmVmKTsKLSNlbmRpZgogICAgIC8vIEZJWE1FOiBVc2Ugb2YgUmVzb3VyY2VM
b2FkZXIgaGVyZSBpcyBhIHBsYXRmb3JtIHZpb2xhdGlvbi4KICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJlc291cmNlTG9h
ZGVyJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCkBAIC0xMDAsOSArOTIsNiBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGYWlsKCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBOU1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNlKCk7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAg
ICBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UoKTsKLSNlbmRpZgogCiAgICAgdm9pZCBzZXRD
bGllbnQoUGFzc1JlZlB0cjxRdWlja0xvb2tIYW5kbGVDbGllbnQ+IGNsaWVudCkgeyBtX2NsaWVu
dCA9IGNsaWVudDsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2subW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvUXVpY2tMb29rLm1tCShyZXZpc2lvbiAxODAxNDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDE1ICs0Nyw2IEBACiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZV
UkxDb25uZWN0aW9uLmg+Ci0KLUBpbnRlcmZhY2UgTlNVUkxSZXNwb25zZSAoUXVpY2tMb29rRGV0
YWlscykKLSsoTlNVUkxSZXNwb25zZSAqKV9yZXNwb25zZVdpdGhDRlVSTFJlc3BvbnNlOihDRlVS
TFJlc3BvbnNlUmVmKXJlc3BvbnNlOwotLShDRlVSTFJlc3BvbnNlUmVmKV9DRlVSTFJlc3BvbnNl
OwotQGVuZAotI2VuZGlmCi0KIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoUXVpY2tMb29r
KQogU09GVF9MSU5LX0NMQVNTKFF1aWNrTG9vaywgUUxQcmV2aWV3Q29udmVydGVyKQogU09GVF9M
SU5LX01BWV9GQUlMKFF1aWNrTG9vaywgUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzLCBO
U1NldCAqLCAoKSwgKCkpCkBAIC0yNDQsODIgKzIzNSw2IEBAIGNvbnN0IGNoYXIqIFdlYkNvcmU6
OlFMUHJldmlld1Byb3RvY29sKCkKICAgICByZXR1cm4gcHJldmlld1Byb3RvY29sLmdldCgpLmRh
dGEoKTsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0vLyBUaGUgd2F5IFF1aWNrTG9vayB3b3Jr
cyBpcyB3ZSBwYXNzIGl0IGFuIE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlIGNhbGxiYWNrIG9iamVj
dCBhdCBjcmVhdGlvbgotLy8gdGltZS4gVGhlbiB3ZSBwYXNzIGl0IGFsbCB0aGUgZGF0YSBhcyB3
ZSByZWNlaXZlIGl0LiBPbmNlIHdlJ3ZlIGRvd25sb2FkZWQgdGhlIGZ1bGwgVVJMLAotLy8gUXVp
Y2tMb29rIHR1cm5zIGFyb3VuZCBhbmQgc2VuZCB1cywgdGhyb3VnaCB0aGlzIGRlbGVnYXRlLCB0
aGUgSFRNTCB2ZXJzaW9uIG9mIHRoZSBmaWxlIHdoaWNoIHdlCi0vLyBwYXNzIG9uIHRvIFdlYkNv
cmUuIFRoZSBmbGFnIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgaW4gUXVpY2tM
b29rSGFuZGxlIGRlY2lkZXMKLS8vIHdoZXRoZXIgdG8gcGFzcyB0aGUgZGF0YSB0byBRdWlja0xv
b2sgb3IgV2ViQ29yZS4KLS8vCi0vLyBUaGlzIHdvcmtzIGZpbmUgd2hlbiB1c2luZyBOUyBBUElz
LCBidXQgd2hlbiB1c2luZyBDRk5ldHdvcmssIHdlIGRvbid0IGhhdmUgYSBOU1VSTENvbm5lY3Rp
b25EZWxlZ2F0ZS4KLS8vIFNvIHdlIGNyZWF0ZSBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRl
IGFzIGFuIGludGVybWVkaWF0ZSBkZWxlZ2F0ZSBvYmplY3QgYW5kIHBhc3MgaXQgdG8KLS8vIFFM
UHJldmlld0NvbnZlcnRlci4gVGhlIHByb3h5IGRlbGVnYXRlIHRoZW4gZm9yd2FyZHMgdGhlIG1l
c3NhZ2VzIG9uIHRvIHRoZSBDRk5ldHdvcmsgY29kZS4KLUBpbnRlcmZhY2UgV2ViUXVpY2tMb29r
SGFuZGxlQXNEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZT4gewot
ICAgIFJlZlB0cjxTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGU+IG1fY29ubmVjdGlvbkRlbGVnYXRlOwotfQotCi0tIChpZClpbml0V2l0aENvbm5lY3Rpb25E
ZWxlZ2F0ZTooU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
Kiljb25uZWN0aW9uRGVsZWdhdGU7Ci0tICh2b2lkKWNsZWFySGFuZGxlOwotQGVuZAotCi1AaW1w
bGVtZW50YXRpb24gV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZQotLSAoaWQpaW5pdFdpdGhD
b25uZWN0aW9uRGVsZWdhdGU6KFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZSopY29ubmVjdGlvbkRlbGVnYXRlCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0
XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgbV9jb25uZWN0aW9u
RGVsZWdhdGUgPSBjb25uZWN0aW9uRGVsZWdhdGU7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0g
KHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZl
RGF0YUFycmF5OihOU0FycmF5ICopZGF0YUFycmF5Ci17Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5l
Y3Rpb24pOwotICAgIGlmICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsK
LSAgICBMT0coTmV0d29yaywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6OmRpZFJlY2Vp
dmVEYXRhQXJyYXkoKSIpOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRSZWNlaXZlRGF0
YUFycmF5KHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZBcnJheVJlZj4oZGF0YUFycmF5KSk7Ci19Ci0KLS0g
KHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZl
RGF0YTooTlNEYXRhICopZGF0YSBsZW5ndGhSZWNlaXZlZDoobG9uZyBsb25nKWxlbmd0aFJlY2Vp
dmVkCi17Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIGlmICghbV9jb25uZWN0
aW9uRGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBMT0coTmV0d29yaywgIldlYlF1aWNr
TG9va0hhbmRsZUFzRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhKCkgLSBkYXRhIGxlbmd0aCA9ICVs
ZCIsIChsb25nKVtkYXRhIGxlbmd0aF0pOwotCi0gICAgLy8gUXVpY2tMb29rIGNvZGUgc2VuZHMg
dXMgYSBuaWwgZGF0YSBhdCB0aW1lcy4gVGhlIGNoZWNrIGJlbG93IGlzIHRoZSBzYW1lIGFzIHRo
ZSBvbmUgaW4KLSAgICAvLyBSZXNvdXJjZUhhbmRsZU1hYy5jcHAgYWRkZWQgZm9yIGEgZGlmZmVy
ZW50IGJ1Zy4KLSAgICBpZiAoIVtkYXRhIGxlbmd0aF0pCi0gICAgICAgIHJldHVybjsKLSAgICBt
X2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+ZGlkUmVjZWl2ZURhdGEocmVpbnRlcnByZXRfY2FzdDxDRkRh
dGFSZWY+KGRhdGEpLCBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aFJlY2VpdmVkKSk7Ci19Ci0KLS0g
KHZvaWQpY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5l
Y3Rpb24KLXsKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgaWYgKCFtX2Nvbm5l
Y3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3b3JrLCAiV2ViUXVp
Y2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkRmluaXNoTG9hZGluZygpIik7Ci0gICAgbV9jb25u
ZWN0aW9uRGVsZWdhdGUtPmRpZEZpbmlzaExvYWRpbmcoKTsKLX0KLQotLSAodm9pZCljb25uZWN0
aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJy
b3IgKillcnJvcgotewotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBpZiAoIW1f
Y29ubmVjdGlvbkRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgTE9HKE5ldHdvcmssICJX
ZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRGYWlsKCkiKTsKLSAgICBtX2Nvbm5lY3Rp
b25EZWxlZ2F0ZS0+ZGlkRmFpbChyZWludGVycHJldF9jYXN0PENGRXJyb3JSZWY+KGVycm9yKSk7
Ci19Ci0KLS0gKHZvaWQpY2xlYXJIYW5kbGUKLXsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9
IG51bGxwdHI7Ci19Ci1AZW5kCi0jZW5kaWYKLQogQGludGVyZmFjZSBXZWJSZXNvdXJjZUxvYWRl
clF1aWNrTG9va0RlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiB7
CiAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBfcmVzb3VyY2VMb2FkZXI7CiAgICAgQk9PTCBf
aGFzU2VudERpZFJlY2VpdmVSZXNwb25zZTsKQEAgLTQ2NywyNiArMzgyLDYgQEAgc3RkOjp1bmlx
dWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMbwogICAgIHJldHVybiBXVEY6Om1vdmUocXVp
Y2tMb29rSGFuZGxlKTsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi1zdGQ6OnVuaXF1ZV9wdHI8
UXVpY2tMb29rSGFuZGxlPiBRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUq
IGNvbm5lY3Rpb25EZWxlZ2F0ZSwgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQotewotICAg
IEFTU0VSVF9BUkcoaGFuZGxlLCBoYW5kbGUpOwotICAgIGlmICghaGFuZGxlLT5maXJzdFJlcXVl
c3QoKS5kZXByZWNhdGVkSXNNYWluUmVzb3VyY2VSZXF1ZXN0KCkgfHwgIVtXZWJDb3JlOjpRTFBy
ZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSBjb250YWluc09iamVjdDooTlNTdHJpbmcg
KilDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUoY2ZSZXNwb25zZSldKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIE5TVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UgPSBbTlNVUkxSZXNwb25z
ZSBfcmVzcG9uc2VXaXRoQ0ZVUkxSZXNwb25zZTpjZlJlc3BvbnNlXTsKLSAgICBXZWJRdWlja0xv
b2tIYW5kbGVBc0RlbGVnYXRlICpkZWxlZ2F0ZSA9IFtbW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVs
ZWdhdGUgYWxsb2NdIGluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRlOmNvbm5lY3Rpb25EZWxlZ2F0
ZV0gYXV0b3JlbGVhc2VdOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IHF1
aWNrTG9va0hhbmRsZShuZXcgUXVpY2tMb29rSGFuZGxlKFtoYW5kbGUtPmZpcnN0UmVxdWVzdCgp
Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSBVUkxdLCBuaWwsIG5zUmVzcG9uc2Us
IGRlbGVnYXRlKSk7Ci0gICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkQ3JlYXRlUXVpY2tMb29rSGFu
ZGxlKCpxdWlja0xvb2tIYW5kbGUpOwotICAgIHJldHVybiBXVEY6Om1vdmUocXVpY2tMb29rSGFu
ZGxlKTsKLX0KLQotQ0ZVUkxSZXNwb25zZVJlZiBRdWlja0xvb2tIYW5kbGU6OmNmUmVzcG9uc2Uo
KQotewotICAgIHJldHVybiBbbV9uc1Jlc3BvbnNlIF9DRlVSTFJlc3BvbnNlXTsKLX0KLSNlbmRp
ZgotCiBib29sIFF1aWNrTG9va0hhbmRsZTo6c2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICByZXR1cm4gW1dlYkNvcmU6OlFMUHJldmlld0dldFN1
cHBvcnRlZE1JTUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0Om1pbWVUeXBlXTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNl
SGFuZGxlSU9TLm1tCShyZXZpc2lvbiAxODAxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSwz
OSArMSBAQAotLy8KLS8vICBSZXNvdXJjZUhhbmRsZUlQaG9uZS5tbQotLy8gIFdlYkNvcmUKLS8v
Ci0vLyAgQ29weXJpZ2h0IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8K
LQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgi
Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZTb2NrZXRTdHJl
YW1Qcml2Lmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVxdWVzdFByaXZhdGUuaD4KLQot
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQ0ZNdXRh
YmxlRGljdGlvbmFyeVJlZiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlU1NMUHJvcGVydGllc0Zyb21O
U1VSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQotewotICAgIE5TU3Ry
aW5nICpob3N0ID0gcmVxdWVzdC51cmwoKS5ob3N0KCk7Ci0gICAgTlNBcnJheSAqY2VydEFycmF5
ID0gW05TVVJMUmVxdWVzdCBhbGxvd3NTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0Omhv
c3RdOwotICAgIEJPT0wgYWxsb3dzQW55Q2VydGlmaWNhdGUgPSBbTlNVUkxSZXF1ZXN0IGFsbG93
c0FueUhUVFBTQ2VydGlmaWNhdGVGb3JIb3N0Omhvc3RdOwotICAgIGlmICghY2VydEFycmF5ICYm
ICFhbGxvd3NBbnlDZXJ0aWZpY2F0ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBDRk11dGFi
bGVEaWN0aW9uYXJ5UmVmIHNzbFByb3BzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZU
eXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBpZiAoY2VydEFycmF5KQotICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzc2xQcm9wcywgX2tDRlN0cmVhbVNTTFRydXN0ZWRMZWFm
Q2VydGlmaWNhdGVzLCAoQ0ZUeXBlUmVmKSBjZXJ0QXJyYXkpOwotCi0gICAgaWYgKGFsbG93c0Fu
eUNlcnRpZmljYXRlKQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzc2xQcm9wcywga0NG
U3RyZWFtU1NMVmFsaWRhdGVzQ2VydGlmaWNhdGVDaGFpbiwga0NGQm9vbGVhbkZhbHNlKTsKLSAg
ICByZXR1cm4gc3NsUHJvcHM7Ci19Ci0KLX0KLQotI2VuZGlmCisvLyBSZW1vdmUgbWUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlUmVxdWVzdElPUy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNv
dXJjZVJlcXVlc3RJT1MubW0JKHJldmlzaW9uIDE4MDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlUmVxdWVzdElPUy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzUsNDQgKzM1LDYgQEAgLSAoaWQpX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0OihDRlVSTFJlcXVl
cwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1SZXNvdXJj
ZVJlcXVlc3Q6OlJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVlc3QgKm5zUmVxdWVzdCkKLSAgICA6
IFJlc291cmNlUmVxdWVzdEJhc2UoKQotICAgICwgbV9tYWluUmVzb3VyY2VSZXF1ZXN0KGZhbHNl
KQotICAgICwgbV9jZlJlcXVlc3QoW25zUmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSkKLSAgICAsIG1f
bnNSZXF1ZXN0KG5zUmVxdWVzdCkKLXsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0
ZU5TVVJMUmVxdWVzdCgpCi17Ci0gICAgaWYgKG1fY2ZSZXF1ZXN0KQotICAgICAgICBtX25zUmVx
dWVzdCA9IGFkb3B0TlMoW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVS
TFJlcXVlc3Q6bV9jZlJlcXVlc3QuZ2V0KCldKTsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6
OmNsZWFyT3JVcGRhdGVOU1VSTFJlcXVlc3QoKQotewotICAgIC8vIFRoZXJlIGlzIGNsaWVudCBj
b2RlIHRoYXQgZXh0ZW5kcyBOU1VSTFJlcXVlc3QgYW5kIGV4cGVjdHMgdG8gZ2V0IGJhY2ssIGlu
IHRoZSBkZWxlZ2F0ZQotICAgIC8vIGNhbGxiYWNrcywgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5
cGUgdGhhdCB0aGV5IHBhc3NlZCBpbnRvIFdlYktpdC4gVG8ga2VlcCB0aGVuIHJ1bm5pbmcsIHdl
Ci0gICAgLy8gY3JlYXRlIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFuZCByZXR1cm4gdGhh
dC4gU2VlIDxyZGFyOi8vOTg0MzU4Mj4uCi0gICAgLy8gQWxzbywgZGV2ZWxvcGVycyByZWFsbHkg
cmVhbGx5IHdhbnQgYW4gTlNNdXRhYmxlVVJMUmVxdWVzdCBzbyB0cnkgdG8gY3JlYXRlIGFuCi0g
ICAgLy8gTlNNdXRhYmxlVVJMUmVxdWVzdCBpbnN0ZWFkIG9mIE5TVVJMUmVxdWVzdC4KLSAgICBz
dGF0aWMgQ2xhc3MgbnNVUkxSZXF1ZXN0Q2xhc3MgPSBbTlNVUkxSZXF1ZXN0IGNsYXNzXTsKLSAg
ICBzdGF0aWMgQ2xhc3MgbnNNdXRhYmxlVVJMUmVxdWVzdENsYXNzID0gW05TTXV0YWJsZVVSTFJl
cXVlc3QgY2xhc3NdOwotICAgIENsYXNzIHJlcXVlc3RDbGFzcyA9IFttX25zUmVxdWVzdC5nZXQo
KSBjbGFzc107Ci0KLSAgICBpZiAoIW1fY2ZSZXF1ZXN0KQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAocmVxdWVzdENsYXNzICYmIHJlcXVlc3RDbGFzcyAhPSBuc1VSTFJlcXVlc3RDbGFzcyAm
JiByZXF1ZXN0Q2xhc3MgIT0gbnNNdXRhYmxlVVJMUmVxdWVzdENsYXNzKQotICAgICAgICBtX25z
UmVxdWVzdCA9IGFkb3B0TlMoW1tyZXF1ZXN0Q2xhc3MgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVx
dWVzdDptX2NmUmVxdWVzdC5nZXQoKV0pOwotICAgIGVsc2UKLSAgICAgICAgbV9uc1JlcXVlc3Qg
PSBudWxscHRyOwotfQotCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMu
bW0JKHJldmlzaW9uIDE4MDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwyNiArMzIsMTEg
QEAKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgog
I2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFByb3RlY3Rpb25TcGFjZS5oPgogCi0jaWYgVVNFKENG
TkVUV09SSykKLQotQGludGVyZmFjZSBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIChEZXRh
aWxzKQotI2lmIFBMQVRGT1JNKElPUykKLSsoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
KV9jcmVhdGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUZvckNGQXV0aENoYWxsZW5nZTooQ0ZVUkxB
dXRoQ2hhbGxlbmdlUmVmKWNmQ2hhbGxlbmdlIHNlbmRlcjooaWQgPE5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXI+KXNlbmRlcjsKLSNlbHNlCi0rKE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKilfYXV0aGVudGljYXRpb25DaGFsbGVuZ2VGb3JDRkF1dGhDaGFsbGVuZ2U6KENG
VVJMQXV0aENoYWxsZW5nZVJlZiljZkNoYWxsZW5nZSBzZW5kZXI6KGlkIDxOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlU2VuZGVyPilzZW5kZXI7Ci0jZW5kaWYKLUBlbmQKLQotI2VuZGlmCi0K
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdlYkNvcmVBdXRoZW50aWNh
dGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyIDogTlNPYmplY3QgPE5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXI+CiB7CiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIG1fY2xpZW50
OwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIG1fY2ZDaGFs
bGVuZ2U7Ci0jZW5kaWYKIH0KIC0gKGlkKWluaXRXaXRoQXV0aGVudGljYXRpb25DbGllbnQ6KEF1
dGhlbnRpY2F0aW9uQ2xpZW50KiljbGllbnQ7CiAtIChBdXRoZW50aWNhdGlvbkNsaWVudCopY2xp
ZW50OwpAQCAtOTcsNDcgKzgyLDEwIEBAIC0gKHZvaWQpY2FuY2VsQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6KE4KICAgICAgICAgbV9jbGllbnQtPnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvcmUoY2hh
bGxlbmdlKSk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotLSAodm9pZClzZXRDRkNoYWxsZW5n
ZTooQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKWNoYWxsZW5nZQotewotICAgIG1fY2ZDaGFsbGVuZ2Ug
PSBjaGFsbGVuZ2U7Ci19Ci0KLS0gKENGVVJMQXV0aENoYWxsZW5nZVJlZiljZkNoYWxsZW5nZQot
ewotICAgIHJldHVybiBtX2NmQ2hhbGxlbmdlOwotfQotI2VuZGlmCi0KIEBlbmQKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLQotQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgY29yZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICptYWNDaGFsbGVuZ2UpCi17
Ci0gICAgV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgKmNoYWxs
ZW5nZVNlbmRlciA9IChXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRl
ciopIFttYWNDaGFsbGVuZ2Ugc2VuZGVyXTsKLSAgICByZXR1cm4gQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoW2NoYWxsZW5nZVNlbmRlciBjZkNoYWxsZW5nZV0sIFtjaGFsbGVuZ2VTZW5kZXIgY2xp
ZW50XSk7Ci19Ci0KLU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKm1hYyhjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNoYWxsZW5nZSkKLXsKLSAgICBBdXRoZW50aWNhdGlv
bkNsaWVudCogYXV0aENsaWVudCA9IGNvcmVDaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQo
KTsKLSAgICBSZXRhaW5QdHI8V2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VT
ZW5kZXI+IGNoYWxsZW5nZVNlbmRlciA9IGFkb3B0TlMoW1tXZWJDb3JlQXV0aGVudGljYXRpb25D
bGllbnRBc0NoYWxsZW5nZVNlbmRlciBhbGxvY10gaW5pdFdpdGhBdXRoZW50aWNhdGlvbkNsaWVu
dDphdXRoQ2xpZW50XSk7Ci0gICAgUmV0YWluUHRyPENGVVJMQXV0aENoYWxsZW5nZVJlZj4gYXV0
aENoYWxsZW5nZSA9IGNvcmVDaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCk7Ci0gICAg
aWYgKCFhdXRoQ2hhbGxlbmdlKQotICAgICAgICBhdXRoQ2hhbGxlbmdlID0gYWRvcHRDRihjcmVh
dGVDRihjb3JlQ2hhbGxlbmdlKSk7Ci0gICAgW2NoYWxsZW5nZVNlbmRlci5nZXQoKSBzZXRDRkNo
YWxsZW5nZTphdXRoQ2hhbGxlbmdlLmdldCgpXTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgcmV0
dXJuIFtbTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBfY3JlYXRlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VGb3JDRkF1dGhDaGFsbGVuZ2U6YXV0aENoYWxsZW5nZS5nZXQoKSBzZW5kZXI6Y2hh
bGxlbmdlU2VuZGVyLmdldCgpXSBhdXRvcmVsZWFzZV07Ci0jZWxzZQotICAgIHJldHVybiBbW05T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRm9yQ0ZB
dXRoQ2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2UuZ2V0KCkgc2VuZGVyOmNoYWxsZW5nZVNlbmRlci5n
ZXQoKV0gYXV0b3JlbGVhc2VdOwotI2VuZGlmCi19Ci0KLSNlbHNlCi0KIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2Um
IHByb3RlY3Rpb25TcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHJldmlv
dXNGYWlsdXJlQ291bnQsCkBAIC0yMTEsNiArMTU5LDQgQEAgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgY29yZShOU1VSTEF1dGhlbgogICAgIHJldHVybiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSht
YWNDaGFsbGVuZ2UpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
Q29va2llSmFyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQkocmV2aXNpb24gMTgwMTQ5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBsYXRmb3Jt
Q29va2llSmFyLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiQmxvY2tFeGNl
cHRpb25zLmgiCiAjaW1wb3J0ICJDb29raWUuaCIKICNpbXBvcnQgIkNvb2tpZVN0b3JhZ2UuaCIK
QEAgLTIzOCw1ICsyMzYsMyBAQCB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKGNv
bnN0CiB9CiAKIH0KLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0
b3JhZ2VNYWMubW0JKHJldmlzaW9uIDE4MDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlhbFN0
b3JhZ2UuaCIKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25NYWMuaCIKICNpbmNsdWRlICJDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNw
YWNlLmgiCkBAIC01Miw1ICs1MCwzIEBAIHZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNhdmVUb1Bl
cnNpc3RlbnQKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyAh
VVNFKENGTkVUV09SSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L0Zvcm1EYXRhU3RyZWFtTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaAkocmV2aXNpb24gMTgwMTQ5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksNiBAQAogI2lmbmRlZiBGb3JtRGF0YVN0cmVhbU1h
Y19oCiAjZGVmaW5lIEZvcm1EYXRhU3RyZWFtTWFjX2gKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQot
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJM
UmVxdWVzdCogQ0ZVUkxSZXF1ZXN0UmVmOwpAQCAtNDksNiArNDcsNSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRX
T1JLKQogCiAjZW5kaWYgLy8gRm9ybURhdGFTdHJlYW1NYWNfaApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMu
bW0JKHJldmlzaW9uIDE4MDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw2IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtTWFjLmgiCiAKLSNp
ZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiRm9ybURhdGEuaCIKICNpbXBvcnQgIkZvcm1E
YXRhU3RyZWFtQ0ZOZXQuaCIKICNpbXBvcnQgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC01Miw1ICs1
MCwzIEBAIEZvcm1EYXRhKiBodHRwQm9keUZyb21TdHJlYW0oTlNJbnB1dFN0cmUKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
RXJyb3JNYWMubW0JKHJldmlzaW9uIDE4MDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDEw
ICszMSw2IEBACiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmg+CiAjaW1wb3J0IDxG
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotI2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENGTkVU
V09SSykKLSNpbXBvcnQgPENGTmV0d29yay9DRlNvY2tldFN0cmVhbVByaXYuaD4KLSNlbmRpZgot
CiBAaW50ZXJmYWNlIE5TRXJyb3IgKFdlYkV4dHJhcykKIC0gKE5TU3RyaW5nICopX3dlYl9sb2Nh
bGl6ZWREZXNjcmlwdGlvbjsKIEBlbmQKQEAgLTkxLDg1ICs4Nyw2IEBAIC0gKHZvaWQpZW5jb2Rl
V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKIAogQGVuZAogCi0KLSNpZiBVU0UoQ0ZORVRXT1JL
KQotc3RhdGljIE5TRXJyb3IgKk5TRXJyb3JGcm9tQ0ZFcnJvcihDRkVycm9yUmVmIGNmRXJyb3Is
IE5TVVJMICp1cmwpCi17Ci0gICAgQ0ZJbmRleCBlcnJDb2RlID0gQ0ZFcnJvckdldENvZGUoY2ZF
cnJvcik7Ci0gICAgaWYgKENGRXF1YWwoQ0ZFcnJvckdldERvbWFpbihjZkVycm9yKSwga0NGRXJy
b3JEb21haW5DRk5ldHdvcmspICYmIGVyckNvZGUgPD0ga0NGVVJMRXJyb3JVbmtub3duICYmIGVy
ckNvZGUgPiAtNDAwMCkgewotICAgICAgICAvLyBUaGlzIGlzIGFuIFVSTCBlcnJvciBhbmQgbmVl
ZHMgdG8gYmUgdHJhbnNsYXRlZCB0byB0aGUgTlNVUkxFcnJvckRvbWFpbgotICAgICAgICBpZCBr
ZXlzWzEwXSwgdmFsdWVzWzEwXTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHVzZXJJbmZvID0g
Q0ZFcnJvckNvcHlVc2VySW5mbyhjZkVycm9yKTsKLSAgICAgICAgTlNFcnJvciAqcmVzdWx0Owot
ICAgICAgICBOU0ludGVnZXIgY291bnQgPSAwOwotCi0gICAgICAgIGlmICh1cmwpIHsKLSAgICAg
ICAgICAgIGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxFcnJvcktleTsKLSAgICAg
ICAgICAgIHZhbHVlc1tjb3VudF0gPSB1cmw7Ci0gICAgICAgICAgICBjb3VudCArKzsKLQotICAg
ICAgICAgICAga2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5
OwotICAgICAgICAgICAgdmFsdWVzW2NvdW50XSA9IFt1cmwgYWJzb2x1dGVTdHJpbmddOwotICAg
ICAgICAgICAgY291bnQgKys7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZXNbY291bnRdID0g
KGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZFcnJvckxvY2FsaXplZERlc2Ny
aXB0aW9uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtl
eXNbY291bnRdID0gTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleTsKLSAgICAgICAgICAgIGNvdW50
ICsrOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25h
cnlHZXRWYWx1ZSh1c2VySW5mbywga0NGRXJyb3JMb2NhbGl6ZWRGYWlsdXJlUmVhc29uS2V5KTsK
LSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0g
TlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk7Ci0gICAgICAgICAgICBjb3VudCArKzsK
LSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUodXNlckluZm8sIGtDRkVycm9yTG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uS2V5KTsK
LSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0g
TlNMb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25FcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50
ICsrOwotICAgICAgICB9Ci0KLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAg
ICAgICAgaWYgKHVzZXJJbmZvICYmICh2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdl
dFZhbHVlKHVzZXJJbmZvLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNTTFBlZXJDZXJ0aWZpY2F0ZXMpKSAh
PSBuaWwpIHsKLSAgICAgICAgICAgIC8vIE5lZWQgdG8gdHJhbnNsYXRlIHRoZSBjZXJ0Ci0gICAg
ICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvclBlZXJDZXJ0aWZpY2F0ZUNoYWluS2V5IjsK
LSAgICAgICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlk
KUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBfa0NGU3RyZWFtUHJvcGVydHlTU0xDbGll
bnRDZXJ0aWZpY2F0ZXMpOwotICAgICAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAg
ICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvckNsaWVudENlcnRpZmljYXRlQ2hhaW5L
ZXkiOwotICAgICAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBf
a0NGU3RyZWFtUHJvcGVydHlTU0xDbGllbnRDZXJ0aWZpY2F0ZVN0YXRlKTsKLSAgICAgICAgICAg
IGlmICh2YWx1ZXNbY291bnRdKSB7Ci0gICAgICAgICAgICAgICAga2V5c1tjb3VudF0gPSBAIk5T
RXJyb3JDbGllbnRDZXJ0aWZpY2F0ZVN0YXRlS2V5IjsKLSAgICAgICAgICAgICAgICBjb3VudCAr
KzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBv
cAotCi0gICAgICAgIGlmICh1c2VySW5mbyAmJiAodmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rp
b25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGU3RyZWFtUHJvcGVydHlTU0xQZWVyVHJ1c3QpKSAh
PSBuaWwpIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxQ
ZWVyVHJ1c3RFcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50Kys7Ci0gICAgICAgIH0KLQotICAg
ICAgICBrZXlzW2NvdW50XSA9IE5TVW5kZXJseWluZ0Vycm9yS2V5OwotICAgICAgICB2YWx1ZXNb
Y291bnRdID0gKGlkKWNmRXJyb3I7Ci0gICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgIHJlc3Vs
dCA9IFtXZWJDdXN0b21OU1VSTEVycm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWlu
IGNvZGU6KGVyckNvZGUgPT0ga0NGVVJMRXJyb3JVbmtub3duID8gKENGSW5kZXgpTlNVUkxFcnJv
clVua25vd24gOiBlcnJDb2RlKSB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRo
T2JqZWN0czp2YWx1ZXMgZm9yS2V5czprZXlzIGNvdW50OmNvdW50XV07Ci0gICAgICAgIGlmICh1
c2VySW5mbykKLSAgICAgICAgICAgIENGUmVsZWFzZSh1c2VySW5mbyk7Ci0gICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgfQotICAgIHJldHVybiAoTlNFcnJvciAqKWNmRXJyb3I7Ci19Ci0jZW5k
aWYgLy8gVVNFKENGTkVUV09SSykKLQogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMTkwLDUzICsxMDcsNiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRXJy
b3I+IGNyZWF0ZU5TRXJyb3JGCiAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBp
bml0V2l0aERvbWFpbjpyZXNvdXJjZUVycm9yLmRvbWFpbigpIGNvZGU6cmVzb3VyY2VFcnJvci5l
cnJvckNvZGUoKSB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pOwogfQogCi0jaWYgVVNFKENGTkVU
V09SSykKLQotUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihOU0Vycm9yICplcnJvcikKLSAg
ICA6IG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCi0gICAgLCBtX3BsYXRmb3JtRXJyb3IocmVpbnRl
cnByZXRfY2FzdDxDRkVycm9yUmVmPihlcnJvcikpCi17Ci0gICAgbV9pc051bGwgPSAhZXJyb3I7
Ci0gICAgaWYgKCFtX2lzTnVsbCkKLSAgICAgICAgbV9pc1RpbWVvdXQgPSBbZXJyb3IgY29kZV0g
PT0gTlNVUkxFcnJvclRpbWVkT3V0OwotfQotCi1OU0Vycm9yICpSZXNvdXJjZUVycm9yOjpuc0Vy
cm9yKCkgY29uc3QKLXsKLSAgICBpZiAobV9pc051bGwpIHsKLSAgICAgICAgQVNTRVJUKCFtX3Bs
YXRmb3JtRXJyb3IpOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIGlmIChtX3Bs
YXRmb3JtTlNFcnJvcikKLSAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOwot
Ci0gICAgaWYgKG1fcGxhdGZvcm1FcnJvcikgewotICAgICAgICBDRkVycm9yUmVmIGVycm9yID0g
bV9wbGF0Zm9ybUVycm9yLmdldCgpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiB1c2VySW5mbyA9IGFkb3B0Q0YoQ0ZFcnJvckNvcHlVc2VySW5mbyhlcnJvcikpOwotI2lmIFBM
QVRGT1JNKElPUykKLSAgICAgICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBOU0Vycm9yRnJvbUNGRXJy
b3IoZXJyb3IsIChOU1VSTCAqKVsoTlNEaWN0aW9uYXJ5ICopdXNlckluZm8uZ2V0KCkgb2JqZWN0
Rm9yS2V5OihpZCkga0NGVVJMRXJyb3JGYWlsaW5nVVJMRXJyb3JLZXldKTsKLSAgICAgICAgLy8g
SWYgTlNFcnJvckZyb21DRkVycm9yIGNyZWF0ZWQgYSBuZXcgTlNFcnJvciBmb3IgdXMsIHJldHVy
biB0aGF0LgotICAgICAgICBpZiAobV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCkgIT0gKE5TRXJyb3Ig
KillcnJvcikKLSAgICAgICAgICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLQot
ICAgICAgICAvLyBPdGhlcndpc2UgZmFsbCB0aHJvdWdoIHRvIGNyZWF0ZSBhIG5ldyBOU0Vycm9y
IGZyb20gdGhlIENGRXJyb3IuCi0jZW5kaWYKLSAgICAgICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBh
ZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46KE5TU3RyaW5nICopQ0ZFcnJv
ckdldERvbWFpbihlcnJvcikgY29kZTpDRkVycm9yR2V0Q29kZShlcnJvcikgdXNlckluZm86KE5T
RGljdGlvbmFyeSAqKXVzZXJJbmZvLmdldCgpXSk7Ci0gICAgICAgIHJldHVybiBtX3BsYXRmb3Jt
TlNFcnJvci5nZXQoKTsKLSAgICB9Ci0KLSAgICBtX3BsYXRmb3JtTlNFcnJvciA9IGNyZWF0ZU5T
RXJyb3JGcm9tUmVzb3VyY2VFcnJvckJhc2UoKnRoaXMpOwotICAgIHJldHVybiBtX3BsYXRmb3Jt
TlNFcnJvci5nZXQoKTsKLX0KLQotUmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgTlNFcnJvciAqKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbnNFcnJvcigpOwotfQotCi0jZWxzZQotCiBSZXNvdXJjZUVy
cm9yOjpSZXNvdXJjZUVycm9yKE5TRXJyb3IgKm5zRXJyb3IpCiAgICAgOiBtX2RhdGFJc1VwVG9E
YXRlKGZhbHNlKQogICAgICwgbV9wbGF0Zm9ybUVycm9yKG5zRXJyb3IpCkBAIC0zMDksNiArMTc5
LDQgQEAgUmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgQ0ZFcnJvclJlZigpIGNvbgogICAgIHJldHVy
biBjZkVycm9yKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9S
ZXNvdXJjZUhhbmRsZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkocmV2aXNpb24gMTgwMTQ5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTU1LDE2ICs1NSw2IEBACiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNl
NjQuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFVTRShDRk5FVFdPUksp
Ci0jaWYgX19oYXNfaW5jbHVkZSg8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4pCi0j
aW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPgotI2VuZGlmCi10eXBlZGVm
IHN0cnVjdCBfQ0ZVUkxDb25uZWN0aW9uKiBDRlVSTENvbm5lY3Rpb25SZWY7Ci1leHRlcm4gIkMi
IHsKLUNGRGljdGlvbmFyeVJlZiBfQ0ZVUkxDb25uZWN0aW9uQ29weVRpbWluZ0RhdGEoQ0ZVUkxD
b25uZWN0aW9uUmVmKTsKLX0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiAjaWYgX19oYXNf
aW5jbHVkZSg8Rm91bmRhdGlvbi9OU1VSTENvbm5lY3Rpb25Qcml2YXRlLmg+KQogI2ltcG9ydCA8
Rm91bmRhdGlvbi9OU1VSTENvbm5lY3Rpb25Qcml2YXRlLmg+CiAjZWxzZQpAQCAtOTUsOSArODUs
NyBAQCAtKGlkKV9pbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlCiBAZW5kCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLSNpZiAhVVNFKENGTkVUV09SSykKLSAgICAKKwogc3Rh
dGljIHZvaWQgYXBwbHlCYXNpY0F1dGhvcml6YXRpb25IZWFkZXIoUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogewogICAgIFN0cmluZyBhdXRo
ZW50aWNhdGlvbkhlYWRlciA9ICJCYXNpYyAiICsgYmFzZTY0RW5jb2RlKFN0cmluZyhjcmVkZW50
aWFsLnVzZXIoKSArICI6IiArIGNyZWRlbnRpYWwucGFzc3dvcmQoKSkudXRmOCgpKTsKQEAgLTMx
Niw4ICszMDQsNiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvCiAg
ICAgICAgIHdrU2V0TlNVUkxDb25uZWN0aW9uRGVmZXJzQ2FsbGJhY2tzKGQtPm1fY29ubmVjdGlv
bi5nZXQoKSwgZGVmZXJzKTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKLQogdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQogewogICAgIE5TUnVuTG9vcCAq
cnVuTG9vcCA9IHBhaXIubnNSdW5Mb29wKCk7CkBAIC0zMzYsOCArMzIyLDYgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hlZHVsZQogICAgICAgICBbZC0+bV9jb25uZWN0aW9u
LmdldCgpIHVuc2NoZWR1bGVGcm9tUnVuTG9vcDpydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICop
cGFpci5tb2RlKCldOwogfQogCi0jZW5kaWYKLQogaWQgUmVzb3VyY2VIYW5kbGU6Om1ha2VEZWxl
Z2F0ZShib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKQogewogICAgIEFTU0VSVCghZC0+
bV9kZWxlZ2F0ZSk7CkBAIC03MTMsOSArNjk3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29u
dGludWVXaWxsQ2FjaGVSZQogCiAgICAgWyhpZClkZWxlZ2F0ZSgpIGNvbnRpbnVlV2lsbENhY2hl
UmVzcG9uc2U6cmVzcG9uc2VdOwogfQotICAgIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQot
ICAgIAorCiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCiAgICAgCiB2b2lkIFJlc291cmNlSGFuZGxl
OjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShOU0RpY3Rpb25hcnkgKnRpbWluZ0RhdGEsIFJlc291
cmNlTG9hZFRpbWluZyYgdGltaW5nKQpAQCAtNzUyLDIyICs3MzQsMTEgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6c2V0Q29sbGVjdHNUaW1pbmdEYQogICAgIH0pOwogfQogCi0jaWYgVVNFKENGTkVU
V09SSykKLSAgICAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRh
KENGVVJMQ29ubmVjdGlvblJlZiBjb25uZWN0aW9uLCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWlu
ZykKLXsKLSAgICBnZXRDb25uZWN0aW9uVGltaW5nRGF0YSgoX19icmlkZ2UgTlNEaWN0aW9uYXJ5
KikoYWRvcHRDRihfQ0ZVUkxDb25uZWN0aW9uQ29weVRpbWluZ0RhdGEoY29ubmVjdGlvbikpLmdl
dCgpKSwgdGltaW5nKTsKLX0KLSAgICAKLSNlbHNlCi0gICAgCiB2b2lkIFJlc291cmNlSGFuZGxl
OjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIFJl
c291cmNlTG9hZFRpbWluZyYgdGltaW5nKQogewogICAgIGdldENvbm5lY3Rpb25UaW1pbmdEYXRh
KFtjb25uZWN0aW9uIF90aW1pbmdEYXRhXSwgdGltaW5nKTsKIH0KLSAgICAKLSNlbmRpZgotICAg
IAorCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9USU1JTkcpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVx
dWVzdE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0JKHJldmlzaW9uIDE4MDE0OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsMjkgKzM3LDYgQEAgLSAoaWQpX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0OihD
RlVSTFJlcXVlcwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
Ci1SZXNvdXJjZVJlcXVlc3Q6OlJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVlc3QgKm5zUmVxdWVz
dCkKLSAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoKQotICAgICwgbV9jZlJlcXVlc3QoW25zUmVx
dWVzdCBfQ0ZVUkxSZXF1ZXN0XSkKLSAgICAsIG1fbnNSZXF1ZXN0KG5zUmVxdWVzdCkKLXsKLX0K
LQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZU5TVVJMUmVxdWVzdCgpCi17Ci0gICAgaWYg
KG1fY2ZSZXF1ZXN0KQotICAgICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VSTFJlcXVl
c3QgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDptX2NmUmVxdWVzdC5nZXQoKV0pOwotfQot
Ci12b2lkIFJlc291cmNlUmVxdWVzdDo6YXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwoKQotewot
ICAgIC8vIEhhY2sgYmVjYXVzZSBNYWlsIGNoZWNrcyBmb3IgdGhpcyBwcm9wZXJ0eSB0byBkZXRl
Y3QgZGF0YSAvIGFyY2hpdmUgbG9hZHMKLSAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9w
ZXJ0eShjZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSksIENGU1RSKCJXZWJEYXRhUmVx
dWVzdCIpLCBDRlNUUigiIikpOwotfQotCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlUmVzcG9uc2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQkocmV2aXNpb24gMTgwMTQ5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzEsMzYgKzcxLDYgQEAgdm9pZCBSZXNvdXJjZVJlc3Bv
bnNlOjppbml0TlNVUkxSZXNwb25zZQogICAgIFttX25zUmVzcG9uc2UuZ2V0KCkgX3NldE1JTUVU
eXBlOihOU1N0cmluZyAqKW1fbWltZVR5cGVdOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLQot
TlNVUkxSZXNwb25zZSAqUmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSgpIGNvbnN0Ci17
Ci0gICAgaWYgKCFtX25zUmVzcG9uc2UgJiYgIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051bGwpIHsK
LSAgICAgICAgaW5pdE5TVVJMUmVzcG9uc2UoKTsKLSAgICAgICAgbV9jZlJlc3BvbnNlID0gW21f
bnNSZXNwb25zZS5nZXQoKSBfQ0ZVUkxSZXNwb25zZV07Ci0gICAgICAgIHJldHVybiBtX25zUmVz
cG9uc2UuZ2V0KCk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2NmUmVzcG9uc2UpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0KLSAgICBpZiAoIW1fbnNSZXNwb25zZSkKLSAgICAgICAgbV9uc1Jlc3BvbnNl
ID0gW05TVVJMUmVzcG9uc2UgX3Jlc3BvbnNlV2l0aENGVVJMUmVzcG9uc2U6bV9jZlJlc3BvbnNl
LmdldCgpXTsKLQotICAgIHJldHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7Ci19Ci0KLVJlc291cmNl
UmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSogbnNSZXNwb25zZSkKLSAg
ICA6IG1faW5pdExldmVsKFVuaW5pdGlhbGl6ZWQpCi0gICAgLCBtX3BsYXRmb3JtUmVzcG9uc2VJ
c1VwVG9EYXRlKHRydWUpCi0gICAgLCBtX2NmUmVzcG9uc2UoW25zUmVzcG9uc2UgX0NGVVJMUmVz
cG9uc2VdKQotICAgICwgbV9uc1Jlc3BvbnNlKG5zUmVzcG9uc2UpCi17Ci0gICAgbV9pc051bGwg
PSAhbnNSZXNwb25zZTsKLX0KLQotI2Vsc2UKLQogc3RhdGljIE5TU3RyaW5nKiBjb25zdCBjb21t
b25IZWFkZXJGaWVsZHNbXSA9IHsKICAgICBAIkFnZSIsIEAiQ2FjaGUtQ29udHJvbCIsIEAiQ29u
dGVudC1UeXBlIiwgQCJEYXRlIiwgQCJFdGFnIiwgQCJFeHBpcmVzIiwgQCJMYXN0LU1vZGlmaWVk
IiwgQCJQcmFnbWEiCiB9OwpAQCAtMTg5LDcgKzE1OSw1IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25z
ZTo6cGxhdGZvcm1Db21wYXJlKGMKICAgICByZXR1cm4gYS5uc1VSTFJlc3BvbnNlKCkgPT0gYi5u
c1VSTFJlc3BvbnNlKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tCShyZXZp
c2lvbiAxODAxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5j
aHJvbm91c0xvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lmgi
CiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDE0ICszNiwxMCBAQCB2b2lkIFN5
bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlCiAgICAgW2NoYWxsZW5nZS5zZW5kZXIo
KSBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y2hh
bGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07CiB9CiAKLSNpZiAhVVNFKENG
TkVUV09SSykKIFJlc291cmNlRXJyb3IgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OnBsYXRmb3Jt
QmFkUmVzcG9uc2VFcnJvcigpCiB7CiAgICAgUmV0YWluUHRyPE5TRXJyb3I+IGVycm9yID0gYWRv
cHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29k
ZTpOU1VSTEVycm9yQmFkU2VydmVyUmVzcG9uc2UgdXNlckluZm86bmlsXSk7CiAgICAgcmV0dXJu
IGVycm9yLmdldCgpOwogfQotI2VuZGlmCiAKIH0KLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JL
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaAkocmV2aXNp
b24gMTgwMTQ5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2
IEBACiAjaWZuZGVmIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGVfaAogI2RlZmluZSBX
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIH0KQEAgLTM5LDUg
KzM3LDQgQEAgQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYQogLSAodm9p
ZClkZXRhY2hIYW5kbGU7CiBAZW5kCiAKLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKICNlbmRp
ZiAvLyBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMTgwMTQ5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNE
ZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgiCiAKLSNp
ZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIK
ICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC0y
OTEsNiArMjg5LDMgQEAgLSAoTlNDYWNoZWRVUkxSZXNwb25zZSAqKWNvbm5lY3Rpb246KE5TVQog
fQogCiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRp
b25RdWV1ZURlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRl
LmgJKHJldmlzaW9uIDE4MDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIFdlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9oCiAjZGVmaW5lIFdlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9oCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2lu
Y2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
CkBAIC01OSw1ICs1Nyw0IEBAIEBpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlV2l0aENy
ZWQKIAogQGVuZAogCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCiAjZW5kaWYgLy8gV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlX2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0JKHJldmlzaW9uIDE4MDE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCIKIAot
I2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
IgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25NYWMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAg
LTM0OCw2ICszNDYsMyBAQCAtIChCT09MKWNvbm5lY3Rpb25TaG91bGRVc2VDcmVkZW50aWFsU3Rv
CiB9CiAKIEBlbmQKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJl
c3BvbnNlLm1tCShyZXZpc2lvbiAxODAxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyNSw3
ICszMjUsNiBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwCiB9CiAj
ZW5kaWYKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQogTlNVUkxSZXNwb25zZSAqc3ludGhlc2l6ZVJl
ZGlyZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeShOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIE5T
VVJMUmVxdWVzdCAqbmV3UmVxdWVzdCwgTlNVUkxSZXNwb25zZSAqcmVkaXJlY3RSZXNwb25zZSkK
IHsKICAgICBpZiAocmVkaXJlY3RSZXNwb25zZSkKQEAgLTMzOSw2ICszMzgsNSBAQCBOU1VSTFJl
c3BvbnNlICpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zCiAgICAgTlNEaWN0aW9uYXJ5ICpzeW50
aGVzaXplZFJlc3BvbnNlSGVhZGVyRmllbGRzID0gQHsgQCJMb2NhdGlvbiI6IFtbbmV3UmVxdWVz
dCBVUkxdIGFic29sdXRlU3RyaW5nXSwgQCJDYWNoZS1Db250cm9sIjogQCJuby1zdG9yZSIgfTsK
ICAgICByZXR1cm4gW1tbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOltbY29u
bmVjdGlvbiBjdXJyZW50UmVxdWVzdF0gVVJMXSBzdGF0dXNDb2RlOjMwMiBIVFRQVmVyc2lvbjoo
TlNTdHJpbmcgKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6c3ludGhlc2l6ZWRSZXNw
b25zZUhlYWRlckZpZWxkc10gYXV0b3JlbGVhc2VdOwogfQotI2VuZGlmCiAKIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCShyZXZpc2lvbiAxODAxNDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDEyICsxNDAs
OCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiwgQ0ZBcnJheVJlZikgb3ZlcnJpZGU7CiAjZW5kaWYKICNpZiBQ
TEFURk9STShDT0NPQSkKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwgdm9pZCB3aWxs
Q2FjaGVSZXNwb25zZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZikgb3ZlcnJpZGU7Ci0jZWxzZQogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVS
ZXNwb25zZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25z
ZSAqKSBvdmVycmlkZTsKICNlbmRpZgotI2VuZGlmCiAKICNpZiBFTkFCTEUoTkVUV09SS19DQUNI
RSkKICAgICB2b2lkIGRpZFJldHJpZXZlQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29y
a0NhY2hlOjpFbnRyeT4pOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTgwMTQ5KQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjplbmNvZAogICAgIGVuY29kZXIgPDwgdGV4dENoZWNrZXJTdGF0ZTsKICAgICBl
bmNvZGVyIDw8IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBkZWZh
dWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbDsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENG
TkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBlbmNvZGVyIDw8IHVpUHJvY2Vzc0J1
bmRsZUlkZW50aWZpZXI7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTIzNiw3ICsy
MzYsNyBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZGVmYXVs
dFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24g
MTgwMTQ5KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIHN0cnVjdCBXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIGRvdWJsZSBkZWZhdWx0UmVxdWVzdFRpbWVv
dXRJbnRlcnZhbDsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIFN0cmluZyB1aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwog
I2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxv
YWQuY3BwCShyZXZpc2lvbiAxODAxNDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxv
YWRzL0Rvd25sb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsNiBAQCBEb3dubG9h
ZDo6RG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiBkb3duCiAgICAgOiBtX2Rvd25sb2FkTWFuYWdl
cihkb3dubG9hZE1hbmFnZXIpCiAgICAgLCBtX2Rvd25sb2FkSUQoZG93bmxvYWRJRCkKICAgICAs
IG1fcmVxdWVzdChyZXF1ZXN0KQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgLCBtX2FsbG93T3Zl
cndyaXRlKGZhbHNlKQotI2VuZGlmCiB7CiAgICAgQVNTRVJUKG1fZG93bmxvYWRJRCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHJldmlzaW9u
IDE4MDE0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDYgQEAgT0JKQ19DTEFTUyBXS0Rvd25sb2FkQXNE
ZWxlZ2F0ZTsKICNpbmNsdWRlIDxtZW1vcnk+CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUksp
Ci0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWRQcml2Lmg+Ci0jZW5kaWYKLQogbmFt
ZXNwYWNlIElQQyB7CiAgICAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KQEAgLTkyLDExICs4OCw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IHJlc3VtZURhdGEpOwogICAgIHZvaWQgZGlkRGVjaWRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5n
JiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGNvbnN0
IFN0cmluZyYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9Ci0g
ICAgRG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQoKTsK
LSNlbmRpZgotCiAgICAgLy8gQXV0aGVudGljYXRpb24KICAgICBzdGF0aWMgdm9pZCByZWNlaXZl
ZENyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25z
dCBXZWJDb3JlOjpDcmVkZW50aWFsJik7CiAgICAgc3RhdGljIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0
VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJik7CkBAIC0xMzAsMTAgKzEyMSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Fs
bG93T3ZlcndyaXRlOwogICAgIFN0cmluZyBtX2Rlc3RpbmF0aW9uOwogICAgIFN0cmluZyBtX2J1
bmRsZVBhdGg7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBSZXRhaW5QdHI8Q0ZVUkxEb3dubG9h
ZFJlZj4gbV9kb3dubG9hZDsKLSAgICBSZWZQdHI8RG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVu
dD4gbV9hdXRoZW50aWNhdGlvbkNsaWVudDsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwg
UExBVEZPUk0oRUZMKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZUNsaWVudD4gbV9kb3dubG9hZENsaWVudDsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGU+IG1fcmVzb3VyY2VIYW5kbGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93
bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQkocmV2aXNpb24gMTgwMTQ5KQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEsMTk4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIkRvd25sb2FkLmgiCi0KLSNpZiBQTEFURk9STShJT1MpCi0KLSNpbXBvcnQg
IkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJj
ZUhhbmRsZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Ci0jaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgotCi0jaWYgVVNFKENG
TkVUV09SSykKLSNpbXBvcnQgPENGTmV0d29yay9DRlVSTERvd25sb2FkLmg+Ci0jZW5kaWYKLQot
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0jaWYgVVNF
KENGTkVUV09SSykKLS8vIEZJWE1FOiBJZiBwb3NzaWJsZSwgd2Ugc2hvdWxkIGNvbnNpZGVyIG1v
dmluZyBzb21lIGNhbGxiYWNrcyBvZmYgdGhlIG1haW4gdGhyZWFkIG9yIGF0IGxlYXN0Ci0vLyBt
YWtpbmcgdGhlbSBhc3luY2hvbm91cyBjYWxscy4KLXN0YXRpYyB2b2lkIGRpc3BhdGNoT25NYWlu
VGhyZWFkKHZvaWQoXmJsb2NrKSgpKQotewotICAgIGlmIChSdW5Mb29wOjppc01haW4oKSkgewot
ICAgICAgICBibG9jaygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZGlzcGF0Y2hf
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBibG9jayk7Ci19Ci0KLXN0YXRpYyBpbmxp
bmUgRG93bmxvYWQqIHRvRG93bmxvYWQoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RG93bmxvYWQqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldFVwRG93bmxvYWRDbGllbnQoQ0ZVUkxEb3dubG9hZENs
aWVudCYgY2xpZW50LCBEb3dubG9hZCYgZG93bmxvYWQpCi17Ci0gICAgbWVtc2V0KCZjbGllbnQs
IDAsIHNpemVvZihjbGllbnQpKTsKLSAgICBjbGllbnQuY2xpZW50SW5mbyA9ICZkb3dubG9hZDsK
LQotICAgIGNsaWVudC5kaWRTdGFydCA9IFtdKENGVVJMRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAg
ICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFN0YXJ0KCk7Ci0gICAgICAgIH0pOwotICAg
IH07Ci0KLSAgICBjbGllbnQud2lsbFNlbmRSZXF1ZXN0ID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwg
Q0ZVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIENGVVJMUmVzcG9uc2VSZWYsIGNvbnN0IHZvaWQqKSAt
PiBDRlVSTFJlcXVlc3RSZWYgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZVUkxSZXF1
ZXN0UmVmPihDRlJldGFpbihyZXF1ZXN0KSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC5kaWRSZWNl
aXZlUmVzcG9uc2UgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlVSTFJlc3BvbnNlUmVmIHJlc3Bv
bnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhy
ZWFkKF57Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZFJl
Y2VpdmVEYXRhID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZJbmRleCBsZW5ndGgsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAg
ICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFJlY2VpdmVEYXRhKGxlbmd0aCk7Ci0g
ICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuc2hvdWxkRGVjb2RlRGF0YU9mTUlNRVR5
cGUgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlN0cmluZ1JlZiBlbmNvZGluZ1R5cGUsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pIC0+IEJvb2xlYW4gewotICAgICAgICBfX2Jsb2NrIEJPT0wgcmV0
dXJuVmFsdWUgPSBOTzsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAg
ICAgIHJldHVyblZhbHVlID0gdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+c2hvdWxkRGVjb2RlU291
cmNlRGF0YU9mTUlNRVR5cGUoZW5jb2RpbmdUeXBlKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZE9iamVjdE5hbWUgPSBbXShDRlVSTERvd25sb2FkUmVmIGRvd25sb2FkUmVm
LCBDRlN0cmluZ1JlZiBvYmplY3ROYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAg
ICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICBib29sIGFsbG93T3Zlcndy
aXRlOwotICAgICAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gdG9Eb3dubG9hZChjbGllbnRJ
bmZvKS0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUob2JqZWN0TmFtZSwg
YWxsb3dPdmVyd3JpdGUpOwotICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkK
LSAgICAgICAgICAgICAgICBDRlVSTERvd25sb2FkU2V0RGVzdGluYXRpb24oZG93bmxvYWRSZWYs
IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZGVzdGlu
YXRpb25dKSwgYWxsb3dPdmVyd3JpdGUpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xp
ZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZVUkxSZWYg
cGF0aCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRo
cmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlkQ3JlYXRlRGVz
dGluYXRpb24oQ0ZVUkxHZXRTdHJpbmcocGF0aCkpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0g
ICAgY2xpZW50LmRpZEZpbmlzaCA9IFtdKENGVVJMRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAg
IHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZEZpbmlzaCgpOwotICAgICAgICB9KTsKLSAgICB9
OwotCi0gICAgY2xpZW50LmRpZEZhaWwgPSBbXShDRlVSTERvd25sb2FkUmVmIGRvd25sb2FkUmVm
LCBDRkVycm9yUmVmIGVycm9yLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRp
c3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICBhdXRvIHJlc3VtZURhdGEgPSBhZG9w
dENGKENGVVJMRG93bmxvYWRDb3B5UmVzdW1lRGF0YShkb3dubG9hZFJlZikpOwotICAgICAgICAg
ICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlkRmFpbChlcnJvciwgSVBDOjpEYXRhUmVmZXJl
bmNlKHJlc3VtZURhdGEgPyBDRkRhdGFHZXRCeXRlUHRyKHJlc3VtZURhdGEuZ2V0KCkpIDogbnVs
bHB0ciwgcmVzdW1lRGF0YSA/IENGRGF0YUdldExlbmd0aChyZXN1bWVEYXRhLmdldCgpKSA6IDAp
KTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLX0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCi12
b2lkIERvd25sb2FkOjpzdGFydCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9p
ZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKFJlc291cmNlSGFuZGxl
KiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotI2lmIFVTRShD
Rk5FVFdPUkspCi0gICAgQ0ZVUkxEb3dubG9hZENsaWVudCBjbGllbnQ7Ci0gICAgc2V0VXBEb3du
bG9hZENsaWVudChjbGllbnQsICp0aGlzKTsKLSAgICBtX2Rvd25sb2FkID0gYWRvcHRDRihDRlVS
TERvd25sb2FkQ3JlYXRlQW5kU3RhcnRXaXRoTG9hZGluZ0Nvbm5lY3Rpb24oTlVMTCwgaGFuZGxl
LT5yZWxlYXNlQ29ubmVjdGlvbkZvckRvd25sb2FkKCkuZ2V0KCksIG1fcmVxdWVzdC5jZlVSTFJl
cXVlc3QoVXBkYXRlSFRUUEJvZHkpLCByZXNwb25zZS5jZlVSTFJlc3BvbnNlKCksICZjbGllbnQp
KTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgotfQotCi12b2lkIERvd25s
b2FkOjpjYW5jZWwoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxv
YWQ6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
dm9pZCBEb3dubG9hZDo6ZGlkRGVjaWRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiwgYm9vbCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpwbGF0Zm9ybURp
ZEZpbmlzaCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6
cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3Qg
Q3JlZGVudGlhbCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9h
ZDo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lk
IERvd25sb2FkOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVj
ZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lk
IERvd25sb2FkOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQko
cmV2aXNpb24gMTgwMTQ5KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9tYWMv
RG93bmxvYWRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDkgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiRG93bmxvYWQuaCIKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBQTEFURk9STShDT0NPQSkKIAorI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTERvd25sb2FkLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0F1dGhlbnRpY2F0aW9uTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENv
ZGVyc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNv
cmVBcmd1bWVudENvZGVyc01hYy5tbQkocmV2aXNpb24gMTgwMTQ5KQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM5LDQzICszOSwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCi0jaWYgVVNFKENGTkVUV09SSykK
LSNpbXBvcnQgPENGTmV0d29yay9DRlVSTFJlcXVlc3QuaD4KLSNlbmRpZgotCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIElQQyB7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
dm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShB
cmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0KQotewotICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IHJlcXVlc3RUb1Nlcmlh
bGl6ZSA9IHJlc291cmNlUmVxdWVzdC5jZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSk7
Ci0KLSAgICBib29sIHJlcXVlc3RJc1ByZXNlbnQgPSByZXF1ZXN0VG9TZXJpYWxpemU7Ci0gICAg
ZW5jb2RlciA8PCByZXF1ZXN0SXNQcmVzZW50OwotCi0gICAgaWYgKCFyZXF1ZXN0SXNQcmVzZW50
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBXZSBkb24ndCBzZW5kIEhUVFAgYm9keSBvdmVy
IElQQyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgotICAgIC8vIEFsc28sIGl0J3Mgbm90IGFsd2F5
cyBwb3NzaWJsZSB0byBkbywgYXMgc3RyZWFtcyBjYW4gb25seSBiZSBjcmVhdGVkIGluIHByb2Nl
c3MgdGhhdCBkb2VzIG5ldHdvcmtpbmcuCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcmVxdWVz
dEhUVFBCb2R5ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5KHJlcXVl
c3RUb1NlcmlhbGl6ZS5nZXQoKSkpOwotICAgIFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IHJl
cXVlc3RIVFRQQm9keVN0cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0
Qm9keVN0cmVhbShyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCkpKTsKLSAgICBpZiAocmVxdWVzdEhU
VFBCb2R5IHx8IHJlcXVlc3RIVFRQQm9keVN0cmVhbSkgewotICAgICAgICBDRk11dGFibGVVUkxS
ZXF1ZXN0UmVmIG11dGFibGVSZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHko
MCwgcmVxdWVzdFRvU2VyaWFsaXplLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdFRvU2VyaWFsaXpl
ID0gYWRvcHRDRihtdXRhYmxlUmVxdWVzdCk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBS
ZXF1ZXN0Qm9keShtdXRhYmxlUmVxdWVzdCwgbmlsKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0
SFRUUFJlcXVlc3RCb2R5U3RyZWFtKG11dGFibGVSZXF1ZXN0LCBuaWwpOwotICAgIH0KLQotICAg
IFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBhZG9wdENGKFdLQ0ZVUkxS
ZXF1ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24ocmVxdWVzdFRvU2VyaWFsaXpl
LmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOwotICAgIElQQzo6ZW5jb2RlKGVuY29k
ZXIsIGRpY3Rpb25hcnkuZ2V0KCkpOwotCi0gICAgLy8gVGhlIGZhbGxiYWNrIGFycmF5IGlzIHBh
cnQgb2YgQ0ZVUkxSZXF1ZXN0LCBidXQgaXQgaXMgbm90IGVuY29kZWQgYnkgV0tDRlVSTFJlcXVl
c3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbi4KLSAgICBlbmNvZGVyIDw8IHJlc291
cmNlUmVxdWVzdC5yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eSgpOwotfQotI2Vsc2UKIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNv
ZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBy
ZXF1ZXN0VG9TZXJpYWxpemUgPSByZXNvdXJjZVJlcXVlc3QubnNVUkxSZXF1ZXN0KERvTm90VXBk
YXRlSFRUUEJvZHkpOwpAQCAtMTAwLDcgKzY3LDYgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlc291
cmNlUmVxdWVzdD46OmVuYwogICAgIC8vIFRoZSBmYWxsYmFjayBhcnJheSBpcyBwYXJ0IG9mIE5T
VVJMUmVxdWVzdCwgYnV0IGl0IGlzIG5vdCBlbmNvZGVkIGJ5IFdLTlNVUkxSZXF1ZXN0Q3JlYXRl
U2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24uCiAgICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVl
c3QucmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoKTsKIH0K
LSNlbmRpZgogCiBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxh
dGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXNv
dXJjZVJlcXVlc3QpCiB7CkBAIC0xMTcsMjAgKzgzLDEyIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZVJlcXVlc3Q+OjpkZWMKICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRpY3Rp
b25hcnkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAg
IFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IGNmVVJMUmVxdWVzdCA9IGFkb3B0Q0YoV0tDcmVh
dGVDRlVSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24oZGljdGlvbmFyeS5n
ZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpKTsKLSAgICBpZiAoIWNmVVJMUmVxdWVzdCkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVzb3VyY2VSZXF1ZXN0ID0gUmVzb3VyY2VS
ZXF1ZXN0KGNmVVJMUmVxdWVzdC5nZXQoKSk7Ci0jZWxzZQogICAgIFJldGFpblB0cjxOU1VSTFJl
cXVlc3Q+IG5zVVJMUmVxdWVzdCA9IFdLTlNVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJl
c2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKTsKICAg
ICBpZiAoIW5zVVJMUmVxdWVzdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmVzb3Vy
Y2VSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KG5zVVJMUmVxdWVzdC5nZXQoKSk7Ci0jZW5kaWYK
LSAgICAKKwogICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5j
b2RpbmdGYWxsYmFja0FycmF5OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2VDb250
ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxODAxNDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY0MCw3ICs2NDAsNiBA
QAogCQkyREE5NDRBMjE4ODRFNEYwMDBFRDg2REIgLyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9T
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0
NDlCMTg4NEU0RjAwMEVEODZEQiAvKiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1MuY3BwICovOyB9
OwogCQkyREE5NDRBMzE4ODRFNEYwMDBFRDg2REIgLyogV2ViVG91Y2hFdmVudElPUy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDQ5QzE4ODRF
NEYwMDBFRDg2REIgLyogV2ViVG91Y2hFdmVudElPUy5jcHAgKi87IH07CiAJCTJEQTk0NEE0MTg4
NEU0RjAwMEVEODZEQiAvKiBHZXN0dXJlVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NDlEMTg4NEU0RjAwMEVEODZEQiAvKiBHZXN0dXJl
VHlwZXMuaCAqLzsgfTsKLQkJMkRBOTQ0QTcxODg0RTk0ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0
QTYxODg0RTk0ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9TLm1tICovOyB9OwogCQkyREE5NDRBRDE4
ODRFOUJBMDBFRDg2REIgLyogVGV4dENoZWNrZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDRBOTE4ODRFOUJBMDBFRDg2REIgLyogVGV4
dENoZWNrZXJJT1MubW0gKi87IH07CiAJCTJEQTk0NEFGMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQ
YWdlUHJveHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyREE5NDRBQjE4ODRFOUJBMDBFRDg2REIgLyogV2ViUGFnZVByb3h5SU9TLm1tICovOyB9
OwogCQkyREE5NDRCMDE4ODRFOUJBMDBFRDg2REIgLyogV2ViUHJvY2Vzc1Byb3h5SU9TLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0QUMxODg0
RTlCQTAwRUQ4NkRCIC8qIFdlYlByb2Nlc3NQcm94eUlPUy5tbSAqLzsgfTsKQEAgLTI3NjYsNyAr
Mjc2NSw2IEBACiAJCTJEQTk0NDlCMTg4NEU0RjAwMEVEODZEQiAvKiBXZWJQbGF0Zm9ybVRvdWNo
UG9pbnRJT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUGxh
dGZvcm1Ub3VjaFBvaW50SU9TLmNwcDsgcGF0aCA9IGlvcy9XZWJQbGF0Zm9ybVRvdWNoUG9pbnRJ
T1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREE5NDQ5QzE4ODRFNEYwMDBF
RDg2REIgLyogV2ViVG91Y2hFdmVudElPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBXZWJUb3VjaEV2ZW50SU9TLmNwcDsgcGF0aCA9IGlvcy9XZWJUb3VjaEV2ZW50
SU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0OUQxODg0RTRGMDAw
RUQ4NkRCIC8qIEdlc3R1cmVUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBHZXN0dXJlVHlwZXMuaDsgcGF0aCA9IGlvcy9HZXN0dXJlVHlwZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMkRBOTQ0QTYxODg0RTk0ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRG93bmxvYWRJT1Mu
bW07IHBhdGggPSBEb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyREE5NDRBOTE4ODRFOUJBMDBFRDg2REIgLyogVGV4dENoZWNrZXJJT1Mu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXh0Q2hlY2tlcklP
Uy5tbTsgcGF0aCA9IGlvcy9UZXh0Q2hlY2tlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkRBOTQ0QUIxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlBhZ2VQcm94eUlPUy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlBhZ2VQcm94eUlPUy5t
bTsgcGF0aCA9IGlvcy9XZWJQYWdlUHJveHlJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJEQTk0NEFDMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQcm9jZXNzUHJveHlJT1MubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJQcm9jZXNzUHJveHlJ
T1MubW07IHBhdGggPSBpb3MvV2ViUHJvY2Vzc1Byb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTA1NCw3ICs1MDUyLDYgQEAKIAkJMkRBOTQ0QTUxODg0RTkzQzAwRUQ4
NkRCIC8qIGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0J
CQkJMkRBOTQ0QTYxODg0RTk0ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9TLm1tICovLAogCQkJKTsK
IAkJCW5hbWUgPSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTMyMSw3ICs5
MzE4LDYgQEAKIAkJCQk1MThFOEYwNzE2QjIwOTM3MDBFOTE0MjkgLyogRG93bmxvYWQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTE4RThGMDkxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkQXV0
aGVudGljYXRpb25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFERjYzMTIxOEUwQjdD
ODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMkRBOTQ0
QTcxODg0RTk0ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTE4RThGMEQxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkTWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTE4RThGMEIxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkTWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQUI3RDRDQjEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94
eS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAkocmV2aXNpb24gMTgwMTQ5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQg
V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UKICAgICBpZiAocGFyYW1ldGVycy5z
aG91bGRVc2VGb250U21vb3RoaW5nKQogICAgICAgICBzZXRTaG91bGRVc2VGb250U21vb3RoaW5n
KHRydWUpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgU2Vzc2lvblRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKHBhcmFt
ZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CiAjZW5kaWYKIApAQCAtNDg3LDE0ICs0
ODcsMTQgQEAgdm9pZCBXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQwogCiB2b2lk
IFdlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Np
b25JRCkKIHsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNP
VVApCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsKICNl
bmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5F
VFdPUkspIHx8IFVTRShTT1VQKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKICAg
ICBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oc2Vzc2lvbklEKTsKICNlbmRpZgogfQpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDE4MDE1NikKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0SmF2
YVNjcmlwdENhbkFjYwogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBib29sIGVuYWJsZWQpCiB7CiAgICAg
Ly8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVGhpcyB0ZXN0LW9ubHkgZnVuY3Rpb24gZG9lc24n
dCB3b3JrIHdpdGggTmV0d29ya1Byb2Nlc3MsIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE1Mjc0Pi4KLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09S
SykgfHwgVVNFKFNPVVApCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIGlm
IChlbmFibGVkKQogICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsK
ICAgICBlbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCShyZXZp
c2lvbiAxODAxNDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMiwxMyArMTMy
LDYgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAgICBJTklU
KFdpbmRvd1NldEFscGhhKTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCi0jaWYgVVNFKENG
TkVUV09SSykKLSAgICAgICAgSU5JVChHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UpOwotICAg
ICAgICBJTklUKENvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UpOwotICAgICAg
ICBJTklUKFNldENGVVJMUmVxdWVzdFNob3VsZENvbnRlbnRTbmlmZik7Ci0gICAgICAgIElOSVQo
U2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKTsKLSNlbmRpZgotCiAjaWYgIVBMQVRGT1JNKElPUykK
ICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJzKTsKICAgICAg
ICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXREZWZhdWx0Vm9pY2VJZGVudGlmaWVyRm9yTG9jYWxl
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDE4MDE0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTMsMTEg
KzkzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0
aWFsaXplKCkKIHsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIG1fcGFnZS0+YWRkU2NoZWR1bGVQ
YWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBnZXRD
RlJ1bkxvb3BdLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpKTsKLSNlbHNlCiAgICAgbV9wYWdlLT5h
ZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUoW05TUnVuTG9vcCBjdXJyZW50UnVu
TG9vcF0sIGtDRlJ1bkxvb3BDb21tb25Nb2RlcykpOwotI2VuZGlmCiAKICAgICBXS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0KiBtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBbW1tXS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5oCShyZXZpc2lv
biAxODAxNDkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdFZlcnNpb25DaGVja3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQAogI2RlZmluZSBXRUJLSVRfRklSU1Rf
VkVSU0lPTl9XSVRIX0NTU19BVFRSSUJVVEVfU0VUVEVSU19JR05PUklOR19QUklPUklUWSAyMjM5
IC8vIGlPUyA2LjAKICNkZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9ZT1VUVUJFX0VN
QkVEX0lGUkFNRV9UUkFOU0ZPUk0gMjIzOSAvLyBpT1MgNi4wCiAjZGVmaW5lIFdFQktJVF9GSVJT
VF9WRVJTSU9OX1dJVEhPVVRfTEVHQUNZX0JBQ0tHUk9VTkRTSVpFX1NIT1JUSEFORF9CRUhBVklP
UiAyNjY1IC8vIGlPUyA3LjAKKyNkZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9MT0FE
SU5HX0RVUklOR19DT01NT05fUlVOTE9PUF9NT0RFUyAyNjY1IC8vIGlPUyA3LjAKICNlbmRpZiAv
LyBQTEFURk9STShJT1MpCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTgwMTQ5KQorKysgU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEzLDEyICsxMDEzLDEz
IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKIAogI2lmICFQTEFU
Rk9STShJT1MpCiAgICAgTlNSdW5Mb29wICpydW5Mb29wID0gW05TUnVuTG9vcCBtYWluUnVuTG9v
cF07Ci0KKyNlbHNlCisgICAgTlNSdW5Mb29wICpydW5Mb29wID0gV2ViVGhyZWFkTlNSdW5Mb29w
KCk7CisjZW5kaWYKICAgICBpZiAoV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9W
RVJTSU9OX1dJVEhfTE9BRElOR19EVVJJTkdfQ09NTU9OX1JVTkxPT1BfTU9ERVMpKQogICAgICAg
ICBbc2VsZiBzY2hlZHVsZUluUnVuTG9vcDpydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopa0NG
UnVuTG9vcENvbW1vbk1vZGVzXTsKICAgICBlbHNlCiAgICAgICAgIFtzZWxmIHNjaGVkdWxlSW5S
dW5Mb29wOnJ1bkxvb3AgZm9yTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZV07Ci0jZW5kaWYKIAog
ICAgIFtzZWxmIF9hZGRUb0FsbFdlYlZpZXdzU2V0XTsKICAgICAKQEAgLTY1ODUsMjkgKzY1ODYs
MTkgQEAgLSAoQk9PTCl2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtOihpZCA8TgogCiBAaW1wbGVt
ZW50YXRpb24gV2ViVmlldyAoV2ViUGVuZGluZ1B1YmxpYykKIAotI2lmICFQTEFURk9STShJT1Mp
CiAtICh2b2lkKXNjaGVkdWxlSW5SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1vZGU6
KE5TU3RyaW5nICopbW9kZQogewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZSdW5Mb29wUmVm
IHNjaGVkdWxlUGFpclJ1bkxvb3AgPSBbcnVuTG9vcCBnZXRDRlJ1bkxvb3BdOwotI2Vsc2UKICAg
ICBOU1J1bkxvb3AgKnNjaGVkdWxlUGFpclJ1bkxvb3AgPSBydW5Mb29wOwotI2VuZGlmCiAgICAg
aWYgKHJ1bkxvb3AgJiYgbW9kZSkKICAgICAgICAgY29yZShzZWxmKS0+YWRkU2NoZWR1bGVQYWly
KFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHNjaGVkdWxlUGFpclJ1bkxvb3AsIChDRlN0cmluZ1JlZilt
b2RlKSk7CiB9CiAKIC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5Mb29wOihOU1J1bkxvb3AgKily
dW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZQogewotI2lmIFVTRShDRk5FVFdPUkspCi0g
ICAgQ0ZSdW5Mb29wUmVmIHNjaGVkdWxlUGFpclJ1bkxvb3AgPSBbcnVuTG9vcCBnZXRDRlJ1bkxv
b3BdOwotI2Vsc2UKICAgICBOU1J1bkxvb3AgKnNjaGVkdWxlUGFpclJ1bkxvb3AgPSBydW5Mb29w
OwotI2VuZGlmCiAgICAgaWYgKHJ1bkxvb3AgJiYgbW9kZSkKICAgICAgICAgY29yZShzZWxmKS0+
cmVtb3ZlU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHNjaGVkdWxlUGFpclJ1bkxv
b3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CiB9Ci0jZW5kaWYKIAogc3RhdGljIEJPT0wgZmluZFN0
cmluZyhOU1ZpZXcgPFdlYkRvY3VtZW50U2VhcmNoaW5nPiAqc2VhcmNoVmlldywgTlNTdHJpbmcg
KnN0cmluZywgV2ViRmluZE9wdGlvbnMgb3B0aW9ucykKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDE4MDE0OSkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTk4LDEwICsxOTgsOCBAQCBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdFZGl0aW5nQWN0aW9u
CiAKIEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViUGVuZGluZ1B1YmxpYykKIAotI2lmICFUQVJHRVRf
T1NfSVBIT05FCiAtICh2b2lkKXNjaGVkdWxlSW5SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29w
IGZvck1vZGU6KE5TU3RyaW5nICopbW9kZTsKIC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5Mb29w
OihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZTsKLSNlbmRpZgog
CiAtIChCT09MKWZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KFdlYkZpbmRP
cHRpb25zKW9wdGlvbnM7CiAtIChET01SYW5nZSAqKURPTVJhbmdlT2ZTdHJpbmc6KE5TU3RyaW5n
ICopc3RyaW5nIHJlbGF0aXZlVG86KERPTVJhbmdlICopcHJldmlvdXNSYW5nZSBvcHRpb25zOihX
ZWJGaW5kT3B0aW9ucylvcHRpb25zOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246814</attachid>
            <date>2015-02-18 07:09:12 -0800</date>
            <delta_ts>2015-12-16 09:49:38 -0800</delta_ts>
            <desc>rebased</desc>
            <filename>remove-cocoa-cfnetwork-9.patch</filename>
            <type>text/plain</type>
            <size>93893</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTgwMjY0KQorKysgU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNTE3LDkgKzUxNyw2IEBACiAjaWYgUExBVEZPUk0o
SU9TKQogCiAjZGVmaW5lIEhBVkVfUkVBRExJTkUgMQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCi0jZGVmaW5lIFdURl9VU0VfQ0ZORVRXT1JLIDEKLSNlbmRpZgogI2RlZmluZSBXVEZfVVNF
X1VJS0lUX0VESVRJTkcgMQogI2RlZmluZSBXVEZfVVNFX1dFQl9USFJFQUQgMQogI2RlZmluZSBX
VEZfVVNFX1FVSUNLX0xPT0sgMQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgJKHJldmlzaW9uIDE4MDI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSwxMCBAQAogI2luY2x1ZGUgIlF1
aWNrTG9vay5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYv
U2NoZWR1bGVQYWlyLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xh
c3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7CkBAIC0xNDIsNyArMTQ2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmlu
Z1dpdGhEaXJlY3Rpb24mKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBvdmVycmlkZUVuY29kaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZUVuY29kaW5nOyB9CiAKLSNpZiBQTEFURk9STShN
QUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIHZvaWQgc2NoZWR1bGUoU2NoZWR1bGVQ
YWlyJik7CiAgICAgICAgIHZvaWQgdW5zY2hlZHVsZShTY2hlZHVsZVBhaXImKTsKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAx
ODAyNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MjksNyArNjI5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVjZWl2
ZWRDYW5jZWxsYXRpbwogICAgIGNhbmNlbCgpOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lm
IFBMQVRGT1JNKENPQ09BKQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpzY2hlZHVsZShTY2hlZHVs
ZVBhaXImIHBhaXIpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aAkocmV2aXNpb24gMTgwMjY0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHdpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpOwogCi0jaWYgUExBVEZPUk0oTUFD
KQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBh
aXImKTsKICAgICB2b2lkIHVuc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXImKTsKICNlbmRpZgpA
QCAtMTU3LDEyICsxNTcsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBjb25zdCBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMmIG9wdGlvbnMoKSB7IHJldHVybiBtX29wdGlvbnM7IH0KIAotI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0
dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiwgTlNDYWNoZWRVUkxSZXNwb25zZSopIG92ZXJyaWRlOwogI2VuZGlmCi0jaWYgUExBVEZPUk0o
Q09DT0EpICYmIFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZikgb3ZlcnJpZGU7Ci0jZW5kaWYKIAogICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gbV9o
YW5kbGU7CiAgICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOwpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDE4MDI2NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Mywx
MiArNzMsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNF
KENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIE5TQ2FjaGVkVVJM
UmVzcG9uc2UgKndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxS
ZXNwb25zZSopIG92ZXJyaWRlOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShD
Rk5FVFdPUkspCi0gICAgdmlydHVhbCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJl
c3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7
Ci0jZW5kaWYKIAogI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNEYXRhQXJyYXkoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFj
LmNwcAkocmV2aXNpb24gMTgwMjY0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1
bWVudExvYWRlck1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDYgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgUExBVEZPUk0oTUFDKQotCiBzdGF0aWMgdm9pZCBzY2hl
ZHVsZUFsbChjb25zdCBSZXNvdXJjZUxvYWRlck1hcCYgbG9hZGVycywgU2NoZWR1bGVQYWlyJiBw
YWlyKQogewogICAgIFZlY3RvcjxSZWZQdHI8UmVzb3VyY2VMb2FkZXI+PiBsb2FkZXJzQ29weTsK
QEAgLTY5LDYgKzY3LDQgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6dW5zY2hlZHVsZShTY2hlZHVs
ZQogICAgIHVuc2NoZWR1bGVBbGwobV9tdWx0aXBhcnRTdWJyZXNvdXJjZUxvYWRlcnMsIHBhaXIp
OwogfQogCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQkocmV2aXNpb24gMTgwMjY0KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNDAsMTkgKzQwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNF
KENGTkVUV09SSykKLQotQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBSZXNvdXJjZUxvYWRlcjo6d2ls
bENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNh
Y2hlZFJlc3BvbnNlKQotewotICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MoKSA9
PSBEb05vdFNlbmRDYWxsYmFja3MpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmV0YWluUHRy
PE5TQ2FjaGVkVVJMUmVzcG9uc2U+IG5zQ2FjaGVkUmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNDYWNo
ZWRVUkxSZXNwb25zZSBhbGxvY10gX2luaXRXaXRoQ0ZDYWNoZWRVUkxSZXNwb25zZTpjYWNoZWRS
ZXNwb25zZV0pOwotICAgIHJldHVybiBbZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hl
UmVzcG9uc2UoZG9jdW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCBuc0NhY2hlZFJlc3BvbnNl
LmdldCgpKSBfQ0ZDYWNoZWRVUkxSZXNwb25zZV07Ci19Ci0KLSNlbHNlCi0KIE5TQ2FjaGVkVVJM
UmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRs
ZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNlKQogewogICAgIGlmIChtX29wdGlvbnMu
c2VuZExvYWRDYWxsYmFja3MoKSA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBAIC02MCw4ICs0Nyw2
IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWwKICAgICByZXR1cm4g
ZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9jdW1lbnRMb2FkZXIo
KSwgaWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9CiAKLSNlbmRpZgotCiAjaWYgVVNFKE5FVFdP
UktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCShyZXZpc2lvbiAxODAyNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05NCwxMCArOTQsNiBAQAogI2ltcG9ydCA8VmlkZW9Ub29s
Ym94L1ZpZGVvVG9vbGJveC5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2luY2x1
ZGUgIkNGTlNVUkxDb25uZWN0aW9uU1BJLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIHN0ZCB7CiB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6
Ok1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQz4+OjppdGVyYXRvcj4gewogICAgIHR5cGVkZWYg
UmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQz4gdmFsdWVfdHlwZTsK
QEAgLTM5MSw1OCArMzg3LDYgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUHVsbERl
bGVnYQogfQogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotY2xhc3MgV2ViQ29yZU5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3Jl
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudD4sIHB1YmxpYyBBdXRoZW50aWNhdGlv
bkNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUNsaWVudD4gY3JlYXRlKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKmNoYWxsZW5nZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29y
ZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQoY2hhbGxlbmdlKSk7Ci0gICAgfQot
Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUNsaWVudD46OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQ2xpZW50Pjo6ZGVyZWY7Ci0KLXByaXZhdGU6Ci0gICAgV2ViQ29yZU5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSAqY2hhbGxlbmdlKQotICAgICAgICA6IG1fY2hhbGxlbmdlKGNoYWxsZW5nZSkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChtX2NoYWxsZW5nZSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lk
IHJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZpcnR1
YWwgdm9pZCBkZXJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKLSAgICB7Ci0gICAg
ICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSB1c2VDcmVkZW50aWFsOmNyZWRlbnRpYWwubnNDcmVk
ZW50aWFsKCkgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCldOwot
ICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91
dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQotICAgIHsKLSAgICAg
ICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAgdmly
dHVhbCB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJikKLSAgICB7Ci0gICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSBjYW5jZWxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAgdmlydHVh
bCB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYpCi0gICAgewotICAgICAgICBpZiAoW1ttX2NoYWxsZW5nZSBz
ZW5kZXJdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGVyZm9ybURlZmF1bHRIYW5kbGlu
Z0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOildKQotICAgICAgICAgICAgW1ttX2NoYWxsZW5n
ZSBzZW5kZXJdIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVk
Q2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKLSAgICB7
Ci0gICAgICAgIGlmIChbW21fY2hhbGxlbmdlIHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6KV0p
Ci0gICAgICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gcmVqZWN0UHJvdGVjdGlvblNwYWNl
QW5kQ29udGludWVXaXRoQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAg
ICBSZXRhaW5QdHI8TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gbV9jaGFsbGVuZ2U7Ci19
OwotI2VuZGlmCi0KIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGUoTWVkaWFQbGF5ZXIqIHBsYXll
cikKIHsgCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDKHBsYXllcikpOwpAQCAtMTczNCwxMyArMTY3OCw3IEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIG5zQ2hhbGxlbmdlKQogewotI2lmIFVT
RShDRk5FVFdPUkspCi0gICAgUmVmUHRyPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ2xpZW50PiBjbGllbnQgPSBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNs
aWVudDo6Y3JlYXRlKG5zQ2hhbGxlbmdlKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxBdXRoQ2hhbGxl
bmdlUmVmPiBjZkNoYWxsZW5nZSA9IGFkb3B0Q0YoW25zQ2hhbGxlbmdlIF9jcmVhdGVDRkF1dGhD
aGFsbGVuZ2VdKTsKLSAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UoY2ZDaGFs
bGVuZ2UuZ2V0KCksIGNsaWVudC5nZXQoKSk7Ci0jZWxzZQogICAgIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlIGNoYWxsZW5nZShuc0NoYWxsZW5nZSk7Ci0jZW5kaWYKIAogICAgIHJldHVybiBwbGF5
ZXIoKS0+c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFs
bGVuZ2UpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0JKHJldmlzaW9uIDE4MDI2NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC02MywxMyArNjMsNiBAQCBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tD
RlVSTFJlcXVlc3RBbGxvCiBXRUJDT1JFX0VYUE9SVCBDRkFycmF5UmVmICgqd2tDb3B5TlNVUkxS
ZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4pKE5TVVJMUmVzcG9uc2UqKTsKIFdFQkNPUkVfRVhQT1JU
IENGU3RyaW5nRW5jb2RpbmcgKCp3a0dldFdlYkRlZmF1bHRDRlN0cmluZ0VuY29kaW5nKSh2b2lk
KTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi1XRUJDT1JFX0VYUE9SVCBDRkhUVFBDb29raWVTdG9y
YWdlUmVmICgqd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UpKCk7Ci1XRUJDT1JFX0VYUE9S
VCBXS0NGVVJMQ3JlZGVudGlhbFJlZiAoKndrQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50
U3RvcmFnZSkoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlKTsKLVdFQkNP
UkVfRVhQT1JUIHZvaWQgKCp3a1NldENGVVJMUmVxdWVzdFNob3VsZENvbnRlbnRTbmlmZikoQ0ZN
dXRhYmxlVVJMUmVxdWVzdFJlZiwgYm9vbCk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRS
ZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIENGTXV0YWJsZVVS
TFJlcXVlc3RSZWYpOwotI2VuZGlmCi0KICNpZiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKIFdF
QkNPUkVfRVhQT1JUIENHQ29udGV4dFJlZiAoKndrSU9TdXJmYWNlQ29udGV4dENyZWF0ZSkoSU9T
dXJmYWNlUmVmIHN1cmZhY2UsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIENHQ29s
b3JTcGFjZVJlZiBjb2xvclNwYWNlKTsKIFdFQkNPUkVfRVhQT1JUIENHSW1hZ2VSZWYgKCp3a0lP
U3VyZmFjZUNvbnRleHRDcmVhdGVJbWFnZSkoQ0dDb250ZXh0UmVmIGNvbnRleHQpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLmgJKHJl
dmlzaW9uIDE4MDI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29y
ZVRocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBXZWJUaHJlYWRTaG91bGRZaWVsZCgKIHN0YXRpYyBpbmxpbmUgdm9pZCBXZWJUaHJlYWRT
ZXRTaG91bGRZaWVsZCgpIHsgd2ViVGhyZWFkU2hvdWxkWWllbGQgPSB0cnVlOyB9CiAKIFdFQkNP
UkVfRVhQT1JUIENGUnVuTG9vcFJlZiBXZWJUaHJlYWRSdW5Mb29wKHZvaWQpOwotTlNSdW5Mb29w
KiBXZWJUaHJlYWROU1J1bkxvb3Aodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBOU1J1bkxvb3AqIFdl
YlRocmVhZE5TUnVuTG9vcCh2b2lkKTsKIFdlYlRocmVhZENvbnRleHQgKldlYlRocmVhZEN1cnJl
bnRDb250ZXh0KHZvaWQpOwogYm9vbCBXZWJUaHJlYWRDb250ZXh0SXNDdXJyZW50KHZvaWQpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lz
dGVtSW50ZXJmYWNlLmgJKHJldmlzaW9uIDE4MDI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4MSwx
MiArMjgxLDYgQEAgZXh0ZXJuIHZvaWQgKCp3a1NldENGVVJMUmVzcG9uc2VNSU1FVHlwZQogCiBl
eHRlcm4gdm9pZCgqd2tEZXN0cm95UmVuZGVyaW5nUmVzb3VyY2VzKSh2b2lkKTsKIAotI2lmIFVT
RShDRk5FVFdPUkspCi1leHRlcm4gQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiAoKndrR2V0RGVmYXVs
dEhUVFBDb29raWVTdG9yYWdlKSgpOwotZXh0ZXJuIFdLQ0ZVUkxDcmVkZW50aWFsUmVmICgqd2tD
b3B5Q3JlZGVudGlhbEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKShDRlVSTFByb3RlY3Rpb25TcGFj
ZVJlZiBwcm90ZWN0aW9uU3BhY2UpOwotZXh0ZXJuIHZvaWQgKCp3a1NldENGVVJMUmVxdWVzdFNo
b3VsZENvbnRlbnRTbmlmZikoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiwgYm9vbCk7Ci1leHRlcm4g
dm9pZCAoKndrU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
LCBDRk11dGFibGVVUkxSZXF1ZXN0UmVmKTsKLSNlbmRpZgogI2lmICFQTEFURk9STShJT1MpCiBl
eHRlcm4gdm9pZCAoKndrU2V0TWV0YWRhdGFVUkwpKE5TU3RyaW5nICp1cmxTdHJpbmcsIE5TU3Ry
aW5nICpyZWZlcnJlciwgTlNTdHJpbmcgKnBhdGgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQko
cmV2aXNpb24gMTgwMjY0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTkzLDEzICs5Myw2IEBAIHZvaWQg
KCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWEKIHZvaWQgKCp3a1NldENPTk5FQ1RQ
cm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYg
cHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0NvcHlDT05O
RUNUUHJveHlSZXNwb25zZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiByZXNwb25zZVVSTCwg
Q0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwogCi0jaWYgVVNF
KENGTkVUV09SSykKLUNGSFRUUENvb2tpZVN0b3JhZ2VSZWYgKCp3a0dldERlZmF1bHRIVFRQQ29v
a2llU3RvcmFnZSkoKTsKLVdLQ0ZVUkxDcmVkZW50aWFsUmVmICgqd2tDb3B5Q3JlZGVudGlhbEZy
b21DRlBlcnNpc3RlbnRTdG9yYWdlKShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9u
U3BhY2UpOwotdm9pZCAoKndrU2V0Q0ZVUkxSZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZmKShDRk11
dGFibGVVUkxSZXF1ZXN0UmVmLCBib29sKTsKLXZvaWQgKCp3a1NldFJlcXVlc3RTdG9yYWdlU2Vz
c2lvbikoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiwgQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZik7Ci0j
ZW5kaWYKLQogdm9pZCogd2tHZXRIeXBoZW5hdGlvbkxvY2F0aW9uQmVmb3JlSW5kZXg7CiAKIENH
Q29udGV4dFJlZiAoKndrSU9TdXJmYWNlQ29udGV4dENyZWF0ZSkoSU9TdXJmYWNlUmVmIHN1cmZh
Y2UsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIENHQ29sb3JTcGFjZVJlZiBjb2xv
clNwYWNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlv
blNwYWNlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcAkocmV2aXNpb24gMTgwMjY0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgi
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKSAmJiAhUExBVEZPUk0oQ09DT0EpCisjaWYgVVNFKENGTkVU
V09SSykKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3Jr
L0NGVVJMUHJvdGVjdGlvblNwYWNlUHJpdi5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgJKHJldmlzaW9uIDE4MDI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDcgKzEyMyw3IEBAIHB1
YmxpYzoKICAgICBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29u
c3QgUHJvdGVjdGlvblNwYWNlJik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAh
VVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRpZENhbmNlbEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uKCkgY29uc3Q7CiAg
ICAgaWQgbWFrZURlbGVnYXRlKGJvb2wpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKICNp
ZiBVU0UoQ0ZORVRXT1JLKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udGludWVXaWxsQ2Fj
aGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKICNlbmRpZgotI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoTlNDYWNoZWRVUkxSZXNw
b25zZSAqKTsKICNlbmRpZgogCkBAIC0yMzMsMTAgKzIzMyw2IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQ0ZTdHJpbmdSZWYgc3luY2hyb25vdXNMb2FkUnVuTG9vcE1vZGUo
KTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAgIHN0
YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGNyZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxS
ZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotI2VuZGlmCi0KICAgICB0eXBlZGVmIFBh
c3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+ICgqQnVpbHRpbkNvbnN0cnVjdG9yKShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpOwogICAg
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyQnVpbHRpbkNvbnN0cnVjdG9yKGNvbnN0IEF0b21pY1N0cmlu
ZyYgcHJvdG9jb2wsIEJ1aWx0aW5Db25zdHJ1Y3Rvcik7CiAKQEAgLTI3MSwxMSArMjY3LDExIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VD
cmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhh
dmlvciwgQ0ZEaWN0aW9uYXJ5UmVmIGNsaWVudFByb3BlcnRpZXMpOwogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShNQUMpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKE1BQykKICAgICB2
b2lkIGNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlv
cik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgIVVTRShDRk5FVFdPUkspCisjaWYg
UExBVEZPUk0oSU9TKQogICAgIHZvaWQgY3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRl
LCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlm
ZiwgU2NoZWR1bGluZ0JlaGF2aW9yLCBOU0RpY3Rpb25hcnkgKmNvbm5lY3Rpb25Qcm9wZXJ0aWVz
KTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAkocmV2aXNpb24gMTgwMjY0KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE0MCwxMSArMTQwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBSZXNvdXJjZVJlcXVlc3QgbV9jdXJyZW50UmVxdWVzdDsKICAgICAgICAgUmVmUHRy
PFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU+IG1fY29ubmVjdGlvbkRlbGVn
YXRlOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgICAgICBSZXRhaW5QdHI8TlNVUkxDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb247CiAgICAgICAgIFJldGFpblB0cjxpZD4gbV9kZWxlZ2F0ZTsKLSNlbmRpZgotI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgICAgICBib29sIG1fc3RhcnRXaGVuU2NoZWR1bGVkOwogI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25D
Ri5jcHAJKHJldmlzaW9uIDE4MDI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEzICs1Myw4
IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkMKIAogQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5n
ZVJlZiBjZkNoYWxsZW5nZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQpCi0j
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UoUHJv
dGVjdGlvblNwYWNlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjZkNoYWxs
ZW5nZSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWRlbnRpYWwoQ0ZV
UkxBdXRoQ2hhbGxlbmdlR2V0UHJvcG9zZWRDcmVkZW50aWFsKGNmQ2hhbGxlbmdlKSksCi0jZWxz
ZQogICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKGNvcmUoQ0ZVUkxBdXRoQ2hhbGxl
bmdlR2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRlbnRp
YWwoY2ZDaGFsbGVuZ2UpKSwKLSNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENGVVJMQXV0aENoYWxsZW5nZUdldFByZXZpb3VzRmFpbHVyZUNvdW50KGNmQ2hhbGxlbmdl
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0ZVUkxSZXNwb25zZVJlZilD
RlVSTEF1dGhDaGFsbGVuZ2VHZXRGYWlsdXJlUmVzcG9uc2UoY2ZDaGFsbGVuZ2UpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGVVJMQXV0aENoYWxsZW5nZUdldEVycm9yKGNm
Q2hhbGxlbmdlKSkKQEAgLTkzLDE0ICs4OCwxMCBAQCBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY3Jl
YXRlQ0YoY29uc3QgQXV0CiB7CiAgICAgLy8gRklYTUU6IFdoeSBub3QgY2FjaGUgQ0ZVUkxBdXRo
Q2hhbGxlbmdlUmVmIGluIG1fY2ZDaGFsbGVuZ2U/IEZvdW5kYXRpb24gY291bnRlcnBhcnQgZG9l
cyB0aGF0LgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVm
IHJlc3VsdCA9IENGVVJMQXV0aENoYWxsZW5nZUNyZWF0ZSgwLCBjb3JlQ2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZSgpLmNmU3BhY2UoKSwgY29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwo
KS5jZkNyZWRlbnRpYWwoKSwKLSNlbHNlCiAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJl
Zj4gY3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm9wb3NlZENy
ZWRlbnRpYWwoKSkpOwogICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gcHJv
dGVjdGlvblNwYWNlID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZSgpKSk7CiAKICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgcmVzdWx0ID0gQ0ZVUkxBdXRo
Q2hhbGxlbmdlQ3JlYXRlKDAsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSwgY3JlZGVudGlhbC5nZXQo
KSwKLSNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVD
aGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb3JlQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmNmVVJMUmVz
cG9uc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlQ2hh
bGxlbmdlLmVycm9yKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Db29raWVKYXJDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAJKHJldmlzaW9uIDE4MDI2NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShXSU4pIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPD0gMTA5MCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCA4MDAwMCkKKyNpZiBQTEFURk9STShXSU4pCiBlbnVt
IHsKICAgICBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFp
bkRvY3VtZW50RG9tYWluID0gMwogfTsKQEAgLTEwMywxMyArMTAzLDkgQEAgc3RhdGljIFJldGFp
blB0cjxDRkFycmF5UmVmPiBjb3B5Q29va2llcwogewogICAgIGJvb2wgc2VjdXJlID0gdXJsLnBy
b3RvY29sSXMoImh0dHBzIik7CiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSA4MDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDApCi0gICAgcmV0dXJuIGFkb3B0Q0Yo
X0NGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTFdpdGhNYWluRG9jdW1lbnRVUkwo
c2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHVybC5jcmVhdGVDRlVSTCgpLmdldCgpLCBm
aXJzdFBhcnR5LmNyZWF0ZUNGVVJMKCkuZ2V0KCksIHNlY3VyZSkpOwotI2Vsc2UKICAgICAvLyBf
Q0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9yVVJMV2l0aE1haW5Eb2N1bWVudFVSTCBp
cyBub3QgYXZhaWxhYmxlIG9uIG90aGVyIHBsYXRmb3Jtcy4KICAgICBVTlVTRURfUEFSQU0oZmly
c3RQYXJ0eSk7CiAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29r
aWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmwuY3JlYXRlQ0ZVUkwo
KS5nZXQoKSwgc2VjdXJlKSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBzZXRDb29raWVzRnJvbURPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0
b3JhZ2VDRk5ldC5jcHAJKHJldmlzaW9uIDE4MDI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDQyICszMywxOCBAQAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIldl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbGlmIFBMQVRGT1JNKFdJTikKKyNpZiBQTEFURk9S
TShXSU4pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVy
ZmFjZS5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSA8Q0ZOZXR3b3Jr
L0NGVVJMQ3JlZGVudGlhbFN0b3JhZ2UuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIENyZWRlbnRpYWwgQ3JlZGVudGlhbFN0b3JhZ2U6OmdldEZyb21QZXJzaXN0ZW50U3RvcmFn
ZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFsQ0Yg
PSBhZG9wdENGKHdrQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFnZShwcm90ZWN0
aW9uU3BhY2UuY2ZTcGFjZSgpKSk7Ci0gICAgcmV0dXJuIENyZWRlbnRpYWwoY3JlZGVudGlhbENG
LmdldCgpKTsKLSNlbHNlCiAgICAgUmV0YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNlUmVmPiBw
cm90ZWN0aW9uU3BhY2VDRiA9IGFkb3B0Q0YoY3JlYXRlQ0YocHJvdGVjdGlvblNwYWNlKSk7CiAg
ICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbENGID0gYWRvcHRDRih3
a0NvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UocHJvdGVjdGlvblNwYWNlQ0Yu
Z2V0KCkpKTsKICAgICByZXR1cm4gY29yZShjcmVkZW50aWFsQ0YuZ2V0KCkpOwotI2VuZGlmCi19
Ci0KLSNpZiBQTEFURk9STShJT1MpCi12b2lkIENyZWRlbnRpYWxTdG9yYWdlOjpzYXZlVG9QZXJz
aXN0ZW50U3RvcmFnZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgY29u
c3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50
aWFsU3RvcmFnZVJlZj4gc3RvcmFnZUNGID0gYWRvcHRDRihDRlVSTENyZWRlbnRpYWxTdG9yYWdl
Q3JlYXRlKDApKTsKLQotICAgIGlmIChjcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkgPT0gQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlTm9uZSkgewotICAgICAgICBDcmVkZW50aWFsIHNlc3Npb25DcmVkZW50
aWFsKGNyZWRlbnRpYWwsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb24pOwotICAgICAg
ICBDRlVSTENyZWRlbnRpYWxTdG9yYWdlU2V0RGVmYXVsdENyZWRlbnRpYWxGb3JQcm90ZWN0aW9u
U3BhY2Uoc3RvcmFnZUNGLmdldCgpLCBzZXNzaW9uQ3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwg
cHJvdGVjdGlvblNwYWNlLmNmU3BhY2UoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIENGVVJMQ3Jl
ZGVudGlhbFN0b3JhZ2VTZXREZWZhdWx0Q3JlZGVudGlhbEZvclByb3RlY3Rpb25TcGFjZShzdG9y
YWdlQ0YuZ2V0KCksIGNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIHByb3RlY3Rpb25TcGFjZS5j
ZlNwYWNlKCkpOwogfQotI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9y
LmgJKHJldmlzaW9uIDE4MDI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSwxNiArNjEsMTEgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIENGRXJyb3JSZWYgY2ZFcnJvcigpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIENGRXJyb3JSZWYoKSBjb25zdDsKIAotI2lmIFVTRShD
Rk5FVFdPUkspCi0jaWYgUExBVEZPUk0oV0lOKQorI2lmIFVTRShDRk5FVFdPUkspICYmIFBMQVRG
T1JNKFdJTikKICAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJy
b3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVk
RGVzY3JpcHRpb24sIENGRGF0YVJlZiBjZXJ0aWZpY2F0ZSk7CiAgICAgUENDRVJUX0NPTlRFWFQg
Y2VydGlmaWNhdGUoKSBjb25zdDsKICAgICB2b2lkIHNldENlcnRpZmljYXRlKENGRGF0YVJlZik7
CiAjZW5kaWYKLSAgICBSZXNvdXJjZUVycm9yKENGU3RyZWFtRXJyb3IgZXJyb3IpOwotICAgIENG
U3RyZWFtRXJyb3IgY2ZTdHJlYW1FcnJvcigpIGNvbnN0OwotICAgIG9wZXJhdG9yIENGU3RyZWFt
RXJyb3IoKSBjb25zdDsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09S
RV9FWFBPUlQgUmVzb3VyY2VFcnJvcihOU0Vycm9yICopOwpAQCAtODgsOSArODMsNiBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9kYXRhSXNVcFRvRGF0ZTsKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAg
IG11dGFibGUgUmV0YWluUHRyPENGRXJyb3JSZWY+IG1fcGxhdGZvcm1FcnJvcjsKLSNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICBtdXRhYmxlIFJldGFpblB0cjxOU0Vycm9yPiBtX3BsYXRmb3JtTlNF
cnJvcjsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBtX2NlcnRpZmljYXRlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAJKHJldmlz
aW9uIDE4MDI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDE2ICs1Miw2IEBACiAjaW5j
bHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oIgotI2luY2x1ZGUgIldlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaCIKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2luY2x1ZGUgIldlYkNvcmVVUkxS
ZXNwb25zZS5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb25Qcml2Lmg+Ci0j
aW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdFByaXYuaD4KLSNlbmRpZgotI2VuZGlmCi0K
ICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktp
dFN5c3RlbUludGVyZmFjZS5oPgogI2luY2x1ZGUgPHByb2Nlc3MuaD4KQEAgLTIxMSwxNCArMjAx
LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aQogICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ0ZVUkxDb25uZWN0
aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcywgc3RyZWFtUHJvcGVydGllcyk7CiAgICAgQ0ZSZWxl
YXNlKHN0cmVhbVByb3BlcnRpZXMpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYgKGNs
aWVudCgpICYmIGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSkKLSAgICAgICAgZC0+bV9j
b25uZWN0aW9uRGVsZWdhdGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZSh0aGlzKSk7Ci0gICAgZWxzZQotICAgICAg
ICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUodGhpcykpOwotI2Vsc2UKICAgICBkLT5t
X2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUodGhpcykpOwotI2VuZGlmCiAgICAgZC0+bV9jb25u
ZWN0aW9uRGVsZWdhdGUtPnNldHVwUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAogICAgIENGVVJM
Q29ubmVjdGlvbkNsaWVudF9WNiBjbGllbnQgPSBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+bWFr
ZUNvbm5lY3Rpb25DbGllbnQoKTsKQEAgLTMzNiwxMiArMzE5LDkgQEAgdm9pZCBSZXNvdXJjZUhh
bmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpYwogCiAgICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkg
JiYgIWQtPm1fcGFzcy5pc051bGwoKSkgewogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50
aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBkLT5tX3VzZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZC0+bV9w
YXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5j
ZU5vbmUpKTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50
aWFsID0gQ3JlZGVudGlhbChjZkNyZWRlbnRpYWwuZ2V0KCkpOwotI2Vsc2UKKwogICAgICAgICBD
cmVkZW50aWFsIGNyZWRlbnRpYWwgPSBjb3JlKGNmQ3JlZGVudGlhbC5nZXQoKSk7Ci0jZW5kaWYK
LSAgICAgICAgCisKICAgICAgICAgVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVu
Z2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAgICAgICAgICAg
ICB1cmxUb1N0b3JlID0gY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwpAQCAtMzcw
LDEyICszNTAsOCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljCiAg
ICAgICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRoZSBjcmVkZW50aWFsIGJhY2ssIHBvc3NpYmx5
IGFkZGluZyBpdCBhcyBhIGRlZmF1bHQgZm9yIHRoaXMgZGlyZWN0b3J5LgogICAgICAgICAgICAg
ICAgICAgICBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKSwgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpKTsKICAgICAg
ICAgICAgICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICAgICAgQ0ZVUkxD
b25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRpYWwu
Y2ZDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZWxz
ZQogICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVu
dGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOwogICAgICAgICAgICAgICAgIENG
VVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRl
bnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZW5kaWYK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQy
NSwyMCArNDAxLDEyIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCgK
ICAgICAgICAgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldCh3ZWJDcmVkZW50aWFsLCBjaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlKCksIHVybFRvU3RvcmUpOwogCiAgICAgICAgIGlmIChkLT5tX2Nvbm5l
Y3Rpb24pIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgIENGVVJMQ29ubmVjdGlv
blVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCB3ZWJDcmVkZW50aWFsLmNmQ3Jl
ZGVudGlhbCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2Vsc2UKICAg
ICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFk
b3B0Q0YoY3JlYXRlQ0Yod2ViQ3JlZGVudGlhbCkpOwogICAgICAgICAgICAgQ0ZVUkxDb25uZWN0
aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQo
KSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRpZgogICAgICAgICB9
CiAgICAgfSBlbHNlIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKLSNpZiBQTEFURk9STShDT0NPQSkK
LSAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0
KCksIGNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVu
Z2VSZWYoKSk7Ci0jZWxzZQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBj
ZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKICAgICAgICAgQ0ZV
UkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVu
dGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRpZgog
ICAgIH0KIAogICAgIGNsZWFyQXV0aGVudGljYXRpb24oKTsKQEAgLTU3OSwzMCArNTQ3LDYgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNMbwogICAgICAgICBDRlVSTENv
bm5lY3Rpb25SZXN1bWUoZC0+bV9jb25uZWN0aW9uLmdldCgpKTsKIH0KIAotI2lmIFBMQVRGT1JN
KENPQ09BKQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWly
KQotewotICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gcGFpci5ydW5Mb29wKCk7Ci0gICAgaWYg
KCFydW5Mb29wKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVs
ZVdpdGhSdW5Mb29wKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgcnVuTG9vcCwgcGFpci5tb2RlKCkp
OwotICAgIGlmIChkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCkgewotICAgICAgICBDRlVSTENvbm5l
Y3Rpb25TdGFydChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOwotICAgICAgICBkLT5tX3N0YXJ0V2hl
blNjaGVkdWxlZCA9IGZhbHNlOwotICAgIH0KLX0KLQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5z
Y2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCi17Ci0gICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3Ag
PSBwYWlyLnJ1bkxvb3AoKTsKLSAgICBpZiAoIXJ1bkxvb3ApCi0gICAgICAgIHJldHVybjsKLQot
ICAgIENGVVJMQ29ubmVjdGlvblVuc2NoZWR1bGVGcm9tUnVuTG9vcChkLT5tX2Nvbm5lY3Rpb24u
Z2V0KCksIHJ1bkxvb3AsIHBhaXIubW9kZSgpKTsKLX0KLSNlbmRpZgotCiBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIFJlc291cmNlSGFuZGxlOjpjdXJyZW50UmVxdWVzdCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGQtPm1fY3VycmVudFJlcXVlc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDE4MDI2NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEwICszMiw2IEBACiAjaW5j
bHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5o
IgotI2VuZGlmCi0KICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50
ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgJKHJl
dmlzaW9uIDE4MDI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDEyICs2NCw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgfQogICAgICAgICAKICNpZiBVU0UoQ0ZORVRXT1JLKQotI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZVJlcXVlc3Qo
TlNVUkxSZXF1ZXN0ICopOwotICAgICAgICB2b2lkIHVwZGF0ZU5TVVJMUmVxdWVzdCgpOwotICAg
ICAgICB2b2lkIGNsZWFyT3JVcGRhdGVOU1VSTFJlcXVlc3QoKTsKLSNlbmRpZgotCiAgICAgICAg
IFJlc291cmNlUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0KQogICAgICAgICAgICAg
OiBSZXNvdXJjZVJlcXVlc3RCYXNlKCkKICAgICAgICAgICAgICwgbV9jZlJlcXVlc3QoY2ZSZXF1
ZXN0KQpAQCAtODksMTEgKzgzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lk
IGFwcGx5V2ViQXJjaGl2ZUhhY2tGb3JNYWlsKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NP
QSkKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgICAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0
Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX2h0dHBCb2R5IHx8IG1fY2ZSZXF1ZXN0OyB9Ci0j
ZWxzZQogICAgICAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7
IHJldHVybiBtX2h0dHBCb2R5IHx8IG1fbnNSZXF1ZXN0OyB9Ci0jZW5kaWYKICAgICAgICAgV0VC
Q09SRV9FWFBPUlQgTlNVUkxSZXF1ZXN0ICpuc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xp
Y3kpIGNvbnN0OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAxODAyNjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNTMsOSArNTMsNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBt
X2lzTnVsbCA9ICFjZlJlc3BvbnNlOwogICAgIH0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBX
RUJDT1JFX0VYUE9SVCBSZXNvdXJjZVJlc3BvbnNlKE5TVVJMUmVzcG9uc2UgKik7Ci0jZW5kaWYK
ICNlbHNlCiAgICAgUmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNlKQog
ICAgICAgICA6IG1faW5pdExldmVsKFVuaW5pdGlhbGl6ZWQpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNl
Q0ZOZXQuY3BwCShyZXZpc2lvbiAxODAyNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDEwICszMyw2IEBACiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVzcG9uc2VQcml2Lmg+CiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVk
ZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2VuZGlmCi0KIC8vIFdlIHdvdWxkIGxpa2Ug
YSBiZXR0ZXIgdmFsdWUgZm9yIGEgbWF4aW11bSB0aW1lX3QsCiAvLyBidXQgdGhlcmUgaXMgbm8g
d2F5IHRvIGRvIHRoYXQgaW4gQyB3aXRoIGFueSBjZXJ0YWludHkuCiAvLyBJTlRfTUFYIHNob3Vs
ZCB3b3JrIHdlbGwgZW5vdWdoIGZvciBvdXIgcHVycG9zZXMuCkBAIC01MiwxMyArNDgsOSBAQCBz
dGF0aWMgY29uc3QgaW50IG51bUNvbW1vbkhlYWRlckZpZWxkcyA9CiBDRlVSTFJlc3BvbnNlUmVm
IFJlc291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9uc2UoKSBjb25zdAogewogICAgIGlmICghbV9j
ZlJlc3BvbnNlICYmICFtX2lzTnVsbCkgewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBu
c1VSTFJlc3BvbnNlKCk7Ci0jZWxzZQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9
IG1fdXJsLmNyZWF0ZUNGVVJMKCk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNyZWF0ZXMgYSB2
ZXJ5IGluY29tcGxldGUgQ0ZVUkxSZXNwb25zZSwgd2hpY2ggZG9lcyBub3QgZXZlbiBoYXZlIGEg
c3RhdHVzIGNvZGUuCiAgICAgICAgIG1fY2ZSZXNwb25zZSA9IGFkb3B0Q0YoQ0ZVUkxSZXNwb25z
ZUNyZWF0ZSgwLCB1cmwuZ2V0KCksIG1fbWltZVR5cGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgsIG1fdGV4dEVuY29kaW5nTmFtZS5zdHJp
bmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7
Ci0jZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4gbV9jZlJlc3BvbnNlLmdldCgpOwpAQCAtMTE5
LDkgKzExMSw2IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdCgKIAog
Q2VydGlmaWNhdGVJbmZvIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZv
KCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICByZXR1cm4gQ2VydGlmaWNhdGVJ
bmZvKGFkb3B0Q0Yod2tDb3B5TlNVUkxSZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4obnNVUkxSZXNw
b25zZSgpKSkpOwotI2VuZGlmCiAgICAgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2Nv
YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
Q3JlZGVudGlhbENvY29hLmgJKHJldmlzaW9uIDE4MDI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQmFzZS5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi10eXBlZGVmIGNvbnN0IHN0
cnVjdCBfQ0ZVUkxDcmVkZW50aWFsKiBDRlVSTENyZWRlbnRpYWxSZWY7Ci0jZW5kaWYKLQogT0JK
Q19DTEFTUyBOU1VSTENyZWRlbnRpYWw7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDE4
ICs0OCwxMiBAQCBwdWJsaWM6CiAKICAgICBDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmLCBD
cmVkZW50aWFsUGVyc2lzdGVuY2UpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBleHBsaWNp
dCBDcmVkZW50aWFsKENGVVJMQ3JlZGVudGlhbFJlZik7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBDcmVkZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqKTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCiAgICAgYm9vbCBlbmNvZGluZ1JlcXVp
cmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9uc0NyZWRlbnRpYWwgJiYgZW5jb2Rp
bmdSZXF1aXJlc1BsYXRmb3JtRGF0YShtX25zQ3JlZGVudGlhbC5nZXQoKSk7IH0KIAotI2lmIFVT
RShDRk5FVFdPUkspCi0gICAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNmQ3JlZGVudGlhbCgpIGNvbnN0
OwotI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxDcmVkZW50aWFsICpuc0NyZWRlbnRp
YWwoKSBjb25zdDsKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBDcmVk
ZW50aWFsJiwgY29uc3QgQ3JlZGVudGlhbCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0JKHJldmlz
aW9uIDE4MDI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3Jl
ZGVudGlhbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsNiBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJDcmVkZW50aWFsQ29jb2EuaCIKIAotI2lmIFVTRShDRk5F
VFdPUkspCi1AaW50ZXJmYWNlIE5TVVJMQ3JlZGVudGlhbCAoV2ViRGV0YWlscykKLS0gKGlkKV9p
bml0V2l0aENGVVJMQ3JlZGVudGlhbDooQ0ZVUkxDcmVkZW50aWFsUmVmKWNyZWRlbnRpYWw7Ci0t
IChDRlVSTENyZWRlbnRpYWxSZWYpIF9DRlVSTENyZWRlbnRpYWw7Ci1AZW5kCi0jZW5kaWYKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2Ug
dG9OU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZShDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVyc2lz
dGVuY2UpCkBAIC04NCwyNiArNzcsMTIgQEAgQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChjb25zdCBD
cmVkZW50aWFsJgogICAgIH0KIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi1DcmVkZW50aWFsOjpD
cmVkZW50aWFsKENGVVJMQ3JlZGVudGlhbFJlZiBjcmVkZW50aWFsKQotICAgIDogQ3JlZGVudGlh
bChhZG9wdE5TKFtbTlNVUkxDcmVkZW50aWFsIGFsbG9jXSBfaW5pdFdpdGhDRlVSTENyZWRlbnRp
YWw6Y3JlZGVudGlhbF0pLmdldCgpKQotewotfQotI2VuZGlmCi0KIENyZWRlbnRpYWw6OkNyZWRl
bnRpYWwoTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKQogICAgIDogQ3JlZGVudGlhbEJhc2Uo
Y3JlZGVudGlhbC51c2VyLCBjcmVkZW50aWFsLnBhc3N3b3JkLCB0b0NyZWRlbnRpYWxQZXJzaXN0
ZW5jZShjcmVkZW50aWFsLnBlcnNpc3RlbmNlKSkKICAgICAsIG1fbnNDcmVkZW50aWFsKGNyZWRl
bnRpYWwpCiB7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ0ZVUkxDcmVkZW50aWFsUmVmIENy
ZWRlbnRpYWw6OmNmQ3JlZGVudGlhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFtuc0NyZWRlbnRp
YWwoKSBfQ0ZVUkxDcmVkZW50aWFsXTsKLX0KLSNlbmRpZgotCiBOU1VSTENyZWRlbnRpYWwgKkNy
ZWRlbnRpYWw6Om5zQ3JlZGVudGlhbCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbnNDcmVkZW50aWFs
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9u
U3BhY2VDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EuaAkocmV2aXNpb24gMTgwMjY0KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksNiBAQAogI2luY2x1ZGUgIlByb3RlY3Rpb25T
cGFjZUJhc2UuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUHJvdGVjdGlvblNwYWNlKiBDRlVSTFByb3RlY3Rp
b25TcGFjZVJlZjsKLSNlbmRpZgotCiBPQkpDX0NMQVNTIE5TVVJMUHJvdGVjdGlvblNwYWNlOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw5ICs0Myw2IEBAIHB1YmxpYzoKIAogICAgIFBy
b3RlY3Rpb25TcGFjZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUgZGVsZXRlZFZhbHVl
KSA6IFByb3RlY3Rpb25TcGFjZUJhc2UoZGVsZXRlZFZhbHVlKSB7IH0KIAotI2lmIFVTRShDRk5F
VFdPUkspCi0gICAgZXhwbGljaXQgUHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNl
UmVmKTsKLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFByb3RlY3Rpb25TcGFj
ZShOU1VSTFByb3RlY3Rpb25TcGFjZSAqKTsKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29t
cGFyZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGEsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgYik7
CkBAIC01OCw5ICs1MSw2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVj
ZWl2ZXNDcmVkZW50aWFsU2VjdXJlbHkoKSBjb25zdDsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0g
ICAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgY2ZTcGFjZSgpIGNvbnN0OwotI2VuZGlmCiAgICAg
V0VCQ09SRV9FWFBPUlQgTlNVUkxQcm90ZWN0aW9uU3BhY2UgKm5zU3BhY2UoKSBjb25zdDsKIAog
cHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJv
dGVjdGlvblNwYWNlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5tbQkocmV2aXNpb24gMTgwMjY0
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3Bh
Y2VDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsMjIgKzI2LDggQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiUHJvdGVjdGlvblNwYWNlQ29jb2EuaCIKIAotI2lmIFVTRShDRk5F
VFdPUkspCi1AaW50ZXJmYWNlIE5TVVJMUHJvdGVjdGlvblNwYWNlIChXZWJEZXRhaWxzKQotLSAo
Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpIF9DRlVSTFByb3RlY3Rpb25TcGFjZTsKLS0gKGlkKV9p
bml0V2l0aENGVVJMUHJvdGVjdGlvblNwYWNlOihDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiljZlBy
b3RTcGFjZTsKLUBlbmQKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQotUHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9uU3BhY2UoQ0ZVUkxQcm90ZWN0
aW9uU3BhY2VSZWYgc3BhY2UpCi0gICAgOiBQcm90ZWN0aW9uU3BhY2UoYWRvcHROUyhbW05TVVJM
UHJvdGVjdGlvblNwYWNlIGFsbG9jXSBfaW5pdFdpdGhDRlVSTFByb3RlY3Rpb25TcGFjZTpzcGFj
ZV0pLmdldCgpKQotewotfQotI2VuZGlmCi0KIHN0YXRpYyBQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJU
eXBlIHR5cGUoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKnNwYWNlKQogewogICAgIGlmIChbc3BhY2Ug
aXNQcm94eV0pIHsKQEAgLTEwNSwxMyArOTEsNiBAQCBQcm90ZWN0aW9uU3BhY2U6OlByb3RlY3Rp
b25TcGFjZShOU1VSTFByCiAgICAgbV9uc1NwYWNlID0gc3BhY2U7CiB9CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgUHJvdGVjdGlvblNwYWNlOjpjZlNwYWNl
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gW25zU3BhY2UoKSBfQ0ZVUkxQcm90ZWN0aW9uU3BhY2Vd
OwotfQotI2VuZGlmCi0KIE5TVVJMUHJvdGVjdGlvblNwYWNlICpQcm90ZWN0aW9uU3BhY2U6Om5z
U3BhY2UoKSBjb25zdAogewogICAgIGlmIChtX25zU3BhY2UpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1
ZXN0Q29jb2EubW0JKHJldmlzaW9uIDE4MDI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTUzLDE1ICs1Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE5TVVJMUmVxdWVzdCAqUmVzb3Vy
Y2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9keVBvbGljeSkg
Y29uc3QKIHsKICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoYm9keVBvbGljeSk7Ci0jaWYgVVNF
KENGTkVUV09SSykKLSAgICBpZiAoIW1fbnNSZXF1ZXN0KQotICAgICAgICBjb25zdF9jYXN0PFJl
c291cmNlUmVxdWVzdCo+KHRoaXMpLT51cGRhdGVOU1VSTFJlcXVlc3QoKTsKLSNlbmRpZgogICAg
IHJldHVybiBbW21fbnNSZXF1ZXN0LmdldCgpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogfQogCi0j
aWYgIVVTRShDRk5FVFdPUkspCi0KIENGVVJMUmVxdWVzdFJlZiBSZXNvdXJjZVJlcXVlc3Q6OmNm
VVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSBib2R5UG9saWN5KSBjb25zdAogewogICAg
IHJldHVybiBbbnNVUkxSZXF1ZXN0KGJvZHlQb2xpY3kpIF9DRlVSTFJlcXVlc3RdOwpAQCAtMjMy
LDggKzIyNiw2IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbigKICAg
ICBtX25zUmVxdWVzdCA9IGFkb3B0TlMod2tDb3B5UmVxdWVzdFdpdGhTdG9yYWdlU2Vzc2lvbihz
dG9yYWdlU2Vzc2lvbiwgbV9uc1JlcXVlc3QuZ2V0KCkpKTsKIH0KIAotI2VuZGlmIC8vIFVTRShD
Rk5FVFdPUkspCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JN
KENPQ09BKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tM
b29rLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
UXVpY2tMb29rLmgJKHJldmlzaW9uIDE4MDI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMSArNDQsNiBA
QCBPQkpDX0NMQVNTIE5TVVJMQ29ubmVjdGlvbjsKIE9CSkNfQ0xBU1MgTlNVUkxSZXNwb25zZTsK
IE9CSkNfQ0xBU1MgUUxQcmV2aWV3Q29udmVydGVyOwogCi0jaWYgVVNFKENGTkVUV09SSykKLXR5
cGVkZWYgc3RydWN0IF9DRlVSTFJlc3BvbnNlKiBDRlVSTFJlc3BvbnNlUmVmOwotdHlwZWRlZiBz
dHJ1Y3QgX0NGVVJMQ29ubmVjdGlvbiogQ0ZVUkxDb25uZWN0aW9uUmVmOwotI2VuZGlmCi0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUXVpY2tMb29rSGFuZGxlQ2xpZW50OwpAQCAtODYs
OSArODEsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc2hvdWxk
Q3JlYXRlRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7CiAKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJlc291cmNlSGFuZGxlKiwgTlNVUkxDb25u
ZWN0aW9uICosIE5TVVJMUmVzcG9uc2UgKiwgaWQgZGVsZWdhdGUpOwotI2lmIFVTRShDRk5FVFdP
UkspCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0ZShS
ZXNvdXJjZUhhbmRsZSosIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZSosIENGVVJMUmVzcG9uc2VSZWYpOwotI2VuZGlmCiAgICAgLy8gRklYTUU6IFVzZSBv
ZiBSZXNvdXJjZUxvYWRlciBoZXJlIGlzIGEgcGxhdGZvcm0gdmlvbGF0aW9uLgogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGUo
UmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKQEAgLTEwMCw5ICs5
Miw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZhaWwoKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UoKTsKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSgpOwotI2VuZGlmCiAKICAg
ICB2b2lkIHNldENsaWVudChQYXNzUmVmUHRyPFF1aWNrTG9va0hhbmRsZUNsaWVudD4gY2xpZW50
KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0JKHJldmlzaW9uIDE4MDI2NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQkod29ya2luZyBj
b3B5KQpAQCAtNDcsMTUgKzQ3LDYgQEAKICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQgPENG
TmV0d29yay9DRlVSTENvbm5lY3Rpb24uaD4KLQotQGludGVyZmFjZSBOU1VSTFJlc3BvbnNlIChR
dWlja0xvb2tEZXRhaWxzKQotKyhOU1VSTFJlc3BvbnNlICopX3Jlc3BvbnNlV2l0aENGVVJMUmVz
cG9uc2U6KENGVVJMUmVzcG9uc2VSZWYpcmVzcG9uc2U7Ci0tKENGVVJMUmVzcG9uc2VSZWYpX0NG
VVJMUmVzcG9uc2U7Ci1AZW5kCi0jZW5kaWYKLQogU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05B
TChRdWlja0xvb2spCiBTT0ZUX0xJTktfQ0xBU1MoUXVpY2tMb29rLCBRTFByZXZpZXdDb252ZXJ0
ZXIpCiBTT0ZUX0xJTktfTUFZX0ZBSUwoUXVpY2tMb29rLCBRTFByZXZpZXdHZXRTdXBwb3J0ZWRN
SU1FVHlwZXMsIE5TU2V0ICosICgpLCAoKSkKQEAgLTI0NCw4MiArMjM1LDYgQEAgY29uc3QgY2hh
ciogV2ViQ29yZTo6UUxQcmV2aWV3UHJvdG9jb2woKQogICAgIHJldHVybiBwcmV2aWV3UHJvdG9j
b2wuZ2V0KCkuZGF0YSgpOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLS8vIFRoZSB3YXkgUXVp
Y2tMb29rIHdvcmtzIGlzIHdlIHBhc3MgaXQgYW4gTlNVUkxDb25uZWN0aW9uRGVsZWdhdGUgY2Fs
bGJhY2sgb2JqZWN0IGF0IGNyZWF0aW9uCi0vLyB0aW1lLiBUaGVuIHdlIHBhc3MgaXQgYWxsIHRo
ZSBkYXRhIGFzIHdlIHJlY2VpdmUgaXQuIE9uY2Ugd2UndmUgZG93bmxvYWRlZCB0aGUgZnVsbCBV
UkwsCi0vLyBRdWlja0xvb2sgdHVybnMgYXJvdW5kIGFuZCBzZW5kIHVzLCB0aHJvdWdoIHRoaXMg
ZGVsZWdhdGUsIHRoZSBIVE1MIHZlcnNpb24gb2YgdGhlIGZpbGUgd2hpY2ggd2UKLS8vIHBhc3Mg
b24gdG8gV2ViQ29yZS4gVGhlIGZsYWcgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRl
ciBpbiBRdWlja0xvb2tIYW5kbGUgZGVjaWRlcwotLy8gd2hldGhlciB0byBwYXNzIHRoZSBkYXRh
IHRvIFF1aWNrTG9vayBvciBXZWJDb3JlLgotLy8KLS8vIFRoaXMgd29ya3MgZmluZSB3aGVuIHVz
aW5nIE5TIEFQSXMsIGJ1dCB3aGVuIHVzaW5nIENGTmV0d29yaywgd2UgZG9uJ3QgaGF2ZSBhIE5T
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLgotLy8gU28gd2UgY3JlYXRlIFdlYlF1aWNrTG9va0hhbmRs
ZUFzRGVsZWdhdGUgYXMgYW4gaW50ZXJtZWRpYXRlIGRlbGVnYXRlIG9iamVjdCBhbmQgcGFzcyBp
dCB0bwotLy8gUUxQcmV2aWV3Q29udmVydGVyLiBUaGUgcHJveHkgZGVsZWdhdGUgdGhlbiBmb3J3
YXJkcyB0aGUgbWVzc2FnZXMgb24gdG8gdGhlIENGTmV0d29yayBjb2RlLgotQGludGVyZmFjZSBX
ZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRl
bGVnYXRlPiB7Ci0gICAgUmVmUHRyPFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZT4gbV9jb25uZWN0aW9uRGVsZWdhdGU7Ci19Ci0KLS0gKGlkKWluaXRXaXRo
Q29ubmVjdGlvbkRlbGVnYXRlOihTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGUqKWNvbm5lY3Rpb25EZWxlZ2F0ZTsKLS0gKHZvaWQpY2xlYXJIYW5kbGU7Ci1A
ZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlCi0tIChp
ZClpbml0V2l0aENvbm5lY3Rpb25EZWxlZ2F0ZTooU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlKiljb25uZWN0aW9uRGVsZWdhdGUKLXsKLSAgICBzZWxmID0g
W3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBt
X2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGNvbm5lY3Rpb25EZWxlZ2F0ZTsKLSAgICByZXR1cm4gc2Vs
ZjsKLX0KLQotLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9u
IGRpZFJlY2VpdmVEYXRhQXJyYXk6KE5TQXJyYXkgKilkYXRhQXJyYXkKLXsKLSAgICBVTlVTRURf
UEFSQU0oY29ubmVjdGlvbik7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0
ZTo6ZGlkUmVjZWl2ZURhdGFBcnJheSgpIik7Ci0gICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRp
ZFJlY2VpdmVEYXRhQXJyYXkocmVpbnRlcnByZXRfY2FzdDxDRkFycmF5UmVmPihkYXRhQXJyYXkp
KTsKLX0KLQotLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9u
IGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhIGxlbmd0aFJlY2VpdmVkOihsb25nIGxvbmcp
bGVuZ3RoUmVjZWl2ZWQKLXsKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgaWYg
KCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3b3Jr
LCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEoKSAtIGRhdGEg
bGVuZ3RoID0gJWxkIiwgKGxvbmcpW2RhdGEgbGVuZ3RoXSk7Ci0KLSAgICAvLyBRdWlja0xvb2sg
Y29kZSBzZW5kcyB1cyBhIG5pbCBkYXRhIGF0IHRpbWVzLiBUaGUgY2hlY2sgYmVsb3cgaXMgdGhl
IHNhbWUgYXMgdGhlIG9uZSBpbgotICAgIC8vIFJlc291cmNlSGFuZGxlTWFjLmNwcCBhZGRlZCBm
b3IgYSBkaWZmZXJlbnQgYnVnLgotICAgIGlmICghW2RhdGEgbGVuZ3RoXSkKLSAgICAgICAgcmV0
dXJuOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRSZWNlaXZlRGF0YShyZWludGVycHJl
dF9jYXN0PENGRGF0YVJlZj4oZGF0YSksIHN0YXRpY19jYXN0PGludD4obGVuZ3RoUmVjZWl2ZWQp
KTsKLX0KLQotLSAodm9pZCljb25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzooTlNVUkxDb25uZWN0
aW9uICopY29ubmVjdGlvbgotewotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBp
ZiAoIW1fY29ubmVjdGlvbkRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgTE9HKE5ldHdv
cmssICJXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nKCkiKTsK
LSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+ZGlkRmluaXNoTG9hZGluZygpOwotfQotCi0tICh2
b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdpdGhF
cnJvcjooTlNFcnJvciAqKWVycm9yCi17Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwot
ICAgIGlmICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBMT0co
TmV0d29yaywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6OmRpZEZhaWwoKSIpOwotICAg
IG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRGYWlsKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZFcnJvclJl
Zj4oZXJyb3IpKTsKLX0KLQotLSAodm9pZCljbGVhckhhbmRsZQotewotICAgIG1fY29ubmVjdGlv
bkRlbGVnYXRlID0gbnVsbHB0cjsKLX0KLUBlbmQKLSNlbmRpZgotCiBAaW50ZXJmYWNlIFdlYlJl
c291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25uZWN0aW9u
RGVsZWdhdGU+IHsKICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IF9yZXNvdXJjZUxvYWRlcjsK
ICAgICBCT09MIF9oYXNTZW50RGlkUmVjZWl2ZVJlc3BvbnNlOwpAQCAtNDY3LDI2ICszODIsNiBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBRdWlja0xvCiAgICAgcmV0dXJuIFdU
Rjo6bW92ZShxdWlja0xvb2tIYW5kbGUpOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLXN0ZDo6
dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKFJlc291
cmNlSGFuZGxlKiBoYW5kbGUsIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZSogY29ubmVjdGlvbkRlbGVnYXRlLCBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9u
c2UpCi17Ci0gICAgQVNTRVJUX0FSRyhoYW5kbGUsIGhhbmRsZSk7Ci0gICAgaWYgKCFoYW5kbGUt
PmZpcnN0UmVxdWVzdCgpLmRlcHJlY2F0ZWRJc01haW5SZXNvdXJjZVJlcXVlc3QoKSB8fCAhW1dl
YkNvcmU6OlFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0
OihOU1N0cmluZyAqKUNGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShjZlJlc3BvbnNlKV0pCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSA9IFtO
U1VSTFJlc3BvbnNlIF9yZXNwb25zZVdpdGhDRlVSTFJlc3BvbnNlOmNmUmVzcG9uc2VdOwotICAg
IFdlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgKmRlbGVnYXRlID0gW1tbV2ViUXVpY2tMb29r
SGFuZGxlQXNEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6Y29ubmVj
dGlvbkRlbGVnYXRlXSBhdXRvcmVsZWFzZV07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9v
a0hhbmRsZT4gcXVpY2tMb29rSGFuZGxlKG5ldyBRdWlja0xvb2tIYW5kbGUoW2hhbmRsZS0+Zmly
c3RSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpIFVSTF0sIG5pbCwg
bnNSZXNwb25zZSwgZGVsZWdhdGUpKTsKLSAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRDcmVhdGVR
dWlja0xvb2tIYW5kbGUoKnF1aWNrTG9va0hhbmRsZSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShx
dWlja0xvb2tIYW5kbGUpOwotfQotCi1DRlVSTFJlc3BvbnNlUmVmIFF1aWNrTG9va0hhbmRsZTo6
Y2ZSZXNwb25zZSgpCi17Ci0gICAgcmV0dXJuIFttX25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2Vd
OwotfQotI2VuZGlmCi0KIGJvb2wgUXVpY2tMb29rSGFuZGxlOjpzaG91bGRDcmVhdGVGb3JNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIHJldHVybiBbV2ViQ29yZTo6UUxQ
cmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6bWltZVR5cGVd
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VIYW5k
bGVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9p
b3MvUmVzb3VyY2VIYW5kbGVJT1MubW0JKHJldmlzaW9uIDE4MDI2NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDM5ICsxIEBACi0vLwotLy8gIFJlc291cmNlSGFuZGxlSVBob25lLm1tCi0vLyAg
V2ViQ29yZQotLy8KLS8vICBDb3B5cmlnaHQgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJlc291cmNlSGFuZGxl
SW50ZXJuYWwuaCIKLQotI2lmIFVTRShDRk5FVFdPUkspCi0KLSNpbXBvcnQgPENGTmV0d29yay9D
RlNvY2tldFN0cmVhbVByaXYuaD4KLSNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0UHJp
dmF0ZS5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1DRk11dGFibGVEaWN0aW9uYXJ5UmVmIFJlc291cmNlSGFuZGxlOjpjcmVhdGVTU0xQcm9w
ZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17
Ci0gICAgTlNTdHJpbmcgKmhvc3QgPSByZXF1ZXN0LnVybCgpLmhvc3QoKTsKLSAgICBOU0FycmF5
ICpjZXJ0QXJyYXkgPSBbTlNVUkxSZXF1ZXN0IGFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0
ZUZvckhvc3Q6aG9zdF07Ci0gICAgQk9PTCBhbGxvd3NBbnlDZXJ0aWZpY2F0ZSA9IFtOU1VSTFJl
cXVlc3QgYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Q6aG9zdF07Ci0gICAgaWYgKCFj
ZXJ0QXJyYXkgJiYgIWFsbG93c0FueUNlcnRpZmljYXRlKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgc3NsUHJvcHMgPSBDRkRpY3Rpb25hcnlDcmVhdGVN
dXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAgIGlmIChjZXJ0QXJy
YXkpCi0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHNzbFByb3BzLCBfa0NGU3RyZWFtU1NM
VHJ1c3RlZExlYWZDZXJ0aWZpY2F0ZXMsIChDRlR5cGVSZWYpIGNlcnRBcnJheSk7Ci0KLSAgICBp
ZiAoYWxsb3dzQW55Q2VydGlmaWNhdGUpCi0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHNz
bFByb3BzLCBrQ0ZTdHJlYW1TU0xWYWxpZGF0ZXNDZXJ0aWZpY2F0ZUNoYWluLCBrQ0ZCb29sZWFu
RmFsc2UpOwotICAgIHJldHVybiBzc2xQcm9wczsKLX0KLQotfQotCi0jZW5kaWYKKy8vIFJlbW92
ZSBtZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VS
ZXF1ZXN0SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1Jlc291cmNlUmVxdWVzdElPUy5tbQkocmV2aXNpb24gMTgwMjY0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VSZXF1ZXN0SU9TLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw0NCArMzUsNiBAQCAtIChpZClfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6
KENGVVJMUmVxdWVzCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShDRk5FVFdPUksp
Ci0KLVJlc291cmNlUmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqbnNSZXF1
ZXN0KQotICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSgpCi0gICAgLCBtX21haW5SZXNvdXJjZVJl
cXVlc3QoZmFsc2UpCi0gICAgLCBtX2NmUmVxdWVzdChbbnNSZXF1ZXN0IF9DRlVSTFJlcXVlc3Rd
KQotICAgICwgbV9uc1JlcXVlc3QobnNSZXF1ZXN0KQotewotfQotCi12b2lkIFJlc291cmNlUmVx
dWVzdDo6dXBkYXRlTlNVUkxSZXF1ZXN0KCkKLXsKLSAgICBpZiAobV9jZlJlcXVlc3QpCi0gICAg
ICAgIG1fbnNSZXF1ZXN0ID0gYWRvcHROUyhbW05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2NdIF9p
bml0V2l0aENGVVJMUmVxdWVzdDptX2NmUmVxdWVzdC5nZXQoKV0pOwotfQotCi12b2lkIFJlc291
cmNlUmVxdWVzdDo6Y2xlYXJPclVwZGF0ZU5TVVJMUmVxdWVzdCgpCi17Ci0gICAgLy8gVGhlcmUg
aXMgY2xpZW50IGNvZGUgdGhhdCBleHRlbmRzIE5TVVJMUmVxdWVzdCBhbmQgZXhwZWN0cyB0byBn
ZXQgYmFjaywgaW4gdGhlIGRlbGVnYXRlCi0gICAgLy8gY2FsbGJhY2tzLCBhbiBvYmplY3Qgb2Yg
dGhlIHNhbWUgdHlwZSB0aGF0IHRoZXkgcGFzc2VkIGludG8gV2ViS2l0LiBUbyBrZWVwIHRoZW4g
cnVubmluZywgd2UKLSAgICAvLyBjcmVhdGUgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYW5k
IHJldHVybiB0aGF0LiBTZWUgPHJkYXI6Ly85ODQzNTgyPi4KLSAgICAvLyBBbHNvLCBkZXZlbG9w
ZXJzIHJlYWxseSByZWFsbHkgd2FudCBhbiBOU011dGFibGVVUkxSZXF1ZXN0IHNvIHRyeSB0byBj
cmVhdGUgYW4KLSAgICAvLyBOU011dGFibGVVUkxSZXF1ZXN0IGluc3RlYWQgb2YgTlNVUkxSZXF1
ZXN0LgotICAgIHN0YXRpYyBDbGFzcyBuc1VSTFJlcXVlc3RDbGFzcyA9IFtOU1VSTFJlcXVlc3Qg
Y2xhc3NdOwotICAgIHN0YXRpYyBDbGFzcyBuc011dGFibGVVUkxSZXF1ZXN0Q2xhc3MgPSBbTlNN
dXRhYmxlVVJMUmVxdWVzdCBjbGFzc107Ci0gICAgQ2xhc3MgcmVxdWVzdENsYXNzID0gW21fbnNS
ZXF1ZXN0LmdldCgpIGNsYXNzXTsKLQotICAgIGlmICghbV9jZlJlcXVlc3QpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmIChyZXF1ZXN0Q2xhc3MgJiYgcmVxdWVzdENsYXNzICE9IG5zVVJMUmVx
dWVzdENsYXNzICYmIHJlcXVlc3RDbGFzcyAhPSBuc011dGFibGVVUkxSZXF1ZXN0Q2xhc3MpCi0g
ICAgICAgIG1fbnNSZXF1ZXN0ID0gYWRvcHROUyhbW3JlcXVlc3RDbGFzcyBhbGxvY10gX2luaXRX
aXRoQ0ZVUkxSZXF1ZXN0Om1fY2ZSZXF1ZXN0LmdldCgpXSk7Ci0gICAgZWxzZQotICAgICAgICBt
X25zUmVxdWVzdCA9IG51bGxwdHI7Ci19Ci0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50
aWNhdGlvbk1hYy5tbQkocmV2aXNpb24gMTgwMjY0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMy
LDE4ICszMiwxMiBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUHJvdGVjdGlvblNwYWNlLmg+CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCAiQ0ZOU1VSTENvbm5lY3Rpb25TUEkuaCIKLSNl
bmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFjZSBXZWJDb3JlQXV0
aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciA6IE5TT2JqZWN0IDxOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyPgogewogICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBt
X2NsaWVudDsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiBt
X2NmQ2hhbGxlbmdlOwotI2VuZGlmCiB9CiAtIChpZClpbml0V2l0aEF1dGhlbnRpY2F0aW9uQ2xp
ZW50OihBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50OwogLSAoQXV0aGVudGljYXRpb25DbGll
bnQqKWNsaWVudDsKQEAgLTg5LDQ3ICs4MywxMCBAQCAtICh2b2lkKWNhbmNlbEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOihOCiAgICAgICAgIG1fY2xpZW50LT5yZWNlaXZlZENhbmNlbGxhdGlvbihj
b3JlKGNoYWxsZW5nZSkpOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLS0gKHZvaWQpc2V0Q0ZD
aGFsbGVuZ2U6KENGVVJMQXV0aENoYWxsZW5nZVJlZiljaGFsbGVuZ2UKLXsKLSAgICBtX2NmQ2hh
bGxlbmdlID0gY2hhbGxlbmdlOwotfQotCi0tIChDRlVSTEF1dGhDaGFsbGVuZ2VSZWYpY2ZDaGFs
bGVuZ2UKLXsKLSAgICByZXR1cm4gbV9jZkNoYWxsZW5nZTsKLX0KLSNlbmRpZgotCiBAZW5kCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlIGNvcmUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbWFjQ2hhbGxl
bmdlKQotewotICAgIFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVy
ICpjaGFsbGVuZ2VTZW5kZXIgPSAoV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVu
Z2VTZW5kZXIqKSBbbWFjQ2hhbGxlbmdlIHNlbmRlcl07Ci0gICAgcmV0dXJuIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKFtjaGFsbGVuZ2VTZW5kZXIgY2ZDaGFsbGVuZ2VdLCBbY2hhbGxlbmdlU2Vu
ZGVyIGNsaWVudF0pOwotfQotCi1OU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICptYWMoY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UpCi17Ci0gICAgQXV0aGVu
dGljYXRpb25DbGllbnQqIGF1dGhDbGllbnQgPSBjb3JlQ2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9u
Q2xpZW50KCk7Ci0gICAgUmV0YWluUHRyPFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hh
bGxlbmdlU2VuZGVyPiBjaGFsbGVuZ2VTZW5kZXIgPSBhZG9wdE5TKFtbV2ViQ29yZUF1dGhlbnRp
Y2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgYWxsb2NdIGluaXRXaXRoQXV0aGVudGljYXRp
b25DbGllbnQ6YXV0aENsaWVudF0pOwotICAgIFJldGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VS
ZWY+IGF1dGhDaGFsbGVuZ2UgPSBjb3JlQ2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigp
OwotICAgIGlmICghYXV0aENoYWxsZW5nZSkKLSAgICAgICAgYXV0aENoYWxsZW5nZSA9IGFkb3B0
Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZSkpOwotICAgIFtjaGFsbGVuZ2VTZW5kZXIuZ2V0KCkg
c2V0Q0ZDaGFsbGVuZ2U6YXV0aENoYWxsZW5nZS5nZXQoKV07Ci0jaWYgUExBVEZPUk0oSU9TKQot
ICAgIHJldHVybiBbW05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgX2NyZWF0ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRm9yQ0ZBdXRoQ2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2UuZ2V0KCkgc2Vu
ZGVyOmNoYWxsZW5nZVNlbmRlci5nZXQoKV0gYXV0b3JlbGVhc2VdOwotI2Vsc2UKLSAgICByZXR1
cm4gW1tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIF9hdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUZvckNGQXV0aENoYWxsZW5nZTphdXRoQ2hhbGxlbmdlLmdldCgpIHNlbmRlcjpjaGFsbGVuZ2VT
ZW5kZXIuZ2V0KCldIGF1dG9yZWxlYXNlXTsKLSNlbmRpZgotfQotCi0jZWxzZQotCiBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlv
blNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IHByZXZpb3VzRmFpbHVyZUNvdW50LApAQCAtMjAzLDYgKzE2MCw0IEBAIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlIGNvcmUoTlNVUkxBdXRoZW4KICAgICByZXR1cm4gQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UobWFjQ2hhbGxlbmdlKTsKIH0KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL0Nvb2tpZUphck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0JKHJldmlzaW9uIDE4MDI2NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJQ
bGF0Zm9ybUNvb2tpZUphci5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkJs
b2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiQ29va2llLmgiCiAjaW1wb3J0ICJDb29raWVTdG9y
YWdlLmgiCkBAIC0yMzgsNSArMjM2LDMgQEAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRT
aW5jZShjb25zdAogfQogCiB9Ci0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRl
bnRpYWxTdG9yYWdlTWFjLm1tCShyZXZpc2lvbiAxODAyNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNyZWRl
bnRpYWxTdG9yYWdlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uTWFjLmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIlByb3Rl
Y3Rpb25TcGFjZS5oIgpAQCAtNTIsNSArNTAsMyBAQCB2b2lkIENyZWRlbnRpYWxTdG9yYWdlOjpz
YXZlVG9QZXJzaXN0ZW50CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gIVVTRShDRk5FVFdPUkspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgJKHJldmlzaW9uIDE4MDI2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFt
TWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDYgQEAKICNpZm5kZWYgRm9ybURhdGFT
dHJlYW1NYWNfaAogI2RlZmluZSBGb3JtRGF0YVN0cmVhbU1hY19oCiAKLSNpZiAhVVNFKENGTkVU
V09SSykKLQogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IF9DRlVSTFJlcXVlc3QqIENGVVJMUmVxdWVzdFJlZjsKQEAgLTQ5LDYgKzQ3LDUgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyAhVVNF
KENGTkVUV09SSykKIAogI2VuZGlmIC8vIEZvcm1EYXRhU3RyZWFtTWFjX2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3Ry
ZWFtTWFjLm1tCShyZXZpc2lvbiAxODAyNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksOCAr
MjksNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJGb3JtRGF0YVN0cmVhbU1hYy5o
IgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkZvcm1EYXRhLmgiCiAjaW1wb3J0
ICJGb3JtRGF0YVN0cmVhbUNGTmV0LmgiCiAjaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAt
NTIsNSArNTAsMyBAQCBGb3JtRGF0YSogaHR0cEJvZHlGcm9tU3RyZWFtKE5TSW5wdXRTdHJlCiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9S
ZXNvdXJjZUVycm9yTWFjLm1tCShyZXZpc2lvbiAxODAyNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSwxMCArMzEsNiBAQAogI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ0ZFcnJvci5oPgogI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKLSNpZiBQTEFURk9STShJT1MpICYmIFVT
RShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZTb2NrZXRTdHJlYW1Qcml2Lmg+Ci0j
ZW5kaWYKLQogQGludGVyZmFjZSBOU0Vycm9yIChXZWJFeHRyYXMpCiAtIChOU1N0cmluZyAqKV93
ZWJfbG9jYWxpemVkRGVzY3JpcHRpb247CiBAZW5kCkBAIC05MSw4NSArODcsNiBAQCAtICh2b2lk
KWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAKIEBlbmQKIAotCi0jaWYgVVNFKENG
TkVUV09SSykKLXN0YXRpYyBOU0Vycm9yICpOU0Vycm9yRnJvbUNGRXJyb3IoQ0ZFcnJvclJlZiBj
ZkVycm9yLCBOU1VSTCAqdXJsKQotewotICAgIENGSW5kZXggZXJyQ29kZSA9IENGRXJyb3JHZXRD
b2RlKGNmRXJyb3IpOwotICAgIGlmIChDRkVxdWFsKENGRXJyb3JHZXREb21haW4oY2ZFcnJvciks
IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKSAmJiBlcnJDb2RlIDw9IGtDRlVSTEVycm9yVW5rbm93
biAmJiBlcnJDb2RlID4gLTQwMDApIHsKLSAgICAgICAgLy8gVGhpcyBpcyBhbiBVUkwgZXJyb3Ig
YW5kIG5lZWRzIHRvIGJlIHRyYW5zbGF0ZWQgdG8gdGhlIE5TVVJMRXJyb3JEb21haW4KLSAgICAg
ICAgaWQga2V5c1sxMF0sIHZhbHVlc1sxMF07Ci0gICAgICAgIENGRGljdGlvbmFyeVJlZiB1c2Vy
SW5mbyA9IENGRXJyb3JDb3B5VXNlckluZm8oY2ZFcnJvcik7Ci0gICAgICAgIE5TRXJyb3IgKnJl
c3VsdDsKLSAgICAgICAgTlNJbnRlZ2VyIGNvdW50ID0gMDsKLQotICAgICAgICBpZiAodXJsKSB7
Ci0gICAgICAgICAgICBrZXlzW2NvdW50XSA9IE5TVVJMRXJyb3JGYWlsaW5nVVJMRXJyb3JLZXk7
Ci0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gdXJsOwotICAgICAgICAgICAgY291bnQgKys7
Ci0KLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxTdHJpbmdF
cnJvcktleTsKLSAgICAgICAgICAgIHZhbHVlc1tjb3VudF0gPSBbdXJsIGFic29sdXRlU3RyaW5n
XTsKLSAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVzW2Nv
dW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGRXJyb3JMb2NhbGl6
ZWREZXNjcmlwdGlvbktleSk7Ci0gICAgICAgIGlmICh2YWx1ZXNbY291bnRdKSB7Ci0gICAgICAg
ICAgICBrZXlzW2NvdW50XSA9IE5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXk7Ci0gICAgICAgICAg
ICBjb3VudCArKzsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRkVycm9yTG9jYWxpemVkRmFpbHVyZVJlYXNv
bktleSk7Ci0gICAgICAgIGlmICh2YWx1ZXNbY291bnRdKSB7Ci0gICAgICAgICAgICBrZXlzW2Nv
dW50XSA9IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OwotICAgICAgICAgICAgY291
bnQgKys7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlv
bmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZFcnJvckxvY2FsaXplZFJlY292ZXJ5U3VnZ2VzdGlv
bktleSk7Ci0gICAgICAgIGlmICh2YWx1ZXNbY291bnRdKSB7Ci0gICAgICAgICAgICBrZXlzW2Nv
dW50XSA9IE5TTG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uRXJyb3JLZXk7Ci0gICAgICAgICAg
ICBjb3VudCArKzsKLSAgICAgICAgfQotCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAot
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlv
bnMiCi0gICAgICAgIGlmICh1c2VySW5mbyAmJiAodmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rp
b25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGU3RyZWFtUHJvcGVydHlTU0xQZWVyQ2VydGlmaWNh
dGVzKSkgIT0gbmlsKSB7Ci0gICAgICAgICAgICAvLyBOZWVkIHRvIHRyYW5zbGF0ZSB0aGUgY2Vy
dAotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBAIk5TRXJyb3JQZWVyQ2VydGlmaWNhdGVDaGFp
bktleSI7Ci0gICAgICAgICAgICBjb3VudCArKzsKLQotICAgICAgICAgICAgdmFsdWVzW2NvdW50
XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywgX2tDRlN0cmVhbVByb3BlcnR5
U1NMQ2xpZW50Q2VydGlmaWNhdGVzKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZXNbY291bnRdKSB7
Ci0gICAgICAgICAgICAgICAga2V5c1tjb3VudF0gPSBAIk5TRXJyb3JDbGllbnRDZXJ0aWZpY2F0
ZUNoYWluS2V5IjsKLSAgICAgICAgICAgICAgICBjb3VudCArKzsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2Vy
SW5mbywgX2tDRlN0cmVhbVByb3BlcnR5U1NMQ2xpZW50Q2VydGlmaWNhdGVTdGF0ZSk7Ci0gICAg
ICAgICAgICBpZiAodmFsdWVzW2NvdW50XSkgewotICAgICAgICAgICAgICAgIGtleXNbY291bnRd
ID0gQCJOU0Vycm9yQ2xpZW50Q2VydGlmaWNhdGVTdGF0ZUtleSI7Ci0gICAgICAgICAgICAgICAg
Y291bnQgKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwb3AKLQotICAgICAgICBpZiAodXNlckluZm8gJiYgKHZhbHVlc1tjb3VudF0gPSAoaWQp
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRlN0cmVhbVByb3BlcnR5U1NMUGVlclRy
dXN0KSkgIT0gbmlsKSB7Ci0gICAgICAgICAgICBrZXlzW2NvdW50XSA9IE5TVVJMRXJyb3JGYWls
aW5nVVJMUGVlclRydXN0RXJyb3JLZXk7Ci0gICAgICAgICAgICBjb3VudCsrOwotICAgICAgICB9
Ci0KLSAgICAgICAga2V5c1tjb3VudF0gPSBOU1VuZGVybHlpbmdFcnJvcktleTsKLSAgICAgICAg
dmFsdWVzW2NvdW50XSA9IChpZCljZkVycm9yOwotICAgICAgICBjb3VudCArKzsKLQotICAgICAg
ICByZXN1bHQgPSBbV2ViQ3VzdG9tTlNVUkxFcnJvciBlcnJvcldpdGhEb21haW46TlNVUkxFcnJv
ckRvbWFpbiBjb2RlOihlcnJDb2RlID09IGtDRlVSTEVycm9yVW5rbm93biA/IChDRkluZGV4KU5T
VVJMRXJyb3JVbmtub3duIDogZXJyQ29kZSkgdXNlckluZm86W05TRGljdGlvbmFyeSBkaWN0aW9u
YXJ5V2l0aE9iamVjdHM6dmFsdWVzIGZvcktleXM6a2V5cyBjb3VudDpjb3VudF1dOwotICAgICAg
ICBpZiAodXNlckluZm8pCi0gICAgICAgICAgICBDRlJlbGVhc2UodXNlckluZm8pOwotICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICByZXR1cm4gKE5TRXJyb3IgKiljZkVycm9yOwot
fQotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5MCw1MyArMTA3LDYgQEAgc3RhdGljIFJldGFpblB0
cjxOU0Vycm9yPiBjcmVhdGVOU0Vycm9yRgogICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBh
bGxvY10gaW5pdFdpdGhEb21haW46cmVzb3VyY2VFcnJvci5kb21haW4oKSBjb2RlOnJlc291cmNl
RXJyb3IuZXJyb3JDb2RlKCkgdXNlckluZm86dXNlckluZm8uZ2V0KCldKTsKIH0KIAotI2lmIFVT
RShDRk5FVFdPUkspCi0KLVJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoTlNFcnJvciAqZXJy
b3IpCi0gICAgOiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQotICAgICwgbV9wbGF0Zm9ybUVycm9y
KHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZFcnJvclJlZj4oZXJyb3IpKQotewotICAgIG1faXNOdWxsID0g
IWVycm9yOwotICAgIGlmICghbV9pc051bGwpCi0gICAgICAgIG1faXNUaW1lb3V0ID0gW2Vycm9y
IGNvZGVdID09IE5TVVJMRXJyb3JUaW1lZE91dDsKLX0KLQotTlNFcnJvciAqUmVzb3VyY2VFcnJv
cjo6bnNFcnJvcigpIGNvbnN0Ci17Ci0gICAgaWYgKG1faXNOdWxsKSB7Ci0gICAgICAgIEFTU0VS
VCghbV9wbGF0Zm9ybUVycm9yKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICBp
ZiAobV9wbGF0Zm9ybU5TRXJyb3IpCi0gICAgICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5n
ZXQoKTsKLQotICAgIGlmIChtX3BsYXRmb3JtRXJyb3IpIHsKLSAgICAgICAgQ0ZFcnJvclJlZiBl
cnJvciA9IG1fcGxhdGZvcm1FcnJvci5nZXQoKTsKLSAgICAgICAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gdXNlckluZm8gPSBhZG9wdENGKENGRXJyb3JDb3B5VXNlckluZm8oZXJyb3IpKTsK
LSNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIG1fcGxhdGZvcm1OU0Vycm9yID0gTlNFcnJvckZy
b21DRkVycm9yKGVycm9yLCAoTlNVUkwgKilbKE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvLmdldCgp
IG9iamVjdEZvcktleTooaWQpIGtDRlVSTEVycm9yRmFpbGluZ1VSTEVycm9yS2V5XSk7Ci0gICAg
ICAgIC8vIElmIE5TRXJyb3JGcm9tQ0ZFcnJvciBjcmVhdGVkIGEgbmV3IE5TRXJyb3IgZm9yIHVz
LCByZXR1cm4gdGhhdC4KLSAgICAgICAgaWYgKG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpICE9IChO
U0Vycm9yICopZXJyb3IpCi0gICAgICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU5TRXJyb3IuZ2V0
KCk7Ci0KLSAgICAgICAgLy8gT3RoZXJ3aXNlIGZhbGwgdGhyb3VnaCB0byBjcmVhdGUgYSBuZXcg
TlNFcnJvciBmcm9tIHRoZSBDRkVycm9yLgotI2VuZGlmCi0gICAgICAgIG1fcGxhdGZvcm1OU0Vy
cm9yID0gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOihOU1N0cmluZyAq
KUNGRXJyb3JHZXREb21haW4oZXJyb3IpIGNvZGU6Q0ZFcnJvckdldENvZGUoZXJyb3IpIHVzZXJJ
bmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mby5nZXQoKV0pOwotICAgICAgICByZXR1cm4gbV9w
bGF0Zm9ybU5TRXJyb3IuZ2V0KCk7Ci0gICAgfQotCi0gICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBj
cmVhdGVOU0Vycm9yRnJvbVJlc291cmNlRXJyb3JCYXNlKCp0aGlzKTsKLSAgICByZXR1cm4gbV9w
bGF0Zm9ybU5TRXJyb3IuZ2V0KCk7Ci19Ci0KLVJlc291cmNlRXJyb3I6Om9wZXJhdG9yIE5TRXJy
b3IgKigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG5zRXJyb3IoKTsKLX0KLQotI2Vsc2UKLQogUmVz
b3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihOU0Vycm9yICpuc0Vycm9yKQogICAgIDogbV9kYXRh
SXNVcFRvRGF0ZShmYWxzZSkKICAgICAsIG1fcGxhdGZvcm1FcnJvcihuc0Vycm9yKQpAQCAtMzA5
LDYgKzE3OSw0IEBAIFJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENGRXJyb3JSZWYoKSBjb24KICAg
ICByZXR1cm4gY2ZFcnJvcigpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlzaW9uIDE4MDI2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxl
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxNiArNTUsNiBAQAogI2ltcG9ydCA8d3RmL3Rl
eHQvQmFzZTY0Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotI2lmIF9faGFzX2luY2x1ZGUoPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb25Qcml2
Lmg+KQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4KLSNlbmRpZgot
dHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQ29ubmVjdGlvbiogQ0ZVUkxDb25uZWN0aW9uUmVmOwotZXh0
ZXJuICJDIiB7Ci1DRkRpY3Rpb25hcnlSZWYgX0NGVVJMQ29ubmVjdGlvbkNvcHlUaW1pbmdEYXRh
KENGVVJMQ29ubmVjdGlvblJlZik7Ci19Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogI2lm
IF9faGFzX2luY2x1ZGUoPEZvdW5kYXRpb24vTlNVUkxDb25uZWN0aW9uUHJpdmF0ZS5oPikKICNp
bXBvcnQgPEZvdW5kYXRpb24vTlNVUkxDb25uZWN0aW9uUHJpdmF0ZS5oPgogI2Vsc2UKQEAgLTk1
LDkgKzg1LDcgQEAgLShpZClfaW5pdFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZQogQGVu
ZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi0jaWYgIVVTRShDRk5FVFdPUkspCi0gICAg
CisKIHN0YXRpYyB2b2lkIGFwcGx5QmFzaWNBdXRob3JpemF0aW9uSGVhZGVyKFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKICAgICBTdHJp
bmcgYXV0aGVudGljYXRpb25IZWFkZXIgPSAiQmFzaWMgIiArIGJhc2U2NEVuY29kZShTdHJpbmco
Y3JlZGVudGlhbC51c2VyKCkgKyAiOiIgKyBjcmVkZW50aWFsLnBhc3N3b3JkKCkpLnV0ZjgoKSk7
CkBAIC0zMTYsOCArMzA0LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZl
cnNMbwogICAgICAgICB3a1NldE5TVVJMQ29ubmVjdGlvbkRlZmVyc0NhbGxiYWNrcyhkLT5tX2Nv
bm5lY3Rpb24uZ2V0KCksIGRlZmVycyk7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpCi0KIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKIHsKICAgICBOU1J1
bkxvb3AgKnJ1bkxvb3AgPSBwYWlyLm5zUnVuTG9vcCgpOwpAQCAtMzM2LDggKzMyMiw2IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OnVuc2NoZWR1bGUoU2NoZWR1bGUKICAgICAgICAgW2QtPm1fY29u
bmVjdGlvbi5nZXQoKSB1bnNjaGVkdWxlRnJvbVJ1bkxvb3A6cnVuTG9vcCBmb3JNb2RlOihOU1N0
cmluZyAqKXBhaXIubW9kZSgpXTsKIH0KIAotI2VuZGlmCi0KIGlkIFJlc291cmNlSGFuZGxlOjpt
YWtlRGVsZWdhdGUoYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSkKIHsKICAgICBBU1NF
UlQoIWQtPm1fZGVsZWdhdGUpOwpAQCAtNzEzLDkgKzY5Nyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGU6OmNvbnRpbnVlV2lsbENhY2hlUmUKIAogICAgIFsoaWQpZGVsZWdhdGUoKSBjb250aW51ZVdp
bGxDYWNoZVJlc3BvbnNlOnJlc3BvbnNlXTsKIH0KLSAgICAKLSNlbmRpZiAvLyAhVVNFKENGTkVU
V09SSykKLSAgICAKKwogI2lmIEVOQUJMRShXRUJfVElNSU5HKQogICAgIAogdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoTlNEaWN0aW9uYXJ5ICp0aW1pbmdEYXRh
LCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZykKQEAgLTc1MiwyMiArNzM0LDExIEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OnNldENvbGxlY3RzVGltaW5nRGEKICAgICB9KTsKIH0KIAotI2lmIFVT
RShDRk5FVFdPUkspCi0gICAgCi12b2lkIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGlt
aW5nRGF0YShDRlVSTENvbm5lY3Rpb25SZWYgY29ubmVjdGlvbiwgUmVzb3VyY2VMb2FkVGltaW5n
JiB0aW1pbmcpCi17Ci0gICAgZ2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoKF9fYnJpZGdlIE5TRGlj
dGlvbmFyeSopKGFkb3B0Q0YoX0NGVVJMQ29ubmVjdGlvbkNvcHlUaW1pbmdEYXRhKGNvbm5lY3Rp
b24pKS5nZXQoKSksIHRpbWluZyk7Ci19Ci0gICAgCi0jZWxzZQotICAgIAogdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0
aW9uLCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZykKIHsKICAgICBnZXRDb25uZWN0aW9uVGlt
aW5nRGF0YShbY29ubmVjdGlvbiBfdGltaW5nRGF0YV0sIHRpbWluZyk7CiB9Ci0gICAgCi0jZW5k
aWYKLSAgICAKKwogI2VuZGlmIC8vIEVOQUJMRShXRUJfVElNSU5HKQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNv
dXJjZVJlcXVlc3RNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCShyZXZpc2lvbiAxODAyNjQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM3LDI5ICszNyw2IEBAIC0gKGlkKV9pbml0V2l0aENGVVJMUmVx
dWVzdDooQ0ZVUkxSZXF1ZXMKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVU
V09SSykKLQotUmVzb3VyY2VSZXF1ZXN0OjpSZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0ICpu
c1JlcXVlc3QpCi0gICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKCkKLSAgICAsIG1fY2ZSZXF1ZXN0
KFtuc1JlcXVlc3QgX0NGVVJMUmVxdWVzdF0pCi0gICAgLCBtX25zUmVxdWVzdChuc1JlcXVlc3Qp
Ci17Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVOU1VSTFJlcXVlc3QoKQotewot
ICAgIGlmIChtX2NmUmVxdWVzdCkKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKFtbTlNV
UkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6bV9jZlJlcXVlc3QuZ2V0KCld
KTsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmFwcGx5V2ViQXJjaGl2ZUhhY2tGb3JNYWls
KCkKLXsKLSAgICAvLyBIYWNrIGJlY2F1c2UgTWFpbCBjaGVja3MgZm9yIHRoaXMgcHJvcGVydHkg
dG8gZGV0ZWN0IGRhdGEgLyBhcmNoaXZlIGxvYWRzCi0gICAgX0NGVVJMUmVxdWVzdFNldFByb3Rv
Y29sUHJvcGVydHkoY2ZVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpLCBDRlNUUigiV2Vi
RGF0YVJlcXVlc3QiKSwgQ0ZTVFIoIiIpKTsKLX0KLQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0JKHJldmlzaW9uIDE4
MDI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVz
cG9uc2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTcxLDM2ICs3MSw2IEBAIHZvaWQgUmVzb3Vy
Y2VSZXNwb25zZTo6aW5pdE5TVVJMUmVzcG9uc2UKICAgICBbbV9uc1Jlc3BvbnNlLmdldCgpIF9z
ZXRNSU1FVHlwZTooTlNTdHJpbmcgKiltX21pbWVUeXBlXTsKIH0KIAotI2lmIFVTRShDRk5FVFdP
UkspCi0KLU5TVVJMUmVzcG9uc2UgKlJlc291cmNlUmVzcG9uc2U6Om5zVVJMUmVzcG9uc2UoKSBj
b25zdAotewotICAgIGlmICghbV9uc1Jlc3BvbnNlICYmICFtX2NmUmVzcG9uc2UgJiYgIW1faXNO
dWxsKSB7Ci0gICAgICAgIGluaXROU1VSTFJlc3BvbnNlKCk7Ci0gICAgICAgIG1fY2ZSZXNwb25z
ZSA9IFttX25zUmVzcG9uc2UuZ2V0KCkgX0NGVVJMUmVzcG9uc2VdOwotICAgICAgICByZXR1cm4g
bV9uc1Jlc3BvbnNlLmdldCgpOwotICAgIH0KLQotICAgIGlmICghbV9jZlJlc3BvbnNlKQotICAg
ICAgICByZXR1cm4gbmlsOwotCi0gICAgaWYgKCFtX25zUmVzcG9uc2UpCi0gICAgICAgIG1fbnNS
ZXNwb25zZSA9IFtOU1VSTFJlc3BvbnNlIF9yZXNwb25zZVdpdGhDRlVSTFJlc3BvbnNlOm1fY2ZS
ZXNwb25zZS5nZXQoKV07Ci0KLSAgICByZXR1cm4gbV9uc1Jlc3BvbnNlLmdldCgpOwotfQotCi1S
ZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKE5TVVJMUmVzcG9uc2UqIG5zUmVzcG9u
c2UpCi0gICAgOiBtX2luaXRMZXZlbChVbmluaXRpYWxpemVkKQotICAgICwgbV9wbGF0Zm9ybVJl
c3BvbnNlSXNVcFRvRGF0ZSh0cnVlKQotICAgICwgbV9jZlJlc3BvbnNlKFtuc1Jlc3BvbnNlIF9D
RlVSTFJlc3BvbnNlXSkKLSAgICAsIG1fbnNSZXNwb25zZShuc1Jlc3BvbnNlKQotewotICAgIG1f
aXNOdWxsID0gIW5zUmVzcG9uc2U7Ci19Ci0KLSNlbHNlCi0KIHN0YXRpYyBOU1N0cmluZyogY29u
c3QgY29tbW9uSGVhZGVyRmllbGRzW10gPSB7CiAgICAgQCJBZ2UiLCBAIkNhY2hlLUNvbnRyb2wi
LCBAIkNvbnRlbnQtVHlwZSIsIEAiRGF0ZSIsIEAiRXRhZyIsIEAiRXhwaXJlcyIsIEAiTGFzdC1N
b2RpZmllZCIsIEAiUHJhZ21hIgogfTsKQEAgLTE4OSw3ICsxNTksNSBAQCBib29sIFJlc291cmNl
UmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShjCiAgICAgcmV0dXJuIGEubnNVUkxSZXNwb25zZSgp
ID09IGIubnNVUkxSZXNwb25zZSgpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5t
bQkocmV2aXNpb24gMTgwMjY0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvU3luY2hyb25vdXNMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTeW5jaHJvbm91c0xvYWRlckNs
aWVudC5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbmNsdWRlICJBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwxNCArMzYsMTAgQEAg
dm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZQogICAgIFtjaGFsbGVuZ2Uu
c2VuZGVyKCkgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOmNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwogfQogCi0jaWYg
IVVTRShDRk5FVFdPUkspCiBSZXNvdXJjZUVycm9yIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojpw
bGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IoKQogewogICAgIFJldGFpblB0cjxOU0Vycm9yPiBlcnJv
ciA9IGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpOU1VSTEVycm9yRG9t
YWluIGNvZGU6TlNVUkxFcnJvckJhZFNlcnZlclJlc3BvbnNlIHVzZXJJbmZvOm5pbF0pOwogICAg
IHJldHVybiBlcnJvci5nZXQoKTsKIH0KLSNlbmRpZgogCiB9Ci0KLSNlbmRpZiAvLyAhVVNFKENG
TkVUV09SSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgJ
KHJldmlzaW9uIDE4MDI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
OCArMjYsNiBAQAogI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKICNk
ZWZpbmUgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCiAKLSNpZiAhVVNFKENGTkVU
V09SSykKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiB9CkBA
IC0zOSw1ICszNyw0IEBAIEBpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2EK
IC0gKHZvaWQpZGV0YWNoSGFuZGxlOwogQGVuZAogCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUksp
CiAjZW5kaWYgLy8gV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0Rl
bGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0JKHJldmlzaW9uIDE4MDI2NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5o
IgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbk1hYy5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgpAQCAtMjkxLDYgKzI4OSwzIEBAIC0gKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKiljb25uZWN0aW9u
OihOU1UKIH0KIAogQGVuZAotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZS5oCShyZXZpc2lvbiAxODAyNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRlZiBXZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaAogI2RlZmluZSBXZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaAogCi0jaWYgIVVTRShDRk5FVFdPUksp
Ci0KICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KIApAQCAtNTksNSArNTcsNCBAQCBAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRs
ZVdpdGhDcmVkCiAKIEBlbmQKIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogI2VuZGlmIC8v
IFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlLm1tCShyZXZpc2lvbiAxODAyNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRl
LmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW1wb3J0ICJMb2dnaW5n
LmgiCkBAIC0zNDgsNiArMzQ2LDMgQEAgLSAoQk9PTCljb25uZWN0aW9uU2hvdWxkVXNlQ3JlZGVu
dGlhbFN0bwogfQogCiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVVUkxSZXNwb25zZS5tbQkocmV2aXNpb24gMTgwMjY0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zMjUsNyArMzI1LDYgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVz
cAogfQogI2VuZGlmCiAKLSNpZiAhVVNFKENGTkVUV09SSykKIE5TVVJMUmVzcG9uc2UgKnN5bnRo
ZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0
aW9uLCBOU1VSTFJlcXVlc3QgKm5ld1JlcXVlc3QsIE5TVVJMUmVzcG9uc2UgKnJlZGlyZWN0UmVz
cG9uc2UpCiB7CiAgICAgaWYgKHJlZGlyZWN0UmVzcG9uc2UpCkBAIC0zMzksNiArMzM4LDUgQEAg
TlNVUkxSZXNwb25zZSAqc3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9ucwogICAgIE5TRGljdGlvbmFy
eSAqc3ludGhlc2l6ZWRSZXNwb25zZUhlYWRlckZpZWxkcyA9IEB7IEAiTG9jYXRpb24iOiBbW25l
d1JlcXVlc3QgVVJMXSBhYnNvbHV0ZVN0cmluZ10sIEAiQ2FjaGUtQ29udHJvbCI6IEAibm8tc3Rv
cmUiIH07CiAgICAgcmV0dXJuIFtbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVS
TDpbW2Nvbm5lY3Rpb24gY3VycmVudFJlcXVlc3RdIFVSTF0gc3RhdHVzQ29kZTozMDIgSFRUUFZl
cnNpb246KE5TU3RyaW5nICopa0NGSFRUUFZlcnNpb24xXzEgaGVhZGVyRmllbGRzOnN5bnRoZXNp
emVkUmVzcG9uc2VIZWFkZXJGaWVsZHNdIGF1dG9yZWxlYXNlXTsKIH0KLSNlbmRpZgogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTgwMjY0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCwx
MiArMTQwLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJh
eShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENGQXJyYXlSZWYpIG92ZXJyaWRlOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFsIHZv
aWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwotI2Vsc2UKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bENhY2hlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJM
UmVzcG9uc2UgKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNlbmRpZgogCiAjaWYgRU5BQkxFKE5FVFdP
UktfQ0FDSEUpCiAgICAgdm9pZCBkaWRSZXRyaWV2ZUNhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtDYWNoZTo6RW50cnk+KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtSZXNvdXJjZUxvYWRlck1hYy5tbQko
cmV2aXNpb24gMTgwMjY0KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05l
dHdvcmtSZXNvdXJjZUxvYWRlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtODIsMjAgKzgyLDYg
QEAgc2l6ZV90IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZmlsZUJhY2tlZAogICAgIHJldHVybiBT
aGFyZWRNZW1vcnk6OnN5c3RlbVBhZ2VTaXplKCk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
Ci12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNv
dXJjZUhhbmRsZSogaGFuZGxlLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCi17
Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0KLSAgICBp
ZiAobV9ieXRlc1JlY2VpdmVkID49IGZpbGVCYWNrZWRSZXNvdXJjZU1pbmltdW1TaXplKCkpCi0g
ICAgICAgIE5ldHdvcmtEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNy
ZWF0aW9uKGNmUmVzcG9uc2UsIHRoaXMpOwotCi0gICAgbV9oYW5kbGUtPmNvbnRpbnVlV2lsbENh
Y2hlUmVzcG9uc2UoY2ZSZXNwb25zZSk7Ci19Ci0KLSNlbHNlCi0KIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUs
IE5TQ2FjaGVkVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUX1VOVVNFRCho
YW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7CkBAIC0xMDYsOCArOTIsNiBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzCiAgICAgbV9oYW5kbGUtPmNvbnRpbnVlV2ls
bENhY2hlUmVzcG9uc2UobnNSZXNwb25zZSk7CiB9CiAKLSNlbmRpZiAvLyAhVVNFKENGTkVUV09S
SykKLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTgwMjY0KQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZAogICAgIGVuY29kZXIgPDwgdGV4dENoZWNrZXJTdGF0ZTsKICAgICBlbmNvZGVyIDw8
IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBkZWZhdWx0UmVxdWVz
dFRpbWVvdXRJbnRlcnZhbDsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykK
KyNpZiBQTEFURk9STShDT0NPQSkKICAgICBlbmNvZGVyIDw8IHVpUHJvY2Vzc0J1bmRsZUlkZW50
aWZpZXI7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTIzNiw3ICsyMzYsNyBAQCBi
b29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZGVmYXVsdFJlcXVlc3RU
aW1lb3V0SW50ZXJ2YWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTgwMjY0KQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzIHsKIAogICAgIGRvdWJsZSBkZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZh
bDsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIFN0cmluZyB1aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCShy
ZXZpc2lvbiAxODAyNjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsNiBAQCBEb3dubG9hZDo6RG93bmxv
YWQoRG93bmxvYWRNYW5hZ2VyJiBkb3duCiAgICAgOiBtX2Rvd25sb2FkTWFuYWdlcihkb3dubG9h
ZE1hbmFnZXIpCiAgICAgLCBtX2Rvd25sb2FkSUQoZG93bmxvYWRJRCkKICAgICAsIG1fcmVxdWVz
dChyZXF1ZXN0KQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgLCBtX2FsbG93T3ZlcndyaXRlKGZh
bHNlKQotI2VuZGlmCiB7CiAgICAgQVNTRVJUKG1fZG93bmxvYWRJRCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHJldmlzaW9uIDE4MDI2NCkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDQsMTAgKzQ0LDYgQEAgT0JKQ19DTEFTUyBXS0Rvd25sb2FkQXNEZWxlZ2F0ZTsK
ICNpbmNsdWRlIDxtZW1vcnk+CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW5jbHVk
ZSA8Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWRQcml2Lmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIElQ
QyB7CiAgICAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KQEAgLTkyLDExICs4OCw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURh
dGEpOwogICAgIHZvaWQgZGlkRGVjaWRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiwgYm9vbCBh
bGxvd092ZXJ3cml0ZSk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGNvbnN0IFN0cmluZyYg
ZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9Ci0gICAgRG93bmxv
YWRBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQoKTsKLSNlbmRpZgot
CiAgICAgLy8gQXV0aGVudGljYXRpb24KICAgICBzdGF0aWMgdm9pZCByZWNlaXZlZENyZWRlbnRp
YWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBXZWJDb3Jl
OjpDcmVkZW50aWFsJik7CiAgICAgc3RhdGljIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51
ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Jik7CkBAIC0xMzAsMTAgKzEyMSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2FsbG93T3Zlcndy
aXRlOwogICAgIFN0cmluZyBtX2Rlc3RpbmF0aW9uOwogICAgIFN0cmluZyBtX2J1bmRsZVBhdGg7
Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBSZXRhaW5QdHI8Q0ZVUkxEb3dubG9hZFJlZj4gbV9k
b3dubG9hZDsKLSAgICBSZWZQdHI8RG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudD4gbV9hdXRo
ZW50aWNhdGlvbkNsaWVudDsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
RUZMKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudD4g
bV9kb3dubG9hZENsaWVudDsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU+IG1f
cmVzb3VyY2VIYW5kbGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL2lv
cy9Eb3dubG9hZElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93
bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQkocmV2aXNpb24gMTgwMjY0KQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0JKHdvcmtpbmcgY29weSkK
QEAgLTEsMTk4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBv
cnQgIkRvd25sb2FkLmgiCi0KLSNpZiBQTEFURk9STShJT1MpCi0KLSNpbXBvcnQgIkRhdGFSZWZl
cmVuY2UuaCIKLSNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvUmVzb3VyY2VFcnJvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5o
PgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Ci0jaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgotCi0jaWYgVVNFKENGTkVUV09SSykK
LSNpbXBvcnQgPENGTmV0d29yay9DRlVSTERvd25sb2FkLmg+Ci0jZW5kaWYKLQotdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0jaWYgVVNFKENGTkVUV09S
SykKLS8vIEZJWE1FOiBJZiBwb3NzaWJsZSwgd2Ugc2hvdWxkIGNvbnNpZGVyIG1vdmluZyBzb21l
IGNhbGxiYWNrcyBvZmYgdGhlIG1haW4gdGhyZWFkIG9yIGF0IGxlYXN0Ci0vLyBtYWtpbmcgdGhl
bSBhc3luY2hvbm91cyBjYWxscy4KLXN0YXRpYyB2b2lkIGRpc3BhdGNoT25NYWluVGhyZWFkKHZv
aWQoXmJsb2NrKSgpKQotewotICAgIGlmIChSdW5Mb29wOjppc01haW4oKSkgewotICAgICAgICBi
bG9jaygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZGlzcGF0Y2hfc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBibG9jayk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRG93bmxv
YWQqIHRvRG93bmxvYWQoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RG93bmxvYWQqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci19Ci0K
LXN0YXRpYyB2b2lkIHNldFVwRG93bmxvYWRDbGllbnQoQ0ZVUkxEb3dubG9hZENsaWVudCYgY2xp
ZW50LCBEb3dubG9hZCYgZG93bmxvYWQpCi17Ci0gICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVv
ZihjbGllbnQpKTsKLSAgICBjbGllbnQuY2xpZW50SW5mbyA9ICZkb3dubG9hZDsKLQotICAgIGNs
aWVudC5kaWRTdGFydCA9IFtdKENGVVJMRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93
bmxvYWQoY2xpZW50SW5mbyktPmRpZFN0YXJ0KCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAg
ICBjbGllbnQud2lsbFNlbmRSZXF1ZXN0ID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZVUkxSZXF1
ZXN0UmVmIHJlcXVlc3QsIENGVVJMUmVzcG9uc2VSZWYsIGNvbnN0IHZvaWQqKSAtPiBDRlVSTFJl
cXVlc3RSZWYgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZVUkxSZXF1ZXN0UmVmPihD
RlJldGFpbihyZXF1ZXN0KSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC5kaWRSZWNlaXZlUmVzcG9u
c2UgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0g
ICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVz
cG9uc2UpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZFJlY2VpdmVEYXRh
ID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZJbmRleCBsZW5ndGgsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRv
RG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFJlY2VpdmVEYXRhKGxlbmd0aCk7Ci0gICAgICAgIH0p
OwotICAgIH07Ci0KLSAgICBjbGllbnQuc2hvdWxkRGVjb2RlRGF0YU9mTUlNRVR5cGUgPSBbXShD
RlVSTERvd25sb2FkUmVmLCBDRlN0cmluZ1JlZiBlbmNvZGluZ1R5cGUsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pIC0+IEJvb2xlYW4gewotICAgICAgICBfX2Jsb2NrIEJPT0wgcmV0dXJuVmFsdWUg
PSBOTzsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHJldHVy
blZhbHVlID0gdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+c2hvdWxkRGVjb2RlU291cmNlRGF0YU9m
TUlNRVR5cGUoZW5jb2RpbmdUeXBlKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZE9iamVjdE5hbWUgPSBbXShDRlVSTERvd25sb2FkUmVmIGRvd25sb2FkUmVmLCBDRlN0cmlu
Z1JlZiBvYmplY3ROYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3Bh
dGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICBib29sIGFsbG93T3ZlcndyaXRlOwotICAg
ICAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUob2JqZWN0TmFtZSwgYWxsb3dPdmVy
d3JpdGUpOwotICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKLSAgICAgICAg
ICAgICAgICBDRlVSTERvd25sb2FkU2V0RGVzdGluYXRpb24oZG93bmxvYWRSZWYsIHJlaW50ZXJw
cmV0X2Nhc3Q8Q0ZVUkxSZWY+KFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZGVzdGluYXRpb25dKSwg
YWxsb3dPdmVyd3JpdGUpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZENy
ZWF0ZURlc3RpbmF0aW9uID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZVUkxSZWYgcGF0aCwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewot
ICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlkQ3JlYXRlRGVzdGluYXRpb24o
Q0ZVUkxHZXRTdHJpbmcocGF0aCkpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50
LmRpZEZpbmlzaCA9IFtdKENGVVJMRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
IHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxv
YWQoY2xpZW50SW5mbyktPmRpZEZpbmlzaCgpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAg
Y2xpZW50LmRpZEZhaWwgPSBbXShDRlVSTERvd25sb2FkUmVmIGRvd25sb2FkUmVmLCBDRkVycm9y
UmVmIGVycm9yLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25N
YWluVGhyZWFkKF57Ci0gICAgICAgICAgICBhdXRvIHJlc3VtZURhdGEgPSBhZG9wdENGKENGVVJM
RG93bmxvYWRDb3B5UmVzdW1lRGF0YShkb3dubG9hZFJlZikpOwotICAgICAgICAgICAgdG9Eb3du
bG9hZChjbGllbnRJbmZvKS0+ZGlkRmFpbChlcnJvciwgSVBDOjpEYXRhUmVmZXJlbmNlKHJlc3Vt
ZURhdGEgPyBDRkRhdGFHZXRCeXRlUHRyKHJlc3VtZURhdGEuZ2V0KCkpIDogbnVsbHB0ciwgcmVz
dW1lRGF0YSA/IENGRGF0YUdldExlbmd0aChyZXN1bWVEYXRhLmdldCgpKSA6IDApKTsKLSAgICAg
ICAgfSk7Ci0gICAgfTsKLX0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCi12b2lkIERvd25s
b2FkOjpzdGFydCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9h
ZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotI2lmIFVTRShDRk5FVFdPUksp
Ci0gICAgQ0ZVUkxEb3dubG9hZENsaWVudCBjbGllbnQ7Ci0gICAgc2V0VXBEb3dubG9hZENsaWVu
dChjbGllbnQsICp0aGlzKTsKLSAgICBtX2Rvd25sb2FkID0gYWRvcHRDRihDRlVSTERvd25sb2Fk
Q3JlYXRlQW5kU3RhcnRXaXRoTG9hZGluZ0Nvbm5lY3Rpb24oTlVMTCwgaGFuZGxlLT5yZWxlYXNl
Q29ubmVjdGlvbkZvckRvd25sb2FkKCkuZ2V0KCksIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBk
YXRlSFRUUEJvZHkpLCByZXNwb25zZS5jZlVSTFJlc3BvbnNlKCksICZjbGllbnQpKTsKLSNlbHNl
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgotfQotCi12b2lkIERvd25sb2FkOjpjYW5j
ZWwoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnBsYXRm
b3JtSW52YWxpZGF0ZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3du
bG9hZDo6ZGlkRGVjaWRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiwgYm9vbCkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCgp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRD
cmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlh
bCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVjZWl2
ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2Fk
OjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRSZXF1
ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2Fk
OjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQkocmV2aXNpb24g
MTgwMjY0KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDkgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiRG93bmxvYWQuaCIKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9S
TShDT0NPQSkKIAorI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTERvd25sb2FkLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0F1
dGhlbnRpY2F0aW9uTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVu
dENvZGVyc01hYy5tbQkocmV2aXNpb24gMTgwMjY0KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5LDQz
ICszOSwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQg
PENGTmV0d29yay9DRlVSTFJlcXVlc3QuaD4KLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIElQQyB7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotdm9pZCBBcmd1
bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQot
ewotICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IHJlcXVlc3RUb1NlcmlhbGl6ZSA9IHJl
c291cmNlUmVxdWVzdC5jZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSk7Ci0KLSAgICBi
b29sIHJlcXVlc3RJc1ByZXNlbnQgPSByZXF1ZXN0VG9TZXJpYWxpemU7Ci0gICAgZW5jb2RlciA8
PCByZXF1ZXN0SXNQcmVzZW50OwotCi0gICAgaWYgKCFyZXF1ZXN0SXNQcmVzZW50KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICAvLyBXZSBkb24ndCBzZW5kIEhUVFAgYm9keSBvdmVyIElQQyBmb3Ig
YmV0dGVyIHBlcmZvcm1hbmNlLgotICAgIC8vIEFsc28sIGl0J3Mgbm90IGFsd2F5cyBwb3NzaWJs
ZSB0byBkbywgYXMgc3RyZWFtcyBjYW4gb25seSBiZSBjcmVhdGVkIGluIHByb2Nlc3MgdGhhdCBk
b2VzIG5ldHdvcmtpbmcuCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcmVxdWVzdEhUVFBCb2R5
ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5KHJlcXVlc3RUb1Nlcmlh
bGl6ZS5nZXQoKSkpOwotICAgIFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IHJlcXVlc3RIVFRQ
Qm9keVN0cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keVN0cmVh
bShyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCkpKTsKLSAgICBpZiAocmVxdWVzdEhUVFBCb2R5IHx8
IHJlcXVlc3RIVFRQQm9keVN0cmVhbSkgewotICAgICAgICBDRk11dGFibGVVUkxSZXF1ZXN0UmVm
IG11dGFibGVSZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgcmVxdWVz
dFRvU2VyaWFsaXplLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdFRvU2VyaWFsaXplID0gYWRvcHRD
RihtdXRhYmxlUmVxdWVzdCk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9k
eShtdXRhYmxlUmVxdWVzdCwgbmlsKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVl
c3RCb2R5U3RyZWFtKG11dGFibGVSZXF1ZXN0LCBuaWwpOwotICAgIH0KLQotICAgIFJldGFpblB0
cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBhZG9wdENGKFdLQ0ZVUkxSZXF1ZXN0Q3Jl
YXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24ocmVxdWVzdFRvU2VyaWFsaXplLmdldCgpLCBJ
UEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOwotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIGRpY3Rp
b25hcnkuZ2V0KCkpOwotCi0gICAgLy8gVGhlIGZhbGxiYWNrIGFycmF5IGlzIHBhcnQgb2YgQ0ZV
UkxSZXF1ZXN0LCBidXQgaXQgaXMgbm90IGVuY29kZWQgYnkgV0tDRlVSTFJlcXVlc3RDcmVhdGVT
ZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbi4KLSAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVz
dC5yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSgpOwotfQot
I2Vsc2UKIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9y
bURhdGEoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCkKIHsKICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiByZXF1ZXN0VG9T
ZXJpYWxpemUgPSByZXNvdXJjZVJlcXVlc3QubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJv
ZHkpOwpAQCAtMTAwLDcgKzY3LDYgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVz
dD46OmVuYwogICAgIC8vIFRoZSBmYWxsYmFjayBhcnJheSBpcyBwYXJ0IG9mIE5TVVJMUmVxdWVz
dCwgYnV0IGl0IGlzIG5vdCBlbmNvZGVkIGJ5IFdLTlNVUkxSZXF1ZXN0Q3JlYXRlU2VyaWFsaXph
YmxlUmVwcmVzZW50YXRpb24uCiAgICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QucmVzcG9u
c2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoKTsKIH0KLSNlbmRpZgog
CiBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRh
KEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QpCiB7CkBAIC0xMTcsMjAgKzgzLDEyIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJl
cXVlc3Q+OjpkZWMKICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRpY3Rpb25hcnkpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIFJldGFpblB0
cjxDRlVSTFJlcXVlc3RSZWY+IGNmVVJMUmVxdWVzdCA9IGFkb3B0Q0YoV0tDcmVhdGVDRlVSTFJl
cXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24oZGljdGlvbmFyeS5nZXQoKSwgSVBD
Ojp0b2tlbk51bGxUeXBlUmVmKCkpKTsKLSAgICBpZiAoIWNmVVJMUmVxdWVzdCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmVzb3VyY2VSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KGNm
VVJMUmVxdWVzdC5nZXQoKSk7Ci0jZWxzZQogICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5z
VVJMUmVxdWVzdCA9IFdLTlNVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9u
KGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKTsKICAgICBpZiAoIW5z
VVJMUmVxdWVzdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmVzb3VyY2VSZXF1ZXN0
ID0gUmVzb3VyY2VSZXF1ZXN0KG5zVVJMUmVxdWVzdC5nZXQoKSk7Ci0jZW5kaWYKLSAgICAKKwog
ICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxs
YmFja0FycmF5OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2VDb250ZW50RGlzcG9z
aXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAxODAyNjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY0MCw3ICs2NDAsNiBAQAogCQkyREE5
NDRBMjE4ODRFNEYwMDBFRDg2REIgLyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NDlCMTg4NEU0
RjAwMEVEODZEQiAvKiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1MuY3BwICovOyB9OwogCQkyREE5
NDRBMzE4ODRFNEYwMDBFRDg2REIgLyogV2ViVG91Y2hFdmVudElPUy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDQ5QzE4ODRFNEYwMDBFRDg2
REIgLyogV2ViVG91Y2hFdmVudElPUy5jcHAgKi87IH07CiAJCTJEQTk0NEE0MTg4NEU0RjAwMEVE
ODZEQiAvKiBHZXN0dXJlVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEQTk0NDlEMTg4NEU0RjAwMEVEODZEQiAvKiBHZXN0dXJlVHlwZXMuaCAq
LzsgfTsKLQkJMkRBOTQ0QTcxODg0RTk0ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9TLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0QTYxODg0RTk0
ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9TLm1tICovOyB9OwogCQkyREE5NDRBRDE4ODRFOUJBMDBF
RDg2REIgLyogVGV4dENoZWNrZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyREE5NDRBOTE4ODRFOUJBMDBFRDg2REIgLyogVGV4dENoZWNrZXJJ
T1MubW0gKi87IH07CiAJCTJEQTk0NEFGMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQYWdlUHJveHlJ
T1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5
NDRBQjE4ODRFOUJBMDBFRDg2REIgLyogV2ViUGFnZVByb3h5SU9TLm1tICovOyB9OwogCQkyREE5
NDRCMDE4ODRFOUJBMDBFRDg2REIgLyogV2ViUHJvY2Vzc1Byb3h5SU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0QUMxODg0RTlCQTAwRUQ4
NkRCIC8qIFdlYlByb2Nlc3NQcm94eUlPUy5tbSAqLzsgfTsKQEAgLTI3NjYsNyArMjc2NSw2IEBA
CiAJCTJEQTk0NDlCMTg4NEU0RjAwMEVEODZEQiAvKiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1Mu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUGxhdGZvcm1Ub3Vj
aFBvaW50SU9TLmNwcDsgcGF0aCA9IGlvcy9XZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREE5NDQ5QzE4ODRFNEYwMDBFRDg2REIgLyog
V2ViVG91Y2hFdmVudElPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBXZWJUb3VjaEV2ZW50SU9TLmNwcDsgcGF0aCA9IGlvcy9XZWJUb3VjaEV2ZW50SU9TLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0OUQxODg0RTRGMDAwRUQ4NkRCIC8q
IEdlc3R1cmVUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHZXN0dXJl
VHlwZXMuaDsgcGF0aCA9IGlvcy9HZXN0dXJlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMkRBOTQ0QTYxODg0RTk0ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRG93bmxvYWRJT1MubW07IHBhdGgg
PSBEb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyREE5NDRBOTE4ODRFOUJBMDBFRDg2REIgLyogVGV4dENoZWNrZXJJT1MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXh0Q2hlY2tlcklPUy5tbTsgcGF0
aCA9IGlvcy9UZXh0Q2hlY2tlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkRBOTQ0QUIxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlBhZ2VQcm94eUlPUy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlBhZ2VQcm94eUlPUy5tbTsgcGF0aCA9
IGlvcy9XZWJQYWdlUHJveHlJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJE
QTk0NEFDMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQcm9jZXNzUHJveHlJT1MubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJQcm9jZXNzUHJveHlJT1MubW07IHBh
dGggPSBpb3MvV2ViUHJvY2Vzc1Byb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTA1NCw3ICs1MDUyLDYgQEAKIAkJMkRBOTQ0QTUxODg0RTkzQzAwRUQ4NkRCIC8qIGlv
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMkRBOTQ0
QTYxODg0RTk0ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9TLm1tICovLAogCQkJKTsKIAkJCW5hbWUg
PSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTMyMSw3ICs5MzE4LDYgQEAK
IAkJCQk1MThFOEYwNzE2QjIwOTM3MDBFOTE0MjkgLyogRG93bmxvYWQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTE4RThGMDkxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkQXV0aGVudGljYXRp
b25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFERjYzMTIxOEUwQjdDODAwM0EzRTJB
IC8qIERvd25sb2FkQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMkRBOTQ0QTcxODg0RTk0
ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4RThGMEQx
NkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4
RThGMEIxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQUI3RDRDQjEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAkocmV2aXNpb24gMTgwMjY0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgV2ViUHJvY2Vz
czo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRVc2VG
b250U21vb3RoaW5nKQogICAgICAgICBzZXRTaG91bGRVc2VGb250U21vb3RoaW5nKHRydWUpOwog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgU2Vzc2lvblRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMudWlQ
cm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CiAjZW5kaWYKIApAQCAtNDg3LDE0ICs0ODcsMTQgQEAg
dm9pZCBXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQwogCiB2b2lkIFdlYlByb2Nl
c3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsK
LSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCisjaWYg
UExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsKICNlbmRpZgogfQog
CiB2b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25J
RCBzZXNzaW9uSUQpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8
IFVTRShTT1VQKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKICAgICBTZXNzaW9u
VHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oc2Vzc2lvbklEKTsKICNlbmRpZgogfQpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDE4MDI2NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0SmF2YVNjcmlwdENh
bkFjYwogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQ
YWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBib29sIGVuYWJsZWQpCiB7CiAgICAgLy8gRklYTUUg
KE5ldHdvcmtQcm9jZXNzKTogVGhpcyB0ZXN0LW9ubHkgZnVuY3Rpb24gZG9lc24ndCB3b3JrIHdp
dGggTmV0d29ya1Byb2Nlc3MsIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE1Mjc0Pi4KLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNF
KFNPVVApCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIGlmIChlbmFibGVk
KQogICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKICAgICBlbHNl
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCShyZXZpc2lvbiAxODAy
NjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMiwxMyArMTMyLDYgQEAgdm9p
ZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAgICBJTklUKFdpbmRvd1Nl
dEFscGhhKTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCi0jaWYgVVNFKENGTkVUV09SSykK
LSAgICAgICAgSU5JVChHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UpOwotICAgICAgICBJTklU
KENvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UpOwotICAgICAgICBJTklUKFNl
dENGVVJMUmVxdWVzdFNob3VsZENvbnRlbnRTbmlmZik7Ci0gICAgICAgIElOSVQoU2V0UmVxdWVz
dFN0b3JhZ2VTZXNzaW9uKTsKLSNlbmRpZgotCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAg
SU5JVChTcGVlY2hTeW50aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJzKTsKICAgICAgICAgSU5JVChT
cGVlY2hTeW50aGVzaXNHZXREZWZhdWx0Vm9pY2VJZGVudGlmaWVyRm9yTG9jYWxlKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0JKHJldmlzaW9uIDE4MDI2NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTMsMTEgKzkzLDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkK
IHsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIG1fcGFnZS0+YWRkU2NoZWR1bGVQYWlyKFNjaGVk
dWxlUGFpcjo6Y3JlYXRlKFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBnZXRDRlJ1bkxvb3Bd
LCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpKTsKLSNlbHNlCiAgICAgbV9wYWdlLT5hZGRTY2hlZHVs
ZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUoW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0sIGtD
RlJ1bkxvb3BDb21tb25Nb2RlcykpOwotI2VuZGlmCiAKICAgICBXS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0KiBtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBbW1tXS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5oCShyZXZpc2lvbiAxODAyNjQp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdFZlcnNpb25DaGVja3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQAogI2RlZmluZSBXRUJLSVRfRklSU1RfVkVSU0lPTl9X
SVRIX0NTU19BVFRSSUJVVEVfU0VUVEVSU19JR05PUklOR19QUklPUklUWSAyMjM5IC8vIGlPUyA2
LjAKICNkZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9ZT1VUVUJFX0VNQkVEX0lGUkFN
RV9UUkFOU0ZPUk0gMjIzOSAvLyBpT1MgNi4wCiAjZGVmaW5lIFdFQktJVF9GSVJTVF9WRVJTSU9O
X1dJVEhPVVRfTEVHQUNZX0JBQ0tHUk9VTkRTSVpFX1NIT1JUSEFORF9CRUhBVklPUiAyNjY1IC8v
IGlPUyA3LjAKKyNkZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9MT0FESU5HX0RVUklO
R19DT01NT05fUlVOTE9PUF9NT0RFUyAyNjY1IC8vIGlPUyA3LjAKICNlbmRpZiAvLyBQTEFURk9S
TShJT1MpCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQkocmV2aXNpb24gMTgwMjY0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEzLDEyICsxMDEzLDEzIEBAIC0gKHZv
aWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKIAogI2lmICFQTEFURk9STShJT1Mp
CiAgICAgTlNSdW5Mb29wICpydW5Mb29wID0gW05TUnVuTG9vcCBtYWluUnVuTG9vcF07Ci0KKyNl
bHNlCisgICAgTlNSdW5Mb29wICpydW5Mb29wID0gV2ViVGhyZWFkTlNSdW5Mb29wKCk7CisjZW5k
aWYKICAgICBpZiAoV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJ
VEhfTE9BRElOR19EVVJJTkdfQ09NTU9OX1JVTkxPT1BfTU9ERVMpKQogICAgICAgICBbc2VsZiBz
Y2hlZHVsZUluUnVuTG9vcDpydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopa0NGUnVuTG9vcENv
bW1vbk1vZGVzXTsKICAgICBlbHNlCiAgICAgICAgIFtzZWxmIHNjaGVkdWxlSW5SdW5Mb29wOnJ1
bkxvb3AgZm9yTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZV07Ci0jZW5kaWYKIAogICAgIFtzZWxm
IF9hZGRUb0FsbFdlYlZpZXdzU2V0XTsKICAgICAKQEAgLTY1ODUsMjkgKzY1ODYsMTkgQEAgLSAo
Qk9PTCl2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtOihpZCA8TgogCiBAaW1wbGVtZW50YXRpb24g
V2ViVmlldyAoV2ViUGVuZGluZ1B1YmxpYykKIAotI2lmICFQTEFURk9STShJT1MpCiAtICh2b2lk
KXNjaGVkdWxlSW5SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5n
ICopbW9kZQogewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZSdW5Mb29wUmVmIHNjaGVkdWxl
UGFpclJ1bkxvb3AgPSBbcnVuTG9vcCBnZXRDRlJ1bkxvb3BdOwotI2Vsc2UKICAgICBOU1J1bkxv
b3AgKnNjaGVkdWxlUGFpclJ1bkxvb3AgPSBydW5Mb29wOwotI2VuZGlmCiAgICAgaWYgKHJ1bkxv
b3AgJiYgbW9kZSkKICAgICAgICAgY29yZShzZWxmKS0+YWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxl
UGFpcjo6Y3JlYXRlKHNjaGVkdWxlUGFpclJ1bkxvb3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CiB9
CiAKIC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZv
ck1vZGU6KE5TU3RyaW5nICopbW9kZQogewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZSdW5M
b29wUmVmIHNjaGVkdWxlUGFpclJ1bkxvb3AgPSBbcnVuTG9vcCBnZXRDRlJ1bkxvb3BdOwotI2Vs
c2UKICAgICBOU1J1bkxvb3AgKnNjaGVkdWxlUGFpclJ1bkxvb3AgPSBydW5Mb29wOwotI2VuZGlm
CiAgICAgaWYgKHJ1bkxvb3AgJiYgbW9kZSkKICAgICAgICAgY29yZShzZWxmKS0+cmVtb3ZlU2No
ZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHNjaGVkdWxlUGFpclJ1bkxvb3AsIChDRlN0
cmluZ1JlZiltb2RlKSk7CiB9Ci0jZW5kaWYKIAogc3RhdGljIEJPT0wgZmluZFN0cmluZyhOU1Zp
ZXcgPFdlYkRvY3VtZW50U2VhcmNoaW5nPiAqc2VhcmNoVmlldywgTlNTdHJpbmcgKnN0cmluZywg
V2ViRmluZE9wdGlvbnMgb3B0aW9ucykKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDE4MDI2NCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDEwICsx
OTgsOCBAQCBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdFZGl0aW5nQWN0aW9uCiAKIEBpbnRl
cmZhY2UgV2ViVmlldyAoV2ViUGVuZGluZ1B1YmxpYykKIAotI2lmICFUQVJHRVRfT1NfSVBIT05F
CiAtICh2b2lkKXNjaGVkdWxlSW5SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1vZGU6
KE5TU3RyaW5nICopbW9kZTsKIC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5Mb29wOihOU1J1bkxv
b3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZTsKLSNlbmRpZgogCiAtIChCT09M
KWZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KFdlYkZpbmRPcHRpb25zKW9w
dGlvbnM7CiAtIChET01SYW5nZSAqKURPTVJhbmdlT2ZTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5n
IHJlbGF0aXZlVG86KERPTVJhbmdlICopcHJldmlvdXNSYW5nZSBvcHRpb25zOihXZWJGaW5kT3B0
aW9ucylvcHRpb25zOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267462</attachid>
            <date>2015-12-16 09:49:47 -0800</date>
            <delta_ts>2015-12-16 21:33:16 -0800</delta_ts>
            <desc>Rebased onto r194115</desc>
            <filename>bug-137936-20151216094909.patch</filename>
            <type>text/plain</type>
            <size>110127</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBhNzBjNzQ2ZThlOGQ0
NjYzMDk2ZjIyYWVkMzlmOTZmOTU1OTBhYWU2Li44OWRhYmY5ZThkZDQ4OGVhYzAwMTRmYjE5NjI2
NjU2MWQ5MzMxZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTU0NSw5ICs1NDUsNiBAQAogI2lmIFBMQVRG
T1JNKElPUykKIAogI2RlZmluZSBIQVZFX1JFQURMSU5FIDEKLSNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQotI2RlZmluZSBVU0VfQ0ZORVRXT1JLIDEKLSNlbmRpZgogI2RlZmluZSBVU0VfVUlL
SVRfRURJVElORyAxCiAjZGVmaW5lIFVTRV9XRUJfVEhSRUFEIDEKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA2ZGVhMTg0MDlh
YjM0ZTgxMTAxZmIzYzAwMmY3ZmVmM2RiNjg3ZmQuLmY4Y2NlYmZhMzIxOWFiZTgyZjdiOWQwYTg1
YzRjZDgwYmFhOTY1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTI3NjksNyArMjc2OSw2IEBACiAJCTdFNjZFMjM0MTZENkVC
NkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTY2RTIzMjE2RDZFQjZDMDBGN0U3RkYg
LyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oICovOyB9OwogCQk3RTY2RTIzNDE3RTZFQjZD
MDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTY2RTIzMjE3RTZFQjZDMDBGN0U3RkYg
LyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmggKi87IH07CiAJCTdFN0RFMUZEMTk1Q0VG
MjYwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFN0RFMUZDMTk1Q0VGMjYwMDM1MzYzQiAvKiBS
ZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSAqLzsgfTsKLQkJN0U3REUyMDIxOTVDRUZDRDAwMzUzNjNC
IC8qIFJlc291cmNlUmVxdWVzdElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFN0RFMjAxMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVl
c3RJT1MubW0gKi87IH07CiAJCTdFOEZBREM0MTk5QTk1QjEwMDcxNDk2OCAvKiBTdWJyZXNvdXJj
ZUxvYWRlckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0U4RkFEQzMxOTlBOTVCMTAwNzE0OTY4IC8qIFN1YnJlc291cmNlTG9hZGVyQ29jb2Eu
bW0gKi87IH07CiAJCTdFOTlBRjUxMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93
ZWRJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGlj
YXRvci5jcHAgKi87IH07CiAJCTdFOTlBRjUzMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1
c0FsbG93ZWRJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdFOTlBRjU0MEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJ
bmRpY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTAyNzQsNyArMTAyNzMsNiBAQAogCQk3RTY2RTIzMjE2RDZFQjZDMDBGN0U3RkYgLyog
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdFNjZFMjMyMTdFNkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UFZSVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFN0RFMUZDMTk1
Q0VGMjYwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk3RTdERTIwMTE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3Vy
Y2VSZXF1ZXN0SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UmVzb3VyY2VSZXF1ZXN0SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RThG
QURDMzE5OUE5NUIxMDA3MTQ5NjggLyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN1YnJlc291cmNlTG9hZGVyQ29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFOTlBRjUyMEIxMzg0NjQ2OEZCMDFB
NSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U5OUFGNTQwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRv
d0ZvY3VzQWxsb3dlZEluZGljYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE2NTUxLDcgKzE2NTQ5LDYgQEAKIAkJCQk0NDJBRjdBODEwMkNEREVBMDA4RkQ0RDMg
LyogUXVpY2tMb29rLm1tICovLAogCQkJCUExMERCRjQ2MThGOTIzMTcwMDBENzBDNiAvKiBRdWlj
a0xvb2tIYW5kbGVDbGllbnQuaCAqLywKIAkJCQk3RTQyOENFNDEzRTM0MDdGMDAzQjY2MUMgLyog
UmVzb3VyY2VIYW5kbGVJT1MubW0gKi8sCi0JCQkJN0U3REUyMDExOTVDRUZDRDAwMzUzNjNCIC8q
IFJlc291cmNlUmVxdWVzdElPUy5tbSAqLywKIAkJCQk0NEEyMERCODBGODQxNjZDMDBCM0UxRkUg
LyogV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmggKi8sCiAJCQkJNDQ0RDRFMjEwRjcwOEIyRTAwMzE1
OEUwIC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5tbSAqLywKIAkJCSk7CkBAIC0zMDc2Myw3ICsz
MDc2MCw2IEBACiAJCQkJNTE0Qzc2N0MwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVz
dEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NkUxMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFN0RFMUZEMTk1
Q0VGMjYwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBpbiBTb3VyY2VzICovLAot
CQkJCTdFN0RFMjAyMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gaW4g
U291cmNlcyAqLywKIAkJCQk1MTRDNzY1MzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1
ZXN0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2N0UwQ0U5MjNBMTAwN0VGM0NEIC8q
IFJlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDcxMTJE
MjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IDU1MTAzOTFiZDMzZDNh
MzY2NzE1NmU4NDVmYTMxMzExYzNmNmY5ZjMuLjlkYmUxODNlNjllY2I1ZGUxZjU1NWI3ZTU4Y2U0
OGQ3ODNkZGUwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC01
Niw2ICs1NiwxMCBAQAogI2luY2x1ZGUgIlF1aWNrTG9vay5oIgogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7CkBAIC0x
NDQsNyArMTQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICAgICAgY29u
c3QgU3RyaW5nJiBvdmVycmlkZUVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZUVu
Y29kaW5nOyB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
ICAgIHZvaWQgc2NoZWR1bGUoU2NoZWR1bGVQYWlyJik7CiAgICAgICAgIHZvaWQgdW5zY2hlZHVs
ZShTY2hlZHVsZVBhaXImKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggMGQ4MWZmNWJhMjhhMjEwNGQ1MjhhZWNmYmJiZTczNTZjYTIzYjY3OC4u
OTYxM2UzMDFiODMxN2VhZTgxNTJjZjNlOGYwNzZjNGQzOWMxZDcwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03MjQsNyArNzI0LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKQogICAgIGNhbmNlbCgpOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRG
T1JNKENPQ09BKQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpzY2hlZHVsZShTY2hlZHVsZVBhaXIm
IHBhaXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDAyN2Fj
MDhmMjMyMzFkNDA3ODdkMTMwMjU2MjYzMzJiOTI2ZjQwZmEuLjg1MjAxMTc1NGY3YjkxNDY3NTUy
YzhiNWNhOWIxOTc3MTc5OWVlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCkBAIC0xNDAsNyArMTQwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU3dpdGNoVG9T
dWJzdGl0dXRlUmVzb3VyY2UoKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICB2b2lkIHNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAgICAgdm9pZCB1
bnNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKQEAgLTE1NywxMiArMTU3LDkg
QEAgcHJvdGVjdGVkOgogCiAgICAgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25z
KCkgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShD
Rk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJl
c3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVz
cG9uc2UqKSBvdmVycmlkZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQ0ZO
RVRXT1JLKQotICAgIHZpcnR1YWwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNw
b25zZShSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwot
I2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKaW5kZXggNjlhMjQyMjk3
MjFmZjZjYTk4OTkzYTY5OTc3MDE4ZmVlZDhkNWNkOC4uZWZhY2RkOGQxMzI0MmEwNjQ0MzlhYjcy
OTAwYjE5NGNjYmMwMTRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmgKQEAgLTczLDEyICs3Myw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxD
YW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0jaWYgUExBVEZPUk0o
Q09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1
YWwgTlNDYWNoZWRVUkxSZXNwb25zZSAqd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUq
LCBOU0NhY2hlZFVSTFJlc3BvbnNlKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNpZiBQTEFURk9STShD
T0NPQSkgJiYgVVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFsIENGQ2FjaGVkVVJMUmVzcG9uc2VS
ZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmKSBvdmVycmlkZTsKLSNlbmRpZgogCiAjaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NB
TExCQUNLKQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RhdGFBcnJheSgpIG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9j
dW1lbnRMb2FkZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1bWVudExv
YWRlck1hYy5jcHAKaW5kZXggN2U3NGYyMGY5NzJiMDc4ZmU4NjJiNTgxYzI4OWJlZWU1ZDBhMTJj
OC4uYjI2MTQ0YmQyMDVmMWY2YTc2NmFlZWI1MjdmY2VmM2Y5NjJlMTdiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAKQEAgLTMzLDggKzMz
LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgUExBVEZPUk0oTUFDKQotCiBzdGF0
aWMgdm9pZCBzY2hlZHVsZUFsbChjb25zdCBSZXNvdXJjZUxvYWRlck1hcCYgbG9hZGVycywgU2No
ZWR1bGVQYWlyJiBwYWlyKQogewogICAgIFZlY3RvcjxSZWZQdHI8UmVzb3VyY2VMb2FkZXI+PiBs
b2FkZXJzQ29weTsKQEAgLTY5LDYgKzY3LDQgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6dW5zY2hl
ZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiAgICAgdW5zY2hlZHVsZUFsbChtX211bHRpcGFydFN1
YnJlc291cmNlTG9hZGVycywgcGFpcik7CiB9CiAKLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0KaW5kZXgg
YmI5YjE0ZTgxNGI1YjIzOWM3N2U1MWE0ZGJmMTdjZDY1MWMyNmYwMy4uOGEzMjhlZTVmZjI4ODFl
OGMzNDQ2ZWI1ODg0Y2UyZTViMjJmY2ZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
bWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCkBAIC0zNiwxOSArMzYsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1DRkNhY2hlZFVSTFJlc3BvbnNlUmVm
IFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCi17Ci0gICAgaWYgKG1fb3B0aW9ucy5z
ZW5kTG9hZENhbGxiYWNrcygpID09IERvTm90U2VuZENhbGxiYWNrcykKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICBSZXRhaW5QdHI8TlNDYWNoZWRVUkxSZXNwb25zZT4gbnNDYWNoZWRS
ZXNwb25zZSA9IGFkb3B0TlMoW1tOU0NhY2hlZFVSTFJlc3BvbnNlIGFsbG9jXSBfaW5pdFdpdGhD
RkNhY2hlZFVSTFJlc3BvbnNlOmNhY2hlZFJlc3BvbnNlXSk7Ci0gICAgcmV0dXJuIFtmcmFtZUxv
YWRlcigpLT5jbGllbnQoKS53aWxsQ2FjaGVSZXNwb25zZShkb2N1bWVudExvYWRlcigpLCBpZGVu
dGlmaWVyKCksIG5zQ2FjaGVkUmVzcG9uc2UuZ2V0KCkpIF9DRkNhY2hlZFVSTFJlc3BvbnNlXTsK
LX0KLQotI2Vsc2UKLQogTlNDYWNoZWRVUkxSZXNwb25zZSogUmVzb3VyY2VMb2FkZXI6OndpbGxD
YWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9u
c2UpCiB7CiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcygpID09IERvTm90U2Vu
ZENhbGxiYWNrcykKQEAgLTU2LDggKzQzLDYgQEAgTlNDYWNoZWRVUkxSZXNwb25zZSogUmVzb3Vy
Y2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWQKICAg
ICByZXR1cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9jdW1l
bnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9CiAKLSNlbmRpZgotCiAjaWYg
VVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogCiB2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KaW5kZXggOTgwZTQzMWY2ZDJjMTQ2ZjViYzExYjk3MmVjNjlmNjAzNTdjOGI1OC4u
MGFhMThmZDFiNWNmYjk3MDRkY2FkMjU0NzZjNjFmYTk2ZTU5NTQxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCkBAIC05OSwxMCArOTksNiBAQAogI2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZpZGVv
VG9vbGJveC5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2luY2x1ZGUgIkNGTlNV
UkxDb25uZWN0aW9uU1BJLmgiCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKElPUykKICNpbmNsdWRl
IDxPcGVuR0xFUy9FUzMvZ2xleHQuaD4KICNlbmRpZgpAQCAtNDIxLDU4ICs0MTcsNiBAQCBzdGF0
aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpCiB9CiAjZW5kaWYK
IAotI2lmIFVTRShDRk5FVFdPUkspCi1jbGFzcyBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlQ2xpZW50PiwgcHVibGljIEF1dGhlbnRpY2F0aW9uQ2xpZW50IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Q2xpZW50PiBjcmVhdGUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb3JlTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUNsaWVudChjaGFsbGVuZ2UpKTsKLSAgICB9Ci0KLSAgICB1c2luZyBSZWZD
b3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50Pjo6cmVmOwot
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VD
bGllbnQ+OjpkZXJlZjsKLQotcHJpdmF0ZToKLSAgICBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUNsaWVudChOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2Up
Ci0gICAgICAgIDogbV9jaGFsbGVuZ2UoY2hhbGxlbmdlKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fY2hhbGxlbmdlKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVmQXV0aGVudGljYXRp
b25DbGllbnQoKSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmQXV0
aGVudGljYXRpb25DbGllbnQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KLQotICAgIHZpcnR1YWwg
dm9pZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBj
b25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgW1tt
X2NoYWxsZW5nZSBzZW5kZXJdIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlhbC5uc0NyZWRlbnRpYWwo
KSBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAgfQot
Ci0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVu
dGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIGNh
bmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5n
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAg
IGlmIChbW21fY2hhbGxlbmdlIHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihw
ZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KV0pCi0gICAg
ICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gcGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvckF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKFtbbV9jaGFsbGVuZ2Ug
c2VuZGVyXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJlamVjdFByb3RlY3Rpb25TcGFj
ZUFuZENvbnRpbnVlV2l0aENoYWxsZW5nZTopXSkKLSAgICAgICAgICAgIFtbbV9jaGFsbGVuZ2Ug
c2VuZGVyXSByZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6bV9j
aGFsbGVuZ2UuZ2V0KCldOwotICAgIH0KLQotICAgIFJldGFpblB0cjxOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlPiBtX2NoYWxsZW5nZTsKLX07Ci0jZW5kaWYKLQogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5l
UmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkKQEAgLTE3ODgs
MTMgKzE3MzIsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNo
b3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0UgogCiBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogbnNDaGFsbGVuZ2Up
CiB7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBSZWZQdHI8V2ViQ29yZU5TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VDbGllbnQ+IGNsaWVudCA9IFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQ2xpZW50OjpjcmVhdGUobnNDaGFsbGVuZ2UpOwotICAgIFJldGFpblB0cjxDRlVS
TEF1dGhDaGFsbGVuZ2VSZWY+IGNmQ2hhbGxlbmdlID0gYWRvcHRDRihbbnNDaGFsbGVuZ2UgX2Ny
ZWF0ZUNGQXV0aENoYWxsZW5nZV0pOwotICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxs
ZW5nZShjZkNoYWxsZW5nZS5nZXQoKSwgY2xpZW50LmdldCgpKTsKLSNlbHNlCiAgICAgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlKG5zQ2hhbGxlbmdlKTsKLSNlbmRpZgogCiAgICAg
cmV0dXJuIHBsYXllcigpLT5zaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNoYWxsZW5nZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCmluZGV4IDRlMzAzNjZkNGViN2Zh
YjE4OGRlNGNhZTkwZjlkNTUxMWY5MDZkYWIuLjA5ZDU5YzcxMjgwODMxZDVlNzQ1NTgwMjVkNzQ0
ZGEzODMyNTA5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJD
b3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCkBAIC01MSwxMyArNTEsNiBAQCBXRUJDT1JF
X0VYUE9SVCB2b2lkICgqd2tDRlVSTFJlcXVlc3RBbGxvd0FsbFBvc3RDYWNoaW5nKShDRlVSTFJl
cXVlc3RSZWYpOwogV0VCQ09SRV9FWFBPUlQgQ0ZBcnJheVJlZiAoKndrQ29weU5TVVJMUmVzcG9u
c2VDZXJ0aWZpY2F0ZUNoYWluKShOU1VSTFJlc3BvbnNlKik7CiBXRUJDT1JFX0VYUE9SVCBDRlN0
cmluZ0VuY29kaW5nICgqd2tHZXRXZWJEZWZhdWx0Q0ZTdHJpbmdFbmNvZGluZykodm9pZCk7CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotV0VCQ09SRV9FWFBPUlQgQ0ZIVFRQQ29va2llU3RvcmFnZVJl
ZiAoKndrR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKSgpOwotV0VCQ09SRV9FWFBPUlQgV0tD
RlVSTENyZWRlbnRpYWxSZWYgKCp3a0NvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3Jh
Z2UpKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSk7Ci1XRUJDT1JFX0VY
UE9SVCB2b2lkICgqd2tTZXRDRlVSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYpKENGTXV0YWJs
ZVVSTFJlcXVlc3RSZWYsIGJvb2wpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0UmVxdWVz
dFN0b3JhZ2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBDRk11dGFibGVVUkxSZXF1
ZXN0UmVmKTsKLSNlbmRpZgotCiBXRUJDT1JFX0VYUE9SVCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
ICgqd2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24pKENGU3RyaW5nUmVmKTsKIFdFQkNPUkVf
RVhQT1JUIE5TVVJMUmVxdWVzdCogKCp3a0NvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKShD
RlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBOU1VSTFJlcXVlc3QqKTsKIFdFQkNPUkVfRVhQT1JUIENG
SFRUUENvb2tpZVN0b3JhZ2VSZWYgKCp3a0NvcHlIVFRQQ29va2llU3RvcmFnZSkoQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
d2FrL1dlYkNvcmVUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2Vi
Q29yZVRocmVhZC5oCmluZGV4IGVmYjhkN2E0ODYwZDAwM2ZmM2Q3YTBlM2ExYWFkMzcyMmQ3ZmM4
ZWYuLjYzNzdiOGU1ZGRmZThkOThlMWJkMGViMTIzNzMxNTE3OTRiZDQwYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5oCkBAIC04MSw3ICs4
MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBXZWJUaHJlYWRTaG91bGRZaWVsZCh2b2lkKSB7IHJl
dHVybiB3ZWJUaHJlYWRTaG91bGRZaWVsZDsgfQogc3RhdGljIGlubGluZSB2b2lkIFdlYlRocmVh
ZFNldFNob3VsZFlpZWxkKCkgeyB3ZWJUaHJlYWRTaG91bGRZaWVsZCA9IHRydWU7IH0KIAogV0VC
Q09SRV9FWFBPUlQgQ0ZSdW5Mb29wUmVmIFdlYlRocmVhZFJ1bkxvb3Aodm9pZCk7Ci1OU1J1bkxv
b3AqIFdlYlRocmVhZE5TUnVuTG9vcCh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIE5TUnVuTG9vcCog
V2ViVGhyZWFkTlNSdW5Mb29wKHZvaWQpOwogV2ViVGhyZWFkQ29udGV4dCAqV2ViVGhyZWFkQ3Vy
cmVudENvbnRleHQodm9pZCk7CiBib29sIFdlYlRocmVhZENvbnRleHRJc0N1cnJlbnQodm9pZCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZS5oCmluZGV4IDYwYjQ4OTA1NzNhZDZhODVkM2IwYTM3M2NjOGNhMjVmZjM5ZjAyMTEu
LmI2NTY2MTMwN2QwNjJiZDBhOTdjZDE3ZDFkYmE4YTEyZjdkZGU4NTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaApAQCAt
MjU2LDEyICsyNTYsNiBAQCBleHRlcm4gQ0ZIVFRQTWVzc2FnZVJlZiAoKndrR2V0Q0ZVUkxSZXNw
b25zZUhUVFBSZXNwb25zZSkoQ0ZVUkxSZXNwb25zZVJlZik7CiBleHRlcm4gQ0ZTdHJpbmdSZWYg
KCp3a0NvcHlDRlVSTFJlc3BvbnNlU3VnZ2VzdGVkRmlsZW5hbWUpKENGVVJMUmVzcG9uc2VSZWYp
OwogZXh0ZXJuIHZvaWQgKCp3a1NldENGVVJMUmVzcG9uc2VNSU1FVHlwZSkoQ0ZVUkxSZXNwb25z
ZVJlZiwgQ0ZTdHJpbmdSZWYgbWltZVR5cGUpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLWV4dGVy
biBDRkhUVFBDb29raWVTdG9yYWdlUmVmICgqd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2Up
KCk7Ci1leHRlcm4gV0tDRlVSTENyZWRlbnRpYWxSZWYgKCp3a0NvcHlDcmVkZW50aWFsRnJvbUNG
UGVyc2lzdGVudFN0b3JhZ2UpKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFj
ZSk7Ci1leHRlcm4gdm9pZCAoKndrU2V0Q0ZVUkxSZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZmKShD
Rk11dGFibGVVUkxSZXF1ZXN0UmVmLCBib29sKTsKLWV4dGVybiB2b2lkICgqd2tTZXRSZXF1ZXN0
U3RvcmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIENGTXV0YWJsZVVSTFJlcXVl
c3RSZWYpOwotI2VuZGlmCiAjaWYgIVBMQVRGT1JNKElPUykKIGV4dGVybiB2b2lkICgqd2tTZXRN
ZXRhZGF0YVVSTCkoTlNTdHJpbmcgKnVybFN0cmluZywgTlNTdHJpbmcgKnJlZmVycmVyLCBOU1N0
cmluZyAqcGF0aCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggMTg4ZjQxMjgxMjNhOTYwOGFkYmZm
Y2NiZjY5YjhkYWYzMDAxY2JjNy4uMDMzOTBjZTY5YzViZmNlZjNhYjUxZTZhMTk2Mzc0NTA2ZWJh
ZWEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UubW0KQEAgLTg4LDEzICs4OCw2IEBAIHZvaWQgKCp3a1NldENPTk5FQ1RQ
cm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENG
TnVtCiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJl
YWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CiBDRkhU
VFBNZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJl
ZiwgQ0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJS
ZWYgcHJveHlQb3J0KTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi1DRkhUVFBDb29raWVTdG9yYWdl
UmVmICgqd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UpKCk7Ci1XS0NGVVJMQ3JlZGVudGlh
bFJlZiAoKndrQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFnZSkoQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlKTsKLXZvaWQgKCp3a1NldENGVVJMUmVxdWVz
dFNob3VsZENvbnRlbnRTbmlmZikoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiwgYm9vbCk7Ci12b2lk
ICgqd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIENG
TXV0YWJsZVVSTFJlcXVlc3RSZWYpOwotI2VuZGlmCi0KIHZvaWQqIHdrR2V0SHlwaGVuYXRpb25M
b2NhdGlvbkJlZm9yZUluZGV4OwogCiBib29sICgqd2tFeGVjdXRhYmxlV2FzTGlua2VkT25PckJl
Zm9yZVNub3dMZW9wYXJkKSh2b2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3BwCmluZGV4IDkzYzRkZGJhNDhmOWZk
YjM3MWI5NWNjMjk3MGRhYzhjZTg1OWJjMzguLjAxMjZkYzc5NDgzMWY0YWZmNmNhYzEyOWMwMmU5
OGNlZWVjOWQyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UHJvdGVjdGlvblNwYWNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVk
ZSAiUHJvdGVjdGlvblNwYWNlLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKSAmJiAhUExBVEZPUk0o
Q09DT0EpCisjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNGLmgi
CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUHJvdGVjdGlvblNwYWNlUHJpdi5oPgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCA1MmRkNDZhOWE1NGZjNzRmNzc2Y2M3YTQxZjlmNmQ5
ZDkwYmQ2Njc0Li45YzQ1NzA0OGE4ZTk0MDU4ODYzMDJhZDMyMTM0Y2ZjMjUyMTA1MzFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBA
IC0xMjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHZvaWQgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTENvbm5lY3Rpb24gKmNv
bm5lY3Rpb24oKSBjb25zdDsKICAgICBpZCBtYWtlRGVsZWdhdGUoYm9vbCk7CkBAIC0yMTcsNyAr
MjE3LDcgQEAgcHVibGljOgogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwog
I2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udGludWVXaWxsQ2FjaGVSZXNw
b25zZShOU0NhY2hlZFVSTFJlc3BvbnNlICopOwogI2VuZGlmCiAKQEAgLTIzNywxMCArMjM3LDYg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDRlN0cmluZ1JlZiBzeW5jaHJv
bm91c0xvYWRSdW5Mb29wTW9kZSgpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpICYmIFVT
RShDRk5FVFdPUkspCi0gICAgc3RhdGljIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY3JlYXRlU1NM
UHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0jZW5k
aWYKLQogICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gKCpCdWlsdGluQ29u
c3RydWN0b3IpKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVD
bGllbnQqIGNsaWVudCk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCdWlsdGluQ29uc3RydWN0
b3IoY29uc3QgQXRvbWljU3RyaW5nJiBwcm90b2NvbCwgQnVpbHRpbkNvbnN0cnVjdG9yKTsKIApA
QCAtMjc3LDExICsyNzMsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUNGVVJMQ29ubmVj
dGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRT
bmlmZiwgU2NoZWR1bGluZ0JlaGF2aW9yLCBDRkRpY3Rpb25hcnlSZWYgY2xpZW50UHJvcGVydGll
cyk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShDRk5FVFdPUkspCisjaWYg
UExBVEZPUk0oTUFDKQogICAgIHZvaWQgY3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRl
LCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlm
ZiwgU2NoZWR1bGluZ0JlaGF2aW9yKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiAh
VVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShJT1MpCiAgICAgdm9pZCBjcmVhdGVOU1VSTENv
bm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJv
b2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IsIE5TRGljdGlvbmFyeSAq
Y29ubmVjdGlvblByb3BlcnRpZXMpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKaW5kZXggNjEy
M2YxNGFjYTI0ODRiZTQyYTZkZjEwMGFmM2FhYzMxOWJkMmQ5Zi4uN2FlNzNjZjcxZGMxMTVmNDAx
ZjIwMGIzYzQ4MWY4ODQ5NzljNzM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKQEAgLTEzNiwxMSArMTM2
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgbV9jdXJy
ZW50UmVxdWVzdDsKICAgICAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGU+IG1fY29ubmVjdGlvbkRlbGVnYXRlOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09D
T0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBSZXRh
aW5QdHI8TlNVUkxDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgICAgIFJldGFpblB0cjxp
ZD4gbV9kZWxlZ2F0ZTsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBib29s
IG1fc3RhcnRXaGVuU2NoZWR1bGVkOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVT
RShDRk5FVFdPUkspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAppbmRleCA3ODgzZTQ2OTExNWRlMzI3OTRjMWIyYTQ3
ZGJiNTAzMDhlMTA4ZWM5Li5mODc0NWQ1NDNhOTA4YzgzMzJjYThhZjJmOWEyMTZlOTk2OWVkYmYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRp
Y2F0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0
aGVudGljYXRpb25DRi5jcHAKQEAgLTUzLDEzICs1Myw4IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3Rl
Y3RpCiAKIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShD
RlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2ZDaGFsbGVuZ2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhlbnRp
Y2F0aW9uQ2xpZW50KQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIDogQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VCYXNlKFByb3RlY3Rpb25TcGFjZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0
aW9uU3BhY2UoY2ZDaGFsbGVuZ2UpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDcmVkZW50aWFsKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbChjZkNo
YWxsZW5nZSkpLAotI2Vsc2UKICAgICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShjb3Jl
KENGVVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjZkNoYWxsZW5nZSkpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0
UHJvcG9zZWRDcmVkZW50aWFsKGNmQ2hhbGxlbmdlKSksCi0jZW5kaWYKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcmV2aW91c0ZhaWx1cmVD
b3VudChjZkNoYWxsZW5nZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENG
VVJMUmVzcG9uc2VSZWYpQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0RmFpbHVyZVJlc3BvbnNlKGNmQ2hh
bGxlbmdlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlVSTEF1dGhDaGFs
bGVuZ2VHZXRFcnJvcihjZkNoYWxsZW5nZSkpCkBAIC05MywxNCArODgsMTAgQEAgQ0ZVUkxBdXRo
Q2hhbGxlbmdlUmVmIGNyZWF0ZUNGKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3Jl
Q2hhbGxlbmdlKQogewogICAgIC8vIEZJWE1FOiBXaHkgbm90IGNhY2hlIENGVVJMQXV0aENoYWxs
ZW5nZVJlZiBpbiBtX2NmQ2hhbGxlbmdlPyBGb3VuZGF0aW9uIGNvdW50ZXJwYXJ0IGRvZXMgdGhh
dC4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiByZXN1
bHQgPSBDRlVSTEF1dGhDaGFsbGVuZ2VDcmVhdGUoMCwgY29yZUNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2UoKS5jZlNwYWNlKCksIGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkuY2ZD
cmVkZW50aWFsKCksCi0jZWxzZQogICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNy
ZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50
aWFsKCkpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY+IHByb3RlY3Rp
b25TcGFjZSA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uo
KSkpOwogCiAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9IENGVVJMQXV0aENoYWxs
ZW5nZUNyZWF0ZSgwLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCksCi0j
ZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlQ2hhbGxl
bmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29yZUNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5jZlVSTFJlc3BvbnNl
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUNoYWxsZW5n
ZS5lcnJvcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQ29va2llSmFyQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Db29raWVKYXJDRk5ldC5jcHAKaW5kZXggOTQ3ZmIzYmY5YmUyNmZiMjdkYjY5MDRmMGNlZGQz
ZTllODczZDQxOC4uZGE0YTA2NGY3NWEwNzc2ZWNkMzVmZDY2ZWY4YjgwNjUxYTUwNTA1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5l
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJD
Rk5ldC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKFdJTikgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA8PSAxMDkwKQorI2lmIFBMQVRGT1JNKFdJTikKIGVudW0gewogICAg
IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1l
bnREb21haW4gPSAzCiB9OwpAQCAtMTA1LDEzICsxMDUsOSBAQCBzdGF0aWMgUmV0YWluUHRyPENG
QXJyYXlSZWY+IGNvcHlDb29raWVzRm9yVVJMV2l0aEZpcnN0UGFydHlVUkwoY29uc3QgTmV0d29y
a1N0bwogewogICAgIGJvb2wgc2VjdXJlID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7CiAKLSNp
ZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMDAwKQotICAgIHJldHVybiBhZG9wdENGKF9DRkhUVFBDb29raWVT
dG9yYWdlQ29weUNvb2tpZXNGb3JVUkxXaXRoTWFpbkRvY3VtZW50VVJMKHNlc3Npb24uY29va2ll
U3RvcmFnZSgpLmdldCgpLCB1cmwuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgZmlyc3RQYXJ0eS5jcmVh
dGVDRlVSTCgpLmdldCgpLCBzZWN1cmUpKTsKLSNlbHNlCiAgICAgLy8gX0NGSFRUUENvb2tpZVN0
b3JhZ2VDb3B5Q29va2llc0ZvclVSTFdpdGhNYWluRG9jdW1lbnRVUkwgaXMgbm90IGF2YWlsYWJs
ZSBvbiBvdGhlciBwbGF0Zm9ybXMuCiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHkpOwogICAg
IHJldHVybiBhZG9wdENGKENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTChzZXNz
aW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsLmNyZWF0ZUNGVVJMKCkuZ2V0KCksIHNlY3Vy
ZSkpOwotI2VuZGlmCiB9CiAKIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNvb2tpZXMoQ0ZEaWN0
aW9uYXJ5UmVmIGhlYWRlckZpZWxkcywgQ0ZVUkxSZWYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5l
dC5jcHAKaW5kZXggNTYwOTI1OTdhYWNjZDI3NzNmNjk4YjM1YmQ0ZmM3MTU4NzJjNDBlNC4uNjll
MzMyYzEzYjE3MGJiYjI5OTNlYTRjMWQ1NzU4ODdiZTZlZjU1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdl
Q0ZOZXQuY3BwCkBAIC0zMyw0MiArMzMsMTggQEAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2Uu
aCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNp
bmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jZWxpZiBQTEFURk9STShXSU4pCisj
aWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRT
eXN0ZW1JbnRlcmZhY2UuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUg
PENGTmV0d29yay9DRlVSTENyZWRlbnRpYWxTdG9yYWdlLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBDcmVkZW50aWFsIENyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lz
dGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0j
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3Jl
ZGVudGlhbENGID0gYWRvcHRDRih3a0NvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3Jh
Z2UocHJvdGVjdGlvblNwYWNlLmNmU3BhY2UoKSkpOwotICAgIHJldHVybiBDcmVkZW50aWFsKGNy
ZWRlbnRpYWxDRi5nZXQoKSk7Ci0jZWxzZQogICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25T
cGFjZVJlZj4gcHJvdGVjdGlvblNwYWNlQ0YgPSBhZG9wdENGKGNyZWF0ZUNGKHByb3RlY3Rpb25T
cGFjZSkpOwogICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWxDRiA9
IGFkb3B0Q0Yod2tDb3B5Q3JlZGVudGlhbEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKHByb3RlY3Rp
b25TcGFjZUNGLmdldCgpKSk7CiAgICAgcmV0dXJuIGNvcmUoY3JlZGVudGlhbENGLmdldCgpKTsK
LSNlbmRpZgotfQotCi0jaWYgUExBVEZPUk0oSU9TKQotdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6
c2F2ZVRvUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9u
U3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCi17Ci0gICAgUmV0YWluUHRyPENG
VVJMQ3JlZGVudGlhbFN0b3JhZ2VSZWY+IHN0b3JhZ2VDRiA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50
aWFsU3RvcmFnZUNyZWF0ZSgwKSk7Ci0KLSAgICBpZiAoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgp
ID09IENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpIHsKLSAgICAgICAgQ3JlZGVudGlhbCBzZXNz
aW9uQ3JlZGVudGlhbChjcmVkZW50aWFsLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9u
KTsKLSAgICAgICAgQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9y
UHJvdGVjdGlvblNwYWNlKHN0b3JhZ2VDRi5nZXQoKSwgc2Vzc2lvbkNyZWRlbnRpYWwuY2ZDcmVk
ZW50aWFsKCksIHByb3RlY3Rpb25TcGFjZS5jZlNwYWNlKCkpOwotICAgIH0gZWxzZQotICAgICAg
ICBDRlVSTENyZWRlbnRpYWxTdG9yYWdlU2V0RGVmYXVsdENyZWRlbnRpYWxGb3JQcm90ZWN0aW9u
U3BhY2Uoc3RvcmFnZUNGLmdldCgpLCBjcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBwcm90ZWN0
aW9uU3BhY2UuY2ZTcGFjZSgpKTsKIH0KLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVy
cm9yLmgKaW5kZXggMTcwM2NjOTFmNjhiMmE1ZTY0Zjg3OTIzY2U2ZmJhMWQyN2RkMjQxZC4uMWI0
YWQ3MzA2NmM3NzE4YTBjYTUxNDUwMGVlZDRmN2M0ZDkxNDQ4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKQEAgLTYxLDE2ICs2
MSwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgQ0ZFcnJvclJlZiBjZkVycm9yKCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgQ0ZFcnJvclJlZigpIGNvbnN0Owog
Ci0jaWYgVVNFKENGTkVUV09SSykKLSNpZiBQTEFURk9STShXSU4pCisjaWYgVVNFKENGTkVUV09S
SykgJiYgUExBVEZPUk0oV0lOKQogICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21h
aW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5n
JiBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgQ0ZEYXRhUmVmIGNlcnRpZmljYXRlKTsKICAgICBQQ0NF
UlRfQ09OVEVYVCBjZXJ0aWZpY2F0ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2VydGlmaWNhdGUo
Q0ZEYXRhUmVmKTsKICNlbmRpZgotICAgIFJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJv
cik7Ci0gICAgQ0ZTdHJlYW1FcnJvciBjZlN0cmVhbUVycm9yKCkgY29uc3Q7Ci0gICAgb3BlcmF0
b3IgQ0ZTdHJlYW1FcnJvcigpIGNvbnN0OwotI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yKE5TRXJyb3IgKik7CkBAIC04OCw5ICs4
Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RhdGFJc1VwVG9EYXRlOwogI2lmIFVTRShDRk5F
VFdPUkspCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0ZFcnJvclJlZj4gbV9wbGF0Zm9ybUVycm9y
OwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG11dGFibGUgUmV0YWluUHRyPE5TRXJyb3I+IG1f
cGxhdGZvcm1OU0Vycm9yOwotI2VuZGlmCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IG1fY2VydGlmaWNhdGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmlu
ZGV4IDNlNjFjZDQwYTgxOTMxYWE3MjZiMjNkMGE2Mzg0YzBlYzgxYjY5MmEuLjgxOWRhNjUwMzcy
NTVmNjJjZWRlNGZiZTQxYjI0NmJlZDMxMTEwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAt
NTIsMTYgKzUyLDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgiCi0j
aW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2lmIFVTRShDRk5FVFdPUkspCi0j
aW5jbHVkZSAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJM
Q29ubmVjdGlvblByaXYuaD4KLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0UHJpdi5o
PgotI2VuZGlmCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8cHJvY2Vz
cy5oPgpAQCAtMjE4LDE0ICsyMDgsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVS
TENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbAogICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ0ZVUkxDb25u
ZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcywgc3RyZWFtUHJvcGVydGllcyk7CiAgICAgQ0ZS
ZWxlYXNlKHN0cmVhbVByb3BlcnRpZXMpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYg
KGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKQotICAgICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0
ZSA9IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlKHRoaXMpKTsKLSAgICBlbHNlCi0gICAgICAgIGQtPm1fY29ubmVjdGlv
bkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7Ci0jZWxzZQogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVn
YXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZSh0aGlzKSk7Ci0jZW5kaWYKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+
c2V0dXBSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50
X1Y2IGNsaWVudCA9IGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlLT5tYWtlQ29ubmVjdGlvbkNsaWVu
dCgpOwpAQCAtMzY3LDEyICszNTAsOSBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQ
YXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaAogCiAgICAg
aWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFzcy5pc051bGwoKSkgewogICAgICAg
ICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKENG
VVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5tX3VzZXIuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGtD
RlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gQ3JlZGVudGlhbChjZkNyZWRlbnRpYWwuZ2V0
KCkpOwotI2Vsc2UKKwogICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBjb3JlKGNmQ3Jl
ZGVudGlhbC5nZXQoKSk7Ci0jZW5kaWYKLSAgICAgICAgCisKICAgICAgICAgVVJMIHVybFRvU3Rv
cmU7CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0Nv
ZGUoKSA9PSA0MDEpCiAgICAgICAgICAgICB1cmxUb1N0b3JlID0gY2hhbGxlbmdlLmZhaWx1cmVS
ZXNwb25zZSgpLnVybCgpOwpAQCAtNDAxLDEyICszODEsOCBAQCBib29sIFJlc291cmNlSGFuZGxl
Ojp0cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgQXV0aGVudGljYXRp
b25DaAogICAgICAgICAgICAgICAgICAgICAvLyBTdG9yZSB0aGUgY3JlZGVudGlhbCBiYWNrLCBw
b3NzaWJseSBhZGRpbmcgaXQgYXMgYSBkZWZhdWx0IGZvciB0aGlzIGRpcmVjdG9yeS4KICAgICAg
ICAgICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxT
dG9yYWdlKCkuc2V0KGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgY2hh
bGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpKTsKICAgICAgICAgICAgICAgICB9Ci0jaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVu
dGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIGNo
YWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZWxzZQogICAgICAgICAgICAgICAg
IFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3Jl
YXRlQ0YoY3JlZGVudGlhbCkpOwogICAgICAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNy
ZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxs
ZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZW5kaWYKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDU2LDIwICs0MzIsMTIg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UKICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdl
U2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KHdlYkNyZWRlbnRpYWwsIGNoYWxsZW5n
ZS5wcm90ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CiAKICAgICAgICAgaWYgKGQtPm1fY29u
bmVjdGlvbikgewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICAgICAgQ0ZVUkxDb25uZWN0
aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIHdlYkNyZWRlbnRpYWwuY2ZD
cmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZWxzZQog
ICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0g
YWRvcHRDRihjcmVhdGVDRih3ZWJDcmVkZW50aWFsKSk7CiAgICAgICAgICAgICBDRlVSTENvbm5l
Y3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdl
dCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2VuZGlmCiAgICAgICAg
IH0KICAgICB9IGVsc2UgaWYgKGQtPm1fY29ubmVjdGlvbikgewotI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5n
ZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxs
ZW5nZVJlZigpKTsKLSNlbHNlCiAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+
IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOwogICAgICAgICBD
RlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVk
ZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2VuZGlm
CiAgICAgfQogCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwpAQCAtNjEwLDMwICs1NzgsNiBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZl
cnMpCiAgICAgICAgIENGVVJMQ29ubmVjdGlvblJlc3VtZShkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkp
OwogfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIFJlc291cmNlSGFuZGxlOjpzY2hlZHVs
ZShTY2hlZHVsZVBhaXImIHBhaXIpCi17Ci0gICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBwYWly
LnJ1bkxvb3AoKTsKLSAgICBpZiAoIXJ1bkxvb3ApCi0gICAgICAgIHJldHVybjsKLQotICAgIENG
VVJMQ29ubmVjdGlvblNjaGVkdWxlV2l0aFJ1bkxvb3AoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBy
dW5Mb29wLCBwYWlyLm1vZGUoKSk7Ci0gICAgaWYgKGQtPm1fc3RhcnRXaGVuU2NoZWR1bGVkKSB7
Ci0gICAgICAgIENGVVJMQ29ubmVjdGlvblN0YXJ0KGQtPm1fY29ubmVjdGlvbi5nZXQoKSk7Ci0g
ICAgICAgIGQtPm1fc3RhcnRXaGVuU2NoZWR1bGVkID0gZmFsc2U7Ci0gICAgfQotfQotCi12b2lk
IFJlc291cmNlSGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKLXsKLSAgICBD
RlJ1bkxvb3BSZWYgcnVuTG9vcCA9IHBhaXIucnVuTG9vcCgpOwotICAgIGlmICghcnVuTG9vcCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0ZVUkxDb25uZWN0aW9uVW5zY2hlZHVsZUZyb21SdW5M
b29wKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgcnVuTG9vcCwgcGFpci5tb2RlKCkpOwotfQotI2Vu
ZGlmCi0KIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgUmVzb3VyY2VIYW5kbGU6OmN1cnJlbnRSZXF1
ZXN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gZC0+bV9jdXJyZW50UmVxdWVzdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCmluZGV4IDRmN2E3
OTI5ZjFiMTFkODg0ZDhkMDQ3NjgyMTEyYWRiNjZlOWJiZDUuLmExZTEzODA5ZTQ3OGJlZjRmZWFl
NzM4MGQyYWNkY2VhNGRhMTEyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmNwcApAQCAtMzIsMTAgKzMyLDYgQEAKICNpbmNsdWRlICJOZXR3
b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jZW5kaWYK
LQogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2Vi
S2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDhhNWVmMDkwNGQzYTYy
NWQzNTYwN2M2YTY3N2VkNmVlZmQ5YTZjNzkuLjFkMGQ3ZDAyNTIwMzM3Y2QyNzBlZGJkZjQxNzgy
NmI1MThmNjg4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlcXVlc3QuaApAQCAtNjMsMTIgKzYzLDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB9CiAgICAgICAgIAogI2lmIFVTRShDRk5FVFdPUkspCi0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlUmVxdWVzdChOU1VSTFJl
cXVlc3QgKik7Ci0gICAgICAgIHZvaWQgdXBkYXRlTlNVUkxSZXF1ZXN0KCk7Ci0gICAgICAgIHZv
aWQgY2xlYXJPclVwZGF0ZU5TVVJMUmVxdWVzdCgpOwotI2VuZGlmCi0KICAgICAgICAgUmVzb3Vy
Y2VSZXF1ZXN0KENGVVJMUmVxdWVzdFJlZiBjZlJlcXVlc3QpCiAgICAgICAgICAgICA6IFJlc291
cmNlUmVxdWVzdEJhc2UoKQogICAgICAgICAgICAgLCBtX2NmUmVxdWVzdChjZlJlcXVlc3QpCkBA
IC04OCwxMSArODIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYXBwbHlX
ZWJBcmNoaXZlSGFja0Zvck1haWwoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotI2lm
IFVTRShDRk5FVFdPUkspCi0gICAgICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1faHR0cEJvZHkgfHwgbV9jZlJlcXVlc3Q7IH0KLSNlbHNlCiAg
ICAgICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1faHR0cEJvZHkgfHwgbV9uc1JlcXVlc3Q7IH0KLSNlbmRpZgogICAgICAgICBXRUJDT1JFX0VY
UE9SVCBOU1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSkgY29u
c3Q7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENGU3RyaW5nUmVmIGlzVXNlcklu
aXRpYXRlZEtleSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCBhY2MxZDQ1Njk3NWNjMTJmMzlhMzM4ZGJiMjQz
OTQxZTU3YzI2ZDFhLi5iNzlmN2M0MGVkMGM5NGQxY2JlYzllNTY4NjNhYzllNTY0MWI5ODhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVz
cG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVzcG9uc2UuaApAQCAtNTMsOSArNTMsNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2lz
TnVsbCA9ICFjZlJlc3BvbnNlOwogICAgIH0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBXRUJD
T1JFX0VYUE9SVCBSZXNvdXJjZVJlc3BvbnNlKE5TVVJMUmVzcG9uc2UgKik7Ci0jZW5kaWYKICNl
bHNlCiAgICAgUmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNlKQogICAg
ICAgICA6IG1faW5pdExldmVsKFVuaW5pdGlhbGl6ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAK
aW5kZXggNGJhZTc0ZTgzODE2YzE5NGVkYzE1NGQ4NGMyZGU4ZjZkZDE2ZmM5NS4uMWFhODM3ZmM3
MmI3ODIzZWE3YmRlOGNiOTA2Mzk4ZmVhNzVkNWFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNw
cApAQCAtMzMsMTAgKzMzLDYgQEAKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXNwb25zZVBy
aXYuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkK
LSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgQ0ZTdHJpbmdSZWYgY29uc3QgY29tbW9uSGVhZGVyRmllbGRz
W10gPSB7CkBAIC00NiwxMyArNDIsOSBAQCBzdGF0aWMgQ0ZTdHJpbmdSZWYgY29uc3QgY29tbW9u
SGVhZGVyRmllbGRzW10gPSB7CiBDRlVSTFJlc3BvbnNlUmVmIFJlc291cmNlUmVzcG9uc2U6OmNm
VVJMUmVzcG9uc2UoKSBjb25zdAogewogICAgIGlmICghbV9jZlJlc3BvbnNlICYmICFtX2lzTnVs
bCkgewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBuc1VSTFJlc3BvbnNlKCk7Ci0jZWxz
ZQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IG1fdXJsLmNyZWF0ZUNGVVJMKCk7
CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNyZWF0ZXMgYSB2ZXJ5IGluY29tcGxldGUgQ0ZVUkxS
ZXNwb25zZSwgd2hpY2ggZG9lcyBub3QgZXZlbiBoYXZlIGEgc3RhdHVzIGNvZGUuCiAgICAgICAg
IG1fY2ZSZXNwb25zZSA9IGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNyZWF0ZSgwLCB1cmwuZ2V0KCks
IG1fbWltZVR5cGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgbV9leHBlY3RlZENv
bnRlbnRMZW5ndGgsIG1fdGV4dEVuY29kaW5nTmFtZS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7Ci0jZW5kaWYKICAgICB9CiAKICAg
ICByZXR1cm4gbV9jZlJlc3BvbnNlLmdldCgpOwpAQCAtMTE1LDkgKzEwNyw2IEBAIHZvaWQgUmVz
b3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwgaW5pdExldmVsKQogCiBD
ZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8o
KSBjb25zdAogewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHJldHVybiBDZXJ0aWZpY2F0ZUlu
Zm8oYWRvcHRDRih3a0NvcHlOU1VSTFJlc3BvbnNlQ2VydGlmaWNhdGVDaGFpbihuc1VSTFJlc3Bv
bnNlKCkpKSk7Ci0jZW5kaWYKICAgICByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlh
bENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRp
YWxDb2NvYS5oCmluZGV4IGYyY2Q5NjMyYzIwZTY1NTcwZGFjZTliOWMwOTExMDc3NmQ3NmUzMTcu
Ljk0MzRkM2E3YTFhNTBiNTVkNThkOTBjNmVkYzUyZTI3ZDYwOTU5ZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2Eu
aApAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlIDxTZWN1cml0eS9TZWNCYXNlLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgY29u
c3Qgc3RydWN0IF9DRlVSTENyZWRlbnRpYWwqIENGVVJMQ3JlZGVudGlhbFJlZjsKLSNlbmRpZgot
CiBPQkpDX0NMQVNTIE5TVVJMQ3JlZGVudGlhbDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NTIsMTggKzQ4LDEyIEBAIHB1YmxpYzoKIAogICAgIENyZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlh
bCYsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGV4
cGxpY2l0IENyZWRlbnRpYWwoQ0ZVUkxDcmVkZW50aWFsUmVmKTsKLSNlbmRpZgogICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IENyZWRlbnRpYWwoTlNVUkxDcmVkZW50aWFsICopOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKICAgICBib29sIGVuY29kaW5n
UmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX25zQ3JlZGVudGlhbCAmJiBl
bmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKG1fbnNDcmVkZW50aWFsLmdldCgpKTsgfQogCi0j
aWYgVVNFKENGTkVUV09SSykKLSAgICBDRlVSTENyZWRlbnRpYWxSZWYgY2ZDcmVkZW50aWFsKCkg
Y29uc3Q7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTENyZWRlbnRpYWwgKm5zQ3Jl
ZGVudGlhbCgpIGNvbnN0OwogCiAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0
IENyZWRlbnRpYWwmLCBjb25zdCBDcmVkZW50aWFsJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCmluZGV4IGQ2
OTYxYjY2NTJhMGZhZDJiMWQ4NmUxODg1YWY1MjUxMjg5YTIzNzEuLjdlMDVjNDYzYTU1YWUzY2Iy
ODk2NTZiYTEzMWQ5ZTIyNDBjMDA2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCkBAIC0yNiwxMyArMjYs
NiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJDcmVkZW50aWFsQ29jb2EuaCIKIAot
I2lmIFVTRShDRk5FVFdPUkspCi1AaW50ZXJmYWNlIE5TVVJMQ3JlZGVudGlhbCAoV2ViRGV0YWls
cykKLS0gKGlkKV9pbml0V2l0aENGVVJMQ3JlZGVudGlhbDooQ0ZVUkxDcmVkZW50aWFsUmVmKWNy
ZWRlbnRpYWw7Ci0tIChDRlVSTENyZWRlbnRpYWxSZWYpIF9DRlVSTENyZWRlbnRpYWw7Ci1AZW5k
Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgTlNVUkxDcmVkZW50aWFs
UGVyc2lzdGVuY2UgdG9OU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZShDcmVkZW50aWFsUGVyc2lz
dGVuY2UgcGVyc2lzdGVuY2UpCkBAIC04NCwyNiArNzcsMTIgQEAgQ3JlZGVudGlhbDo6Q3JlZGVu
dGlhbChjb25zdCBDcmVkZW50aWFsJiBvcmlnaW5hbCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBl
cnNpc3QKICAgICB9CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ3JlZGVudGlhbDo6Q3JlZGVu
dGlhbChDRlVSTENyZWRlbnRpYWxSZWYgY3JlZGVudGlhbCkKLSAgICA6IENyZWRlbnRpYWwoYWRv
cHROUyhbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10gX2luaXRXaXRoQ0ZVUkxDcmVkZW50aWFsOmNy
ZWRlbnRpYWxdKS5nZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBDcmVkZW50aWFsOjpDcmVkZW50aWFs
KE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkKICAgICA6IENyZWRlbnRpYWxCYXNlKGNyZWRl
bnRpYWwudXNlciwgY3JlZGVudGlhbC5wYXNzd29yZCwgdG9DcmVkZW50aWFsUGVyc2lzdGVuY2Uo
Y3JlZGVudGlhbC5wZXJzaXN0ZW5jZSkpCiAgICAgLCBtX25zQ3JlZGVudGlhbChjcmVkZW50aWFs
KQogewogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJMQ3JlZGVudGlhbFJlZiBDcmVkZW50
aWFsOjpjZkNyZWRlbnRpYWwoKSBjb25zdAotewotICAgIHJldHVybiBbbnNDcmVkZW50aWFsKCkg
X0NGVVJMQ3JlZGVudGlhbF07Ci19Ci0jZW5kaWYKLQogTlNVUkxDcmVkZW50aWFsICpDcmVkZW50
aWFsOjpuc0NyZWRlbnRpYWwoKSBjb25zdAogewogICAgIGlmIChtX25zQ3JlZGVudGlhbCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlv
blNwYWNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJv
dGVjdGlvblNwYWNlQ29jb2EuaAppbmRleCA3NDg4MmQ3YTg4Yjc4MzFiNDE0ZjkwZGY3MWQxNWQ4
OTI0NGUyMTUyLi5iODZhYjAzZDRmZjMyMzUzNDAzZmYwN2ZhYTgxODFlNTI5ODBmN2NlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25T
cGFjZUNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Q
cm90ZWN0aW9uU3BhY2VDb2NvYS5oCkBAIC0yOSwxMCArMjksNiBAQAogI2luY2x1ZGUgIlByb3Rl
Y3Rpb25TcGFjZUJhc2UuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQotdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUHJvdGVjdGlvblNwYWNlKiBDRlVSTFBy
b3RlY3Rpb25TcGFjZVJlZjsKLSNlbmRpZgotCiBPQkpDX0NMQVNTIE5TVVJMUHJvdGVjdGlvblNw
YWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw5ICs0Myw2IEBAIHB1YmxpYzoKIAog
ICAgIFByb3RlY3Rpb25TcGFjZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUgZGVsZXRl
ZFZhbHVlKSA6IFByb3RlY3Rpb25TcGFjZUJhc2UoZGVsZXRlZFZhbHVlKSB7IH0KIAotI2lmIFVT
RShDRk5FVFdPUkspCi0gICAgZXhwbGljaXQgUHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlv
blNwYWNlUmVmKTsKLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFByb3RlY3Rp
b25TcGFjZShOU1VSTFByb3RlY3Rpb25TcGFjZSAqKTsKIAogICAgIHN0YXRpYyBib29sIHBsYXRm
b3JtQ29tcGFyZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGEsIGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYgYik7CkBAIC01OCw5ICs1MSw2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgcmVjZWl2ZXNDcmVkZW50aWFsU2VjdXJlbHkoKSBjb25zdDsKIAotI2lmIFVTRShDRk5FVFdP
UkspCi0gICAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgY2ZTcGFjZSgpIGNvbnN0OwotI2VuZGlm
CiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxQcm90ZWN0aW9uU3BhY2UgKm5zU3BhY2UoKSBjb25z
dDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tCmluZGV4IGFmNGM0ZTA1NzY4
YzA4ZjYzYjZkYTBkYTk5OTM0Nzg1YTEzZmI4YTMuLmRiMWZiNTFiZjk5MDI3YmMyZjM1MzBhNWQ1
MThiMGZmN2I3ODYxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5tbQpAQCAtMjYsMjIgKzI2
LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUHJvdGVjdGlvblNwYWNlQ29jb2Eu
aCIKIAotI2lmIFVTRShDRk5FVFdPUkspCi1AaW50ZXJmYWNlIE5TVVJMUHJvdGVjdGlvblNwYWNl
IChXZWJEZXRhaWxzKQotLSAoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpIF9DRlVSTFByb3RlY3Rp
b25TcGFjZTsKLS0gKGlkKV9pbml0V2l0aENGVVJMUHJvdGVjdGlvblNwYWNlOihDRlVSTFByb3Rl
Y3Rpb25TcGFjZVJlZiljZlByb3RTcGFjZTsKLUBlbmQKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotUHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9u
U3BhY2UoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgc3BhY2UpCi0gICAgOiBQcm90ZWN0aW9uU3Bh
Y2UoYWRvcHROUyhbW05TVVJMUHJvdGVjdGlvblNwYWNlIGFsbG9jXSBfaW5pdFdpdGhDRlVSTFBy
b3RlY3Rpb25TcGFjZTpzcGFjZV0pLmdldCgpKQotewotfQotI2VuZGlmCi0KIHN0YXRpYyBQcm90
ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlIHR5cGUoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKnNwYWNlKQog
ewogICAgIGlmIChbc3BhY2UgaXNQcm94eV0pIHsKQEAgLTEwNSwxMyArOTEsNiBAQCBQcm90ZWN0
aW9uU3BhY2U6OlByb3RlY3Rpb25TcGFjZShOU1VSTFByb3RlY3Rpb25TcGFjZSAqc3BhY2UpCiAg
ICAgbV9uc1NwYWNlID0gc3BhY2U7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VSZWYgUHJvdGVjdGlvblNwYWNlOjpjZlNwYWNlKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gW25zU3BhY2UoKSBfQ0ZVUkxQcm90ZWN0aW9uU3BhY2VdOwotfQotI2VuZGlmCi0KIE5T
VVJMUHJvdGVjdGlvblNwYWNlICpQcm90ZWN0aW9uU3BhY2U6Om5zU3BhY2UoKSBjb25zdAogewog
ICAgIGlmIChtX25zU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRleCAzYjFiMGEy
Zjg3NDc0N2IzOGEyYzgzODBmYjY1NTk4NmJkZWI5ZWNjLi45ZjVkMDJhYjY1YmM4Y2E0MzJjODI0
Mjg0ZThiZGMwMWFiN2EzOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTUzLDE1
ICs1Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE5TVVJMUmVxdWVzdCAqUmVzb3VyY2VSZXF1
ZXN0Ojpuc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9keVBvbGljeSkgY29uc3QK
IHsKICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoYm9keVBvbGljeSk7Ci0jaWYgVVNFKENGTkVU
V09SSykKLSAgICBpZiAoIW1fbnNSZXF1ZXN0KQotICAgICAgICBjb25zdF9jYXN0PFJlc291cmNl
UmVxdWVzdCo+KHRoaXMpLT51cGRhdGVOU1VSTFJlcXVlc3QoKTsKLSNlbmRpZgogICAgIHJldHVy
biBbW21fbnNSZXF1ZXN0LmdldCgpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogfQogCi0jaWYgIVVT
RShDRk5FVFdPUkspCi0KIENGVVJMUmVxdWVzdFJlZiBSZXNvdXJjZVJlcXVlc3Q6OmNmVVJMUmVx
dWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSBib2R5UG9saWN5KSBjb25zdAogewogICAgIHJldHVy
biBbbnNVUkxSZXF1ZXN0KGJvZHlQb2xpY3kpIF9DRlVSTFJlcXVlc3RdOwpAQCAtMjIyLDggKzIx
Niw2IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKQogICAgIG1fbnNSZXF1ZXN0ID0gYWRvcHROUyh3
a0NvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKHN0b3JhZ2VTZXNzaW9uLCBtX25zUmVxdWVz
dC5nZXQoKSkpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCmluZGV4IDBkN2U4MjVlZjJiMTE4
ODZiMzhkYmIzY2I5M2UwMDBiOGJkMmVlZTUuLmQxM2ZjZmNlY2U1NjMzNTE1MDkzZDIxMDIyOTQ3
OGQyZDkzOWQ2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1F1aWNrTG9vay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9z
L1F1aWNrTG9vay5oCkBAIC00NCwxMSArNDQsNiBAQCBPQkpDX0NMQVNTIE5TVVJMUmVxdWVzdDsK
IE9CSkNfQ0xBU1MgTlNVUkxSZXNwb25zZTsKIE9CSkNfQ0xBU1MgUUxQcmV2aWV3Q29udmVydGVy
OwogCi0jaWYgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IF9DRlVSTFJlc3BvbnNlKiBD
RlVSTFJlc3BvbnNlUmVmOwotdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQ29ubmVjdGlvbiogQ0ZVUkxD
b25uZWN0aW9uUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUXVp
Y2tMb29rSGFuZGxlQ2xpZW50OwpAQCAtODIsOSArNzcsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIGJvb2wgc2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5n
Jik7CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRl
KFJlc291cmNlSGFuZGxlKiwgTlNVUkxDb25uZWN0aW9uICosIE5TVVJMUmVzcG9uc2UgKiwgaWQg
ZGVsZWdhdGUpOwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJjZUhhbmRsZSosIFN5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSosIENGVVJMUmVzcG9uc2VSZWYpOwot
I2VuZGlmCiAgICAgLy8gRklYTUU6IFVzZSBvZiBSZXNvdXJjZUxvYWRlciBoZXJlIGlzIGEgcGxh
dGZvcm0gdmlvbGF0aW9uLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7CiAKQEAgLTk2LDkgKzg4LDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGlkRmFpbCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxSZXNwb25zZSAq
bnNSZXNwb25zZSgpOwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxSZXNwb25zZVJlZiBj
ZlJlc3BvbnNlKCk7Ci0jZW5kaWYKIAogICAgIHZvaWQgc2V0Q2xpZW50KFBhc3NSZWZQdHI8UXVp
Y2tMb29rSGFuZGxlQ2xpZW50PiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCmluZGV4
IDE3ZWQ4NjQ2YTU5NDRhMGYwMWVkNTY4NzA5N2Q5N2NhYzcyMDg0ZjQuLmZkYWE2ZGM5ZTdhMTRm
OGNlNTE0ZmQxNGJmNGQwOWU4ZmE0OTgzYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KQEAgLTQ2LDE1ICs0Niw2IEBACiAjaW1wb3J0
IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFVT
RShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uLmg+Ci0KLUBp
bnRlcmZhY2UgTlNVUkxSZXNwb25zZSAoUXVpY2tMb29rRGV0YWlscykKLSsoTlNVUkxSZXNwb25z
ZSAqKV9yZXNwb25zZVdpdGhDRlVSTFJlc3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNl
OwotLShDRlVSTFJlc3BvbnNlUmVmKV9DRlVSTFJlc3BvbnNlOwotQGVuZAotI2VuZGlmCi0KIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBOU1NldCAqV2ViQ29yZTo6UUxQcmV2aWV3R2V0U3Vw
cG9ydGVkTUlNRVR5cGVzU2V0KCkKQEAgLTE5Miw4MiArMTgzLDYgQEAgY29uc3QgY2hhciogV2Vi
Q29yZTo6UUxQcmV2aWV3UHJvdG9jb2woKQogICAgIHJldHVybiBwcmV2aWV3UHJvdG9jb2wuZ2V0
KCkuZGF0YSgpOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLS8vIFRoZSB3YXkgUXVpY2tMb29r
IHdvcmtzIGlzIHdlIHBhc3MgaXQgYW4gTlNVUkxDb25uZWN0aW9uRGVsZWdhdGUgY2FsbGJhY2sg
b2JqZWN0IGF0IGNyZWF0aW9uCi0vLyB0aW1lLiBUaGVuIHdlIHBhc3MgaXQgYWxsIHRoZSBkYXRh
IGFzIHdlIHJlY2VpdmUgaXQuIE9uY2Ugd2UndmUgZG93bmxvYWRlZCB0aGUgZnVsbCBVUkwsCi0v
LyBRdWlja0xvb2sgdHVybnMgYXJvdW5kIGFuZCBzZW5kIHVzLCB0aHJvdWdoIHRoaXMgZGVsZWdh
dGUsIHRoZSBIVE1MIHZlcnNpb24gb2YgdGhlIGZpbGUgd2hpY2ggd2UKLS8vIHBhc3Mgb24gdG8g
V2ViQ29yZS4gVGhlIGZsYWcgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciBpbiBR
dWlja0xvb2tIYW5kbGUgZGVjaWRlcwotLy8gd2hldGhlciB0byBwYXNzIHRoZSBkYXRhIHRvIFF1
aWNrTG9vayBvciBXZWJDb3JlLgotLy8KLS8vIFRoaXMgd29ya3MgZmluZSB3aGVuIHVzaW5nIE5T
IEFQSXMsIGJ1dCB3aGVuIHVzaW5nIENGTmV0d29yaywgd2UgZG9uJ3QgaGF2ZSBhIE5TVVJMQ29u
bmVjdGlvbkRlbGVnYXRlLgotLy8gU28gd2UgY3JlYXRlIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVs
ZWdhdGUgYXMgYW4gaW50ZXJtZWRpYXRlIGRlbGVnYXRlIG9iamVjdCBhbmQgcGFzcyBpdCB0bwot
Ly8gUUxQcmV2aWV3Q29udmVydGVyLiBUaGUgcHJveHkgZGVsZWdhdGUgdGhlbiBmb3J3YXJkcyB0
aGUgbWVzc2FnZXMgb24gdG8gdGhlIENGTmV0d29yayBjb2RlLgotQGludGVyZmFjZSBXZWJRdWlj
a0xvb2tIYW5kbGVBc0RlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRl
PiB7Ci0gICAgUmVmUHRyPFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZT4gbV9jb25uZWN0aW9uRGVsZWdhdGU7Ci19Ci0KLS0gKGlkKWluaXRXaXRoQ29ubmVj
dGlvbkRlbGVnYXRlOihTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGUqKWNvbm5lY3Rpb25EZWxlZ2F0ZTsKLS0gKHZvaWQpY2xlYXJIYW5kbGU7Ci1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlCi0tIChpZClpbml0
V2l0aENvbm5lY3Rpb25EZWxlZ2F0ZTooU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlKiljb25uZWN0aW9uRGVsZWdhdGUKLXsKLSAgICBzZWxmID0gW3N1cGVy
IGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBtX2Nvbm5l
Y3Rpb25EZWxlZ2F0ZSA9IGNvbm5lY3Rpb25EZWxlZ2F0ZTsKLSAgICByZXR1cm4gc2VsZjsKLX0K
LQotLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJl
Y2VpdmVEYXRhQXJyYXk6KE5TQXJyYXkgKilkYXRhQXJyYXkKLXsKLSAgICBVTlVTRURfUEFSQU0o
Y29ubmVjdGlvbik7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlk
UmVjZWl2ZURhdGFBcnJheSgpIik7Ci0gICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZFJlY2Vp
dmVEYXRhQXJyYXkocmVpbnRlcnByZXRfY2FzdDxDRkFycmF5UmVmPihkYXRhQXJyYXkpKTsKLX0K
LQotLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJl
Y2VpdmVEYXRhOihOU0RhdGEgKilkYXRhIGxlbmd0aFJlY2VpdmVkOihsb25nIGxvbmcpbGVuZ3Ro
UmVjZWl2ZWQKLXsKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgaWYgKCFtX2Nv
bm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3b3JrLCAiV2Vi
UXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEoKSAtIGRhdGEgbGVuZ3Ro
ID0gJWxkIiwgKGxvbmcpW2RhdGEgbGVuZ3RoXSk7Ci0KLSAgICAvLyBRdWlja0xvb2sgY29kZSBz
ZW5kcyB1cyBhIG5pbCBkYXRhIGF0IHRpbWVzLiBUaGUgY2hlY2sgYmVsb3cgaXMgdGhlIHNhbWUg
YXMgdGhlIG9uZSBpbgotICAgIC8vIFJlc291cmNlSGFuZGxlTWFjLmNwcCBhZGRlZCBmb3IgYSBk
aWZmZXJlbnQgYnVnLgotICAgIGlmICghW2RhdGEgbGVuZ3RoXSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRSZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0
PENGRGF0YVJlZj4oZGF0YSksIHN0YXRpY19jYXN0PGludD4obGVuZ3RoUmVjZWl2ZWQpKTsKLX0K
LQotLSAodm9pZCljb25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzooTlNVUkxDb25uZWN0aW9uICop
Y29ubmVjdGlvbgotewotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBpZiAoIW1f
Y29ubmVjdGlvbkRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgTE9HKE5ldHdvcmssICJX
ZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nKCkiKTsKLSAgICBt
X2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+ZGlkRmluaXNoTG9hZGluZygpOwotfQotCi0tICh2b2lkKWNv
bm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdpdGhFcnJvcjoo
TlNFcnJvciAqKWVycm9yCi17Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIGlm
ICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBMT0coTmV0d29y
aywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6OmRpZEZhaWwoKSIpOwotICAgIG1fY29u
bmVjdGlvbkRlbGVnYXRlLT5kaWRGYWlsKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZFcnJvclJlZj4oZXJy
b3IpKTsKLX0KLQotLSAodm9pZCljbGVhckhhbmRsZQotewotICAgIG1fY29ubmVjdGlvbkRlbGVn
YXRlID0gbnVsbHB0cjsKLX0KLUBlbmQKLSNlbmRpZgotCiBAaW50ZXJmYWNlIFdlYlJlc291cmNl
TG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25uZWN0aW9uRGVsZWdh
dGU+IHsKICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IF9yZXNvdXJjZUxvYWRlcjsKICAgICBC
T09MIF9oYXNTZW50RGlkUmVjZWl2ZVJlc3BvbnNlOwpAQCAtNDE1LDI2ICszMzAsNiBAQCBzdGQ6
OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShSZXNv
dXJjZUhhbmRsZSogaGFuZGxlLAogICAgIHJldHVybiBXVEY6Om1vdmUocXVpY2tMb29rSGFuZGxl
KTsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi1zdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFu
ZGxlPiBRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBTeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqIGNvbm5lY3Rpb25E
ZWxlZ2F0ZSwgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQotewotICAgIEFTU0VSVF9BUkco
aGFuZGxlLCBoYW5kbGUpOwotICAgIGlmIChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnJlcXVlc3Rl
cigpICE9IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluIHx8ICFbUUxQcmV2aWV3R2V0
U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6KE5TU3RyaW5nICopQ0ZVUkxS
ZXNwb25zZUdldE1JTUVUeXBlKGNmUmVzcG9uc2UpXSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICBOU1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNlID0gW05TVVJMUmVzcG9uc2UgX3Jlc3Bv
bnNlV2l0aENGVVJMUmVzcG9uc2U6Y2ZSZXNwb25zZV07Ci0gICAgV2ViUXVpY2tMb29rSGFuZGxl
QXNEZWxlZ2F0ZSAqZGVsZWdhdGUgPSBbW1tXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGFs
bG9jXSBpbml0V2l0aENvbm5lY3Rpb25EZWxlZ2F0ZTpjb25uZWN0aW9uRGVsZWdhdGVdIGF1dG9y
ZWxlYXNlXTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBxdWlja0xvb2tI
YW5kbGUobmV3IFF1aWNrTG9va0hhbmRsZShbaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5uc1VSTFJl
cXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSkgVVJMXSwgbmlsLCBuc1Jlc3BvbnNlLCBkZWxlZ2F0
ZSkpOwotICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZSgqcXVp
Y2tMb29rSGFuZGxlKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKHF1aWNrTG9va0hhbmRsZSk7Ci19
Ci0KLUNGVVJMUmVzcG9uc2VSZWYgUXVpY2tMb29rSGFuZGxlOjpjZlJlc3BvbnNlKCkKLXsKLSAg
ICByZXR1cm4gW21fbnNSZXNwb25zZSBfQ0ZVUkxSZXNwb25zZV07Ci19Ci0jZW5kaWYKLQogYm9v
bCBRdWlja0xvb2tIYW5kbGU6OnNob3VsZENyZWF0ZUZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCiB7CiAgICAgcmV0dXJuIFtRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNT
ZXQoKSBjb250YWluc09iamVjdDptaW1lVHlwZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCmluZGV4IDY2N2I5
YjE4NjY3NDQwZGViZmVmZGExODA1Yjg0Y2I1NDc4NGM1NzkuLmI3MjlmMGYzNjIxOWRjNDFmM2Fk
ZWIzMTk0MjFmZjk2NTdmNDgxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCkBAIC0xLDM5ICsxIEBACi0v
LwotLy8gIFJlc291cmNlSGFuZGxlSVBob25lLm1tCi0vLyAgV2ViQ29yZQotLy8KLS8vICBDb3B5
cmlnaHQgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKLQotI2lmIFVT
RShDRk5FVFdPUkspCi0KLSNpbXBvcnQgPENGTmV0d29yay9DRlNvY2tldFN0cmVhbVByaXYuaD4K
LSNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0UHJpdmF0ZS5oPgotCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DRk11dGFibGVEaWN0aW9u
YXJ5UmVmIFJlc291cmNlSGFuZGxlOjpjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgTlNTdHJpbmcgKmhvc3Qg
PSByZXF1ZXN0LnVybCgpLmhvc3QoKTsKLSAgICBOU0FycmF5ICpjZXJ0QXJyYXkgPSBbTlNVUkxS
ZXF1ZXN0IGFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Q6aG9zdF07Ci0gICAg
Qk9PTCBhbGxvd3NBbnlDZXJ0aWZpY2F0ZSA9IFtOU1VSTFJlcXVlc3QgYWxsb3dzQW55SFRUUFND
ZXJ0aWZpY2F0ZUZvckhvc3Q6aG9zdF07Ci0gICAgaWYgKCFjZXJ0QXJyYXkgJiYgIWFsbG93c0Fu
eUNlcnRpZmljYXRlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIENGTXV0YWJsZURpY3Rpb25h
cnlSZWYgc3NsUHJvcHMgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpOwotICAgIGlmIChjZXJ0QXJyYXkpCi0gICAgICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKHNzbFByb3BzLCBfa0NGU3RyZWFtU1NMVHJ1c3RlZExlYWZDZXJ0aWZpY2F0
ZXMsIChDRlR5cGVSZWYpIGNlcnRBcnJheSk7Ci0KLSAgICBpZiAoYWxsb3dzQW55Q2VydGlmaWNh
dGUpCi0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHNzbFByb3BzLCBrQ0ZTdHJlYW1TU0xW
YWxpZGF0ZXNDZXJ0aWZpY2F0ZUNoYWluLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIHJldHVybiBz
c2xQcm9wczsKLX0KLQotfQotCi0jZW5kaWYKKy8vIFJlbW92ZSBtZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VSZXF1ZXN0SU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VSZXF1ZXN0SU9TLm1t
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjdkYzZiZTYzNDVjYzU2OTZhMWVjNmVi
ZDAwMzJmMzIzNGRmYjAwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlUmVxdWVz
dElPUy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9y
dCAiUmVzb3VyY2VSZXF1ZXN0LmgiCi0KLSNpZiBQTEFURk9STShJT1MpCi0KLUBpbnRlcmZhY2Ug
TlNVUkxSZXF1ZXN0IChXZWJOU1VSTFJlcXVlc3REZXRhaWxzKQotLSAoQ0ZVUkxSZXF1ZXN0UmVm
KV9DRlVSTFJlcXVlc3Q7Ci0tIChpZClfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6KENGVVJMUmVxdWVz
dFJlZilyZXF1ZXN0OwotQGVuZAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotCi1SZXNvdXJjZVJlcXVlc3Q6OlJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVlc3Qg
Km5zUmVxdWVzdCkKLSAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoKQotICAgICwgbV9jZlJlcXVl
c3QoW25zUmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSkKLSAgICAsIG1fbnNSZXF1ZXN0KG5zUmVxdWVz
dCkKLXsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZU5TVVJMUmVxdWVzdCgpCi17
Ci0gICAgaWYgKG1fY2ZSZXF1ZXN0KQotICAgICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMoW1tO
U011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6bV9jZlJlcXVl
c3QuZ2V0KCldKTsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmNsZWFyT3JVcGRhdGVOU1VS
TFJlcXVlc3QoKQotewotICAgIC8vIFRoZXJlIGlzIGNsaWVudCBjb2RlIHRoYXQgZXh0ZW5kcyBO
U1VSTFJlcXVlc3QgYW5kIGV4cGVjdHMgdG8gZ2V0IGJhY2ssIGluIHRoZSBkZWxlZ2F0ZQotICAg
IC8vIGNhbGxiYWNrcywgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgdGhhdCB0aGV5IHBhc3Nl
ZCBpbnRvIFdlYktpdC4gVG8ga2VlcCB0aGVuIHJ1bm5pbmcsIHdlCi0gICAgLy8gY3JlYXRlIGFu
IG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFuZCByZXR1cm4gdGhhdC4gU2VlIDxyZGFyOi8vOTg0
MzU4Mj4uCi0gICAgLy8gQWxzbywgZGV2ZWxvcGVycyByZWFsbHkgcmVhbGx5IHdhbnQgYW4gTlNN
dXRhYmxlVVJMUmVxdWVzdCBzbyB0cnkgdG8gY3JlYXRlIGFuCi0gICAgLy8gTlNNdXRhYmxlVVJM
UmVxdWVzdCBpbnN0ZWFkIG9mIE5TVVJMUmVxdWVzdC4KLSAgICBzdGF0aWMgQ2xhc3MgbnNVUkxS
ZXF1ZXN0Q2xhc3MgPSBbTlNVUkxSZXF1ZXN0IGNsYXNzXTsKLSAgICBzdGF0aWMgQ2xhc3MgbnNN
dXRhYmxlVVJMUmVxdWVzdENsYXNzID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgY2xhc3NdOwotICAg
IENsYXNzIHJlcXVlc3RDbGFzcyA9IFttX25zUmVxdWVzdC5nZXQoKSBjbGFzc107Ci0KLSAgICBp
ZiAoIW1fY2ZSZXF1ZXN0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAocmVxdWVzdENsYXNz
ICYmIHJlcXVlc3RDbGFzcyAhPSBuc1VSTFJlcXVlc3RDbGFzcyAmJiByZXF1ZXN0Q2xhc3MgIT0g
bnNNdXRhYmxlVVJMUmVxdWVzdENsYXNzKQotICAgICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMo
W1tyZXF1ZXN0Q2xhc3MgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDptX2NmUmVxdWVzdC5n
ZXQoKV0pOwotICAgIGVsc2UKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBudWxscHRyOwotfQotCi0j
ZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQppbmRleCBlMzhiMDM4N2RlMDQ2Yzdj
MDE1NzQzZDdiYjdlYTM2ZTQwOTM4MDIyLi5hODJhNTVjMzM4ODM3ZDcwZTJlMWE1YjAzMmM3MmJj
OTMzNjk4ZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9BdXRoZW50aWNhdGlvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQpAQCAtMzIsMTggKzMyLDEyIEBACiAjaW1wb3J0
IDxGb3VuZGF0aW9uL05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPEZv
dW5kYXRpb24vTlNVUkxQcm90ZWN0aW9uU3BhY2UuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0j
aW1wb3J0ICJDRk5TVVJMQ29ubmVjdGlvblNQSS5oIgotI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hh
bGxlbmdlU2VuZGVyIDogTlNPYmplY3QgPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5k
ZXI+CiB7CiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIG1fY2xpZW50OwotI2lmIFVTRShDRk5F
VFdPUkspCi0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIG1fY2ZDaGFsbGVuZ2U7Ci0jZW5kaWYK
IH0KIC0gKGlkKWluaXRXaXRoQXV0aGVudGljYXRpb25DbGllbnQ6KEF1dGhlbnRpY2F0aW9uQ2xp
ZW50KiljbGllbnQ7CiAtIChBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50OwpAQCAtODksNDcg
KzgzLDEwIEBAIC0gKHZvaWQpY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKICAgICAgICAgbV9jbGllbnQtPnJlY2Vp
dmVkQ2FuY2VsbGF0aW9uKGNvcmUoY2hhbGxlbmdlKSk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotLSAodm9pZClzZXRDRkNoYWxsZW5nZTooQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKWNoYWxsZW5n
ZQotewotICAgIG1fY2ZDaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7Ci19Ci0KLS0gKENGVVJMQXV0aENo
YWxsZW5nZVJlZiljZkNoYWxsZW5nZQotewotICAgIHJldHVybiBtX2NmQ2hhbGxlbmdlOwotfQot
I2VuZGlmCi0KIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09S
SykKLQotQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY29yZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlICptYWNDaGFsbGVuZ2UpCi17Ci0gICAgV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50
QXNDaGFsbGVuZ2VTZW5kZXIgKmNoYWxsZW5nZVNlbmRlciA9IChXZWJDb3JlQXV0aGVudGljYXRp
b25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciopIFttYWNDaGFsbGVuZ2Ugc2VuZGVyXTsKLSAgICBy
ZXR1cm4gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoW2NoYWxsZW5nZVNlbmRlciBjZkNoYWxsZW5n
ZV0sIFtjaGFsbGVuZ2VTZW5kZXIgY2xpZW50XSk7Ci19Ci0KLU5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKm1hYyhjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNoYWxsZW5n
ZSkKLXsKLSAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0aENsaWVudCA9IGNvcmVDaGFsbGVu
Z2UuYXV0aGVudGljYXRpb25DbGllbnQoKTsKLSAgICBSZXRhaW5QdHI8V2ViQ29yZUF1dGhlbnRp
Y2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXI+IGNoYWxsZW5nZVNlbmRlciA9IGFkb3B0TlMo
W1tXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciBhbGxvY10gaW5p
dFdpdGhBdXRoZW50aWNhdGlvbkNsaWVudDphdXRoQ2xpZW50XSk7Ci0gICAgUmV0YWluUHRyPENG
VVJMQXV0aENoYWxsZW5nZVJlZj4gYXV0aENoYWxsZW5nZSA9IGNvcmVDaGFsbGVuZ2UuY2ZVUkxB
dXRoQ2hhbGxlbmdlUmVmKCk7Ci0gICAgaWYgKCFhdXRoQ2hhbGxlbmdlKQotICAgICAgICBhdXRo
Q2hhbGxlbmdlID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlKSk7Ci0gICAgW2NoYWxs
ZW5nZVNlbmRlci5nZXQoKSBzZXRDRkNoYWxsZW5nZTphdXRoQ2hhbGxlbmdlLmdldCgpXTsKLSNp
ZiBQTEFURk9STShJT1MpCi0gICAgcmV0dXJuIFtbTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSBfY3JlYXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VGb3JDRkF1dGhDaGFsbGVuZ2U6YXV0aENo
YWxsZW5nZS5nZXQoKSBzZW5kZXI6Y2hhbGxlbmdlU2VuZGVyLmdldCgpXSBhdXRvcmVsZWFzZV07
Ci0jZWxzZQotICAgIHJldHVybiBbW05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgX2F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRm9yQ0ZBdXRoQ2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2UuZ2V0KCkg
c2VuZGVyOmNoYWxsZW5nZVNlbmRlci5nZXQoKV0gYXV0b3JlbGVhc2VdOwotI2VuZGlmCi19Ci0K
LSNlbHNlCi0KIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDcmVkZW50aWFsJiBwcm9w
b3NlZENyZWRlbnRpYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsCkBAIC0yMDMsNiArMTYwLDQg
QEAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY29yZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlICptYWNDaGFsbGVuZ2UpCiAgICAgcmV0dXJuIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1h
Y0NoYWxsZW5nZSk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9Db29raWVKYXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9Db29raWVKYXJNYWMubW0KaW5kZXggMTZkMTBlMjA3MDA0MWE4N2U0NjNjZWYyNDc0YzNjNDg5
ZGQzZmFlYS4uODJkNGY1ZmUyNTJhOGVjYmVlNzZiMjdhNDIyZjUxNzM3NDI4MGFiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5t
bQpAQCAtMzEsOCArMzEsNiBAQAogI2ltcG9ydCAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAj
aW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykK
LQogI2ltcG9ydCAiQ29va2llLmgiCiAjaW1wb3J0ICJDb29raWVTdG9yYWdlLmgiCiAjaW1wb3J0
ICJVUkwuaCIKQEAgLTIwMCwxMiArMTk4LDYgQEAgdm9pZCBkZWxldGVBbGxDb29raWVzKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKICAgICB3a0RlbGV0ZUFsbEhUVFBDb29r
aWVzKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKTsKIH0KIAotfQotCi0jZW5kaWYgLy8g
IVVTRShDRk5FVFdPUkspCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQogc3RhdGljIE5TSFRUUENv
b2tpZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uKQogewogICAgIGF1dG8gY29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2llU3RvcmFn
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3Jl
ZGVudGlhbFN0b3JhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbQppbmRleCA5ZWJjODU0ZGNkYjQ4ZDU3ZThmODI4Njk0
NDI0ZWNkNDliNzMzNmVjLi5mMGE0ZjNhZjc2NDE1Y2IyNmMyOTRiZDgxMzkxM2ZlMjIzM2IzNzQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50
aWFsU3RvcmFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAKLSNpZiAhVVNFKENGTkVU
V09SSykKLQogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW5jbHVkZSAiQ3JlZGVu
dGlhbC5oIgogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgpAQCAtNTIsNSArNTAsMyBAQCB2
b2lkIENyZWRlbnRpYWxTdG9yYWdlOjpzYXZlVG9QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90
ZWN0aW9uU3BhY2UmIHByb3RlY3RpbwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgKaW5kZXggZGI4MWM2Njg3
YzQyMmU1ZWNiYzM2OTBlMjM0NWFmODIyNGFkMDZjNi4uZTJjOGI4OTZhOGEyNDg5N2IxMmYwMmU0
N2ViMDU1MTFkOWJkNDBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCkBAIC0yOSw4ICsyOSw2IEBACiAjaWZu
ZGVmIEZvcm1EYXRhU3RyZWFtTWFjX2gKICNkZWZpbmUgRm9ybURhdGFTdHJlYW1NYWNfaAogCi0j
aWYgIVVTRShDRk5FVFdPUkspCi0KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBDRlVSTFJlcXVlc3RSZWY7CkBAIC00OSw2ICs0
Nyw1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCiAKICNlbmRpZiAvLyBGb3JtRGF0YVN0cmVhbU1hY19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0
YVN0cmVhbU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1E
YXRhU3RyZWFtTWFjLm1tCmluZGV4IGI1NzM0Zjk4ZWRmYmYxMTM1ZTE3ZDRiN2ViYzI5Y2M1NWZl
MDQzNTEuLjdiN2QxZDNhMTVlMzk1NzQzYzk0NDkxODM0YzMyOThlMjNjZmExOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3Ry
ZWFtTWFjLm1tCkBAIC0yOSw4ICsyOSw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IkZvcm1EYXRhU3RyZWFtTWFjLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAi
Rm9ybURhdGEuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKICNpbXBvcnQgPHd0
Zi9QYXNzUmVmUHRyLmg+CkBAIC01Miw1ICs1MCwzIEBAIEZvcm1EYXRhKiBodHRwQm9keUZyb21T
dHJlYW0oTlNJbnB1dFN0cmVhbSAqc3RyZWFtKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCmluZGV4IGY3Yzg2NGNl
M2I1MDk5ZmUwMmYxNjk2OWFjZTM5N2Y2ODJlODNkYmEuLmZiNzc2NmY1NzZiMmZiYzE2MzgyNWZm
YTkyMjhjMzI1Zjg4MDlmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQpAQCAtMzEsMTAgKzMxLDYgQEAKICNp
bXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGRXJyb3IuaD4KICNpbXBvcnQgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5oPgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9y
dCA8Q0ZOZXR3b3JrL0NGU29ja2V0U3RyZWFtUHJpdi5oPgotI2VuZGlmCi0KIEBpbnRlcmZhY2Ug
TlNFcnJvciAoV2ViRXh0cmFzKQogLSAoTlNTdHJpbmcgKilfd2ViX2xvY2FsaXplZERlc2NyaXB0
aW9uOwogQGVuZApAQCAtOTEsODUgKzg3LDYgQEAgLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5T
Q29kZXIgKiljb2RlcgogCiBAZW5kCiAKLQotI2lmIFVTRShDRk5FVFdPUkspCi1zdGF0aWMgTlNF
cnJvciAqTlNFcnJvckZyb21DRkVycm9yKENGRXJyb3JSZWYgY2ZFcnJvciwgTlNVUkwgKnVybCkK
LXsKLSAgICBDRkluZGV4IGVyckNvZGUgPSBDRkVycm9yR2V0Q29kZShjZkVycm9yKTsKLSAgICBp
ZiAoQ0ZFcXVhbChDRkVycm9yR2V0RG9tYWluKGNmRXJyb3IpLCBrQ0ZFcnJvckRvbWFpbkNGTmV0
d29yaykgJiYgZXJyQ29kZSA8PSBrQ0ZVUkxFcnJvclVua25vd24gJiYgZXJyQ29kZSA+IC00MDAw
KSB7Ci0gICAgICAgIC8vIFRoaXMgaXMgYW4gVVJMIGVycm9yIGFuZCBuZWVkcyB0byBiZSB0cmFu
c2xhdGVkIHRvIHRoZSBOU1VSTEVycm9yRG9tYWluCi0gICAgICAgIGlkIGtleXNbMTBdLCB2YWx1
ZXNbMTBdOwotICAgICAgICBDRkRpY3Rpb25hcnlSZWYgdXNlckluZm8gPSBDRkVycm9yQ29weVVz
ZXJJbmZvKGNmRXJyb3IpOwotICAgICAgICBOU0Vycm9yICpyZXN1bHQ7Ci0gICAgICAgIE5TSW50
ZWdlciBjb3VudCA9IDA7Ci0KLSAgICAgICAgaWYgKHVybCkgewotICAgICAgICAgICAga2V5c1tj
b3VudF0gPSBOU1VSTEVycm9yRmFpbGluZ1VSTEVycm9yS2V5OwotICAgICAgICAgICAgdmFsdWVz
W2NvdW50XSA9IHVybDsKLSAgICAgICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgICAgICBrZXlz
W2NvdW50XSA9IE5TVVJMRXJyb3JGYWlsaW5nVVJMU3RyaW5nRXJyb3JLZXk7Ci0gICAgICAgICAg
ICB2YWx1ZXNbY291bnRdID0gW3VybCBhYnNvbHV0ZVN0cmluZ107Ci0gICAgICAgICAgICBjb3Vu
dCArKzsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRpb25LZXkpOwot
ICAgICAgICBpZiAodmFsdWVzW2NvdW50XSkgewotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBO
U0xvY2FsaXplZERlc2NyaXB0aW9uS2V5OwotICAgICAgICAgICAgY291bnQgKys7Ci0gICAgICAg
IH0KLQotICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVz
ZXJJbmZvLCBrQ0ZFcnJvckxvY2FsaXplZEZhaWx1cmVSZWFzb25LZXkpOwotICAgICAgICBpZiAo
dmFsdWVzW2NvdW50XSkgewotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xvY2FsaXplZEZh
aWx1cmVSZWFzb25FcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0K
LSAgICAgICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5m
bywga0NGRXJyb3JMb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25LZXkpOwotICAgICAgICBpZiAo
dmFsdWVzW2NvdW50XSkgewotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xvY2FsaXplZFJl
Y292ZXJ5U3VnZ2VzdGlvbkVycm9yS2V5OwotICAgICAgICAgICAgY291bnQgKys7Ci0gICAgICAg
IH0KLQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgICAgICBpZiAodXNl
ckluZm8gJiYgKHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlcklu
Zm8sIGtDRlN0cmVhbVByb3BlcnR5U1NMUGVlckNlcnRpZmljYXRlcykpICE9IG5pbCkgewotICAg
ICAgICAgICAgLy8gTmVlZCB0byB0cmFuc2xhdGUgdGhlIGNlcnQKLSAgICAgICAgICAgIGtleXNb
Y291bnRdID0gQCJOU0Vycm9yUGVlckNlcnRpZmljYXRlQ2hhaW5LZXkiOwotICAgICAgICAgICAg
Y291bnQgKys7Ci0KLSAgICAgICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUodXNlckluZm8sIF9rQ0ZTdHJlYW1Qcm9wZXJ0eVNTTENsaWVudENlcnRpZmljYXRl
cyk7Ci0gICAgICAgICAgICBpZiAodmFsdWVzW2NvdW50XSkgewotICAgICAgICAgICAgICAgIGtl
eXNbY291bnRdID0gQCJOU0Vycm9yQ2xpZW50Q2VydGlmaWNhdGVDaGFpbktleSI7Ci0gICAgICAg
ICAgICAgICAgY291bnQgKys7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhbHVlc1tj
b3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIF9rQ0ZTdHJlYW1Qcm9w
ZXJ0eVNTTENsaWVudENlcnRpZmljYXRlU3RhdGUpOwotICAgICAgICAgICAgaWYgKHZhbHVlc1tj
b3VudF0pIHsKLSAgICAgICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvckNsaWVudENl
cnRpZmljYXRlU3RhdGVLZXkiOwotICAgICAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0KLSAgICAgICAg
aWYgKHVzZXJJbmZvICYmICh2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVl
KHVzZXJJbmZvLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNTTFBlZXJUcnVzdCkpICE9IG5pbCkgewotICAg
ICAgICAgICAga2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFpbGluZ1VSTFBlZXJUcnVzdEVycm9y
S2V5OwotICAgICAgICAgICAgY291bnQrKzsKLSAgICAgICAgfQotCi0gICAgICAgIGtleXNbY291
bnRdID0gTlNVbmRlcmx5aW5nRXJyb3JLZXk7Ci0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQp
Y2ZFcnJvcjsKLSAgICAgICAgY291bnQgKys7Ci0KLSAgICAgICAgcmVzdWx0ID0gW1dlYkN1c3Rv
bU5TVVJMRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTooZXJyQ29k
ZSA9PSBrQ0ZVUkxFcnJvclVua25vd24gPyAoQ0ZJbmRleClOU1VSTEVycm9yVW5rbm93biA6IGVy
ckNvZGUpIHVzZXJJbmZvOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzOnZhbHVl
cyBmb3JLZXlzOmtleXMgY291bnQ6Y291bnRdXTsKLSAgICAgICAgaWYgKHVzZXJJbmZvKQotICAg
ICAgICAgICAgQ0ZSZWxlYXNlKHVzZXJJbmZvKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9Ci0gICAgcmV0dXJuIChOU0Vycm9yICopY2ZFcnJvcjsKLX0KLSNlbmRpZiAvLyBVU0UoQ0ZO
RVRXT1JLKQotCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0xOTMsNTMgKzExMCw2IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gY3JlYXRlTlNF
cnJvckZyb21SZXNvdXJjZUVycm9yQmFzZShjb25zdCBSZXNvdXJjZUVycm9yCiAgICAgcmV0dXJu
IGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpyZXNvdXJjZUVycm9yLmRv
bWFpbigpIGNvZGU6cmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSB1c2VySW5mbzp1c2VySW5mby5n
ZXQoKV0pOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VFcnJvcjo6UmVzb3Vy
Y2VFcnJvcihOU0Vycm9yICplcnJvcikKLSAgICA6IG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCi0g
ICAgLCBtX3BsYXRmb3JtRXJyb3IocmVpbnRlcnByZXRfY2FzdDxDRkVycm9yUmVmPihlcnJvcikp
Ci17Ci0gICAgbV9pc051bGwgPSAhZXJyb3I7Ci0gICAgaWYgKCFtX2lzTnVsbCkKLSAgICAgICAg
bV9pc1RpbWVvdXQgPSBbZXJyb3IgY29kZV0gPT0gTlNVUkxFcnJvclRpbWVkT3V0OwotfQotCi1O
U0Vycm9yICpSZXNvdXJjZUVycm9yOjpuc0Vycm9yKCkgY29uc3QKLXsKLSAgICBpZiAobV9pc051
bGwpIHsKLSAgICAgICAgQVNTRVJUKCFtX3BsYXRmb3JtRXJyb3IpOwotICAgICAgICByZXR1cm4g
bmlsOwotICAgIH0KLQotICAgIGlmIChtX3BsYXRmb3JtTlNFcnJvcikKLSAgICAgICAgcmV0dXJu
IG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOwotCi0gICAgaWYgKG1fcGxhdGZvcm1FcnJvcikgewot
ICAgICAgICBDRkVycm9yUmVmIGVycm9yID0gbV9wbGF0Zm9ybUVycm9yLmdldCgpOwotICAgICAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiB1c2VySW5mbyA9IGFkb3B0Q0YoQ0ZFcnJvckNv
cHlVc2VySW5mbyhlcnJvcikpOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgbV9wbGF0Zm9y
bU5TRXJyb3IgPSBOU0Vycm9yRnJvbUNGRXJyb3IoZXJyb3IsIChOU1VSTCAqKVsoTlNEaWN0aW9u
YXJ5ICopdXNlckluZm8uZ2V0KCkgb2JqZWN0Rm9yS2V5OihpZCkga0NGVVJMRXJyb3JGYWlsaW5n
VVJMRXJyb3JLZXldKTsKLSAgICAgICAgLy8gSWYgTlNFcnJvckZyb21DRkVycm9yIGNyZWF0ZWQg
YSBuZXcgTlNFcnJvciBmb3IgdXMsIHJldHVybiB0aGF0LgotICAgICAgICBpZiAobV9wbGF0Zm9y
bU5TRXJyb3IuZ2V0KCkgIT0gKE5TRXJyb3IgKillcnJvcikKLSAgICAgICAgICAgIHJldHVybiBt
X3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLQotICAgICAgICAvLyBPdGhlcndpc2UgZmFsbCB0aHJv
dWdoIHRvIGNyZWF0ZSBhIG5ldyBOU0Vycm9yIGZyb20gdGhlIENGRXJyb3IuCi0jZW5kaWYKLSAg
ICAgICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdp
dGhEb21haW46KE5TU3RyaW5nICopQ0ZFcnJvckdldERvbWFpbihlcnJvcikgY29kZTpDRkVycm9y
R2V0Q29kZShlcnJvcikgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvLmdldCgpXSk7
Ci0gICAgICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLSAgICB9Ci0KLSAgICBt
X3BsYXRmb3JtTlNFcnJvciA9IGNyZWF0ZU5TRXJyb3JGcm9tUmVzb3VyY2VFcnJvckJhc2UoKnRo
aXMpOwotICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLX0KLQotUmVzb3VyY2VF
cnJvcjo6b3BlcmF0b3IgTlNFcnJvciAqKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbnNFcnJvcigp
OwotfQotCi0jZWxzZQotCiBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKE5TRXJyb3IgKm5z
RXJyb3IpCiAgICAgOiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQogICAgICwgbV9wbGF0Zm9ybUVy
cm9yKG5zRXJyb3IpCkBAIC0zMTIsNiArMTgyLDQgQEAgUmVzb3VyY2VFcnJvcjo6b3BlcmF0b3Ig
Q0ZFcnJvclJlZigpIGNvbnN0CiAgICAgcmV0dXJuIGNmRXJyb3IoKTsKIH0KIAotI2VuZGlmIC8v
IFVTRShDRk5FVFdPUkspCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0K
aW5kZXggYmJhMDUzMzY2NjcyNTg3MTU0NTJkMTA2OWRiNDY4ZjAwZTdlZTk2Ni4uZTU5YWNhNjI5
OGNlZmJmMTQwMjMyZDhhYzVmOWVkYjFmZjk5ODdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KQEAgLTU2
LDE2ICs1Niw2IEBACiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaWYgX19oYXNfaW5jbHVkZSg8
Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4pCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZV
UkxDb25uZWN0aW9uUHJpdi5oPgotI2VuZGlmCi10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxDb25uZWN0
aW9uKiBDRlVSTENvbm5lY3Rpb25SZWY7Ci1leHRlcm4gIkMiIHsKLUNGRGljdGlvbmFyeVJlZiBf
Q0ZVUkxDb25uZWN0aW9uQ29weVRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmKTsKLX0KLSNl
bmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiAjaWYgX19oYXNfaW5jbHVkZSg8Rm91bmRhdGlvbi9O
U1VSTENvbm5lY3Rpb25Qcml2YXRlLmg+KQogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTENvbm5l
Y3Rpb25Qcml2YXRlLmg+CiAjZWxzZQpAQCAtOTgsOSArODgsNyBAQCAtKGlkKV9pbml0V2l0aFJl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgZGVsZWdhdGU6KGlkKWRlbGVnYXRlIHVzZXND
YWNoZTooQgogQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi0jaWYgIVVTRShDRk5F
VFdPUkspCi0gICAgCisKIHN0YXRpYyB2b2lkIGFwcGx5QmFzaWNBdXRob3JpemF0aW9uSGVhZGVy
KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkK
IHsKICAgICBTdHJpbmcgYXV0aGVudGljYXRpb25IZWFkZXIgPSAiQmFzaWMgIiArIGJhc2U2NEVu
Y29kZShTdHJpbmcoY3JlZGVudGlhbC51c2VyKCkgKyAiOiIgKyBjcmVkZW50aWFsLnBhc3N3b3Jk
KCkpLnV0ZjgoKSk7CkBAIC0zMjUsOCArMzEzLDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxh
dGZvcm1TZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzKQogICAgICAgICBbZC0+bV9jb25uZWN0
aW9uIHNldERlZmVyc0NhbGxiYWNrczpkZWZlcnNdOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQot
CiB2b2lkIFJlc291cmNlSGFuZGxlOjpzY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7CiAg
ICAgTlNSdW5Mb29wICpydW5Mb29wID0gcGFpci5uc1J1bkxvb3AoKTsKQEAgLTM0NSw4ICszMzEs
NiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikK
ICAgICAgICAgW2QtPm1fY29ubmVjdGlvbi5nZXQoKSB1bnNjaGVkdWxlRnJvbVJ1bkxvb3A6cnVu
TG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKXBhaXIubW9kZSgpXTsKIH0KIAotI2VuZGlmCi0KIGlk
IFJlc291cmNlSGFuZGxlOjptYWtlRGVsZWdhdGUoYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZSkKIHsKICAgICBBU1NFUlQoIWQtPm1fZGVsZWdhdGUpOwpAQCAtNzM1LDkgKzcxOSw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoTlNDYWNoZWRV
UkxSZXNwb25zZSAqcmVzcG9uc2UpCiAKICAgICBbKGlkKWRlbGVnYXRlKCkgY29udGludWVXaWxs
Q2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9Ci0gICAgCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdP
UkspCi0gICAgCisKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKICAgICAKIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSwg
UmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcpCkBAIC03NzYsMjIgKzc1OCwxMSBAQCB2b2lkIFJl
c291cmNlSGFuZGxlOjpzZXRDb2xsZWN0c1RpbWluZ0RhdGEoKQogI2VuZGlmCiB9CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRp
bWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm5lY3Rpb24sIFJlc291cmNlTG9hZFRpbWlu
ZyYgdGltaW5nKQotewotICAgIGdldENvbm5lY3Rpb25UaW1pbmdEYXRhKChfX2JyaWRnZSBOU0Rp
Y3Rpb25hcnkqKShhZG9wdENGKF9DRlVSTENvbm5lY3Rpb25Db3B5VGltaW5nRGF0YShjb25uZWN0
aW9uKSkuZ2V0KCkpLCB0aW1pbmcpOwotfQotICAgIAotI2Vsc2UKLSAgICAKIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqY29ubmVj
dGlvbiwgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcpCiB7CiAgICAgZ2V0Q29ubmVjdGlvblRp
bWluZ0RhdGEoW2Nvbm5lY3Rpb24gX3RpbWluZ0RhdGFdLCB0aW1pbmcpOwogfQotICAgIAotI2Vu
ZGlmCi0gICAgCisKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1RJTUlORykKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCmluZGV4IDY5NGU1M2M0YTU3MzIyMjBkNDQ2MWRj
MTBmNjBkZDk4NGFhODc5NmQuLmU3NzAyNDVkZmQ1MDFiMTRiMGU2MWMxMDc3YzcxYjMwODQxMmYx
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlUmVxdWVzdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KQEAgLTM3LDI5ICszNyw2IEBAIEBlbmQKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VSZXF1ZXN0OjpS
ZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QpCi0gICAgOiBSZXNvdXJjZVJl
cXVlc3RCYXNlKCkKLSAgICAsIG1fY2ZSZXF1ZXN0KFtuc1JlcXVlc3QgX0NGVVJMUmVxdWVzdF0p
Ci0gICAgLCBtX25zUmVxdWVzdChuc1JlcXVlc3QpCi17Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1
ZXN0Ojp1cGRhdGVOU1VSTFJlcXVlc3QoKQotewotICAgIGlmIChtX2NmUmVxdWVzdCkKLSAgICAg
ICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhD
RlVSTFJlcXVlc3Q6bV9jZlJlcXVlc3QuZ2V0KCldKTsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVl
c3Q6OmFwcGx5V2ViQXJjaGl2ZUhhY2tGb3JNYWlsKCkKLXsKLSAgICAvLyBIYWNrIGJlY2F1c2Ug
TWFpbCBjaGVja3MgZm9yIHRoaXMgcHJvcGVydHkgdG8gZGV0ZWN0IGRhdGEgLyBhcmNoaXZlIGxv
YWRzCi0gICAgX0NGVVJMUmVxdWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZVUkxSZXF1ZXN0KERv
Tm90VXBkYXRlSFRUUEJvZHkpLCBDRlNUUigiV2ViRGF0YVJlcXVlc3QiKSwgQ0ZTVFIoIiIpKTsK
LX0KLQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNl
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNw
b25zZU1hYy5tbQppbmRleCA2ZmEwMGUyNDM1ZTgzZTc5Zjk3ZDQzMDg2MmRiMGI0MWQzNjY1Mzdi
Li5jZGY3ODlkNjlhN2Y3ZjVmZDBmZWE5NjM1NTdkNmQ3ZGMxNzliZGJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9u
c2VNYWMubW0KQEAgLTcxLDM2ICs3MSw2IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6aW5pdE5T
VVJMUmVzcG9uc2UoKSBjb25zdAogICAgIFttX25zUmVzcG9uc2UuZ2V0KCkgX3NldE1JTUVUeXBl
OihOU1N0cmluZyAqKW1fbWltZVR5cGVdOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLQotTlNV
UkxSZXNwb25zZSAqUmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSgpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFtX25zUmVzcG9uc2UgJiYgIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051bGwpIHsKLSAg
ICAgICAgaW5pdE5TVVJMUmVzcG9uc2UoKTsKLSAgICAgICAgbV9jZlJlc3BvbnNlID0gW21fbnNS
ZXNwb25zZS5nZXQoKSBfQ0ZVUkxSZXNwb25zZV07Ci0gICAgICAgIHJldHVybiBtX25zUmVzcG9u
c2UuZ2V0KCk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2NmUmVzcG9uc2UpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0KLSAgICBpZiAoIW1fbnNSZXNwb25zZSkKLSAgICAgICAgbV9uc1Jlc3BvbnNlID0g
W05TVVJMUmVzcG9uc2UgX3Jlc3BvbnNlV2l0aENGVVJMUmVzcG9uc2U6bV9jZlJlc3BvbnNlLmdl
dCgpXTsKLQotICAgIHJldHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7Ci19Ci0KLVJlc291cmNlUmVz
cG9uc2U6OlJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSogbnNSZXNwb25zZSkKLSAgICA6
IG1faW5pdExldmVsKFVuaW5pdGlhbGl6ZWQpCi0gICAgLCBtX3BsYXRmb3JtUmVzcG9uc2VJc1Vw
VG9EYXRlKHRydWUpCi0gICAgLCBtX2NmUmVzcG9uc2UoW25zUmVzcG9uc2UgX0NGVVJMUmVzcG9u
c2VdKQotICAgICwgbV9uc1Jlc3BvbnNlKG5zUmVzcG9uc2UpCi17Ci0gICAgbV9pc051bGwgPSAh
bnNSZXNwb25zZTsKLX0KLQotI2Vsc2UKLQogc3RhdGljIE5TU3RyaW5nKiBjb25zdCBjb21tb25I
ZWFkZXJGaWVsZHNbXSA9IHsKICAgICBAIkFnZSIsIEAiQ2FjaGUtQ29udHJvbCIsIEAiQ29udGVu
dC1UeXBlIiwgQCJEYXRlIiwgQCJFdGFnIiwgQCJFeHBpcmVzIiwgQCJMYXN0LU1vZGlmaWVkIiwg
QCJQcmFnbWEiCiB9OwpAQCAtMTg5LDcgKzE1OSw1IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6
cGxhdGZvcm1Db21wYXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNl
CiAgICAgcmV0dXJuIGEubnNVUkxSZXNwb25zZSgpID09IGIubnNVUkxSZXNwb25zZSgpOwogfQog
Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91
c0xvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5
bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDAxNDRiZDkzYTcwYTQ0OTg4ZTA1NmM4ZWI4
OTg5NzQ5ZjE1YzJiNTguLjY1Zjc2ZGYxM2I5YzhmOTY2NzhmZjg4ZWRmN2MzNjM3MWU5MzBlMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9u
b3VzTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCIKIAotI2lm
ICFVU0UoQ0ZORVRXT1JLKQotCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsMTQgKzM2LDEwIEBAIHZvaWQgU3luY2hyb25v
dXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJj
ZUhhbmRsZSosCiAgICAgW2NoYWxsZW5nZS5zZW5kZXIoKSBjb250aW51ZVdpdGhvdXRDcmVkZW50
aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoKV07CiB9CiAKLSNpZiAhVVNFKENGTkVUV09SSykKIFJlc291cmNlRXJyb3Ig
U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OnBsYXRmb3JtQmFkUmVzcG9uc2VFcnJvcigpCiB7CiAg
ICAgUmV0YWluUHRyPE5TRXJyb3I+IGVycm9yID0gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGlu
aXRXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yQmFkU2VydmVyUmVz
cG9uc2UgdXNlckluZm86bmlsXSk7CiAgICAgcmV0dXJuIGVycm9yLmdldCgpOwogfQotI2VuZGlm
CiAKIH0KLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNEZWxlZ2F0ZS5oCmluZGV4IDRmNDE1NWVhZmQ5NDViMWI4NjJkMjljZTg5NmRjYWRj
ZGExYzQyNjYuLjRmZGQ1YjVjNDU3MjE3OTNhMzM4ODI2OWQ4OGFkMDMzZTNkYTlkM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgKQEAgLTI2LDggKzI2LDYgQEAK
ICNpZm5kZWYgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCiAjZGVmaW5lIFdlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGVfaAogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwogfQpAQCAtMzksNSArMzcs
NCBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIC0gKHZvaWQpZGV0YWNoSGFuZGxlOwogQGVuZAog
Ci0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCiAjZW5kaWYgLy8gV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNEZWxlZ2F0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5t
bQppbmRleCBlMTdjYjlkMjBlZDdkYmQ1MTc5M2MzNjRlYjMyYzE1ODk1ZWJhNTNhLi42ZTJkZWQ2
Y2QyODNmZmE0ZTBmMjY0ODhjNjBkY2Y2MzEwMDRiZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzRGVsZWdhdGUubW0KQEAgLTI2LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIgogCi0jaWYg
IVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAj
aW1wb3J0ICJBdXRoZW50aWNhdGlvbk1hYy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtMjg4
LDYgKzI4NiwzIEBAIC0gKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKiljb25uZWN0aW9uOihOU1VSTENv
bm5lY3Rpb24gKiljb25uZWN0aW9uIHdpbGxDYWNoZVJlc3BvCiB9CiAKIEBlbmQKLQotI2VuZGlm
IC8vICFVU0UoQ0ZORVRXT1JLKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCmluZGV4IGU3NDBhYTU5YmVkNjNiYWI5
MDc2ZjA3OTNhYjNkMDNkZTAwMmIwNTEuLmJhNmIwNmQyNjA3MmZjN2ZiNjBiZjliYmIwN2JhNDcy
ZTgwOTMxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCkBAIC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIFdlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9oCiAjZGVmaW5lIFdlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9oCiAKLSNpZiAhVVNFKENG
TkVUV09SSykKLQogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCkBAIC01OSw1ICs1Nyw0IEBAIGNsYXNzIFJlc291cmNlSGFuZGxlOwog
CiBAZW5kCiAKLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKICNlbmRpZiAvLyBXZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4
IDkzMzdkMTM0OTBhYjgwOWM3ODNlMTU1OGNmYjc2MTBiYjgxYzE1OWIuLmMxZDYzMGI2YjNjNjE0
ZGYzZDQyOWM5N2UwNTI4YjA3ODM5MGU4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTI2LDggKzI2
LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2lt
cG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9u
TWFjLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC0zNDUsNiArMzQzLDMgQEAgLSAoQk9PTClj
b25uZWN0aW9uU2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U6KE5TVVJMQ29ubmVjdGlvbiAqKWNv
bm5lY3Rpb24KIH0KIAogQGVuZAotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNw
b25zZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxS
ZXNwb25zZS5tbQppbmRleCAwZmFiZjkzOTg5MzZiMzEyOTM5MjIxMTBjOTcyNWFjYTQ2OTMyZGVl
Li5jZDViYjQ0N2Q3YzQzYTllZjE3N2JhMmRhMjU2YjZkYmJlNTY2NzY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3Bv
bnNlLm1tCkBAIC0zMjUsNyArMzI1LDYgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5
KENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKIH0KICNlbmRpZgogCi0jaWYgIVVTRShDRk5F
VFdPUkspCiBOU1VSTFJlc3BvbnNlICpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNz
YXJ5KE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgTlNVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0
LCBOU1VSTFJlc3BvbnNlICpyZWRpcmVjdFJlc3BvbnNlKQogewogICAgIGlmIChyZWRpcmVjdFJl
c3BvbnNlKQpAQCAtMzM5LDYgKzMzOCw1IEBAIE5TVVJMUmVzcG9uc2UgKnN5bnRoZXNpemVSZWRp
cmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uCiAgICAg
TlNEaWN0aW9uYXJ5ICpzeW50aGVzaXplZFJlc3BvbnNlSGVhZGVyRmllbGRzID0gQHsgQCJMb2Nh
dGlvbiI6IFtbbmV3UmVxdWVzdCBVUkxdIGFic29sdXRlU3RyaW5nXSwgQCJDYWNoZS1Db250cm9s
IjogQCJuby1zdG9yZSIgfTsKICAgICByZXR1cm4gW1tbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2Nd
IGluaXRXaXRoVVJMOltbY29ubmVjdGlvbiBjdXJyZW50UmVxdWVzdF0gVVJMXSBzdGF0dXNDb2Rl
OjMwMiBIVFRQVmVyc2lvbjooTlNTdHJpbmcgKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVs
ZHM6c3ludGhlc2l6ZWRSZXNwb25zZUhlYWRlckZpZWxkc10gYXV0b3JlbGVhc2VdOwogfQotI2Vu
ZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tCmluZGV4IDY4MGY2OWVj
ZTUwNmY2NmEzODk4MWFlYjgyYjYwNTBiZGYzZWQ3ZjguLjY4Y2Y2NWEzMmFhNTNjYTY4ZjJlMzM5
ZGI4YTYzNjg0NjMyZjNjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2Vi
RG93bmxvYWQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQpA
QCAtNDAsMTEgKzQwLDYgQEAKIAogI2ltcG9ydCAiV2ViVHlwZXNJbnRlcm5hbC5oIgogCi0jaWYg
VVNFKENGTkVUV09SSykKLSNpbXBvcnQgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNpbXBvcnQg
PENGTmV0d29yay9DRlVSTENvbm5lY3Rpb24uaD4KLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogQGNsYXNzIE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHk7CkBAIC02MCwx
NSArNTUsNiBAQCAtIChpZClfaW5pdFdpdGhMb2FkaW5nQ29ubmVjdGlvbjooTlNVUkxDb25uZWN0
aW9uICopY29ubmVjdGlvbgogLSAoaWQpX2luaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdAogICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAg
ICBkaXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5OwotCi0jaWYgVVNFKENGTkVUV09SSykK
LS0gKGlkKV9pbml0V2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246KENGVVJMQ29ubmVjdGlvblJl
Ziljb25uZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OihDRlVS
TFJlcXVlc3RSZWYpcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25z
ZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNwb25zZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJveHk6KE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHkgKilwcm94eTsKLSNlbmRpZgotCiBA
ZW5kCiAKIEBpbnRlcmZhY2UgV2ViRG93bmxvYWRJbnRlcm5hbCA6IE5TT2JqZWN0IDxOU1VSTERv
d25sb2FkRGVsZWdhdGU+CkBAIC0yNDIsMTggKzIyOCw2IEBAIC0gKGlkKV9pbml0V2l0aExvYWRp
bmdDb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCiAgICAgcmV0dXJuIFtz
dXBlciBfaW5pdFdpdGhMb2FkaW5nQ29ubmVjdGlvbjpjb25uZWN0aW9uIHJlcXVlc3Q6cmVxdWVz
dCByZXNwb25zZTpyZXNwb25zZSBkZWxlZ2F0ZTpfd2ViSW50ZXJuYWwgcHJveHk6cHJveHldOwog
fQogCi0jaWYgVVNFKENGTkVUV09SSykKLS0gKGlkKV9pbml0V2l0aExvYWRpbmdDRlVSTENvbm5l
Y3Rpb246KENGVVJMQ29ubmVjdGlvblJlZiljb25uZWN0aW9uCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNwb25zZQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6KE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJv
eHkgKilwcm94eQotewotICAgIFtzZWxmIF9zZXRSZWFsRGVsZWdhdGU6ZGVsZWdhdGVdOwotICAg
IHJldHVybiBbc3VwZXIgX2luaXRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjpjb25uZWN0aW9u
IHJlcXVlc3Q6cmVxdWVzdCByZXNwb25zZTpyZXNwb25zZSBkZWxlZ2F0ZTpfd2ViSW50ZXJuYWwg
cHJveHk6cHJveHldOwotfQotI2VuZGlmCi0KIC0gKGlkKV9pbml0V2l0aFJlcXVlc3Q6KE5TVVJM
UmVxdWVzdCAqKXJlcXVlc3QKICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCiAg
ICAgICAgICAgICAgZGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZEludGVybmFsLmggYi9Tb3VyY2UvV2Vi
S2l0L21hYy9NaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaAppbmRleCA5YjJmMzk1ODVkOTRhOGY1
YjA1ZDMzMzBhY2I4MTIzN2JkMGRiOTY5Li5jMWQyMTkyNjE5NTJhNDY3Y2IzYTY5YWI2MWE1ODk0
YjhhMDNhZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2Fk
SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkSW50ZXJu
YWwuaApAQCAtMjgsMTAgKzI4LDYgQEAKICAKICNpbXBvcnQgPFdlYktpdExlZ2FjeS9XZWJEb3du
bG9hZC5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQgPENGTmV0d29yay9DRlVSTENv
bm5lY3Rpb24uaD4KLSNlbmRpZgotIAogQGludGVyZmFjZSBXZWJEb3dubG9hZCAoV2ViRG93bmxv
YWRDcmVhdGlvbikKICsoaWQpX2Rvd25sb2FkV2l0aExvYWRpbmdDb25uZWN0aW9uOihOU1VSTENv
bm5lY3Rpb24gKiljb25uZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdApAQCAtNDIsMTMgKzM4LDQgQEAKICsoaWQpX2Rvd25s
b2FkV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKICAgICAgICAgICAgICAgICAg
ZGVsZWdhdGU6KGlkKWRlbGVnYXRlCiAgICAgICAgICAgICAgICAgZGlyZWN0b3J5OihOU1N0cmlu
ZyAqKWRpcmVjdG9yeTsKLQotI2lmIFVTRShDRk5FVFdPUkspCi0rIChpZClfZG93bmxvYWRXaXRo
TG9hZGluZ0NGVVJMQ29ubmVjdGlvbjooQ0ZVUkxDb25uZWN0aW9uUmVmKWNvbm5lY3Rpb24KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYp
cmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6KENGVVJM
UmVzcG9uc2VSZWYpcmVzcG9uc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
bGVnYXRlOihpZClkZWxlZ2F0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJveHk6KGlkKXByb3h5OwotI2VuZGlmCi0KIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5oIGIvU291cmNlL1dlYktpdC9tYWMvTWlz
Yy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgKaW5kZXggYzgxMTIwMTI1ZDRkZmI2OTMxYWZlZDQxZWQx
MDAxOWJmMDdiZmRmNC4uYjUzMzM1NGMzNzEyYmYwNjc5ZjM5ODYzYmFlYjVlMTJlM2RiMzc0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgKQEAgLTcy
LDYgKzcyLDcgQEAKICNkZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9DU1NfQVRUUklC
VVRFX1NFVFRFUlNfSUdOT1JJTkdfUFJJT1JJVFkgMjIzOSAvLyBpT1MgNi4wCiAjZGVmaW5lIFdF
QktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfWU9VVFVCRV9FTUJFRF9JRlJBTUVfVFJBTlNGT1JNIDIy
MzkgLy8gaU9TIDYuMAogI2RlZmluZSBXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIT1VUX0xFR0FD
WV9CQUNLR1JPVU5EU0laRV9TSE9SVEhBTkRfQkVIQVZJT1IgMjY2NSAvLyBpT1MgNy4wCisjZGVm
aW5lIFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfTE9BRElOR19EVVJJTkdfQ09NTU9OX1JVTkxP
T1BfTU9ERVMgMjY2NSAvLyBpT1MgNy4wCiAjZGVmaW5lIFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJ
VEhfSU5TRUNVUkVfQ09OVEVOVF9CTE9DS0lORyAzNDU0CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9T
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGQyZWFmOTQzNTkzZDk5N2MwM2I3YjYwNzcxNmRiNTE4
MjVjOWNkYzguLjcyNTk5OGZiMjIyMTM5ZTcyODgwOTYwODhmOTA5ODE4YjcwYjg1NjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCkBAIC0zMDEsMTMgKzMwMSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciogZG9j
CiAKICAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gbWFpblJlc291cmNlTG9hZGVyLT5oYW5k
bGUoKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQVNTRVJUKFtXZWJEb3dubG9hZCByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0
aW9uOnJlcXVlc3Q6cmVzcG9uc2U6ZGVsZWdhdGU6cHJveHk6KV0pOwotICAgIGF1dG8gY29ubmVj
dGlvbiA9IGhhbmRsZS0+cmVsZWFzZUNvbm5lY3Rpb25Gb3JEb3dubG9hZCgpOwotICAgIFtXZWJE
b3dubG9hZCBfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjpjb25uZWN0aW9uLmdl
dCgpIHJlcXVlc3Q6cmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpIHJlc3BvbnNl
OnJlc3BvbnNlLmNmVVJMUmVzcG9uc2UoKSBkZWxlZ2F0ZTpbd2ViVmlldyBkb3dubG9hZERlbGVn
YXRlXSBwcm94eTpuaWxdOwotI2Vsc2UKICAgICBbV2ViRG93bmxvYWQgX2Rvd25sb2FkV2l0aExv
YWRpbmdDb25uZWN0aW9uOmhhbmRsZS0+Y29ubmVjdGlvbigpIHJlcXVlc3Q6cmVxdWVzdC5uc1VS
TFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpIHJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2Uo
KSBkZWxlZ2F0ZTpbd2ViVmlldyBkb3dubG9hZERlbGVnYXRlXSBwcm94eTpuaWxdOwotI2VuZGlm
CiB9CiAKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNl
RnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGludCBsZW5n
dGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0
ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0
ZW1JbnRlcmZhY2UubW0KaW5kZXggMTRjMWJjNmM2YjYxZWU1YzZjYzg0NjYxNWM0ODlkM2FkNGU0
YzEzMi4uNGQyYjhlOTIzZDMzODVhMTY1N2RlOTY1MzZkYTllYmRjMGM4ZjBmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFj
ZS5tbQpAQCAtMTE3LDEzICsxMTcsNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
KHZvaWQpCiAgICAgSU5JVChDdXJzb3IpOwogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
ICAgIElOSVQoR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKTsKLSAgICBJTklUKENvcHlDcmVk
ZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UpOwotICAgIElOSVQoU2V0Q0ZVUkxSZXF1ZXN0
U2hvdWxkQ29udGVudFNuaWZmKTsKLSAgICBJTklUKFNldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbik7
Ci0jZW5kaWYKLQogI2lmICFQTEFURk9STShJT1MpCiAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNH
ZXRWb2ljZUlkZW50aWZpZXJzKTsKICAgICBJTklUKFNwZWVjaFN5bnRoZXNpc0dldERlZmF1bHRW
b2ljZUlkZW50aWZpZXJGb3JMb2NhbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZXMubW0KaW5kZXggMDEwZmE4Yjc3NzI5ZDBjNGVhZTZiNDlmOTMxZGUwNDkyNmQz
Y2IyNy4uNDI4YWZiNzNiNjcxYjQ0NjYwNjZhOThjNWM0OThmOGIzMDhiOWIzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCkBAIC0xNzY2LDcgKzE3NjYs
NyBAQCArICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uCiArICh2b2lkKV9zZXRDdXJy
ZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSlwb2xpY3kKIHsKICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJl
Zj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8g
V2lsbCBmYWlsIHdoZW4gYnVpbGRpbmcgd2l0aG91dCBVU0UoQ0ZORVRXT1JLKSBhbmQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkgd2FzIG5vdCBjYWxs
ZWQgYmVmb3JlaGFuZC4KKyAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7IC8vIFdpbGwgZmFpbCB3
aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpIHdh
cyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCiAgICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQppbmRleCBjZGEzZjU4OGU4NmI2NmM0YzRmZmVkNjYzOTEzOGY4NDZkZDgzMTli
Li5jOWI1Y2FkZGMyZTdkZDY0YWYzZDJhZWU2M2FhNjcwYjA1NzVjZmRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xMDI4LDEyICsxMDI4LDEzIEBAIC0gKHZvaWQpX2Nv
bW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3Jv
dXBOYW1lOihOU1N0CiAKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIE5TUnVuTG9vcCAqcnVuTG9v
cCA9IFtOU1J1bkxvb3AgbWFpblJ1bkxvb3BdOwotCisjZWxzZQorICAgIE5TUnVuTG9vcCAqcnVu
TG9vcCA9IFdlYlRocmVhZE5TUnVuTG9vcCgpOworI2VuZGlmCiAgICAgaWYgKFdlYktpdExpbmtl
ZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0xPQURJTkdfRFVSSU5HX0NPTU1P
Tl9SVU5MT09QX01PREVTKSkKICAgICAgICAgW3NlbGYgc2NoZWR1bGVJblJ1bkxvb3A6cnVuTG9v
cCBmb3JNb2RlOihOU1N0cmluZyAqKWtDRlJ1bkxvb3BDb21tb25Nb2Rlc107CiAgICAgZWxzZQog
ICAgICAgICBbc2VsZiBzY2hlZHVsZUluUnVuTG9vcDpydW5Mb29wIGZvck1vZGU6TlNEZWZhdWx0
UnVuTG9vcE1vZGVdOwotI2VuZGlmCiAKICAgICBbc2VsZiBfYWRkVG9BbGxXZWJWaWV3c1NldF07
CiAgICAgCkBAIC02NjE4LDI5ICs2NjE5LDE5IEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdl
YlZpZXcgKFdlYlBlbmRpbmdQdWJsaWMpCiAKLSNpZiAhUExBVEZPUk0oSU9TKQogLSAodm9pZClz
Y2hlZHVsZUluUnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAq
KW1vZGUKIHsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGUnVuTG9vcFJlZiBzY2hlZHVsZVBh
aXJSdW5Mb29wID0gW3J1bkxvb3AgZ2V0Q0ZSdW5Mb29wXTsKLSNlbHNlCiAgICAgTlNSdW5Mb29w
ICpzY2hlZHVsZVBhaXJSdW5Mb29wID0gcnVuTG9vcDsKLSNlbmRpZgogICAgIGlmIChydW5Mb29w
ICYmIG1vZGUpCiAgICAgICAgIGNvcmUoc2VsZiktPmFkZFNjaGVkdWxlUGFpcihTY2hlZHVsZVBh
aXI6OmNyZWF0ZShzY2hlZHVsZVBhaXJSdW5Mb29wLCAoQ0ZTdHJpbmdSZWYpbW9kZSkpOwogfQog
CiAtICh2b2lkKXVuc2NoZWR1bGVGcm9tUnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JN
b2RlOihOU1N0cmluZyAqKW1vZGUKIHsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGUnVuTG9v
cFJlZiBzY2hlZHVsZVBhaXJSdW5Mb29wID0gW3J1bkxvb3AgZ2V0Q0ZSdW5Mb29wXTsKLSNlbHNl
CiAgICAgTlNSdW5Mb29wICpzY2hlZHVsZVBhaXJSdW5Mb29wID0gcnVuTG9vcDsKLSNlbmRpZgog
ICAgIGlmIChydW5Mb29wICYmIG1vZGUpCiAgICAgICAgIGNvcmUoc2VsZiktPnJlbW92ZVNjaGVk
dWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShzY2hlZHVsZVBhaXJSdW5Mb29wLCAoQ0ZTdHJp
bmdSZWYpbW9kZSkpOwogfQotI2VuZGlmCiAKIHN0YXRpYyBCT09MIGZpbmRTdHJpbmcoTlNWaWV3
IDxXZWJEb2N1bWVudFNlYXJjaGluZz4gKnNlYXJjaFZpZXcsIE5TU3RyaW5nICpzdHJpbmcsIFdl
YkZpbmRPcHRpb25zIG9wdGlvbnMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdQcml2YXRlLmgKaW5kZXggNzk2YzBmNDJhNzY5OWYxODZmMGU0YzAzN2QxMTQ2N2M0NmIxMDI5
NC4uZjQzMDQ5OTY0NWQ3Zjk1MDA3YzFjYmEwZTljZmFjMDE5OGNmM2MwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaApAQCAtMTk4LDEwICsxOTgsOCBAQCB0
eXBlZGVmIGVudW0gewogCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlBlbmRpbmdQdWJsaWMpCiAK
LSNpZiAhVEFSR0VUX09TX0lQSE9ORQogLSAodm9pZClzY2hlZHVsZUluUnVuTG9vcDooTlNSdW5M
b29wICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGU7CiAtICh2b2lkKXVuc2NoZWR1
bGVGcm9tUnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKW1v
ZGU7Ci0jZW5kaWYKIAogLSAoQk9PTClmaW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBvcHRp
b25zOihXZWJGaW5kT3B0aW9ucylvcHRpb25zOwogLSAoRE9NUmFuZ2UgKilET01SYW5nZU9mU3Ry
aW5nOihOU1N0cmluZyAqKXN0cmluZyByZWxhdGl2ZVRvOihET01SYW5nZSAqKXByZXZpb3VzUmFu
Z2Ugb3B0aW9uczooV2ViRmluZE9wdGlvbnMpb3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCmluZGV4IDgwNWZhMjdkNTYwMWJkZmZhMWZiZTRiOGVm
ZmIzZWM0NWFjYWQxN2IuLjI3ZWYzYmQwMDM3YTc2YTAxMTY4ODFjYjM4ZTE0MWJkZmNiODk3YTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgK
KysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaApAQCAtOTQs
MTIgKzk0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgQ0ZBcnJheVJlZikgb3ZlcnJpZGU7CiAjZW5kaWYK
ICNpZiBQTEFURk9STShDT0NPQSkKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwgdm9p
ZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7Ci0jZWxzZQogICAgIHZpcnR1YWwgdm9pZCB3aWxs
Q2FjaGVSZXNwb25zZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxS
ZXNwb25zZSAqKSBvdmVycmlkZTsKICNlbmRpZgotI2VuZGlmCiAjZW5kaWYgLy8gVVNFKE5FVFdP
UktfU0VTU0lPTikKIAogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5k
ZXggZGI3MGViMDcyZmFmZTZiOGQ4OWEwYzllNjlhN2IwMzFhMjNlNDQ1My4uZjcyNzFlNzM3ZTFk
NmJiNDQ2OWViZGExZWNhZjQzMmE1ZWE0OWM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1lCiAKICAgICBzZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZh
bHVhdGlvbihwYXJhbWV0ZXJzLmNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKTsK
IAotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2UocGFyYW1ldGVycy51aVBy
b2Nlc3NCdW5kbGVJZGVudGlmaWVyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0KaW5kZXggZjNjNmVjYmJiMDFh
MTYwMjlmOGRlY2Y5YzRjMWMzOGEwMjdhYzA3OS4uM2Q2MjVjOGUyNmJmZjdkZTQ4YmY3YTVmMWYw
NDA5OGI4OGM2ZmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
bWFjL05ldHdvcmtMb2FkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrTG9hZE1hYy5tbQpAQCAtMzQsMTggKzM0LDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi0jaWYgVVNFKENGTkVUV09SSykKLQot
dm9pZCBOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCi17Ci0gICAgQVNTRVJU
X1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0KLSAgICBtX2NsaWVudC53aWxs
Q2FjaGVSZXNwb25zZUFzeW5jKGNmUmVzcG9uc2UpOwotCi0gICAgbV9oYW5kbGUtPmNvbnRpbnVl
V2lsbENhY2hlUmVzcG9uc2UoY2ZSZXNwb25zZSk7Ci19Ci0KLSNlbGlmICFVU0UoTkVUV09SS19T
RVNTSU9OKQorI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogCiB2b2lkIE5ldHdvcmtMb2FkOjp3
aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIE5TQ2FjaGVkVVJM
UmVzcG9uc2UgKm5zUmVzcG9uc2UpCiB7CkBAIC01Niw2ICs0NSw2IEBAIHZvaWQgTmV0d29ya0xv
YWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgTlNDYWNo
ZWRVUkxSZXNwCiAgICAgbV9oYW5kbGUtPmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UobnNSZXNw
b25zZSk7CiB9CiAKLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyAhVVNFKE5F
VFdPUktfU0VTU0lPTikKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgKaW5kZXggNzEzNzQ5OGJmMzJlYzMzOTJjMGNkODZk
OThmZTVlMDRmYjFjYjk5YS4uZWU0ZDgyZTNjMGUyZWU5OTc4NzRlZWQ0ZDM2MWQ4MTM4OTRlYmJh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaApAQCAtNDgs
MTAgKzQ4LDYgQEAgT0JKQ19DTEFTUyBXS0Rvd25sb2FkQXNEZWxlZ2F0ZTsKICNpbmNsdWRlIDxt
ZW1vcnk+CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW5jbHVkZSA8Q0ZOZXR3b3Jr
L0NGVVJMRG93bmxvYWRQcml2Lmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIElQQyB7CiAgICAgY2xh
c3MgRGF0YVJlZmVyZW5jZTsKIH0KQEAgLTk4LDEwICs5NCw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgcmVzdW1lRGF0YSk7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiByZXN1bWVEYXRhKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgRG93bmxv
YWRBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQoKTsKLSNlbmRpZgot
CiAgICAgLy8gQXV0aGVudGljYXRpb24KICAgICBzdGF0aWMgdm9pZCByZWNlaXZlZENyZWRlbnRp
YWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBXZWJDb3Jl
OjpDcmVkZW50aWFsJik7CiAgICAgc3RhdGljIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51
ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Jik7CkBAIC0xMzQsMTAgKzEyNiw2IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdLRG93bmxv
YWRBc0RlbGVnYXRlPiBtX2RlbGVnYXRlOwogI2VuZGlmCiAjZW5kaWYKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotICAgIFJldGFpblB0cjxDRlVSTERvd25sb2FkUmVmPiBtX2Rvd25sb2FkOwotICAgIFJl
ZlB0cjxEb3dubG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50PiBtX2F1dGhlbnRpY2F0aW9uQ2xpZW50
OwotI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50
OwogICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZT4gbV9yZXNvdXJjZUhhbmRsZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvaW9zL0Rvd25sb2Fk
SU9TLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1Mu
bW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4ZjQyMjA5ZDI3OWZmYTU0NmRhN2E5
MWFhNTg5ZWQ0MTQ1MDExZGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1Mu
bW0KKysrIC9kZXYvbnVsbApAQCAtMSwxOTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQg
ImNvbmZpZy5oIgotI2ltcG9ydCAiRG93bmxvYWQuaCIKLQotI2lmIFBMQVRGT1JNKElPUykKLQot
I2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgotI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1Jlc291cmNlSGFuZGxlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4K
LSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+Ci0KLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWQuaD4KLSNl
bmRpZgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LSNpZiBVU0UoQ0ZORVRXT1JLKQotLy8gRklYTUU6IElmIHBvc3NpYmxlLCB3ZSBzaG91bGQgY29u
c2lkZXIgbW92aW5nIHNvbWUgY2FsbGJhY2tzIG9mZiB0aGUgbWFpbiB0aHJlYWQgb3IgYXQgbGVh
c3QKLS8vIG1ha2luZyB0aGVtIGFzeW5jaG9ub3VzIGNhbGxzLgotc3RhdGljIHZvaWQgZGlzcGF0
Y2hPbk1haW5UaHJlYWQodm9pZCheYmxvY2spKCkpCi17Ci0gICAgaWYgKFJ1bkxvb3A6OmlzTWFp
bigpKSB7Ci0gICAgICAgIGJsb2NrKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBk
aXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGJsb2NrKTsKLX0KLQotc3Rh
dGljIGlubGluZSBEb3dubG9hZCogdG9Eb3dubG9hZChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQot
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb3dubG9hZCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNs
aWVudEluZm8pKTsKLX0KLQotc3RhdGljIHZvaWQgc2V0VXBEb3dubG9hZENsaWVudChDRlVSTERv
d25sb2FkQ2xpZW50JiBjbGllbnQsIERvd25sb2FkJiBkb3dubG9hZCkKLXsKLSAgICBtZW1zZXQo
JmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOwotICAgIGNsaWVudC5jbGllbnRJbmZvID0gJmRv
d25sb2FkOwotCi0gICAgY2xpZW50LmRpZFN0YXJ0ID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewot
ICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlkU3RhcnQoKTsKLSAgICAgICAg
fSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC53aWxsU2VuZFJlcXVlc3QgPSBbXShDRlVSTERvd25s
b2FkUmVmLCBDRlVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgQ0ZVUkxSZXNwb25zZVJlZiwgY29uc3Qg
dm9pZCopIC0+IENGVVJMUmVxdWVzdFJlZiB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxD
RlVSTFJlcXVlc3RSZWY+KENGUmV0YWluKHJlcXVlc3QpKTsKLSAgICB9OwotCi0gICAgY2xpZW50
LmRpZFJlY2VpdmVSZXNwb25zZSA9IFtdKENGVVJMRG93bmxvYWRSZWYsIENGVVJMUmVzcG9uc2VS
ZWYgcmVzcG9uc2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hP
bk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFJl
Y2VpdmVSZXNwb25zZShyZXNwb25zZSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGll
bnQuZGlkUmVjZWl2ZURhdGEgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRkluZGV4IGxlbmd0aCwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZChe
ewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlkUmVjZWl2ZURhdGEobGVu
Z3RoKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC5zaG91bGREZWNvZGVEYXRh
T2ZNSU1FVHlwZSA9IFtdKENGVVJMRG93bmxvYWRSZWYsIENGU3RyaW5nUmVmIGVuY29kaW5nVHlw
ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgLT4gQm9vbGVhbiB7Ci0gICAgICAgIF9fYmxvY2sg
Qk9PTCByZXR1cm5WYWx1ZSA9IE5POwotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewot
ICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5zaG91bGRE
ZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShlbmNvZGluZ1R5cGUpOwotICAgICAgICB9KTsKLSAg
ICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkT2JqZWN0TmFtZSA9IFtdKENGVVJMRG93bmxvYWRSZWYgZG93
bmxvYWRSZWYsIENGU3RyaW5nUmVmIG9iamVjdE5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
IHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIGJvb2wgYWxs
b3dPdmVyd3JpdGU7Ci0gICAgICAgICAgICBTdHJpbmcgZGVzdGluYXRpb24gPSB0b0Rvd25sb2Fk
KGNsaWVudEluZm8pLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShvYmpl
Y3ROYW1lLCBhbGxvd092ZXJ3cml0ZSk7Ci0gICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlz
TnVsbCgpKQotICAgICAgICAgICAgICAgIENGVVJMRG93bmxvYWRTZXREZXN0aW5hdGlvbihkb3du
bG9hZFJlZiwgcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlZj4oW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpkZXN0aW5hdGlvbl0pLCBhbGxvd092ZXJ3cml0ZSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0K
LSAgICBjbGllbnQuZGlkQ3JlYXRlRGVzdGluYXRpb24gPSBbXShDRlVSTERvd25sb2FkUmVmLCBD
RlVSTFJlZiBwYXRoLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNo
T25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRD
cmVhdGVEZXN0aW5hdGlvbihDRlVSTEdldFN0cmluZyhwYXRoKSk7Ci0gICAgICAgIH0pOwotICAg
IH07Ci0KLSAgICBjbGllbnQuZGlkRmluaXNoID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAg
ICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlkRmluaXNoKCk7Ci0gICAgICAgIH0p
OwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkRmFpbCA9IFtdKENGVVJMRG93bmxvYWRSZWYgZG93
bmxvYWRSZWYsIENGRXJyb3JSZWYgZXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAg
ICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIGF1dG8gcmVzdW1lRGF0
YSA9IGFkb3B0Q0YoQ0ZVUkxEb3dubG9hZENvcHlSZXN1bWVEYXRhKGRvd25sb2FkUmVmKSk7Ci0g
ICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRGYWlsKGVycm9yLCBJUEM6OkRh
dGFSZWZlcmVuY2UocmVzdW1lRGF0YSA/IENGRGF0YUdldEJ5dGVQdHIocmVzdW1lRGF0YS5nZXQo
KSkgOiBudWxscHRyLCByZXN1bWVEYXRhID8gQ0ZEYXRhR2V0TGVuZ3RoKHJlc3VtZURhdGEuZ2V0
KCkpIDogMCkpOwotICAgICAgICB9KTsKLSAgICB9OwotfQotI2VuZGlmIC8vIFVTRShDRk5FVFdP
UkspCi0KLXZvaWQgRG93bmxvYWQ6OnN0YXJ0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
fQotCi12b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJikKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpzdGFydFdpdGhIYW5kbGUoUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17Ci0j
aWYgVVNFKENGTkVUV09SSykKLSAgICBDRlVSTERvd25sb2FkQ2xpZW50IGNsaWVudDsKLSAgICBz
ZXRVcERvd25sb2FkQ2xpZW50KGNsaWVudCwgKnRoaXMpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQt
ZGVjbGFyYXRpb25zIgotICAgIG1fZG93bmxvYWQgPSBhZG9wdENGKENGVVJMRG93bmxvYWRDcmVh
dGVBbmRTdGFydFdpdGhMb2FkaW5nQ29ubmVjdGlvbihOVUxMLCBoYW5kbGUtPnJlbGVhc2VDb25u
ZWN0aW9uRm9yRG93bmxvYWQoKS5nZXQoKSwgbV9yZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVI
VFRQQm9keSksIHJlc3BvbnNlLmNmVVJMUmVzcG9uc2UoKSwgJmNsaWVudCkpOwotI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHBvcAotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlm
Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OmNhbmNlbCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCgpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRDcmVkZW50
aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRSZXF1
ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZWNl
aXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRSZXF1ZXN0VG9Q
ZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZWNl
aXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCmluZGV4IDAwNTgzYzY5ZGEwZTQ1NjJm
OWY5NjZiODVjZTJkNTcxZjAwNmZlN2MuLjNiZmY1MjVlZjFmZmRiZWQ5ZTM5ODY4ZTIzODE0OWJj
ODIxZDQwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvbWFj
L0Rvd25sb2FkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvbWFj
L0Rvd25sb2FkTWFjLm1tCkBAIC0yNiw4ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgIkRvd25sb2FkLmgiCiAKLSNpZiBQTEFURk9STShNQUMpICYmICFVU0UoTkVUV09SS19T
RVNTSU9OKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKE5FVFdPUktfU0VTU0lPTikKIAor
I2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTERvd25sb2FkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9u
TWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5k
ZXggNmFmMzE3ZWRjY2NiM2YzNzhlZDg5NDkxYzRhZGY3YjZjZWIxYmJlOS4uZWQwNWZmNjI1YmIy
OTBiYjlmZjhlMzI3OGIwMmFkZmNjZDViMDU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTA1LDcgKzEw
NSw3IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6QXJn
dW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgdGV4dENoZWNrZXJT
dGF0ZTsKICAgICBlbmNvZGVyIDw8IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7CiAgICAgZW5j
b2RlciA8PCBkZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbDsKLSNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBlbmNvZGVyIDw8
IHVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXI7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkK
QEAgLTIzMCw3ICsyMzAsNyBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvYwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRlZmF1bHRSZXF1
ZXN0VGltZW91dEludGVydmFsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCAyZjgwYzYzZDc4MzU0OTA5
ZWVhZDUyZTY4YjRmODI5YzFjMTc5NTYyLi4wMzM1MDExMDJjNGFmZDhlNDQ2YWZmNzdhMDFjNDA3
MDVkNDZkOGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdHJ1Y3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBkb3VibGUgZGVmYXVsdFJlcXVlc3RUaW1lb3V0
SW50ZXJ2YWw7CiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBTdHJpbmcgdWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcjsKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1
bWVudENvZGVyc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzTWFjLm1tCmluZGV4IGRmZmIzZTA2M2Q1NmFkYTE3ZDVjZDU0Y2ZlMTVlMDMwOThj
NWFlMTUuLmQwZDRjNzA4NTFkZTk5OGFiOWVkMjliNWU4MDkxMWY5MmZkYzZiMzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFj
Lm1tCkBAIC0zOSwxMCArMzksNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCi0jaWYgVVNFKENGTkVUV09S
SykKLSNpbXBvcnQgPENGTmV0d29yay9DRlVSTFJlcXVlc3QuaD4KLSNlbmRpZgotCiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICNpbXBvcnQgPFdlYkNvcmUvQVZGb3VuZGF0
aW9uU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+
CkBAIC01NywzNiArNTMsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IElQQyB7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNl
UmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQotewotICAgIFJldGFpblB0cjxD
RlVSTFJlcXVlc3RSZWY+IHJlcXVlc3RUb1NlcmlhbGl6ZSA9IHJlc291cmNlUmVxdWVzdC5jZlVS
TFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSk7Ci0KLSAgICBib29sIHJlcXVlc3RJc1ByZXNl
bnQgPSByZXF1ZXN0VG9TZXJpYWxpemU7Ci0gICAgZW5jb2RlciA8PCByZXF1ZXN0SXNQcmVzZW50
OwotCi0gICAgaWYgKCFyZXF1ZXN0SXNQcmVzZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICAv
LyBXZSBkb24ndCBzZW5kIEhUVFAgYm9keSBvdmVyIElQQyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNl
LgotICAgIC8vIEFsc28sIGl0J3Mgbm90IGFsd2F5cyBwb3NzaWJsZSB0byBkbywgYXMgc3RyZWFt
cyBjYW4gb25seSBiZSBjcmVhdGVkIGluIHByb2Nlc3MgdGhhdCBkb2VzIG5ldHdvcmtpbmcuCi0g
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcmVxdWVzdEhUVFBCb2R5ID0gYWRvcHRDRihDRlVSTFJl
cXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5KHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSkpOwotICAg
IFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IHJlcXVlc3RIVFRQQm9keVN0cmVhbSA9IGFkb3B0
Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keVN0cmVhbShyZXF1ZXN0VG9TZXJpYWxp
emUuZ2V0KCkpKTsKLSAgICBpZiAocmVxdWVzdEhUVFBCb2R5IHx8IHJlcXVlc3RIVFRQQm9keVN0
cmVhbSkgewotICAgICAgICBDRk11dGFibGVVUkxSZXF1ZXN0UmVmIG11dGFibGVSZXF1ZXN0ID0g
Q0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgcmVxdWVzdFRvU2VyaWFsaXplLmdldCgp
KTsKLSAgICAgICAgcmVxdWVzdFRvU2VyaWFsaXplID0gYWRvcHRDRihtdXRhYmxlUmVxdWVzdCk7
Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9keShtdXRhYmxlUmVxdWVzdCwg
bmlsKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RCb2R5U3RyZWFtKG11dGFi
bGVSZXF1ZXN0LCBuaWwpOwotICAgIH0KLQotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IGRpY3Rpb25hcnkgPSBhZG9wdENGKFdLQ0ZVUkxSZXF1ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVw
cmVzZW50YXRpb24ocmVxdWVzdFRvU2VyaWFsaXplLmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVS
ZWYoKSkpOwotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIGRpY3Rpb25hcnkuZ2V0KCkpOwotCi0g
ICAgLy8gVGhlIGZhbGxiYWNrIGFycmF5IGlzIHBhcnQgb2YgQ0ZVUkxSZXF1ZXN0LCBidXQgaXQg
aXMgbm90IGVuY29kZWQgYnkgV0tDRlVSTFJlcXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNl
bnRhdGlvbi4KLSAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5yZXNwb25zZUNvbnRlbnRE
aXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSgpOwotICAgIGVuY29kZXIuZW5jb2RlRW51
bShyZXNvdXJjZVJlcXVlc3QucmVxdWVzdGVyKCkpOwotfQotI2Vsc2UKIHZvaWQgQXJndW1lbnRD
b2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKICAg
ICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiByZXF1ZXN0VG9TZXJpYWxpemUgPSByZXNvdXJjZVJl
cXVlc3QubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpOwpAQCAtMTEyLDcgKzc4LDYg
QEAgdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0
YShBcmd1bWVudEVuY29kZXImIGVuY29kZXIKICAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVz
dC5yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSgpOwogICAg
IGVuY29kZXIuZW5jb2RlRW51bShyZXNvdXJjZVJlcXVlc3QucmVxdWVzdGVyKCkpOwogfQotI2Vu
ZGlmCiAKIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9y
bURhdGEoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCkKIHsKQEAgLTEyOSwyMCArOTQsMTIgQEAgYm9vbCBBcmd1bWVudENvZGVyPFJlc291
cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXImIGRlY29kZXIK
ICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRpY3Rpb25hcnkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIFJldGFpblB0cjxDRlVSTFJlcXVl
c3RSZWY+IGNmVVJMUmVxdWVzdCA9IGFkb3B0Q0YoV0tDcmVhdGVDRlVSTFJlcXVlc3RGcm9tU2Vy
aWFsaXphYmxlUmVwcmVzZW50YXRpb24oZGljdGlvbmFyeS5nZXQoKSwgSVBDOjp0b2tlbk51bGxU
eXBlUmVmKCkpKTsKLSAgICBpZiAoIWNmVVJMUmVxdWVzdCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgcmVzb3VyY2VSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KGNmVVJMUmVxdWVzdC5n
ZXQoKSk7Ci0jZWxzZQogICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5zVVJMUmVxdWVzdCA9
IFdLTlNVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnku
Z2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKTsKICAgICBpZiAoIW5zVVJMUmVxdWVzdCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmVzb3VyY2VSZXF1ZXN0ID0gUmVzb3VyY2VS
ZXF1ZXN0KG5zVVJMUmVxdWVzdC5nZXQoKSk7Ci0jZW5kaWYKLSAgICAKKwogICAgIFZlY3RvcjxT
dHJpbmc+IHJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGlu
Z0ZhbGxiYWNrQXJyYXkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzYyOWM3N2EwY2Q5
YjMwYmU2MmUxMzk0Y2I4ZTMxMzg5MWFiZjIwMC4uNDIzMGUxNThmNDQxMDEyZDk2YmY5ZjRiY2I5
ZjdkMTlhYTJiNDg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNjcyLDcgKzY3Miw2IEBACiAJCTJEQTk0NEEyMTg4NEU0RjAw
MEVEODZEQiAvKiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0OUIxODg0RTRGMDAwRUQ4NkRCIC8q
IFdlYlBsYXRmb3JtVG91Y2hQb2ludElPUy5jcHAgKi87IH07CiAJCTJEQTk0NEEzMTg4NEU0RjAw
MEVEODZEQiAvKiBXZWJUb3VjaEV2ZW50SU9TLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NDlDMTg4NEU0RjAwMEVEODZEQiAvKiBXZWJUb3Vj
aEV2ZW50SU9TLmNwcCAqLzsgfTsKIAkJMkRBOTQ0QTQxODg0RTRGMDAwRUQ4NkRCIC8qIEdlc3R1
cmVUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkRBOTQ0OUQxODg0RTRGMDAwRUQ4NkRCIC8qIEdlc3R1cmVUeXBlcy5oICovOyB9OwotCQkyREE5
NDRBNzE4ODRFOTQ4MDBFRDg2REIgLyogRG93bmxvYWRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDRBNjE4ODRFOTQ4MDBFRDg2REIgLyog
RG93bmxvYWRJT1MubW0gKi87IH07CiAJCTJEQTk0NEFEMTg4NEU5QkEwMEVEODZEQiAvKiBUZXh0
Q2hlY2tlcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEQTk0NEE5MTg4NEU5QkEwMEVEODZEQiAvKiBUZXh0Q2hlY2tlcklPUy5tbSAqLzsgfTsK
IAkJMkRBOTQ0QUYxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlBhZ2VQcm94eUlPUy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEFCMTg4NEU5QkEw
MEVEODZEQiAvKiBXZWJQYWdlUHJveHlJT1MubW0gKi87IH07CiAJCTJEQTk0NEIwMTg4NEU5QkEw
MEVEODZEQiAvKiBXZWJQcm9jZXNzUHJveHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDRBQzE4ODRFOUJBMDBFRDg2REIgLyogV2ViUHJv
Y2Vzc1Byb3h5SU9TLm1tICovOyB9OwpAQCAtMjgzMiw3ICsyODMxLDYgQEAKIAkJMkRBOTQ0OUIx
ODg0RTRGMDAwRUQ4NkRCIC8qIFdlYlBsYXRmb3JtVG91Y2hQb2ludElPUy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1MuY3Bw
OyBwYXRoID0gaW9zL1dlYlBsYXRmb3JtVG91Y2hQb2ludElPUy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJEQTk0NDlDMTg4NEU0RjAwMEVEODZEQiAvKiBXZWJUb3VjaEV2ZW50
SU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlRvdWNoRXZl
bnRJT1MuY3BwOyBwYXRoID0gaW9zL1dlYlRvdWNoRXZlbnRJT1MuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyREE5NDQ5RDE4ODRFNEYwMDBFRDg2REIgLyogR2VzdHVyZVR5cGVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdlc3R1cmVUeXBlcy5oOyBwYXRo
ID0gaW9zL0dlc3R1cmVUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyREE5
NDRBNjE4ODRFOTQ4MDBFRDg2REIgLyogRG93bmxvYWRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEb3dubG9hZElPUy5tbTsgcGF0aCA9IERvd25sb2Fkcy9p
b3MvRG93bmxvYWRJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQTk0NEE5
MTg4NEU5QkEwMEVEODZEQiAvKiBUZXh0Q2hlY2tlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRleHRDaGVja2VySU9TLm1tOyBwYXRoID0gaW9zL1RleHRD
aGVja2VySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREE5NDRBQjE4ODRF
OUJBMDBFRDg2REIgLyogV2ViUGFnZVByb3h5SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gV2ViUGFnZVByb3h5SU9TLm1tOyBwYXRoID0gaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0QUMxODg0RTlC
QTAwRUQ4NkRCIC8qIFdlYlByb2Nlc3NQcm94eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFdlYlByb2Nlc3NQcm94eUlPUy5tbTsgcGF0aCA9IGlvcy9XZWJQ
cm9jZXNzUHJveHlJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTQ2LDcg
KzUxNDQsNiBAQAogCQkyREE5NDRBNTE4ODRFOTNDMDBFRDg2REIgLyogaW9zICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkyREE5NDRBNjE4ODRFOTQ4MDBF
RDg2REIgLyogRG93bmxvYWRJT1MubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9IGlvczsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC05NTA1LDcgKzk1MDIsNiBAQAogCQkJCTUxOEU4RjA3
MTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MThF
OEYwOTE2QjIwOTM3MDBFOTE0MjkgLyogRG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBMURGNjMxMjE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRD
bGllbnQubW0gaW4gU291cmNlcyAqLywKLQkJCQkyREE5NDRBNzE4ODRFOTQ4MDBFRDg2REIgLyog
RG93bmxvYWRJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MThFOEYwRDE2QjIwOTM3MDBFOTE0
MjkgLyogRG93bmxvYWRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MThFOEYwQjE2QjIwOTM3
MDBFOTE0MjkgLyogRG93bmxvYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdE
NENCMTI4OEFBQTcwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5LmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA5Njk3NmFkOTE4NWM3ZGM0YjNiMzM2M2FlMmQyZjNm
N2Y2ODJlMzA2Li4xNjI4ZTBlZTY2ZDkwNWQ3ZmM2YzEzNzJiYjVkODU1YmJkOTYzMWFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGU6OnNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoV2ViUGFnZUdyb3VwUHJveHkqIHBh
Z2VHcm91CiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKFdl
YlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIGJvb2wgZW5hYmxlZCkKIHsKICAgICAvLyBGSVhN
RSAoTmV0d29ya1Byb2Nlc3MpOiBUaGlzIHRlc3Qtb25seSBmdW5jdGlvbiBkb2Vzbid0IHdvcmsg
d2l0aCBOZXR3b3JrUHJvY2VzcywgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTUyNzQ+LgotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBV
U0UoU09VUCkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVApCiAgICAgaWYgKGVuYWJs
ZWQpCiAgICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwogICAgIGVs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCAwM2YyODgyMzAyMTEz
NmZlMDhkZDJmNzNjNTRhYmIzNWYzM2I4ZThmLi5jNzE4NWJmZTUyNDg1ZDk5MWJkMDJiYmUxNzc1
YTg4YjgzZWU5MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC0x
MjEsMTMgKzEyMSw2IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAg
ICAgICAgSU5JVChXaW5kb3dTZXRBbHBoYSk7CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAot
I2lmIFVTRShDRk5FVFdPUkspCi0gICAgICAgIElOSVQoR2V0RGVmYXVsdEhUVFBDb29raWVTdG9y
YWdlKTsKLSAgICAgICAgSU5JVChDb3B5Q3JlZGVudGlhbEZyb21DRlBlcnNpc3RlbnRTdG9yYWdl
KTsKLSAgICAgICAgSU5JVChTZXRDRlVSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYpOwotICAg
ICAgICBJTklUKFNldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbik7Ci0jZW5kaWYKLQogI2lmICFQTEFU
Rk9STShJT1MpCiAgICAgICAgIElOSVQoU3BlZWNoU3ludGhlc2lzR2V0Vm9pY2VJZGVudGlmaWVy
cyk7CiAgICAgICAgIElOSVQoU3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmll
ckZvckxvY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRl
eCAwM2M1MjQzN2EwMDI1YzQyMTdmMWQzNmE2ODI5MjI1MWI2NTI4NmY3Li5lMDMwODE2MTAyMTUy
Zjg5NjQwMzhlZjBmNzEzOTI3YWIzNzIxYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRp
YWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZUZvbnRTbW9vdGhpbmcpCiAgICAgICAgIHNl
dFNob3VsZFVzZUZvbnRTbW9vdGhpbmcodHJ1ZSk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwg
VVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBTZXNzaW9uVHJhY2tlcjo6
c2V0SWRlbnRpZmllckJhc2UocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKTsK
ICNlbmRpZgogCkBAIC00NTcsMTQgKzQ1NywxNCBAQCB2b2lkIFdlYlByb2Nlc3M6OmZ1bGxLZXli
b2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCkKIAog
dm9pZCBXZWJQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBz
ZXNzaW9uSUQpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVT
RShTT1VQKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKICAgICBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCk7
CiAjZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZORVRXT1JLKSB8fCBVU0UoU09VUCkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVAp
CiAgICAgU2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKHNlc3Npb25JRCk7CiAjZW5kaWYK
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267532</attachid>
            <date>2015-12-16 21:33:22 -0800</date>
            <delta_ts>2015-12-16 21:40:06 -0800</delta_ts>
            <desc>Patch to find build errors (iOS WK1 scheduling fixed; quickook tests fixed)</desc>
            <filename>bug-137936-20151216213243.patch</filename>
            <type>text/plain</type>
            <size>126686</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU5MjBjYzMwZDE0MzE3YzFmZDBkMGIx
YmM5YTVlM2M3OTFjODlhYWIuLmZkMTVmNGVhZGNiYjRmZGQxMTBmYWQxOTAyZmQ2ZGRmNTVhOTVk
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTItMTYgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgVVNFKENGTkVUV09SSykrUExBVEZPUk0o
Q09DT0EpIGNvZGUgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM3OTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxNS0xMi0xNCAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBNYXRoLnJhbmRvbSBzaG91bGQgaGF2
ZSBhbiBpbnRyaW5zaWMgdGh1bmsgYW5kIGl0IHNob3VsZCBiZSBsYXRlciBoYW5kbGVkIGFzIGEg
REZHIE5vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5MGM3MjVkNGNkN2UxODE5MDNiNTI0ZWQ3ZmMwYTk1Mzgx
YWVkNjhmLi42ZmFkZTYyYjkwZmIxMzI0MGZkMzIyN2ZkZmIwMzBkYmNmZDBiZmFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMwIEBACisyMDE1LTEyLTE2ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHpl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFVTRShDRk5FVFdPUkspK1BMQVRGT1JNKENP
Q09BKSBjb2RlIHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNzkzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIENvdmVyZWQgYnkgbW9zdCBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2NoZWR1bGVBbGwpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9t
YWMvUmVzb3VyY2VMb2FkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6d2lsbENhY2hlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uv
bWFjL1BhZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbGF0Zm9ybUluaXRpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkU2NoZWR1bGVQYWlyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbW92ZVNjaGVkdWxlUGFpcik6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp+TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb0xheWVyR3Jhdml0eSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1Mu
bW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRp
Y2F0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUNGKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUph
ckNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDb29raWVzRm9yVVJMV2l0aEZpcnN0
UGFydHlVUkwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29va2llcyk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNG
TmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVy
c2lzdGVudFN0b3JhZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VFcnJvci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6dHJ5SGFu
ZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNl
bGxhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVj
ZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OlJlc291cmNlUmVxdWVzdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmNhY2hlUGFydGl0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6c2V0Q2FjaGVQ
YXJ0aXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VSZXNwb25zZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6UmVzb3Vy
Y2VSZXNwb25zZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZVJlc3BvbnNlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZTo6Y2ZVUkxSZXNwb25zZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphZGRUb0hUVFBI
ZWFkZXJNYXApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6
cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRl
bnRpYWw6OmVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6dG9OU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDcmVkZW50aWFsOjpuc0NyZWRlbnRpYWwpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q3JlZGVudGlhbDo6aXNFbXB0eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5oOgorICAgICAgICAoV2ViQ29yZTo6
UHJvdGVjdGlvblNwYWNlOjplbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6dHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQ
cm90ZWN0aW9uU3BhY2U6Om5zU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6Om5zVVJMUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3Q6OmNmVVJMUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW06CisgICAgICAgICgtW1dlYlJlc291cmNl
TG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgZGV0YWNoSGFuZGxlXSk6CisgICAgICAgIChXZWJDb3Jl
OjpRdWlja0xvb2tIYW5kbGU6On5RdWlja0xvb2tIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6
UUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViUmVzb3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSBpbml0V2l0aFJlc291cmNlTG9hZGVy
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVn
YXRlIF9zZW5kRGlkUmVjZWl2ZVJlc3BvbnNlSWZOZWNlc3NhcnldKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV2ViUmVzb3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSBjb25uZWN0aW9uOmRpZFJl
Y2VpdmVEYXRhQXJyYXk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVy
UXVpY2tMb29rRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YTpsZW5ndGhSZWNlaXZl
ZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViUmVzb3VyY2VMb2FkZXJRdWlja0xvb2tEZWxl
Z2F0ZSBjb25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViUmVzb3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSBjb25uZWN0aW9uOmRpZEZhaWxXaXRo
RXJyb3I6XSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpRdWlja0xvb2tIYW5kbGU6OmRp
ZFJlY2VpdmVEYXRhQXJyYXkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
aW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9z
L1Jlc291cmNlUmVxdWVzdElPUy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6c2V0QXV0aGVudGljYXRpb25D
bGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6OmF1dGhlbnRpY2F0aW9uQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjb29raWVTdG9y
YWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFs
U3RvcmFnZU1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0
cmVhbU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFt
TWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVOU0Vycm9yRnJvbVJlc291cmNlRXJyb3JCYXNl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlJlc291cmNlRXJy
b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1M
YXp5SW5pdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpwbGF0
Zm9ybUNvbXBhcmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6
bnNFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpvcGVy
YXRvciBOU0Vycm9yICopOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlSGFuZGxlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0aW9uUXVldWVG
b3JBc3luY0NsaWVudHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGU6OnN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpt
YWtlRGVsZWdhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6
OmRlbGVnYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpn
ZXRDb25uZWN0aW9uVGltaW5nRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlOjpuc1VSTFJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAo
V2ViQ29yZTo6U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OnBsYXRmb3JtQmFkUmVzcG9uc2VFcnJv
cik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzRGVsZWdhdGUgZGV0YWNoSGFuZGxlXSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnN5bnRoZXNpemVS
ZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkpOiBEZWxldGVkLgorCiAyMDE1LTEyLTE1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZvbnQgRmVh
dHVyZXNdIFRydWVUeXBlIGZvbnRzIHRyaWdnZXIgcmVhbCBmZWF0dXJlcyBldmVuIHdoZW4gc3lu
dGhlc2lzIGlzIGFwcGxpZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAwYmI0ZDMxM2UzMDM5YmU5NmNi
ZGM1NzA2NTJhY2UzNTljZTU1ODdmLi5hODEwOTI3ZDBlYzMzYzhkYTgxMjQ4MWY3YTk1NWY5ZTEw
OTA4ZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTUtMTItMTYgIERh
dmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgVVNFKENG
TkVUV09SSykrUExBVEZPUk0oQ09DT0EpIGNvZGUgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3OTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dlYkRvd25sb2FkLm1tOgorICAgICAg
ICAqIE1pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oOgorICAgICAgICAqIE1pc2MvV2ViS2l0VmVy
c2lvbkNoZWNrcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3Vy
Y2VMb2FkVG9Eb3dubG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKElu
aXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dl
YlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfc2V0Q3VycmVudE5l
dHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5Ol0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25X
aXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzY2hlZHVsZUlu
UnVuTG9vcDpmb3JNb2RlOl0pOiBEZWxldGVkLgorICAgICAgICAoZmluZFN0cmluZyk6IERlbGV0
ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDE1LTEyLTEzICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IENH
SU9TdXJmYWNlQ29udGV4dENyZWF0ZUltYWdlUmVmZXJlbmNlIHRvIGF2b2lkIHVubmVjZXNzYXJ5
IHJlYWRiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDM5MmIwMTc1YTE1NzVjZGM2MmVlNTg2MDIzZjg2MzVl
NWE3YmEzOS4uZWJlOTA4ZWY2Zjk1ZWVlNWRjMzA3ZDk4ZGYxZTlkOGVjNWE3MzI1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTEyLTE2ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHpl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFVTRShDRk5FVFdPUkspK1BMQVRGT1JNKENP
Q09BKSBjb2RlIHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNzkzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrTG9hZE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Ondp
bGxDYWNoZVJlc3BvbnNlQXN5bmMpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9Eb3dubG9h
ZHMvRG93bmxvYWQuaDoKKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElP
Uy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1h
Yy5tbToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6
CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAg
ICAgKiBTaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRm
b3JtRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q2VydGlmaWNh
dGVJbmZvPjo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRQcml2
YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUlu
dGVyZmFjZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Np
b24pOgorCiAyMDE1LTEyLTE1ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBHdWFyZCBjb2RlIHRoYXQgdXNlcyBjbGFzcyBMYXllclRyZWVIb3N0IHdpdGggVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKSBvciBVU0UoVEVYVFVSRV9NQVBQRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApp
bmRleCBhNzBjNzQ2ZThlOGQ0NjYzMDk2ZjIyYWVkMzlmOTZmOTU1OTBhYWU2Li44OWRhYmY5ZThk
ZDQ4OGVhYzAwMTRmYjE5NjI2NjU2MWQ5MzMxZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTU0NSw5ICs1
NDUsNiBAQAogI2lmIFBMQVRGT1JNKElPUykKIAogI2RlZmluZSBIQVZFX1JFQURMSU5FIDEKLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2RlZmluZSBVU0VfQ0ZORVRXT1JLIDEKLSNlbmRp
ZgogI2RlZmluZSBVU0VfVUlLSVRfRURJVElORyAxCiAjZGVmaW5lIFVTRV9XRUJfVEhSRUFEIDEK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDA2ZGVhMTg0MDlhYjM0ZTgxMTAxZmIzYzAwMmY3ZmVmM2RiNjg3ZmQuLmY4Y2NlYmZh
MzIxOWFiZTgyZjdiOWQwYTg1YzRjZDgwYmFhOTY1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3NjksNyArMjc2OSw2IEBA
CiAJCTdFNjZFMjM0MTZENkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTY2RTIz
MjE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oICovOyB9Owog
CQk3RTY2RTIzNDE3RTZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRD
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTY2RTIz
MjE3RTZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmggKi87IH07
CiAJCTdFN0RFMUZEMTk1Q0VGMjYwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFN0RFMUZDMTk1
Q0VGMjYwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSAqLzsgfTsKLQkJN0U3REUy
MDIxOTVDRUZDRDAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFN0RFMjAxMTk1Q0VGQ0QwMDM1MzYz
QiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gKi87IH07CiAJCTdFOEZBREM0MTk5QTk1QjEwMDcx
NDk2OCAvKiBTdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U4RkFEQzMxOTlBOTVCMTAwNzE0OTY4IC8qIFN1YnJl
c291cmNlTG9hZGVyQ29jb2EubW0gKi87IH07CiAJCTdFOTlBRjUxMEIxMzg0NjQ2OEZCMDFBNSAv
KiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRv
d0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHAgKi87IH07CiAJCTdFOTlBRjUzMEIxMzg0NjQ2OEZC
MDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOTlBRjU0MEIxMzg0NjQ2OEZCMDFBNSAvKiBX
aW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAyNzQsNyArMTAyNzMsNiBAQAogCQk3RTY2RTIzMjE2
RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNjZFMjMyMTdFNkVCNkMwMEY3RTdGRiAvKiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdFN0RFMUZDMTk1Q0VGMjYwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVz
dENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3RTdERTIwMTE5NUNFRkNE
MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3RThGQURDMzE5OUE5NUIxMDA3MTQ5NjggLyogU3VicmVzb3VyY2VMb2Fk
ZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN1YnJl
c291cmNlTG9hZGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFOTlB
RjUyMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2luZG93Rm9jdXNBbGxvd2VkSW5k
aWNhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U5OUFGNTQwQjEzODQ2
NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NTUxLDcgKzE2NTQ5LDYgQEAKIAkJCQk0NDJBRjdB
ODEwMkNEREVBMDA4RkQ0RDMgLyogUXVpY2tMb29rLm1tICovLAogCQkJCUExMERCRjQ2MThGOTIz
MTcwMDBENzBDNiAvKiBRdWlja0xvb2tIYW5kbGVDbGllbnQuaCAqLywKIAkJCQk3RTQyOENFNDEz
RTM0MDdGMDAzQjY2MUMgLyogUmVzb3VyY2VIYW5kbGVJT1MubW0gKi8sCi0JCQkJN0U3REUyMDEx
OTVDRUZDRDAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5tbSAqLywKIAkJCQk0NEEyMERC
ODBGODQxNjZDMDBCM0UxRkUgLyogV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmggKi8sCiAJCQkJNDQ0
RDRFMjEwRjcwOEIyRTAwMzE1OEUwIC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5tbSAqLywKIAkJ
CSk7CkBAIC0zMDc2Myw3ICszMDc2MCw2IEBACiAJCQkJNTE0Qzc2N0MwQ0U5MjNBMTAwN0VGM0NE
IC8qIFJlc291cmNlUmVxdWVzdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NkUx
MkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdFN0RFMUZEMTk1Q0VGMjYwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5t
bSBpbiBTb3VyY2VzICovLAotCQkJCTdFN0RFMjAyMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJj
ZVJlcXVlc3RJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY1MzBDRTkyMzRFMDA3RUYz
Q0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2N0Uw
Q0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdFRTY4NDcxMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmlu
ZGV4IDU1MTAzOTFiZDMzZDNhMzY2NzE1NmU4NDVmYTMxMzExYzNmNmY5ZjMuLjlkYmUxODNlNjll
Y2I1ZGUxZjU1NWI3ZTU4Y2U0OGQ3ODNkZGUwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCkBAIC01Niw2ICs1NiwxMCBAQAogI2luY2x1ZGUgIlF1aWNrTG9vay5oIgog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWly
Lmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQXBwbGljYXRp
b25DYWNoZUhvc3Q7CkBAIC0xNDQsNyArMTQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBvdmVycmlkZUVuY29kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9vdmVycmlkZUVuY29kaW5nOyB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgICAgIHZvaWQgc2NoZWR1bGUoU2NoZWR1bGVQYWlyJik7CiAgICAg
ICAgIHZvaWQgdW5zY2hlZHVsZShTY2hlZHVsZVBhaXImKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMGQ4MWZmNWJhMjhhMjEwNGQ1MjhhZWNm
YmJiZTczNTZjYTIzYjY3OC4uOTYxM2UzMDFiODMxN2VhZTgxNTJjZjNlOGYwNzZjNGQzOWMxZDcw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03MjQsNyAr
NzI0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQogICAgIGNhbmNlbCgpOwogfQogCi0jaWYgUExBVEZP
Uk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpzY2hl
ZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5oCmluZGV4IDAyN2FjMDhmMjMyMzFkNDA3ODdkMTMwMjU2MjYzMzJiOTI2ZjQwZmEuLjg1
MjAxMTc1NGY3YjkxNDY3NTUyYzhiNWNhOWIxOTc3MTc5OWVlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0xNDAsNyArMTQwLDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCB3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKTsKIAotI2lmIFBMQVRGT1JNKE1B
QykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNjaGVkdWxlKFdURjo6U2NoZWR1bGVQ
YWlyJik7CiAgICAgdm9pZCB1bnNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAjZW5kaWYK
QEAgLTE1NywxMiArMTU3LDkgQEAgcHJvdGVjdGVkOgogCiAgICAgY29uc3QgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zJiBvcHRpb25zKCkgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKLSNpZiBQTEFURk9S
TShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmly
dHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRs
ZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBvdmVycmlkZTsKICNlbmRpZgotI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwgQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9u
c2VSZWYpIG92ZXJyaWRlOwotI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmgKaW5kZXggNjlhMjQyMjk3MjFmZjZjYTk4OTkzYTY5OTc3MDE4ZmVlZDhkNWNkOC4uZWZhY2Rk
OGQxMzI0MmEwNjQ0MzlhYjcyOTAwYjE5NGNjYmMwMTRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKQEAgLTczLDEyICs3Myw5IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNwb25zZSAqd2lsbENhY2hlUmVzcG9u
c2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlKikgb3ZlcnJpZGU7CiAjZW5k
aWYKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFsIENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBD
RkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKLSNlbmRpZgogCiAjaWYgVVNFKE5FVFdP
UktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RhdGFB
cnJheSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAKaW5kZXggN2U3NGYyMGY5NzJiMDc4ZmU4NjJi
NTgxYzI4OWJlZWU1ZDBhMTJjOC4uYjI2MTQ0YmQyMDVmMWY2YTc2NmFlZWI1MjdmY2VmM2Y5NjJl
MTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1bWVudExvYWRl
ck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1bWVudExvYWRlck1h
Yy5jcHAKQEAgLTMzLDggKzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgUExB
VEZPUk0oTUFDKQotCiBzdGF0aWMgdm9pZCBzY2hlZHVsZUFsbChjb25zdCBSZXNvdXJjZUxvYWRl
ck1hcCYgbG9hZGVycywgU2NoZWR1bGVQYWlyJiBwYWlyKQogewogICAgIFZlY3RvcjxSZWZQdHI8
UmVzb3VyY2VMb2FkZXI+PiBsb2FkZXJzQ29weTsKQEAgLTY5LDYgKzY3LDQgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiAgICAgdW5zY2hlZHVs
ZUFsbChtX211bHRpcGFydFN1YnJlc291cmNlTG9hZGVycywgcGFpcik7CiB9CiAKLSNlbmRpZgot
CiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9S
ZXNvdXJjZUxvYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VM
b2FkZXJNYWMubW0KaW5kZXggYmI5YjE0ZTgxNGI1YjIzOWM3N2U1MWE0ZGJmMTdjZDY1MWMyNmYw
My4uOGEzMjhlZTVmZjI4ODFlOGMzNDQ2ZWI1ODg0Y2UyZTViMjJmY2ZhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCkBAIC0zNiwxOSArMzYs
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1DRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShSZXNv
dXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCi17Ci0g
ICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcygpID09IERvTm90U2VuZENhbGxiYWNr
cykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBSZXRhaW5QdHI8TlNDYWNoZWRVUkxS
ZXNwb25zZT4gbnNDYWNoZWRSZXNwb25zZSA9IGFkb3B0TlMoW1tOU0NhY2hlZFVSTFJlc3BvbnNl
IGFsbG9jXSBfaW5pdFdpdGhDRkNhY2hlZFVSTFJlc3BvbnNlOmNhY2hlZFJlc3BvbnNlXSk7Ci0g
ICAgcmV0dXJuIFtmcmFtZUxvYWRlcigpLT5jbGllbnQoKS53aWxsQ2FjaGVSZXNwb25zZShkb2N1
bWVudExvYWRlcigpLCBpZGVudGlmaWVyKCksIG5zQ2FjaGVkUmVzcG9uc2UuZ2V0KCkpIF9DRkNh
Y2hlZFVSTFJlc3BvbnNlXTsKLX0KLQotI2Vsc2UKLQogTlNDYWNoZWRVUkxSZXNwb25zZSogUmVz
b3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRV
UkxSZXNwb25zZSogcmVzcG9uc2UpCiB7CiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxi
YWNrcygpID09IERvTm90U2VuZENhbGxiYWNrcykKQEAgLTU2LDggKzQzLDYgQEAgTlNDYWNoZWRV
UkxSZXNwb25zZSogUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFu
ZGxlKiwgTlNDYWNoZWQKICAgICByZXR1cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENh
Y2hlUmVzcG9uc2UoZG9jdW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9
CiAKLSNlbmRpZgotCiAjaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogCiB2
b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFy
cmF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KaW5kZXggNTI1MTA4ZmNhNWVlOGE4NDMx
NGE2ZDEwNWFmNGE2ZDEzNTQyNGU3Zi4uZjVjNTFmOWFiZmFhN2M3NTc1MDJjMmFjZTgwODM5Y2Q2
ZWIyNzk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCkBAIC0zNCwxMiArMzQsMTYg
QEAKICNpbXBvcnQgIkZyYW1lVHJlZS5oIgogI2ltcG9ydCAiTWFpbkZyYW1lLmgiCiAKKyNpZiBQ
TEFURk9STShJT1MpCisjaW1wb3J0ICJXZWJDb3JlVGhyZWFkLmgiCisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB2b2lkIFBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7Ci0jaWYg
VVNFKENGTkVUV09SSykKLSAgICBhZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUo
W1tOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIGdldENGUnVuTG9vcF0sIGtDRlJ1bkxvb3BDb21t
b25Nb2RlcykpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBhZGRTY2hlZHVsZVBhaXIoU2NoZWR1
bGVQYWlyOjpjcmVhdGUoV2ViVGhyZWFkTlNSdW5Mb29wKCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rl
cykpOwogI2Vsc2UKICAgICBhZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUoW05T
UnVuTG9vcCBjdXJyZW50UnVuTG9vcF0sIGtDRlJ1bkxvb3BDb21tb25Nb2RlcykpOwogI2VuZGlm
CkBAIC01MSwxNCArNTUsMTIgQEAgdm9pZCBQYWdlOjphZGRTY2hlZHVsZVBhaXIoUmVmPFNjaGVk
dWxlUGFpcj4mJiBwYWlyKQogICAgICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycyA9IHN0ZDo6
bWFrZV91bmlxdWU8U2NoZWR1bGVQYWlySGFzaFNldD4oKTsKICAgICBtX3NjaGVkdWxlZFJ1bkxv
b3BQYWlycy0+YWRkKHBhaXIucHRyKCkpOwogCi0jaWYgIVBMQVRGT1JNKElPUykKICAgICBmb3Ig
KEZyYW1lKiBmcmFtZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9j
dW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAg
ICAgIGRvY3VtZW50TG9hZGVyLT5zY2hlZHVsZShwYWlyKTsKICAgICAgICAgaWYgKERvY3VtZW50
TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3Vt
ZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+c2NoZWR1bGUocGFpcik7
CiAgICAgfQotI2VuZGlmCiAKICAgICAvLyBGSVhNRTogbWFrZSBTaGFyZWRUaW1lck1hYyB1c2Ug
dGhlc2UgU2NoZWR1bGVQYWlycy4KIH0KQEAgLTcxLDE0ICs3MywxMiBAQCB2b2lkIFBhZ2U6OnJl
bW92ZVNjaGVkdWxlUGFpcihSZWY8U2NoZWR1bGVQYWlyPiYmIHBhaXIpCiAKICAgICBtX3NjaGVk
dWxlZFJ1bkxvb3BQYWlycy0+cmVtb3ZlKHBhaXIucHRyKCkpOwogCi0jaWYgIVBMQVRGT1JNKElP
UykKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVu
dExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KSkKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT51bnNjaGVkdWxlKHBhaXIpOwogICAgICAg
ICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLnBy
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT51
bnNjaGVkdWxlKHBhaXIpOwogICAgIH0KLSNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KaW5kZXggOTgwZTQzMWY2ZDJjMTQ2ZjViYzExYjk3MmVjNjlmNjAz
NTdjOGI1OC4uMGFhMThmZDFiNWNmYjk3MDRkY2FkMjU0NzZjNjFmYTk2ZTU5NTQxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCkBAIC05OSwxMCArOTksNiBAQAogI2ltcG9ydCA8VmlkZW9Ub29s
Ym94L1ZpZGVvVG9vbGJveC5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2luY2x1
ZGUgIkNGTlNVUkxDb25uZWN0aW9uU1BJLmgiCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKElPUykK
ICNpbmNsdWRlIDxPcGVuR0xFUy9FUzMvZ2xleHQuaD4KICNlbmRpZgpAQCAtNDIxLDU4ICs0MTcs
NiBAQCBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpCiB9
CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCi1jbGFzcyBXZWJDb3JlTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50PiwgcHVibGljIEF1dGhlbnRpY2F0aW9uQ2xpZW50
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQ2xpZW50PiBjcmVhdGUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hh
bGxlbmdlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb3JlTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudChjaGFsbGVuZ2UpKTsKLSAgICB9Ci0KLSAgICB1
c2luZyBSZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50
Pjo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VDbGllbnQ+OjpkZXJlZjsKLQotcHJpdmF0ZToKLSAgICBXZWJDb3JlTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudChOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpj
aGFsbGVuZ2UpCi0gICAgICAgIDogbV9jaGFsbGVuZ2UoY2hhbGxlbmdlKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1fY2hhbGxlbmdlKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVmQXV0
aGVudGljYXRpb25DbGllbnQoKSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRlcmVmQXV0aGVudGljYXRpb25DbGllbnQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KLQotICAg
IHZpcnR1YWwgdm9pZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKSBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlhbC5uc0Ny
ZWRlbnRpYWwoKSBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07
Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRo
b3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gY29udGludWVXaXRob3V0Q3JlZGVu
dGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgW1ttX2NoYWxsZW5nZSBz
ZW5kZXJdIGNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsK
LSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVs
dEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIGlmIChbW21fY2hhbGxlbmdlIHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
KV0pCi0gICAgICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gcGVyZm9ybURlZmF1bHRIYW5k
bGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKFtbbV9j
aGFsbGVuZ2Ugc2VuZGVyXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJlamVjdFByb3Rl
Y3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENoYWxsZW5nZTopXSkKLSAgICAgICAgICAgIFtbbV9j
aGFsbGVuZ2Ugc2VuZGVyXSByZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFs
bGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCldOwotICAgIH0KLQotICAgIFJldGFpblB0cjxOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiBtX2NoYWxsZW5nZTsKLX07Ci0jZW5kaWYKLQogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1l
ZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkK
QEAgLTE3ODgsMTMgKzE3MzIsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0UgogCiBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JSZXNwb25zZVRv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogbnND
aGFsbGVuZ2UpCiB7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBSZWZQdHI8V2ViQ29yZU5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+IGNsaWVudCA9IFdlYkNvcmVOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50OjpjcmVhdGUobnNDaGFsbGVuZ2UpOwotICAgIFJldGFp
blB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IGNmQ2hhbGxlbmdlID0gYWRvcHRDRihbbnNDaGFs
bGVuZ2UgX2NyZWF0ZUNGQXV0aENoYWxsZW5nZV0pOwotICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIGNoYWxsZW5nZShjZkNoYWxsZW5nZS5nZXQoKSwgY2xpZW50LmdldCgpKTsKLSNlbHNlCiAg
ICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlKG5zQ2hhbGxlbmdlKTsKLSNlbmRp
ZgogCiAgICAgcmV0dXJuIHBsYXllcigpLT5zaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCmluZGV4IDRlMzAz
NjZkNGViN2ZhYjE4OGRlNGNhZTkwZjlkNTUxMWY5MDZkYWIuLjA5ZDU5YzcxMjgwODMxZDVlNzQ1
NTgwMjVkNzQ0ZGEzODMyNTA5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCkBAIC01MSwxMyArNTEsNiBA
QCBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tDRlVSTFJlcXVlc3RBbGxvd0FsbFBvc3RDYWNoaW5n
KShDRlVSTFJlcXVlc3RSZWYpOwogV0VCQ09SRV9FWFBPUlQgQ0ZBcnJheVJlZiAoKndrQ29weU5T
VVJMUmVzcG9uc2VDZXJ0aWZpY2F0ZUNoYWluKShOU1VSTFJlc3BvbnNlKik7CiBXRUJDT1JFX0VY
UE9SVCBDRlN0cmluZ0VuY29kaW5nICgqd2tHZXRXZWJEZWZhdWx0Q0ZTdHJpbmdFbmNvZGluZyko
dm9pZCk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotV0VCQ09SRV9FWFBPUlQgQ0ZIVFRQQ29va2ll
U3RvcmFnZVJlZiAoKndrR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKSgpOwotV0VCQ09SRV9F
WFBPUlQgV0tDRlVSTENyZWRlbnRpYWxSZWYgKCp3a0NvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lz
dGVudFN0b3JhZ2UpKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSk7Ci1X
RUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDRlVSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYp
KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIGJvb2wpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndr
U2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBDRk11dGFi
bGVVUkxSZXF1ZXN0UmVmKTsKLSNlbmRpZgotCiBXRUJDT1JFX0VYUE9SVCBDRlVSTFN0b3JhZ2VT
ZXNzaW9uUmVmICgqd2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24pKENGU3RyaW5nUmVmKTsK
IFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVxdWVzdCogKCp3a0NvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VT
ZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBOU1VSTFJlcXVlc3QqKTsKIFdFQkNPUkVf
RVhQT1JUIENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgKCp3a0NvcHlIVFRQQ29va2llU3RvcmFnZSko
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy93YWsvV2ViQ29yZVRocmVhZC5oCmluZGV4IGVmYjhkN2E0ODYwZDAwM2ZmM2Q3YTBlM2ExYWFk
MzcyMmQ3ZmM4ZWYuLjYzNzdiOGU1ZGRmZThkOThlMWJkMGViMTIzNzMxNTE3OTRiZDQwYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5oCkBA
IC04MSw3ICs4MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBXZWJUaHJlYWRTaG91bGRZaWVsZCh2
b2lkKSB7IHJldHVybiB3ZWJUaHJlYWRTaG91bGRZaWVsZDsgfQogc3RhdGljIGlubGluZSB2b2lk
IFdlYlRocmVhZFNldFNob3VsZFlpZWxkKCkgeyB3ZWJUaHJlYWRTaG91bGRZaWVsZCA9IHRydWU7
IH0KIAogV0VCQ09SRV9FWFBPUlQgQ0ZSdW5Mb29wUmVmIFdlYlRocmVhZFJ1bkxvb3Aodm9pZCk7
Ci1OU1J1bkxvb3AqIFdlYlRocmVhZE5TUnVuTG9vcCh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIE5T
UnVuTG9vcCogV2ViVGhyZWFkTlNSdW5Mb29wKHZvaWQpOwogV2ViVGhyZWFkQ29udGV4dCAqV2Vi
VGhyZWFkQ3VycmVudENvbnRleHQodm9pZCk7CiBib29sIFdlYlRocmVhZENvbnRleHRJc0N1cnJl
bnQodm9pZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oCmluZGV4IDYwYjQ4OTA1NzNhZDZhODVkM2IwYTM3M2NjOGNhMjVm
ZjM5ZjAyMTEuLmI2NTY2MTMwN2QwNjJiZDBhOTdjZDE3ZDFkYmE4YTEyZjdkZGU4NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaApAQCAtMjU2LDEyICsyNTYsNiBAQCBleHRlcm4gQ0ZIVFRQTWVzc2FnZVJlZiAoKndrR2V0
Q0ZVUkxSZXNwb25zZUhUVFBSZXNwb25zZSkoQ0ZVUkxSZXNwb25zZVJlZik7CiBleHRlcm4gQ0ZT
dHJpbmdSZWYgKCp3a0NvcHlDRlVSTFJlc3BvbnNlU3VnZ2VzdGVkRmlsZW5hbWUpKENGVVJMUmVz
cG9uc2VSZWYpOwogZXh0ZXJuIHZvaWQgKCp3a1NldENGVVJMUmVzcG9uc2VNSU1FVHlwZSkoQ0ZV
UkxSZXNwb25zZVJlZiwgQ0ZTdHJpbmdSZWYgbWltZVR5cGUpOwogCi0jaWYgVVNFKENGTkVUV09S
SykKLWV4dGVybiBDRkhUVFBDb29raWVTdG9yYWdlUmVmICgqd2tHZXREZWZhdWx0SFRUUENvb2tp
ZVN0b3JhZ2UpKCk7Ci1leHRlcm4gV0tDRlVSTENyZWRlbnRpYWxSZWYgKCp3a0NvcHlDcmVkZW50
aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UpKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3Rl
Y3Rpb25TcGFjZSk7Ci1leHRlcm4gdm9pZCAoKndrU2V0Q0ZVUkxSZXF1ZXN0U2hvdWxkQ29udGVu
dFNuaWZmKShDRk11dGFibGVVUkxSZXF1ZXN0UmVmLCBib29sKTsKLWV4dGVybiB2b2lkICgqd2tT
ZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIENGTXV0YWJs
ZVVSTFJlcXVlc3RSZWYpOwotI2VuZGlmCiAjaWYgIVBMQVRGT1JNKElPUykKIGV4dGVybiB2b2lk
ICgqd2tTZXRNZXRhZGF0YVVSTCkoTlNTdHJpbmcgKnVybFN0cmluZywgTlNTdHJpbmcgKnJlZmVy
cmVyLCBOU1N0cmluZyAqcGF0aCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggMTg4ZjQxMjgxMjNh
OTYwOGFkYmZmY2NiZjY5YjhkYWYzMDAxY2JjNy4uMDMzOTBjZTY5YzViZmNlZjNhYjUxZTZhMTk2
Mzc0NTA2ZWJhZWEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTg4LDEzICs4OCw2IEBAIHZvaWQgKCp3a1Nl
dENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94
eUhvc3QsIENGTnVtCiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3Ry
ZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmlu
Zyk7CiBDRkhUVFBNZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVh
ZFN0cmVhbVJlZiwgQ0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwg
Q0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi1DRkhUVFBDb29r
aWVTdG9yYWdlUmVmICgqd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UpKCk7Ci1XS0NGVVJM
Q3JlZGVudGlhbFJlZiAoKndrQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFnZSko
Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlKTsKLXZvaWQgKCp3a1NldENG
VVJMUmVxdWVzdFNob3VsZENvbnRlbnRTbmlmZikoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiwgYm9v
bCk7Ci12b2lkICgqd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Np
b25SZWYsIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYpOwotI2VuZGlmCi0KIHZvaWQqIHdrR2V0SHlw
aGVuYXRpb25Mb2NhdGlvbkJlZm9yZUluZGV4OwogCiBib29sICgqd2tFeGVjdXRhYmxlV2FzTGlu
a2VkT25PckJlZm9yZVNub3dMZW9wYXJkKSh2b2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3BwCmluZGV4IDkzYzRk
ZGJhNDhmOWZkYjM3MWI5NWNjMjk3MGRhYzhjZTg1OWJjMzguLjAxMjZkYzc5NDgzMWY0YWZmNmNh
YzEyOWMwMmU5OGNlZWVjOWQyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcApAQCAtMjcsNyArMjcsNyBAQAog
CiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKSAmJiAh
UExBVEZPUk0oQ09DT0EpCisjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlICJBdXRoZW50aWNh
dGlvbkNGLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUHJvdGVjdGlvblNwYWNlUHJpdi5o
PgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCA1MmRkNDZhOWE1NGZjNzRmNzc2Y2M3
YTQxZjlmNmQ5ZDkwYmQ2Njc0Li45YzQ1NzA0OGE4ZTk0MDU4ODYzMDJhZDMyMTM0Y2ZjMjUyMTA1
MzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5oCkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIHZvaWQgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTENvbm5l
Y3Rpb24gKmNvbm5lY3Rpb24oKSBjb25zdDsKICAgICBpZCBtYWtlRGVsZWdhdGUoYm9vbCk7CkBA
IC0yMTcsNyArMjE3LDcgQEAgcHVibGljOgogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9u
c2VSZWYpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udGludWVXaWxs
Q2FjaGVSZXNwb25zZShOU0NhY2hlZFVSTFJlc3BvbnNlICopOwogI2VuZGlmCiAKQEAgLTIzNywx
MCArMjM3LDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDRlN0cmluZ1Jl
ZiBzeW5jaHJvbm91c0xvYWRSdW5Mb29wTW9kZSgpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJ
T1MpICYmIFVTRShDRk5FVFdPUkspCi0gICAgc3RhdGljIENGTXV0YWJsZURpY3Rpb25hcnlSZWYg
Y3JlYXRlU1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7Ci0jZW5kaWYKLQogICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gKCpC
dWlsdGluQ29uc3RydWN0b3IpKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQqIGNsaWVudCk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCdWlsdGlu
Q29uc3RydWN0b3IoY29uc3QgQXRvbWljU3RyaW5nJiBwcm90b2NvbCwgQnVpbHRpbkNvbnN0cnVj
dG9yKTsKIApAQCAtMjc3LDExICsyNzMsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUNG
VVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3Vs
ZENvbnRlbnRTbmlmZiwgU2NoZWR1bGluZ0JlaGF2aW9yLCBDRkRpY3Rpb25hcnlSZWYgY2xpZW50
UHJvcGVydGllcyk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShDRk5FVFdP
UkspCisjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgY3JlYXRlTlNVUkxDb25uZWN0aW9uKGlk
IGRlbGVnYXRlLCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENv
bnRlbnRTbmlmZiwgU2NoZWR1bGluZ0JlaGF2aW9yKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
SU9TKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShJT1MpCiAgICAgdm9pZCBjcmVh
dGVOU1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0
b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IsIE5TRGlj
dGlvbmFyeSAqY29ubmVjdGlvblByb3BlcnRpZXMpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgK
aW5kZXggNjEyM2YxNGFjYTI0ODRiZTQyYTZkZjEwMGFmM2FhYzMxOWJkMmQ5Zi4uN2FlNzNjZjcx
ZGMxMTVmNDAxZjIwMGIzYzQ4MWY4ODQ5NzljNzM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKQEAgLTEz
NiwxMSArMTM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZXNvdXJjZVJlcXVl
c3QgbV9jdXJyZW50UmVxdWVzdDsKICAgICAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGU+IG1fY29ubmVjdGlvbkRlbGVnYXRlOwogI2VuZGlmCi0jaWYgUExB
VEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
ICAgICBSZXRhaW5QdHI8TlNVUkxDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgICAgIFJl
dGFpblB0cjxpZD4gbV9kZWxlZ2F0ZTsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
ICAgICBib29sIG1fc3RhcnRXaGVuU2NoZWR1bGVkOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShDRk5FVFdPUkspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAppbmRleCA3ODgzZTQ2OTExNWRlMzI3
OTRjMWIyYTQ3ZGJiNTAzMDhlMTA4ZWM5Li5mODc0NWQ1NDNhOTA4YzgzMzJjYThhZjJmOWEyMTZl
OTk2OWVkYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0F1dGhlbnRpY2F0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAKQEAgLTUzLDEzICs1Myw4IEBAIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmIHByb3RlY3RpCiAKIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2ZDaGFsbGVuZ2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0aGVudGljYXRpb25DbGllbnQq
IGF1dGhlbnRpY2F0aW9uQ2xpZW50KQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIDogQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VCYXNlKFByb3RlY3Rpb25TcGFjZShDRlVSTEF1dGhDaGFsbGVuZ2VH
ZXRQcm90ZWN0aW9uU3BhY2UoY2ZDaGFsbGVuZ2UpKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDcmVkZW50aWFsKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVu
dGlhbChjZkNoYWxsZW5nZSkpLAotI2Vsc2UKICAgICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
QmFzZShjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjZkNoYWxsZW5n
ZSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmUoQ0ZVUkxBdXRoQ2hh
bGxlbmdlR2V0UHJvcG9zZWRDcmVkZW50aWFsKGNmQ2hhbGxlbmdlKSksCi0jZW5kaWYKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcmV2aW91
c0ZhaWx1cmVDb3VudChjZkNoYWxsZW5nZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKENGVVJMUmVzcG9uc2VSZWYpQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0RmFpbHVyZVJlc3Bv
bnNlKGNmQ2hhbGxlbmdlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlVS
TEF1dGhDaGFsbGVuZ2VHZXRFcnJvcihjZkNoYWxsZW5nZSkpCkBAIC05MywxNCArODgsMTAgQEAg
Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNyZWF0ZUNGKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiBjb3JlQ2hhbGxlbmdlKQogewogICAgIC8vIEZJWE1FOiBXaHkgbm90IGNhY2hlIENGVVJM
QXV0aENoYWxsZW5nZVJlZiBpbiBtX2NmQ2hhbGxlbmdlPyBGb3VuZGF0aW9uIGNvdW50ZXJwYXJ0
IGRvZXMgdGhhdC4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIENGVVJMQXV0aENoYWxsZW5n
ZVJlZiByZXN1bHQgPSBDRlVSTEF1dGhDaGFsbGVuZ2VDcmVhdGUoMCwgY29yZUNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2UoKS5jZlNwYWNlKCksIGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50
aWFsKCkuY2ZDcmVkZW50aWFsKCksCi0jZWxzZQogICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRp
YWxSZWY+IGNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvcG9z
ZWRDcmVkZW50aWFsKCkpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY+
IHByb3RlY3Rpb25TcGFjZSA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm90ZWN0
aW9uU3BhY2UoKSkpOwogCiAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9IENGVVJM
QXV0aENoYWxsZW5nZUNyZWF0ZSgwLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwu
Z2V0KCksCi0jZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b3JlQ2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29yZUNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5jZlVS
TFJlc3BvbnNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29y
ZUNoYWxsZW5nZS5lcnJvcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKaW5kZXggOTQ3ZmIzYmY5YmUyNmZiMjdkYjY5
MDRmMGNlZGQzZTllODczZDQxOC4uZGE0YTA2NGY3NWEwNzc2ZWNkMzVmZDY2ZWY4YjgwNjUxYTUw
NTA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29r
aWVKYXJDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9D
b29raWVKYXJDRk5ldC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFdJTikgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSAxMDkwKQorI2lmIFBMQVRGT1JNKFdJTikKIGVu
dW0gewogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lFeGNsdXNpdmVseUZyb21N
YWluRG9jdW1lbnREb21haW4gPSAzCiB9OwpAQCAtMTA1LDEzICsxMDUsOSBAQCBzdGF0aWMgUmV0
YWluUHRyPENGQXJyYXlSZWY+IGNvcHlDb29raWVzRm9yVVJMV2l0aEZpcnN0UGFydHlVUkwoY29u
c3QgTmV0d29ya1N0bwogewogICAgIGJvb2wgc2VjdXJlID0gdXJsLnByb3RvY29sSXMoImh0dHBz
Iik7CiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwKQotICAgIHJldHVybiBhZG9wdENGKF9DRkhU
VFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkxXaXRoTWFpbkRvY3VtZW50VVJMKHNlc3Np
b24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmwuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgZmlyc3RQ
YXJ0eS5jcmVhdGVDRlVSTCgpLmdldCgpLCBzZWN1cmUpKTsKLSNlbHNlCiAgICAgLy8gX0NGSFRU
UENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTFdpdGhNYWluRG9jdW1lbnRVUkwgaXMgbm90
IGF2YWlsYWJsZSBvbiBvdGhlciBwbGF0Zm9ybXMuCiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFy
dHkpOwogICAgIHJldHVybiBhZG9wdENGKENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0Zv
clVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsLmNyZWF0ZUNGVVJMKCkuZ2V0
KCksIHNlY3VyZSkpOwotI2VuZGlmCiB9CiAKIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNvb2tp
ZXMoQ0ZEaWN0aW9uYXJ5UmVmIGhlYWRlckZpZWxkcywgQ0ZVUkxSZWYgdXJsKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNG
TmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0
b3JhZ2VDRk5ldC5jcHAKaW5kZXggNTYwOTI1OTdhYWNjZDI3NzNmNjk4YjM1YmQ0ZmM3MTU4NzJj
NDBlNC4uNjllMzMyYzEzYjE3MGJiYjI5OTNlYTRjMWQ1NzU4ODdiZTZlZjU1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNG
TmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRp
YWxTdG9yYWdlQ0ZOZXQuY3BwCkBAIC0zMyw0MiArMzMsMTggQEAKICNpbmNsdWRlICJQcm90ZWN0
aW9uU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBQTEFURk9STShD
T0NPQSkKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jZWxpZiBQTEFURk9S
TShXSU4pCisjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFj
ZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQot
I2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENyZWRlbnRpYWxTdG9yYWdlLmg+Ci0jZW5kaWYKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBDcmVkZW50aWFsIENyZWRlbnRpYWxTdG9yYWdlOjpnZXRG
cm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3Bh
Y2UpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlh
bFJlZj4gY3JlZGVudGlhbENGID0gYWRvcHRDRih3a0NvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lz
dGVudFN0b3JhZ2UocHJvdGVjdGlvblNwYWNlLmNmU3BhY2UoKSkpOwotICAgIHJldHVybiBDcmVk
ZW50aWFsKGNyZWRlbnRpYWxDRi5nZXQoKSk7Ci0jZWxzZQogICAgIFJldGFpblB0cjxDRlVSTFBy
b3RlY3Rpb25TcGFjZVJlZj4gcHJvdGVjdGlvblNwYWNlQ0YgPSBhZG9wdENGKGNyZWF0ZUNGKHBy
b3RlY3Rpb25TcGFjZSkpOwogICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRl
bnRpYWxDRiA9IGFkb3B0Q0Yod2tDb3B5Q3JlZGVudGlhbEZyb21DRlBlcnNpc3RlbnRTdG9yYWdl
KHByb3RlY3Rpb25TcGFjZUNGLmdldCgpKSk7CiAgICAgcmV0dXJuIGNvcmUoY3JlZGVudGlhbENG
LmdldCgpKTsKLSNlbmRpZgotfQotCi0jaWYgUExBVEZPUk0oSU9TKQotdm9pZCBDcmVkZW50aWFs
U3RvcmFnZTo6c2F2ZVRvUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBw
cm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCi17Ci0gICAgUmV0
YWluUHRyPENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VSZWY+IHN0b3JhZ2VDRiA9IGFkb3B0Q0YoQ0ZV
UkxDcmVkZW50aWFsU3RvcmFnZUNyZWF0ZSgwKSk7Ci0KLSAgICBpZiAoY3JlZGVudGlhbC5wZXJz
aXN0ZW5jZSgpID09IENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpIHsKLSAgICAgICAgQ3JlZGVu
dGlhbCBzZXNzaW9uQ3JlZGVudGlhbChjcmVkZW50aWFsLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VG
b3JTZXNzaW9uKTsKLSAgICAgICAgQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZVNldERlZmF1bHRDcmVk
ZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0b3JhZ2VDRi5nZXQoKSwgc2Vzc2lvbkNyZWRlbnRp
YWwuY2ZDcmVkZW50aWFsKCksIHByb3RlY3Rpb25TcGFjZS5jZlNwYWNlKCkpOwotICAgIH0gZWxz
ZQotICAgICAgICBDRlVSTENyZWRlbnRpYWxTdG9yYWdlU2V0RGVmYXVsdENyZWRlbnRpYWxGb3JQ
cm90ZWN0aW9uU3BhY2Uoc3RvcmFnZUNGLmdldCgpLCBjcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgp
LCBwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKTsKIH0KLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUVycm9yLmgKaW5kZXggMTcwM2NjOTFmNjhiMmE1ZTY0Zjg3OTIzY2U2ZmJhMWQyN2Rk
MjQxZC4uMWI0YWQ3MzA2NmM3NzE4YTBjYTUxNDUwMGVlZDRmN2M0ZDkxNDQ4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKQEAg
LTYxLDE2ICs2MSwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgQ0ZFcnJvclJlZiBj
ZkVycm9yKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgQ0ZFcnJvclJlZigp
IGNvbnN0OwogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpZiBQTEFURk9STShXSU4pCisjaWYgVVNF
KENGTkVUV09SSykgJiYgUExBVEZPUk0oV0lOKQogICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3Ry
aW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29u
c3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgQ0ZEYXRhUmVmIGNlcnRpZmljYXRlKTsK
ICAgICBQQ0NFUlRfQ09OVEVYVCBjZXJ0aWZpY2F0ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2Vy
dGlmaWNhdGUoQ0ZEYXRhUmVmKTsKICNlbmRpZgotICAgIFJlc291cmNlRXJyb3IoQ0ZTdHJlYW1F
cnJvciBlcnJvcik7Ci0gICAgQ0ZTdHJlYW1FcnJvciBjZlN0cmVhbUVycm9yKCkgY29uc3Q7Ci0g
ICAgb3BlcmF0b3IgQ0ZTdHJlYW1FcnJvcigpIGNvbnN0OwotI2VuZGlmCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yKE5TRXJyb3IgKik7CkBA
IC04OCw5ICs4Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RhdGFJc1VwVG9EYXRlOwogI2lm
IFVTRShDRk5FVFdPUkspCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0ZFcnJvclJlZj4gbV9wbGF0
Zm9ybUVycm9yOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG11dGFibGUgUmV0YWluUHRyPE5T
RXJyb3I+IG1fcGxhdGZvcm1OU0Vycm9yOwotI2VuZGlmCiAjaWYgUExBVEZPUk0oV0lOKQogICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IG1fY2VydGlmaWNhdGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZO
ZXQuY3BwCmluZGV4IDNlNjFjZDQwYTgxOTMxYWE3MjZiMjNkMGE2Mzg0YzBlYzgxYjY5MmEuLjgx
OWRhNjUwMzcyNTVmNjJjZWRlNGZiZTQxYjI0NmJlZDMxMTEwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0
LmNwcApAQCAtNTIsMTYgKzUyLDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1
ZXVlLmgiCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2lmIFVTRShDRk5F
VFdPUkspCi0jaW5jbHVkZSAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3
b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4KLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXF1
ZXN0UHJpdi5oPgotI2VuZGlmCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRl
IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW5jbHVk
ZSA8cHJvY2Vzcy5oPgpAQCAtMjE4LDE0ICsyMDgsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpj
cmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9v
bAogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpLCBr
Q0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcywgc3RyZWFtUHJvcGVydGllcyk7
CiAgICAgQ0ZSZWxlYXNlKHN0cmVhbVByb3BlcnRpZXMpOwogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgaWYgKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKQotICAgICAgICBkLT5tX2Nvbm5lY3Rp
b25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlKHRoaXMpKTsKLSAgICBlbHNlCi0gICAgICAgIGQtPm1f
Y29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7Ci0jZWxzZQogICAgIGQtPm1fY29ubmVj
dGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7Ci0jZW5kaWYKICAgICBkLT5tX2Nvbm5lY3Rpb25E
ZWxlZ2F0ZS0+c2V0dXBSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgQ0ZVUkxDb25uZWN0
aW9uQ2xpZW50X1Y2IGNsaWVudCA9IGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlLT5tYWtlQ29ubmVj
dGlvbkNsaWVudCgpOwpAQCAtMzY3LDEyICszNTAsOSBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0
cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25D
aAogCiAgICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFzcy5pc051bGwoKSkg
ewogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBh
ZG9wdENGKENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5tX3Vz
ZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKLSNpZiBQTEFURk9STShD
T0NPQSkKLSAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gQ3JlZGVudGlhbChjZkNyZWRl
bnRpYWwuZ2V0KCkpOwotI2Vsc2UKKwogICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBj
b3JlKGNmQ3JlZGVudGlhbC5nZXQoKSk7Ci0jZW5kaWYKLSAgICAgICAgCisKICAgICAgICAgVVJM
IHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0
cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAgICAgICAgICAgICB1cmxUb1N0b3JlID0gY2hhbGxlbmdl
LmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwpAQCAtNDAxLDEyICszODEsOCBAQCBib29sIFJlc291
cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgQXV0
aGVudGljYXRpb25DaAogICAgICAgICAgICAgICAgICAgICAvLyBTdG9yZSB0aGUgY3JlZGVudGlh
bCBiYWNrLCBwb3NzaWJseSBhZGRpbmcgaXQgYXMgYSBkZWZhdWx0IGZvciB0aGlzIGRpcmVjdG9y
eS4KICAgICAgICAgICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNy
ZWRlbnRpYWxTdG9yYWdlKCkuc2V0KGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3Bh
Y2UoKSwgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpKTsKICAgICAgICAgICAgICAg
ICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9u
VXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRpYWwuY2ZDcmVkZW50
aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZWxzZQogICAgICAg
ICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFk
b3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOwogICAgICAgICAgICAgICAgIENGVVJMQ29ubmVj
dGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0
KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZW5kaWYKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDU2LDIw
ICs0MzIsMTIgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UKICAgICAgICAgZC0+bV9jb250ZXh0
LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KHdlYkNyZWRlbnRpYWws
IGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CiAKICAgICAgICAgaWYg
KGQtPm1fY29ubmVjdGlvbikgewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICAgICAgQ0ZV
UkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIHdlYkNyZWRl
bnRpYWwuY2ZDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7
Ci0jZWxzZQogICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVk
ZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRih3ZWJDcmVkZW50aWFsKSk7CiAgICAgICAgICAgICBD
RlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVk
ZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2VuZGlm
CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGQtPm1fY29ubmVjdGlvbikgewotI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29u
bmVjdGlvbi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgY2hhbGxlbmdlLmNmVVJM
QXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbHNlCiAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRl
bnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOwog
ICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQo
KSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkp
OwotI2VuZGlmCiAgICAgfQogCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwpAQCAtNjEwLDMw
ICs1NzgsNiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRpbmco
Ym9vbCBkZWZlcnMpCiAgICAgICAgIENGVVJMQ29ubmVjdGlvblJlc3VtZShkLT5tX2Nvbm5lY3Rp
b24uZ2V0KCkpOwogfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIFJlc291cmNlSGFuZGxl
OjpzY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCi17Ci0gICAgQ0ZSdW5Mb29wUmVmIHJ1bkxv
b3AgPSBwYWlyLnJ1bkxvb3AoKTsKLSAgICBpZiAoIXJ1bkxvb3ApCi0gICAgICAgIHJldHVybjsK
LQotICAgIENGVVJMQ29ubmVjdGlvblNjaGVkdWxlV2l0aFJ1bkxvb3AoZC0+bV9jb25uZWN0aW9u
LmdldCgpLCBydW5Mb29wLCBwYWlyLm1vZGUoKSk7Ci0gICAgaWYgKGQtPm1fc3RhcnRXaGVuU2No
ZWR1bGVkKSB7Ci0gICAgICAgIENGVVJMQ29ubmVjdGlvblN0YXJ0KGQtPm1fY29ubmVjdGlvbi5n
ZXQoKSk7Ci0gICAgICAgIGQtPm1fc3RhcnRXaGVuU2NoZWR1bGVkID0gZmFsc2U7Ci0gICAgfQot
fQotCi12b2lkIFJlc291cmNlSGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikK
LXsKLSAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCA9IHBhaXIucnVuTG9vcCgpOwotICAgIGlmICgh
cnVuTG9vcCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0ZVUkxDb25uZWN0aW9uVW5zY2hlZHVs
ZUZyb21SdW5Mb29wKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgcnVuTG9vcCwgcGFpci5tb2RlKCkp
OwotfQotI2VuZGlmCi0KIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgUmVzb3VyY2VIYW5kbGU6OmN1
cnJlbnRSZXF1ZXN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gZC0+bV9jdXJyZW50UmVxdWVzdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCmlu
ZGV4IDRmN2E3OTI5ZjFiMTFkODg0ZDhkMDQ3NjgyMTEyYWRiNjZlOWJiZDUuLmExZTEzODA5ZTQ3
OGJlZjRmZWFlNzM4MGQyYWNkY2VhNGRhMTEyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcApAQCAtMzIsMTAgKzMyLDYgQEAKICNpbmNs
dWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAK
LSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgi
Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDhhNWVm
MDkwNGQzYTYyNWQzNTYwN2M2YTY3N2VkNmVlZmQ5YTZjNzkuLjFkMGQ3ZDAyNTIwMzM3Y2QyNzBl
ZGJkZjQxNzgyNmI1MThmNjg4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaApAQCAtNjMsMTIgKzYzLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB9CiAgICAgICAgIAogI2lmIFVTRShDRk5FVFdPUkspCi0j
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlUmVxdWVz
dChOU1VSTFJlcXVlc3QgKik7Ci0gICAgICAgIHZvaWQgdXBkYXRlTlNVUkxSZXF1ZXN0KCk7Ci0g
ICAgICAgIHZvaWQgY2xlYXJPclVwZGF0ZU5TVVJMUmVxdWVzdCgpOwotI2VuZGlmCi0KICAgICAg
ICAgUmVzb3VyY2VSZXF1ZXN0KENGVVJMUmVxdWVzdFJlZiBjZlJlcXVlc3QpCiAgICAgICAgICAg
ICA6IFJlc291cmNlUmVxdWVzdEJhc2UoKQogICAgICAgICAgICAgLCBtX2NmUmVxdWVzdChjZlJl
cXVlc3QpCkBAIC04OCwxMSArODIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgYXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENP
Q09BKQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1Bs
YXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faHR0cEJvZHkgfHwgbV9jZlJlcXVlc3Q7IH0K
LSNlbHNlCiAgICAgICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1faHR0cEJvZHkgfHwgbV9uc1JlcXVlc3Q7IH0KLSNlbmRpZgogICAgICAgICBX
RUJDT1JFX0VYUE9SVCBOU1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBv
bGljeSkgY29uc3Q7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENGU3RyaW5nUmVm
IGlzVXNlckluaXRpYXRlZEtleSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCBhY2MxZDQ1Njk3NWNjMTJmMzlh
MzM4ZGJiMjQzOTQxZTU3YzI2ZDFhLi5iNzlmN2M0MGVkMGM5NGQxY2JlYzllNTY4NjNhYzllNTY0
MWI5ODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVzcG9uc2UuaApAQCAtNTMsOSArNTMsNiBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBtX2lzTnVsbCA9ICFjZlJlc3BvbnNlOwogICAgIH0KLSNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZVJlc3BvbnNlKE5TVVJMUmVzcG9uc2UgKik7Ci0j
ZW5kaWYKICNlbHNlCiAgICAgUmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlICpuc1Jlc3Bv
bnNlKQogICAgICAgICA6IG1faW5pdExldmVsKFVuaW5pdGlhbGl6ZWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VD
Rk5ldC5jcHAKaW5kZXggNGJhZTc0ZTgzODE2YzE5NGVkYzE1NGQ4NGMyZGU4ZjZkZDE2ZmM5NS4u
MWFhODM3ZmM3MmI3ODIzZWE3YmRlOGNiOTA2Mzk4ZmVhNzVkNWFmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25z
ZUNGTmV0LmNwcApAQCAtMzMsMTAgKzMzLDYgQEAKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxS
ZXNwb25zZVByaXYuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBQTEFURk9S
TShDT0NPQSkKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jZW5kaWYKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgQ0ZTdHJpbmdSZWYgY29uc3QgY29tbW9uSGVh
ZGVyRmllbGRzW10gPSB7CkBAIC00NiwxMyArNDIsOSBAQCBzdGF0aWMgQ0ZTdHJpbmdSZWYgY29u
c3QgY29tbW9uSGVhZGVyRmllbGRzW10gPSB7CiBDRlVSTFJlc3BvbnNlUmVmIFJlc291cmNlUmVz
cG9uc2U6OmNmVVJMUmVzcG9uc2UoKSBjb25zdAogewogICAgIGlmICghbV9jZlJlc3BvbnNlICYm
ICFtX2lzTnVsbCkgewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBuc1VSTFJlc3BvbnNl
KCk7Ci0jZWxzZQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IG1fdXJsLmNyZWF0
ZUNGVVJMKCk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNyZWF0ZXMgYSB2ZXJ5IGluY29tcGxl
dGUgQ0ZVUkxSZXNwb25zZSwgd2hpY2ggZG9lcyBub3QgZXZlbiBoYXZlIGEgc3RhdHVzIGNvZGUu
CiAgICAgICAgIG1fY2ZSZXNwb25zZSA9IGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNyZWF0ZSgwLCB1
cmwuZ2V0KCksIG1fbWltZVR5cGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgbV9l
eHBlY3RlZENvbnRlbnRMZW5ndGgsIG1fdGV4dEVuY29kaW5nTmFtZS5zdHJpbmcoKS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7Ci0jZW5kaWYKICAg
ICB9CiAKICAgICByZXR1cm4gbV9jZlJlc3BvbnNlLmdldCgpOwpAQCAtMTE1LDkgKzEwNyw2IEBA
IHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwgaW5pdExl
dmVsKQogCiBDZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZp
Y2F0ZUluZm8oKSBjb25zdAogewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHJldHVybiBDZXJ0
aWZpY2F0ZUluZm8oYWRvcHRDRih3a0NvcHlOU1VSTFJlc3BvbnNlQ2VydGlmaWNhdGVDaGFpbihu
c1VSTFJlc3BvbnNlKCkpKSk7Ci0jZW5kaWYKICAgICByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
Q3JlZGVudGlhbENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0NyZWRlbnRpYWxDb2NvYS5oCmluZGV4IGYyY2Q5NjMyYzIwZTY1NTcwZGFjZTliOWMwOTExMDc3
NmQ3NmUzMTcuLjk0MzRkM2E3YTFhNTBiNTVkNThkOTBjNmVkYzUyZTI3ZDYwOTU5ZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENv
Y29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50
aWFsQ29jb2EuaApAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlIDxTZWN1cml0eS9TZWNCYXNl
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLXR5
cGVkZWYgY29uc3Qgc3RydWN0IF9DRlVSTENyZWRlbnRpYWwqIENGVVJMQ3JlZGVudGlhbFJlZjsK
LSNlbmRpZgotCiBPQkpDX0NMQVNTIE5TVVJMQ3JlZGVudGlhbDsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNTIsMTggKzQ4LDEyIEBAIHB1YmxpYzoKIAogICAgIENyZWRlbnRpYWwoY29uc3Qg
Q3JlZGVudGlhbCYsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotICAgIGV4cGxpY2l0IENyZWRlbnRpYWwoQ0ZVUkxDcmVkZW50aWFsUmVmKTsKLSNlbmRpZgog
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENyZWRlbnRpYWwoTlNVUkxDcmVkZW50aWFsICop
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKICAgICBib29s
IGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX25zQ3JlZGVu
dGlhbCAmJiBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKG1fbnNDcmVkZW50aWFsLmdldCgp
KTsgfQogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBDRlVSTENyZWRlbnRpYWxSZWYgY2ZDcmVk
ZW50aWFsKCkgY29uc3Q7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTENyZWRlbnRp
YWwgKm5zQ3JlZGVudGlhbCgpIGNvbnN0OwogCiAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21w
YXJlKGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBDcmVkZW50aWFsJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1t
CmluZGV4IGQ2OTYxYjY2NTJhMGZhZDJiMWQ4NmUxODg1YWY1MjUxMjg5YTIzNzEuLjdlMDVjNDYz
YTU1YWUzY2IyODk2NTZiYTEzMWQ5ZTIyNDBjMDA2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCkBAIC0y
NiwxMyArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJDcmVkZW50aWFsQ29j
b2EuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCi1AaW50ZXJmYWNlIE5TVVJMQ3JlZGVudGlhbCAo
V2ViRGV0YWlscykKLS0gKGlkKV9pbml0V2l0aENGVVJMQ3JlZGVudGlhbDooQ0ZVUkxDcmVkZW50
aWFsUmVmKWNyZWRlbnRpYWw7Ci0tIChDRlVSTENyZWRlbnRpYWxSZWYpIF9DRlVSTENyZWRlbnRp
YWw7Ci1AZW5kCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgTlNVUkxD
cmVkZW50aWFsUGVyc2lzdGVuY2UgdG9OU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZShDcmVkZW50
aWFsUGVyc2lzdGVuY2UgcGVyc2lzdGVuY2UpCkBAIC04NCwyNiArNzcsMTIgQEAgQ3JlZGVudGlh
bDo6Q3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFsJiBvcmlnaW5hbCwgQ3JlZGVudGlhbFBlcnNp
c3RlbmNlIHBlcnNpc3QKICAgICB9CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ3JlZGVudGlh
bDo6Q3JlZGVudGlhbChDRlVSTENyZWRlbnRpYWxSZWYgY3JlZGVudGlhbCkKLSAgICA6IENyZWRl
bnRpYWwoYWRvcHROUyhbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10gX2luaXRXaXRoQ0ZVUkxDcmVk
ZW50aWFsOmNyZWRlbnRpYWxdKS5nZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBDcmVkZW50aWFsOjpD
cmVkZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkKICAgICA6IENyZWRlbnRpYWxC
YXNlKGNyZWRlbnRpYWwudXNlciwgY3JlZGVudGlhbC5wYXNzd29yZCwgdG9DcmVkZW50aWFsUGVy
c2lzdGVuY2UoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSkpCiAgICAgLCBtX25zQ3JlZGVudGlhbChj
cmVkZW50aWFsKQogewogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJMQ3JlZGVudGlhbFJl
ZiBDcmVkZW50aWFsOjpjZkNyZWRlbnRpYWwoKSBjb25zdAotewotICAgIHJldHVybiBbbnNDcmVk
ZW50aWFsKCkgX0NGVVJMQ3JlZGVudGlhbF07Ci19Ci0jZW5kaWYKLQogTlNVUkxDcmVkZW50aWFs
ICpDcmVkZW50aWFsOjpuc0NyZWRlbnRpYWwoKSBjb25zdAogewogICAgIGlmIChtX25zQ3JlZGVu
dGlhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UHJvdGVjdGlvblNwYWNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EuaAppbmRleCA3NDg4MmQ3YTg4Yjc4MzFiNDE0Zjkw
ZGY3MWQxNWQ4OTI0NGUyMTUyLi5iODZhYjAzZDRmZjMyMzUzNDAzZmYwN2ZhYTgxODFlNTI5ODBm
N2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1By
b3RlY3Rpb25TcGFjZUNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5oCkBAIC0yOSwxMCArMjksNiBAQAogI2luY2x1
ZGUgIlByb3RlY3Rpb25TcGFjZUJhc2UuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUHJvdGVjdGlvblNwYWNl
KiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZjsKLSNlbmRpZgotCiBPQkpDX0NMQVNTIE5TVVJMUHJv
dGVjdGlvblNwYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw5ICs0Myw2IEBAIHB1
YmxpYzoKIAogICAgIFByb3RlY3Rpb25TcGFjZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5
cGUgZGVsZXRlZFZhbHVlKSA6IFByb3RlY3Rpb25TcGFjZUJhc2UoZGVsZXRlZFZhbHVlKSB7IH0K
IAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgZXhwbGljaXQgUHJvdGVjdGlvblNwYWNlKENGVVJM
UHJvdGVjdGlvblNwYWNlUmVmKTsKLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFByb3RlY3Rpb25TcGFjZShOU1VSTFByb3RlY3Rpb25TcGFjZSAqKTsKIAogICAgIHN0YXRpYyBi
b29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGEsIGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYgYik7CkBAIC01OCw5ICs1MSw2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgcmVjZWl2ZXNDcmVkZW50aWFsU2VjdXJlbHkoKSBjb25zdDsKIAotI2lmIFVT
RShDRk5FVFdPUkspCi0gICAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgY2ZTcGFjZSgpIGNvbnN0
OwotI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxQcm90ZWN0aW9uU3BhY2UgKm5zU3Bh
Y2UoKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tCmluZGV4IGFm
NGM0ZTA1NzY4YzA4ZjYzYjZkYTBkYTk5OTM0Nzg1YTEzZmI4YTMuLmRiMWZiNTFiZjk5MDI3YmMy
ZjM1MzBhNWQ1MThiMGZmN2I3ODYxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5tbQpAQCAt
MjYsMjIgKzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUHJvdGVjdGlvblNw
YWNlQ29jb2EuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCi1AaW50ZXJmYWNlIE5TVVJMUHJvdGVj
dGlvblNwYWNlIChXZWJEZXRhaWxzKQotLSAoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpIF9DRlVS
TFByb3RlY3Rpb25TcGFjZTsKLS0gKGlkKV9pbml0V2l0aENGVVJMUHJvdGVjdGlvblNwYWNlOihD
RlVSTFByb3RlY3Rpb25TcGFjZVJlZiljZlByb3RTcGFjZTsKLUBlbmQKLSNlbmRpZgotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotUHJvdGVjdGlvblNwYWNlOjpQ
cm90ZWN0aW9uU3BhY2UoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgc3BhY2UpCi0gICAgOiBQcm90
ZWN0aW9uU3BhY2UoYWRvcHROUyhbW05TVVJMUHJvdGVjdGlvblNwYWNlIGFsbG9jXSBfaW5pdFdp
dGhDRlVSTFByb3RlY3Rpb25TcGFjZTpzcGFjZV0pLmdldCgpKQotewotfQotI2VuZGlmCi0KIHN0
YXRpYyBQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlIHR5cGUoTlNVUkxQcm90ZWN0aW9uU3BhY2Ug
KnNwYWNlKQogewogICAgIGlmIChbc3BhY2UgaXNQcm94eV0pIHsKQEAgLTEwNSwxMyArOTEsNiBA
QCBQcm90ZWN0aW9uU3BhY2U6OlByb3RlY3Rpb25TcGFjZShOU1VSTFByb3RlY3Rpb25TcGFjZSAq
c3BhY2UpCiAgICAgbV9uc1NwYWNlID0gc3BhY2U7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgUHJvdGVjdGlvblNwYWNlOjpjZlNwYWNlKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gW25zU3BhY2UoKSBfQ0ZVUkxQcm90ZWN0aW9uU3BhY2VdOwotfQotI2Vu
ZGlmCi0KIE5TVVJMUHJvdGVjdGlvblNwYWNlICpQcm90ZWN0aW9uU3BhY2U6Om5zU3BhY2UoKSBj
b25zdAogewogICAgIGlmIChtX25zU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRl
eCAzYjFiMGEyZjg3NDc0N2IzOGEyYzgzODBmYjY1NTk4NmJkZWI5ZWNjLi45ZjVkMDJhYjY1YmM4
Y2E0MzJjODI0Mjg0ZThiZGMwMWFiN2EzOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0K
QEAgLTUzLDE1ICs1Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE5TVVJMUmVxdWVzdCAqUmVz
b3VyY2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9keVBvbGlj
eSkgY29uc3QKIHsKICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoYm9keVBvbGljeSk7Ci0jaWYg
VVNFKENGTkVUV09SSykKLSAgICBpZiAoIW1fbnNSZXF1ZXN0KQotICAgICAgICBjb25zdF9jYXN0
PFJlc291cmNlUmVxdWVzdCo+KHRoaXMpLT51cGRhdGVOU1VSTFJlcXVlc3QoKTsKLSNlbmRpZgog
ICAgIHJldHVybiBbW21fbnNSZXF1ZXN0LmdldCgpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogfQog
Ci0jaWYgIVVTRShDRk5FVFdPUkspCi0KIENGVVJMUmVxdWVzdFJlZiBSZXNvdXJjZVJlcXVlc3Q6
OmNmVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSBib2R5UG9saWN5KSBjb25zdAogewog
ICAgIHJldHVybiBbbnNVUkxSZXF1ZXN0KGJvZHlQb2xpY3kpIF9DRlVSTFJlcXVlc3RdOwpAQCAt
MjIyLDggKzIxNiw2IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbihD
RlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKQogICAgIG1fbnNSZXF1ZXN0ID0g
YWRvcHROUyh3a0NvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKHN0b3JhZ2VTZXNzaW9uLCBt
X25zUmVxdWVzdC5nZXQoKSkpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCmluZGV4IDBkN2U4
MjVlZjJiMTE4ODZiMzhkYmIzY2I5M2UwMDBiOGJkMmVlZTUuLmQxM2ZjZmNlY2U1NjMzNTE1MDkz
ZDIxMDIyOTQ3OGQyZDkzOWQ2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL1F1aWNrTG9vay5oCkBAIC00NCwxMSArNDQsNiBAQCBPQkpDX0NMQVNTIE5TVVJM
UmVxdWVzdDsKIE9CSkNfQ0xBU1MgTlNVUkxSZXNwb25zZTsKIE9CSkNfQ0xBU1MgUUxQcmV2aWV3
Q29udmVydGVyOwogCi0jaWYgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IF9DRlVSTFJl
c3BvbnNlKiBDRlVSTFJlc3BvbnNlUmVmOwotdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQ29ubmVjdGlv
biogQ0ZVUkxDb25uZWN0aW9uUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgUXVpY2tMb29rSGFuZGxlQ2xpZW50OwpAQCAtODIsOSArNzcsNiBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoY29u
c3QgU3RyaW5nJik7CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRs
ZT4gY3JlYXRlKFJlc291cmNlSGFuZGxlKiwgTlNVUkxDb25uZWN0aW9uICosIE5TVVJMUmVzcG9u
c2UgKiwgaWQgZGVsZWdhdGUpOwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJjZUhhbmRsZSosIFN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSosIENGVVJMUmVzcG9u
c2VSZWYpOwotI2VuZGlmCiAgICAgLy8gRklYTUU6IFVzZSBvZiBSZXNvdXJjZUxvYWRlciBoZXJl
IGlzIGEgcGxhdGZvcm0gdmlvbGF0aW9uLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VMb2FkZXImLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKQEAgLTk2LDkgKzg4LDYgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGlkRmFpbCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxS
ZXNwb25zZSAqbnNSZXNwb25zZSgpOwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxSZXNw
b25zZVJlZiBjZlJlc3BvbnNlKCk7Ci0jZW5kaWYKIAogICAgIHZvaWQgc2V0Q2xpZW50KFBhc3NS
ZWZQdHI8UXVpY2tMb29rSGFuZGxlQ2xpZW50PiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVp
Y2tMb29rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29r
Lm1tCmluZGV4IDE3ZWQ4NjQ2YTU5NDRhMGYwMWVkNTY4NzA5N2Q5N2NhYzcyMDg0ZjQuLmUyZGI0
NDA4ZjY1ODE5ODFiOWY2NmNiYWE2OWIwNGI1Yjc4MjM2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbXBvcnQgIlJlc291cmNlTG9hZGVyLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25D
aGVja3NJT1MuaCIKICNpbXBvcnQgIlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0
ZS5oIgogI2ltcG9ydCAiV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmgiCiAjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNDYs
MTUgKzQ3LDYgQEAKICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQgPENGTmV0d29yay9DRlVS
TENvbm5lY3Rpb24uaD4KLQotQGludGVyZmFjZSBOU1VSTFJlc3BvbnNlIChRdWlja0xvb2tEZXRh
aWxzKQotKyhOU1VSTFJlc3BvbnNlICopX3Jlc3BvbnNlV2l0aENGVVJMUmVzcG9uc2U6KENGVVJM
UmVzcG9uc2VSZWYpcmVzcG9uc2U7Ci0tKENGVVJMUmVzcG9uc2VSZWYpX0NGVVJMUmVzcG9uc2U7
Ci1AZW5kCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIE5TU2V0ICpXZWJD
b3JlOjpRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKQpAQCAtMTkyLDgzICsxODQs
NyBAQCBjb25zdCBjaGFyKiBXZWJDb3JlOjpRTFByZXZpZXdQcm90b2NvbCgpCiAgICAgcmV0dXJu
IHByZXZpZXdQcm90b2NvbC5nZXQoKS5kYXRhKCk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
Ly8gVGhlIHdheSBRdWlja0xvb2sgd29ya3MgaXMgd2UgcGFzcyBpdCBhbiBOU1VSTENvbm5lY3Rp
b25EZWxlZ2F0ZSBjYWxsYmFjayBvYmplY3QgYXQgY3JlYXRpb24KLS8vIHRpbWUuIFRoZW4gd2Ug
cGFzcyBpdCBhbGwgdGhlIGRhdGEgYXMgd2UgcmVjZWl2ZSBpdC4gT25jZSB3ZSd2ZSBkb3dubG9h
ZGVkIHRoZSBmdWxsIFVSTCwKLS8vIFF1aWNrTG9vayB0dXJucyBhcm91bmQgYW5kIHNlbmQgdXMs
IHRocm91Z2ggdGhpcyBkZWxlZ2F0ZSwgdGhlIEhUTUwgdmVyc2lvbiBvZiB0aGUgZmlsZSB3aGlj
aCB3ZQotLy8gcGFzcyBvbiB0byBXZWJDb3JlLiBUaGUgZmxhZyBtX2ZpbmlzaGVkTG9hZGluZ0Rh
dGFJbnRvQ29udmVydGVyIGluIFF1aWNrTG9va0hhbmRsZSBkZWNpZGVzCi0vLyB3aGV0aGVyIHRv
IHBhc3MgdGhlIGRhdGEgdG8gUXVpY2tMb29rIG9yIFdlYkNvcmUuCi0vLwotLy8gVGhpcyB3b3Jr
cyBmaW5lIHdoZW4gdXNpbmcgTlMgQVBJcywgYnV0IHdoZW4gdXNpbmcgQ0ZOZXR3b3JrLCB3ZSBk
b24ndCBoYXZlIGEgTlNVUkxDb25uZWN0aW9uRGVsZWdhdGUuCi0vLyBTbyB3ZSBjcmVhdGUgV2Vi
UXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZSBhcyBhbiBpbnRlcm1lZGlhdGUgZGVsZWdhdGUgb2Jq
ZWN0IGFuZCBwYXNzIGl0IHRvCi0vLyBRTFByZXZpZXdDb252ZXJ0ZXIuIFRoZSBwcm94eSBkZWxl
Z2F0ZSB0aGVuIGZvcndhcmRzIHRoZSBtZXNzYWdlcyBvbiB0byB0aGUgQ0ZOZXR3b3JrIGNvZGUu
Ci1AaW50ZXJmYWNlIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgOiBOU09iamVjdCA8TlNV
UkxDb25uZWN0aW9uRGVsZWdhdGU+IHsKLSAgICBSZWZQdHI8U3luY2hyb25vdXNSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZTsKLX0KLQot
LSAoaWQpaW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6KFN5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSopY29ubmVjdGlvbkRlbGVnYXRlOwotLSAodm9pZClj
bGVhckhhbmRsZTsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYlF1aWNrTG9va0hhbmRsZUFz
RGVsZWdhdGUKLS0gKGlkKWluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRlOihTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqKWNvbm5lY3Rpb25EZWxlZ2F0ZQot
ewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1
cm4gbmlsOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlID0gY29ubmVjdGlvbkRlbGVnYXRlOwot
ICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlv
biAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGFBcnJheTooTlNBcnJheSAqKWRhdGFBcnJheQot
ewotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBpZiAoIW1fY29ubmVjdGlvbkRl
bGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgTE9HKE5ldHdvcmssICJXZWJRdWlja0xvb2tI
YW5kbGVBc0RlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YUFycmF5KCkiKTsKLSAgICBtX2Nvbm5lY3Rp
b25EZWxlZ2F0ZS0+ZGlkUmVjZWl2ZURhdGFBcnJheShyZWludGVycHJldF9jYXN0PENGQXJyYXlS
ZWY+KGRhdGFBcnJheSkpOwotfQotCi0tICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlv
biAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEgbGVuZ3RoUmVjZWl2
ZWQ6KGxvbmcgbG9uZylsZW5ndGhSZWNlaXZlZAotewotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0
aW9uKTsKLSAgICBpZiAoIW1fY29ubmVjdGlvbkRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0g
ICAgTE9HKE5ldHdvcmssICJXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRSZWNlaXZl
RGF0YSgpIC0gZGF0YSBsZW5ndGggPSAlbGQiLCAobG9uZylbZGF0YSBsZW5ndGhdKTsKLQotICAg
IC8vIFF1aWNrTG9vayBjb2RlIHNlbmRzIHVzIGEgbmlsIGRhdGEgYXQgdGltZXMuIFRoZSBjaGVj
ayBiZWxvdyBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIGluCi0gICAgLy8gUmVzb3VyY2VIYW5kbGVN
YWMuY3BwIGFkZGVkIGZvciBhIGRpZmZlcmVudCBidWcuCi0gICAgaWYgKCFbZGF0YSBsZW5ndGhd
KQotICAgICAgICByZXR1cm47Ci0gICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZFJlY2VpdmVE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhKSwgc3RhdGljX2Nhc3Q8aW50Pihs
ZW5ndGhSZWNlaXZlZCkpOwotfQotCi0tICh2b2lkKWNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5n
OihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCi17Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5l
Y3Rpb24pOwotICAgIGlmICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsK
LSAgICBMT0coTmV0d29yaywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6OmRpZEZpbmlz
aExvYWRpbmcoKSIpOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRGaW5pc2hMb2FkaW5n
KCk7Ci19Ci0KLS0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlv
biBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKLXsKLSAgICBVTlVTRURfUEFSQU0o
Y29ubmVjdGlvbik7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlk
RmFpbCgpIik7Ci0gICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZEZhaWwocmVpbnRlcnByZXRf
Y2FzdDxDRkVycm9yUmVmPihlcnJvcikpOwotfQotCi0tICh2b2lkKWNsZWFySGFuZGxlCi17Ci0g
ICAgbV9jb25uZWN0aW9uRGVsZWdhdGUgPSBudWxscHRyOwotfQotQGVuZAotI2VuZGlmCi0KLUBp
bnRlcmZhY2UgV2ViUmVzb3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxO
U1VSTENvbm5lY3Rpb25EZWxlZ2F0ZT4geworQGludGVyZmFjZSBXZWJSZXNvdXJjZUxvYWRlclF1
aWNrTG9va0RlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlLCBXZWJD
b3JlUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZT4gewogICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4g
X3Jlc291cmNlTG9hZGVyOwogICAgIEJPT0wgX2hhc1NlbnREaWRSZWNlaXZlUmVzcG9uc2U7CiAg
ICAgQk9PTCBfaGFzRmFpbGVkOwpAQCAtMzU5LDcgKzI3NSw3IEBAIC0gKHZvaWQpY29ubmVjdGlv
bjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9y
ICopZXJyCiAgICAgX3Jlc291cmNlTG9hZGVyLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3Ip
KTsKIH0KIAotLSAodm9pZCljbGVhckhhbmRsZQorLSAodm9pZClkZXRhY2hIYW5kbGUKIHsKICAg
ICBfcmVzb3VyY2VMb2FkZXIgPSBudWxscHRyOwogICAgIF9xdWlja0xvb2tIYW5kbGUgPSBudWxs
cHRyOwpAQCAtNDE1LDI2ICszMzEsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxl
PiBRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLAogICAgIHJl
dHVybiBXVEY6Om1vdmUocXVpY2tMb29rSGFuZGxlKTsKIH0KIAotI2lmIFVTRShDRk5FVFdPUksp
Ci1zdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBRdWlja0xvb2tIYW5kbGU6OmNyZWF0
ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUqIGNvbm5lY3Rpb25EZWxlZ2F0ZSwgQ0ZVUkxSZXNwb25zZVJlZiBj
ZlJlc3BvbnNlKQotewotICAgIEFTU0VSVF9BUkcoaGFuZGxlLCBoYW5kbGUpOwotICAgIGlmICho
YW5kbGUtPmZpcnN0UmVxdWVzdCgpLnJlcXVlc3RlcigpICE9IFJlc291cmNlUmVxdWVzdDo6UmVx
dWVzdGVyOjpNYWluIHx8ICFbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkgY29u
dGFpbnNPYmplY3Q6KE5TU3RyaW5nICopQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKGNmUmVzcG9u
c2UpXSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBOU1VSTFJlc3BvbnNlICpuc1Jl
c3BvbnNlID0gW05TVVJMUmVzcG9uc2UgX3Jlc3BvbnNlV2l0aENGVVJMUmVzcG9uc2U6Y2ZSZXNw
b25zZV07Ci0gICAgV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZSAqZGVsZWdhdGUgPSBbW1tX
ZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aENvbm5lY3Rpb25EZWxl
Z2F0ZTpjb25uZWN0aW9uRGVsZWdhdGVdIGF1dG9yZWxlYXNlXTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8UXVpY2tMb29rSGFuZGxlPiBxdWlja0xvb2tIYW5kbGUobmV3IFF1aWNrTG9va0hhbmRsZShb
aGFuZGxlLT5maXJzdFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSkg
VVJMXSwgbmlsLCBuc1Jlc3BvbnNlLCBkZWxlZ2F0ZSkpOwotICAgIGhhbmRsZS0+Y2xpZW50KCkt
PmRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZSgqcXVpY2tMb29rSGFuZGxlKTsKLSAgICByZXR1cm4g
V1RGOjptb3ZlKHF1aWNrTG9va0hhbmRsZSk7Ci19Ci0KLUNGVVJMUmVzcG9uc2VSZWYgUXVpY2tM
b29rSGFuZGxlOjpjZlJlc3BvbnNlKCkKLXsKLSAgICByZXR1cm4gW21fbnNSZXNwb25zZSBfQ0ZV
UkxSZXNwb25zZV07Ci19Ci0jZW5kaWYKLQogYm9vbCBRdWlja0xvb2tIYW5kbGU6OnNob3VsZENy
ZWF0ZUZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgcmV0dXJuIFtR
TFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSBjb250YWluc09iamVjdDptaW1lVHlw
ZV07CkBAIC01MDAsNyArMzk2LDcgQEAgUXVpY2tMb29rSGFuZGxlOjp+UXVpY2tMb29rSGFuZGxl
KCkKICAgICBMT0coTmV0d29yaywgIlF1aWNrTG9va0hhbmRsZTo6flF1aWNrTG9va0hhbmRsZSgp
Iik7CiAgICAgbV9jb252ZXJ0ZXIgPSBudWxscHRyOwogCi0gICAgW21fZGVsZWdhdGUgY2xlYXJI
YW5kbGVdOworICAgIFttX2RlbGVnYXRlIGRldGFjaEhhbmRsZV07CiB9CiAKIFN0cmluZyBRdWlj
a0xvb2tIYW5kbGU6OnByZXZpZXdGaWxlTmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCmluZGV4
IDY2N2I5YjE4NjY3NDQwZGViZmVmZGExODA1Yjg0Y2I1NDc4NGM1NzkuLmI3MjlmMGYzNjIxOWRj
NDFmM2FkZWIzMTk0MjFmZjk2NTdmNDgxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCkBAIC0xLDM5ICsx
IEBACi0vLwotLy8gIFJlc291cmNlSGFuZGxlSVBob25lLm1tCi0vLyAgV2ViQ29yZQotLy8KLS8v
ICBDb3B5cmlnaHQgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKLQot
I2lmIFVTRShDRk5FVFdPUkspCi0KLSNpbXBvcnQgPENGTmV0d29yay9DRlNvY2tldFN0cmVhbVBy
aXYuaD4KLSNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0UHJpdmF0ZS5oPgotCi11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DRk11dGFibGVE
aWN0aW9uYXJ5UmVmIFJlc291cmNlSGFuZGxlOjpjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJM
UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgTlNTdHJpbmcg
Kmhvc3QgPSByZXF1ZXN0LnVybCgpLmhvc3QoKTsKLSAgICBOU0FycmF5ICpjZXJ0QXJyYXkgPSBb
TlNVUkxSZXF1ZXN0IGFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Q6aG9zdF07
Ci0gICAgQk9PTCBhbGxvd3NBbnlDZXJ0aWZpY2F0ZSA9IFtOU1VSTFJlcXVlc3QgYWxsb3dzQW55
SFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Q6aG9zdF07Ci0gICAgaWYgKCFjZXJ0QXJyYXkgJiYgIWFs
bG93c0FueUNlcnRpZmljYXRlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIENGTXV0YWJsZURp
Y3Rpb25hcnlSZWYgc3NsUHJvcHMgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVE
aWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAgIGlmIChjZXJ0QXJyYXkpCi0gICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHNzbFByb3BzLCBfa0NGU3RyZWFtU1NMVHJ1c3RlZExlYWZDZXJ0
aWZpY2F0ZXMsIChDRlR5cGVSZWYpIGNlcnRBcnJheSk7Ci0KLSAgICBpZiAoYWxsb3dzQW55Q2Vy
dGlmaWNhdGUpCi0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHNzbFByb3BzLCBrQ0ZTdHJl
YW1TU0xWYWxpZGF0ZXNDZXJ0aWZpY2F0ZUNoYWluLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIHJl
dHVybiBzc2xQcm9wczsKLX0KLQotfQotCi0jZW5kaWYKKy8vIFJlbW92ZSBtZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VSZXF1ZXN0SU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VSZXF1ZXN0
SU9TLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjdkYzZiZTYzNDVjYzU2OTZh
MWVjNmViZDAwMzJmMzIzNGRmYjAwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNl
UmVxdWVzdElPUy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiUmVzb3VyY2VSZXF1ZXN0LmgiCi0KLSNpZiBQTEFURk9STShJT1MpCi0KLUBpbnRl
cmZhY2UgTlNVUkxSZXF1ZXN0IChXZWJOU1VSTFJlcXVlc3REZXRhaWxzKQotLSAoQ0ZVUkxSZXF1
ZXN0UmVmKV9DRlVSTFJlcXVlc3Q7Ci0tIChpZClfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6KENGVVJM
UmVxdWVzdFJlZilyZXF1ZXN0OwotQGVuZAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBV
U0UoQ0ZORVRXT1JLKQotCi1SZXNvdXJjZVJlcXVlc3Q6OlJlc291cmNlUmVxdWVzdChOU1VSTFJl
cXVlc3QgKm5zUmVxdWVzdCkKLSAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoKQotICAgICwgbV9j
ZlJlcXVlc3QoW25zUmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSkKLSAgICAsIG1fbnNSZXF1ZXN0KG5z
UmVxdWVzdCkKLXsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZU5TVVJMUmVxdWVz
dCgpCi17Ci0gICAgaWYgKG1fY2ZSZXF1ZXN0KQotICAgICAgICBtX25zUmVxdWVzdCA9IGFkb3B0
TlMoW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6bV9j
ZlJlcXVlc3QuZ2V0KCldKTsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmNsZWFyT3JVcGRh
dGVOU1VSTFJlcXVlc3QoKQotewotICAgIC8vIFRoZXJlIGlzIGNsaWVudCBjb2RlIHRoYXQgZXh0
ZW5kcyBOU1VSTFJlcXVlc3QgYW5kIGV4cGVjdHMgdG8gZ2V0IGJhY2ssIGluIHRoZSBkZWxlZ2F0
ZQotICAgIC8vIGNhbGxiYWNrcywgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgdGhhdCB0aGV5
IHBhc3NlZCBpbnRvIFdlYktpdC4gVG8ga2VlcCB0aGVuIHJ1bm5pbmcsIHdlCi0gICAgLy8gY3Jl
YXRlIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFuZCByZXR1cm4gdGhhdC4gU2VlIDxyZGFy
Oi8vOTg0MzU4Mj4uCi0gICAgLy8gQWxzbywgZGV2ZWxvcGVycyByZWFsbHkgcmVhbGx5IHdhbnQg
YW4gTlNNdXRhYmxlVVJMUmVxdWVzdCBzbyB0cnkgdG8gY3JlYXRlIGFuCi0gICAgLy8gTlNNdXRh
YmxlVVJMUmVxdWVzdCBpbnN0ZWFkIG9mIE5TVVJMUmVxdWVzdC4KLSAgICBzdGF0aWMgQ2xhc3Mg
bnNVUkxSZXF1ZXN0Q2xhc3MgPSBbTlNVUkxSZXF1ZXN0IGNsYXNzXTsKLSAgICBzdGF0aWMgQ2xh
c3MgbnNNdXRhYmxlVVJMUmVxdWVzdENsYXNzID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgY2xhc3Nd
OwotICAgIENsYXNzIHJlcXVlc3RDbGFzcyA9IFttX25zUmVxdWVzdC5nZXQoKSBjbGFzc107Ci0K
LSAgICBpZiAoIW1fY2ZSZXF1ZXN0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAocmVxdWVz
dENsYXNzICYmIHJlcXVlc3RDbGFzcyAhPSBuc1VSTFJlcXVlc3RDbGFzcyAmJiByZXF1ZXN0Q2xh
c3MgIT0gbnNNdXRhYmxlVVJMUmVxdWVzdENsYXNzKQotICAgICAgICBtX25zUmVxdWVzdCA9IGFk
b3B0TlMoW1tyZXF1ZXN0Q2xhc3MgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDptX2NmUmVx
dWVzdC5nZXQoKV0pOwotICAgIGVsc2UKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBudWxscHRyOwot
fQotCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQppbmRleCBlMzhiMDM4N2Rl
MDQ2YzdjMDE1NzQzZDdiYjdlYTM2ZTQwOTM4MDIyLi5hODJhNTVjMzM4ODM3ZDcwZTJlMWE1YjAz
MmM3MmJjOTMzNjk4ZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQpAQCAtMzIsMTggKzMyLDEyIEBACiAj
aW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbXBv
cnQgPEZvdW5kYXRpb24vTlNVUkxQcm90ZWN0aW9uU3BhY2UuaD4KIAotI2lmIFVTRShDRk5FVFdP
UkspCi0jaW1wb3J0ICJDRk5TVVJMQ29ubmVjdGlvblNQSS5oIgotI2VuZGlmCiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVu
dEFzQ2hhbGxlbmdlU2VuZGVyIDogTlNPYmplY3QgPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VTZW5kZXI+CiB7CiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIG1fY2xpZW50OwotI2lmIFVT
RShDRk5FVFdPUkspCi0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIG1fY2ZDaGFsbGVuZ2U7Ci0j
ZW5kaWYKIH0KIC0gKGlkKWluaXRXaXRoQXV0aGVudGljYXRpb25DbGllbnQ6KEF1dGhlbnRpY2F0
aW9uQ2xpZW50KiljbGllbnQ7CiAtIChBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50OwpAQCAt
ODksNDcgKzgzLDEwIEBAIC0gKHZvaWQpY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKICAgICAgICAgbV9jbGllbnQt
PnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvcmUoY2hhbGxlbmdlKSk7CiB9CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotLSAodm9pZClzZXRDRkNoYWxsZW5nZTooQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKWNo
YWxsZW5nZQotewotICAgIG1fY2ZDaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7Ci19Ci0KLS0gKENGVVJM
QXV0aENoYWxsZW5nZVJlZiljZkNoYWxsZW5nZQotewotICAgIHJldHVybiBtX2NmQ2hhbGxlbmdl
OwotfQotI2VuZGlmCi0KIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENG
TkVUV09SSykKLQotQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY29yZShOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlICptYWNDaGFsbGVuZ2UpCi17Ci0gICAgV2ViQ29yZUF1dGhlbnRpY2F0aW9u
Q2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgKmNoYWxsZW5nZVNlbmRlciA9IChXZWJDb3JlQXV0aGVu
dGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciopIFttYWNDaGFsbGVuZ2Ugc2VuZGVyXTsK
LSAgICByZXR1cm4gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoW2NoYWxsZW5nZVNlbmRlciBjZkNo
YWxsZW5nZV0sIFtjaGFsbGVuZ2VTZW5kZXIgY2xpZW50XSk7Ci19Ci0KLU5TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgKm1hYyhjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNo
YWxsZW5nZSkKLXsKLSAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0aENsaWVudCA9IGNvcmVD
aGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKTsKLSAgICBSZXRhaW5QdHI8V2ViQ29yZUF1
dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXI+IGNoYWxsZW5nZVNlbmRlciA9IGFk
b3B0TlMoW1tXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciBhbGxv
Y10gaW5pdFdpdGhBdXRoZW50aWNhdGlvbkNsaWVudDphdXRoQ2xpZW50XSk7Ci0gICAgUmV0YWlu
UHRyPENGVVJMQXV0aENoYWxsZW5nZVJlZj4gYXV0aENoYWxsZW5nZSA9IGNvcmVDaGFsbGVuZ2Uu
Y2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCk7Ci0gICAgaWYgKCFhdXRoQ2hhbGxlbmdlKQotICAgICAg
ICBhdXRoQ2hhbGxlbmdlID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlKSk7Ci0gICAg
W2NoYWxsZW5nZVNlbmRlci5nZXQoKSBzZXRDRkNoYWxsZW5nZTphdXRoQ2hhbGxlbmdlLmdldCgp
XTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgcmV0dXJuIFtbTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSBfY3JlYXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VGb3JDRkF1dGhDaGFsbGVuZ2U6
YXV0aENoYWxsZW5nZS5nZXQoKSBzZW5kZXI6Y2hhbGxlbmdlU2VuZGVyLmdldCgpXSBhdXRvcmVs
ZWFzZV07Ci0jZWxzZQotICAgIHJldHVybiBbW05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
X2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRm9yQ0ZBdXRoQ2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2Uu
Z2V0KCkgc2VuZGVyOmNoYWxsZW5nZVNlbmRlci5nZXQoKV0gYXV0b3JlbGVhc2VdOwotI2VuZGlm
Ci19Ci0KLSNlbHNlCi0KIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDcmVkZW50aWFs
JiBwcm9wb3NlZENyZWRlbnRpYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsCkBAIC0yMDMsNiAr
MTYwLDQgQEAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY29yZShOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlICptYWNDaGFsbGVuZ2UpCiAgICAgcmV0dXJuIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKG1hY0NoYWxsZW5nZSk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9Db29raWVKYXJNYWMubW0KaW5kZXggMTZkMTBlMjA3MDA0MWE4N2U0NjNjZWYyNDc0
YzNjNDg5ZGQzZmFlYS4uODJkNGY1ZmUyNTJhOGVjYmVlNzZiMjdhNDIyZjUxNzM3NDI4MGFiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUph
ck1hYy5tbQpAQCAtMzEsOCArMzEsNiBAQAogI2ltcG9ydCAiTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAKLSNpZiAhVVNFKENGTkVU
V09SSykKLQogI2ltcG9ydCAiQ29va2llLmgiCiAjaW1wb3J0ICJDb29raWVTdG9yYWdlLmgiCiAj
aW1wb3J0ICJVUkwuaCIKQEAgLTIwMCwxMiArMTk4LDYgQEAgdm9pZCBkZWxldGVBbGxDb29raWVz
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKICAgICB3a0RlbGV0ZUFsbEhU
VFBDb29raWVzKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKTsKIH0KIAotfQotCi0jZW5k
aWYgLy8gIVVTRShDRk5FVFdPUkspCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQogc3RhdGljIE5T
SFRUUENvb2tpZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uKQogewogICAgIGF1dG8gY29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2ll
U3RvcmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbQppbmRleCA5ZWJjODU0ZGNkYjQ4ZDU3ZThm
ODI4Njk0NDI0ZWNkNDliNzMzNmVjLi5mMGE0ZjNhZjc2NDE1Y2IyNmMyOTRiZDgxMzkxM2ZlMjIz
M2IzNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9D
cmVkZW50aWFsU3RvcmFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAKLSNpZiAhVVNF
KENGTkVUV09SSykKLQogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW5jbHVkZSAi
Q3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgpAQCAtNTIsNSArNTAs
MyBAQCB2b2lkIENyZWRlbnRpYWxTdG9yYWdlOjpzYXZlVG9QZXJzaXN0ZW50U3RvcmFnZShjb25z
dCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3RpbwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgKaW5kZXggZGI4
MWM2Njg3YzQyMmU1ZWNiYzM2OTBlMjM0NWFmODIyNGFkMDZjNi4uZTJjOGI4OTZhOGEyNDg5N2Ix
MmYwMmU0N2ViMDU1MTFkOWJkNDBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCkBAIC0yOSw4ICsyOSw2IEBA
CiAjaWZuZGVmIEZvcm1EYXRhU3RyZWFtTWFjX2gKICNkZWZpbmUgRm9ybURhdGFTdHJlYW1NYWNf
aAogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBDRlVSTFJlcXVlc3RSZWY7CkBAIC00
OSw2ICs0Nyw1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCiAKICNlbmRpZiAvLyBGb3JtRGF0YVN0cmVh
bU1hY19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9G
b3JtRGF0YVN0cmVhbU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L0Zvcm1EYXRhU3RyZWFtTWFjLm1tCmluZGV4IGI1NzM0Zjk4ZWRmYmYxMTM1ZTE3ZDRiN2ViYzI5
Y2M1NWZlMDQzNTEuLjdiN2QxZDNhMTVlMzk1NzQzYzk0NDkxODM0YzMyOThlMjNjZmExOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3Ry
ZWFtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1E
YXRhU3RyZWFtTWFjLm1tCkBAIC0yOSw4ICsyOSw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgIkZvcm1EYXRhU3RyZWFtTWFjLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2lt
cG9ydCAiRm9ybURhdGEuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKICNpbXBv
cnQgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC01Miw1ICs1MCwzIEBAIEZvcm1EYXRhKiBodHRwQm9k
eUZyb21TdHJlYW0oTlNJbnB1dFN0cmVhbSAqc3RyZWFtKQogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCmluZGV4IGY3
Yzg2NGNlM2I1MDk5ZmUwMmYxNjk2OWFjZTM5N2Y2ODJlODNkYmEuLmZiNzc2NmY1NzZiMmZiYzE2
MzgyNWZmYTkyMjhjMzI1Zjg4MDlmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQpAQCAtMzEsMTAgKzMxLDYg
QEAKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGRXJyb3IuaD4KICNpbXBvcnQgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5oPgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBVU0UoQ0ZORVRXT1JLKQot
I2ltcG9ydCA8Q0ZOZXR3b3JrL0NGU29ja2V0U3RyZWFtUHJpdi5oPgotI2VuZGlmCi0KIEBpbnRl
cmZhY2UgTlNFcnJvciAoV2ViRXh0cmFzKQogLSAoTlNTdHJpbmcgKilfd2ViX2xvY2FsaXplZERl
c2NyaXB0aW9uOwogQGVuZApAQCAtOTEsODUgKzg3LDYgQEAgLSAodm9pZCllbmNvZGVXaXRoQ29k
ZXI6KE5TQ29kZXIgKiljb2RlcgogCiBAZW5kCiAKLQotI2lmIFVTRShDRk5FVFdPUkspCi1zdGF0
aWMgTlNFcnJvciAqTlNFcnJvckZyb21DRkVycm9yKENGRXJyb3JSZWYgY2ZFcnJvciwgTlNVUkwg
KnVybCkKLXsKLSAgICBDRkluZGV4IGVyckNvZGUgPSBDRkVycm9yR2V0Q29kZShjZkVycm9yKTsK
LSAgICBpZiAoQ0ZFcXVhbChDRkVycm9yR2V0RG9tYWluKGNmRXJyb3IpLCBrQ0ZFcnJvckRvbWFp
bkNGTmV0d29yaykgJiYgZXJyQ29kZSA8PSBrQ0ZVUkxFcnJvclVua25vd24gJiYgZXJyQ29kZSA+
IC00MDAwKSB7Ci0gICAgICAgIC8vIFRoaXMgaXMgYW4gVVJMIGVycm9yIGFuZCBuZWVkcyB0byBi
ZSB0cmFuc2xhdGVkIHRvIHRoZSBOU1VSTEVycm9yRG9tYWluCi0gICAgICAgIGlkIGtleXNbMTBd
LCB2YWx1ZXNbMTBdOwotICAgICAgICBDRkRpY3Rpb25hcnlSZWYgdXNlckluZm8gPSBDRkVycm9y
Q29weVVzZXJJbmZvKGNmRXJyb3IpOwotICAgICAgICBOU0Vycm9yICpyZXN1bHQ7Ci0gICAgICAg
IE5TSW50ZWdlciBjb3VudCA9IDA7Ci0KLSAgICAgICAgaWYgKHVybCkgewotICAgICAgICAgICAg
a2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFpbGluZ1VSTEVycm9yS2V5OwotICAgICAgICAgICAg
dmFsdWVzW2NvdW50XSA9IHVybDsKLSAgICAgICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgICAg
ICBrZXlzW2NvdW50XSA9IE5TVVJMRXJyb3JGYWlsaW5nVVJMU3RyaW5nRXJyb3JLZXk7Ci0gICAg
ICAgICAgICB2YWx1ZXNbY291bnRdID0gW3VybCBhYnNvbHV0ZVN0cmluZ107Ci0gICAgICAgICAg
ICBjb3VudCArKzsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRpb25L
ZXkpOwotICAgICAgICBpZiAodmFsdWVzW2NvdW50XSkgewotICAgICAgICAgICAga2V5c1tjb3Vu
dF0gPSBOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5OwotICAgICAgICAgICAgY291bnQgKys7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZh
bHVlKHVzZXJJbmZvLCBrQ0ZFcnJvckxvY2FsaXplZEZhaWx1cmVSZWFzb25LZXkpOwotICAgICAg
ICBpZiAodmFsdWVzW2NvdW50XSkgewotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xvY2Fs
aXplZEZhaWx1cmVSZWFzb25FcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1
c2VySW5mbywga0NGRXJyb3JMb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25LZXkpOwotICAgICAg
ICBpZiAodmFsdWVzW2NvdW50XSkgewotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xvY2Fs
aXplZFJlY292ZXJ5U3VnZ2VzdGlvbkVycm9yS2V5OwotICAgICAgICAgICAgY291bnQgKys7Ci0g
ICAgICAgIH0KLQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgICAgICBp
ZiAodXNlckluZm8gJiYgKHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
dXNlckluZm8sIGtDRlN0cmVhbVByb3BlcnR5U1NMUGVlckNlcnRpZmljYXRlcykpICE9IG5pbCkg
ewotICAgICAgICAgICAgLy8gTmVlZCB0byB0cmFuc2xhdGUgdGhlIGNlcnQKLSAgICAgICAgICAg
IGtleXNbY291bnRdID0gQCJOU0Vycm9yUGVlckNlcnRpZmljYXRlQ2hhaW5LZXkiOwotICAgICAg
ICAgICAgY291bnQgKys7Ci0KLSAgICAgICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIF9rQ0ZTdHJlYW1Qcm9wZXJ0eVNTTENsaWVudENlcnRp
ZmljYXRlcyk7Ci0gICAgICAgICAgICBpZiAodmFsdWVzW2NvdW50XSkgewotICAgICAgICAgICAg
ICAgIGtleXNbY291bnRdID0gQCJOU0Vycm9yQ2xpZW50Q2VydGlmaWNhdGVDaGFpbktleSI7Ci0g
ICAgICAgICAgICAgICAgY291bnQgKys7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZh
bHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIF9rQ0ZTdHJl
YW1Qcm9wZXJ0eVNTTENsaWVudENlcnRpZmljYXRlU3RhdGUpOwotICAgICAgICAgICAgaWYgKHZh
bHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvckNs
aWVudENlcnRpZmljYXRlU3RhdGVLZXkiOwotICAgICAgICAgICAgICAgIGNvdW50ICsrOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0KLSAg
ICAgICAgaWYgKHVzZXJJbmZvICYmICh2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdl
dFZhbHVlKHVzZXJJbmZvLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNTTFBlZXJUcnVzdCkpICE9IG5pbCkg
ewotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFpbGluZ1VSTFBlZXJUcnVz
dEVycm9yS2V5OwotICAgICAgICAgICAgY291bnQrKzsKLSAgICAgICAgfQotCi0gICAgICAgIGtl
eXNbY291bnRdID0gTlNVbmRlcmx5aW5nRXJyb3JLZXk7Ci0gICAgICAgIHZhbHVlc1tjb3VudF0g
PSAoaWQpY2ZFcnJvcjsKLSAgICAgICAgY291bnQgKys7Ci0KLSAgICAgICAgcmVzdWx0ID0gW1dl
YkN1c3RvbU5TVVJMRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZToo
ZXJyQ29kZSA9PSBrQ0ZVUkxFcnJvclVua25vd24gPyAoQ0ZJbmRleClOU1VSTEVycm9yVW5rbm93
biA6IGVyckNvZGUpIHVzZXJJbmZvOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Rz
OnZhbHVlcyBmb3JLZXlzOmtleXMgY291bnQ6Y291bnRdXTsKLSAgICAgICAgaWYgKHVzZXJJbmZv
KQotICAgICAgICAgICAgQ0ZSZWxlYXNlKHVzZXJJbmZvKTsKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLSAgICB9Ci0gICAgcmV0dXJuIChOU0Vycm9yICopY2ZFcnJvcjsKLX0KLSNlbmRpZiAvLyBV
U0UoQ0ZORVRXT1JLKQotCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0xOTMsNTMgKzExMCw2IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gY3Jl
YXRlTlNFcnJvckZyb21SZXNvdXJjZUVycm9yQmFzZShjb25zdCBSZXNvdXJjZUVycm9yCiAgICAg
cmV0dXJuIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpyZXNvdXJjZUVy
cm9yLmRvbWFpbigpIGNvZGU6cmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSB1c2VySW5mbzp1c2Vy
SW5mby5nZXQoKV0pOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VFcnJvcjo6
UmVzb3VyY2VFcnJvcihOU0Vycm9yICplcnJvcikKLSAgICA6IG1fZGF0YUlzVXBUb0RhdGUoZmFs
c2UpCi0gICAgLCBtX3BsYXRmb3JtRXJyb3IocmVpbnRlcnByZXRfY2FzdDxDRkVycm9yUmVmPihl
cnJvcikpCi17Ci0gICAgbV9pc051bGwgPSAhZXJyb3I7Ci0gICAgaWYgKCFtX2lzTnVsbCkKLSAg
ICAgICAgbV9pc1RpbWVvdXQgPSBbZXJyb3IgY29kZV0gPT0gTlNVUkxFcnJvclRpbWVkT3V0Owot
fQotCi1OU0Vycm9yICpSZXNvdXJjZUVycm9yOjpuc0Vycm9yKCkgY29uc3QKLXsKLSAgICBpZiAo
bV9pc051bGwpIHsKLSAgICAgICAgQVNTRVJUKCFtX3BsYXRmb3JtRXJyb3IpOwotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIH0KLQotICAgIGlmIChtX3BsYXRmb3JtTlNFcnJvcikKLSAgICAgICAg
cmV0dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOwotCi0gICAgaWYgKG1fcGxhdGZvcm1FcnJv
cikgewotICAgICAgICBDRkVycm9yUmVmIGVycm9yID0gbV9wbGF0Zm9ybUVycm9yLmdldCgpOwot
ICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiB1c2VySW5mbyA9IGFkb3B0Q0YoQ0ZF
cnJvckNvcHlVc2VySW5mbyhlcnJvcikpOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgbV9w
bGF0Zm9ybU5TRXJyb3IgPSBOU0Vycm9yRnJvbUNGRXJyb3IoZXJyb3IsIChOU1VSTCAqKVsoTlNE
aWN0aW9uYXJ5ICopdXNlckluZm8uZ2V0KCkgb2JqZWN0Rm9yS2V5OihpZCkga0NGVVJMRXJyb3JG
YWlsaW5nVVJMRXJyb3JLZXldKTsKLSAgICAgICAgLy8gSWYgTlNFcnJvckZyb21DRkVycm9yIGNy
ZWF0ZWQgYSBuZXcgTlNFcnJvciBmb3IgdXMsIHJldHVybiB0aGF0LgotICAgICAgICBpZiAobV9w
bGF0Zm9ybU5TRXJyb3IuZ2V0KCkgIT0gKE5TRXJyb3IgKillcnJvcikKLSAgICAgICAgICAgIHJl
dHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLQotICAgICAgICAvLyBPdGhlcndpc2UgZmFs
bCB0aHJvdWdoIHRvIGNyZWF0ZSBhIG5ldyBOU0Vycm9yIGZyb20gdGhlIENGRXJyb3IuCi0jZW5k
aWYKLSAgICAgICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10g
aW5pdFdpdGhEb21haW46KE5TU3RyaW5nICopQ0ZFcnJvckdldERvbWFpbihlcnJvcikgY29kZTpD
RkVycm9yR2V0Q29kZShlcnJvcikgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvLmdl
dCgpXSk7Ci0gICAgICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLSAgICB9Ci0K
LSAgICBtX3BsYXRmb3JtTlNFcnJvciA9IGNyZWF0ZU5TRXJyb3JGcm9tUmVzb3VyY2VFcnJvckJh
c2UoKnRoaXMpOwotICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLX0KLQotUmVz
b3VyY2VFcnJvcjo6b3BlcmF0b3IgTlNFcnJvciAqKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbnNF
cnJvcigpOwotfQotCi0jZWxzZQotCiBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKE5TRXJy
b3IgKm5zRXJyb3IpCiAgICAgOiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQogICAgICwgbV9wbGF0
Zm9ybUVycm9yKG5zRXJyb3IpCkBAIC0zMTIsNiArMTgyLDQgQEAgUmVzb3VyY2VFcnJvcjo6b3Bl
cmF0b3IgQ0ZFcnJvclJlZigpIGNvbnN0CiAgICAgcmV0dXJuIGNmRXJyb3IoKTsKIH0KIAotI2Vu
ZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVN
YWMubW0KaW5kZXggYmJhMDUzMzY2NjcyNTg3MTU0NTJkMTA2OWRiNDY4ZjAwZTdlZTk2Ni4uNmVm
ZTcxZjg4NTUxNTQyMWNhYjMzZWE1ZjhlNTgzYWQwMDk1NDNiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0K
QEAgLTU2LDE2ICs1Niw2IEBACiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaWYgX19oYXNfaW5j
bHVkZSg8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4pCi0jaW1wb3J0IDxDRk5ldHdv
cmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPgotI2VuZGlmCi10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxD
b25uZWN0aW9uKiBDRlVSTENvbm5lY3Rpb25SZWY7Ci1leHRlcm4gIkMiIHsKLUNGRGljdGlvbmFy
eVJlZiBfQ0ZVUkxDb25uZWN0aW9uQ29weVRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmKTsK
LX0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiAjaWYgX19oYXNfaW5jbHVkZSg8Rm91bmRh
dGlvbi9OU1VSTENvbm5lY3Rpb25Qcml2YXRlLmg+KQogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VS
TENvbm5lY3Rpb25Qcml2YXRlLmg+CiAjZWxzZQpAQCAtOTgsOSArODgsNyBAQCAtKGlkKV9pbml0
V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgZGVsZWdhdGU6KGlkKWRlbGVnYXRl
IHVzZXNDYWNoZTooQgogQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi0jaWYgIVVT
RShDRk5FVFdPUkspCi0gICAgCisKIHN0YXRpYyB2b2lkIGFwcGx5QmFzaWNBdXRob3JpemF0aW9u
SGVhZGVyKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVu
dGlhbCkKIHsKICAgICBTdHJpbmcgYXV0aGVudGljYXRpb25IZWFkZXIgPSAiQmFzaWMgIiArIGJh
c2U2NEVuY29kZShTdHJpbmcoY3JlZGVudGlhbC51c2VyKCkgKyAiOiIgKyBjcmVkZW50aWFsLnBh
c3N3b3JkKCkpLnV0ZjgoKSk7CkBAIC0yODAsMTIgKzI2OCw2IEBAIGJvb2wgUmVzb3VyY2VIYW5k
bGU6OnN0YXJ0KCkKICAgICAgICAgW2Nvbm5lY3Rpb24oKSBzZXREZWxlZ2F0ZVF1ZXVlOm9wZXJh
dGlvblF1ZXVlRm9yQXN5bmNDbGllbnRzKCldOwogICAgICAgICBzY2hlZHVsZWQgPSB0cnVlOwog
ICAgIH0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgZWxzZSB7Ci0gICAgICAgIFtjb25uZWN0aW9u
KCkgc2NoZWR1bGVJblJ1bkxvb3A6V2ViVGhyZWFkTlNSdW5Mb29wKCkgZm9yTW9kZTpOU0RlZmF1
bHRSdW5Mb29wTW9kZV07Ci0gICAgICAgIHNjaGVkdWxlZCA9IHRydWU7Ci0gICAgfQotI2VuZGlm
CiAKICAgICAvLyBTdGFydCB0aGUgY29ubmVjdGlvbiBpZiB3ZSBkaWQgc2NoZWR1bGUgd2l0aCBh
dCBsZWFzdCBvbmUgcnVubG9vcC4KICAgICAvLyBXZSBjYW4ndCBzdGFydCB0aGUgY29ubmVjdGlv
biB1bnRpbCB3ZSBoYXZlIG9uZSBydW5sb29wIHNjaGVkdWxlZC4KQEAgLTMyNSw4ICszMDcsNiBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZl
cnMpCiAgICAgICAgIFtkLT5tX2Nvbm5lY3Rpb24gc2V0RGVmZXJzQ2FsbGJhY2tzOmRlZmVyc107
CiB9CiAKLSNpZiBQTEFURk9STShNQUMpCi0KIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxl
KFNjaGVkdWxlUGFpciYgcGFpcikKIHsKICAgICBOU1J1bkxvb3AgKnJ1bkxvb3AgPSBwYWlyLm5z
UnVuTG9vcCgpOwpAQCAtMzQ1LDggKzMyNSw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnVuc2No
ZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQogICAgICAgICBbZC0+bV9jb25uZWN0aW9uLmdldCgp
IHVuc2NoZWR1bGVGcm9tUnVuTG9vcDpydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopcGFpci5t
b2RlKCldOwogfQogCi0jZW5kaWYKLQogaWQgUmVzb3VyY2VIYW5kbGU6Om1ha2VEZWxlZ2F0ZShi
b29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKQogewogICAgIEFTU0VSVCghZC0+bV9kZWxl
Z2F0ZSk7CkBAIC03MzUsOSArNzEzLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVX
aWxsQ2FjaGVSZXNwb25zZShOU0NhY2hlZFVSTFJlc3BvbnNlICpyZXNwb25zZSkKIAogICAgIFso
aWQpZGVsZWdhdGUoKSBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlOnJlc3BvbnNlXTsKIH0KLSAg
ICAKLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLSAgICAKKwogI2lmIEVOQUJMRShXRUJfVElN
SU5HKQogICAgIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEo
TlNEaWN0aW9uYXJ5ICp0aW1pbmdEYXRhLCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZykKQEAg
LTc3NiwyMiArNzUyLDExIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldENvbGxlY3RzVGltaW5n
RGF0YSgpCiAjZW5kaWYKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgCi12b2lkIFJlc291
cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShDRlVSTENvbm5lY3Rpb25SZWYgY29u
bmVjdGlvbiwgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcpCi17Ci0gICAgZ2V0Q29ubmVjdGlv
blRpbWluZ0RhdGEoKF9fYnJpZGdlIE5TRGljdGlvbmFyeSopKGFkb3B0Q0YoX0NGVVJMQ29ubmVj
dGlvbkNvcHlUaW1pbmdEYXRhKGNvbm5lY3Rpb24pKS5nZXQoKSksIHRpbWluZyk7Ci19Ci0gICAg
Ci0jZWxzZQotICAgIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0Rh
dGEoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uLCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWlu
ZykKIHsKICAgICBnZXRDb25uZWN0aW9uVGltaW5nRGF0YShbY29ubmVjdGlvbiBfdGltaW5nRGF0
YV0sIHRpbWluZyk7CiB9Ci0gICAgCi0jZW5kaWYKLSAgICAKKwogI2VuZGlmIC8vIEVOQUJMRShX
RUJfVElNSU5HKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KaW5k
ZXggNjk0ZTUzYzRhNTczMjIyMGQ0NDYxZGMxMGY2MGRkOTg0YWE4Nzk2ZC4uZTc3MDI0NWRmZDUw
MWIxNGIwZTYxYzEwNzdjNzFiMzA4NDEyZjFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQpAQCAtMzcs
MjkgKzM3LDYgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotCi1SZXNvdXJjZVJlcXVlc3Q6OlJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVlc3QgKm5z
UmVxdWVzdCkKLSAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoKQotICAgICwgbV9jZlJlcXVlc3Qo
W25zUmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSkKLSAgICAsIG1fbnNSZXF1ZXN0KG5zUmVxdWVzdCkK
LXsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZU5TVVJMUmVxdWVzdCgpCi17Ci0g
ICAgaWYgKG1fY2ZSZXF1ZXN0KQotICAgICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VS
TFJlcXVlc3QgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDptX2NmUmVxdWVzdC5nZXQoKV0p
OwotfQotCi12b2lkIFJlc291cmNlUmVxdWVzdDo6YXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwo
KQotewotICAgIC8vIEhhY2sgYmVjYXVzZSBNYWlsIGNoZWNrcyBmb3IgdGhpcyBwcm9wZXJ0eSB0
byBkZXRlY3QgZGF0YSAvIGFyY2hpdmUgbG9hZHMKLSAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9j
b2xQcm9wZXJ0eShjZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSksIENGU1RSKCJXZWJE
YXRhUmVxdWVzdCIpLCBDRlNUUigiIikpOwotfQotCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCmluZGV4IDZmYTAwZTI0MzVlODNl
NzlmOTdkNDMwODYyZGIwYjQxZDM2NjUzN2IuLmNkZjc4OWQ2OWE3ZjdmNWZkMGZlYTk2MzU1N2Q2
ZDdkYzE3OWJkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQpAQCAtNzEsMzYgKzcxLDYgQEAgdm9p
ZCBSZXNvdXJjZVJlc3BvbnNlOjppbml0TlNVUkxSZXNwb25zZSgpIGNvbnN0CiAgICAgW21fbnNS
ZXNwb25zZS5nZXQoKSBfc2V0TUlNRVR5cGU6KE5TU3RyaW5nICopbV9taW1lVHlwZV07CiB9CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1OU1VSTFJlc3BvbnNlICpSZXNvdXJjZVJlc3BvbnNlOjpu
c1VSTFJlc3BvbnNlKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fbnNSZXNwb25zZSAmJiAhbV9jZlJl
c3BvbnNlICYmICFtX2lzTnVsbCkgewotICAgICAgICBpbml0TlNVUkxSZXNwb25zZSgpOwotICAg
ICAgICBtX2NmUmVzcG9uc2UgPSBbbV9uc1Jlc3BvbnNlLmdldCgpIF9DRlVSTFJlc3BvbnNlXTsK
LSAgICAgICAgcmV0dXJuIG1fbnNSZXNwb25zZS5nZXQoKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1f
Y2ZSZXNwb25zZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGlmICghbV9uc1Jlc3BvbnNl
KQotICAgICAgICBtX25zUmVzcG9uc2UgPSBbTlNVUkxSZXNwb25zZSBfcmVzcG9uc2VXaXRoQ0ZV
UkxSZXNwb25zZTptX2NmUmVzcG9uc2UuZ2V0KCldOwotCi0gICAgcmV0dXJuIG1fbnNSZXNwb25z
ZS5nZXQoKTsKLX0KLQotUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShOU1VSTFJl
c3BvbnNlKiBuc1Jlc3BvbnNlKQotICAgIDogbV9pbml0TGV2ZWwoVW5pbml0aWFsaXplZCkKLSAg
ICAsIG1fcGxhdGZvcm1SZXNwb25zZUlzVXBUb0RhdGUodHJ1ZSkKLSAgICAsIG1fY2ZSZXNwb25z
ZShbbnNSZXNwb25zZSBfQ0ZVUkxSZXNwb25zZV0pCi0gICAgLCBtX25zUmVzcG9uc2UobnNSZXNw
b25zZSkKLXsKLSAgICBtX2lzTnVsbCA9ICFuc1Jlc3BvbnNlOwotfQotCi0jZWxzZQotCiBzdGF0
aWMgTlNTdHJpbmcqIGNvbnN0IGNvbW1vbkhlYWRlckZpZWxkc1tdID0gewogICAgIEAiQWdlIiwg
QCJDYWNoZS1Db250cm9sIiwgQCJDb250ZW50LVR5cGUiLCBAIkRhdGUiLCBAIkV0YWciLCBAIkV4
cGlyZXMiLCBAIkxhc3QtTW9kaWZpZWQiLCBAIlByYWdtYSIKIH07CkBAIC0xODksNyArMTU5LDUg
QEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2UKICAgICByZXR1cm4gYS5uc1VSTFJlc3BvbnNlKCkg
PT0gYi5uc1VSTFJlc3BvbnNlKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvU3luY2hyb25vdXNMb2FkZXJDbGllbnQubW0KaW5kZXgg
MDE0NGJkOTNhNzBhNDQ5ODhlMDU2YzhlYjg5ODk3NDlmMTVjMmI1OC4uNjVmNzZkZjEzYjljOGY5
NjY3OGZmODhlZGY3YzM2MzcxZTkzMGUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvU3luY2hyb25vdXNMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvU3luY2hyb25vdXNMb2FkZXJDbGllbnQubW0K
QEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTeW5jaHJv
bm91c0xvYWRlckNsaWVudC5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbmNsdWRlICJB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwx
NCArMzYsMTAgQEAgdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNlSGFuZGxlKiwKICAgICBbY2hhbGxlbmdlLnNlbmRl
cigpIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpj
aGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKIH0KIAotI2lmICFVU0Uo
Q0ZORVRXT1JLKQogUmVzb3VyY2VFcnJvciBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6cGxhdGZv
cm1CYWRSZXNwb25zZUVycm9yKCkKIHsKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gZXJyb3IgPSBh
ZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBj
b2RlOk5TVVJMRXJyb3JCYWRTZXJ2ZXJSZXNwb25zZSB1c2VySW5mbzpuaWxdKTsKICAgICByZXR1
cm4gZXJyb3IuZ2V0KCk7CiB9Ci0jZW5kaWYKIAogfQotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdP
UkspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgKaW5kZXggNGY0MTU1
ZWFmZDk0NWIxYjg2MmQyOWNlODk2ZGNhZGNkYTFjNDI2Ni4uMmYxMTZhZDZhMzEwMjUwYTY3N2Nj
ZWExNGY3N2QyODEwZTZhOGU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVs
ZWdhdGUuaApAQCAtMjYsMTggKzI2LDE4IEBACiAjaWZuZGVmIFdlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzRGVsZWdhdGVfaAogI2RlZmluZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gK
IAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNv
dXJjZUhhbmRsZTsKIH0KIAotQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVn
YXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiB7CitAcHJvdG9jb2wgV2Vi
Q29yZVJlc291cmNlTG9hZGVyRGVsZWdhdGUKKy0gKHZvaWQpZGV0YWNoSGFuZGxlOworQGVuZAor
CitAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgOiBOU09iamVjdCA8
TlNVUkxDb25uZWN0aW9uRGVsZWdhdGUsIFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRlPiB7
CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqIG1faGFuZGxlOwogfQogLSAoaWQpaW5pdFdp
dGhIYW5kbGU6KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiloYW5kbGU7Ci0tICh2b2lkKWRldGFj
aEhhbmRsZTsKIEBlbmQKIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogI2VuZGlmIC8vIFdl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUubW0KaW5kZXggZTE3Y2I5ZDIwZWQ3ZGJkNTE3OTNjMzY0ZWIzMmMxNTg5
NWViYTUzYS4uNTI0YWZlM2ZhOTc2MWZhZTcwY2RkOWU2YzRlZjAxZWFkY2M5NGJkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCkBAIC0yNiw4ICsyNiw2IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVs
ZWdhdGUuaCIKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25NYWMuaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKQEAgLTU0LDcgKzUyLDcgQEAgLSAoaWQpaW5pdFdpdGhIYW5kbGU6KFJlc291cmNl
SGFuZGxlKiloYW5kbGUKIAogLSAodm9pZClkZXRhY2hIYW5kbGUKIHsKLSAgICBtX2hhbmRsZSA9
IDA7CisgICAgbV9oYW5kbGUgPSBudWxscHRyOwogfQogCiAtIChOU1VSTFJlcXVlc3QgKiljb25u
ZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIHdpbGxTZW5kUmVxdWVzdDooTlNV
UkxSZXF1ZXN0ICopbmV3UmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICop
cmVkaXJlY3RSZXNwb25zZQpAQCAtMjg4LDYgKzI4NiwzIEBAIC0gKE5TQ2FjaGVkVVJMUmVzcG9u
c2UgKiljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIHdpbGxDYWNoZVJl
c3BvCiB9CiAKIEBlbmQKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5o
CmluZGV4IGU3NDBhYTU5YmVkNjNiYWI5MDc2ZjA3OTNhYjNkMDNkZTAwMmIwNTEuLmM1N2FjYWUx
NDE4YzExNmZjZjc3NzBmNThhZDRjOTFjODFlNDhjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCkBAIC0yNiw4
ICsyNiw3IEBACiAjaWZuZGVmIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZV9oCiAjZGVmaW5lIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZV9oCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQorI2luY2x1ZGUgIldlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzRGVsZWdhdGUuaCIKICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtMzUsNyArMzQsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIH0KIAotQGludGVyZmFjZSBXZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxD
b25uZWN0aW9uRGVsZWdhdGU+IHsKK0BpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNP
cGVyYXRpb25RdWV1ZURlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LCBXZWJDb3JlUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZT4gewogICAgIFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlKiBtX2hhbmRsZTsKIAogICAgIC8vIFN5bmNocm9ub3VzIGRlbGVnYXRlcyBvbiBvcGVy
YXRpb24gcXVldWUgd2FpdCB1bnRpbCBtYWluIHRocmVhZCBzZW5kcyBhbiBhc3luY2hyb25vdXMg
cmVzcG9uc2UuCkBAIC00Niw3ICs0NSw2IEBAIGNsYXNzIFJlc291cmNlSGFuZGxlOwogfQogCiAt
IChpZClpbml0V2l0aEhhbmRsZTooV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKWhhbmRsZTsKLS0g
KHZvaWQpZGV0YWNoSGFuZGxlOwogLSAodm9pZCljb250aW51ZVdpbGxTZW5kUmVxdWVzdDooTlNV
UkxSZXF1ZXN0ICopbmV3UmVxdWVzdDsKIC0gKHZvaWQpY29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2U7CiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKQEAgLTU5LDUgKzU3
LDQgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiAKIEBlbmQKIAotI2VuZGlmIC8vICFVU0UoQ0ZO
RVRXT1JLKQogI2VuZGlmIC8vIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09w
ZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KaW5kZXggOTMzN2QxMzQ5MGFiODA5Yzc4M2UxNTU4Y2Zi
NzYxMGJiODFjMTU5Yi4uYzFkNjMwYjZiM2M2MTRkZjNkNDI5Yzk3ZTA1MjhiMDc4MzkwZThjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZS5tbQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAj
aW1wb3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCIK
IAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25NYWMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIK
QEAgLTM0NSw2ICszNDMsMyBAQCAtIChCT09MKWNvbm5lY3Rpb25TaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZTooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgogfQogCiBAZW5kCi0KLSNlbmRp
ZiAvLyAhVVNFKENGTkVUV09SSykKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCmluZGV4IDBmYWJmOTM5ODkz
NmIzMTI5MzkyMjExMGM5NzI1YWNhNDY5MzJkZWUuLmNkNWJiNDQ3ZDdjNDNhOWVmMTc3YmEyZGEy
NTZiNmRiYmU1NjY3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KQEAgLTMyNSw3ICszMjUsNiBAQCB2
b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNl
KQogfQogI2VuZGlmCiAKLSNpZiAhVVNFKENGTkVUV09SSykKIE5TVVJMUmVzcG9uc2UgKnN5bnRo
ZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0
aW9uLCBOU1VSTFJlcXVlc3QgKm5ld1JlcXVlc3QsIE5TVVJMUmVzcG9uc2UgKnJlZGlyZWN0UmVz
cG9uc2UpCiB7CiAgICAgaWYgKHJlZGlyZWN0UmVzcG9uc2UpCkBAIC0zMzksNiArMzM4LDUgQEAg
TlNVUkxSZXNwb25zZSAqc3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeShOU1VS
TENvbm5lY3Rpb24gKmNvbm5lY3Rpb24KICAgICBOU0RpY3Rpb25hcnkgKnN5bnRoZXNpemVkUmVz
cG9uc2VIZWFkZXJGaWVsZHMgPSBAeyBAIkxvY2F0aW9uIjogW1tuZXdSZXF1ZXN0IFVSTF0gYWJz
b2x1dGVTdHJpbmddLCBAIkNhY2hlLUNvbnRyb2wiOiBAIm5vLXN0b3JlIiB9OwogICAgIHJldHVy
biBbW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6W1tjb25uZWN0aW9uIGN1
cnJlbnRSZXF1ZXN0XSBVUkxdIHN0YXR1c0NvZGU6MzAyIEhUVFBWZXJzaW9uOihOU1N0cmluZyAq
KWtDRkhUVFBWZXJzaW9uMV8xIGhlYWRlckZpZWxkczpzeW50aGVzaXplZFJlc3BvbnNlSGVhZGVy
RmllbGRzXSBhdXRvcmVsZWFzZV07CiB9Ci0jZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2Mv
V2ViRG93bmxvYWQubW0KaW5kZXggNjgwZjY5ZWNlNTA2ZjY2YTM4OTgxYWViODJiNjA1MGJkZjNl
ZDdmOC4uNjhjZjY1YTMyYWE1M2NhNjhmMmUzMzlkYjhhNjM2ODQ2MzJmM2M0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tCkBAIC00MCwxMSArNDAsNiBAQAogCiAjaW1wb3J0
ICJXZWJUeXBlc0ludGVybmFsLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZO
ZXR3b3JrL0NGTmV0d29yay5oPgotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvbi5o
PgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAY2xhc3MgTlNVUkxDb25u
ZWN0aW9uRGVsZWdhdGVQcm94eTsKQEAgLTYwLDE1ICs1NSw2IEBAIC0gKGlkKV9pbml0V2l0aExv
YWRpbmdDb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCiAtIChpZClfaW5p
dFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiAgICAgICAgICAgICAgIGRlbGVn
YXRlOihpZClkZWxlZ2F0ZQogICAgICAgICAgICAgIGRpcmVjdG9yeTooTlNTdHJpbmcgKilkaXJl
Y3Rvcnk7Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotLSAoaWQpX2luaXRXaXRoTG9hZGluZ0NGVVJM
Q29ubmVjdGlvbjooQ0ZVUkxDb25uZWN0aW9uUmVmKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3Q6KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eTooTlNVUkxDb25uZWN0aW9uRGVsZWdh
dGVQcm94eSAqKXByb3h5OwotI2VuZGlmCi0KIEBlbmQKIAogQGludGVyZmFjZSBXZWJEb3dubG9h
ZEludGVybmFsIDogTlNPYmplY3QgPE5TVVJMRG93bmxvYWREZWxlZ2F0ZT4KQEAgLTI0MiwxOCAr
MjI4LDYgQEAgLSAoaWQpX2luaXRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlv
biAqKWNvbm5lY3Rpb24KICAgICByZXR1cm4gW3N1cGVyIF9pbml0V2l0aExvYWRpbmdDb25uZWN0
aW9uOmNvbm5lY3Rpb24gcmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJlc3BvbnNlIGRlbGVnYXRl
Ol93ZWJJbnRlcm5hbCBwcm94eTpwcm94eV07CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotLSAo
aWQpX2luaXRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjooQ0ZVUkxDb25uZWN0aW9uUmVmKWNv
bm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6KENGVVJMUmVx
dWVzdFJlZilyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOihD
RlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
bGVnYXRlOihpZClkZWxlZ2F0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94
eTooTlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eSAqKXByb3h5Ci17Ci0gICAgW3NlbGYgX3Nl
dFJlYWxEZWxlZ2F0ZTpkZWxlZ2F0ZV07Ci0gICAgcmV0dXJuIFtzdXBlciBfaW5pdFdpdGhMb2Fk
aW5nQ0ZVUkxDb25uZWN0aW9uOmNvbm5lY3Rpb24gcmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJl
c3BvbnNlIGRlbGVnYXRlOl93ZWJJbnRlcm5hbCBwcm94eTpwcm94eV07Ci19Ci0jZW5kaWYKLQog
LSAoaWQpX2luaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogICAgICAgICAg
ICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAgICBkaXJlY3Rvcnk6KE5TU3Ry
aW5nICopZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRv
d25sb2FkSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWRJbnRl
cm5hbC5oCmluZGV4IDliMmYzOTU4NWQ5NGE4ZjViMDVkMzMzMGFjYjgxMjM3YmQwZGI5NjkuLmMx
ZDIxOTI2MTk1MmE0NjdjYjNhNjlhYjYxYTU4OTRiOGEwM2FkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL01pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oCkBAIC0yOCwxMCArMjgsNiBAQAogIAog
I2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYkRvd25sb2FkLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvbi5oPgotI2VuZGlmCi0gCiBAaW50
ZXJmYWNlIFdlYkRvd25sb2FkIChXZWJEb3dubG9hZENyZWF0aW9uKQogKyhpZClfZG93bmxvYWRX
aXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CkBA
IC00MiwxMyArMzgsNCBAQAogKyhpZClfZG93bmxvYWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0
ICopcmVxdWVzdAogICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAg
ICAgICAgICAgICBkaXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5OwotCi0jaWYgVVNFKENG
TkVUV09SSykKLSsgKGlkKV9kb3dubG9hZFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOihDRlVS
TENvbm5lY3Rpb25SZWYpY29ubmVjdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3Q6KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNwb25zZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eTooaWQpcHJveHk7Ci0jZW5kaWYKLQog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXRWZXJzaW9uQ2hl
Y2tzLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdFZlcnNpb25DaGVja3MuaAppbmRl
eCBjODExMjAxMjVkNGRmYjY5MzFhZmVkNDFlZDEwMDE5YmYwN2JmZGY0Li5iNTMzMzU0YzM3MTJi
ZjA2NzlmMzk4NjNiYWViNWUxMmUzZGIzNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9NaXNjL1dlYktpdFZlcnNpb25DaGVja3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNj
L1dlYktpdFZlcnNpb25DaGVja3MuaApAQCAtNzIsNiArNzIsNyBAQAogI2RlZmluZSBXRUJLSVRf
RklSU1RfVkVSU0lPTl9XSVRIX0NTU19BVFRSSUJVVEVfU0VUVEVSU19JR05PUklOR19QUklPUklU
WSAyMjM5IC8vIGlPUyA2LjAKICNkZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9ZT1VU
VUJFX0VNQkVEX0lGUkFNRV9UUkFOU0ZPUk0gMjIzOSAvLyBpT1MgNi4wCiAjZGVmaW5lIFdFQktJ
VF9GSVJTVF9WRVJTSU9OX1dJVEhPVVRfTEVHQUNZX0JBQ0tHUk9VTkRTSVpFX1NIT1JUSEFORF9C
RUhBVklPUiAyNjY1IC8vIGlPUyA3LjAKKyNkZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lU
SF9MT0FESU5HX0RVUklOR19DT01NT05fUlVOTE9PUF9NT0RFUyAyNjY1IC8vIGlPUyA3LjAKICNk
ZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9JTlNFQ1VSRV9DT05URU5UX0JMT0NLSU5H
IDM0NTQKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggZDJl
YWY5NDM1OTNkOTk3YzAzYjdiNjA3NzE2ZGI1MTgyNWM5Y2RjOC4uNzI1OTk4ZmIyMjIxMzllNzI4
ODA5NjA4OGY5MDk4MThiNzBiODU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTMwMSwxMyArMzAx
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRU
b0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2MKIAogICAgIFJlc291cmNlSGFuZGxlKiBoYW5k
bGUgPSBtYWluUmVzb3VyY2VMb2FkZXItPmhhbmRsZSgpOwogCi0jaWYgVVNFKENGTkVUV09SSykK
LSAgICBBU1NFUlQoW1dlYkRvd25sb2FkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rv
d25sb2FkV2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246cmVxdWVzdDpyZXNwb25zZTpkZWxlZ2F0
ZTpwcm94eTopXSk7Ci0gICAgYXV0byBjb25uZWN0aW9uID0gaGFuZGxlLT5yZWxlYXNlQ29ubmVj
dGlvbkZvckRvd25sb2FkKCk7Ci0gICAgW1dlYkRvd25sb2FkIF9kb3dubG9hZFdpdGhMb2FkaW5n
Q0ZVUkxDb25uZWN0aW9uOmNvbm5lY3Rpb24uZ2V0KCkgcmVxdWVzdDpyZXF1ZXN0LmNmVVJMUmVx
dWVzdChVcGRhdGVIVFRQQm9keSkgcmVzcG9uc2U6cmVzcG9uc2UuY2ZVUkxSZXNwb25zZSgpIGRl
bGVnYXRlOlt3ZWJWaWV3IGRvd25sb2FkRGVsZWdhdGVdIHByb3h5Om5pbF07Ci0jZWxzZQogICAg
IFtXZWJEb3dubG9hZCBfZG93bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246aGFuZGxlLT5jb25u
ZWN0aW9uKCkgcmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkgcmVz
cG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpIGRlbGVnYXRlOlt3ZWJWaWV3IGRvd25sb2Fk
RGVsZWdhdGVdIHByb3h5Om5pbF07Ci0jZW5kaWYKIH0KIAogYm9vbCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgaW50IGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCAxNGMxYmM2
YzZiNjFlZTVjNmNjODQ2NjE1YzQ4OWQzYWQ0ZTRjMTMyLi40ZDJiOGU5MjNkMzM4NWExNjU3ZGU5
NjUzNmRhOWViZGMwYzhmMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC0xMTcsMTMgKzExNyw2IEBAIHZv
aWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBJTklUKEN1cnNvcik7CiAj
ZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgSU5JVChHZXREZWZhdWx0SFRUUENvb2tp
ZVN0b3JhZ2UpOwotICAgIElOSVQoQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFn
ZSk7Ci0gICAgSU5JVChTZXRDRlVSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYpOwotICAgIElO
SVQoU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKTsKLSNlbmRpZgotCiAjaWYgIVBMQVRGT1JNKElP
UykKICAgICBJTklUKFNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMpOwogICAgIElO
SVQoU3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQppbmRleCAwMTBmYThi
Nzc3MjlkMGM0ZWFlNmI0OWY5MzFkZTA0OTI2ZDNjYjI3Li40MjhhZmI3M2I2NzFiNDQ2NjA2NmE5
OGM1YzQ5OGY4YjMwOGI5YjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXMubW0KQEAgLTE3NjYsNyArMTc2Niw3IEBAICsgKHZvaWQpX2NsZWFyTmV0d29ya0xv
YWRlclNlc3Npb24KICsgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tp
ZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQogewogICAgIFJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7Ci0g
ICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBidWlsZGluZyB3aXRo
b3V0IFVTRShDRk5FVFdPUkspIGFuZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3
VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNhbGxlZCBiZWZvcmVoYW5kLgorICAgIEFTU0VSVChj
b29raWVTdG9yYWdlKTsgLy8gV2lsbCBmYWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
d2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KICAg
ICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGNkYTNmNTg4ZTg2
YjY2YzRjNGZmZWQ2NjM5MTM4Zjg0NmRkODMxOWIuLmM5YjVjYWRkYzJlN2RkNjRhZjNkMmFlZTYz
YWE2NzBiMDU3NWNmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTEw
MjgsMTIgKzEwMjgsMTMgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVO
YW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKIAogI2lmICFQTEFURk9S
TShJT1MpCiAgICAgTlNSdW5Mb29wICpydW5Mb29wID0gW05TUnVuTG9vcCBtYWluUnVuTG9vcF07
Ci0KKyNlbHNlCisgICAgTlNSdW5Mb29wICpydW5Mb29wID0gV2ViVGhyZWFkTlNSdW5Mb29wKCk7
CisjZW5kaWYKICAgICBpZiAoV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJT
SU9OX1dJVEhfTE9BRElOR19EVVJJTkdfQ09NTU9OX1JVTkxPT1BfTU9ERVMpKQogICAgICAgICBb
c2VsZiBzY2hlZHVsZUluUnVuTG9vcDpydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopa0NGUnVu
TG9vcENvbW1vbk1vZGVzXTsKICAgICBlbHNlCiAgICAgICAgIFtzZWxmIHNjaGVkdWxlSW5SdW5M
b29wOnJ1bkxvb3AgZm9yTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZV07Ci0jZW5kaWYKIAogICAg
IFtzZWxmIF9hZGRUb0FsbFdlYlZpZXdzU2V0XTsKICAgICAKQEAgLTY2MTgsMjkgKzY2MTksMTkg
QEAgQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViUGVuZGluZ1B1YmxpYykKIAot
I2lmICFQTEFURk9STShJT1MpCiAtICh2b2lkKXNjaGVkdWxlSW5SdW5Mb29wOihOU1J1bkxvb3Ag
KilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZQogewotI2lmIFVTRShDRk5FVFdPUksp
Ci0gICAgQ0ZSdW5Mb29wUmVmIHNjaGVkdWxlUGFpclJ1bkxvb3AgPSBbcnVuTG9vcCBnZXRDRlJ1
bkxvb3BdOwotI2Vsc2UKICAgICBOU1J1bkxvb3AgKnNjaGVkdWxlUGFpclJ1bkxvb3AgPSBydW5M
b29wOwotI2VuZGlmCiAgICAgaWYgKHJ1bkxvb3AgJiYgbW9kZSkKICAgICAgICAgY29yZShzZWxm
KS0+YWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHNjaGVkdWxlUGFpclJ1bkxv
b3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CiB9CiAKIC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5M
b29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZQogewotI2lm
IFVTRShDRk5FVFdPUkspCi0gICAgQ0ZSdW5Mb29wUmVmIHNjaGVkdWxlUGFpclJ1bkxvb3AgPSBb
cnVuTG9vcCBnZXRDRlJ1bkxvb3BdOwotI2Vsc2UKICAgICBOU1J1bkxvb3AgKnNjaGVkdWxlUGFp
clJ1bkxvb3AgPSBydW5Mb29wOwotI2VuZGlmCiAgICAgaWYgKHJ1bkxvb3AgJiYgbW9kZSkKICAg
ICAgICAgY29yZShzZWxmKS0+cmVtb3ZlU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRl
KHNjaGVkdWxlUGFpclJ1bkxvb3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CiB9Ci0jZW5kaWYKIAog
c3RhdGljIEJPT0wgZmluZFN0cmluZyhOU1ZpZXcgPFdlYkRvY3VtZW50U2VhcmNoaW5nPiAqc2Vh
cmNoVmlldywgTlNTdHJpbmcgKnN0cmluZywgV2ViRmluZE9wdGlvbnMgb3B0aW9ucykKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCA3OTZjMGY0MmE3
Njk5ZjE4NmYwZTRjMDM3ZDExNDY3YzQ2YjEwMjk0Li5mNDMwNDk5NjQ1ZDdmOTUwMDdjMWNiYTBl
OWNmYWMwMTk4Y2YzYzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJp
dmF0ZS5oCkBAIC0xOTgsMTAgKzE5OCw4IEBAIHR5cGVkZWYgZW51bSB7CiAKIEBpbnRlcmZhY2Ug
V2ViVmlldyAoV2ViUGVuZGluZ1B1YmxpYykKIAotI2lmICFUQVJHRVRfT1NfSVBIT05FCiAtICh2
b2lkKXNjaGVkdWxlSW5SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3Ry
aW5nICopbW9kZTsKIC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5Mb29wOihOU1J1bkxvb3AgKily
dW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZTsKLSNlbmRpZgogCiAtIChCT09MKWZpbmRT
dHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KFdlYkZpbmRPcHRpb25zKW9wdGlvbnM7
CiAtIChET01SYW5nZSAqKURPTVJhbmdlT2ZTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHJlbGF0
aXZlVG86KERPTVJhbmdlICopcHJldmlvdXNSYW5nZSBvcHRpb25zOihXZWJGaW5kT3B0aW9ucylv
cHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKaW5k
ZXggODA1ZmEyN2Q1NjAxYmRmZmExZmJlNGI4ZWZmYjNlYzQ1YWNhZDE3Yi4uMjdlZjNiZDAwMzdh
NzZhMDExNjg4MWNiMzhlMTQxYmRmY2I4OTdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5oCkBAIC05NCwxMiArOTQsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBD
RkFycmF5UmVmKSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotI2lmIFVT
RShDRk5FVFdPUkspCi0gICAgdmlydHVhbCB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlQXN5bmMoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsK
LSNlbHNlCiAgICAgdmlydHVhbCB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlICopIG92ZXJyaWRlOwogI2VuZGlm
Ci0jZW5kaWYKICNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQogCiAjaWYgVVNFKFBST1RF
Q1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBkYjcwZWIwNzJmYWZlNmI4ZDg5YTBjOWU2
OWE3YjAzMWEyM2U0NDUzLi5mNzI3MWU3MzdlMWQ2YmI0NDY5ZWJkYTFlY2FmNDMyYTVlYTQ5YzU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5l
dHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWUKIAogICAgIHNl
dENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKHBhcmFtZXRlcnMuY2FuSGFuZGxl
SFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24pOwogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0Uo
Q0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFNlc3Npb25UcmFja2VyOjpzZXRJ
ZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpOwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3
b3JrTG9hZE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3Jr
TG9hZE1hYy5tbQppbmRleCBmM2M2ZWNiYmIwMWExNjAyOWY4ZGVjZjljNGMxYzM4YTAyN2FjMDc5
Li4zZDYyNWM4ZTI2YmZmN2RlNDhiZjdhNWYxZjA0MDk4Yjg4YzZmYzE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCkBAIC0z
NCwxOCArMzQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi12b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVS
ZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVkVVJMUmVzcG9uc2VS
ZWYgY2ZSZXNwb25zZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1f
aGFuZGxlKTsKLQotICAgIG1fY2xpZW50LndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoY2ZSZXNwb25z
ZSk7Ci0KLSAgICBtX2hhbmRsZS0+Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShjZlJlc3BvbnNl
KTsKLX0KLQotI2VsaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCisjaWYgIVVTRShORVRXT1JLX1NF
U1NJT04pCiAKIHZvaWQgTmV0d29ya0xvYWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSwgTlNDYWNoZWRVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkKIHsKQEAg
LTU2LDYgKzQ1LDYgQEAgdm9pZCBOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBOU0NhY2hlZFVSTFJlc3AKICAgICBtX2hhbmRsZS0+Y29u
dGludWVXaWxsQ2FjaGVSZXNwb25zZShuc1Jlc3BvbnNlKTsKIH0KIAotI2VuZGlmIC8vICFVU0Uo
Q0ZORVRXT1JLKQorI2VuZGlmIC8vICFVU0UoTkVUV09SS19TRVNTSU9OKQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMv
RG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaApp
bmRleCA3MTM3NDk4YmYzMmVjMzM5MmMwY2Q4NmQ5OGZlNWUwNGZiMWNiOTlhLi5lZTRkODJlM2Mw
ZTJlZTk5Nzg3NGVlZDRkMzYxZDgxMzg5NGViYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Rvd25sb2Fkcy9Eb3dubG9hZC5oCkBAIC00OCwxMCArNDgsNiBAQCBPQkpDX0NMQVNTIFdLRG93
bmxvYWRBc0RlbGVnYXRlOwogI2luY2x1ZGUgPG1lbW9yeT4KICNlbmRpZgogCi0jaWYgVVNFKENG
TkVUV09SSykKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxEb3dubG9hZFByaXYuaD4KLSNlbmRp
ZgotCiBuYW1lc3BhY2UgSVBDIHsKICAgICBjbGFzcyBEYXRhUmVmZXJlbmNlOwogfQpAQCAtOTgs
MTAgKzk0LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsKICAgICB2
b2lkIGRpZENhbmNlbChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOwogCi0j
aWYgVVNFKENGTkVUV09SSykKLSAgICBEb3dubG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRo
ZW50aWNhdGlvbkNsaWVudCgpOwotI2VuZGlmCi0KICAgICAvLyBBdXRoZW50aWNhdGlvbgogICAg
IHN0YXRpYyB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKTsKICAgICBzdGF0aWMg
dm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKQEAgLTEzNCwxMCArMTI2LDYgQEAgcHJp
dmF0ZToKICAgICBSZXRhaW5QdHI8V0tEb3dubG9hZEFzRGVsZWdhdGU+IG1fZGVsZWdhdGU7CiAj
ZW5kaWYKICNlbmRpZgotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgUmV0YWluUHRyPENGVVJMRG93
bmxvYWRSZWY+IG1fZG93bmxvYWQ7Ci0gICAgUmVmUHRyPERvd25sb2FkQXV0aGVudGljYXRpb25D
bGllbnQ+IG1fYXV0aGVudGljYXRpb25DbGllbnQ7Ci0jZW5kaWYKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKEVGTCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGVDbGllbnQ+IG1fZG93bmxvYWRDbGllbnQ7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlPiBtX3Jlc291cmNlSGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZjhmNDIyMDlkMjc5ZmZhNTQ2ZGE3YTkxYWE1ODllZDQxNDUwMTFkZi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE5NiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJEb3dubG9h
ZC5oIgotCi0jaWYgUExBVEZPUk0oSU9TKQotCi0jaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCi0j
aW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Jlc291
cmNlRXJyb3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgot
I2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KLQotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxD
Rk5ldHdvcmsvQ0ZVUkxEb3dubG9hZC5oPgotI2VuZGlmCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotI2lmIFVTRShDRk5FVFdPUkspCi0vLyBGSVhN
RTogSWYgcG9zc2libGUsIHdlIHNob3VsZCBjb25zaWRlciBtb3Zpbmcgc29tZSBjYWxsYmFja3Mg
b2ZmIHRoZSBtYWluIHRocmVhZCBvciBhdCBsZWFzdAotLy8gbWFraW5nIHRoZW0gYXN5bmNob25v
dXMgY2FsbHMuCi1zdGF0aWMgdm9pZCBkaXNwYXRjaE9uTWFpblRocmVhZCh2b2lkKF5ibG9jayko
KSkKLXsKLSAgICBpZiAoUnVuTG9vcDo6aXNNYWluKCkpIHsKLSAgICAgICAgYmxvY2soKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGRpc3BhdGNoX3N5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgYmxvY2spOwotfQotCi1zdGF0aWMgaW5saW5lIERvd25sb2FkKiB0b0Rvd25s
b2FkKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERv
d25sb2FkKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotfQotCi1zdGF0aWMgdm9p
ZCBzZXRVcERvd25sb2FkQ2xpZW50KENGVVJMRG93bmxvYWRDbGllbnQmIGNsaWVudCwgRG93bmxv
YWQmIGRvd25sb2FkKQotewotICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7
Ci0gICAgY2xpZW50LmNsaWVudEluZm8gPSAmZG93bmxvYWQ7Ci0KLSAgICBjbGllbnQuZGlkU3Rh
cnQgPSBbXShDRlVSTERvd25sb2FkUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAg
ICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVu
dEluZm8pLT5kaWRTdGFydCgpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50Lndp
bGxTZW5kUmVxdWVzdCA9IFtdKENGVVJMRG93bmxvYWRSZWYsIENGVVJMUmVxdWVzdFJlZiByZXF1
ZXN0LCBDRlVSTFJlc3BvbnNlUmVmLCBjb25zdCB2b2lkKikgLT4gQ0ZVUkxSZXF1ZXN0UmVmIHsK
LSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGVVJMUmVxdWVzdFJlZj4oQ0ZSZXRhaW4ocmVx
dWVzdCkpOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlID0gW10oQ0ZV
UkxEb3dubG9hZFJlZiwgQ0ZVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAg
dG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLSAg
ICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC5kaWRSZWNlaXZlRGF0YSA9IFtdKENGVVJM
RG93bmxvYWRSZWYsIENGSW5kZXggbGVuZ3RoLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0g
ICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNs
aWVudEluZm8pLT5kaWRSZWNlaXZlRGF0YShsZW5ndGgpOwotICAgICAgICB9KTsKLSAgICB9Owot
Ci0gICAgY2xpZW50LnNob3VsZERlY29kZURhdGFPZk1JTUVUeXBlID0gW10oQ0ZVUkxEb3dubG9h
ZFJlZiwgQ0ZTdHJpbmdSZWYgZW5jb2RpbmdUeXBlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSAt
PiBCb29sZWFuIHsKLSAgICAgICAgX19ibG9jayBCT09MIHJldHVyblZhbHVlID0gTk87Ci0gICAg
ICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHRv
RG93bmxvYWQoY2xpZW50SW5mbyktPnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKGVu
Y29kaW5nVHlwZSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7Ci0g
ICAgfTsKLQotICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRPYmplY3RO
YW1lID0gW10oQ0ZVUkxEb3dubG9hZFJlZiBkb3dubG9hZFJlZiwgQ0ZTdHJpbmdSZWYgb2JqZWN0
TmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRo
cmVhZCheewotICAgICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0ZTsKLSAgICAgICAgICAgIFN0
cmluZyBkZXN0aW5hdGlvbiA9IHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKG9iamVjdE5hbWUsIGFsbG93T3ZlcndyaXRlKTsKLSAg
ICAgICAgICAgIGlmICghZGVzdGluYXRpb24uaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgQ0ZV
UkxEb3dubG9hZFNldERlc3RpbmF0aW9uKGRvd25sb2FkUmVmLCByZWludGVycHJldF9jYXN0PENG
VVJMUmVmPihbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmRlc3RpbmF0aW9uXSksIGFsbG93T3Zlcndy
aXRlKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC5kaWRDcmVhdGVEZXN0aW5h
dGlvbiA9IFtdKENGVVJMRG93bmxvYWRSZWYsIENGVVJMUmVmIHBhdGgsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAg
IHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZENyZWF0ZURlc3RpbmF0aW9uKENGVVJMR2V0U3Ry
aW5nKHBhdGgpKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC5kaWRGaW5pc2gg
PSBbXShDRlVSTERvd25sb2FkUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAg
IGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVudElu
Zm8pLT5kaWRGaW5pc2goKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC5kaWRG
YWlsID0gW10oQ0ZVUkxEb3dubG9hZFJlZiBkb3dubG9hZFJlZiwgQ0ZFcnJvclJlZiBlcnJvciwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZChe
ewotICAgICAgICAgICAgYXV0byByZXN1bWVEYXRhID0gYWRvcHRDRihDRlVSTERvd25sb2FkQ29w
eVJlc3VtZURhdGEoZG93bmxvYWRSZWYpKTsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50
SW5mbyktPmRpZEZhaWwoZXJyb3IsIElQQzo6RGF0YVJlZmVyZW5jZShyZXN1bWVEYXRhID8gQ0ZE
YXRhR2V0Qnl0ZVB0cihyZXN1bWVEYXRhLmdldCgpKSA6IG51bGxwdHIsIHJlc3VtZURhdGEgPyBD
RkRhdGFHZXRMZW5ndGgocmVzdW1lRGF0YS5nZXQoKSkgOiAwKSk7Ci0gICAgICAgIH0pOwotICAg
IH07Ci19Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQotdm9pZCBEb3dubG9hZDo6c3RhcnQo
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlc3VtZShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93
bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKLXsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJM
RG93bmxvYWRDbGllbnQgY2xpZW50OwotICAgIHNldFVwRG93bmxvYWRDbGllbnQoY2xpZW50LCAq
dGhpcyk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgbV9kb3dubG9h
ZCA9IGFkb3B0Q0YoQ0ZVUkxEb3dubG9hZENyZWF0ZUFuZFN0YXJ0V2l0aExvYWRpbmdDb25uZWN0
aW9uKE5VTEwsIGhhbmRsZS0+cmVsZWFzZUNvbm5lY3Rpb25Gb3JEb3dubG9hZCgpLmdldCgpLCBt
X3JlcXVlc3QuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSwgcmVzcG9uc2UuY2ZVUkxSZXNw
b25zZSgpLCAmY2xpZW50KSk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0jZWxzZQot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBEb3dubG9hZDo6Y2FuY2Vs
KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpwbGF0Zm9y
bUludmFsaWRhdGUoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxv
YWQ6OnBsYXRmb3JtRGlkRmluaXNoKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIERvd25sb2FkOjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIERvd25sb2FkOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRp
YWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lk
IERvd25sb2FkOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0
IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvbWFjL0Rvd25s
b2FkTWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRN
YWMubW0KaW5kZXggMDA1ODNjNjlkYTBlNDU2MmY5Zjk2NmI4NWNlMmQ1NzFmMDA2ZmU3Yy4uM2Jm
ZjUyNWVmMWZmZGJlZDllMzk4NjhlMjM4MTQ5YmM4MjFkNDAzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KQEAgLTI2LDggKzI2
LDkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRG93bmxvYWQuaCIKIAotI2lmIFBM
QVRGT1JNKE1BQykgJiYgIVVTRShORVRXT1JLX1NFU1NJT04pCisjaWYgUExBVEZPUk0oQ09DT0Ep
ICYmICFVU0UoTkVUV09SS19TRVNTSU9OKQogCisjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMRG93
bmxvYWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNp
bXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25NYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCA2YWYzMTdlZGNjY2IzZjM3OGVkODk0OTFj
NGFkZjdiNmNlYjFiYmU5Li5lZDA1ZmY2MjViYjI5MGJiOWZmOGUzMjc4YjAyYWRmY2NkNWIwNTRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAgICAgZW5jb2RlciA8PCB0ZXh0Q2hlY2tlclN0YXRlOwogICAgIGVuY29kZXIgPDwgZnVsbEtl
eWJvYXJkQWNjZXNzRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IGRlZmF1bHRSZXF1ZXN0VGltZW91
dEludGVydmFsOwotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcjsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMjMwLDcgKzIzMCw3IEBAIGJvb2wgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBk
ZWNvZGVyLCBXZWJQcm9jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVp
UHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oCmluZGV4IDJmODBjNjNkNzgzNTQ5MDllZWFkNTJlNjhiNGY4MjljMWMxNzk1NjIuLjAz
MzUwMTEwMmM0YWZkOGU0NDZhZmY3N2EwMWM0MDcwNWQ0NmQ4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTIx
LDcgKzEyMSw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAg
IGRvdWJsZSBkZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbDsKIAotI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFN0cmluZyB1
aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KaW5kZXggZGZmYjNl
MDYzZDU2YWRhMTdkNWNkNTRjZmUxNWUwMzA5OGM1YWUxNS4uZDBkNGM3MDg1MWRlOTk4YWI5ZWQy
OWI1ZTgwOTExZjkyZmRjNmIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KQEAgLTM5LDEwICszOSw2IEBACiAjaW1w
b3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VS
ZXF1ZXN0Lmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJM
UmVxdWVzdC5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQogI2ltcG9ydCA8V2ViQ29yZS9BVkZvdW5kYXRpb25TUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUv
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KQEAgLTU3LDM2ICs1Myw2IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgSVBDIHsKIAotI2lmIFVTRShDRk5FVFdPUksp
Ci12b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRh
KEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJj
ZVJlcXVlc3QpCi17Ci0gICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gcmVxdWVzdFRvU2Vy
aWFsaXplID0gcmVzb3VyY2VSZXF1ZXN0LmNmVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5
KTsKLQotICAgIGJvb2wgcmVxdWVzdElzUHJlc2VudCA9IHJlcXVlc3RUb1NlcmlhbGl6ZTsKLSAg
ICBlbmNvZGVyIDw8IHJlcXVlc3RJc1ByZXNlbnQ7Ci0KLSAgICBpZiAoIXJlcXVlc3RJc1ByZXNl
bnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFdlIGRvbid0IHNlbmQgSFRUUCBib2R5IG92
ZXIgSVBDIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCi0gICAgLy8gQWxzbywgaXQncyBub3QgYWx3
YXlzIHBvc3NpYmxlIHRvIGRvLCBhcyBzdHJlYW1zIGNhbiBvbmx5IGJlIGNyZWF0ZWQgaW4gcHJv
Y2VzcyB0aGF0IGRvZXMgbmV0d29ya2luZy4KLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByZXF1
ZXN0SFRUUEJvZHkgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdEJvZHkocmVx
dWVzdFRvU2VyaWFsaXplLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4g
cmVxdWVzdEhUVFBCb2R5U3RyZWFtID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVl
c3RCb2R5U3RyZWFtKHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSkpOwotICAgIGlmIChyZXF1ZXN0
SFRUUEJvZHkgfHwgcmVxdWVzdEhUVFBCb2R5U3RyZWFtKSB7Ci0gICAgICAgIENGTXV0YWJsZVVS
TFJlcXVlc3RSZWYgbXV0YWJsZVJlcXVlc3QgPSBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29w
eSgwLCByZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCkpOwotICAgICAgICByZXF1ZXN0VG9TZXJpYWxp
emUgPSBhZG9wdENGKG11dGFibGVSZXF1ZXN0KTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRU
UFJlcXVlc3RCb2R5KG11dGFibGVSZXF1ZXN0LCBuaWwpOwotICAgICAgICBDRlVSTFJlcXVlc3RT
ZXRIVFRQUmVxdWVzdEJvZHlTdHJlYW0obXV0YWJsZVJlcXVlc3QsIG5pbCk7Ci0gICAgfQotCi0g
ICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeSA9IGFkb3B0Q0YoV0tDRlVS
TFJlcXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihyZXF1ZXN0VG9TZXJpYWxp
emUuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7Ci0gICAgSVBDOjplbmNvZGUoZW5j
b2RlciwgZGljdGlvbmFyeS5nZXQoKSk7Ci0KLSAgICAvLyBUaGUgZmFsbGJhY2sgYXJyYXkgaXMg
cGFydCBvZiBDRlVSTFJlcXVlc3QsIGJ1dCBpdCBpcyBub3QgZW5jb2RlZCBieSBXS0NGVVJMUmVx
dWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uLgotICAgIGVuY29kZXIgPDwgcmVz
b3VyY2VSZXF1ZXN0LnJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0Fy
cmF5KCk7Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKHJlc291cmNlUmVxdWVzdC5yZXF1ZXN0ZXIo
KSk7Ci19Ci0jZWxzZQogdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29k
ZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewogICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJl
cXVlc3RUb1NlcmlhbGl6ZSA9IHJlc291cmNlUmVxdWVzdC5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRh
dGVIVFRQQm9keSk7CkBAIC0xMTIsNyArNzgsNiBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciYgZW5jb2Rlcgog
ICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXF1ZXN0LnJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9u
RW5jb2RpbmdGYWxsYmFja0FycmF5KCk7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHJlc291cmNl
UmVxdWVzdC5yZXF1ZXN0ZXIoKSk7CiB9Ci0jZW5kaWYKIAogYm9vbCBBcmd1bWVudENvZGVyPFJl
c291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXImIGRlY29k
ZXIsIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewpAQCAtMTI5LDIwICs5NCwx
MiBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1E
YXRhKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlcgogICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2Rl
ciwgZGljdGlvbmFyeSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotI2lmIFVTRShDRk5FVFdP
UkspCi0gICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gY2ZVUkxSZXF1ZXN0ID0gYWRvcHRD
RihXS0NyZWF0ZUNGVVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0
aW9uYXJ5LmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOwotICAgIGlmICghY2ZVUkxS
ZXF1ZXN0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXNvdXJjZVJlcXVlc3QgPSBS
ZXNvdXJjZVJlcXVlc3QoY2ZVUkxSZXF1ZXN0LmdldCgpKTsKLSNlbHNlCiAgICAgUmV0YWluUHRy
PE5TVVJMUmVxdWVzdD4gbnNVUkxSZXF1ZXN0ID0gV0tOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXph
YmxlUmVwcmVzZW50YXRpb24oZGljdGlvbmFyeS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVm
KCkpOwogICAgIGlmICghbnNVUkxSZXF1ZXN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICByZXNvdXJjZVJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QobnNVUkxSZXF1ZXN0LmdldCgpKTsK
LSNlbmRpZgotICAgIAorCiAgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VDb250ZW50RGlzcG9z
aXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNw
b25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA3NjI5Yzc3YTBjZDliMzBiZTYyZTEzOTRjYjhlMzEzODkxYWJmMjAw
Li40MjMwZTE1OGY0NDEwMTJkOTZiZjlmNGJjYjlmN2QxOWFhMmI0ODQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NzIsNyAr
NjcyLDYgQEAKIAkJMkRBOTQ0QTIxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYlBsYXRmb3JtVG91Y2hQ
b2ludElPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyREE5NDQ5QjE4ODRFNEYwMDBFRDg2REIgLyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNw
cCAqLzsgfTsKIAkJMkRBOTQ0QTMxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYlRvdWNoRXZlbnRJT1Mu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0
OUMxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYlRvdWNoRXZlbnRJT1MuY3BwICovOyB9OwogCQkyREE5
NDRBNDE4ODRFNEYwMDBFRDg2REIgLyogR2VzdHVyZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDQ5RDE4ODRFNEYwMDBFRDg2REIgLyog
R2VzdHVyZVR5cGVzLmggKi87IH07Ci0JCTJEQTk0NEE3MTg4NEU5NDgwMEVEODZEQiAvKiBEb3du
bG9hZElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJEQTk0NEE2MTg4NEU5NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5tbSAqLzsgfTsKIAkJMkRB
OTQ0QUQxODg0RTlCQTAwRUQ4NkRCIC8qIFRleHRDaGVja2VySU9TLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0QTkxODg0RTlCQTAwRUQ4NkRC
IC8qIFRleHRDaGVja2VySU9TLm1tICovOyB9OwogCQkyREE5NDRBRjE4ODRFOUJBMDBFRDg2REIg
LyogV2ViUGFnZVByb3h5SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkRBOTQ0QUIxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlBhZ2VQcm94eUlPUy5t
bSAqLzsgfTsKIAkJMkRBOTQ0QjAxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlByb2Nlc3NQcm94eUlP
Uy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0
NEFDMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQcm9jZXNzUHJveHlJT1MubW0gKi87IH07CkBAIC0y
ODMyLDcgKzI4MzEsNiBAQAogCQkyREE5NDQ5QjE4ODRFNEYwMDBFRDg2REIgLyogV2ViUGxhdGZv
cm1Ub3VjaFBvaW50SU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFdlYlBsYXRmb3JtVG91Y2hQb2ludElPUy5jcHA7IHBhdGggPSBpb3MvV2ViUGxhdGZvcm1Ub3Vj
aFBvaW50SU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0OUMxODg0
RTRGMDAwRUQ4NkRCIC8qIFdlYlRvdWNoRXZlbnRJT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gV2ViVG91Y2hFdmVudElPUy5jcHA7IHBhdGggPSBpb3MvV2ViVG91
Y2hFdmVudElPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQTk0NDlEMTg4
NEU0RjAwMEVEODZEQiAvKiBHZXN0dXJlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gR2VzdHVyZVR5cGVzLmg7IHBhdGggPSBpb3MvR2VzdHVyZVR5cGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJEQTk0NEE2MTg4NEU5NDgwMEVEODZEQiAvKiBEb3du
bG9hZElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERvd25s
b2FkSU9TLm1tOyBwYXRoID0gRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0QTkxODg0RTlCQTAwRUQ4NkRCIC8qIFRleHRDaGVj
a2VySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGV4dENo
ZWNrZXJJT1MubW07IHBhdGggPSBpb3MvVGV4dENoZWNrZXJJT1MubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJEQTk0NEFCMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQYWdlUHJveHlJ
T1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJQYWdlUHJv
eHlJT1MubW07IHBhdGggPSBpb3MvV2ViUGFnZVByb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyREE5NDRBQzE4ODRFOUJBMDBFRDg2REIgLyogV2ViUHJvY2Vzc1Byb3h5
SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViUHJvY2Vz
c1Byb3h5SU9TLm1tOyBwYXRoID0gaW9zL1dlYlByb2Nlc3NQcm94eUlPUy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxNDYsNyArNTE0NCw2IEBACiAJCTJEQTk0NEE1MTg4NEU5
M0MwMEVEODZEQiAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCTJEQTk0NEE2MTg4NEU5NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5tbSAqLywK
IAkJCSk7CiAJCQluYW1lID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTk1
MDUsNyArOTUwMiw2IEBACiAJCQkJNTE4RThGMDcxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2Fk
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxOEU4RjA5MTZCMjA5MzcwMEU5MTQyOSAvKiBEb3du
bG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExREY2MzEy
MThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSBpbiBTb3VyY2VzICovLAotCQkJ
CTJEQTk0NEE3MTg4NEU5NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUxOEU4RjBEMTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZE1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxOEU4RjBCMTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZE1hbmFnZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0Q0Q0IxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25s
b2FkUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDk2
OTc2YWQ5MTg1YzdkYzRiM2IzMzYzYWUyZDJmM2Y3ZjY4MmUzMDYuLjE2MjhlMGVlNjZkOTA1ZDdm
YzZjMTM3MmJiNWQ4NTViYmQ5NjMxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0yODcs
NyArMjg3LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0Ns
aXBib2FyZChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3UKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6
OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwg
Ym9vbCBlbmFibGVkKQogewogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFRoaXMgdGVz
dC1vbmx5IGZ1bmN0aW9uIGRvZXNuJ3Qgd29yayB3aXRoIE5ldHdvcmtQcm9jZXNzLCA8aHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTI3ND4uCi0jaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQorI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoU09VUCkKICAgICBpZiAoZW5hYmxlZCkKICAgICAgICAgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2Fj
eVByaXZhdGVTZXNzaW9uSUQoKSk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50
ZXJmYWNlLm1tCmluZGV4IDAzZjI4ODIzMDIxMTM2ZmUwOGRkMmY3M2M1NGFiYjM1ZjMzYjhlOGYu
LmM3MTg1YmZlNTI0ODVkOTkxYmQwMmJiZTE3NzVhODhiODNlZTkxMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVy
ZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTEyMSwxMyArMTIxLDYgQEAgdm9pZCBJbml0V2Vi
Q29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAgICBJTklUKFdpbmRvd1NldEFscGhhKTsK
ICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICAgICAg
SU5JVChHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UpOwotICAgICAgICBJTklUKENvcHlDcmVk
ZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UpOwotICAgICAgICBJTklUKFNldENGVVJMUmVx
dWVzdFNob3VsZENvbnRlbnRTbmlmZik7Ci0gICAgICAgIElOSVQoU2V0UmVxdWVzdFN0b3JhZ2VT
ZXNzaW9uKTsKLSNlbmRpZgotCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5JVChTcGVl
Y2hTeW50aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJzKTsKICAgICAgICAgSU5JVChTcGVlY2hTeW50
aGVzaXNHZXREZWZhdWx0Vm9pY2VJZGVudGlmaWVyRm9yTG9jYWxlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDAzYzUyNDM3YTAwMjVjNDIxN2YxZDM2YTY4
MjkyMjUxYjY1Mjg2ZjcuLmUwMzA4MTYxMDIxNTJmODk2NDAzOGVmMGY3MTM5MjdhYjM3MjFhMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzE3LDcgKzMx
Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxk
VXNlRm9udFNtb290aGluZykKICAgICAgICAgc2V0U2hvdWxkVXNlRm9udFNtb290aGluZyh0cnVl
KTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIFNlc3Npb25UcmFja2VyOjpzZXRJZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJz
LnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKQEAgLTQ1NywxNCArNDU3LDE0
IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBm
dWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKQogCiB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSNpZiBQTEFURk9STShD
T0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCisjaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShTT1VQKQogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsKICNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nl
c3M6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7
Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQorI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKICAgICBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJv
eVNlc3Npb24oc2Vzc2lvbklEKTsKICNlbmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267533</attachid>
            <date>2015-12-16 21:40:11 -0800</date>
            <delta_ts>2015-12-17 03:14:34 -0800</delta_ts>
            <desc>Patch to find build errors (iOS WK1 scheduling fixed; quickook tests fixed) v2</desc>
            <filename>bug-137936-20151216213933.patch</filename>
            <type>text/plain</type>
            <size>126389</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE4YmM0YTczMTU0ODcyYTg1OTc1NjNm
YWE0MDRlYzg0NjMyM2RhODAuLmEyZTU3NWUwZjYxNTIwOTgwZmViNTYzMGEzYWU2NTI2MmM0ZDdk
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTItMTYgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgVVNFKENGTkVUV09SSykrUExBVEZPUk0o
Q09DT0EpIGNvZGUgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM3OTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxNS0xMi0xNiAgQW5kcmVhcyBLbGluZyAg
PGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgR2l2ZSBrZXJuZWwgVk0gc29tZSBoaW50cyBh
Ym91dCBub24tbGl2ZSBtZW1vcnktY2FjaGVkIHJlc291cmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZDY0
MTZhMDhmZmIyZjE4MzY1MGJjOTM4M2EwNmNmY2E5ZmM3YTkxLi5mM2JjMDA1ZDYwZTEyZTIwOWY5
YWY4YjI5NzRjYWYxMTY2MDA4YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMwIEBACisyMDE1
LTEyLTE2ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIFVTRShDRk5FVFdPUkspK1BMQVRGT1JNKENPQ09BKSBjb2RlIHBhdGgKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzkzNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbW9zdCBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9t
YWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NoZWR1bGVBbGwp
OiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJy
YXkpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvbWFjL1BhZ2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6YWRkU2NoZWR1bGVQYWlyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJl
bW92ZVNjaGVkdWxlUGFpcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJl
Z2lzdGVyTWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVWaWRlb0xheWVyR3Jhdml0eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
aW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2Uu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNGKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvcHlDb29raWVzRm9yVVJMV2l0aEZpcnN0UGFydHlVUkwpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlQ29va2llcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5l
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVs
dEhhbmRsaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3Q6OlJlc291cmNlUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OmNhY2hlUGFydGl0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6c2V0Q2FjaGVQYXJ0aXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6Y2ZVUkxSZXNwb25zZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjphZGRUb0hUVFBIZWFkZXJNYXApOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29j
b2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OmVuY29kaW5nUmVxdWlyZXNQbGF0
Zm9ybURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3Jl
ZGVudGlhbENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6dG9OU1VSTENyZWRlbnRpYWxQZXJz
aXN0ZW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjpuc0NyZWRl
bnRpYWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6aXNFbXB0eSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3Bh
Y2VDb2NvYS5oOgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjplbmNvZGluZ1Jl
cXVpcmVzUGxhdGZvcm1EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6dHlwZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2U6Om5zU3BhY2UpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0
Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6Om5zVVJMUmVxdWVz
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmNmVVJMUmVx
dWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBk
YXRlUmVzb3VyY2VSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9RdWlja0xvb2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xv
b2subW06CisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgZGV0
YWNoSGFuZGxlXSk6CisgICAgICAgIChXZWJDb3JlOjpRdWlja0xvb2tIYW5kbGU6On5RdWlja0xv
b2tIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6UUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5
cGVzU2V0KTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViUmVzb3VyY2VMb2FkZXJRdWlja0xvb2tE
ZWxlZ2F0ZSBpbml0V2l0aFJlc291cmNlTG9hZGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
ZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIF9zZW5kRGlkUmVjZWl2ZVJlc3BvbnNl
SWZOZWNlc3NhcnldKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViUmVzb3VyY2VMb2FkZXJRdWlj
a0xvb2tEZWxlZ2F0ZSBjb25uZWN0aW9uOmRpZFJlY2VpdmVEYXRhQXJyYXk6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgY29ubmVjdGlv
bjpkaWRSZWNlaXZlRGF0YTpsZW5ndGhSZWNlaXZlZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViUmVzb3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSBjb25uZWN0aW9uRGlkRmluaXNoTG9h
ZGluZzpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViUmVzb3VyY2VMb2FkZXJRdWlja0xvb2tE
ZWxlZ2F0ZSBjb25uZWN0aW9uOmRpZEZhaWxXaXRoRXJyb3I6XSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpRdWlja0xvb2tIYW5kbGU6OmRpZFJlY2VpdmVEYXRhQXJyYXkpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlUmVxdWVzdElPUy5tbTogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTo6c2V0QXV0aGVudGljYXRpb25DbGllbnQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmF1dGhlbnRpY2F0aW9uQ2xpZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpjb29raWVTdG9yYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVOU0Vycm9yRnJvbVJlc291cmNlRXJyb3JCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1MYXp5SW5pdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUNvbXBhcmUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6bnNFcnJvcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpvcGVyYXRvciBOU0Vycm9yICopOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0aW9uUXVldWVGb3JBc3luY0NsaWVudHMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjptYWtlRGVsZWdhdGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlbGVnYXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFj
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpuc1VSTFJlc3BvbnNlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6
eUluaXQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9u
b3VzTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNMb2FkZXJD
bGllbnQ6OnBsYXRmb3JtQmFkUmVzcG9uc2VFcnJvcik6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdh
dGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgZGV0YWNo
SGFuZGxlXSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1t
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3Nhcnkp
OiBEZWxldGVkLgorCiAyMDE1LTEyLTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFZpZXdwb3J0Q29uZmlndXJhdGlvbiBmdW5jdGlvbnMgc2hvdWxk
IHJldHVybiBhIGJvb2wgdG8gc2F5IGlmIGFueXRoaW5nIGNoYW5nZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpp
bmRleCBlNWQyODM3ZTlhNjBjY2NjNjEwZDU5MzA1MDNjZWY4ZjFmYWM1ZDg3Li40ZjlmYmQwMzAx
MjVmNGYzZDZmYWNlZjYzMzljYjA4NjRlNTc3ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjYgQEAKKzIwMTUtMTItMTYgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmUgVVNFKENGTkVUV09SSykrUExBVEZPUk0oQ09DT0EpIGNvZGUgcGF0
aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3OTM2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNj
L1dlYkRvd25sb2FkLm1tOgorICAgICAgICAqIE1pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oOgor
ICAgICAgICAqIE1pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVt
b3J5Q2FjaGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUlu
dGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQ
cmVmZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9s
aWN5Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmll
dyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBzY2hlZHVsZUluUnVuTG9vcDpmb3JNb2RlOl0pOiBEZWxldGVkLgorICAg
ICAgICAoZmluZFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJp
dmF0ZS5oOgorCiAyMDE1LTEyLTE2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYu
Y2Fub24uZnI+CiAKICAgICAgICAgW0ZldGNoIEFQSV0gQWRkIGZldGNoIEFQSSBjb21waWxlIHRp
bWUgZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IDhkYmVkNmQyNTUxOWY3ZTE5NzMwNTcwZWEzNTJiMDJiOWU1
YWUzMDUuLjk2MzgxYjk5ZTk3NWZkMjg3MDQ4MTI0MmQ1ZjczN2VlYzMzOWVjMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNS0xMi0xNiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJA
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBVU0UoQ0ZORVRXT1JLKStQTEFURk9STShDT0NP
QSkgY29kZSBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzc5MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9t
YWMvTmV0d29ya0xvYWRNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp3aWxs
Q2FjaGVSZXNwb25zZUFzeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRz
L0Rvd25sb2FkLmg6CisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1Mu
bW06IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMu
bW06CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAg
ICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW06CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9y
bURhdGEpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENlcnRpZmljYXRl
SW5mbz46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KToKKwogMjAxNS0xMi0xNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBWaWV3cG9ydENvbmZpZ3VyYXRpb24gZnVuY3Rpb25zIHNob3VsZCByZXR1cm4g
YSBib29sIHRvIHNheSBpZiBhbnl0aGluZyBjaGFuZ2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCA1OTE4MThj
M2JkYjgyYmE5YzJiNWFhNTlhNmRlYjY0YjMzMDEwYzllLi42MjY0Zjg4NzdhYWYxODVhNmJhZmNk
ODg0M2QxYzUyZmE5YjA0YmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTU0NSw5ICs1NDUsNiBAQAogI2lm
IFBMQVRGT1JNKElPUykKIAogI2RlZmluZSBIQVZFX1JFQURMSU5FIDEKLSNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQotI2RlZmluZSBVU0VfQ0ZORVRXT1JLIDEKLSNlbmRpZgogI2RlZmluZSBV
U0VfVUlLSVRfRURJVElORyAxCiAjZGVmaW5lIFVTRV9XRUJfVEhSRUFEIDEKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMwOWQz
ZDk0ZjMxYTY5YzY4ODdkMjc1NDAyNDg1MjY5OTFiYThjY2QuLjdlMWU4MjY0NGQ1ODRlZjY1Nzk3
YThkNzJmMjg1M2NhZWM0YTJjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3NzQsNyArMjc3NCw2IEBACiAJCTdFNjZFMjM0
MTZENkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTY2RTIzMjE2RDZFQjZDMDBG
N0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oICovOyB9OwogCQk3RTY2RTIzNDE3
RTZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTY2RTIzMjE3RTZFQjZDMDBG
N0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmggKi87IH07CiAJCTdFN0RFMUZE
MTk1Q0VGMjYwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFN0RFMUZDMTk1Q0VGMjYwMDM1MzYz
QiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSAqLzsgfTsKLQkJN0U3REUyMDIxOTVDRUZDRDAw
MzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFN0RFMjAxMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJj
ZVJlcXVlc3RJT1MubW0gKi87IH07CiAJCTdFOEZBREM0MTk5QTk1QjEwMDcxNDk2OCAvKiBTdWJy
ZXNvdXJjZUxvYWRlckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0U4RkFEQzMxOTlBOTVCMTAwNzE0OTY4IC8qIFN1YnJlc291cmNlTG9hZGVy
Q29jb2EubW0gKi87IH07CiAJCTdFOTlBRjUxMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1
c0FsbG93ZWRJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dl
ZEluZGljYXRvci5jcHAgKi87IH07CiAJCTdFOTlBRjUzMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5k
b3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFOTlBRjU0MEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0Fs
bG93ZWRJbmRpY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTAyODUsNyArMTAyODQsNiBAQAogCQk3RTY2RTIzMjE2RDZFQjZDMDBGN0U3
RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdFNjZFMjMyMTdFNkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUFZSVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFN0RF
MUZDMTk1Q0VGMjYwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENvY29hLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3RTdERTIwMTE5NUNFRkNEMDAzNTM2M0IgLyog
UmVzb3VyY2VSZXF1ZXN0SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUmVzb3VyY2VSZXF1ZXN0SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3RThGQURDMzE5OUE5NUIxMDA3MTQ5NjggLyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN1YnJlc291cmNlTG9hZGVy
Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFOTlBRjUyMEIxMzg0NjQ2
OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U5OUFGNTQwQjEzODQ2NDY4RkIwMUE1IC8q
IFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE2NTY3LDcgKzE2NTY1LDYgQEAKIAkJCQk0NDJBRjdBODEwMkNEREVBMDA4
RkQ0RDMgLyogUXVpY2tMb29rLm1tICovLAogCQkJCUExMERCRjQ2MThGOTIzMTcwMDBENzBDNiAv
KiBRdWlja0xvb2tIYW5kbGVDbGllbnQuaCAqLywKIAkJCQk3RTQyOENFNDEzRTM0MDdGMDAzQjY2
MUMgLyogUmVzb3VyY2VIYW5kbGVJT1MubW0gKi8sCi0JCQkJN0U3REUyMDExOTVDRUZDRDAwMzUz
NjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5tbSAqLywKIAkJCQk0NEEyMERCODBGODQxNjZDMDBC
M0UxRkUgLyogV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmggKi8sCiAJCQkJNDQ0RDRFMjEwRjcwOEIy
RTAwMzE1OEUwIC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5tbSAqLywKIAkJCSk7CkBAIC0zMDc4
NCw3ICszMDc4MSw2IEBACiAJCQkJNTE0Qzc2N0MwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNl
UmVxdWVzdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NkUxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFN0RF
MUZEMTk1Q0VGMjYwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovLAotCQkJCTdFN0RFMjAyMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1Mu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY1MzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3Vy
Y2VSZXF1ZXN0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2N0UwQ0U5MjNBMTAwN0VG
M0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4
NDcxMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IDU1MTAzOTFi
ZDMzZDNhMzY2NzE1NmU4NDVmYTMxMzExYzNmNmY5ZjMuLjlkYmUxODNlNjllY2I1ZGUxZjU1NWI3
ZTU4Y2U0OGQ3ODNkZGUwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
CkBAIC01Niw2ICs1NiwxMCBAQAogI2luY2x1ZGUgIlF1aWNrTG9vay5oIgogI2VuZGlmCiAKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7
CkBAIC0xNDQsNyArMTQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICAg
ICAgY29uc3QgU3RyaW5nJiBvdmVycmlkZUVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9vdmVy
cmlkZUVuY29kaW5nOyB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgICAgIHZvaWQgc2NoZWR1bGUoU2NoZWR1bGVQYWlyJik7CiAgICAgICAgIHZvaWQgdW5z
Y2hlZHVsZShTY2hlZHVsZVBhaXImKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggMGQ4MWZmNWJhMjhhMjEwNGQ1MjhhZWNmYmJiZTczNTZjYTIz
YjY3OC4uOTYxM2UzMDFiODMxN2VhZTgxNTJjZjNlOGYwNzZjNGQzOWMxZDcwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03MjQsNyArNzI0LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKQogICAgIGNhbmNlbCgpOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lm
IFBMQVRGT1JNKENPQ09BKQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpzY2hlZHVsZShTY2hlZHVs
ZVBhaXImIHBhaXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4
IDAyN2FjMDhmMjMyMzFkNDA3ODdkMTMwMjU2MjYzMzJiOTI2ZjQwZmEuLjg1MjAxMTc1NGY3Yjkx
NDY3NTUyYzhiNWNhOWIxOTc3MTc5OWVlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCkBAIC0xNDAsNyArMTQwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU3dp
dGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICB2b2lkIHNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAgICAg
dm9pZCB1bnNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKQEAgLTE1NywxMiAr
MTU3LDkgQEAgcHJvdGVjdGVkOgogCiAgICAgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBv
cHRpb25zKCkgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYg
IVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCBOU0NhY2hl
ZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVk
VVJMUmVzcG9uc2UqKSBvdmVycmlkZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBV
U0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2Fj
aGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJy
aWRlOwotI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwo
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKaW5kZXggNjlh
MjQyMjk3MjFmZjZjYTk4OTkzYTY5OTc3MDE4ZmVlZDhkNWNkOC4uZWZhY2RkOGQxMzI0MmEwNjQ0
MzlhYjcyOTAwYjE5NGNjYmMwMTRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmgKQEAgLTczLDEyICs3Myw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0jaWYgUExB
VEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNwb25zZSAqd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgVVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFsIENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJl
c3BvbnNlUmVmKSBvdmVycmlkZTsKLSNlbmRpZgogCiAjaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FS
UkFZX0NBTExCQUNLKQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RhdGFBcnJheSgpIG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9t
YWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1
bWVudExvYWRlck1hYy5jcHAKaW5kZXggN2U3NGYyMGY5NzJiMDc4ZmU4NjJiNTgxYzI4OWJlZWU1
ZDBhMTJjOC4uYjI2MTQ0YmQyMDVmMWY2YTc2NmFlZWI1MjdmY2VmM2Y5NjJlMTdiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAKQEAgLTMz
LDggKzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgUExBVEZPUk0oTUFDKQot
CiBzdGF0aWMgdm9pZCBzY2hlZHVsZUFsbChjb25zdCBSZXNvdXJjZUxvYWRlck1hcCYgbG9hZGVy
cywgU2NoZWR1bGVQYWlyJiBwYWlyKQogewogICAgIFZlY3RvcjxSZWZQdHI8UmVzb3VyY2VMb2Fk
ZXI+PiBsb2FkZXJzQ29weTsKQEAgLTY5LDYgKzY3LDQgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiAgICAgdW5zY2hlZHVsZUFsbChtX211bHRp
cGFydFN1YnJlc291cmNlTG9hZGVycywgcGFpcik7CiB9CiAKLSNlbmRpZgotCiB9IC8vIG5hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRl
ck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0K
aW5kZXggYmI5YjE0ZTgxNGI1YjIzOWM3N2U1MWE0ZGJmMTdjZDY1MWMyNmYwMy4uOGEzMjhlZTVm
ZjI4ODFlOGMzNDQ2ZWI1ODg0Y2UyZTViMjJmY2ZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCkBAIC0zNiwxOSArMzYsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1DRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSos
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCi17Ci0gICAgaWYgKG1fb3B0
aW9ucy5zZW5kTG9hZENhbGxiYWNrcygpID09IERvTm90U2VuZENhbGxiYWNrcykKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICBSZXRhaW5QdHI8TlNDYWNoZWRVUkxSZXNwb25zZT4gbnND
YWNoZWRSZXNwb25zZSA9IGFkb3B0TlMoW1tOU0NhY2hlZFVSTFJlc3BvbnNlIGFsbG9jXSBfaW5p
dFdpdGhDRkNhY2hlZFVSTFJlc3BvbnNlOmNhY2hlZFJlc3BvbnNlXSk7Ci0gICAgcmV0dXJuIFtm
cmFtZUxvYWRlcigpLT5jbGllbnQoKS53aWxsQ2FjaGVSZXNwb25zZShkb2N1bWVudExvYWRlcigp
LCBpZGVudGlmaWVyKCksIG5zQ2FjaGVkUmVzcG9uc2UuZ2V0KCkpIF9DRkNhY2hlZFVSTFJlc3Bv
bnNlXTsKLX0KLQotI2Vsc2UKLQogTlNDYWNoZWRVUkxSZXNwb25zZSogUmVzb3VyY2VMb2FkZXI6
OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSog
cmVzcG9uc2UpCiB7CiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcygpID09IERv
Tm90U2VuZENhbGxiYWNrcykKQEAgLTU2LDggKzQzLDYgQEAgTlNDYWNoZWRVUkxSZXNwb25zZSog
UmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgTlNDYWNo
ZWQKICAgICByZXR1cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2Uo
ZG9jdW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9CiAKLSNlbmRpZgot
CiAjaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogCiB2b2lkIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL1BhZ2VNYWMubW0KaW5kZXggNTI1MTA4ZmNhNWVlOGE4NDMxNGE2ZDEwNWFmNGE2
ZDEzNTQyNGU3Zi4uZjVjNTFmOWFiZmFhN2M3NTc1MDJjMmFjZTgwODM5Y2Q2ZWIyNzk1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCkBAIC0zNCwxMiArMzQsMTYgQEAKICNpbXBvcnQg
IkZyYW1lVHJlZS5oIgogI2ltcG9ydCAiTWFpbkZyYW1lLmgiCiAKKyNpZiBQTEFURk9STShJT1Mp
CisjaW1wb3J0ICJXZWJDb3JlVGhyZWFkLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB2b2lkIFBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7Ci0jaWYgVVNFKENGTkVUV09S
SykKLSAgICBhZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUoW1tOU1J1bkxvb3Ag
Y3VycmVudFJ1bkxvb3BdIGdldENGUnVuTG9vcF0sIGtDRlJ1bkxvb3BDb21tb25Nb2RlcykpOwor
I2lmIFBMQVRGT1JNKElPUykKKyAgICBhZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVh
dGUoV2ViVGhyZWFkTlNSdW5Mb29wKCksIGtDRlJ1bkxvb3BDb21tb25Nb2RlcykpOwogI2Vsc2UK
ICAgICBhZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUoW05TUnVuTG9vcCBjdXJy
ZW50UnVuTG9vcF0sIGtDRlJ1bkxvb3BDb21tb25Nb2RlcykpOwogI2VuZGlmCkBAIC01MSwxNCAr
NTUsMTIgQEAgdm9pZCBQYWdlOjphZGRTY2hlZHVsZVBhaXIoUmVmPFNjaGVkdWxlUGFpcj4mJiBw
YWlyKQogICAgICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycyA9IHN0ZDo6bWFrZV91bmlxdWU8
U2NoZWR1bGVQYWlySGFzaFNldD4oKTsKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycy0+YWRk
KHBhaXIucHRyKCkpOwogCi0jaWYgIVBMQVRGT1JNKElPUykKICAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIg
PSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIGRvY3VtZW50
TG9hZGVyLT5zY2hlZHVsZShwYWlyKTsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1
bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkp
CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+c2NoZWR1bGUocGFpcik7CiAgICAgfQotI2Vu
ZGlmCiAKICAgICAvLyBGSVhNRTogbWFrZSBTaGFyZWRUaW1lck1hYyB1c2UgdGhlc2UgU2NoZWR1
bGVQYWlycy4KIH0KQEAgLTcxLDE0ICs3MywxMiBAQCB2b2lkIFBhZ2U6OnJlbW92ZVNjaGVkdWxl
UGFpcihSZWY8U2NoZWR1bGVQYWlyPiYmIHBhaXIpCiAKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQ
YWlycy0+cmVtb3ZlKHBhaXIucHRyKCkpOwogCi0jaWYgIVBMQVRGT1JNKElPUykKICAgICBmb3Ig
KEZyYW1lKiBmcmFtZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9j
dW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAg
ICAgIGRvY3VtZW50TG9hZGVyLT51bnNjaGVkdWxlKHBhaXIpOwogICAgICAgICBpZiAoRG9jdW1l
bnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9j
dW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT51bnNjaGVkdWxlKHBh
aXIpOwogICAgIH0KLSNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KaW5kZXggOTgwZTQzMWY2ZDJjMTQ2ZjViYzExYjk3MmVjNjlmNjAzNTdjOGI1OC4uMGFh
MThmZDFiNWNmYjk3MDRkY2FkMjU0NzZjNjFmYTk2ZTU5NTQxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCkBAIC05OSwxMCArOTksNiBAQAogI2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZpZGVvVG9v
bGJveC5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2luY2x1ZGUgIkNGTlNVUkxD
b25uZWN0aW9uU1BJLmgiCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKElPUykKICNpbmNsdWRlIDxP
cGVuR0xFUy9FUzMvZ2xleHQuaD4KICNlbmRpZgpAQCAtNDIxLDU4ICs0MTcsNiBAQCBzdGF0aWMg
ZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpCiB9CiAjZW5kaWYKIAot
I2lmIFVTRShDRk5FVFdPUkspCi1jbGFzcyBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQ2xpZW50PiwgcHVibGljIEF1dGhlbnRpY2F0aW9uQ2xpZW50IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xp
ZW50PiBjcmVhdGUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUNsaWVudChjaGFsbGVuZ2UpKTsKLSAgICB9Ci0KLSAgICB1c2luZyBSZWZDb3Vu
dGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50Pjo6cmVmOwotICAg
IHVzaW5nIFJlZkNvdW50ZWQ8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGll
bnQ+OjpkZXJlZjsKLQotcHJpdmF0ZToKLSAgICBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUNsaWVudChOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UpCi0g
ICAgICAgIDogbV9jaGFsbGVuZ2UoY2hhbGxlbmdlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
Y2hhbGxlbmdlKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVmQXV0aGVudGljYXRpb25D
bGllbnQoKSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmQXV0aGVu
dGljYXRpb25DbGllbnQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KLQotICAgIHZpcnR1YWwgdm9p
ZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25z
dCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgW1ttX2No
YWxsZW5nZSBzZW5kZXJdIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSBm
b3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAgfQotCi0g
ICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlh
bChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCi0gICAgewotICAgICAg
ICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIGNhbmNl
bEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlm
IChbW21fY2hhbGxlbmdlIHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwZXJm
b3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KV0pCi0gICAgICAg
ICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gcGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvckF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgcmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKFtbbV9jaGFsbGVuZ2Ugc2Vu
ZGVyXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJlamVjdFByb3RlY3Rpb25TcGFjZUFu
ZENvbnRpbnVlV2l0aENoYWxsZW5nZTopXSkKLSAgICAgICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2Vu
ZGVyXSByZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6bV9jaGFs
bGVuZ2UuZ2V0KCldOwotICAgIH0KLQotICAgIFJldGFpblB0cjxOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlPiBtX2NoYWxsZW5nZTsKLX07Ci0jZW5kaWYKLQogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVn
aXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkKQEAgLTE3ODgsMTMg
KzE3MzIsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3Vs
ZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0UgogCiBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogbnNDaGFsbGVuZ2UpCiB7
Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBSZWZQdHI8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VDbGllbnQ+IGNsaWVudCA9IFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQ2xpZW50OjpjcmVhdGUobnNDaGFsbGVuZ2UpOwotICAgIFJldGFpblB0cjxDRlVSTEF1
dGhDaGFsbGVuZ2VSZWY+IGNmQ2hhbGxlbmdlID0gYWRvcHRDRihbbnNDaGFsbGVuZ2UgX2NyZWF0
ZUNGQXV0aENoYWxsZW5nZV0pOwotICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5n
ZShjZkNoYWxsZW5nZS5nZXQoKSwgY2xpZW50LmdldCgpKTsKLSNlbHNlCiAgICAgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlKG5zQ2hhbGxlbmdlKTsKLSNlbmRpZgogCiAgICAgcmV0
dXJuIHBsYXllcigpLT5zaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGNoYWxsZW5nZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCmluZGV4IDRlMzAzNjZkNGViN2ZhYjE4
OGRlNGNhZTkwZjlkNTUxMWY5MDZkYWIuLjA5ZDU5YzcxMjgwODMxZDVlNzQ1NTgwMjVkNzQ0ZGEz
ODMyNTA5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCkBAIC01MSwxMyArNTEsNiBAQCBXRUJDT1JFX0VY
UE9SVCB2b2lkICgqd2tDRlVSTFJlcXVlc3RBbGxvd0FsbFBvc3RDYWNoaW5nKShDRlVSTFJlcXVl
c3RSZWYpOwogV0VCQ09SRV9FWFBPUlQgQ0ZBcnJheVJlZiAoKndrQ29weU5TVVJMUmVzcG9uc2VD
ZXJ0aWZpY2F0ZUNoYWluKShOU1VSTFJlc3BvbnNlKik7CiBXRUJDT1JFX0VYUE9SVCBDRlN0cmlu
Z0VuY29kaW5nICgqd2tHZXRXZWJEZWZhdWx0Q0ZTdHJpbmdFbmNvZGluZykodm9pZCk7CiAKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotV0VCQ09SRV9FWFBPUlQgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiAo
KndrR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKSgpOwotV0VCQ09SRV9FWFBPUlQgV0tDRlVS
TENyZWRlbnRpYWxSZWYgKCp3a0NvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2Up
KENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSk7Ci1XRUJDT1JFX0VYUE9S
VCB2b2lkICgqd2tTZXRDRlVSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYpKENGTXV0YWJsZVVS
TFJlcXVlc3RSZWYsIGJvb2wpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0UmVxdWVzdFN0
b3JhZ2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBDRk11dGFibGVVUkxSZXF1ZXN0
UmVmKTsKLSNlbmRpZgotCiBXRUJDT1JFX0VYUE9SVCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmICgq
d2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24pKENGU3RyaW5nUmVmKTsKIFdFQkNPUkVfRVhQ
T1JUIE5TVVJMUmVxdWVzdCogKCp3a0NvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKShDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmLCBOU1VSTFJlcXVlc3QqKTsKIFdFQkNPUkVfRVhQT1JUIENGSFRU
UENvb2tpZVN0b3JhZ2VSZWYgKCp3a0NvcHlIVFRQQ29va2llU3RvcmFnZSkoQ0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dlYkNvcmVUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29y
ZVRocmVhZC5oCmluZGV4IGVmYjhkN2E0ODYwZDAwM2ZmM2Q3YTBlM2ExYWFkMzcyMmQ3ZmM4ZWYu
LjYzNzdiOGU1ZGRmZThkOThlMWJkMGViMTIzNzMxNTE3OTRiZDQwYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5oCkBAIC04MSw3ICs4MSw3
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBXZWJUaHJlYWRTaG91bGRZaWVsZCh2b2lkKSB7IHJldHVy
biB3ZWJUaHJlYWRTaG91bGRZaWVsZDsgfQogc3RhdGljIGlubGluZSB2b2lkIFdlYlRocmVhZFNl
dFNob3VsZFlpZWxkKCkgeyB3ZWJUaHJlYWRTaG91bGRZaWVsZCA9IHRydWU7IH0KIAogV0VCQ09S
RV9FWFBPUlQgQ0ZSdW5Mb29wUmVmIFdlYlRocmVhZFJ1bkxvb3Aodm9pZCk7Ci1OU1J1bkxvb3Aq
IFdlYlRocmVhZE5TUnVuTG9vcCh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIE5TUnVuTG9vcCogV2Vi
VGhyZWFkTlNSdW5Mb29wKHZvaWQpOwogV2ViVGhyZWFkQ29udGV4dCAqV2ViVGhyZWFkQ3VycmVu
dENvbnRleHQodm9pZCk7CiBib29sIFdlYlRocmVhZENvbnRleHRJc0N1cnJlbnQodm9pZCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oCmluZGV4IDYwYjQ4OTA1NzNhZDZhODVkM2IwYTM3M2NjOGNhMjVmZjM5ZjAyMTEuLmI2
NTY2MTMwN2QwNjJiZDBhOTdjZDE3ZDFkYmE4YTEyZjdkZGU4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaApAQCAtMjU2
LDEyICsyNTYsNiBAQCBleHRlcm4gQ0ZIVFRQTWVzc2FnZVJlZiAoKndrR2V0Q0ZVUkxSZXNwb25z
ZUhUVFBSZXNwb25zZSkoQ0ZVUkxSZXNwb25zZVJlZik7CiBleHRlcm4gQ0ZTdHJpbmdSZWYgKCp3
a0NvcHlDRlVSTFJlc3BvbnNlU3VnZ2VzdGVkRmlsZW5hbWUpKENGVVJMUmVzcG9uc2VSZWYpOwog
ZXh0ZXJuIHZvaWQgKCp3a1NldENGVVJMUmVzcG9uc2VNSU1FVHlwZSkoQ0ZVUkxSZXNwb25zZVJl
ZiwgQ0ZTdHJpbmdSZWYgbWltZVR5cGUpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLWV4dGVybiBD
RkhUVFBDb29raWVTdG9yYWdlUmVmICgqd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UpKCk7
Ci1leHRlcm4gV0tDRlVSTENyZWRlbnRpYWxSZWYgKCp3a0NvcHlDcmVkZW50aWFsRnJvbUNGUGVy
c2lzdGVudFN0b3JhZ2UpKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSk7
Ci1leHRlcm4gdm9pZCAoKndrU2V0Q0ZVUkxSZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZmKShDRk11
dGFibGVVUkxSZXF1ZXN0UmVmLCBib29sKTsKLWV4dGVybiB2b2lkICgqd2tTZXRSZXF1ZXN0U3Rv
cmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIENGTXV0YWJsZVVSTFJlcXVlc3RS
ZWYpOwotI2VuZGlmCiAjaWYgIVBMQVRGT1JNKElPUykKIGV4dGVybiB2b2lkICgqd2tTZXRNZXRh
ZGF0YVVSTCkoTlNTdHJpbmcgKnVybFN0cmluZywgTlNTdHJpbmcgKnJlZmVycmVyLCBOU1N0cmlu
ZyAqcGF0aCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggMTg4ZjQxMjgxMjNhOTYwOGFkYmZmY2Ni
ZjY5YjhkYWYzMDAxY2JjNy4uMDMzOTBjZTY5YzViZmNlZjNhYjUxZTZhMTk2Mzc0NTA2ZWJhZWEz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UubW0KQEAgLTg4LDEzICs4OCw2IEBAIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94
eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVt
CiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRT
dHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CiBDRkhUVFBN
ZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwg
Q0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYg
cHJveHlQb3J0KTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi1DRkhUVFBDb29raWVTdG9yYWdlUmVm
ICgqd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UpKCk7Ci1XS0NGVVJMQ3JlZGVudGlhbFJl
ZiAoKndrQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFnZSkoQ0ZVUkxQcm90ZWN0
aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlKTsKLXZvaWQgKCp3a1NldENGVVJMUmVxdWVzdFNo
b3VsZENvbnRlbnRTbmlmZikoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiwgYm9vbCk7Ci12b2lkICgq
d2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIENGTXV0
YWJsZVVSTFJlcXVlc3RSZWYpOwotI2VuZGlmCi0KIHZvaWQqIHdrR2V0SHlwaGVuYXRpb25Mb2Nh
dGlvbkJlZm9yZUluZGV4OwogCiBib29sICgqd2tFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9y
ZVNub3dMZW9wYXJkKSh2b2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3BwCmluZGV4IDkzYzRkZGJhNDhmOWZkYjM3
MWI5NWNjMjk3MGRhYzhjZTg1OWJjMzguLjAxMjZkYzc5NDgzMWY0YWZmNmNhYzEyOWMwMmU5OGNl
ZWVjOWQyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJv
dGVjdGlvblNwYWNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAi
UHJvdGVjdGlvblNwYWNlLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKSAmJiAhUExBVEZPUk0oQ09D
T0EpCisjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCiAj
aW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUHJvdGVjdGlvblNwYWNlUHJpdi5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGUuaAppbmRleCA1M2UyNGNkMWVhYmY3MGI4YTFlYzFkYjRiNjdmODNjNThi
OTgwYzcwLi4wOTIzOTJlZTI0NzRmOTQxOTY3YjE5NzlmNGI3MmVlZTY1YTNmNGE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBAIC0x
MjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IHZvaWQgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTENvbm5lY3Rpb24gKmNvbm5l
Y3Rpb24oKSBjb25zdDsKICAgICBpZCBtYWtlRGVsZWdhdGUoYm9vbCk7CkBAIC0yMTYsNyArMjE2
LDcgQEAgcHVibGljOgogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogI2Vu
ZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udGludWVXaWxsQ2FjaGVSZXNwb25z
ZShOU0NhY2hlZFVSTFJlc3BvbnNlICopOwogI2VuZGlmCiAKQEAgLTIzNiwxMCArMjM2LDYgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDRlN0cmluZ1JlZiBzeW5jaHJvbm91
c0xvYWRSdW5Mb29wTW9kZSgpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpICYmIFVTRShD
Rk5FVFdPUkspCi0gICAgc3RhdGljIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY3JlYXRlU1NMUHJv
cGVydGllc0Zyb21OU1VSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0jZW5kaWYK
LQogICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gKCpCdWlsdGluQ29uc3Ry
dWN0b3IpKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGll
bnQqIGNsaWVudCk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCdWlsdGluQ29uc3RydWN0b3Io
Y29uc3QgQXRvbWljU3RyaW5nJiBwcm90b2NvbCwgQnVpbHRpbkNvbnN0cnVjdG9yKTsKIApAQCAt
Mjc2LDExICsyNzIsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUNGVVJMQ29ubmVjdGlv
bihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlm
ZiwgU2NoZWR1bGluZ0JlaGF2aW9yLCBDRkRpY3Rpb25hcnlSZWYgY2xpZW50UHJvcGVydGllcyk7
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExB
VEZPUk0oTUFDKQogICAgIHZvaWQgY3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBi
b29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwg
U2NoZWR1bGluZ0JlaGF2aW9yKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiAhVVNF
KENGTkVUV09SSykKKyNpZiBQTEFURk9STShJT1MpCiAgICAgdm9pZCBjcmVhdGVOU1VSTENvbm5l
Y3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wg
c2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IsIE5TRGljdGlvbmFyeSAqY29u
bmVjdGlvblByb3BlcnRpZXMpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKaW5kZXggNjEyM2Yx
NGFjYTI0ODRiZTQyYTZkZjEwMGFmM2FhYzMxOWJkMmQ5Zi4uN2FlNzNjZjcxZGMxMTVmNDAxZjIw
MGIzYzQ4MWY4ODQ5NzljNzM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKQEAgLTEzNiwxMSArMTM2LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgbV9jdXJyZW50
UmVxdWVzdDsKICAgICAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGU+IG1fY29ubmVjdGlvbkRlbGVnYXRlOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0Ep
ICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBSZXRhaW5Q
dHI8TlNVUkxDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgICAgIFJldGFpblB0cjxpZD4g
bV9kZWxlZ2F0ZTsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBib29sIG1f
c3RhcnRXaGVuU2NoZWR1bGVkOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShD
Rk5FVFdPUkspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0F1dGhlbnRpY2F0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9BdXRoZW50aWNhdGlvbkNGLmNwcAppbmRleCA3ODgzZTQ2OTExNWRlMzI3OTRjMWIyYTQ3ZGJi
NTAzMDhlMTA4ZWM5Li5mODc0NWQ1NDNhOTA4YzgzMzJjYThhZjJmOWEyMTZlOTk2OWVkYmYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0
aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVu
dGljYXRpb25DRi5jcHAKQEAgLTUzLDEzICs1Myw4IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rp
CiAKIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShDRlVS
TEF1dGhDaGFsbGVuZ2VSZWYgY2ZDaGFsbGVuZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhlbnRpY2F0
aW9uQ2xpZW50KQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIDogQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VCYXNlKFByb3RlY3Rpb25TcGFjZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9u
U3BhY2UoY2ZDaGFsbGVuZ2UpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
cmVkZW50aWFsKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbChjZkNoYWxs
ZW5nZSkpLAotI2Vsc2UKICAgICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShjb3JlKENG
VVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjZkNoYWxsZW5nZSkpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJv
cG9zZWRDcmVkZW50aWFsKGNmQ2hhbGxlbmdlKSksCi0jZW5kaWYKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcmV2aW91c0ZhaWx1cmVDb3Vu
dChjZkNoYWxsZW5nZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENGVVJM
UmVzcG9uc2VSZWYpQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0RmFpbHVyZVJlc3BvbnNlKGNmQ2hhbGxl
bmdlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlVSTEF1dGhDaGFsbGVu
Z2VHZXRFcnJvcihjZkNoYWxsZW5nZSkpCkBAIC05MywxNCArODgsMTAgQEAgQ0ZVUkxBdXRoQ2hh
bGxlbmdlUmVmIGNyZWF0ZUNGKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hh
bGxlbmdlKQogewogICAgIC8vIEZJWE1FOiBXaHkgbm90IGNhY2hlIENGVVJMQXV0aENoYWxsZW5n
ZVJlZiBpbiBtX2NmQ2hhbGxlbmdlPyBGb3VuZGF0aW9uIGNvdW50ZXJwYXJ0IGRvZXMgdGhhdC4K
IAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiByZXN1bHQg
PSBDRlVSTEF1dGhDaGFsbGVuZ2VDcmVhdGUoMCwgY29yZUNoYWxsZW5nZS5wcm90ZWN0aW9uU3Bh
Y2UoKS5jZlNwYWNlKCksIGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkuY2ZDcmVk
ZW50aWFsKCksCi0jZWxzZQogICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRl
bnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFs
KCkpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY+IHByb3RlY3Rpb25T
cGFjZSA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSkp
OwogCiAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9IENGVVJMQXV0aENoYWxsZW5n
ZUNyZWF0ZSgwLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCksCi0jZW5k
aWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlQ2hhbGxlbmdl
LnByZXZpb3VzRmFpbHVyZUNvdW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29yZUNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5jZlVSTFJlc3BvbnNlKCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUNoYWxsZW5nZS5l
cnJvcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
Q29va2llSmFyQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9D
b29raWVKYXJDRk5ldC5jcHAKaW5kZXggOTQ3ZmIzYmY5YmUyNmZiMjdkYjY5MDRmMGNlZGQzZTll
ODczZDQxOC4uZGE0YTA2NGY3NWEwNzc2ZWNkMzVmZDY2ZWY4YjgwNjUxYTUwNTA1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5l
dC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKFdJTikgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA8PSAxMDkwKQorI2lmIFBMQVRGT1JNKFdJTikKIGVudW0gewogICAgIENG
SFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnRE
b21haW4gPSAzCiB9OwpAQCAtMTA1LDEzICsxMDUsOSBAQCBzdGF0aWMgUmV0YWluUHRyPENGQXJy
YXlSZWY+IGNvcHlDb29raWVzRm9yVVJMV2l0aEZpcnN0UGFydHlVUkwoY29uc3QgTmV0d29ya1N0
bwogewogICAgIGJvb2wgc2VjdXJlID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7CiAKLSNpZiBQ
TEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMDAwKQotICAgIHJldHVybiBhZG9wdENGKF9DRkhUVFBDb29raWVTdG9y
YWdlQ29weUNvb2tpZXNGb3JVUkxXaXRoTWFpbkRvY3VtZW50VVJMKHNlc3Npb24uY29va2llU3Rv
cmFnZSgpLmdldCgpLCB1cmwuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgZmlyc3RQYXJ0eS5jcmVhdGVD
RlVSTCgpLmdldCgpLCBzZWN1cmUpKTsKLSNlbHNlCiAgICAgLy8gX0NGSFRUUENvb2tpZVN0b3Jh
Z2VDb3B5Q29va2llc0ZvclVSTFdpdGhNYWluRG9jdW1lbnRVUkwgaXMgbm90IGF2YWlsYWJsZSBv
biBvdGhlciBwbGF0Zm9ybXMuCiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHkpOwogICAgIHJl
dHVybiBhZG9wdENGKENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTChzZXNzaW9u
LmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsLmNyZWF0ZUNGVVJMKCkuZ2V0KCksIHNlY3VyZSkp
OwotI2VuZGlmCiB9CiAKIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNvb2tpZXMoQ0ZEaWN0aW9u
YXJ5UmVmIGhlYWRlckZpZWxkcywgQ0ZVUkxSZWYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5j
cHAKaW5kZXggNTYwOTI1OTdhYWNjZDI3NzNmNjk4YjM1YmQ0ZmM3MTU4NzJjNDBlNC4uNjllMzMy
YzEzYjE3MGJiYjI5OTNlYTRjMWQ1NzU4ODdiZTZlZjU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZO
ZXQuY3BwCkBAIC0zMyw0MiArMzMsMTggQEAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIK
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNs
dWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jZWxpZiBQTEFURk9STShXSU4pCisjaWYg
UExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0
ZW1JbnRlcmZhY2UuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUgPENG
TmV0d29yay9DRlVSTENyZWRlbnRpYWxTdG9yYWdlLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBDcmVkZW50aWFsIENyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVu
dFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0jaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVu
dGlhbENGID0gYWRvcHRDRih3a0NvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2Uo
cHJvdGVjdGlvblNwYWNlLmNmU3BhY2UoKSkpOwotICAgIHJldHVybiBDcmVkZW50aWFsKGNyZWRl
bnRpYWxDRi5nZXQoKSk7Ci0jZWxzZQogICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFj
ZVJlZj4gcHJvdGVjdGlvblNwYWNlQ0YgPSBhZG9wdENGKGNyZWF0ZUNGKHByb3RlY3Rpb25TcGFj
ZSkpOwogICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWxDRiA9IGFk
b3B0Q0Yod2tDb3B5Q3JlZGVudGlhbEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKHByb3RlY3Rpb25T
cGFjZUNGLmdldCgpKSk7CiAgICAgcmV0dXJuIGNvcmUoY3JlZGVudGlhbENGLmdldCgpKTsKLSNl
bmRpZgotfQotCi0jaWYgUExBVEZPUk0oSU9TKQotdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6c2F2
ZVRvUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3Bh
Y2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCi17Ci0gICAgUmV0YWluUHRyPENGVVJM
Q3JlZGVudGlhbFN0b3JhZ2VSZWY+IHN0b3JhZ2VDRiA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFs
U3RvcmFnZUNyZWF0ZSgwKSk7Ci0KLSAgICBpZiAoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpID09
IENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpIHsKLSAgICAgICAgQ3JlZGVudGlhbCBzZXNzaW9u
Q3JlZGVudGlhbChjcmVkZW50aWFsLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsK
LSAgICAgICAgQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9yUHJv
dGVjdGlvblNwYWNlKHN0b3JhZ2VDRi5nZXQoKSwgc2Vzc2lvbkNyZWRlbnRpYWwuY2ZDcmVkZW50
aWFsKCksIHByb3RlY3Rpb25TcGFjZS5jZlNwYWNlKCkpOwotICAgIH0gZWxzZQotICAgICAgICBD
RlVSTENyZWRlbnRpYWxTdG9yYWdlU2V0RGVmYXVsdENyZWRlbnRpYWxGb3JQcm90ZWN0aW9uU3Bh
Y2Uoc3RvcmFnZUNGLmdldCgpLCBjcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBwcm90ZWN0aW9u
U3BhY2UuY2ZTcGFjZSgpKTsKIH0KLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VF
cnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9y
LmgKaW5kZXggMTcwM2NjOTFmNjhiMmE1ZTY0Zjg3OTIzY2U2ZmJhMWQyN2RkMjQxZC4uMWI0YWQ3
MzA2NmM3NzE4YTBjYTUxNDUwMGVlZDRmN2M0ZDkxNDQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKQEAgLTYxLDE2ICs2MSwx
MSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgQ0ZFcnJvclJlZiBjZkVycm9yKCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgQ0ZFcnJvclJlZigpIGNvbnN0OwogCi0j
aWYgVVNFKENGTkVUV09SSykKLSNpZiBQTEFURk9STShXSU4pCisjaWYgVVNFKENGTkVUV09SSykg
JiYgUExBVEZPUk0oV0lOKQogICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4s
IGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBs
b2NhbGl6ZWREZXNjcmlwdGlvbiwgQ0ZEYXRhUmVmIGNlcnRpZmljYXRlKTsKICAgICBQQ0NFUlRf
Q09OVEVYVCBjZXJ0aWZpY2F0ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2VydGlmaWNhdGUoQ0ZE
YXRhUmVmKTsKICNlbmRpZgotICAgIFJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcik7
Ci0gICAgQ0ZTdHJlYW1FcnJvciBjZlN0cmVhbUVycm9yKCkgY29uc3Q7Ci0gICAgb3BlcmF0b3Ig
Q0ZTdHJlYW1FcnJvcigpIGNvbnN0OwotI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yKE5TRXJyb3IgKik7CkBAIC04OCw5ICs4Myw2
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RhdGFJc1VwVG9EYXRlOwogI2lmIFVTRShDRk5FVFdP
UkspCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0ZFcnJvclJlZj4gbV9wbGF0Zm9ybUVycm9yOwot
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG11dGFibGUgUmV0YWluUHRyPE5TRXJyb3I+IG1fcGxh
dGZvcm1OU0Vycm9yOwotI2VuZGlmCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IG1fY2VydGlmaWNhdGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4
IDVjMTQyMDdkNDFhYTM2Zjc5MGJlZWM3YzMzZjQ3YmYyYTdjN2QyNTEuLjVkZjFkMDBkNjNlZGU5
Y2MyYTI0MmYxZDJhNDI3NTQ3NzcyY2Q3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtNTMs
MTYgKzUzLDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgiCi0jaW5j
bHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2lmIFVTRShDRk5FVFdPUkspCi0jaW5j
bHVkZSAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ29u
bmVjdGlvblByaXYuaD4KLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0UHJpdi5oPgot
I2VuZGlmCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0
ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8cHJvY2Vzcy5o
PgpAQCAtMjE5LDE0ICsyMDksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENv
bm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbAogICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ0ZVUkxDb25uZWN0
aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcywgc3RyZWFtUHJvcGVydGllcyk7CiAgICAgQ0ZSZWxl
YXNlKHN0cmVhbVByb3BlcnRpZXMpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYgKGQt
Pm1fdXNlc0FzeW5jQ2FsbGJhY2tzKQotICAgICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9
IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlKHRoaXMpKTsKLSAgICBlbHNlCi0gICAgICAgIGQtPm1fY29ubmVjdGlvbkRl
bGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZSh0aGlzKSk7Ci0jZWxzZQogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRl
ID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZSh0aGlzKSk7Ci0jZW5kaWYKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+c2V0
dXBSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2
IGNsaWVudCA9IGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlLT5tYWtlQ29ubmVjdGlvbkNsaWVudCgp
OwpAQCAtMzY4LDEyICszNTEsOSBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNz
d29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaAogCiAgICAgaWYg
KCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFzcy5pc051bGwoKSkgewogICAgICAgICBS
ZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKENGVVJM
Q3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5tX3VzZXIuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGtDRlVS
TENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAg
ICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gQ3JlZGVudGlhbChjZkNyZWRlbnRpYWwuZ2V0KCkp
OwotI2Vsc2UKKwogICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBjb3JlKGNmQ3JlZGVu
dGlhbC5nZXQoKSk7Ci0jZW5kaWYKLSAgICAgICAgCisKICAgICAgICAgVVJMIHVybFRvU3RvcmU7
CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUo
KSA9PSA0MDEpCiAgICAgICAgICAgICB1cmxUb1N0b3JlID0gY2hhbGxlbmdlLmZhaWx1cmVSZXNw
b25zZSgpLnVybCgpOwpAQCAtNDAyLDEyICszODIsOCBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0
cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25D
aAogICAgICAgICAgICAgICAgICAgICAvLyBTdG9yZSB0aGUgY3JlZGVudGlhbCBiYWNrLCBwb3Nz
aWJseSBhZGRpbmcgaXQgYXMgYSBkZWZhdWx0IGZvciB0aGlzIGRpcmVjdG9yeS4KICAgICAgICAg
ICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9y
YWdlKCkuc2V0KGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgY2hhbGxl
bmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpKTsKICAgICAgICAgICAgICAgICB9Ci0jaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlh
bChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIGNoYWxs
ZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZWxzZQogICAgICAgICAgICAgICAgIFJl
dGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRl
Q0YoY3JlZGVudGlhbCkpOwogICAgICAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRl
bnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5n
ZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZW5kaWYKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDU3LDIwICs0MzMsMTIgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UKICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vz
c2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KHdlYkNyZWRlbnRpYWwsIGNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CiAKICAgICAgICAgaWYgKGQtPm1fY29ubmVj
dGlvbikgewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9u
VXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIHdlYkNyZWRlbnRpYWwuY2ZDcmVk
ZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZWxzZQogICAg
ICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRv
cHRDRihjcmVhdGVDRih3ZWJDcmVkZW50aWFsKSk7CiAgICAgICAgICAgICBDRlVSTENvbm5lY3Rp
b25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgp
LCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2VuZGlmCiAgICAgICAgIH0K
ICAgICB9IGVsc2UgaWYgKGQtPm1fY29ubmVjdGlvbikgewotI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQo
KSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5n
ZVJlZigpKTsKLSNlbHNlCiAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNm
Q3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOwogICAgICAgICBDRlVS
TENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50
aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2VuZGlmCiAg
ICAgfQogCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwpAQCAtNjExLDMwICs1NzksNiBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMp
CiAgICAgICAgIENGVVJMQ29ubmVjdGlvblJlc3VtZShkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOwog
fQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIFJlc291cmNlSGFuZGxlOjpzY2hlZHVsZShT
Y2hlZHVsZVBhaXImIHBhaXIpCi17Ci0gICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBwYWlyLnJ1
bkxvb3AoKTsKLSAgICBpZiAoIXJ1bkxvb3ApCi0gICAgICAgIHJldHVybjsKLQotICAgIENGVVJM
Q29ubmVjdGlvblNjaGVkdWxlV2l0aFJ1bkxvb3AoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBydW5M
b29wLCBwYWlyLm1vZGUoKSk7Ci0gICAgaWYgKGQtPm1fc3RhcnRXaGVuU2NoZWR1bGVkKSB7Ci0g
ICAgICAgIENGVVJMQ29ubmVjdGlvblN0YXJ0KGQtPm1fY29ubmVjdGlvbi5nZXQoKSk7Ci0gICAg
ICAgIGQtPm1fc3RhcnRXaGVuU2NoZWR1bGVkID0gZmFsc2U7Ci0gICAgfQotfQotCi12b2lkIFJl
c291cmNlSGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKLXsKLSAgICBDRlJ1
bkxvb3BSZWYgcnVuTG9vcCA9IHBhaXIucnVuTG9vcCgpOwotICAgIGlmICghcnVuTG9vcCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgQ0ZVUkxDb25uZWN0aW9uVW5zY2hlZHVsZUZyb21SdW5Mb29w
KGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgcnVuTG9vcCwgcGFpci5tb2RlKCkpOwotfQotI2VuZGlm
Ci0KIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgUmVzb3VyY2VIYW5kbGU6OmN1cnJlbnRSZXF1ZXN0
KCkgY29uc3QKIHsKICAgICByZXR1cm4gZC0+bV9jdXJyZW50UmVxdWVzdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCmluZGV4IDRmN2E3OTI5
ZjFiMTFkODg0ZDhkMDQ3NjgyMTEyYWRiNjZlOWJiZDUuLmExZTEzODA5ZTQ3OGJlZjRmZWFlNzM4
MGQyYWNkY2VhNGRhMTEyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlLmNwcApAQCAtMzIsMTAgKzMyLDYgQEAKICNpbmNsdWRlICJOZXR3b3Jr
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAKLSNpZiBQTEFURk9S
TShDT0NPQSkKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jZW5kaWYKLQog
I2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0
U3lzdGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDhhNWVmMDkwNGQzYTYyNWQz
NTYwN2M2YTY3N2VkNmVlZmQ5YTZjNzkuLjFkMGQ3ZDAyNTIwMzM3Y2QyNzBlZGJkZjQxNzgyNmI1
MThmNjg4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlcXVlc3QuaApAQCAtNjMsMTIgKzYzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB9CiAgICAgICAgIAogI2lmIFVTRShDRk5FVFdPUkspCi0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVl
c3QgKik7Ci0gICAgICAgIHZvaWQgdXBkYXRlTlNVUkxSZXF1ZXN0KCk7Ci0gICAgICAgIHZvaWQg
Y2xlYXJPclVwZGF0ZU5TVVJMUmVxdWVzdCgpOwotI2VuZGlmCi0KICAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0KENGVVJMUmVxdWVzdFJlZiBjZlJlcXVlc3QpCiAgICAgICAgICAgICA6IFJlc291cmNl
UmVxdWVzdEJhc2UoKQogICAgICAgICAgICAgLCBtX2NmUmVxdWVzdChjZlJlcXVlc3QpCkBAIC04
OCwxMSArODIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYXBwbHlXZWJB
cmNoaXZlSGFja0Zvck1haWwoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotI2lmIFVT
RShDRk5FVFdPUkspCi0gICAgICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1faHR0cEJvZHkgfHwgbV9jZlJlcXVlc3Q7IH0KLSNlbHNlCiAgICAg
ICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
aHR0cEJvZHkgfHwgbV9uc1JlcXVlc3Q7IH0KLSNlbmRpZgogICAgICAgICBXRUJDT1JFX0VYUE9S
VCBOU1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSkgY29uc3Q7
CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENGU3RyaW5nUmVmIGlzVXNlckluaXRp
YXRlZEtleSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCBhY2MxZDQ1Njk3NWNjMTJmMzlhMzM4ZGJiMjQzOTQx
ZTU3YzI2ZDFhLi5iNzlmN2M0MGVkMGM5NGQxY2JlYzllNTY4NjNhYzllNTY0MWI5ODhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9u
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVz
cG9uc2UuaApAQCAtNTMsOSArNTMsNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2lzTnVs
bCA9ICFjZlJlc3BvbnNlOwogICAgIH0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBXRUJDT1JF
X0VYUE9SVCBSZXNvdXJjZVJlc3BvbnNlKE5TVVJMUmVzcG9uc2UgKik7Ci0jZW5kaWYKICNlbHNl
CiAgICAgUmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNlKQogICAgICAg
ICA6IG1faW5pdExldmVsKFVuaW5pdGlhbGl6ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKaW5k
ZXggNGJhZTc0ZTgzODE2YzE5NGVkYzE1NGQ4NGMyZGU4ZjZkZDE2ZmM5NS4uMWFhODM3ZmM3MmI3
ODIzZWE3YmRlOGNiOTA2Mzk4ZmVhNzVkNWFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcApA
QCAtMzMsMTAgKzMzLDYgQEAKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXNwb25zZVByaXYu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNp
bmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgQ0ZTdHJpbmdSZWYgY29uc3QgY29tbW9uSGVhZGVyRmllbGRzW10g
PSB7CkBAIC00NiwxMyArNDIsOSBAQCBzdGF0aWMgQ0ZTdHJpbmdSZWYgY29uc3QgY29tbW9uSGVh
ZGVyRmllbGRzW10gPSB7CiBDRlVSTFJlc3BvbnNlUmVmIFJlc291cmNlUmVzcG9uc2U6OmNmVVJM
UmVzcG9uc2UoKSBjb25zdAogewogICAgIGlmICghbV9jZlJlc3BvbnNlICYmICFtX2lzTnVsbCkg
ewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBuc1VSTFJlc3BvbnNlKCk7Ci0jZWxzZQog
ICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IG1fdXJsLmNyZWF0ZUNGVVJMKCk7CiAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGNyZWF0ZXMgYSB2ZXJ5IGluY29tcGxldGUgQ0ZVUkxSZXNw
b25zZSwgd2hpY2ggZG9lcyBub3QgZXZlbiBoYXZlIGEgc3RhdHVzIGNvZGUuCiAgICAgICAgIG1f
Y2ZSZXNwb25zZSA9IGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNyZWF0ZSgwLCB1cmwuZ2V0KCksIG1f
bWltZVR5cGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgbV9leHBlY3RlZENvbnRl
bnRMZW5ndGgsIG1fdGV4dEVuY29kaW5nTmFtZS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICBy
ZXR1cm4gbV9jZlJlc3BvbnNlLmdldCgpOwpAQCAtMTE1LDkgKzEwNyw2IEBAIHZvaWQgUmVzb3Vy
Y2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwgaW5pdExldmVsKQogCiBDZXJ0
aWZpY2F0ZUluZm8gUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKSBj
b25zdAogewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHJldHVybiBDZXJ0aWZpY2F0ZUluZm8o
YWRvcHRDRih3a0NvcHlOU1VSTFJlc3BvbnNlQ2VydGlmaWNhdGVDaGFpbihuc1VSTFJlc3BvbnNl
KCkpKSk7Ci0jZW5kaWYKICAgICByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENv
Y29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxD
b2NvYS5oCmluZGV4IGYyY2Q5NjMyYzIwZTY1NTcwZGFjZTliOWMwOTExMDc3NmQ3NmUzMTcuLjk0
MzRkM2E3YTFhNTBiNTVkNThkOTBjNmVkYzUyZTI3ZDYwOTU5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaApA
QCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlIDxTZWN1cml0eS9TZWNCYXNlLmg+CiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgY29uc3Qg
c3RydWN0IF9DRlVSTENyZWRlbnRpYWwqIENGVVJMQ3JlZGVudGlhbFJlZjsKLSNlbmRpZgotCiBP
QkpDX0NMQVNTIE5TVVJMQ3JlZGVudGlhbDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIs
MTggKzQ4LDEyIEBAIHB1YmxpYzoKIAogICAgIENyZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYs
IENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGV4cGxp
Y2l0IENyZWRlbnRpYWwoQ0ZVUkxDcmVkZW50aWFsUmVmKTsKLSNlbmRpZgogICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IENyZWRlbnRpYWwoTlNVUkxDcmVkZW50aWFsICopOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKICAgICBib29sIGVuY29kaW5nUmVx
dWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX25zQ3JlZGVudGlhbCAmJiBlbmNv
ZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKG1fbnNDcmVkZW50aWFsLmdldCgpKTsgfQogCi0jaWYg
VVNFKENGTkVUV09SSykKLSAgICBDRlVSTENyZWRlbnRpYWxSZWYgY2ZDcmVkZW50aWFsKCkgY29u
c3Q7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTENyZWRlbnRpYWwgKm5zQ3JlZGVu
dGlhbCgpIGNvbnN0OwogCiAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IENy
ZWRlbnRpYWwmLCBjb25zdCBDcmVkZW50aWFsJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCmluZGV4IGQ2OTYx
YjY2NTJhMGZhZDJiMWQ4NmUxODg1YWY1MjUxMjg5YTIzNzEuLjdlMDVjNDYzYTU1YWUzY2IyODk2
NTZiYTEzMWQ5ZTIyNDBjMDA2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCkBAIC0yNiwxMyArMjYsNiBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJDcmVkZW50aWFsQ29jb2EuaCIKIAotI2lm
IFVTRShDRk5FVFdPUkspCi1AaW50ZXJmYWNlIE5TVVJMQ3JlZGVudGlhbCAoV2ViRGV0YWlscykK
LS0gKGlkKV9pbml0V2l0aENGVVJMQ3JlZGVudGlhbDooQ0ZVUkxDcmVkZW50aWFsUmVmKWNyZWRl
bnRpYWw7Ci0tIChDRlVSTENyZWRlbnRpYWxSZWYpIF9DRlVSTENyZWRlbnRpYWw7Ci1AZW5kCi0j
ZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgTlNVUkxDcmVkZW50aWFsUGVy
c2lzdGVuY2UgdG9OU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZShDcmVkZW50aWFsUGVyc2lzdGVu
Y2UgcGVyc2lzdGVuY2UpCkBAIC04NCwyNiArNzcsMTIgQEAgQ3JlZGVudGlhbDo6Q3JlZGVudGlh
bChjb25zdCBDcmVkZW50aWFsJiBvcmlnaW5hbCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNp
c3QKICAgICB9CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ3JlZGVudGlhbDo6Q3JlZGVudGlh
bChDRlVSTENyZWRlbnRpYWxSZWYgY3JlZGVudGlhbCkKLSAgICA6IENyZWRlbnRpYWwoYWRvcHRO
UyhbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10gX2luaXRXaXRoQ0ZVUkxDcmVkZW50aWFsOmNyZWRl
bnRpYWxdKS5nZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBDcmVkZW50aWFsOjpDcmVkZW50aWFsKE5T
VVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkKICAgICA6IENyZWRlbnRpYWxCYXNlKGNyZWRlbnRp
YWwudXNlciwgY3JlZGVudGlhbC5wYXNzd29yZCwgdG9DcmVkZW50aWFsUGVyc2lzdGVuY2UoY3Jl
ZGVudGlhbC5wZXJzaXN0ZW5jZSkpCiAgICAgLCBtX25zQ3JlZGVudGlhbChjcmVkZW50aWFsKQog
ewogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJMQ3JlZGVudGlhbFJlZiBDcmVkZW50aWFs
OjpjZkNyZWRlbnRpYWwoKSBjb25zdAotewotICAgIHJldHVybiBbbnNDcmVkZW50aWFsKCkgX0NG
VVJMQ3JlZGVudGlhbF07Ci19Ci0jZW5kaWYKLQogTlNVUkxDcmVkZW50aWFsICpDcmVkZW50aWFs
Ojpuc0NyZWRlbnRpYWwoKSBjb25zdAogewogICAgIGlmIChtX25zQ3JlZGVudGlhbCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNw
YWNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVj
dGlvblNwYWNlQ29jb2EuaAppbmRleCA3NDg4MmQ3YTg4Yjc4MzFiNDE0ZjkwZGY3MWQxNWQ4OTI0
NGUyMTUyLi5iODZhYjAzZDRmZjMyMzUzNDAzZmYwN2ZhYTgxODFlNTI5ODBmN2NlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFj
ZUNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90
ZWN0aW9uU3BhY2VDb2NvYS5oCkBAIC0yOSwxMCArMjksNiBAQAogI2luY2x1ZGUgIlByb3RlY3Rp
b25TcGFjZUJhc2UuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUHJvdGVjdGlvblNwYWNlKiBDRlVSTFByb3Rl
Y3Rpb25TcGFjZVJlZjsKLSNlbmRpZgotCiBPQkpDX0NMQVNTIE5TVVJMUHJvdGVjdGlvblNwYWNl
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw5ICs0Myw2IEBAIHB1YmxpYzoKIAogICAg
IFByb3RlY3Rpb25TcGFjZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUgZGVsZXRlZFZh
bHVlKSA6IFByb3RlY3Rpb25TcGFjZUJhc2UoZGVsZXRlZFZhbHVlKSB7IH0KIAotI2lmIFVTRShD
Rk5FVFdPUkspCi0gICAgZXhwbGljaXQgUHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNw
YWNlUmVmKTsKLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFByb3RlY3Rpb25T
cGFjZShOU1VSTFByb3RlY3Rpb25TcGFjZSAqKTsKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3Jt
Q29tcGFyZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGEsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYg
Yik7CkBAIC01OCw5ICs1MSw2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
cmVjZWl2ZXNDcmVkZW50aWFsU2VjdXJlbHkoKSBjb25zdDsKIAotI2lmIFVTRShDRk5FVFdPUksp
Ci0gICAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgY2ZTcGFjZSgpIGNvbnN0OwotI2VuZGlmCiAg
ICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxQcm90ZWN0aW9uU3BhY2UgKm5zU3BhY2UoKSBjb25zdDsK
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tCmluZGV4IGFmNGM0ZTA1NzY4YzA4
ZjYzYjZkYTBkYTk5OTM0Nzg1YTEzZmI4YTMuLmRiMWZiNTFiZjk5MDI3YmMyZjM1MzBhNWQ1MThi
MGZmN2I3ODYxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5tbQpAQCAtMjYsMjIgKzI2LDgg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUHJvdGVjdGlvblNwYWNlQ29jb2EuaCIK
IAotI2lmIFVTRShDRk5FVFdPUkspCi1AaW50ZXJmYWNlIE5TVVJMUHJvdGVjdGlvblNwYWNlIChX
ZWJEZXRhaWxzKQotLSAoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpIF9DRlVSTFByb3RlY3Rpb25T
cGFjZTsKLS0gKGlkKV9pbml0V2l0aENGVVJMUHJvdGVjdGlvblNwYWNlOihDRlVSTFByb3RlY3Rp
b25TcGFjZVJlZiljZlByb3RTcGFjZTsKLUBlbmQKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotUHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9uU3Bh
Y2UoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgc3BhY2UpCi0gICAgOiBQcm90ZWN0aW9uU3BhY2Uo
YWRvcHROUyhbW05TVVJMUHJvdGVjdGlvblNwYWNlIGFsbG9jXSBfaW5pdFdpdGhDRlVSTFByb3Rl
Y3Rpb25TcGFjZTpzcGFjZV0pLmdldCgpKQotewotfQotI2VuZGlmCi0KIHN0YXRpYyBQcm90ZWN0
aW9uU3BhY2VTZXJ2ZXJUeXBlIHR5cGUoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKnNwYWNlKQogewog
ICAgIGlmIChbc3BhY2UgaXNQcm94eV0pIHsKQEAgLTEwNSwxMyArOTEsNiBAQCBQcm90ZWN0aW9u
U3BhY2U6OlByb3RlY3Rpb25TcGFjZShOU1VSTFByb3RlY3Rpb25TcGFjZSAqc3BhY2UpCiAgICAg
bV9uc1NwYWNlID0gc3BhY2U7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ0ZVUkxQcm90ZWN0
aW9uU3BhY2VSZWYgUHJvdGVjdGlvblNwYWNlOjpjZlNwYWNlKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gW25zU3BhY2UoKSBfQ0ZVUkxQcm90ZWN0aW9uU3BhY2VdOwotfQotI2VuZGlmCi0KIE5TVVJM
UHJvdGVjdGlvblNwYWNlICpQcm90ZWN0aW9uU3BhY2U6Om5zU3BhY2UoKSBjb25zdAogewogICAg
IGlmIChtX25zU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRleCAzYjFiMGEyZjg3
NDc0N2IzOGEyYzgzODBmYjY1NTk4NmJkZWI5ZWNjLi45ZjVkMDJhYjY1YmM4Y2E0MzJjODI0Mjg0
ZThiZGMwMWFiN2EzOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTUzLDE1ICs1
Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE5TVVJMUmVxdWVzdCAqUmVzb3VyY2VSZXF1ZXN0
Ojpuc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9keVBvbGljeSkgY29uc3QKIHsK
ICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoYm9keVBvbGljeSk7Ci0jaWYgVVNFKENGTkVUV09S
SykKLSAgICBpZiAoIW1fbnNSZXF1ZXN0KQotICAgICAgICBjb25zdF9jYXN0PFJlc291cmNlUmVx
dWVzdCo+KHRoaXMpLT51cGRhdGVOU1VSTFJlcXVlc3QoKTsKLSNlbmRpZgogICAgIHJldHVybiBb
W21fbnNSZXF1ZXN0LmdldCgpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogfQogCi0jaWYgIVVTRShD
Rk5FVFdPUkspCi0KIENGVVJMUmVxdWVzdFJlZiBSZXNvdXJjZVJlcXVlc3Q6OmNmVVJMUmVxdWVz
dChIVFRQQm9keVVwZGF0ZVBvbGljeSBib2R5UG9saWN5KSBjb25zdAogewogICAgIHJldHVybiBb
bnNVUkxSZXF1ZXN0KGJvZHlQb2xpY3kpIF9DRlVSTFJlcXVlc3RdOwpAQCAtMjIyLDggKzIxNiw2
IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3JhZ2VT
ZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKQogICAgIG1fbnNSZXF1ZXN0ID0gYWRvcHROUyh3a0Nv
cHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKHN0b3JhZ2VTZXNzaW9uLCBtX25zUmVxdWVzdC5n
ZXQoKSkpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCmluZGV4IDBkN2U4MjVlZjJiMTE4ODZi
MzhkYmIzY2I5M2UwMDBiOGJkMmVlZTUuLmQxM2ZjZmNlY2U1NjMzNTE1MDkzZDIxMDIyOTQ3OGQy
ZDkzOWQ2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9z
L1F1aWNrTG9vay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1
aWNrTG9vay5oCkBAIC00NCwxMSArNDQsNiBAQCBPQkpDX0NMQVNTIE5TVVJMUmVxdWVzdDsKIE9C
SkNfQ0xBU1MgTlNVUkxSZXNwb25zZTsKIE9CSkNfQ0xBU1MgUUxQcmV2aWV3Q29udmVydGVyOwog
Ci0jaWYgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IF9DRlVSTFJlc3BvbnNlKiBDRlVS
TFJlc3BvbnNlUmVmOwotdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQ29ubmVjdGlvbiogQ0ZVUkxDb25u
ZWN0aW9uUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUXVpY2tM
b29rSGFuZGxlQ2xpZW50OwpAQCAtODIsOSArNzcsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGJvb2wgc2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7
CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJl
c291cmNlSGFuZGxlKiwgTlNVUkxDb25uZWN0aW9uICosIE5TVVJMUmVzcG9uc2UgKiwgaWQgZGVs
ZWdhdGUpOwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxR
dWlja0xvb2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJjZUhhbmRsZSosIFN5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSosIENGVVJMUmVzcG9uc2VSZWYpOwotI2Vu
ZGlmCiAgICAgLy8gRklYTUU6IFVzZSBvZiBSZXNvdXJjZUxvYWRlciBoZXJlIGlzIGEgcGxhdGZv
cm0gdmlvbGF0aW9uLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
UXVpY2tMb29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CiAKQEAgLTk2LDkgKzg4LDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkRmFpbCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxSZXNwb25zZSAqbnNS
ZXNwb25zZSgpOwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxSZXNwb25zZVJlZiBjZlJl
c3BvbnNlKCk7Ci0jZW5kaWYKIAogICAgIHZvaWQgc2V0Q2xpZW50KFBhc3NSZWZQdHI8UXVpY2tM
b29rSGFuZGxlQ2xpZW50PiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCmluZGV4IDE3
ZWQ4NjQ2YTU5NDRhMGYwMWVkNTY4NzA5N2Q5N2NhYzcyMDg0ZjQuLmUyZGI0NDA4ZjY1ODE5ODFi
OWY2NmNiYWE2OWIwNGI1Yjc4MjM2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIlJl
c291cmNlTG9hZGVyLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIK
ICNpbXBvcnQgIlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZS5oIgorI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIgogI2ltcG9y
dCAiV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNDYsMTUgKzQ3LDYgQEAK
ICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
Ci0jaWYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQgPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb24u
aD4KLQotQGludGVyZmFjZSBOU1VSTFJlc3BvbnNlIChRdWlja0xvb2tEZXRhaWxzKQotKyhOU1VS
TFJlc3BvbnNlICopX3Jlc3BvbnNlV2l0aENGVVJMUmVzcG9uc2U6KENGVVJMUmVzcG9uc2VSZWYp
cmVzcG9uc2U7Ci0tKENGVVJMUmVzcG9uc2VSZWYpX0NGVVJMUmVzcG9uc2U7Ci1AZW5kCi0jZW5k
aWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIE5TU2V0ICpXZWJDb3JlOjpRTFByZXZp
ZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKQpAQCAtMTkyLDgzICsxODQsNyBAQCBjb25zdCBj
aGFyKiBXZWJDb3JlOjpRTFByZXZpZXdQcm90b2NvbCgpCiAgICAgcmV0dXJuIHByZXZpZXdQcm90
b2NvbC5nZXQoKS5kYXRhKCk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotLy8gVGhlIHdheSBR
dWlja0xvb2sgd29ya3MgaXMgd2UgcGFzcyBpdCBhbiBOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZSBj
YWxsYmFjayBvYmplY3QgYXQgY3JlYXRpb24KLS8vIHRpbWUuIFRoZW4gd2UgcGFzcyBpdCBhbGwg
dGhlIGRhdGEgYXMgd2UgcmVjZWl2ZSBpdC4gT25jZSB3ZSd2ZSBkb3dubG9hZGVkIHRoZSBmdWxs
IFVSTCwKLS8vIFF1aWNrTG9vayB0dXJucyBhcm91bmQgYW5kIHNlbmQgdXMsIHRocm91Z2ggdGhp
cyBkZWxlZ2F0ZSwgdGhlIEhUTUwgdmVyc2lvbiBvZiB0aGUgZmlsZSB3aGljaCB3ZQotLy8gcGFz
cyBvbiB0byBXZWJDb3JlLiBUaGUgZmxhZyBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVy
dGVyIGluIFF1aWNrTG9va0hhbmRsZSBkZWNpZGVzCi0vLyB3aGV0aGVyIHRvIHBhc3MgdGhlIGRh
dGEgdG8gUXVpY2tMb29rIG9yIFdlYkNvcmUuCi0vLwotLy8gVGhpcyB3b3JrcyBmaW5lIHdoZW4g
dXNpbmcgTlMgQVBJcywgYnV0IHdoZW4gdXNpbmcgQ0ZOZXR3b3JrLCB3ZSBkb24ndCBoYXZlIGEg
TlNVUkxDb25uZWN0aW9uRGVsZWdhdGUuCi0vLyBTbyB3ZSBjcmVhdGUgV2ViUXVpY2tMb29rSGFu
ZGxlQXNEZWxlZ2F0ZSBhcyBhbiBpbnRlcm1lZGlhdGUgZGVsZWdhdGUgb2JqZWN0IGFuZCBwYXNz
IGl0IHRvCi0vLyBRTFByZXZpZXdDb252ZXJ0ZXIuIFRoZSBwcm94eSBkZWxlZ2F0ZSB0aGVuIGZv
cndhcmRzIHRoZSBtZXNzYWdlcyBvbiB0byB0aGUgQ0ZOZXR3b3JrIGNvZGUuCi1AaW50ZXJmYWNl
IFdlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25uZWN0aW9u
RGVsZWdhdGU+IHsKLSAgICBSZWZQdHI8U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZTsKLX0KLQotLSAoaWQpaW5pdFdp
dGhDb25uZWN0aW9uRGVsZWdhdGU6KFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZSopY29ubmVjdGlvbkRlbGVnYXRlOwotLSAodm9pZCljbGVhckhhbmRsZTsK
LUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUKLS0g
KGlkKWluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRlOihTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqKWNvbm5lY3Rpb25EZWxlZ2F0ZQotewotICAgIHNlbGYg
PSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotICAg
IG1fY29ubmVjdGlvbkRlbGVnYXRlID0gY29ubmVjdGlvbkRlbGVnYXRlOwotICAgIHJldHVybiBz
ZWxmOwotfQotCi0tICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rp
b24gZGlkUmVjZWl2ZURhdGFBcnJheTooTlNBcnJheSAqKWRhdGFBcnJheQotewotICAgIFVOVVNF
RF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBpZiAoIW1fY29ubmVjdGlvbkRlbGVnYXRlKQotICAg
ICAgICByZXR1cm47Ci0gICAgTE9HKE5ldHdvcmssICJXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVn
YXRlOjpkaWRSZWNlaXZlRGF0YUFycmF5KCkiKTsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+
ZGlkUmVjZWl2ZURhdGFBcnJheShyZWludGVycHJldF9jYXN0PENGQXJyYXlSZWY+KGRhdGFBcnJh
eSkpOwotfQotCi0tICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rp
b24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEgbGVuZ3RoUmVjZWl2ZWQ6KGxvbmcgbG9u
ZylsZW5ndGhSZWNlaXZlZAotewotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBp
ZiAoIW1fY29ubmVjdGlvbkRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgTE9HKE5ldHdv
cmssICJXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YSgpIC0gZGF0
YSBsZW5ndGggPSAlbGQiLCAobG9uZylbZGF0YSBsZW5ndGhdKTsKLQotICAgIC8vIFF1aWNrTG9v
ayBjb2RlIHNlbmRzIHVzIGEgbmlsIGRhdGEgYXQgdGltZXMuIFRoZSBjaGVjayBiZWxvdyBpcyB0
aGUgc2FtZSBhcyB0aGUgb25lIGluCi0gICAgLy8gUmVzb3VyY2VIYW5kbGVNYWMuY3BwIGFkZGVk
IGZvciBhIGRpZmZlcmVudCBidWcuCi0gICAgaWYgKCFbZGF0YSBsZW5ndGhdKQotICAgICAgICBy
ZXR1cm47Ci0gICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZFJlY2VpdmVEYXRhKHJlaW50ZXJw
cmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhKSwgc3RhdGljX2Nhc3Q8aW50PihsZW5ndGhSZWNlaXZl
ZCkpOwotfQotCi0tICh2b2lkKWNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOihOU1VSTENvbm5l
Y3Rpb24gKiljb25uZWN0aW9uCi17Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAg
IGlmICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBMT0coTmV0
d29yaywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6OmRpZEZpbmlzaExvYWRpbmcoKSIp
OwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRGaW5pc2hMb2FkaW5nKCk7Ci19Ci0KLS0g
KHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRGYWlsV2l0
aEVycm9yOihOU0Vycm9yICopZXJyb3IKLXsKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7
Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExP
RyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkRmFpbCgpIik7Ci0g
ICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZEZhaWwocmVpbnRlcnByZXRfY2FzdDxDRkVycm9y
UmVmPihlcnJvcikpOwotfQotCi0tICh2b2lkKWNsZWFySGFuZGxlCi17Ci0gICAgbV9jb25uZWN0
aW9uRGVsZWdhdGUgPSBudWxscHRyOwotfQotQGVuZAotI2VuZGlmCi0KLUBpbnRlcmZhY2UgV2Vi
UmVzb3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rp
b25EZWxlZ2F0ZT4geworQGludGVyZmFjZSBXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVn
YXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlLCBXZWJDb3JlUmVzb3VyY2VM
b2FkZXJEZWxlZ2F0ZT4gewogICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gX3Jlc291cmNlTG9h
ZGVyOwogICAgIEJPT0wgX2hhc1NlbnREaWRSZWNlaXZlUmVzcG9uc2U7CiAgICAgQk9PTCBfaGFz
RmFpbGVkOwpAQCAtMzU5LDcgKzI3NSw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25u
ZWN0aW9uICopY29ubmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyCiAgICAg
X3Jlc291cmNlTG9hZGVyLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3IpKTsKIH0KIAotLSAo
dm9pZCljbGVhckhhbmRsZQorLSAodm9pZClkZXRhY2hIYW5kbGUKIHsKICAgICBfcmVzb3VyY2VM
b2FkZXIgPSBudWxscHRyOwogICAgIF9xdWlja0xvb2tIYW5kbGUgPSBudWxscHRyOwpAQCAtNDE1
LDI2ICszMzEsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBRdWlja0xvb2tI
YW5kbGU6OmNyZWF0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLAogICAgIHJldHVybiBXVEY6Om1v
dmUocXVpY2tMb29rSGFuZGxlKTsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi1zdGQ6OnVuaXF1
ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGUqIGNvbm5lY3Rpb25EZWxlZ2F0ZSwgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQot
ewotICAgIEFTU0VSVF9BUkcoaGFuZGxlLCBoYW5kbGUpOwotICAgIGlmIChoYW5kbGUtPmZpcnN0
UmVxdWVzdCgpLnJlcXVlc3RlcigpICE9IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWlu
IHx8ICFbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6
KE5TU3RyaW5nICopQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKGNmUmVzcG9uc2UpXSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBOU1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNlID0gW05T
VVJMUmVzcG9uc2UgX3Jlc3BvbnNlV2l0aENGVVJMUmVzcG9uc2U6Y2ZSZXNwb25zZV07Ci0gICAg
V2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZSAqZGVsZWdhdGUgPSBbW1tXZWJRdWlja0xvb2tI
YW5kbGVBc0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aENvbm5lY3Rpb25EZWxlZ2F0ZTpjb25uZWN0
aW9uRGVsZWdhdGVdIGF1dG9yZWxlYXNlXTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29r
SGFuZGxlPiBxdWlja0xvb2tIYW5kbGUobmV3IFF1aWNrTG9va0hhbmRsZShbaGFuZGxlLT5maXJz
dFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSkgVVJMXSwgbmlsLCBu
c1Jlc3BvbnNlLCBkZWxlZ2F0ZSkpOwotICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZENyZWF0ZVF1
aWNrTG9va0hhbmRsZSgqcXVpY2tMb29rSGFuZGxlKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKHF1
aWNrTG9va0hhbmRsZSk7Ci19Ci0KLUNGVVJMUmVzcG9uc2VSZWYgUXVpY2tMb29rSGFuZGxlOjpj
ZlJlc3BvbnNlKCkKLXsKLSAgICByZXR1cm4gW21fbnNSZXNwb25zZSBfQ0ZVUkxSZXNwb25zZV07
Ci19Ci0jZW5kaWYKLQogYm9vbCBRdWlja0xvb2tIYW5kbGU6OnNob3VsZENyZWF0ZUZvck1JTUVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgcmV0dXJuIFtRTFByZXZpZXdHZXRT
dXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSBjb250YWluc09iamVjdDptaW1lVHlwZV07CkBAIC01MDAs
NyArMzk2LDcgQEAgUXVpY2tMb29rSGFuZGxlOjp+UXVpY2tMb29rSGFuZGxlKCkKICAgICBMT0co
TmV0d29yaywgIlF1aWNrTG9va0hhbmRsZTo6flF1aWNrTG9va0hhbmRsZSgpIik7CiAgICAgbV9j
b252ZXJ0ZXIgPSBudWxscHRyOwogCi0gICAgW21fZGVsZWdhdGUgY2xlYXJIYW5kbGVdOworICAg
IFttX2RlbGVnYXRlIGRldGFjaEhhbmRsZV07CiB9CiAKIFN0cmluZyBRdWlja0xvb2tIYW5kbGU6
OnByZXZpZXdGaWxlTmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCmluZGV4IDY2N2I5YjE4NjY3
NDQwZGViZmVmZGExODA1Yjg0Y2I1NDc4NGM1NzkuLmI3MjlmMGYzNjIxOWRjNDFmM2FkZWIzMTk0
MjFmZjk2NTdmNDgxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCkBAIC0xLDM5ICsxIEBACi0vLwotLy8g
IFJlc291cmNlSGFuZGxlSVBob25lLm1tCi0vLyAgV2ViQ29yZQotLy8KLS8vICBDb3B5cmlnaHQg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotCi0jaW1wb3J0ICJjb25m
aWcuaCIKLSNpbXBvcnQgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKLQotI2lmIFVTRShDRk5F
VFdPUkspCi0KLSNpbXBvcnQgPENGTmV0d29yay9DRlNvY2tldFN0cmVhbVByaXYuaD4KLSNpbXBv
cnQgPEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0UHJpdmF0ZS5oPgotCi11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DRk11dGFibGVEaWN0aW9uYXJ5UmVm
IFJlc291cmNlSGFuZGxlOjpjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgTlNTdHJpbmcgKmhvc3QgPSByZXF1
ZXN0LnVybCgpLmhvc3QoKTsKLSAgICBOU0FycmF5ICpjZXJ0QXJyYXkgPSBbTlNVUkxSZXF1ZXN0
IGFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Q6aG9zdF07Ci0gICAgQk9PTCBh
bGxvd3NBbnlDZXJ0aWZpY2F0ZSA9IFtOU1VSTFJlcXVlc3QgYWxsb3dzQW55SFRUUFNDZXJ0aWZp
Y2F0ZUZvckhvc3Q6aG9zdF07Ci0gICAgaWYgKCFjZXJ0QXJyYXkgJiYgIWFsbG93c0FueUNlcnRp
ZmljYXRlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYg
c3NsUHJvcHMgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFs
dWVDYWxsQmFja3MpOwotICAgIGlmIChjZXJ0QXJyYXkpCi0gICAgICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKHNzbFByb3BzLCBfa0NGU3RyZWFtU1NMVHJ1c3RlZExlYWZDZXJ0aWZpY2F0ZXMsIChD
RlR5cGVSZWYpIGNlcnRBcnJheSk7Ci0KLSAgICBpZiAoYWxsb3dzQW55Q2VydGlmaWNhdGUpCi0g
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHNzbFByb3BzLCBrQ0ZTdHJlYW1TU0xWYWxpZGF0
ZXNDZXJ0aWZpY2F0ZUNoYWluLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIHJldHVybiBzc2xQcm9w
czsKLX0KLQotfQotCi0jZW5kaWYKKy8vIFJlbW92ZSBtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VSZXF1ZXN0SU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VSZXF1ZXN0SU9TLm1tCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjdkYzZiZTYzNDVjYzU2OTZhMWVjNmViZDAwMzJm
MzIzNGRmYjAwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlUmVxdWVzdElPUy5t
bQorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUmVz
b3VyY2VSZXF1ZXN0LmgiCi0KLSNpZiBQTEFURk9STShJT1MpCi0KLUBpbnRlcmZhY2UgTlNVUkxS
ZXF1ZXN0IChXZWJOU1VSTFJlcXVlc3REZXRhaWxzKQotLSAoQ0ZVUkxSZXF1ZXN0UmVmKV9DRlVS
TFJlcXVlc3Q7Ci0tIChpZClfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6KENGVVJMUmVxdWVzdFJlZily
ZXF1ZXN0OwotQGVuZAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBVU0UoQ0ZORVRXT1JL
KQotCi1SZXNvdXJjZVJlcXVlc3Q6OlJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVlc3QgKm5zUmVx
dWVzdCkKLSAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoKQotICAgICwgbV9jZlJlcXVlc3QoW25z
UmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSkKLSAgICAsIG1fbnNSZXF1ZXN0KG5zUmVxdWVzdCkKLXsK
LX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZU5TVVJMUmVxdWVzdCgpCi17Ci0gICAg
aWYgKG1fY2ZSZXF1ZXN0KQotICAgICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMoW1tOU011dGFi
bGVVUkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6bV9jZlJlcXVlc3QuZ2V0
KCldKTsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmNsZWFyT3JVcGRhdGVOU1VSTFJlcXVl
c3QoKQotewotICAgIC8vIFRoZXJlIGlzIGNsaWVudCBjb2RlIHRoYXQgZXh0ZW5kcyBOU1VSTFJl
cXVlc3QgYW5kIGV4cGVjdHMgdG8gZ2V0IGJhY2ssIGluIHRoZSBkZWxlZ2F0ZQotICAgIC8vIGNh
bGxiYWNrcywgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgdGhhdCB0aGV5IHBhc3NlZCBpbnRv
IFdlYktpdC4gVG8ga2VlcCB0aGVuIHJ1bm5pbmcsIHdlCi0gICAgLy8gY3JlYXRlIGFuIG9iamVj
dCBvZiB0aGUgc2FtZSB0eXBlIGFuZCByZXR1cm4gdGhhdC4gU2VlIDxyZGFyOi8vOTg0MzU4Mj4u
Ci0gICAgLy8gQWxzbywgZGV2ZWxvcGVycyByZWFsbHkgcmVhbGx5IHdhbnQgYW4gTlNNdXRhYmxl
VVJMUmVxdWVzdCBzbyB0cnkgdG8gY3JlYXRlIGFuCi0gICAgLy8gTlNNdXRhYmxlVVJMUmVxdWVz
dCBpbnN0ZWFkIG9mIE5TVVJMUmVxdWVzdC4KLSAgICBzdGF0aWMgQ2xhc3MgbnNVUkxSZXF1ZXN0
Q2xhc3MgPSBbTlNVUkxSZXF1ZXN0IGNsYXNzXTsKLSAgICBzdGF0aWMgQ2xhc3MgbnNNdXRhYmxl
VVJMUmVxdWVzdENsYXNzID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgY2xhc3NdOwotICAgIENsYXNz
IHJlcXVlc3RDbGFzcyA9IFttX25zUmVxdWVzdC5nZXQoKSBjbGFzc107Ci0KLSAgICBpZiAoIW1f
Y2ZSZXF1ZXN0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAocmVxdWVzdENsYXNzICYmIHJl
cXVlc3RDbGFzcyAhPSBuc1VSTFJlcXVlc3RDbGFzcyAmJiByZXF1ZXN0Q2xhc3MgIT0gbnNNdXRh
YmxlVVJMUmVxdWVzdENsYXNzKQotICAgICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMoW1tyZXF1
ZXN0Q2xhc3MgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDptX2NmUmVxdWVzdC5nZXQoKV0p
OwotICAgIGVsc2UKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBudWxscHRyOwotfQotCi0jZW5kaWYg
Ly8gVVNFKENGTkVUV09SSykKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQppbmRleCBlMzhiMDM4N2RlMDQ2YzdjMDE1NzQz
ZDdiYjdlYTM2ZTQwOTM4MDIyLi5hODJhNTVjMzM4ODM3ZDcwZTJlMWE1YjAzMmM3MmJjOTMzNjk4
ZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRo
ZW50aWNhdGlvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9BdXRoZW50aWNhdGlvbk1hYy5tbQpAQCAtMzIsMTggKzMyLDEyIEBACiAjaW1wb3J0IDxGb3Vu
ZGF0aW9uL05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPEZvdW5kYXRp
b24vTlNVUkxQcm90ZWN0aW9uU3BhY2UuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0
ICJDRk5TVVJMQ29ubmVjdGlvblNQSS5oIgotI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBAaW50ZXJmYWNlIFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdl
U2VuZGVyIDogTlNPYmplY3QgPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI+CiB7
CiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIG1fY2xpZW50OwotI2lmIFVTRShDRk5FVFdPUksp
Ci0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIG1fY2ZDaGFsbGVuZ2U7Ci0jZW5kaWYKIH0KIC0g
KGlkKWluaXRXaXRoQXV0aGVudGljYXRpb25DbGllbnQ6KEF1dGhlbnRpY2F0aW9uQ2xpZW50Kilj
bGllbnQ7CiAtIChBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50OwpAQCAtODksNDcgKzgzLDEw
IEBAIC0gKHZvaWQpY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKICAgICAgICAgbV9jbGllbnQtPnJlY2VpdmVkQ2Fu
Y2VsbGF0aW9uKGNvcmUoY2hhbGxlbmdlKSk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotLSAo
dm9pZClzZXRDRkNoYWxsZW5nZTooQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKWNoYWxsZW5nZQotewot
ICAgIG1fY2ZDaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7Ci19Ci0KLS0gKENGVVJMQXV0aENoYWxsZW5n
ZVJlZiljZkNoYWxsZW5nZQotewotICAgIHJldHVybiBtX2NmQ2hhbGxlbmdlOwotfQotI2VuZGlm
Ci0KIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLQot
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY29yZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICptYWNDaGFsbGVuZ2UpCi17Ci0gICAgV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFs
bGVuZ2VTZW5kZXIgKmNoYWxsZW5nZVNlbmRlciA9IChXZWJDb3JlQXV0aGVudGljYXRpb25DbGll
bnRBc0NoYWxsZW5nZVNlbmRlciopIFttYWNDaGFsbGVuZ2Ugc2VuZGVyXTsKLSAgICByZXR1cm4g
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoW2NoYWxsZW5nZVNlbmRlciBjZkNoYWxsZW5nZV0sIFtj
aGFsbGVuZ2VTZW5kZXIgY2xpZW50XSk7Ci19Ci0KLU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKm1hYyhjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNoYWxsZW5nZSkKLXsK
LSAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0aENsaWVudCA9IGNvcmVDaGFsbGVuZ2UuYXV0
aGVudGljYXRpb25DbGllbnQoKTsKLSAgICBSZXRhaW5QdHI8V2ViQ29yZUF1dGhlbnRpY2F0aW9u
Q2xpZW50QXNDaGFsbGVuZ2VTZW5kZXI+IGNoYWxsZW5nZVNlbmRlciA9IGFkb3B0TlMoW1tXZWJD
b3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciBhbGxvY10gaW5pdFdpdGhB
dXRoZW50aWNhdGlvbkNsaWVudDphdXRoQ2xpZW50XSk7Ci0gICAgUmV0YWluUHRyPENGVVJMQXV0
aENoYWxsZW5nZVJlZj4gYXV0aENoYWxsZW5nZSA9IGNvcmVDaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hh
bGxlbmdlUmVmKCk7Ci0gICAgaWYgKCFhdXRoQ2hhbGxlbmdlKQotICAgICAgICBhdXRoQ2hhbGxl
bmdlID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlKSk7Ci0gICAgW2NoYWxsZW5nZVNl
bmRlci5nZXQoKSBzZXRDRkNoYWxsZW5nZTphdXRoQ2hhbGxlbmdlLmdldCgpXTsKLSNpZiBQTEFU
Rk9STShJT1MpCi0gICAgcmV0dXJuIFtbTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBfY3Jl
YXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VGb3JDRkF1dGhDaGFsbGVuZ2U6YXV0aENoYWxsZW5n
ZS5nZXQoKSBzZW5kZXI6Y2hhbGxlbmdlU2VuZGVyLmdldCgpXSBhdXRvcmVsZWFzZV07Ci0jZWxz
ZQotICAgIHJldHVybiBbW05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgX2F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRm9yQ0ZBdXRoQ2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2UuZ2V0KCkgc2VuZGVy
OmNoYWxsZW5nZVNlbmRlci5nZXQoKV0gYXV0b3JlbGVhc2VdOwotI2VuZGlmCi19Ci0KLSNlbHNl
Ci0KIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25z
dCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENy
ZWRlbnRpYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsCkBAIC0yMDMsNiArMTYwLDQgQEAgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgY29yZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpt
YWNDaGFsbGVuZ2UpCiAgICAgcmV0dXJuIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1hY0NoYWxs
ZW5nZSk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9D
b29raWVKYXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29r
aWVKYXJNYWMubW0KaW5kZXggMTZkMTBlMjA3MDA0MWE4N2U0NjNjZWYyNDc0YzNjNDg5ZGQzZmFl
YS4uODJkNGY1ZmUyNTJhOGVjYmVlNzZiMjdhNDIyZjUxNzM3NDI4MGFiOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQpAQCAt
MzEsOCArMzEsNiBAQAogI2ltcG9ydCAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW1wb3J0
ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2lt
cG9ydCAiQ29va2llLmgiCiAjaW1wb3J0ICJDb29raWVTdG9yYWdlLmgiCiAjaW1wb3J0ICJVUkwu
aCIKQEAgLTIwMCwxMiArMTk4LDYgQEAgdm9pZCBkZWxldGVBbGxDb29raWVzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKICAgICB3a0RlbGV0ZUFsbEhUVFBDb29raWVzKHNl
c3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKTsKIH0KIAotfQotCi0jZW5kaWYgLy8gIVVTRShD
Rk5FVFdPUkspCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQogc3RhdGljIE5TSFRUUENvb2tpZVN0
b3JhZ2UgKmNvb2tpZVN0b3JhZ2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
KQogewogICAgIGF1dG8gY29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2llU3RvcmFnZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlh
bFN0b3JhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVk
ZW50aWFsU3RvcmFnZU1hYy5tbQppbmRleCA5ZWJjODU0ZGNkYjQ4ZDU3ZThmODI4Njk0NDI0ZWNk
NDliNzMzNmVjLi5mMGE0ZjNhZjc2NDE1Y2IyNmMyOTRiZDgxMzkxM2ZlMjIzM2IzNzQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3Rv
cmFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVk
ZW50aWFsU3RvcmFnZU1hYy5tbQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykK
LQogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5o
IgogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgpAQCAtNTIsNSArNTAsMyBAQCB2b2lkIENy
ZWRlbnRpYWxTdG9yYWdlOjpzYXZlVG9QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90ZWN0aW9u
U3BhY2UmIHByb3RlY3RpbwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgKaW5kZXggZGI4MWM2Njg3YzQyMmU1
ZWNiYzM2OTBlMjM0NWFmODIyNGFkMDZjNi4uZTJjOGI4OTZhOGEyNDg5N2IxMmYwMmU0N2ViMDU1
MTFkOWJkNDBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvRm9ybURhdGFTdHJlYW1NYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCkBAIC0yOSw4ICsyOSw2IEBACiAjaWZuZGVmIEZv
cm1EYXRhU3RyZWFtTWFjX2gKICNkZWZpbmUgRm9ybURhdGFTdHJlYW1NYWNfaAogCi0jaWYgIVVT
RShDRk5FVFdPUkspCi0KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBDRlVSTFJlcXVlc3RSZWY7CkBAIC00OSw2ICs0Nyw1IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYg
Ly8gIVVTRShDRk5FVFdPUkspCiAKICNlbmRpZiAvLyBGb3JtRGF0YVN0cmVhbU1hY19oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVh
bU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3Ry
ZWFtTWFjLm1tCmluZGV4IGI1NzM0Zjk4ZWRmYmYxMTM1ZTE3ZDRiN2ViYzI5Y2M1NWZlMDQzNTEu
LjdiN2QxZDNhMTVlMzk1NzQzYzk0NDkxODM0YzMyOThlMjNjZmExOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFj
Lm1tCkBAIC0yOSw4ICsyOSw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkZvcm1E
YXRhU3RyZWFtTWFjLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiRm9ybURh
dGEuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKICNpbXBvcnQgPHd0Zi9QYXNz
UmVmUHRyLmg+CkBAIC01Miw1ICs1MCwzIEBAIEZvcm1EYXRhKiBodHRwQm9keUZyb21TdHJlYW0o
TlNJbnB1dFN0cmVhbSAqc3RyZWFtKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyAhVVNFKENGTkVUV09SSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCmluZGV4IGY3Yzg2NGNlM2I1MDk5
ZmUwMmYxNjk2OWFjZTM5N2Y2ODJlODNkYmEuLmZiNzc2NmY1NzZiMmZiYzE2MzgyNWZmYTkyMjhj
MzI1Zjg4MDlmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlRXJyb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQpAQCAtMzEsMTAgKzMxLDYgQEAKICNpbXBvcnQg
PENvcmVGb3VuZGF0aW9uL0NGRXJyb3IuaD4KICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZO
ZXR3b3JrL0NGU29ja2V0U3RyZWFtUHJpdi5oPgotI2VuZGlmCi0KIEBpbnRlcmZhY2UgTlNFcnJv
ciAoV2ViRXh0cmFzKQogLSAoTlNTdHJpbmcgKilfd2ViX2xvY2FsaXplZERlc2NyaXB0aW9uOwog
QGVuZApAQCAtOTEsODUgKzg3LDYgQEAgLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIg
Kiljb2RlcgogCiBAZW5kCiAKLQotI2lmIFVTRShDRk5FVFdPUkspCi1zdGF0aWMgTlNFcnJvciAq
TlNFcnJvckZyb21DRkVycm9yKENGRXJyb3JSZWYgY2ZFcnJvciwgTlNVUkwgKnVybCkKLXsKLSAg
ICBDRkluZGV4IGVyckNvZGUgPSBDRkVycm9yR2V0Q29kZShjZkVycm9yKTsKLSAgICBpZiAoQ0ZF
cXVhbChDRkVycm9yR2V0RG9tYWluKGNmRXJyb3IpLCBrQ0ZFcnJvckRvbWFpbkNGTmV0d29yaykg
JiYgZXJyQ29kZSA8PSBrQ0ZVUkxFcnJvclVua25vd24gJiYgZXJyQ29kZSA+IC00MDAwKSB7Ci0g
ICAgICAgIC8vIFRoaXMgaXMgYW4gVVJMIGVycm9yIGFuZCBuZWVkcyB0byBiZSB0cmFuc2xhdGVk
IHRvIHRoZSBOU1VSTEVycm9yRG9tYWluCi0gICAgICAgIGlkIGtleXNbMTBdLCB2YWx1ZXNbMTBd
OwotICAgICAgICBDRkRpY3Rpb25hcnlSZWYgdXNlckluZm8gPSBDRkVycm9yQ29weVVzZXJJbmZv
KGNmRXJyb3IpOwotICAgICAgICBOU0Vycm9yICpyZXN1bHQ7Ci0gICAgICAgIE5TSW50ZWdlciBj
b3VudCA9IDA7Ci0KLSAgICAgICAgaWYgKHVybCkgewotICAgICAgICAgICAga2V5c1tjb3VudF0g
PSBOU1VSTEVycm9yRmFpbGluZ1VSTEVycm9yS2V5OwotICAgICAgICAgICAgdmFsdWVzW2NvdW50
XSA9IHVybDsKLSAgICAgICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgICAgICBrZXlzW2NvdW50
XSA9IE5TVVJMRXJyb3JGYWlsaW5nVVJMU3RyaW5nRXJyb3JLZXk7Ci0gICAgICAgICAgICB2YWx1
ZXNbY291bnRdID0gW3VybCBhYnNvbHV0ZVN0cmluZ107Ci0gICAgICAgICAgICBjb3VudCArKzsK
LSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUodXNlckluZm8sIGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRpb25LZXkpOwotICAgICAg
ICBpZiAodmFsdWVzW2NvdW50XSkgewotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xvY2Fs
aXplZERlc2NyaXB0aW9uS2V5OwotICAgICAgICAgICAgY291bnQgKys7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZv
LCBrQ0ZFcnJvckxvY2FsaXplZEZhaWx1cmVSZWFzb25LZXkpOwotICAgICAgICBpZiAodmFsdWVz
W2NvdW50XSkgewotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xvY2FsaXplZEZhaWx1cmVS
ZWFzb25FcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NG
RXJyb3JMb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25LZXkpOwotICAgICAgICBpZiAodmFsdWVz
W2NvdW50XSkgewotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xvY2FsaXplZFJlY292ZXJ5
U3VnZ2VzdGlvbkVycm9yS2V5OwotICAgICAgICAgICAgY291bnQgKys7Ci0gICAgICAgIH0KLQot
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBp
Z25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgICAgICBpZiAodXNlckluZm8g
JiYgKHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtD
RlN0cmVhbVByb3BlcnR5U1NMUGVlckNlcnRpZmljYXRlcykpICE9IG5pbCkgewotICAgICAgICAg
ICAgLy8gTmVlZCB0byB0cmFuc2xhdGUgdGhlIGNlcnQKLSAgICAgICAgICAgIGtleXNbY291bnRd
ID0gQCJOU0Vycm9yUGVlckNlcnRpZmljYXRlQ2hhaW5LZXkiOwotICAgICAgICAgICAgY291bnQg
Kys7Ci0KLSAgICAgICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUodXNlckluZm8sIF9rQ0ZTdHJlYW1Qcm9wZXJ0eVNTTENsaWVudENlcnRpZmljYXRlcyk7Ci0g
ICAgICAgICAgICBpZiAodmFsdWVzW2NvdW50XSkgewotICAgICAgICAgICAgICAgIGtleXNbY291
bnRdID0gQCJOU0Vycm9yQ2xpZW50Q2VydGlmaWNhdGVDaGFpbktleSI7Ci0gICAgICAgICAgICAg
ICAgY291bnQgKys7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhbHVlc1tjb3VudF0g
PSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIF9rQ0ZTdHJlYW1Qcm9wZXJ0eVNT
TENsaWVudENlcnRpZmljYXRlU3RhdGUpOwotICAgICAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0p
IHsKLSAgICAgICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvckNsaWVudENlcnRpZmlj
YXRlU3RhdGVLZXkiOwotICAgICAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0KLSAgICAgICAgaWYgKHVz
ZXJJbmZvICYmICh2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJ
bmZvLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNTTFBlZXJUcnVzdCkpICE9IG5pbCkgewotICAgICAgICAg
ICAga2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFpbGluZ1VSTFBlZXJUcnVzdEVycm9yS2V5Owot
ICAgICAgICAgICAgY291bnQrKzsKLSAgICAgICAgfQotCi0gICAgICAgIGtleXNbY291bnRdID0g
TlNVbmRlcmx5aW5nRXJyb3JLZXk7Ci0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpY2ZFcnJv
cjsKLSAgICAgICAgY291bnQgKys7Ci0KLSAgICAgICAgcmVzdWx0ID0gW1dlYkN1c3RvbU5TVVJM
RXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTooZXJyQ29kZSA9PSBr
Q0ZVUkxFcnJvclVua25vd24gPyAoQ0ZJbmRleClOU1VSTEVycm9yVW5rbm93biA6IGVyckNvZGUp
IHVzZXJJbmZvOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzOnZhbHVlcyBmb3JL
ZXlzOmtleXMgY291bnQ6Y291bnRdXTsKLSAgICAgICAgaWYgKHVzZXJJbmZvKQotICAgICAgICAg
ICAgQ0ZSZWxlYXNlKHVzZXJJbmZvKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0g
ICAgcmV0dXJuIChOU0Vycm9yICopY2ZFcnJvcjsKLX0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JL
KQotCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
OTMsNTMgKzExMCw2IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gY3JlYXRlTlNFcnJvckZy
b21SZXNvdXJjZUVycm9yQmFzZShjb25zdCBSZXNvdXJjZUVycm9yCiAgICAgcmV0dXJuIGFkb3B0
TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpyZXNvdXJjZUVycm9yLmRvbWFpbigp
IGNvZGU6cmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0p
OwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJv
cihOU0Vycm9yICplcnJvcikKLSAgICA6IG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCi0gICAgLCBt
X3BsYXRmb3JtRXJyb3IocmVpbnRlcnByZXRfY2FzdDxDRkVycm9yUmVmPihlcnJvcikpCi17Ci0g
ICAgbV9pc051bGwgPSAhZXJyb3I7Ci0gICAgaWYgKCFtX2lzTnVsbCkKLSAgICAgICAgbV9pc1Rp
bWVvdXQgPSBbZXJyb3IgY29kZV0gPT0gTlNVUkxFcnJvclRpbWVkT3V0OwotfQotCi1OU0Vycm9y
ICpSZXNvdXJjZUVycm9yOjpuc0Vycm9yKCkgY29uc3QKLXsKLSAgICBpZiAobV9pc051bGwpIHsK
LSAgICAgICAgQVNTRVJUKCFtX3BsYXRmb3JtRXJyb3IpOwotICAgICAgICByZXR1cm4gbmlsOwot
ICAgIH0KLQotICAgIGlmIChtX3BsYXRmb3JtTlNFcnJvcikKLSAgICAgICAgcmV0dXJuIG1fcGxh
dGZvcm1OU0Vycm9yLmdldCgpOwotCi0gICAgaWYgKG1fcGxhdGZvcm1FcnJvcikgewotICAgICAg
ICBDRkVycm9yUmVmIGVycm9yID0gbV9wbGF0Zm9ybUVycm9yLmdldCgpOwotICAgICAgICBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiB1c2VySW5mbyA9IGFkb3B0Q0YoQ0ZFcnJvckNvcHlVc2Vy
SW5mbyhlcnJvcikpOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgbV9wbGF0Zm9ybU5TRXJy
b3IgPSBOU0Vycm9yRnJvbUNGRXJyb3IoZXJyb3IsIChOU1VSTCAqKVsoTlNEaWN0aW9uYXJ5ICop
dXNlckluZm8uZ2V0KCkgb2JqZWN0Rm9yS2V5OihpZCkga0NGVVJMRXJyb3JGYWlsaW5nVVJMRXJy
b3JLZXldKTsKLSAgICAgICAgLy8gSWYgTlNFcnJvckZyb21DRkVycm9yIGNyZWF0ZWQgYSBuZXcg
TlNFcnJvciBmb3IgdXMsIHJldHVybiB0aGF0LgotICAgICAgICBpZiAobV9wbGF0Zm9ybU5TRXJy
b3IuZ2V0KCkgIT0gKE5TRXJyb3IgKillcnJvcikKLSAgICAgICAgICAgIHJldHVybiBtX3BsYXRm
b3JtTlNFcnJvci5nZXQoKTsKLQotICAgICAgICAvLyBPdGhlcndpc2UgZmFsbCB0aHJvdWdoIHRv
IGNyZWF0ZSBhIG5ldyBOU0Vycm9yIGZyb20gdGhlIENGRXJyb3IuCi0jZW5kaWYKLSAgICAgICAg
bV9wbGF0Zm9ybU5TRXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21h
aW46KE5TU3RyaW5nICopQ0ZFcnJvckdldERvbWFpbihlcnJvcikgY29kZTpDRkVycm9yR2V0Q29k
ZShlcnJvcikgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvLmdldCgpXSk7Ci0gICAg
ICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLSAgICB9Ci0KLSAgICBtX3BsYXRm
b3JtTlNFcnJvciA9IGNyZWF0ZU5TRXJyb3JGcm9tUmVzb3VyY2VFcnJvckJhc2UoKnRoaXMpOwot
ICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLX0KLQotUmVzb3VyY2VFcnJvcjo6
b3BlcmF0b3IgTlNFcnJvciAqKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbnNFcnJvcigpOwotfQot
Ci0jZWxzZQotCiBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKE5TRXJyb3IgKm5zRXJyb3Ip
CiAgICAgOiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQogICAgICwgbV9wbGF0Zm9ybUVycm9yKG5z
RXJyb3IpCkBAIC0zMTIsNiArMTgyLDQgQEAgUmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgQ0ZFcnJv
clJlZigpIGNvbnN0CiAgICAgcmV0dXJuIGNmRXJyb3IoKTsKIH0KIAotI2VuZGlmIC8vIFVTRShD
Rk5FVFdPUkspCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KaW5kZXgg
Y2RiZTAyNThkNDAxMjFmMzE0MGI0ZjQ3OTQwY2ZiOTNmZTc3MTk2NC4uNjJlNzdiYjYxMjg4NzMy
ZGEyOWFlZGQ3MjYyYjQwNGExMzA5MjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KQEAgLTU3LDE2ICs1
Nyw2IEBACiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaWYgX19oYXNfaW5jbHVkZSg8Q0ZOZXR3
b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4pCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxDb25u
ZWN0aW9uUHJpdi5oPgotI2VuZGlmCi10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxDb25uZWN0aW9uKiBD
RlVSTENvbm5lY3Rpb25SZWY7Ci1leHRlcm4gIkMiIHsKLUNGRGljdGlvbmFyeVJlZiBfQ0ZVUkxD
b25uZWN0aW9uQ29weVRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmKTsKLX0KLSNlbmRpZiAv
LyBVU0UoQ0ZORVRXT1JLKQotCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiQ0ZOZXR3b3Jr
U1BJLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKQEAgLTg4LDkg
Kzc4LDcgQEAgLShpZClfaW5pdFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGRl
bGVnYXRlOihpZClkZWxlZ2F0ZSB1c2VzQ2FjaGU6KEIKIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotICAgIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotICAgIAorCiBzdGF0aWMgdm9pZCBhcHBs
eUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcihSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiB7CiAgICAgU3RyaW5nIGF1dGhlbnRpY2F0aW9uSGVh
ZGVyID0gIkJhc2ljICIgKyBiYXNlNjRFbmNvZGUoU3RyaW5nKGNyZWRlbnRpYWwudXNlcigpICsg
IjoiICsgY3JlZGVudGlhbC5wYXNzd29yZCgpKS51dGY4KCkpOwpAQCAtMjY5LDEyICsyNTcsNiBA
QCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAgICAgICAgIFtjb25uZWN0aW9uKCkgc2V0
RGVsZWdhdGVRdWV1ZTpvcGVyYXRpb25RdWV1ZUZvckFzeW5jQ2xpZW50cygpXTsKICAgICAgICAg
c2NoZWR1bGVkID0gdHJ1ZTsKICAgICB9Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIGVsc2Ugewot
ICAgICAgICBbY29ubmVjdGlvbigpIHNjaGVkdWxlSW5SdW5Mb29wOldlYlRocmVhZE5TUnVuTG9v
cCgpIGZvck1vZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGVdOwotICAgICAgICBzY2hlZHVsZWQgPSB0
cnVlOwotICAgIH0KLSNlbmRpZgogCiAgICAgLy8gU3RhcnQgdGhlIGNvbm5lY3Rpb24gaWYgd2Ug
ZGlkIHNjaGVkdWxlIHdpdGggYXQgbGVhc3Qgb25lIHJ1bmxvb3AuCiAgICAgLy8gV2UgY2FuJ3Qg
c3RhcnQgdGhlIGNvbm5lY3Rpb24gdW50aWwgd2UgaGF2ZSBvbmUgcnVubG9vcCBzY2hlZHVsZWQu
CkBAIC0zMTQsOCArMjk2LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZl
cnNMb2FkaW5nKGJvb2wgZGVmZXJzKQogICAgICAgICBbZC0+bV9jb25uZWN0aW9uIHNldERlZmVy
c0NhbGxiYWNrczpkZWZlcnNdOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQotCiB2b2lkIFJlc291
cmNlSGFuZGxlOjpzY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7CiAgICAgTlNSdW5Mb29w
ICpydW5Mb29wID0gcGFpci5uc1J1bkxvb3AoKTsKQEAgLTMzNCw4ICszMTQsNiBAQCB2b2lkIFJl
c291cmNlSGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKICAgICAgICAgW2Qt
Pm1fY29ubmVjdGlvbi5nZXQoKSB1bnNjaGVkdWxlRnJvbVJ1bkxvb3A6cnVuTG9vcCBmb3JNb2Rl
OihOU1N0cmluZyAqKXBhaXIubW9kZSgpXTsKIH0KIAotI2VuZGlmCi0KIGlkIFJlc291cmNlSGFu
ZGxlOjptYWtlRGVsZWdhdGUoYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSkKIHsKICAg
ICBBU1NFUlQoIWQtPm1fZGVsZWdhdGUpOwpAQCAtNzI0LDI3ICs3MDIsMTQgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShOU0NhY2hlZFVSTFJlc3BvbnNl
ICpyZXNwb25zZSkKIAogICAgIFsoaWQpZGVsZWdhdGUoKSBjb250aW51ZVdpbGxDYWNoZVJlc3Bv
bnNlOnJlc3BvbnNlXTsKIH0KLSAgICAKLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLSAgICAK
KwogI2lmIEVOQUJMRShXRUJfVElNSU5HKQogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICAKLXZv
aWQgUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKENGVVJMQ29ubmVjdGlv
blJlZiBjb25uZWN0aW9uLCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZykKLXsKLSAgICBjb3B5
VGltaW5nRGF0YSgoX19icmlkZ2UgTlNEaWN0aW9uYXJ5KilhZG9wdENGKF9DRlVSTENvbm5lY3Rp
b25Db3B5VGltaW5nRGF0YShjb25uZWN0aW9uKSkuZ2V0KCksIHRpbWluZyk7Ci19Ci0gICAgCi0j
ZWxzZQotICAgIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEo
TlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uLCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZykK
IHsKICAgICBjb3B5VGltaW5nRGF0YShbY29ubmVjdGlvbiBfdGltaW5nRGF0YV0sIHRpbWluZyk7
CiB9Ci0gICAgCi0jZW5kaWYKLSAgICAKKwogI2VuZGlmIC8vIEVOQUJMRShXRUJfVElNSU5HKQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KaW5kZXggNjk0ZTUzYzRh
NTczMjIyMGQ0NDYxZGMxMGY2MGRkOTg0YWE4Nzk2ZC4uZTc3MDI0NWRmZDUwMWIxNGIwZTYxYzEw
NzdjNzFiMzA4NDEyZjFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQpAQCAtMzcsMjkgKzM3LDYgQEAg
QGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1SZXNv
dXJjZVJlcXVlc3Q6OlJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVlc3QgKm5zUmVxdWVzdCkKLSAg
ICA6IFJlc291cmNlUmVxdWVzdEJhc2UoKQotICAgICwgbV9jZlJlcXVlc3QoW25zUmVxdWVzdCBf
Q0ZVUkxSZXF1ZXN0XSkKLSAgICAsIG1fbnNSZXF1ZXN0KG5zUmVxdWVzdCkKLXsKLX0KLQotdm9p
ZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZU5TVVJMUmVxdWVzdCgpCi17Ci0gICAgaWYgKG1fY2ZS
ZXF1ZXN0KQotICAgICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxs
b2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDptX2NmUmVxdWVzdC5nZXQoKV0pOwotfQotCi12b2lk
IFJlc291cmNlUmVxdWVzdDo6YXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwoKQotewotICAgIC8v
IEhhY2sgYmVjYXVzZSBNYWlsIGNoZWNrcyBmb3IgdGhpcyBwcm9wZXJ0eSB0byBkZXRlY3QgZGF0
YSAvIGFyY2hpdmUgbG9hZHMKLSAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShj
ZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSksIENGU1RSKCJXZWJEYXRhUmVxdWVzdCIp
LCBDRlNUUigiIikpOwotfQotCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlUmVzcG9uc2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCmluZGV4IDZmYTAwZTI0MzVlODNlNzlmOTdkNDMwODYy
ZGIwYjQxZDM2NjUzN2IuLmNkZjc4OWQ2OWE3ZjdmNWZkMGZlYTk2MzU1N2Q2ZDdkYzE3OWJkYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
UmVzcG9uc2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VSZXNwb25zZU1hYy5tbQpAQCAtNzEsMzYgKzcxLDYgQEAgdm9pZCBSZXNvdXJjZVJl
c3BvbnNlOjppbml0TlNVUkxSZXNwb25zZSgpIGNvbnN0CiAgICAgW21fbnNSZXNwb25zZS5nZXQo
KSBfc2V0TUlNRVR5cGU6KE5TU3RyaW5nICopbV9taW1lVHlwZV07CiB9CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotCi1OU1VSTFJlc3BvbnNlICpSZXNvdXJjZVJlc3BvbnNlOjpuc1VSTFJlc3BvbnNl
KCkgY29uc3QKLXsKLSAgICBpZiAoIW1fbnNSZXNwb25zZSAmJiAhbV9jZlJlc3BvbnNlICYmICFt
X2lzTnVsbCkgewotICAgICAgICBpbml0TlNVUkxSZXNwb25zZSgpOwotICAgICAgICBtX2NmUmVz
cG9uc2UgPSBbbV9uc1Jlc3BvbnNlLmdldCgpIF9DRlVSTFJlc3BvbnNlXTsKLSAgICAgICAgcmV0
dXJuIG1fbnNSZXNwb25zZS5nZXQoKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fY2ZSZXNwb25zZSkK
LSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGlmICghbV9uc1Jlc3BvbnNlKQotICAgICAgICBt
X25zUmVzcG9uc2UgPSBbTlNVUkxSZXNwb25zZSBfcmVzcG9uc2VXaXRoQ0ZVUkxSZXNwb25zZTpt
X2NmUmVzcG9uc2UuZ2V0KCldOwotCi0gICAgcmV0dXJuIG1fbnNSZXNwb25zZS5nZXQoKTsKLX0K
LQotUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlKiBuc1Jl
c3BvbnNlKQotICAgIDogbV9pbml0TGV2ZWwoVW5pbml0aWFsaXplZCkKLSAgICAsIG1fcGxhdGZv
cm1SZXNwb25zZUlzVXBUb0RhdGUodHJ1ZSkKLSAgICAsIG1fY2ZSZXNwb25zZShbbnNSZXNwb25z
ZSBfQ0ZVUkxSZXNwb25zZV0pCi0gICAgLCBtX25zUmVzcG9uc2UobnNSZXNwb25zZSkKLXsKLSAg
ICBtX2lzTnVsbCA9ICFuc1Jlc3BvbnNlOwotfQotCi0jZWxzZQotCiBzdGF0aWMgTlNTdHJpbmcq
IGNvbnN0IGNvbW1vbkhlYWRlckZpZWxkc1tdID0gewogICAgIEAiQWdlIiwgQCJDYWNoZS1Db250
cm9sIiwgQCJDb250ZW50LVR5cGUiLCBAIkRhdGUiLCBAIkV0YWciLCBAIkV4cGlyZXMiLCBAIkxh
c3QtTW9kaWZpZWQiLCBAIlByYWdtYSIKIH07CkBAIC0xODksNyArMTU5LDUgQEAgYm9vbCBSZXNv
dXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwg
Y29uc3QgUmVzb3VyY2UKICAgICByZXR1cm4gYS5uc1VSTFJlc3BvbnNlKCkgPT0gYi5uc1VSTFJl
c3BvbnNlKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvU3luY2hyb25vdXNMb2FkZXJDbGllbnQubW0KaW5kZXggMDE0NGJkOTNhNzBh
NDQ5ODhlMDU2YzhlYjg5ODk3NDlmMTVjMmI1OC4uNjVmNzZkZjEzYjljOGY5NjY3OGZmODhlZGY3
YzM2MzcxZTkzMGUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvU3luY2hyb25vdXNMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvU3luY2hyb25vdXNMb2FkZXJDbGllbnQubW0KQEAgLTI2LDggKzI2
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTeW5jaHJvbm91c0xvYWRlckNs
aWVudC5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbmNsdWRlICJBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwxNCArMzYsMTAgQEAg
dm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKFJlc291cmNlSGFuZGxlKiwKICAgICBbY2hhbGxlbmdlLnNlbmRlcigpIGNvbnRpbnVl
V2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2UubnNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKIH0KIAotI2lmICFVU0UoQ0ZORVRXT1JLKQog
UmVzb3VyY2VFcnJvciBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6cGxhdGZvcm1CYWRSZXNwb25z
ZUVycm9yKCkKIHsKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gZXJyb3IgPSBhZG9wdE5TKFtbTlNF
cnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJy
b3JCYWRTZXJ2ZXJSZXNwb25zZSB1c2VySW5mbzpuaWxdKTsKICAgICByZXR1cm4gZXJyb3IuZ2V0
KCk7CiB9Ci0jZW5kaWYKIAogfQotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgKaW5kZXggNGY0MTU1ZWFmZDk0NWIxYjg2
MmQyOWNlODk2ZGNhZGNkYTFjNDI2Ni4uMmYxMTZhZDZhMzEwMjUwYTY3N2NjZWExNGY3N2QyODEw
ZTZhOGU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaApAQCAt
MjYsMTggKzI2LDE4IEBACiAjaWZuZGVmIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGVf
aAogI2RlZmluZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKIAotI2lmICFVU0Uo
Q0ZORVRXT1JLKQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsK
IH0KIAotQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIDogTlNPYmpl
Y3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiB7CitAcHJvdG9jb2wgV2ViQ29yZVJlc291cmNl
TG9hZGVyRGVsZWdhdGUKKy0gKHZvaWQpZGV0YWNoSGFuZGxlOworQGVuZAorCitAaW50ZXJmYWNl
IFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25uZWN0
aW9uRGVsZWdhdGUsIFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRlPiB7CiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGUqIG1faGFuZGxlOwogfQogLSAoaWQpaW5pdFdpdGhIYW5kbGU6KFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlKiloYW5kbGU7Ci0tICh2b2lkKWRldGFjaEhhbmRsZTsKIEBl
bmQKIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogI2VuZGlmIC8vIFdlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzRGVsZWdhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdh
dGUubW0KaW5kZXggZTE3Y2I5ZDIwZWQ3ZGJkNTE3OTNjMzY0ZWIzMmMxNTg5NWViYTUzYS4uNTI0
YWZlM2ZhOTc2MWZhZTcwY2RkOWU2YzRlZjAxZWFkY2M5NGJkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxl
Z2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaCIKIAot
I2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
IgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25NYWMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAg
LTU0LDcgKzUyLDcgQEAgLSAoaWQpaW5pdFdpdGhIYW5kbGU6KFJlc291cmNlSGFuZGxlKiloYW5k
bGUKIAogLSAodm9pZClkZXRhY2hIYW5kbGUKIHsKLSAgICBtX2hhbmRsZSA9IDA7CisgICAgbV9o
YW5kbGUgPSBudWxscHRyOwogfQogCiAtIChOU1VSTFJlcXVlc3QgKiljb25uZWN0aW9uOihOU1VS
TENvbm5lY3Rpb24gKiljb25uZWN0aW9uIHdpbGxTZW5kUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
bmV3UmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJlY3RSZXNw
b25zZQpAQCAtMjg4LDYgKzI4NiwzIEBAIC0gKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKiljb25uZWN0
aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIHdpbGxDYWNoZVJlc3BvCiB9CiAKIEBl
bmQKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlv
blF1ZXVlRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCmluZGV4IGU3NDBh
YTU5YmVkNjNiYWI5MDc2ZjA3OTNhYjNkMDNkZTAwMmIwNTEuLmM1N2FjYWUxNDE4YzExNmZjZjc3
NzBmNThhZDRjOTFjODFlNDhjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCkBAIC0yNiw4ICsyNiw3IEBACiAj
aWZuZGVmIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9oCiAj
ZGVmaW5lIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9oCiAK
LSNpZiAhVVNFKENGTkVUV09SSykKLQorI2luY2x1ZGUgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
RGVsZWdhdGUuaCIKICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KIApAQCAtMzUsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBSZXNvdXJjZUhhbmRsZTsKIH0KIAotQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25uZWN0aW9uRGVs
ZWdhdGU+IHsKK0BpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlLCBXZWJDb3JlUmVz
b3VyY2VMb2FkZXJEZWxlZ2F0ZT4gewogICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiBtX2hh
bmRsZTsKIAogICAgIC8vIFN5bmNocm9ub3VzIGRlbGVnYXRlcyBvbiBvcGVyYXRpb24gcXVldWUg
d2FpdCB1bnRpbCBtYWluIHRocmVhZCBzZW5kcyBhbiBhc3luY2hyb25vdXMgcmVzcG9uc2UuCkBA
IC00Niw3ICs0NSw2IEBAIGNsYXNzIFJlc291cmNlSGFuZGxlOwogfQogCiAtIChpZClpbml0V2l0
aEhhbmRsZTooV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKWhhbmRsZTsKLS0gKHZvaWQpZGV0YWNo
SGFuZGxlOwogLSAodm9pZCljb250aW51ZVdpbGxTZW5kUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
bmV3UmVxdWVzdDsKIC0gKHZvaWQpY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2U7CiAjaWYgVVNF
KFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKQEAgLTU5LDUgKzU3LDQgQEAgY2xhc3Mg
UmVzb3VyY2VIYW5kbGU7CiAKIEBlbmQKIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogI2Vu
ZGlmIC8vIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUubW0KaW5kZXggOTMzN2QxMzQ5MGFiODA5Yzc4M2UxNTU4Y2ZiNzYxMGJiODFjMTU5
Yi4uYzFkNjMwYjZiM2M2MTRkZjNkNDI5Yzk3ZTA1MjhiMDc4MzkwZThjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZS5tbQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCIKIAotI2lmICFVU0Uo
Q0ZORVRXT1JLKQotCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9y
dCAiQXV0aGVudGljYXRpb25NYWMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTM0NSw2ICsz
NDMsMyBAQCAtIChCT09MKWNvbm5lY3Rpb25TaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTooTlNV
UkxDb25uZWN0aW9uICopY29ubmVjdGlvbgogfQogCiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENG
TkVUV09SSykKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCmluZGV4IDBmYWJmOTM5ODkzNmIzMTI5MzkyMjEx
MGM5NzI1YWNhNDY5MzJkZWUuLmNkNWJiNDQ3ZDdjNDNhOWVmMTc3YmEyZGEyNTZiNmRiYmU1NjY3
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVVUkxSZXNwb25zZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KQEAgLTMyNSw3ICszMjUsNiBAQCB2b2lkIGFkanVzdE1J
TUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQogfQogI2VuZGlm
CiAKLSNpZiAhVVNFKENGTkVUV09SSykKIE5TVVJMUmVzcG9uc2UgKnN5bnRoZXNpemVSZWRpcmVj
dFJlc3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uLCBOU1VSTFJl
cXVlc3QgKm5ld1JlcXVlc3QsIE5TVVJMUmVzcG9uc2UgKnJlZGlyZWN0UmVzcG9uc2UpCiB7CiAg
ICAgaWYgKHJlZGlyZWN0UmVzcG9uc2UpCkBAIC0zMzksNiArMzM4LDUgQEAgTlNVUkxSZXNwb25z
ZSAqc3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeShOU1VSTENvbm5lY3Rpb24g
KmNvbm5lY3Rpb24KICAgICBOU0RpY3Rpb25hcnkgKnN5bnRoZXNpemVkUmVzcG9uc2VIZWFkZXJG
aWVsZHMgPSBAeyBAIkxvY2F0aW9uIjogW1tuZXdSZXF1ZXN0IFVSTF0gYWJzb2x1dGVTdHJpbmdd
LCBAIkNhY2hlLUNvbnRyb2wiOiBAIm5vLXN0b3JlIiB9OwogICAgIHJldHVybiBbW1tOU0hUVFBV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6W1tjb25uZWN0aW9uIGN1cnJlbnRSZXF1ZXN0
XSBVUkxdIHN0YXR1c0NvZGU6MzAyIEhUVFBWZXJzaW9uOihOU1N0cmluZyAqKWtDRkhUVFBWZXJz
aW9uMV8xIGhlYWRlckZpZWxkczpzeW50aGVzaXplZFJlc3BvbnNlSGVhZGVyRmllbGRzXSBhdXRv
cmVsZWFzZV07CiB9Ci0jZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
TWlzYy9XZWJEb3dubG9hZC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQu
bW0KaW5kZXggNjgwZjY5ZWNlNTA2ZjY2YTM4OTgxYWViODJiNjA1MGJkZjNlZDdmOC4uNjhjZjY1
YTMyYWE1M2NhNjhmMmUzMzlkYjhhNjM2ODQ2MzJmM2M0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNj
L1dlYkRvd25sb2FkLm1tCkBAIC00MCwxMSArNDAsNiBAQAogCiAjaW1wb3J0ICJXZWJUeXBlc0lu
dGVybmFsLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGTmV0
d29yay5oPgotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvbi5oPgotI2VuZGlmCi0K
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAY2xhc3MgTlNVUkxDb25uZWN0aW9uRGVsZWdh
dGVQcm94eTsKQEAgLTYwLDE1ICs1NSw2IEBAIC0gKGlkKV9pbml0V2l0aExvYWRpbmdDb25uZWN0
aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCiAtIChpZClfaW5pdFdpdGhSZXF1ZXN0
OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxl
Z2F0ZQogICAgICAgICAgICAgIGRpcmVjdG9yeTooTlNTdHJpbmcgKilkaXJlY3Rvcnk7Ci0KLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotLSAoaWQpX2luaXRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjoo
Q0ZVUkxDb25uZWN0aW9uUmVmKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3Q6KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm94eTooTlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eSAqKXBy
b3h5OwotI2VuZGlmCi0KIEBlbmQKIAogQGludGVyZmFjZSBXZWJEb3dubG9hZEludGVybmFsIDog
TlNPYmplY3QgPE5TVVJMRG93bmxvYWREZWxlZ2F0ZT4KQEAgLTI0MiwxOCArMjI4LDYgQEAgLSAo
aWQpX2luaXRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rp
b24KICAgICByZXR1cm4gW3N1cGVyIF9pbml0V2l0aExvYWRpbmdDb25uZWN0aW9uOmNvbm5lY3Rp
b24gcmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJlc3BvbnNlIGRlbGVnYXRlOl93ZWJJbnRlcm5h
bCBwcm94eTpwcm94eV07CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotLSAoaWQpX2luaXRXaXRo
TG9hZGluZ0NGVVJMQ29ubmVjdGlvbjooQ0ZVUkxDb25uZWN0aW9uUmVmKWNvbm5lY3Rpb24KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6KENGVVJMUmVxdWVzdFJlZilyZXF1
ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOihDRlVSTFJlc3BvbnNl
UmVmKXJlc3BvbnNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClk
ZWxlZ2F0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eTooTlNVUkxDb25u
ZWN0aW9uRGVsZWdhdGVQcm94eSAqKXByb3h5Ci17Ci0gICAgW3NlbGYgX3NldFJlYWxEZWxlZ2F0
ZTpkZWxlZ2F0ZV07Ci0gICAgcmV0dXJuIFtzdXBlciBfaW5pdFdpdGhMb2FkaW5nQ0ZVUkxDb25u
ZWN0aW9uOmNvbm5lY3Rpb24gcmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJlc3BvbnNlIGRlbGVn
YXRlOl93ZWJJbnRlcm5hbCBwcm94eTpwcm94eV07Ci19Ci0jZW5kaWYKLQogLSAoaWQpX2luaXRX
aXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogICAgICAgICAgICAgICBkZWxlZ2F0
ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAgICBkaXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0
b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkSW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oCmluZGV4
IDliMmYzOTU4NWQ5NGE4ZjViMDVkMzMzMGFjYjgxMjM3YmQwZGI5NjkuLmMxZDIxOTI2MTk1MmE0
NjdjYjNhNjlhYjYxYTU4OTRiOGEwM2FkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L01pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2Mv
V2ViRG93bmxvYWRJbnRlcm5hbC5oCkBAIC0yOCwxMCArMjgsNiBAQAogIAogI2ltcG9ydCA8V2Vi
S2l0TGVnYWN5L1dlYkRvd25sb2FkLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8
Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvbi5oPgotI2VuZGlmCi0gCiBAaW50ZXJmYWNlIFdlYkRv
d25sb2FkIChXZWJEb3dubG9hZENyZWF0aW9uKQogKyhpZClfZG93bmxvYWRXaXRoTG9hZGluZ0Nv
bm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CkBAIC00MiwxMyArMzgs
NCBAQAogKyhpZClfZG93bmxvYWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAog
ICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAgICAgICBk
aXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5OwotCi0jaWYgVVNFKENGTkVUV09SSykKLSsg
KGlkKV9kb3dubG9hZFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOihDRlVSTENvbm5lY3Rpb25S
ZWYpY29ubmVjdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6
KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNwb25zZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm94eTooaWQpcHJveHk7Ci0jZW5kaWYKLQogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmggYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdFZlcnNpb25DaGVja3MuaAppbmRleCBjODExMjAxMjVk
NGRmYjY5MzFhZmVkNDFlZDEwMDE5YmYwN2JmZGY0Li5iNTMzMzU0YzM3MTJiZjA2NzlmMzk4NjNi
YWViNWUxMmUzZGIzNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktp
dFZlcnNpb25DaGVja3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdFZlcnNp
b25DaGVja3MuaApAQCAtNzIsNiArNzIsNyBAQAogI2RlZmluZSBXRUJLSVRfRklSU1RfVkVSU0lP
Tl9XSVRIX0NTU19BVFRSSUJVVEVfU0VUVEVSU19JR05PUklOR19QUklPUklUWSAyMjM5IC8vIGlP
UyA2LjAKICNkZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9ZT1VUVUJFX0VNQkVEX0lG
UkFNRV9UUkFOU0ZPUk0gMjIzOSAvLyBpT1MgNi4wCiAjZGVmaW5lIFdFQktJVF9GSVJTVF9WRVJT
SU9OX1dJVEhPVVRfTEVHQUNZX0JBQ0tHUk9VTkRTSVpFX1NIT1JUSEFORF9CRUhBVklPUiAyNjY1
IC8vIGlPUyA3LjAKKyNkZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9MT0FESU5HX0RV
UklOR19DT01NT05fUlVOTE9PUF9NT0RFUyAyNjY1IC8vIGlPUyA3LjAKICNkZWZpbmUgV0VCS0lU
X0ZJUlNUX1ZFUlNJT05fV0lUSF9JTlNFQ1VSRV9DT05URU5UX0JMT0NLSU5HIDM0NTQKICNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggZDJlYWY5NDM1OTNkOTk3
YzAzYjdiNjA3NzE2ZGI1MTgyNWM5Y2RjOC4uNzI1OTk4ZmIyMjIxMzllNzI4ODA5NjA4OGY5MDk4
MThiNzBiODU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTMwMSwxMyArMzAxLDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERv
Y3VtZW50TG9hZGVyKiBkb2MKIAogICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBtYWluUmVz
b3VyY2VMb2FkZXItPmhhbmRsZSgpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBBU1NFUlQo
W1dlYkRvd25sb2FkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkV2l0aExv
YWRpbmdDRlVSTENvbm5lY3Rpb246cmVxdWVzdDpyZXNwb25zZTpkZWxlZ2F0ZTpwcm94eTopXSk7
Ci0gICAgYXV0byBjb25uZWN0aW9uID0gaGFuZGxlLT5yZWxlYXNlQ29ubmVjdGlvbkZvckRvd25s
b2FkKCk7Ci0gICAgW1dlYkRvd25sb2FkIF9kb3dubG9hZFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0
aW9uOmNvbm5lY3Rpb24uZ2V0KCkgcmVxdWVzdDpyZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVI
VFRQQm9keSkgcmVzcG9uc2U6cmVzcG9uc2UuY2ZVUkxSZXNwb25zZSgpIGRlbGVnYXRlOlt3ZWJW
aWV3IGRvd25sb2FkRGVsZWdhdGVdIHByb3h5Om5pbF07Ci0jZWxzZQogICAgIFtXZWJEb3dubG9h
ZCBfZG93bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246aGFuZGxlLT5jb25uZWN0aW9uKCkgcmVx
dWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkgcmVzcG9uc2U6cmVzcG9u
c2UubnNVUkxSZXNwb25zZSgpIGRlbGVnYXRlOlt3ZWJWaWV3IGRvd25sb2FkRGVsZWdhdGVdIHBy
b3h5Om5pbF07Ci0jZW5kaWYKIH0KIAogYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgaW50IGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCAxNGMxYmM2YzZiNjFlZTVjNmNj
ODQ2NjE1YzQ4OWQzYWQ0ZTRjMTMyLi40ZDJiOGU5MjNkMzM4NWExNjU3ZGU5NjUzNmRhOWViZGMw
YzhmMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC0xMTcsMTMgKzExNyw2IEBAIHZvaWQgSW5pdFdlYkNv
cmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBJTklUKEN1cnNvcik7CiAjZW5kaWYKIAotI2lm
IFVTRShDRk5FVFdPUkspCi0gICAgSU5JVChHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UpOwot
ICAgIElOSVQoQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFnZSk7Ci0gICAgSU5J
VChTZXRDRlVSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYpOwotICAgIElOSVQoU2V0UmVxdWVz
dFN0b3JhZ2VTZXNzaW9uKTsKLSNlbmRpZgotCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBJTklU
KFNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMpOwogICAgIElOSVQoU3BlZWNoU3lu
dGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQppbmRleCAwMTBmYThiNzc3MjlkMGM0ZWFl
NmI0OWY5MzFkZTA0OTI2ZDNjYjI3Li40MjhhZmI3M2I2NzFiNDQ2NjA2NmE5OGM1YzQ5OGY4YjMw
OGI5YjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0K
QEAgLTE3NjYsNyArMTc2Niw3IEBAICsgKHZvaWQpX2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb24K
ICsgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGlj
eTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQogewogICAgIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNv
b2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBidWlsZGluZyB3aXRob3V0IFVTRShDRk5F
VFdPUkspIGFuZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Np
b24oKSB3YXMgbm90IGNhbGxlZCBiZWZvcmVoYW5kLgorICAgIEFTU0VSVChjb29raWVTdG9yYWdl
KTsgLy8gV2lsbCBmYWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rl
c3RpbmdTZXNzaW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KICAgICBXS1NldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGNkYTNmNTg4ZTg2YjY2YzRjNGZmZWQ2
NjM5MTM4Zjg0NmRkODMxOWIuLmM5YjVjYWRkYzJlN2RkNjRhZjNkMmFlZTYzYWE2NzBiMDU3NWNm
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTEwMjgsMTIgKzEwMjgs
MTMgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOihOU1N0cmlu
ZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKIAogI2lmICFQTEFURk9STShJT1MpCiAgICAg
TlNSdW5Mb29wICpydW5Mb29wID0gW05TUnVuTG9vcCBtYWluUnVuTG9vcF07Ci0KKyNlbHNlCisg
ICAgTlNSdW5Mb29wICpydW5Mb29wID0gV2ViVGhyZWFkTlNSdW5Mb29wKCk7CisjZW5kaWYKICAg
ICBpZiAoV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfTE9B
RElOR19EVVJJTkdfQ09NTU9OX1JVTkxPT1BfTU9ERVMpKQogICAgICAgICBbc2VsZiBzY2hlZHVs
ZUluUnVuTG9vcDpydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopa0NGUnVuTG9vcENvbW1vbk1v
ZGVzXTsKICAgICBlbHNlCiAgICAgICAgIFtzZWxmIHNjaGVkdWxlSW5SdW5Mb29wOnJ1bkxvb3Ag
Zm9yTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZV07Ci0jZW5kaWYKIAogICAgIFtzZWxmIF9hZGRU
b0FsbFdlYlZpZXdzU2V0XTsKICAgICAKQEAgLTY2MTgsMjkgKzY2MTksMTkgQEAgQGVuZAogCiBA
aW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViUGVuZGluZ1B1YmxpYykKIAotI2lmICFQTEFURk9S
TShJT1MpCiAtICh2b2lkKXNjaGVkdWxlSW5SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZv
ck1vZGU6KE5TU3RyaW5nICopbW9kZQogewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZSdW5M
b29wUmVmIHNjaGVkdWxlUGFpclJ1bkxvb3AgPSBbcnVuTG9vcCBnZXRDRlJ1bkxvb3BdOwotI2Vs
c2UKICAgICBOU1J1bkxvb3AgKnNjaGVkdWxlUGFpclJ1bkxvb3AgPSBydW5Mb29wOwotI2VuZGlm
CiAgICAgaWYgKHJ1bkxvb3AgJiYgbW9kZSkKICAgICAgICAgY29yZShzZWxmKS0+YWRkU2NoZWR1
bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHNjaGVkdWxlUGFpclJ1bkxvb3AsIChDRlN0cmlu
Z1JlZiltb2RlKSk7CiB9CiAKIC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5Mb29wOihOU1J1bkxv
b3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZQogewotI2lmIFVTRShDRk5FVFdP
UkspCi0gICAgQ0ZSdW5Mb29wUmVmIHNjaGVkdWxlUGFpclJ1bkxvb3AgPSBbcnVuTG9vcCBnZXRD
RlJ1bkxvb3BdOwotI2Vsc2UKICAgICBOU1J1bkxvb3AgKnNjaGVkdWxlUGFpclJ1bkxvb3AgPSBy
dW5Mb29wOwotI2VuZGlmCiAgICAgaWYgKHJ1bkxvb3AgJiYgbW9kZSkKICAgICAgICAgY29yZShz
ZWxmKS0+cmVtb3ZlU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHNjaGVkdWxlUGFp
clJ1bkxvb3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CiB9Ci0jZW5kaWYKIAogc3RhdGljIEJPT0wg
ZmluZFN0cmluZyhOU1ZpZXcgPFdlYkRvY3VtZW50U2VhcmNoaW5nPiAqc2VhcmNoVmlldywgTlNT
dHJpbmcgKnN0cmluZywgV2ViRmluZE9wdGlvbnMgb3B0aW9ucykKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCA3OTZjMGY0MmE3Njk5ZjE4NmYwZTRj
MDM3ZDExNDY3YzQ2YjEwMjk0Li5mNDMwNDk5NjQ1ZDdmOTUwMDdjMWNiYTBlOWNmYWMwMTk4Y2Yz
YzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBAIC0x
OTgsMTAgKzE5OCw4IEBAIHR5cGVkZWYgZW51bSB7CiAKIEBpbnRlcmZhY2UgV2ViVmlldyAoV2Vi
UGVuZGluZ1B1YmxpYykKIAotI2lmICFUQVJHRVRfT1NfSVBIT05FCiAtICh2b2lkKXNjaGVkdWxl
SW5SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZTsK
IC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1v
ZGU6KE5TU3RyaW5nICopbW9kZTsKLSNlbmRpZgogCiAtIChCT09MKWZpbmRTdHJpbmc6KE5TU3Ry
aW5nICopc3RyaW5nIG9wdGlvbnM6KFdlYkZpbmRPcHRpb25zKW9wdGlvbnM7CiAtIChET01SYW5n
ZSAqKURPTVJhbmdlT2ZTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHJlbGF0aXZlVG86KERPTVJh
bmdlICopcHJldmlvdXNSYW5nZSBvcHRpb25zOihXZWJGaW5kT3B0aW9ucylvcHRpb25zOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKaW5kZXggODA1ZmEyN2Q1
NjAxYmRmZmExZmJlNGI4ZWZmYjNlYzQ1YWNhZDE3Yi4uMjdlZjNiZDAwMzdhNzZhMDExNjg4MWNi
MzhlMTQxYmRmY2I4OTdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5oCkBAIC05NCwxMiArOTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhQXJyYXkoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBDRkFycmF5UmVmKSBv
dmVycmlkZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotI2lmIFVTRShDRk5FVFdPUksp
Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKLSNlbHNlCiAgICAg
dmlydHVhbCB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlICopIG92ZXJyaWRlOwogI2VuZGlmCi0jZW5kaWYKICNl
bmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0Vf
QVVUSF9DQUxMQkFDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAppbmRleCBkYjcwZWIwNzJmYWZlNmI4ZDg5YTBjOWU2OWE3YjAzMWEyM2U0
NDUzLi5mNzI3MWU3MzdlMWQ2YmI0NDY5ZWJkYTFlY2FmNDMyYTVlYTQ5YzU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xOTgs
NyArMTk4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNz
KGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWUKIAogICAgIHNldENhbkhhbmRsZUhU
VFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKHBhcmFtZXRlcnMuY2FuSGFuZGxlSFRUUFNTZXJ2ZXJU
cnVzdEV2YWx1YXRpb24pOwogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFNlc3Npb25UcmFja2VyOjpzZXRJZGVudGlmaWVyQmFz
ZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbQpp
bmRleCBmM2M2ZWNiYmIwMWExNjAyOWY4ZGVjZjljNGMxYzM4YTAyN2FjMDc5Li4zZDYyNWM4ZTI2
YmZmN2RlNDhiZjdhNWYxZjA0MDk4Yjg4YzZmYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCkBAIC0zNCwxOCArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotCi12b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5j
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25z
ZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKLQot
ICAgIG1fY2xpZW50LndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoY2ZSZXNwb25zZSk7Ci0KLSAgICBt
X2hhbmRsZS0+Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShjZlJlc3BvbnNlKTsKLX0KLQotI2Vs
aWYgIVVTRShORVRXT1JLX1NFU1NJT04pCisjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAKIHZv
aWQgTmV0d29ya0xvYWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhh
bmRsZSwgTlNDYWNoZWRVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkKIHsKQEAgLTU2LDYgKzQ1LDYg
QEAgdm9pZCBOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCBOU0NhY2hlZFVSTFJlc3AKICAgICBtX2hhbmRsZS0+Y29udGludWVXaWxsQ2Fj
aGVSZXNwb25zZShuc1Jlc3BvbnNlKTsKIH0KIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQor
I2VuZGlmIC8vICFVU0UoTkVUV09SS19TRVNTSU9OKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAppbmRleCA3MTM3NDk4
YmYzMmVjMzM5MmMwY2Q4NmQ5OGZlNWUwNGZiMWNiOTlhLi5lZTRkODJlM2MwZTJlZTk5Nzg3NGVl
ZDRkMzYxZDgxMzg5NGViYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93
bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9E
b3dubG9hZC5oCkBAIC00OCwxMCArNDgsNiBAQCBPQkpDX0NMQVNTIFdLRG93bmxvYWRBc0RlbGVn
YXRlOwogI2luY2x1ZGUgPG1lbW9yeT4KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxEb3dubG9hZFByaXYuaD4KLSNlbmRpZgotCiBuYW1lc3Bh
Y2UgSVBDIHsKICAgICBjbGFzcyBEYXRhUmVmZXJlbmNlOwogfQpAQCAtOTgsMTAgKzk0LDYgQEAg
cHVibGljOgogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsKICAgICB2b2lkIGRpZENhbmNl
bChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOwogCi0jaWYgVVNFKENGTkVU
V09SSykKLSAgICBEb3dubG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoZW50aWNhdGlvbkNs
aWVudCgpOwotI2VuZGlmCi0KICAgICAvLyBBdXRoZW50aWNhdGlvbgogICAgIHN0YXRpYyB2b2lk
IHJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKTsKICAgICBzdGF0aWMgdm9pZCByZWNlaXZl
ZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKTsKQEAgLTEzNCwxMCArMTI2LDYgQEAgcHJpdmF0ZToKICAgICBS
ZXRhaW5QdHI8V0tEb3dubG9hZEFzRGVsZWdhdGU+IG1fZGVsZWdhdGU7CiAjZW5kaWYKICNlbmRp
ZgotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgUmV0YWluUHRyPENGVVJMRG93bmxvYWRSZWY+IG1f
ZG93bmxvYWQ7Ci0gICAgUmVmUHRyPERvd25sb2FkQXV0aGVudGljYXRpb25DbGllbnQ+IG1fYXV0
aGVudGljYXRpb25DbGllbnQ7Ci0jZW5kaWYKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KEVGTCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ+
IG1fZG93bmxvYWRDbGllbnQ7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlSGFuZGxlPiBt
X3Jlc291cmNlSGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25s
b2Fkcy9pb3MvRG93bmxvYWRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRz
L2lvcy9Eb3dubG9hZElPUy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhmNDIy
MDlkMjc5ZmZhNTQ2ZGE3YTkxYWE1ODllZDQxNDUwMTFkZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRz
L2lvcy9Eb3dubG9hZElPUy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE5NiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJEb3dubG9hZC5oIgotCi0jaWYg
UExBVEZPUk0oSU9TKQotCi0jaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCi0jaW1wb3J0IDxXZWJD
b3JlL05vdEltcGxlbWVudGVkLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVz
b3VyY2VSZXNwb25zZS5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotI2ltcG9ydCA8d3Rm
L1J1bkxvb3AuaD4KLQotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZV
UkxEb3dubG9hZC5oPgotI2VuZGlmCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotI2lmIFVTRShDRk5FVFdPUkspCi0vLyBGSVhNRTogSWYgcG9zc2li
bGUsIHdlIHNob3VsZCBjb25zaWRlciBtb3Zpbmcgc29tZSBjYWxsYmFja3Mgb2ZmIHRoZSBtYWlu
IHRocmVhZCBvciBhdCBsZWFzdAotLy8gbWFraW5nIHRoZW0gYXN5bmNob25vdXMgY2FsbHMuCi1z
dGF0aWMgdm9pZCBkaXNwYXRjaE9uTWFpblRocmVhZCh2b2lkKF5ibG9jaykoKSkKLXsKLSAgICBp
ZiAoUnVuTG9vcDo6aXNNYWluKCkpIHsKLSAgICAgICAgYmxvY2soKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGRpc3BhdGNoX3N5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
YmxvY2spOwotfQotCi1zdGF0aWMgaW5saW5lIERvd25sb2FkKiB0b0Rvd25sb2FkKGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvd25sb2FkKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotfQotCi1zdGF0aWMgdm9pZCBzZXRVcERvd25s
b2FkQ2xpZW50KENGVVJMRG93bmxvYWRDbGllbnQmIGNsaWVudCwgRG93bmxvYWQmIGRvd25sb2Fk
KQotewotICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7Ci0gICAgY2xpZW50
LmNsaWVudEluZm8gPSAmZG93bmxvYWQ7Ci0KLSAgICBjbGllbnQuZGlkU3RhcnQgPSBbXShDRlVS
TERvd25sb2FkUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNo
T25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRT
dGFydCgpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LndpbGxTZW5kUmVxdWVz
dCA9IFtdKENGVVJMRG93bmxvYWRSZWYsIENGVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBDRlVSTFJl
c3BvbnNlUmVmLCBjb25zdCB2b2lkKikgLT4gQ0ZVUkxSZXF1ZXN0UmVmIHsKLSAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PENGVVJMUmVxdWVzdFJlZj4oQ0ZSZXRhaW4ocmVxdWVzdCkpOwotICAg
IH07Ci0KLSAgICBjbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlID0gW10oQ0ZVUkxEb3dubG9hZFJl
ZiwgQ0ZVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewot
ICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChj
bGllbnRJbmZvKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLSAgICAgICAgfSk7Ci0g
ICAgfTsKLQotICAgIGNsaWVudC5kaWRSZWNlaXZlRGF0YSA9IFtdKENGVVJMRG93bmxvYWRSZWYs
IENGSW5kZXggbGVuZ3RoLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3Bh
dGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5k
aWRSZWNlaXZlRGF0YShsZW5ndGgpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50
LnNob3VsZERlY29kZURhdGFPZk1JTUVUeXBlID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZTdHJp
bmdSZWYgZW5jb2RpbmdUeXBlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSAtPiBCb29sZWFuIHsK
LSAgICAgICAgX19ibG9jayBCT09MIHJldHVyblZhbHVlID0gTk87Ci0gICAgICAgIGRpc3BhdGNo
T25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHRvRG93bmxvYWQoY2xp
ZW50SW5mbyktPnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKGVuY29kaW5nVHlwZSk7
Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7Ci0gICAgfTsKLQotICAg
IGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRPYmplY3ROYW1lID0gW10oQ0ZV
UkxEb3dubG9hZFJlZiBkb3dubG9hZFJlZiwgQ0ZTdHJpbmdSZWYgb2JqZWN0TmFtZSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAg
ICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0ZTsKLSAgICAgICAgICAgIFN0cmluZyBkZXN0aW5h
dGlvbiA9IHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKG9iamVjdE5hbWUsIGFsbG93T3ZlcndyaXRlKTsKLSAgICAgICAgICAgIGlm
ICghZGVzdGluYXRpb24uaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgQ0ZVUkxEb3dubG9hZFNl
dERlc3RpbmF0aW9uKGRvd25sb2FkUmVmLCByZWludGVycHJldF9jYXN0PENGVVJMUmVmPihbTlNV
UkwgZmlsZVVSTFdpdGhQYXRoOmRlc3RpbmF0aW9uXSksIGFsbG93T3ZlcndyaXRlKTsKLSAgICAg
ICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbiA9IFtdKENG
VVJMRG93bmxvYWRSZWYsIENGVVJMUmVmIHBhdGgsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsK
LSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQo
Y2xpZW50SW5mbyktPmRpZENyZWF0ZURlc3RpbmF0aW9uKENGVVJMR2V0U3RyaW5nKHBhdGgpKTsK
LSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC5kaWRGaW5pc2ggPSBbXShDRlVSTERv
d25sb2FkUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25N
YWluVGhyZWFkKF57Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRGaW5p
c2goKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC5kaWRGYWlsID0gW10oQ0ZV
UkxEb3dubG9hZFJlZiBkb3dubG9hZFJlZiwgQ0ZFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAg
ICAgYXV0byByZXN1bWVEYXRhID0gYWRvcHRDRihDRlVSTERvd25sb2FkQ29weVJlc3VtZURhdGEo
ZG93bmxvYWRSZWYpKTsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZEZh
aWwoZXJyb3IsIElQQzo6RGF0YVJlZmVyZW5jZShyZXN1bWVEYXRhID8gQ0ZEYXRhR2V0Qnl0ZVB0
cihyZXN1bWVEYXRhLmdldCgpKSA6IG51bGxwdHIsIHJlc3VtZURhdGEgPyBDRkRhdGFHZXRMZW5n
dGgocmVzdW1lRGF0YS5nZXQoKSkgOiAwKSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci19Ci0jZW5k
aWYgLy8gVVNFKENGTkVUV09SSykKLQotdm9pZCBEb3dubG9hZDo6c3RhcnQoKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnN0YXJ0
V2l0aEhhbmRsZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKLXsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJMRG93bmxvYWRDbGll
bnQgY2xpZW50OwotICAgIHNldFVwRG93bmxvYWRDbGllbnQoY2xpZW50LCAqdGhpcyk7Ci0jcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgbV9kb3dubG9hZCA9IGFkb3B0Q0Yo
Q0ZVUkxEb3dubG9hZENyZWF0ZUFuZFN0YXJ0V2l0aExvYWRpbmdDb25uZWN0aW9uKE5VTEwsIGhh
bmRsZS0+cmVsZWFzZUNvbm5lY3Rpb25Gb3JEb3dubG9hZCgpLmdldCgpLCBtX3JlcXVlc3QuY2ZV
UkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSwgcmVzcG9uc2UuY2ZVUkxSZXNwb25zZSgpLCAmY2xp
ZW50KSk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0jZWxzZQotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBEb3dubG9hZDo6Y2FuY2VsKCkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpwbGF0Zm9ybUludmFsaWRhdGUo
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnBsYXRmb3Jt
RGlkRmluaXNoKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2Fk
OjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25z
dCBDcmVkZW50aWFsJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25s
b2FkOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgRG93bmxvYWQ6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpy
ZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgRG93bmxvYWQ6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KaW5kZXgg
MDA1ODNjNjlkYTBlNDU2MmY5Zjk2NmI4NWNlMmQ1NzFmMDA2ZmU3Yy4uM2JmZjUyNWVmMWZmZGJl
ZDllMzk4NjhlMjM4MTQ5YmM4MjFkNDAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KQEAgLTI2LDggKzI2LDkgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRG93bmxvYWQuaCIKIAotI2lmIFBMQVRGT1JNKE1BQykg
JiYgIVVTRShORVRXT1JLX1NFU1NJT04pCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoTkVU
V09SS19TRVNTSU9OKQogCisjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMRG93bmxvYWQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPFdlYkNv
cmUvQXV0aGVudGljYXRpb25NYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAppbmRleCA2YWYzMTdlZGNjY2IzZjM3OGVkODk0OTFjNGFkZjdiNmNlYjFi
YmU5Li5lZDA1ZmY2MjViYjI5MGJiOWZmOGUzMjc4YjAyYWRmY2NkNWIwNTRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rl
ciA8PCB0ZXh0Q2hlY2tlclN0YXRlOwogICAgIGVuY29kZXIgPDwgZnVsbEtleWJvYXJkQWNjZXNz
RW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsOwot
I2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcjsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKENPQ09BKQpAQCAtMjMwLDcgKzIzMCw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJQ
cm9jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRs
ZUlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4
IDJmODBjNjNkNzgzNTQ5MDllZWFkNTJlNjhiNGY4MjljMWMxNzk1NjIuLjAzMzUwMTEwMmM0YWZk
OGU0NDZhZmY3N2EwMWM0MDcwNWQ0NmQ4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTIxLDcgKzEyMSw3IEBA
IHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIGRvdWJsZSBkZWZh
dWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbDsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFN0cmluZyB1aVByb2Nlc3NCdW5k
bGVJZGVudGlmaWVyOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KaW5kZXggZGZmYjNlMDYzZDU2YWRhMTdk
NWNkNTRjZmUxNWUwMzA5OGM1YWUxNS4uZDBkNGM3MDg1MWRlOTk4YWI5ZWQyOWI1ZTgwOTExZjky
ZmRjNmIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNNYWMubW0KQEAgLTM5LDEwICszOSw2IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdC5oPgot
I2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogI2ltcG9ydCA8
V2ViQ29yZS9BVkZvdW5kYXRpb25TUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQuaD4KQEAgLTU3LDM2ICs1Myw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgSVBDIHsKIAotI2lmIFVTRShDRk5FVFdPUkspCi12b2lkIEFyZ3Vt
ZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5j
b2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCi17
Ci0gICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gcmVxdWVzdFRvU2VyaWFsaXplID0gcmVz
b3VyY2VSZXF1ZXN0LmNmVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKLQotICAgIGJv
b2wgcmVxdWVzdElzUHJlc2VudCA9IHJlcXVlc3RUb1NlcmlhbGl6ZTsKLSAgICBlbmNvZGVyIDw8
IHJlcXVlc3RJc1ByZXNlbnQ7Ci0KLSAgICBpZiAoIXJlcXVlc3RJc1ByZXNlbnQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIC8vIFdlIGRvbid0IHNlbmQgSFRUUCBib2R5IG92ZXIgSVBDIGZvciBi
ZXR0ZXIgcGVyZm9ybWFuY2UuCi0gICAgLy8gQWxzbywgaXQncyBub3QgYWx3YXlzIHBvc3NpYmxl
IHRvIGRvLCBhcyBzdHJlYW1zIGNhbiBvbmx5IGJlIGNyZWF0ZWQgaW4gcHJvY2VzcyB0aGF0IGRv
ZXMgbmV0d29ya2luZy4KLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByZXF1ZXN0SFRUUEJvZHkg
PSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdEJvZHkocmVxdWVzdFRvU2VyaWFs
aXplLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gcmVxdWVzdEhUVFBC
b2R5U3RyZWFtID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5U3RyZWFt
KHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSkpOwotICAgIGlmIChyZXF1ZXN0SFRUUEJvZHkgfHwg
cmVxdWVzdEhUVFBCb2R5U3RyZWFtKSB7Ci0gICAgICAgIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYg
bXV0YWJsZVJlcXVlc3QgPSBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgwLCByZXF1ZXN0
VG9TZXJpYWxpemUuZ2V0KCkpOwotICAgICAgICByZXF1ZXN0VG9TZXJpYWxpemUgPSBhZG9wdENG
KG11dGFibGVSZXF1ZXN0KTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RCb2R5
KG11dGFibGVSZXF1ZXN0LCBuaWwpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVz
dEJvZHlTdHJlYW0obXV0YWJsZVJlcXVlc3QsIG5pbCk7Ci0gICAgfQotCi0gICAgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeSA9IGFkb3B0Q0YoV0tDRlVSTFJlcXVlc3RDcmVh
dGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCksIElQ
Qzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7Ci0gICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZGljdGlv
bmFyeS5nZXQoKSk7Ci0KLSAgICAvLyBUaGUgZmFsbGJhY2sgYXJyYXkgaXMgcGFydCBvZiBDRlVS
TFJlcXVlc3QsIGJ1dCBpdCBpcyBub3QgZW5jb2RlZCBieSBXS0NGVVJMUmVxdWVzdENyZWF0ZVNl
cmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uLgotICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXF1ZXN0
LnJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KCk7Ci0gICAg
ZW5jb2Rlci5lbmNvZGVFbnVtKHJlc291cmNlUmVxdWVzdC5yZXF1ZXN0ZXIoKSk7Ci19Ci0jZWxz
ZQogdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0
YShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3Vy
Y2VSZXF1ZXN0KQogewogICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlcXVlc3RUb1Nlcmlh
bGl6ZSA9IHJlc291cmNlUmVxdWVzdC5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSk7
CkBAIC0xMTIsNyArNzgsNiBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6
ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcgogICAgIGVuY29kZXIg
PDwgcmVzb3VyY2VSZXF1ZXN0LnJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxs
YmFja0FycmF5KCk7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHJlc291cmNlUmVxdWVzdC5yZXF1
ZXN0ZXIoKSk7CiB9Ci0jZW5kaWYKIAogYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVz
dD46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlc291cmNl
UmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewpAQCAtMTI5LDIwICs5NCwxMiBAQCBib29sIEFy
Z3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50
RGVjb2RlciYgZGVjb2RlcgogICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGljdGlvbmFy
eSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgUmV0
YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gY2ZVUkxSZXF1ZXN0ID0gYWRvcHRDRihXS0NyZWF0ZUNG
VVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgp
LCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOwotICAgIGlmICghY2ZVUkxSZXF1ZXN0KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXNvdXJjZVJlcXVlc3QgPSBSZXNvdXJjZVJlcXVl
c3QoY2ZVUkxSZXF1ZXN0LmdldCgpKTsKLSNlbHNlCiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVz
dD4gbnNVUkxSZXF1ZXN0ID0gV0tOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50
YXRpb24oZGljdGlvbmFyeS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpOwogICAgIGlm
ICghbnNVUkxSZXF1ZXN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXNvdXJjZVJl
cXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QobnNVUkxSZXF1ZXN0LmdldCgpKTsKLSNlbmRpZgotICAg
IAorCiAgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGlu
Z0ZhbGxiYWNrQXJyYXk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZUNvbnRlbnRE
aXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA3NjI5Yzc3YTBjZDliMzBiZTYyZTEzOTRjYjhlMzEzODkxYWJmMjAwLi40MjMwZTE1OGY0
NDEwMTJkOTZiZjlmNGJjYjlmN2QxOWFhMmI0ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NzIsNyArNjcyLDYgQEAKIAkJ
MkRBOTQ0QTIxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYlBsYXRmb3JtVG91Y2hQb2ludElPUy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDQ5QjE4
ODRFNEYwMDBFRDg2REIgLyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcCAqLzsgfTsKIAkJ
MkRBOTQ0QTMxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYlRvdWNoRXZlbnRJT1MuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0OUMxODg0RTRGMDAw
RUQ4NkRCIC8qIFdlYlRvdWNoRXZlbnRJT1MuY3BwICovOyB9OwogCQkyREE5NDRBNDE4ODRFNEYw
MDBFRDg2REIgLyogR2VzdHVyZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyREE5NDQ5RDE4ODRFNEYwMDBFRDg2REIgLyogR2VzdHVyZVR5cGVz
LmggKi87IH07Ci0JCTJEQTk0NEE3MTg4NEU5NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEE2MTg4
NEU5NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5tbSAqLzsgfTsKIAkJMkRBOTQ0QUQxODg0RTlC
QTAwRUQ4NkRCIC8qIFRleHRDaGVja2VySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0QTkxODg0RTlCQTAwRUQ4NkRCIC8qIFRleHRDaGVj
a2VySU9TLm1tICovOyB9OwogCQkyREE5NDRBRjE4ODRFOUJBMDBFRDg2REIgLyogV2ViUGFnZVBy
b3h5SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkRBOTQ0QUIxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlBhZ2VQcm94eUlPUy5tbSAqLzsgfTsKIAkJ
MkRBOTQ0QjAxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlByb2Nlc3NQcm94eUlPUy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEFDMTg4NEU5QkEw
MEVEODZEQiAvKiBXZWJQcm9jZXNzUHJveHlJT1MubW0gKi87IH07CkBAIC0yODMyLDcgKzI4MzEs
NiBAQAogCQkyREE5NDQ5QjE4ODRFNEYwMDBFRDg2REIgLyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50
SU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlBsYXRmb3Jt
VG91Y2hQb2ludElPUy5jcHA7IHBhdGggPSBpb3MvV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0OUMxODg0RTRGMDAwRUQ4NkRC
IC8qIFdlYlRvdWNoRXZlbnRJT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gV2ViVG91Y2hFdmVudElPUy5jcHA7IHBhdGggPSBpb3MvV2ViVG91Y2hFdmVudElPUy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQTk0NDlEMTg4NEU0RjAwMEVEODZE
QiAvKiBHZXN0dXJlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR2Vz
dHVyZVR5cGVzLmg7IHBhdGggPSBpb3MvR2VzdHVyZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTJEQTk0NEE2MTg4NEU5NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERvd25sb2FkSU9TLm1tOyBw
YXRoID0gRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkRBOTQ0QTkxODg0RTlCQTAwRUQ4NkRCIC8qIFRleHRDaGVja2VySU9TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGV4dENoZWNrZXJJT1MubW07
IHBhdGggPSBpb3MvVGV4dENoZWNrZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJEQTk0NEFCMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQYWdlUHJveHlJT1MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJQYWdlUHJveHlJT1MubW07IHBh
dGggPSBpb3MvV2ViUGFnZVByb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyREE5NDRBQzE4ODRFOUJBMDBFRDg2REIgLyogV2ViUHJvY2Vzc1Byb3h5SU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViUHJvY2Vzc1Byb3h5SU9TLm1t
OyBwYXRoID0gaW9zL1dlYlByb2Nlc3NQcm94eUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTUxNDYsNyArNTE0NCw2IEBACiAJCTJEQTk0NEE1MTg4NEU5M0MwMEVEODZEQiAv
KiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTJE
QTk0NEE2MTg4NEU5NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5tbSAqLywKIAkJCSk7CiAJCQlu
YW1lID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTk1MDUsNyArOTUwMiw2
IEBACiAJCQkJNTE4RThGMDcxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxOEU4RjA5MTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZEF1dGhlbnRp
Y2F0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExREY2MzEyMThFMEI3QzgwMDNB
M0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTJEQTk0NEE3MTg4
NEU5NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxOEU4
RjBEMTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUxOEU4RjBCMTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZE1hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFCN0Q0Q0IxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDVkZWMzN2FlNWU1ZmM2
NTU3OTM1ZDMxYWNhMjJlYWM1YTYxOTBjMDEuLjliODJjODM5MDA1Mjc4MmJmZTFkNjJkZDM5ZDUz
Y2NiY2MyMmViMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0yODcsNyArMjg3LDcgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChXZWJQ
YWdlR3JvdXBQcm94eSogcGFnZUdyb3UKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVC
cm93c2luZ0VuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgYm9vbCBlbmFibGVk
KQogewogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFRoaXMgdGVzdC1vbmx5IGZ1bmN0
aW9uIGRvZXNuJ3Qgd29yayB3aXRoIE5ldHdvcmtQcm9jZXNzLCA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTI3ND4uCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVT
RShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09V
UCkKICAgICBpZiAoZW5hYmxlZCkKICAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNz
aW9uSUQoKSk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmlu
ZGV4IDAzZjI4ODIzMDIxMTM2ZmUwOGRkMmY3M2M1NGFiYjM1ZjMzYjhlOGYuLmM3MTg1YmZlNTI0
ODVkOTkxYmQwMmJiZTE3NzVhODhiODNlZTkxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1J
bnRlcmZhY2UubW0KQEAgLTEyMSwxMyArMTIxLDYgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUlu
dGVyZmFjZSh2b2lkKQogICAgICAgICBJTklUKFdpbmRvd1NldEFscGhhKTsKICNlbmRpZiAvLyAh
UExBVEZPUk0oSU9TKQogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICAgICAgSU5JVChHZXREZWZh
dWx0SFRUUENvb2tpZVN0b3JhZ2UpOwotICAgICAgICBJTklUKENvcHlDcmVkZW50aWFsRnJvbUNG
UGVyc2lzdGVudFN0b3JhZ2UpOwotICAgICAgICBJTklUKFNldENGVVJMUmVxdWVzdFNob3VsZENv
bnRlbnRTbmlmZik7Ci0gICAgICAgIElOSVQoU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKTsKLSNl
bmRpZgotCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNH
ZXRWb2ljZUlkZW50aWZpZXJzKTsKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXREZWZh
dWx0Vm9pY2VJZGVudGlmaWVyRm9yTG9jYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCmluZGV4IDAzYzUyNDM3YTAwMjVjNDIxN2YxZDM2YTY4MjkyMjUxYjY1Mjg2
ZjcuLmUwMzA4MTYxMDIxNTJmODk2NDAzOGVmMGY3MTM5MjdhYjM3MjFhMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQg
V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMpCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlRm9udFNtb290
aGluZykKICAgICAgICAgc2V0U2hvdWxkVXNlRm9udFNtb290aGluZyh0cnVlKTsKIAotI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFNlc3Npb25UcmFja2VyOjpzZXRJZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1
bmRsZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKQEAgLTQ1NywxNCArNDU3LDE0IEBAIHZvaWQgV2Vi
UHJvY2Vzczo6ZnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRB
Y2Nlc3NFbmFibGVkKQogCiB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNF
KENGTkVUV09SSykgfHwgVVNFKFNPVVApCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQ
KQogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oc2Vzc2lvbklEKTsKICNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0jaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQorI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoU09VUCkKICAgICBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oc2Vz
c2lvbklEKTsKICNlbmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267553</attachid>
            <date>2015-12-17 03:14:38 -0800</date>
            <delta_ts>2015-12-17 03:20:04 -0800</delta_ts>
            <desc>Patch to find build errors (fixes for iOS and Windows)</desc>
            <filename>bug-137936-20151217031400.patch</filename>
            <type>text/plain</type>
            <size>128366</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE4YmM0YTczMTU0ODcyYTg1OTc1NjNm
YWE0MDRlYzg0NjMyM2RhODAuLjE2YzdjYzM4YjU4NWJiMTU3ODFjOGRiOWMyZjU4MjMwYjkxYmRh
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTItMTcgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgVVNFKENGTkVUV09SSykrUExBVEZPUk0o
Q09DT0EpIGNvZGUgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM3OTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxNS0xMi0xNiAgQW5kcmVhcyBLbGluZyAg
PGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgR2l2ZSBrZXJuZWwgVk0gc29tZSBoaW50cyBh
Ym91dCBub24tbGl2ZSBtZW1vcnktY2FjaGVkIHJlc291cmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZDY0
MTZhMDhmZmIyZjE4MzY1MGJjOTM4M2EwNmNmY2E5ZmM3YTkxLi40M2JiODQ4ZGJiZTNhZWVjOTYz
ODFlNjRiY2IyMDgwYzMwNDRmZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMxIEBACisyMDE1
LTEyLTE3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIFVTRShDRk5FVFdPUkspK1BMQVRGT1JNKENPQ09BKSBjb2RlIHBhdGgKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzkzNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbW9zdCBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9t
YWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NoZWR1bGVBbGwp
OiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJy
YXkpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvbWFjL1BhZ2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6YWRkU2NoZWR1bGVQYWlyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJl
bW92ZVNjaGVkdWxlUGFpcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJl
Z2lzdGVyTWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVWaWRlb0xheWVyR3Jhdml0eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
aW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2Uu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNGKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvcHlDb29raWVzRm9yVVJMV2l0aEZpcnN0UGFydHlVUkwpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlQ29va2llcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5k
bGluZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0OjpSZXNvdXJjZVJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0OjpjYWNoZVBhcnRpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OnNldENhY2hlUGFydGl0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9uc2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6YWRkVG9IVFRQSGVhZGVyTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmg6
CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjplbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1E
YXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRp
YWxDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnRvTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVu
Y2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6bnNDcmVkZW50aWFs
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OmlzRW1wdHkpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29j
b2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZTo6ZW5jb2RpbmdSZXF1aXJl
c1BsYXRmb3JtRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnR5cGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpuc1NwYWNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVlc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJl
c291cmNlUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3Mv
UXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1t
OgorICAgICAgICAoLVtXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIGRldGFjaEhh
bmRsZV0pOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjp+UXVpY2tMb29rSGFu
ZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1Nl
dCk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdh
dGUgaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViUmVz
b3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSBfc2VuZERpZFJlY2VpdmVSZXNwb25zZUlmTmVj
ZXNzYXJ5XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29r
RGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YUFycmF5Ol0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlk
UmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJl
c291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdh
dGUgY29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UXVpY2tMb29rSGFuZGxlOjpkaWRSZWNlaXZlRGF0YUFycmF5KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW06IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6OnNldEF1dGhlbnRpY2F0aW9uQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjphdXRoZW50aWNhdGlvbkNsaWVudCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y29va2llU3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW06CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTlNF
cnJvckZyb21SZXNvdXJjZUVycm9yQmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om5zRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgTlNFcnJvciAqKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Om9wZXJhdGlvblF1ZXVlRm9yQXN5bmNDbGllbnRzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWxlZ2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xv
YWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50
OjpwbGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1t
OgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIGRldGFjaEhhbmRs
ZV0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW06CisgICAg
ICAgIChXZWJDb3JlOjpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KTogRGVs
ZXRlZC4KKwogMjAxNS0xMi0xNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBWaWV3cG9ydENvbmZpZ3VyYXRpb24gZnVuY3Rpb25zIHNob3VsZCByZXR1
cm4gYSBib29sIHRvIHNheSBpZiBhbnl0aGluZyBjaGFuZ2VkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
ZTVkMjgzN2U5YTYwY2NjYzYxMGQ1OTMwNTAzY2VmOGYxZmFjNWQ4Ny4uNzU5MWVkMGVjNDYzZDU5
NjJmODQ5NzY3ZTE5MDM0YjExMWZhMjdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDE1LTEyLTE3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVtb3ZlIFVTRShDRk5FVFdPUkspK1BMQVRGT1JNKENPQ09BKSBjb2RlIHBhdGgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzkzNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJE
b3dubG9hZC5tbToKKyAgICAgICAgKiBNaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaDoKKyAgICAg
ICAgKiBNaXNjL1dlYktpdFZlcnNpb25DaGVja3MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNh
Y2hlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZh
Y2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVy
ZW5jZXMgX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2Nv
bW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAgICgt
W1dlYlZpZXcgc2NoZWR1bGVJblJ1bkxvb3A6Zm9yTW9kZTpdKTogRGVsZXRlZC4KKyAgICAgICAg
KGZpbmRTdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUu
aDoKKwogMjAxNS0xMi0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9u
LmZyPgogCiAgICAgICAgIFtGZXRjaCBBUEldIEFkZCBmZXRjaCBBUEkgY29tcGlsZSB0aW1lIGZs
YWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA4ZGJlZDZkMjU1MTlmN2UxOTczMDU3MGVhMzUyYjAyYjllNWFlMzA1
Li40Njc1MTQ3NTg5YzNhNzRkODkzMjMxYzRjMzgwMDc3MmZkYzJjNmU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTUtMTItMTcgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW1vdmUgVVNFKENGTkVUV09SSykrUExBVEZPUk0oQ09DT0EpIGNv
ZGUgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTM3OTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omlu
aXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05l
dHdvcmtMb2FkTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6d2lsbENhY2hl
UmVzcG9uc2VBc3luYyk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9Eb3du
bG9hZC5oOgorICAgICAgICAqIFNoYXJlZC9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tOiBS
ZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tOgor
ICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNo
YXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRh
KTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+
OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YlN5c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisK
IDIwMTUtMTItMTYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgVmlld3BvcnRDb25maWd1cmF0aW9uIGZ1bmN0aW9ucyBzaG91bGQgcmV0dXJuIGEgYm9v
bCB0byBzYXkgaWYgYW55dGhpbmcgY2hhbmdlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggNTkxODE4YzNiZGI4
MmJhOWMyYjVhYTU5YTZkZWI2NGIzMzAxMGM5ZS4uNjI2NGY4ODc3YWFmMTg1YTZiYWZjZDg4NDNk
MWM1MmZhOWIwNGJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC01NDUsOSArNTQ1LDYgQEAKICNpZiBQTEFU
Rk9STShJT1MpCiAKICNkZWZpbmUgSEFWRV9SRUFETElORSAxCi0jaWYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykKLSNkZWZpbmUgVVNFX0NGTkVUV09SSyAxCi0jZW5kaWYKICNkZWZpbmUgVVNFX1VJ
S0lUX0VESVRJTkcgMQogI2RlZmluZSBVU0VfV0VCX1RIUkVBRCAxCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMDlkM2Q5NGYz
MWE2OWM2ODg3ZDI3NTQwMjQ4NTI2OTkxYmE4Y2NkLi43ZTFlODI2NDRkNTg0ZWY2NTc5N2E4ZDcy
ZjI4NTNjYWVjNGEyY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzc0LDcgKzI3NzQsNiBAQAogCQk3RTY2RTIzNDE2RDZF
QjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U2NkUyMzIxNkQ2RUI2QzAwRjdFN0ZG
IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCAqLzsgfTsKIAkJN0U2NkUyMzQxN0U2RUI2
QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U2NkUyMzIxN0U2RUI2QzAwRjdFN0ZG
IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oICovOyB9OwogCQk3RTdERTFGRDE5NUNF
RjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTdERTFGQzE5NUNFRjI2MDAzNTM2M0IgLyog
UmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gKi87IH07Ci0JCTdFN0RFMjAyMTk1Q0VGQ0QwMDM1MzYz
QiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3RTdERTIwMTE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1
ZXN0SU9TLm1tICovOyB9OwogCQk3RThGQURDNDE5OUE5NUIxMDA3MTQ5NjggLyogU3VicmVzb3Vy
Y2VMb2FkZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdFOEZBREMzMTk5QTk1QjEwMDcxNDk2OCAvKiBTdWJyZXNvdXJjZUxvYWRlckNvY29h
Lm1tICovOyB9OwogCQk3RTk5QUY1MTBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxv
d2VkSW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdFOTlBRjUyMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRp
Y2F0b3IuY3BwICovOyB9OwogCQk3RTk5QUY1MzBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9j
dXNBbGxvd2VkSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RTk5QUY1NDBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2Vk
SW5kaWNhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTEwMjg1LDcgKzEwMjg0LDYgQEAKIAkJN0U2NkUyMzIxNkQ2RUI2QzAwRjdFN0ZGIC8q
IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3RTY2RTIzMjE3RTZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVQVlJUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTdERTFGQzE5
NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0U3REUyMDExOTVDRUZDRDAwMzUzNjNCIC8qIFJlc291
cmNlUmVxdWVzdElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFJlc291cmNlUmVxdWVzdElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U4
RkFEQzMxOTlBOTVCMTAwNzE0OTY4IC8qIFN1YnJlc291cmNlTG9hZGVyQ29jb2EubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdWJyZXNvdXJjZUxvYWRlckNvY29h
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTk5QUY1MjBCMTM4NDY0NjhGQjAx
QTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFOTlBRjU0MEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5k
b3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNjU2Nyw3ICsxNjU2NSw2IEBACiAJCQkJNDQyQUY3QTgxMDJDRERFQTAwOEZENEQz
IC8qIFF1aWNrTG9vay5tbSAqLywKIAkJCQlBMTBEQkY0NjE4RjkyMzE3MDAwRDcwQzYgLyogUXVp
Y2tMb29rSGFuZGxlQ2xpZW50LmggKi8sCiAJCQkJN0U0MjhDRTQxM0UzNDA3RjAwM0I2NjFDIC8q
IFJlc291cmNlSGFuZGxlSU9TLm1tICovLAotCQkJCTdFN0RFMjAxMTk1Q0VGQ0QwMDM1MzYzQiAv
KiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gKi8sCiAJCQkJNDRBMjBEQjgwRjg0MTY2QzAwQjNFMUZF
IC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5oICovLAogCQkJCTQ0NEQ0RTIxMEY3MDhCMkUwMDMx
NThFMCAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0gKi8sCiAJCQkpOwpAQCAtMzA3ODQsNyAr
MzA3ODEsNiBAQAogCQkJCTUxNEM3NjdDMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVl
c3RCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDZFMTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTdERTFGRDE5
NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gaW4gU291cmNlcyAqLywK
LQkJCQk3RTdERTIwMjE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTMwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVx
dWVzdE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjdFMENFOTIzQTEwMDdFRjNDRCAv
KiBSZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ3MTEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCA1NTEwMzkxYmQzM2Qz
YTM2NjcxNTZlODQ1ZmEzMTMxMWMzZjZmOWYzLi45ZGJlMTgzZTY5ZWNiNWRlMWY1NTViN2U1OGNl
NDhkNzgzZGRlMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAt
NTYsNiArNTYsMTAgQEAKICNpbmNsdWRlICJRdWlja0xvb2suaCIKICNlbmRpZgogCisjaWYgUExB
VEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFpci5oPgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OwpAQCAt
MTQ0LDcgKzE0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgICAgIGNv
bnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVF
bmNvZGluZzsgfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
ICAgICB2b2lkIHNjaGVkdWxlKFNjaGVkdWxlUGFpciYpOwogICAgICAgICB2b2lkIHVuc2NoZWR1
bGUoU2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDBkODFmZjViYTI4YTIxMDRkNTI4YWVjZmJiYmU3MzU2Y2EyM2I2Nzgu
Ljk2MTNlMzAxYjgzMTdlYWU4MTUyY2YzZThmMDc2YzRkMzljMWQ3MDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNzI0LDcgKzcyNCw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJikKICAgICBjYW5jZWwoKTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFU
Rk9STShDT0NPQSkKIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2NoZWR1bGUoU2NoZWR1bGVQYWly
JiBwYWlyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCAwMjdh
YzA4ZjIzMjMxZDQwNzg3ZDEzMDI1NjI2MzMyYjkyNmY0MGZhLi44NTIwMTE3NTRmN2I5MTQ2NzU1
MmM4YjVjYTliMTk3NzE3OTllZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtMTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2lsbFN3aXRjaFRv
U3Vic3RpdHV0ZVJlc291cmNlKCk7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgdm9pZCBzY2hlZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpOwogICAgIHZvaWQg
dW5zY2hlZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpOwogI2VuZGlmCkBAIC0xNTcsMTIgKzE1Nyw5
IEBAIHByb3RlY3RlZDoKIAogICAgIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9u
cygpIHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0Uo
Q0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgTlNDYWNoZWRVUkxS
ZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJl
c3BvbnNlKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKENG
TkVUV09SSykKLSAgICB2aXJ0dWFsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVz
cG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsK
LSNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IDY5YTI0MjI5
NzIxZmY2Y2E5ODk5M2E2OTk3NzAxOGZlZWQ4ZDVjZDguLmVmYWNkZDhkMTMyNDJhMDY0NDM5YWI3
MjkwMGIxOTRjY2JjMDE0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5oCkBAIC03MywxMiArNzMsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxs
Q2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIAotI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0
dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiwgTlNDYWNoZWRVUkxSZXNwb25zZSopIG92ZXJyaWRlOwogI2VuZGlmCi0jaWYgUExBVEZPUk0o
Q09DT0EpICYmIFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZikgb3ZlcnJpZGU7Ci0jZW5kaWYKIAogI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9D
QUxMQkFDSykKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNEYXRhQXJyYXkoKSBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0Rv
Y3VtZW50TG9hZGVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRM
b2FkZXJNYWMuY3BwCmluZGV4IDdlNzRmMjBmOTcyYjA3OGZlODYyYjU4MWMyODliZWVlNWQwYTEy
YzguLmIyNjE0NGJkMjA1ZjFmNmE3NjZhZWViNTI3ZmNlZjNmOTYyZTE3YmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCkBAIC0zMyw4ICsz
Myw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFBMQVRGT1JNKE1BQykKLQogc3Rh
dGljIHZvaWQgc2NoZWR1bGVBbGwoY29uc3QgUmVzb3VyY2VMb2FkZXJNYXAmIGxvYWRlcnMsIFNj
aGVkdWxlUGFpciYgcGFpcikKIHsKICAgICBWZWN0b3I8UmVmUHRyPFJlc291cmNlTG9hZGVyPj4g
bG9hZGVyc0NvcHk7CkBAIC02OSw2ICs2Nyw0IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnVuc2No
ZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQogICAgIHVuc2NoZWR1bGVBbGwobV9tdWx0aXBhcnRT
dWJyZXNvdXJjZUxvYWRlcnMsIHBhaXIpOwogfQogCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCmluZGV4
IGJiOWIxNGU4MTRiNWIyMzljNzdlNTFhNGRiZjE3Y2Q2NTFjMjZmMDMuLjhhMzI4ZWU1ZmYyODgx
ZThjMzQ0NmViNTg4NGNlMmU1YjIyZmNmYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQpAQCAtMzYsMTkgKzM2LDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLQotQ0ZDYWNoZWRVUkxSZXNwb25zZVJl
ZiBSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQotewotICAgIGlmIChtX29wdGlvbnMu
c2VuZExvYWRDYWxsYmFja3MoKSA9PSBEb05vdFNlbmRDYWxsYmFja3MpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgUmV0YWluUHRyPE5TQ2FjaGVkVVJMUmVzcG9uc2U+IG5zQ2FjaGVk
UmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNDYWNoZWRVUkxSZXNwb25zZSBhbGxvY10gX2luaXRXaXRo
Q0ZDYWNoZWRVUkxSZXNwb25zZTpjYWNoZWRSZXNwb25zZV0pOwotICAgIHJldHVybiBbZnJhbWVM
b2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9jdW1lbnRMb2FkZXIoKSwgaWRl
bnRpZmllcigpLCBuc0NhY2hlZFJlc3BvbnNlLmdldCgpKSBfQ0ZDYWNoZWRVUkxSZXNwb25zZV07
Ci19Ci0KLSNlbHNlCi0KIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWxs
Q2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJlc3Bv
bnNlKQogewogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MoKSA9PSBEb05vdFNl
bmRDYWxsYmFja3MpCkBAIC01Niw4ICs0Myw2IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFJlc291
cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkCiAg
ICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLndpbGxDYWNoZVJlc3BvbnNlKGRvY3Vt
ZW50TG9hZGVyKCksIGlkZW50aWZpZXIoKSwgcmVzcG9uc2UpOwogfQogCi0jZW5kaWYKLQogI2lm
IFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKIAogdm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9QYWdlTWFjLm1tCmluZGV4IDUyNTEwOGZjYTVlZThhODQzMTRhNmQxMDVhZjRhNmQxMzU0
MjRlN2YuLmY1YzUxZjlhYmZhYTdjNzU3NTAyYzJhY2U4MDgzOWNkNmViMjc5NWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvUGFnZU1hYy5tbQpAQCAtMzQsMTIgKzM0LDE2IEBACiAjaW1wb3J0ICJGcmFt
ZVRyZWUuaCIKICNpbXBvcnQgIk1haW5GcmFtZS5oIgogCisjaWYgUExBVEZPUk0oSU9TKQorI2lt
cG9ydCAiV2ViQ29yZVRocmVhZC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dm9pZCBQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewotI2lmIFVTRShDRk5FVFdPUkspCi0g
ICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFtbTlNSdW5Mb29wIGN1cnJl
bnRSdW5Mb29wXSBnZXRDRlJ1bkxvb3BdLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpKTsKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFdl
YlRocmVhZE5TUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpKTsKICNlbHNlCiAgICAg
YWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFtOU1J1bkxvb3AgY3VycmVudFJ1
bkxvb3BdLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpKTsKICNlbmRpZgpAQCAtNTEsMTQgKzU1LDEy
IEBAIHZvaWQgUGFnZTo6YWRkU2NoZWR1bGVQYWlyKFJlZjxTY2hlZHVsZVBhaXI+JiYgcGFpcikK
ICAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjaGVk
dWxlUGFpckhhc2hTZXQ+KCk7CiAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMtPmFkZChwYWly
LnB0cigpKTsKIAotI2lmICFQTEFURk9STShJT1MpCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBt
X21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5l
eHQoKSkgewogICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJh
bWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRl
ci0+c2NoZWR1bGUocGFpcik7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRM
b2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKQogICAg
ICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNjaGVkdWxlKHBhaXIpOwogICAgIH0KLSNlbmRpZgog
CiAgICAgLy8gRklYTUU6IG1ha2UgU2hhcmVkVGltZXJNYWMgdXNlIHRoZXNlIFNjaGVkdWxlUGFp
cnMuCiB9CkBAIC03MSwxNCArNzMsMTIgQEAgdm9pZCBQYWdlOjpyZW1vdmVTY2hlZHVsZVBhaXIo
UmVmPFNjaGVkdWxlUGFpcj4mJiBwYWlyKQogCiAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMt
PnJlbW92ZShwYWlyLnB0cigpKTsKIAotI2lmICFQTEFURk9STShJT1MpCiAgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSBtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50
TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBk
b2N1bWVudExvYWRlci0+dW5zY2hlZHVsZShwYWlyKTsKICAgICAgICAgaWYgKERvY3VtZW50TG9h
ZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50
TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+dW5zY2hlZHVsZShwYWlyKTsK
ICAgICB9Ci0jZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CmluZGV4IDk4MGU0MzFmNmQyYzE0NmY1YmMxMWI5NzJlYzY5ZjYwMzU3YzhiNTguLjBhYTE4ZmQx
YjVjZmI5NzA0ZGNhZDI1NDc2YzYxZmE5NmU1OTU0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQpAQCAtOTksMTAgKzk5LDYgQEAKICNpbXBvcnQgPFZpZGVvVG9vbGJveC9WaWRlb1Rvb2xib3gu
aD4KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbmNsdWRlICJDRk5TVVJMQ29ubmVj
dGlvblNQSS5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSA8T3BlbkdM
RVMvRVMzL2dsZXh0Lmg+CiAjZW5kaWYKQEAgLTQyMSw1OCArNDE3LDYgQEAgc3RhdGljIGRpc3Bh
dGNoX3F1ZXVlX3QgZ2xvYmFsUHVsbERlbGVnYXRlUXVldWUoKQogfQogI2VuZGlmCiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotY2xhc3MgV2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VD
bGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUNsaWVudD4sIHB1YmxpYyBBdXRoZW50aWNhdGlvbkNsaWVudCB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFJlZlB0cjxXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudD4g
Y3JlYXRlKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VDbGllbnQoY2hhbGxlbmdlKSk7Ci0gICAgfQotCi0gICAgdXNpbmcgUmVmQ291bnRlZDxX
ZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudD46OnJlZjsKLSAgICB1c2lu
ZyBSZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50Pjo6
ZGVyZWY7Ci0KLXByaXZhdGU6Ci0gICAgV2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VDbGllbnQoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlKQotICAgICAg
ICA6IG1fY2hhbGxlbmdlKGNoYWxsZW5nZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2NoYWxs
ZW5nZSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50
KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkF1dGhlbnRpY2F0
aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVj
ZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3Jl
ZGVudGlhbCYgY3JlZGVudGlhbCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFtbbV9jaGFsbGVu
Z2Ugc2VuZGVyXSB1c2VDcmVkZW50aWFsOmNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkgZm9yQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCldOwotICAgIH0KLQotICAgIHZp
cnR1YWwgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgW1tt
X2NoYWxsZW5nZSBzZW5kZXJdIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAgdmlydHVhbCB2
b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSBjYW5jZWxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAgdmly
dHVhbCB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoW1tt
X2NoYWxsZW5nZSBzZW5kZXJdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGVyZm9ybURl
ZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOildKQotICAgICAgICAgICAg
W1ttX2NoYWxsZW5nZSBzZW5kZXJdIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAgdmlydHVhbCB2
b2lkIHJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChbW21fY2hhbGxlbmdlIHNlbmRlcl0g
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250
aW51ZVdpdGhDaGFsbGVuZ2U6KV0pCi0gICAgICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0g
cmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdlOm1fY2hhbGxlbmdl
LmdldCgpXTsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZT4gbV9jaGFsbGVuZ2U7Ci19OwotI2VuZGlmCi0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJh
ciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCkBAIC0xNzg4LDEzICsxNzMy
LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0
Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIG5zQ2hhbGxlbmdlKQogewotI2lm
IFVTRShDRk5FVFdPUkspCi0gICAgUmVmUHRyPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQ2xpZW50PiBjbGllbnQgPSBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUNsaWVudDo6Y3JlYXRlKG5zQ2hhbGxlbmdlKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxBdXRoQ2hh
bGxlbmdlUmVmPiBjZkNoYWxsZW5nZSA9IGFkb3B0Q0YoW25zQ2hhbGxlbmdlIF9jcmVhdGVDRkF1
dGhDaGFsbGVuZ2VdKTsKLSAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UoY2ZD
aGFsbGVuZ2UuZ2V0KCksIGNsaWVudC5nZXQoKSk7Ci0jZWxzZQogICAgIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlIGNoYWxsZW5nZShuc0NoYWxsZW5nZSk7Ci0jZW5kaWYKIAogICAgIHJldHVybiBw
bGF5ZXIoKS0+c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShj
aGFsbGVuZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQppbmRleCA0ZTMwMzY2ZDRlYjdmYWIxODhkZTRj
YWU5MGY5ZDU1MTFmOTA2ZGFiLi4wOWQ1OWM3MTI4MDgzMWQ1ZTc0NTU4MDI1ZDc0NGRhMzgzMjUw
OWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3Rl
bUludGVyZmFjZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZUlPUy5tbQpAQCAtNTEsMTMgKzUxLDYgQEAgV0VCQ09SRV9FWFBPUlQg
dm9pZCAoKndrQ0ZVUkxSZXF1ZXN0QWxsb3dBbGxQb3N0Q2FjaGluZykoQ0ZVUkxSZXF1ZXN0UmVm
KTsKIFdFQkNPUkVfRVhQT1JUIENGQXJyYXlSZWYgKCp3a0NvcHlOU1VSTFJlc3BvbnNlQ2VydGlm
aWNhdGVDaGFpbikoTlNVUkxSZXNwb25zZSopOwogV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdFbmNv
ZGluZyAoKndrR2V0V2ViRGVmYXVsdENGU3RyaW5nRW5jb2RpbmcpKHZvaWQpOwogCi0jaWYgVVNF
KENGTkVUV09SSykKLVdFQkNPUkVfRVhQT1JUIENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgKCp3a0dl
dERlZmF1bHRIVFRQQ29va2llU3RvcmFnZSkoKTsKLVdFQkNPUkVfRVhQT1JUIFdLQ0ZVUkxDcmVk
ZW50aWFsUmVmICgqd2tDb3B5Q3JlZGVudGlhbEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKShDRlVS
TFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2UpOwotV0VCQ09SRV9FWFBPUlQgdm9p
ZCAoKndrU2V0Q0ZVUkxSZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZmKShDRk11dGFibGVVUkxSZXF1
ZXN0UmVmLCBib29sKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldFJlcXVlc3RTdG9yYWdl
U2Vzc2lvbikoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiwgQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZik7
Ci0jZW5kaWYKLQogV0VCQ09SRV9FWFBPUlQgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiAoKndrQ3Jl
YXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKShDRlN0cmluZ1JlZik7CiBXRUJDT1JFX0VYUE9SVCBO
U1VSTFJlcXVlc3QqICgqd2tDb3B5UmVxdWVzdFdpdGhTdG9yYWdlU2Vzc2lvbikoQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiwgTlNVUkxSZXF1ZXN0Kik7CiBXRUJDT1JFX0VYUE9SVCBDRkhUVFBDb29r
aWVTdG9yYWdlUmVmICgqd2tDb3B5SFRUUENvb2tpZVN0b3JhZ2UpKENGVVJMU3RvcmFnZVNlc3Np
b25SZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJD
b3JlVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJl
YWQuaAppbmRleCBlZmI4ZDdhNDg2MGQwMDNmZjNkN2EwZTNhMWFhZDM3MjJkN2ZjOGVmLi42Mzc3
YjhlNWRkZmU4ZDk4ZTFiZDBlYjEyMzczMTUxNzk0YmQ0MGFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQuaApAQCAtODEsNyArODEsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgV2ViVGhyZWFkU2hvdWxkWWllbGQodm9pZCkgeyByZXR1cm4gd2Vi
VGhyZWFkU2hvdWxkWWllbGQ7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBXZWJUaHJlYWRTZXRTaG91
bGRZaWVsZCgpIHsgd2ViVGhyZWFkU2hvdWxkWWllbGQgPSB0cnVlOyB9CiAKIFdFQkNPUkVfRVhQ
T1JUIENGUnVuTG9vcFJlZiBXZWJUaHJlYWRSdW5Mb29wKHZvaWQpOwotTlNSdW5Mb29wKiBXZWJU
aHJlYWROU1J1bkxvb3Aodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBOU1J1bkxvb3AqIFdlYlRocmVh
ZE5TUnVuTG9vcCh2b2lkKTsKIFdlYlRocmVhZENvbnRleHQgKldlYlRocmVhZEN1cnJlbnRDb250
ZXh0KHZvaWQpOwogYm9vbCBXZWJUaHJlYWRDb250ZXh0SXNDdXJyZW50KHZvaWQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aAppbmRleCA2MGI0ODkwNTczYWQ2YTg1ZDNiMGEzNzNjYzhjYTI1ZmYzOWYwMjExLi5iNjU2NjEz
MDdkMDYyYmQwYTk3Y2QxN2QxZGJhOGExMmY3ZGRlODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKQEAgLTI1NiwxMiAr
MjU2LDYgQEAgZXh0ZXJuIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0dldENGVVJMUmVzcG9uc2VIVFRQ
UmVzcG9uc2UpKENGVVJMUmVzcG9uc2VSZWYpOwogZXh0ZXJuIENGU3RyaW5nUmVmICgqd2tDb3B5
Q0ZVUkxSZXNwb25zZVN1Z2dlc3RlZEZpbGVuYW1lKShDRlVSTFJlc3BvbnNlUmVmKTsKIGV4dGVy
biB2b2lkICgqd2tTZXRDRlVSTFJlc3BvbnNlTUlNRVR5cGUpKENGVVJMUmVzcG9uc2VSZWYsIENG
U3RyaW5nUmVmIG1pbWVUeXBlKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi1leHRlcm4gQ0ZIVFRQ
Q29va2llU3RvcmFnZVJlZiAoKndrR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKSgpOwotZXh0
ZXJuIFdLQ0ZVUkxDcmVkZW50aWFsUmVmICgqd2tDb3B5Q3JlZGVudGlhbEZyb21DRlBlcnNpc3Rl
bnRTdG9yYWdlKShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2UpOwotZXh0
ZXJuIHZvaWQgKCp3a1NldENGVVJMUmVxdWVzdFNob3VsZENvbnRlbnRTbmlmZikoQ0ZNdXRhYmxl
VVJMUmVxdWVzdFJlZiwgYm9vbCk7Ci1leHRlcm4gdm9pZCAoKndrU2V0UmVxdWVzdFN0b3JhZ2VT
ZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBDRk11dGFibGVVUkxSZXF1ZXN0UmVmKTsK
LSNlbmRpZgogI2lmICFQTEFURk9STShJT1MpCiBleHRlcm4gdm9pZCAoKndrU2V0TWV0YWRhdGFV
UkwpKE5TU3RyaW5nICp1cmxTdHJpbmcsIE5TU3RyaW5nICpyZWZlcnJlciwgTlNTdHJpbmcgKnBh
dGgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDE4OGY0MTI4MTIzYTk2MDhhZGJmZmNjYmY2OWI4
ZGFmMzAwMWNiYzcuLjAzMzkwY2U2OWM1YmZjZWYzYWI1MWU2YTE5NjM3NDUwNmViYWVhMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLm1tCkBAIC04OCwxMyArODgsNiBAQCB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JT
dHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bQogdm9p
ZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFt
UmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcpOwogQ0ZIVFRQTWVzc2Fn
ZVJlZiAoKndrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJlYWRTdHJlYW1SZWYsIENGVVJM
UmVmIHJlc3BvbnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5
UG9ydCk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiAoKndr
R2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKSgpOwotV0tDRlVSTENyZWRlbnRpYWxSZWYgKCp3
a0NvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UpKENGVVJMUHJvdGVjdGlvblNw
YWNlUmVmIHByb3RlY3Rpb25TcGFjZSk7Ci12b2lkICgqd2tTZXRDRlVSTFJlcXVlc3RTaG91bGRD
b250ZW50U25pZmYpKENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIGJvb2wpOwotdm9pZCAoKndrU2V0
UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBDRk11dGFibGVV
UkxSZXF1ZXN0UmVmKTsKLSNlbmRpZgotCiB2b2lkKiB3a0dldEh5cGhlbmF0aW9uTG9jYXRpb25C
ZWZvcmVJbmRleDsKIAogYm9vbCAoKndrRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93
TGVvcGFyZCkodm9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcAppbmRleCA5M2M0ZGRiYTQ4ZjlmZGIzNzFiOTVj
YzI5NzBkYWM4Y2U4NTliYzM4Li4wMTI2ZGM3OTQ4MzFmNGFmZjZjYWMxMjljMDJlOThjZWVlYzlk
MmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rp
b25TcGFjZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJv
dGVjdGlvblNwYWNlQmFzZS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlByb3Rl
Y3Rpb25TcGFjZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykgJiYgIVBMQVRGT1JNKENPQ09BKQor
I2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1
ZGUgPENGTmV0d29yay9DRlVSTFByb3RlY3Rpb25TcGFjZVByaXYuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmgKaW5kZXggNTNlMjRjZDFlYWJmNzBiOGExZWMxZGI0YjY3ZjgzYzU4Yjk4MGM3
MC4uMDkyMzkyZWUyNDc0Zjk0MTk2N2IxOTc5ZjRiNzJlZWU2NWEzZjRhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtMTI2LDcg
KzEyNiw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0
aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lk
IGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9u
KCkgY29uc3Q7CiAgICAgaWQgbWFrZURlbGVnYXRlKGJvb2wpOwpAQCAtMjE2LDcgKzIxNiw3IEBA
IHB1YmxpYzoKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29u
dGludWVXaWxsQ2FjaGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKICNlbmRpZgot
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoTlND
YWNoZWRVUkxSZXNwb25zZSAqKTsKICNlbmRpZgogCkBAIC0yMzYsMTAgKzIzNiw2IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ0ZTdHJpbmdSZWYgc3luY2hyb25vdXNMb2Fk
UnVuTG9vcE1vZGUoKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBVU0UoQ0ZORVRX
T1JLKQotICAgIHN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGNyZWF0ZVNTTFByb3BlcnRp
ZXNGcm9tTlNVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotI2VuZGlmCi0KICAg
ICB0eXBlZGVmIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+ICgqQnVpbHRpbkNvbnN0cnVjdG9y
KShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBj
bGllbnQpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQnVpbHRpbkNvbnN0cnVjdG9yKGNvbnN0
IEF0b21pY1N0cmluZyYgcHJvdG9jb2wsIEJ1aWx0aW5Db25zdHJ1Y3Rvcik7CiAKQEAgLTI3Niwx
MSArMjcyLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9v
bCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNj
aGVkdWxpbmdCZWhhdmlvciwgQ0ZEaWN0aW9uYXJ5UmVmIGNsaWVudFByb3BlcnRpZXMpOwogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JN
KE1BQykKICAgICB2b2lkIGNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVk
dWxpbmdCZWhhdmlvcik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgIVVTRShDRk5F
VFdPUkspCisjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQgY3JlYXRlTlNVUkxDb25uZWN0aW9u
KGlkIGRlbGVnYXRlLCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3Vs
ZENvbnRlbnRTbmlmZiwgU2NoZWR1bGluZ0JlaGF2aW9yLCBOU0RpY3Rpb25hcnkgKmNvbm5lY3Rp
b25Qcm9wZXJ0aWVzKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmluZGV4IDYxMjNmMTRhY2Ey
NDg0YmU0MmE2ZGYxMDBhZjNhYWMzMTliZDJkOWYuLjdhZTczY2Y3MWRjMTE1ZjQwMWYyMDBiM2M0
ODFmODg0OTc5YzczOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC0xMzYsMTEgKzEzNiw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fY3VycmVudFJlcXVl
c3Q7CiAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
PiBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAh
VVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgUmV0YWluUHRyPE5T
VVJMQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgICAgICBSZXRhaW5QdHI8aWQ+IG1fZGVs
ZWdhdGU7Ci0jZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgYm9vbCBtX3N0YXJ0
V2hlblNjaGVkdWxlZDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRX
T1JLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRo
ZW50aWNhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0
aGVudGljYXRpb25DRi5jcHAKaW5kZXggNzg4M2U0NjkxMTVkZTMyNzk0YzFiMmE0N2RiYjUwMzA4
ZTEwOGVjOS4uZjg3NDVkNTQzYTkwOGM4MzMyY2E4YWYyZjlhMjE2ZTk5NjllZGJmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0
aW9uQ0YuY3BwCkBAIC01MywxMyArNTMsOCBAQCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aQogCiBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ0ZVUkxBdXRo
Q2hhbGxlbmdlUmVmIGNmQ2hhbGxlbmdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoZW50aWNhdGlvbkNs
aWVudCkKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
QmFzZShQcm90ZWN0aW9uU3BhY2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNl
KGNmQ2hhbGxlbmdlKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlZGVu
dGlhbChDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRlbnRpYWwoY2ZDaGFsbGVuZ2Up
KSwKLSNlbHNlCiAgICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UoY29yZShDRlVSTEF1
dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2ZDaGFsbGVuZ2UpKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3Bvc2Vk
Q3JlZGVudGlhbChjZkNoYWxsZW5nZSkpLAotI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJldmlvdXNGYWlsdXJlQ291bnQoY2ZD
aGFsbGVuZ2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDRlVSTFJlc3Bv
bnNlUmVmKUNGVVJMQXV0aENoYWxsZW5nZUdldEZhaWx1cmVSZXNwb25zZShjZkNoYWxsZW5nZSks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0
RXJyb3IoY2ZDaGFsbGVuZ2UpKQpAQCAtOTMsMTQgKzg4LDEwIEBAIENGVVJMQXV0aENoYWxsZW5n
ZVJlZiBjcmVhdGVDRihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNoYWxsZW5n
ZSkKIHsKICAgICAvLyBGSVhNRTogV2h5IG5vdCBjYWNoZSBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYg
aW4gbV9jZkNoYWxsZW5nZT8gRm91bmRhdGlvbiBjb3VudGVycGFydCBkb2VzIHRoYXQuCiAKLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgcmVzdWx0ID0gQ0ZV
UkxBdXRoQ2hhbGxlbmdlQ3JlYXRlKDAsIGNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCku
Y2ZTcGFjZSgpLCBjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLmNmQ3JlZGVudGlh
bCgpLAotI2Vsc2UKICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFs
ID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpKSk7
CiAgICAgUmV0YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNlUmVmPiBwcm90ZWN0aW9uU3BhY2Ug
PSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpKTsKIAog
ICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiByZXN1bHQgPSBDRlVSTEF1dGhDaGFsbGVuZ2VDcmVh
dGUoMCwgcHJvdGVjdGlvblNwYWNlLmdldCgpLCBjcmVkZW50aWFsLmdldCgpLAotI2VuZGlmCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUNoYWxsZW5nZS5wcmV2
aW91c0ZhaWx1cmVDb3VudCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvcmVDaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuY2ZVUkxSZXNwb25zZSgpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVDaGFsbGVuZ2UuZXJyb3Io
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tp
ZUphckNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2ll
SmFyQ0ZOZXQuY3BwCmluZGV4IDk0N2ZiM2JmOWJlMjZmYjI3ZGI2OTA0ZjBjZWRkM2U5ZTg3M2Q0
MTguLmRhNGEwNjRmNzVhMDc3NmVjZDM1ZmQ2NmVmOGI4MDY1MWE1MDUwNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3Bw
CkBAIC00Miw3ICs0Miw3IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShXSU4pIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPD0gMTA5MCkKKyNpZiBQTEFURk9STShXSU4pCiBlbnVtIHsKICAgICBDRkhUVFBD
b29raWVTdG9yYWdlQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWlu
ID0gMwogfTsKQEAgLTEwNSwxMyArMTA1LDkgQEAgc3RhdGljIFJldGFpblB0cjxDRkFycmF5UmVm
PiBjb3B5Q29va2llc0ZvclVSTFdpdGhGaXJzdFBhcnR5VVJMKGNvbnN0IE5ldHdvcmtTdG8KIHsK
ICAgICBib29sIHNlY3VyZSA9IHVybC5wcm90b2NvbElzKCJodHRwcyIpOwogCi0jaWYgUExBVEZP
Uk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTAwMCkKLSAgICByZXR1cm4gYWRvcHRDRihfQ0ZIVFRQQ29va2llU3RvcmFnZUNv
cHlDb29raWVzRm9yVVJMV2l0aE1haW5Eb2N1bWVudFVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2Uo
KS5nZXQoKSwgdXJsLmNyZWF0ZUNGVVJMKCkuZ2V0KCksIGZpcnN0UGFydHkuY3JlYXRlQ0ZVUkwo
KS5nZXQoKSwgc2VjdXJlKSk7Ci0jZWxzZQogICAgIC8vIF9DRkhUVFBDb29raWVTdG9yYWdlQ29w
eUNvb2tpZXNGb3JVUkxXaXRoTWFpbkRvY3VtZW50VVJMIGlzIG5vdCBhdmFpbGFibGUgb24gb3Ro
ZXIgcGxhdGZvcm1zLgogICAgIFVOVVNFRF9QQVJBTShmaXJzdFBhcnR5KTsKICAgICByZXR1cm4g
YWRvcHRDRihDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29r
aWVTdG9yYWdlKCkuZ2V0KCksIHVybC5jcmVhdGVDRlVSTCgpLmdldCgpLCBzZWN1cmUpKTsKLSNl
bmRpZgogfQogCiBzdGF0aWMgQ0ZBcnJheVJlZiBjcmVhdGVDb29raWVzKENGRGljdGlvbmFyeVJl
ZiBoZWFkZXJGaWVsZHMsIENGVVJMUmVmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCmlu
ZGV4IDU2MDkyNTk3YWFjY2QyNzczZjY5OGIzNWJkNGZjNzE1ODcyYzQwZTQuLjY5ZTMzMmMxM2Ix
NzBiYmIyOTkzZWE0YzFkNTc1ODg3YmU2ZWY1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNw
cApAQCAtMzMsNDIgKzMzLDE4IEBACiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAi
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2VsaWYgUExBVEZPUk0oV0lOKQorI2lmIFBMQVRG
T1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50
ZXJmYWNlLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlIDxDRk5ldHdv
cmsvQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZS5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogQ3JlZGVudGlhbCBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9y
YWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQogewotI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWxD
RiA9IGFkb3B0Q0Yod2tDb3B5Q3JlZGVudGlhbEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKHByb3Rl
Y3Rpb25TcGFjZS5jZlNwYWNlKCkpKTsKLSAgICByZXR1cm4gQ3JlZGVudGlhbChjcmVkZW50aWFs
Q0YuZ2V0KCkpOwotI2Vsc2UKICAgICBSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY+
IHByb3RlY3Rpb25TcGFjZUNGID0gYWRvcHRDRihjcmVhdGVDRihwcm90ZWN0aW9uU3BhY2UpKTsK
ICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFsQ0YgPSBhZG9wdENG
KHdrQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFnZShwcm90ZWN0aW9uU3BhY2VD
Ri5nZXQoKSkpOwogICAgIHJldHVybiBjb3JlKGNyZWRlbnRpYWxDRi5nZXQoKSk7Ci0jZW5kaWYK
LX0KLQotI2lmIFBMQVRGT1JNKElPUykKLXZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNhdmVUb1Bl
cnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBj
b25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQotewotICAgIFJldGFpblB0cjxDRlVSTENyZWRl
bnRpYWxTdG9yYWdlUmVmPiBzdG9yYWdlQ0YgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbFN0b3Jh
Z2VDcmVhdGUoMCkpOwotCi0gICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBDcmVk
ZW50aWFsUGVyc2lzdGVuY2VOb25lKSB7Ci0gICAgICAgIENyZWRlbnRpYWwgc2Vzc2lvbkNyZWRl
bnRpYWwoY3JlZGVudGlhbCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbik7Ci0gICAg
ICAgIENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VTZXREZWZhdWx0Q3JlZGVudGlhbEZvclByb3RlY3Rp
b25TcGFjZShzdG9yYWdlQ0YuZ2V0KCksIHNlc3Npb25DcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgp
LCBwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgQ0ZVUkxD
cmVkZW50aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0
b3JhZ2VDRi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgcHJvdGVjdGlvblNwYWNl
LmNmU3BhY2UoKSk7CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCmlu
ZGV4IDE3MDNjYzkxZjY4YjJhNWU2NGY4NzkyM2NlNmZiYTFkMjdkZDI0MWQuLjFiNGFkNzMwNjZj
NzcxOGEwY2E1MTQ1MDBlZWQ0ZjdjNGQ5MTQ0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCkBAIC02MSwxNiArNjEsMTEgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIENGRXJyb3JSZWYgY2ZFcnJvcigpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIENGRXJyb3JSZWYoKSBjb25zdDsKIAotI2lmIFVT
RShDRk5FVFdPUkspCi0jaWYgUExBVEZPUk0oV0lOKQorI2lmIFVTRShDRk5FVFdPUkspICYmIFBM
QVRGT1JNKFdJTikKICAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQg
ZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxp
emVkRGVzY3JpcHRpb24sIENGRGF0YVJlZiBjZXJ0aWZpY2F0ZSk7CiAgICAgUENDRVJUX0NPTlRF
WFQgY2VydGlmaWNhdGUoKSBjb25zdDsKICAgICB2b2lkIHNldENlcnRpZmljYXRlKENGRGF0YVJl
Zik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUVycm9yKENGU3RyZWFtRXJyb3IgZXJyb3IpOwotICAg
IENGU3RyZWFtRXJyb3IgY2ZTdHJlYW1FcnJvcigpIGNvbnN0OwotICAgIG9wZXJhdG9yIENGU3Ry
ZWFtRXJyb3IoKSBjb25zdDsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VC
Q09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvcihOU0Vycm9yICopOwpAQCAtODgsOSArODMsNiBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9kYXRhSXNVcFRvRGF0ZTsKICNpZiBVU0UoQ0ZORVRXT1JLKQog
ICAgIG11dGFibGUgUmV0YWluUHRyPENGRXJyb3JSZWY+IG1fcGxhdGZvcm1FcnJvcjsKLSNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBtdXRhYmxlIFJldGFpblB0cjxOU0Vycm9yPiBtX3BsYXRmb3Jt
TlNFcnJvcjsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikKICAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBtX2NlcnRpZmljYXRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggMTMxZmJiMDQ2MTE3
MDZmNjRkODUwYTFjNTBlMDVlMTRhMmM2ZTEzMy4uYTQ3Yjg5ODJkNTZlY2U0NjNmNDVjZWQwZTk0
MGZhNDY2MjNiYjJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMTc3LDUyICsxNzcsNiBAQCBSZXNvdXJj
ZUVycm9yOjpvcGVyYXRvciBDRkVycm9yUmVmKCkgY29uc3QKICAgICByZXR1cm4gY2ZFcnJvcigp
OwogfQogCi0vLyBGSVhNRTogT25jZSA8cmRhcjovL3Byb2JsZW0vNTA1MDg0MT4gaXMgZml4ZWQg
d2UgY2FuIHJlbW92ZSB0aGlzIGNvbnN0cnVjdG9yLgotUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VF
cnJvcihDRlN0cmVhbUVycm9yIGVycm9yKQotICAgIDogbV9kYXRhSXNVcFRvRGF0ZSh0cnVlKQot
ewotICAgIG1faXNOdWxsID0gZmFsc2U7Ci0gICAgbV9lcnJvckNvZGUgPSBlcnJvci5lcnJvcjsK
LQotICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKLSAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluUE9TSVg6Ci0gICAgICAg
IG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2Uga0NGU3RyZWFtRXJyb3JEb21haW5NYWNPU1N0YXR1czoKLSAgICAgICAgbV9kb21haW4gPSAi
TlNPU1N0YXR1c0Vycm9yRG9tYWluIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1DRlN0
cmVhbUVycm9yIFJlc291cmNlRXJyb3I6OmNmU3RyZWFtRXJyb3IoKSBjb25zdAotewotICAgIGxh
enlJbml0KCk7Ci0KLSAgICBDRlN0cmVhbUVycm9yIHJlc3VsdDsKLSAgICByZXN1bHQuZXJyb3Ig
PSBtX2Vycm9yQ29kZTsKLQotICAgIGlmIChtX2RvbWFpbiA9PSAiTlNDdXN0b21FcnJvckRvbWFp
biIpCi0gICAgICAgIHJlc3VsdC5kb21haW4gPSBrQ0ZTdHJlYW1FcnJvckRvbWFpbkN1c3RvbTsK
LSAgICBlbHNlIGlmIChtX2RvbWFpbiA9PSAiTlNQT1NJWEVycm9yRG9tYWluIikKLSAgICAgICAg
cmVzdWx0LmRvbWFpbiA9IGtDRlN0cmVhbUVycm9yRG9tYWluUE9TSVg7Ci0gICAgZWxzZSBpZiAo
bV9kb21haW4gPT0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiIpCi0gICAgICAgIHJlc3VsdC5kb21h
aW4gPSBrQ0ZTdHJlYW1FcnJvckRvbWFpbk1hY09TU3RhdHVzOwotICAgIGVsc2UgewotICAgICAg
ICByZXN1bHQuZG9tYWluID0ga0NGU3RyZWFtRXJyb3JEb21haW5DdXN0b207Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVJl
c291cmNlRXJyb3I6Om9wZXJhdG9yIENGU3RyZWFtRXJyb3IoKSBjb25zdAotewotICAgIHJldHVy
biBjZlN0cmVhbUVycm9yKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIFVTRShDRk5FVFdPUkspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAppbmRleCA1YzE0MjA3ZDQxYWEz
NmY3OTBiZWVjN2MzM2Y0N2JmMmE3YzdkMjUxLi41ZGYxZDAwZDYzZWRlOWNjMmEyNDJmMWQyYTQy
NzU0Nzc3MmNkNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAgLTUzLDE2ICs1Myw2IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oIgotI2luY2x1ZGUgIldlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UuaCIKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2luY2x1ZGUgIldlYkNvcmVV
UkxSZXNwb25zZS5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb25Qcml2Lmg+
Ci0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdFByaXYuaD4KLSNlbmRpZgotI2VuZGlm
Ci0KICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dl
YktpdFN5c3RlbUludGVyZmFjZS5oPgogI2luY2x1ZGUgPHByb2Nlc3MuaD4KQEAgLTIxOSwxNCAr
MjA5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wg
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShwcm9wZXJ0aWVzRGljdGlvbmFyeS5nZXQoKSwga0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVh
bVByb3BlcnRpZXMsIHN0cmVhbVByb3BlcnRpZXMpOwogICAgIENGUmVsZWFzZShzdHJlYW1Qcm9w
ZXJ0aWVzKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmIChkLT5tX3VzZXNBc3luY0Nh
bGxiYWNrcykKLSAgICAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUgPSBhZG9wdFJlZihuZXcg
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZSh0
aGlzKSk7Ci0gICAgZWxzZQotICAgICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0
UmVmKG5ldyBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUo
dGhpcykpOwotI2Vsc2UKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5l
dyBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUodGhpcykp
OwotI2VuZGlmCiAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUtPnNldHVwUmVxdWVzdChyZXF1
ZXN0LmdldCgpKTsKIAogICAgIENGVVJMQ29ubmVjdGlvbkNsaWVudF9WNiBjbGllbnQgPSBkLT5t
X2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+bWFrZUNvbm5lY3Rpb25DbGllbnQoKTsKQEAgLTM2OCwxMiAr
MzUxLDkgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhl
bnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2gKIAogICAgIGlmICghZC0+bV91c2VyLmlz
TnVsbCgpICYmICFkLT5tX3Bhc3MuaXNOdWxsKCkpIHsKICAgICAgICAgUmV0YWluUHRyPENGVVJM
Q3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihDRlVSTENyZWRlbnRpYWxDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZC0+bV91c2VyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IGQtPm1fcGFzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwLCBrQ0ZVUkxDcmVkZW50aWFsUGVy
c2lzdGVuY2VOb25lKSk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIENyZWRlbnRpYWwg
Y3JlZGVudGlhbCA9IENyZWRlbnRpYWwoY2ZDcmVkZW50aWFsLmdldCgpKTsKLSNlbHNlCisKICAg
ICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gY29yZShjZkNyZWRlbnRpYWwuZ2V0KCkpOwot
I2VuZGlmCi0gICAgICAgIAorCiAgICAgICAgIFVSTCB1cmxUb1N0b3JlOwogICAgICAgICBpZiAo
Y2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQogICAg
ICAgICAgICAgdXJsVG9TdG9yZSA9IGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKTsK
QEAgLTQwMiwxMiArMzgyLDggQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dv
cmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2gKICAgICAgICAgICAg
ICAgICAgICAgLy8gU3RvcmUgdGhlIGNyZWRlbnRpYWwgYmFjaywgcG9zc2libHkgYWRkaW5nIGl0
IGFzIGEgZGVmYXVsdCBmb3IgdGhpcyBkaXJlY3RvcnkuCiAgICAgICAgICAgICAgICAgICAgIGQt
Pm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChjcmVk
ZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIGNoYWxsZW5nZS5mYWlsdXJlUmVz
cG9uc2UoKS51cmwoKSk7CiAgICAgICAgICAgICAgICAgfQotI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgICAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0
aW9uLmdldCgpLCBjcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRo
Q2hhbGxlbmdlUmVmKCkpOwotI2Vsc2UKICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxD
cmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNyZWRlbnRpYWwp
KTsKICAgICAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29u
bmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hh
bGxlbmdlUmVmKCkpOwotI2VuZGlmCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ1NywyMCArNDMzLDEyIEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
Y2hhbGxlbmdlCiAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50
aWFsU3RvcmFnZSgpLnNldCh3ZWJDcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNl
KCksIHVybFRvU3RvcmUpOwogCiAgICAgICAgIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKLSNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwo
ZC0+bV9jb25uZWN0aW9uLmdldCgpLCB3ZWJDcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBjaGFs
bGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2Vsc2UKICAgICAgICAgICAgIFJldGFp
blB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0Yo
d2ViQ3JlZGVudGlhbCkpOwogICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlh
bChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNm
VVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRpZgogICAgICAgICB9CiAgICAgfSBlbHNlIGlm
IChkLT5tX2Nvbm5lY3Rpb24pIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgQ0ZVUkxD
b25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRpYWwu
Y2ZDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZWxz
ZQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBh
ZG9wdENGKGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNl
Q3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hh
bGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRpZgogICAgIH0KIAogICAgIGNs
ZWFyQXV0aGVudGljYXRpb24oKTsKQEAgLTYxMSwzMCArNTc5LDYgQEAgdm9pZCBSZXNvdXJjZUhh
bmRsZTo6cGxhdGZvcm1TZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzKQogICAgICAgICBDRlVS
TENvbm5lY3Rpb25SZXN1bWUoZC0+bV9jb25uZWN0aW9uLmdldCgpKTsKIH0KIAotI2lmIFBMQVRG
T1JNKENPQ09BKQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBw
YWlyKQotewotICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gcGFpci5ydW5Mb29wKCk7Ci0gICAg
aWYgKCFydW5Mb29wKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlVSTENvbm5lY3Rpb25TY2hl
ZHVsZVdpdGhSdW5Mb29wKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgcnVuTG9vcCwgcGFpci5tb2Rl
KCkpOwotICAgIGlmIChkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCkgewotICAgICAgICBDRlVSTENv
bm5lY3Rpb25TdGFydChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOwotICAgICAgICBkLT5tX3N0YXJ0
V2hlblNjaGVkdWxlZCA9IGZhbHNlOwotICAgIH0KLX0KLQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6
dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCi17Ci0gICAgQ0ZSdW5Mb29wUmVmIHJ1bkxv
b3AgPSBwYWlyLnJ1bkxvb3AoKTsKLSAgICBpZiAoIXJ1bkxvb3ApCi0gICAgICAgIHJldHVybjsK
LQotICAgIENGVVJMQ29ubmVjdGlvblVuc2NoZWR1bGVGcm9tUnVuTG9vcChkLT5tX2Nvbm5lY3Rp
b24uZ2V0KCksIHJ1bkxvb3AsIHBhaXIubW9kZSgpKTsKLX0KLSNlbmRpZgotCiBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIFJlc291cmNlSGFuZGxlOjpjdXJyZW50UmVxdWVzdCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGQtPm1fY3VycmVudFJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAppbmRleCA0ZjdhNzkyOWYxYjExZDg4NGQ4ZDA0
NzY4MjExMmFkYjY2ZTliYmQ1Li5hMWUxMzgwOWU0NzhiZWY0ZmVhZTczODBkMmFjZGNlYTRkYTEx
MjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZS5jcHAKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5j
bHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9STShX
SU4pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFj
ZS5oPgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA4YTVlZjA5MDRkM2E2MjVkMzU2MDdjNmE2NzdlZDZl
ZWZkOWE2Yzc5Li4xZDBkN2QwMjUyMDMzN2NkMjcwZWRiZGY0MTc4MjZiNTE4ZjY4OGUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1
ZXN0LmgKQEAgLTYzLDEyICs2Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQog
ICAgICAgICAKICNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAg
ICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0ICopOwotICAgICAg
ICB2b2lkIHVwZGF0ZU5TVVJMUmVxdWVzdCgpOwotICAgICAgICB2b2lkIGNsZWFyT3JVcGRhdGVO
U1VSTFJlcXVlc3QoKTsKLSNlbmRpZgotCiAgICAgICAgIFJlc291cmNlUmVxdWVzdChDRlVSTFJl
cXVlc3RSZWYgY2ZSZXF1ZXN0KQogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKCkK
ICAgICAgICAgICAgICwgbV9jZlJlcXVlc3QoY2ZSZXF1ZXN0KQpAQCAtODgsMTEgKzgyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGFwcGx5V2ViQXJjaGl2ZUhhY2tGb3JN
YWlsKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
ICAgICAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVy
biBtX2h0dHBCb2R5IHx8IG1fY2ZSZXF1ZXN0OyB9Ci0jZWxzZQogICAgICAgICBib29sIGVuY29k
aW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX2h0dHBCb2R5IHx8IG1f
bnNSZXF1ZXN0OyB9Ci0jZW5kaWYKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxSZXF1ZXN0
ICpuc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kpIGNvbnN0OwogCiAgICAgICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBDRlN0cmluZ1JlZiBpc1VzZXJJbml0aWF0ZWRLZXkoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNw
b25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3Bv
bnNlLmgKaW5kZXggYWNjMWQ0NTY5NzVjYzEyZjM5YTMzOGRiYjI0Mzk0MWU1N2MyNmQxYS4uYjc5
ZjdjNDBlZDBjOTRkMWNiZWM5ZTU2ODYzYWM5ZTU2NDFiOTg4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTUz
LDkgKzUzLDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9pc051bGwgPSAhY2ZSZXNwb25z
ZTsKICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVzb3Vy
Y2VSZXNwb25zZShOU1VSTFJlc3BvbnNlICopOwotI2VuZGlmCiAjZWxzZQogICAgIFJlc291cmNl
UmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkKICAgICAgICAgOiBtX2luaXRMZXZl
bChVbmluaXRpYWxpemVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCmluZGV4IDRiYWU3NGU4Mzgx
NmMxOTRlZGMxNTRkODRjMmRlOGY2ZGQxNmZjOTUuLjFhYTgzN2ZjNzJiNzgyM2VhN2JkZThjYjkw
NjM5OGZlYTc1ZDVhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKQEAgLTMzLDEwICszMyw2
IEBACiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVzcG9uc2VQcml2Lmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIENGU3RyaW5nUmVmIGNvbnN0IGNvbW1vbkhlYWRlckZpZWxkc1tdID0gewpAQCAtNDYsMTMg
KzQyLDkgQEAgc3RhdGljIENGU3RyaW5nUmVmIGNvbnN0IGNvbW1vbkhlYWRlckZpZWxkc1tdID0g
ewogQ0ZVUkxSZXNwb25zZVJlZiBSZXNvdXJjZVJlc3BvbnNlOjpjZlVSTFJlc3BvbnNlKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051bGwpIHsKLSNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICAgICAgbnNVUkxSZXNwb25zZSgpOwotI2Vsc2UKICAgICAgICAgUmV0YWlu
UHRyPENGVVJMUmVmPiB1cmwgPSBtX3VybC5jcmVhdGVDRlVSTCgpOwogICAgICAgICAvLyBGSVhN
RTogVGhpcyBjcmVhdGVzIGEgdmVyeSBpbmNvbXBsZXRlIENGVVJMUmVzcG9uc2UsIHdoaWNoIGRv
ZXMgbm90IGV2ZW4gaGF2ZSBhIHN0YXR1cyBjb2RlLgogICAgICAgICBtX2NmUmVzcG9uc2UgPSBh
ZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJsLmdldCgpLCBtX21pbWVUeXBlLnN0cmlu
ZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBtX3Rl
eHRFbmNvZGluZ05hbWUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMQ2Fj
aGVTdG9yYWdlQWxsb3dlZCkpOwotI2VuZGlmCiAgICAgfQogCiAgICAgcmV0dXJuIG1fY2ZSZXNw
b25zZS5nZXQoKTsKQEAgLTExNSw5ICsxMDcsNiBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBs
YXRmb3JtTGF6eUluaXQoSW5pdExldmVsIGluaXRMZXZlbCkKIAogQ2VydGlmaWNhdGVJbmZvIFJl
c291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkgY29uc3QKIHsKLSNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKGFkb3B0Q0Yod2tDb3B5
TlNVUkxSZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4obnNVUkxSZXNwb25zZSgpKSkpOwotI2VuZGlm
CiAgICAgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAppbmRleCBm
MmNkOTYzMmMyMGU2NTU3MGRhY2U5YjljMDkxMTA3NzZkNzZlMzE3Li45NDM0ZDNhN2ExYTUwYjU1
ZDU4ZDkwYzZlZGM1MmUyN2Q2MDk1OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmgKQEAgLTMwLDEwICszMCw2
IEBACiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZVUkxD
cmVkZW50aWFsKiBDRlVSTENyZWRlbnRpYWxSZWY7Ci0jZW5kaWYKLQogT0JKQ19DTEFTUyBOU1VS
TENyZWRlbnRpYWw7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDE4ICs0OCwxMiBAQCBw
dWJsaWM6CiAKICAgICBDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmLCBDcmVkZW50aWFsUGVy
c2lzdGVuY2UpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBleHBsaWNpdCBDcmVkZW50aWFs
KENGVVJMQ3JlZGVudGlhbFJlZik7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBDcmVkZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNFbXB0eSgpIGNvbnN0OwogCiAgICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1E
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9uc0NyZWRlbnRpYWwgJiYgZW5jb2RpbmdSZXF1aXJlc1Bs
YXRmb3JtRGF0YShtX25zQ3JlZGVudGlhbC5nZXQoKSk7IH0KIAotI2lmIFVTRShDRk5FVFdPUksp
Ci0gICAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNmQ3JlZGVudGlhbCgpIGNvbnN0OwotI2VuZGlmCiAg
ICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxDcmVkZW50aWFsICpuc0NyZWRlbnRpYWwoKSBjb25zdDsK
IAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBDcmVkZW50aWFsJiwgY29u
c3QgQ3JlZGVudGlhbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbQppbmRleCBkNjk2MWI2NjUyYTBmYWQyYjFk
ODZlMTg4NWFmNTI1MTI4OWEyMzcxLi43ZTA1YzQ2M2E1NWFlM2NiMjg5NjU2YmExMzFkOWUyMjQw
YzAwNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0NyZWRlbnRpYWxDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbQpAQCAtMjYsMTMgKzI2LDYgQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiQ3JlZGVudGlhbENvY29hLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotQGludGVyZmFjZSBOU1VSTENyZWRlbnRpYWwgKFdlYkRldGFpbHMpCi0tIChpZClfaW5pdFdp
dGhDRlVSTENyZWRlbnRpYWw6KENGVVJMQ3JlZGVudGlhbFJlZiljcmVkZW50aWFsOwotLSAoQ0ZV
UkxDcmVkZW50aWFsUmVmKSBfQ0ZVUkxDcmVkZW50aWFsOwotQGVuZAotI2VuZGlmCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHRvTlNV
UkxDcmVkZW50aWFsUGVyc2lzdGVuY2UoQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNl
KQpAQCAtODQsMjYgKzc3LDEyIEBAIENyZWRlbnRpYWw6OkNyZWRlbnRpYWwoY29uc3QgQ3JlZGVu
dGlhbCYgb3JpZ2luYWwsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0CiAgICAgfQogfQog
Ci0jaWYgVVNFKENGTkVUV09SSykKLUNyZWRlbnRpYWw6OkNyZWRlbnRpYWwoQ0ZVUkxDcmVkZW50
aWFsUmVmIGNyZWRlbnRpYWwpCi0gICAgOiBDcmVkZW50aWFsKGFkb3B0TlMoW1tOU1VSTENyZWRl
bnRpYWwgYWxsb2NdIF9pbml0V2l0aENGVVJMQ3JlZGVudGlhbDpjcmVkZW50aWFsXSkuZ2V0KCkp
Ci17Ci19Ci0jZW5kaWYKLQogQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChOU1VSTENyZWRlbnRpYWwg
KmNyZWRlbnRpYWwpCiAgICAgOiBDcmVkZW50aWFsQmFzZShjcmVkZW50aWFsLnVzZXIsIGNyZWRl
bnRpYWwucGFzc3dvcmQsIHRvQ3JlZGVudGlhbFBlcnNpc3RlbmNlKGNyZWRlbnRpYWwucGVyc2lz
dGVuY2UpKQogICAgICwgbV9uc0NyZWRlbnRpYWwoY3JlZGVudGlhbCkKIHsKIH0KIAotI2lmIFVT
RShDRk5FVFdPUkspCi1DRlVSTENyZWRlbnRpYWxSZWYgQ3JlZGVudGlhbDo6Y2ZDcmVkZW50aWFs
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gW25zQ3JlZGVudGlhbCgpIF9DRlVSTENyZWRlbnRpYWxd
OwotfQotI2VuZGlmCi0KIE5TVVJMQ3JlZGVudGlhbCAqQ3JlZGVudGlhbDo6bnNDcmVkZW50aWFs
KCkgY29uc3QKIHsKICAgICBpZiAobV9uc0NyZWRlbnRpYWwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29h
LmgKaW5kZXggNzQ4ODJkN2E4OGI3ODMxYjQxNGY5MGRmNzFkMTVkODkyNDRlMjE1Mi4uYjg2YWIw
M2Q0ZmYzMjM1MzQwM2ZmMDdmYWE4MTgxZTUyOTgwZjdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29j
b2EuaApAQCAtMjksMTAgKzI5LDYgQEAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VCYXNlLmgi
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLXR5cGVk
ZWYgc3RydWN0IF9DRlVSTFByb3RlY3Rpb25TcGFjZSogQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY7
Ci0jZW5kaWYKLQogT0JKQ19DTEFTUyBOU1VSTFByb3RlY3Rpb25TcGFjZTsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDcsOSArNDMsNiBAQCBwdWJsaWM6CiAKICAgICBQcm90ZWN0aW9uU3Bh
Y2UoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIGRlbGV0ZWRWYWx1ZSkgOiBQcm90ZWN0
aW9uU3BhY2VCYXNlKGRlbGV0ZWRWYWx1ZSkgeyB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAg
IGV4cGxpY2l0IFByb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZik7Ci0jZW5k
aWYKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBQcm90ZWN0aW9uU3BhY2UoTlNVUkxQcm90
ZWN0aW9uU3BhY2UgKik7CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBhLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGIpOwpAQCAtNTgsOSAr
NTEsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlY2VpdmVzQ3JlZGVu
dGlhbFNlY3VyZWx5KCkgY29uc3Q7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJMUHJv
dGVjdGlvblNwYWNlUmVmIGNmU3BhY2UoKSBjb25zdDsKLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQ
T1JUIE5TVVJMUHJvdGVjdGlvblNwYWNlICpuc1NwYWNlKCkgY29uc3Q7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rp
b25TcGFjZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Q
cm90ZWN0aW9uU3BhY2VDb2NvYS5tbQppbmRleCBhZjRjNGUwNTc2OGMwOGY2M2I2ZGEwZGE5OTkz
NDc4NWExM2ZiOGEzLi5kYjFmYjUxYmY5OTAyN2JjMmYzNTMwYTVkNTE4YjBmZjdiNzg2MWJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rp
b25TcGFjZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0KQEAgLTI2LDIyICsyNiw4IEBACiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIlByb3RlY3Rpb25TcGFjZUNvY29hLmgiCiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotQGludGVyZmFjZSBOU1VSTFByb3RlY3Rpb25TcGFjZSAoV2ViRGV0YWlscykKLS0g
KENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKSBfQ0ZVUkxQcm90ZWN0aW9uU3BhY2U7Ci0tIChpZClf
aW5pdFdpdGhDRlVSTFByb3RlY3Rpb25TcGFjZTooQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpY2ZQ
cm90U3BhY2U7Ci1AZW5kCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNF
KENGTkVUV09SSykKLVByb3RlY3Rpb25TcGFjZTo6UHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVj
dGlvblNwYWNlUmVmIHNwYWNlKQotICAgIDogUHJvdGVjdGlvblNwYWNlKGFkb3B0TlMoW1tOU1VS
TFByb3RlY3Rpb25TcGFjZSBhbGxvY10gX2luaXRXaXRoQ0ZVUkxQcm90ZWN0aW9uU3BhY2U6c3Bh
Y2VdKS5nZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBzdGF0aWMgUHJvdGVjdGlvblNwYWNlU2VydmVy
VHlwZSB0eXBlKE5TVVJMUHJvdGVjdGlvblNwYWNlICpzcGFjZSkKIHsKICAgICBpZiAoW3NwYWNl
IGlzUHJveHldKSB7CkBAIC0xMDUsMTMgKzkxLDYgQEAgUHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0
aW9uU3BhY2UoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKnNwYWNlKQogICAgIG1fbnNTcGFjZSA9IHNw
YWNlOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJMUHJvdGVjdGlvblNwYWNlUmVmIFBy
b3RlY3Rpb25TcGFjZTo6Y2ZTcGFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFtuc1NwYWNlKCkg
X0NGVVJMUHJvdGVjdGlvblNwYWNlXTsKLX0KLSNlbmRpZgotCiBOU1VSTFByb3RlY3Rpb25TcGFj
ZSAqUHJvdGVjdGlvblNwYWNlOjpuc1NwYWNlKCkgY29uc3QKIHsKICAgICBpZiAobV9uc1NwYWNl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNv
dXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggM2IxYjBhMmY4NzQ3NDdiMzhhMmM4Mzgw
ZmI2NTU5ODZiZGViOWVjYy4uOWY1ZDAyYWI2NWJjOGNhNDMyYzgyNDI4NGU4YmRjMDFhYjdhMzk1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNv
dXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBAIC01MywxNSArNTMsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBOU1VSTFJlcXVlc3QgKlJlc291cmNlUmVxdWVzdDo6bnNVUkxSZXF1ZXN0
KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNvbnN0CiB7CiAgICAgdXBkYXRlUGxh
dGZvcm1SZXF1ZXN0KGJvZHlQb2xpY3kpOwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgaWYgKCFt
X25zUmVxdWVzdCkKLSAgICAgICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlcXVlc3QqPih0aGlzKS0+
dXBkYXRlTlNVUkxSZXF1ZXN0KCk7Ci0jZW5kaWYKICAgICByZXR1cm4gW1ttX25zUmVxdWVzdC5n
ZXQoKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiBD
RlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVlc3QoSFRUUEJvZHlVcGRh
dGVQb2xpY3kgYm9keVBvbGljeSkgY29uc3QKIHsKICAgICByZXR1cm4gW25zVVJMUmVxdWVzdChi
b2R5UG9saWN5KSBfQ0ZVUkxSZXF1ZXN0XTsKQEAgLTIyMiw4ICsyMTYsNiBAQCB2b2lkIFJlc291
cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9y
YWdlU2Vzc2lvbikKICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMod2tDb3B5UmVxdWVzdFdpdGhT
dG9yYWdlU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbiwgbV9uc1JlcXVlc3QuZ2V0KCkpKTsKIH0KIAot
I2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9RdWlja0xvb2suaAppbmRleCAwZDdlODI1ZWYyYjExODg2YjM4ZGJiM2NiOTNlMDAw
YjhiZDJlZWU1Li5kMTNmY2ZjZWNlNTYzMzUxNTA5M2QyMTAyMjk0NzhkMmQ5MzlkNjVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaApAQCAt
NDQsMTEgKzQ0LDYgQEAgT0JKQ19DTEFTUyBOU1VSTFJlcXVlc3Q7CiBPQkpDX0NMQVNTIE5TVVJM
UmVzcG9uc2U7CiBPQkpDX0NMQVNTIFFMUHJldmlld0NvbnZlcnRlcjsKIAotI2lmIFVTRShDRk5F
VFdPUkspCi10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxSZXNwb25zZSogQ0ZVUkxSZXNwb25zZVJlZjsK
LXR5cGVkZWYgc3RydWN0IF9DRlVSTENvbm5lY3Rpb24qIENGVVJMQ29ubmVjdGlvblJlZjsKLSNl
bmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFF1aWNrTG9va0hhbmRsZUNsaWVu
dDsKQEAgLTgyLDkgKzc3LDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIHNob3VsZENyZWF0ZUZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJjZUhhbmRsZSos
IE5TVVJMQ29ubmVjdGlvbiAqLCBOU1VSTFJlc3BvbnNlICosIGlkIGRlbGVnYXRlKTsKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxl
PiBjcmVhdGUoUmVzb3VyY2VIYW5kbGUqLCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUqLCBDRlVSTFJlc3BvbnNlUmVmKTsKLSNlbmRpZgogICAgIC8vIEZJ
WE1FOiBVc2Ugb2YgUmVzb3VyY2VMb2FkZXIgaGVyZSBpcyBhIHBsYXRmb3JtIHZpb2xhdGlvbi4K
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRs
ZT4gY3JlYXRlKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCkBA
IC05Niw5ICs4OCw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZhaWwo
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UoKTsKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSgpOwotI2Vu
ZGlmCiAKICAgICB2b2lkIHNldENsaWVudChQYXNzUmVmUHRyPFF1aWNrTG9va0hhbmRsZUNsaWVu
dD4gY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQppbmRleCAxN2VkODY0NmE1OTQ0YTBm
MDFlZDU2ODcwOTdkOTdjYWM3MjA4NGY0Li5kZTA0MDRlMjAyNTljZTcxMWY4ODZlNjFkNzlkOGYw
NTUzMThiMzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
UXVpY2tMb29rLm1tCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbXBvcnQgIkZpbGVTeXN0ZW1JT1Mu
aCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk5TRmlsZU1hbmFnZXJTUEkuaCIKLSNp
bXBvcnQgIlF1aWNrTG9va1NvZnRMaW5rLmgiCiAjaW1wb3J0ICJSZXNvdXJjZUVycm9yLmgiCiAj
aW1wb3J0ICJSZXNvdXJjZUhhbmRsZS5oIgogI2ltcG9ydCAiUmVzb3VyY2VMb2FkZXIuaCIKICNp
bXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oIgogI2ltcG9ydCAiU3luY2hyb25v
dXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJXZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb3JlVVJMUmVzcG9u
c2VJT1MuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CkBAIC00NiwxNCArNDYsNyBAQAogI2ltcG9ydCA8d3RmL1ZlY3Rv
ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvbi5oPgotCi1AaW50ZXJmYWNlIE5T
VVJMUmVzcG9uc2UgKFF1aWNrTG9va0RldGFpbHMpCi0rKE5TVVJMUmVzcG9uc2UgKilfcmVzcG9u
c2VXaXRoQ0ZVUkxSZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNwb25zZTsKLS0oQ0ZVUkxS
ZXNwb25zZVJlZilfQ0ZVUkxSZXNwb25zZTsKLUBlbmQKLSNlbmRpZgorI2ltcG9ydCAiUXVpY2tM
b29rU29mdExpbmsuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE5Miw4MyAr
MTg1LDcgQEAgY29uc3QgY2hhciogV2ViQ29yZTo6UUxQcmV2aWV3UHJvdG9jb2woKQogICAgIHJl
dHVybiBwcmV2aWV3UHJvdG9jb2wuZ2V0KCkuZGF0YSgpOwogfQogCi0jaWYgVVNFKENGTkVUV09S
SykKLS8vIFRoZSB3YXkgUXVpY2tMb29rIHdvcmtzIGlzIHdlIHBhc3MgaXQgYW4gTlNVUkxDb25u
ZWN0aW9uRGVsZWdhdGUgY2FsbGJhY2sgb2JqZWN0IGF0IGNyZWF0aW9uCi0vLyB0aW1lLiBUaGVu
IHdlIHBhc3MgaXQgYWxsIHRoZSBkYXRhIGFzIHdlIHJlY2VpdmUgaXQuIE9uY2Ugd2UndmUgZG93
bmxvYWRlZCB0aGUgZnVsbCBVUkwsCi0vLyBRdWlja0xvb2sgdHVybnMgYXJvdW5kIGFuZCBzZW5k
IHVzLCB0aHJvdWdoIHRoaXMgZGVsZWdhdGUsIHRoZSBIVE1MIHZlcnNpb24gb2YgdGhlIGZpbGUg
d2hpY2ggd2UKLS8vIHBhc3Mgb24gdG8gV2ViQ29yZS4gVGhlIGZsYWcgbV9maW5pc2hlZExvYWRp
bmdEYXRhSW50b0NvbnZlcnRlciBpbiBRdWlja0xvb2tIYW5kbGUgZGVjaWRlcwotLy8gd2hldGhl
ciB0byBwYXNzIHRoZSBkYXRhIHRvIFF1aWNrTG9vayBvciBXZWJDb3JlLgotLy8KLS8vIFRoaXMg
d29ya3MgZmluZSB3aGVuIHVzaW5nIE5TIEFQSXMsIGJ1dCB3aGVuIHVzaW5nIENGTmV0d29yaywg
d2UgZG9uJ3QgaGF2ZSBhIE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlLgotLy8gU28gd2UgY3JlYXRl
IFdlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgYXMgYW4gaW50ZXJtZWRpYXRlIGRlbGVnYXRl
IG9iamVjdCBhbmQgcGFzcyBpdCB0bwotLy8gUUxQcmV2aWV3Q29udmVydGVyLiBUaGUgcHJveHkg
ZGVsZWdhdGUgdGhlbiBmb3J3YXJkcyB0aGUgbWVzc2FnZXMgb24gdG8gdGhlIENGTmV0d29yayBj
b2RlLgotQGludGVyZmFjZSBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIDogTlNPYmplY3Qg
PE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiB7Ci0gICAgUmVmUHRyPFN5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZT4gbV9jb25uZWN0aW9uRGVsZWdhdGU7Ci19
Ci0KLS0gKGlkKWluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRlOihTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqKWNvbm5lY3Rpb25EZWxlZ2F0ZTsKLS0gKHZv
aWQpY2xlYXJIYW5kbGU7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJRdWlja0xvb2tIYW5k
bGVBc0RlbGVnYXRlCi0tIChpZClpbml0V2l0aENvbm5lY3Rpb25EZWxlZ2F0ZTooU3luY2hyb25v
dXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKiljb25uZWN0aW9uRGVsZWdh
dGUKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGNvbm5lY3Rpb25EZWxlZ2F0
ZTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5l
Y3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhQXJyYXk6KE5TQXJyYXkgKilkYXRhQXJy
YXkKLXsKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rp
b25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tM
b29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGFBcnJheSgpIik7Ci0gICAgbV9jb25u
ZWN0aW9uRGVsZWdhdGUtPmRpZFJlY2VpdmVEYXRhQXJyYXkocmVpbnRlcnByZXRfY2FzdDxDRkFy
cmF5UmVmPihkYXRhQXJyYXkpKTsKLX0KLQotLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5l
Y3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhIGxlbmd0aFJl
Y2VpdmVkOihsb25nIGxvbmcpbGVuZ3RoUmVjZWl2ZWQKLXsKLSAgICBVTlVTRURfUEFSQU0oY29u
bmVjdGlvbik7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkUmVj
ZWl2ZURhdGEoKSAtIGRhdGEgbGVuZ3RoID0gJWxkIiwgKGxvbmcpW2RhdGEgbGVuZ3RoXSk7Ci0K
LSAgICAvLyBRdWlja0xvb2sgY29kZSBzZW5kcyB1cyBhIG5pbCBkYXRhIGF0IHRpbWVzLiBUaGUg
Y2hlY2sgYmVsb3cgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbgotICAgIC8vIFJlc291cmNlSGFu
ZGxlTWFjLmNwcCBhZGRlZCBmb3IgYSBkaWZmZXJlbnQgYnVnLgotICAgIGlmICghW2RhdGEgbGVu
Z3RoXSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRSZWNl
aXZlRGF0YShyZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oZGF0YSksIHN0YXRpY19jYXN0PGlu
dD4obGVuZ3RoUmVjZWl2ZWQpKTsKLX0KLQotLSAodm9pZCljb25uZWN0aW9uRGlkRmluaXNoTG9h
ZGluZzooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgotewotICAgIFVOVVNFRF9QQVJBTShj
b25uZWN0aW9uKTsKLSAgICBpZiAoIW1fY29ubmVjdGlvbkRlbGVnYXRlKQotICAgICAgICByZXR1
cm47Ci0gICAgTE9HKE5ldHdvcmssICJXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRG
aW5pc2hMb2FkaW5nKCkiKTsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+ZGlkRmluaXNoTG9h
ZGluZygpOwotfQotCi0tICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5l
Y3Rpb24gZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCi17Ci0gICAgVU5VU0VEX1BB
UkFNKGNvbm5lY3Rpb24pOwotICAgIGlmICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCi0gICAgICAg
IHJldHVybjsKLSAgICBMT0coTmV0d29yaywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6
OmRpZEZhaWwoKSIpOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRGYWlsKHJlaW50ZXJw
cmV0X2Nhc3Q8Q0ZFcnJvclJlZj4oZXJyb3IpKTsKLX0KLQotLSAodm9pZCljbGVhckhhbmRsZQot
ewotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlID0gbnVsbHB0cjsKLX0KLUBlbmQKLSNlbmRpZgot
Ci1AaW50ZXJmYWNlIFdlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgOiBOU09iamVj
dCA8TlNVUkxDb25uZWN0aW9uRGVsZWdhdGU+IHsKK0BpbnRlcmZhY2UgV2ViUmVzb3VyY2VMb2Fk
ZXJRdWlja0xvb2tEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZSwg
V2ViQ29yZVJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsKICAgICBSZWZQdHI8UmVzb3VyY2VMb2Fk
ZXI+IF9yZXNvdXJjZUxvYWRlcjsKICAgICBCT09MIF9oYXNTZW50RGlkUmVjZWl2ZVJlc3BvbnNl
OwogICAgIEJPT0wgX2hhc0ZhaWxlZDsKQEAgLTM1OSw3ICsyNzYsNyBAQCAtICh2b2lkKWNvbm5l
Y3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdpdGhFcnJvcjooTlNF
cnJvciAqKWVycgogICAgIF9yZXNvdXJjZUxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGVy
cm9yKSk7CiB9CiAKLS0gKHZvaWQpY2xlYXJIYW5kbGUKKy0gKHZvaWQpZGV0YWNoSGFuZGxlCiB7
CiAgICAgX3Jlc291cmNlTG9hZGVyID0gbnVsbHB0cjsKICAgICBfcXVpY2tMb29rSGFuZGxlID0g
bnVsbHB0cjsKQEAgLTQxNSwyNiArMzMyLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hh
bmRsZT4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwKICAg
ICByZXR1cm4gV1RGOjptb3ZlKHF1aWNrTG9va0hhbmRsZSk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMb29rSGFuZGxlOjpj
cmVhdGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlKiBjb25uZWN0aW9uRGVsZWdhdGUsIENGVVJMUmVzcG9uc2VS
ZWYgY2ZSZXNwb25zZSkKLXsKLSAgICBBU1NFUlRfQVJHKGhhbmRsZSwgaGFuZGxlKTsKLSAgICBp
ZiAoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5yZXF1ZXN0ZXIoKSAhPSBSZXNvdXJjZVJlcXVlc3Q6
OlJlcXVlc3Rlcjo6TWFpbiB8fCAhW1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgp
IGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAqKUNGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShjZlJl
c3BvbnNlKV0pCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgTlNVUkxSZXNwb25zZSAq
bnNSZXNwb25zZSA9IFtOU1VSTFJlc3BvbnNlIF9yZXNwb25zZVdpdGhDRlVSTFJlc3BvbnNlOmNm
UmVzcG9uc2VdOwotICAgIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgKmRlbGVnYXRlID0g
W1tbV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhDb25uZWN0aW9u
RGVsZWdhdGU6Y29ubmVjdGlvbkRlbGVnYXRlXSBhdXRvcmVsZWFzZV07Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gcXVpY2tMb29rSGFuZGxlKG5ldyBRdWlja0xvb2tIYW5k
bGUoW2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJv
ZHkpIFVSTF0sIG5pbCwgbnNSZXNwb25zZSwgZGVsZWdhdGUpKTsKLSAgICBoYW5kbGUtPmNsaWVu
dCgpLT5kaWRDcmVhdGVRdWlja0xvb2tIYW5kbGUoKnF1aWNrTG9va0hhbmRsZSk7Ci0gICAgcmV0
dXJuIFdURjo6bW92ZShxdWlja0xvb2tIYW5kbGUpOwotfQotCi1DRlVSTFJlc3BvbnNlUmVmIFF1
aWNrTG9va0hhbmRsZTo6Y2ZSZXNwb25zZSgpCi17Ci0gICAgcmV0dXJuIFttX25zUmVzcG9uc2Ug
X0NGVVJMUmVzcG9uc2VdOwotfQotI2VuZGlmCi0KIGJvb2wgUXVpY2tMb29rSGFuZGxlOjpzaG91
bGRDcmVhdGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIHJldHVy
biBbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6bWlt
ZVR5cGVdOwpAQCAtNTAwLDcgKzM5Nyw3IEBAIFF1aWNrTG9va0hhbmRsZTo6flF1aWNrTG9va0hh
bmRsZSgpCiAgICAgTE9HKE5ldHdvcmssICJRdWlja0xvb2tIYW5kbGU6On5RdWlja0xvb2tIYW5k
bGUoKSIpOwogICAgIG1fY29udmVydGVyID0gbnVsbHB0cjsKIAotICAgIFttX2RlbGVnYXRlIGNs
ZWFySGFuZGxlXTsKKyAgICBbbV9kZWxlZ2F0ZSBkZXRhY2hIYW5kbGVdOwogfQogCiBTdHJpbmcg
UXVpY2tMb29rSGFuZGxlOjpwcmV2aWV3RmlsZU5hbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VIYW5kbGVJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbQpp
bmRleCA2NjdiOWIxODY2NzQ0MGRlYmZlZmRhMTgwNWI4NGNiNTQ3ODRjNTc5Li5iNzI5ZjBmMzYy
MTlkYzQxZjNhZGViMzE5NDIxZmY5NjU3ZjQ4MWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbQpAQCAtMSwz
OSArMSBAQAotLy8KLS8vICBSZXNvdXJjZUhhbmRsZUlQaG9uZS5tbQotLy8gIFdlYkNvcmUKLS8v
Ci0vLyAgQ29weXJpZ2h0IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8K
LQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgi
Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZTb2NrZXRTdHJl
YW1Qcml2Lmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVxdWVzdFByaXZhdGUuaD4KLQot
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQ0ZNdXRh
YmxlRGljdGlvbmFyeVJlZiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlU1NMUHJvcGVydGllc0Zyb21O
U1VSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQotewotICAgIE5TU3Ry
aW5nICpob3N0ID0gcmVxdWVzdC51cmwoKS5ob3N0KCk7Ci0gICAgTlNBcnJheSAqY2VydEFycmF5
ID0gW05TVVJMUmVxdWVzdCBhbGxvd3NTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0Omhv
c3RdOwotICAgIEJPT0wgYWxsb3dzQW55Q2VydGlmaWNhdGUgPSBbTlNVUkxSZXF1ZXN0IGFsbG93
c0FueUhUVFBTQ2VydGlmaWNhdGVGb3JIb3N0Omhvc3RdOwotICAgIGlmICghY2VydEFycmF5ICYm
ICFhbGxvd3NBbnlDZXJ0aWZpY2F0ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBDRk11dGFi
bGVEaWN0aW9uYXJ5UmVmIHNzbFByb3BzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZU
eXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBpZiAoY2VydEFycmF5KQotICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzc2xQcm9wcywgX2tDRlN0cmVhbVNTTFRydXN0ZWRMZWFm
Q2VydGlmaWNhdGVzLCAoQ0ZUeXBlUmVmKSBjZXJ0QXJyYXkpOwotCi0gICAgaWYgKGFsbG93c0Fu
eUNlcnRpZmljYXRlKQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzc2xQcm9wcywga0NG
U3RyZWFtU1NMVmFsaWRhdGVzQ2VydGlmaWNhdGVDaGFpbiwga0NGQm9vbGVhbkZhbHNlKTsKLSAg
ICByZXR1cm4gc3NsUHJvcHM7Ci19Ci0KLX0KLQotI2VuZGlmCisvLyBSZW1vdmUgbWUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlUmVxdWVz
dElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlUmVx
dWVzdElPUy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I3ZGM2YmU2MzQ1Y2M1
Njk2YTFlYzZlYmQwMDMyZjMyMzRkZmIwMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNv
dXJjZVJlcXVlc3RJT1MubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5oIgotCi0jaWYgUExBVEZPUk0oSU9TKQotCi1A
aW50ZXJmYWNlIE5TVVJMUmVxdWVzdCAoV2ViTlNVUkxSZXF1ZXN0RGV0YWlscykKLS0gKENGVVJM
UmVxdWVzdFJlZilfQ0ZVUkxSZXF1ZXN0OwotLSAoaWQpX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0OihD
RlVSTFJlcXVlc3RSZWYpcmVxdWVzdDsKLUBlbmQKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0j
aWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VSZXF1ZXN0OjpSZXNvdXJjZVJlcXVlc3QoTlNV
UkxSZXF1ZXN0ICpuc1JlcXVlc3QpCi0gICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKCkKLSAgICAs
IG1fY2ZSZXF1ZXN0KFtuc1JlcXVlc3QgX0NGVVJMUmVxdWVzdF0pCi0gICAgLCBtX25zUmVxdWVz
dChuc1JlcXVlc3QpCi17Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVOU1VSTFJl
cXVlc3QoKQotewotICAgIGlmIChtX2NmUmVxdWVzdCkKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0
Om1fY2ZSZXF1ZXN0LmdldCgpXSk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpjbGVhck9y
VXBkYXRlTlNVUkxSZXF1ZXN0KCkKLXsKLSAgICAvLyBUaGVyZSBpcyBjbGllbnQgY29kZSB0aGF0
IGV4dGVuZHMgTlNVUkxSZXF1ZXN0IGFuZCBleHBlY3RzIHRvIGdldCBiYWNrLCBpbiB0aGUgZGVs
ZWdhdGUKLSAgICAvLyBjYWxsYmFja3MsIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIHRoYXQg
dGhleSBwYXNzZWQgaW50byBXZWJLaXQuIFRvIGtlZXAgdGhlbiBydW5uaW5nLCB3ZQotICAgIC8v
IGNyZWF0ZSBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSBhbmQgcmV0dXJuIHRoYXQuIFNlZSA8
cmRhcjovLzk4NDM1ODI+LgotICAgIC8vIEFsc28sIGRldmVsb3BlcnMgcmVhbGx5IHJlYWxseSB3
YW50IGFuIE5TTXV0YWJsZVVSTFJlcXVlc3Qgc28gdHJ5IHRvIGNyZWF0ZSBhbgotICAgIC8vIE5T
TXV0YWJsZVVSTFJlcXVlc3QgaW5zdGVhZCBvZiBOU1VSTFJlcXVlc3QuCi0gICAgc3RhdGljIENs
YXNzIG5zVVJMUmVxdWVzdENsYXNzID0gW05TVVJMUmVxdWVzdCBjbGFzc107Ci0gICAgc3RhdGlj
IENsYXNzIG5zTXV0YWJsZVVSTFJlcXVlc3RDbGFzcyA9IFtOU011dGFibGVVUkxSZXF1ZXN0IGNs
YXNzXTsKLSAgICBDbGFzcyByZXF1ZXN0Q2xhc3MgPSBbbV9uc1JlcXVlc3QuZ2V0KCkgY2xhc3Nd
OwotCi0gICAgaWYgKCFtX2NmUmVxdWVzdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHJl
cXVlc3RDbGFzcyAmJiByZXF1ZXN0Q2xhc3MgIT0gbnNVUkxSZXF1ZXN0Q2xhc3MgJiYgcmVxdWVz
dENsYXNzICE9IG5zTXV0YWJsZVVSTFJlcXVlc3RDbGFzcykKLSAgICAgICAgbV9uc1JlcXVlc3Qg
PSBhZG9wdE5TKFtbcmVxdWVzdENsYXNzIGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6bV9j
ZlJlcXVlc3QuZ2V0KCldKTsKLSAgICBlbHNlCi0gICAgICAgIG1fbnNSZXF1ZXN0ID0gbnVsbHB0
cjsKLX0KLQotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KaW5kZXggZTM4YjAz
ODdkZTA0NmM3YzAxNTc0M2Q3YmI3ZWEzNmU0MDkzODAyMi4uYTgyYTU1YzMzODgzN2Q3MGUyZTFh
NWIwMzJjNzJiYzkzMzY5OGUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KQEAgLTMyLDE4ICszMiwxMiBA
QAogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAj
aW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUHJvdGVjdGlvblNwYWNlLmg+CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotI2ltcG9ydCAiQ0ZOU1VSTENvbm5lY3Rpb25TUEkuaCIKLSNlbmRpZgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFjZSBXZWJDb3JlQXV0aGVudGljYXRpb25D
bGllbnRBc0NoYWxsZW5nZVNlbmRlciA6IE5TT2JqZWN0IDxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlU2VuZGVyPgogewogICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBtX2NsaWVudDsKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiBtX2NmQ2hhbGxlbmdl
OwotI2VuZGlmCiB9CiAtIChpZClpbml0V2l0aEF1dGhlbnRpY2F0aW9uQ2xpZW50OihBdXRoZW50
aWNhdGlvbkNsaWVudCopY2xpZW50OwogLSAoQXV0aGVudGljYXRpb25DbGllbnQqKWNsaWVudDsK
QEAgLTg5LDQ3ICs4MywxMCBAQCAtICh2b2lkKWNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlCiAgICAgICAgIG1fY2xp
ZW50LT5yZWNlaXZlZENhbmNlbGxhdGlvbihjb3JlKGNoYWxsZW5nZSkpOwogfQogCi0jaWYgVVNF
KENGTkVUV09SSykKLS0gKHZvaWQpc2V0Q0ZDaGFsbGVuZ2U6KENGVVJMQXV0aENoYWxsZW5nZVJl
ZiljaGFsbGVuZ2UKLXsKLSAgICBtX2NmQ2hhbGxlbmdlID0gY2hhbGxlbmdlOwotfQotCi0tIChD
RlVSTEF1dGhDaGFsbGVuZ2VSZWYpY2ZDaGFsbGVuZ2UKLXsKLSAgICByZXR1cm4gbV9jZkNoYWxs
ZW5nZTsKLX0KLSNlbmRpZgotCiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVT
RShDRk5FVFdPUkspCi0KLUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSAqbWFjQ2hhbGxlbmdlKQotewotICAgIFdlYkNvcmVBdXRoZW50aWNh
dGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyICpjaGFsbGVuZ2VTZW5kZXIgPSAoV2ViQ29yZUF1
dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIqKSBbbWFjQ2hhbGxlbmdlIHNlbmRl
cl07Ci0gICAgcmV0dXJuIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFtjaGFsbGVuZ2VTZW5kZXIg
Y2ZDaGFsbGVuZ2VdLCBbY2hhbGxlbmdlU2VuZGVyIGNsaWVudF0pOwotfQotCi1OU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlICptYWMoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNv
cmVDaGFsbGVuZ2UpCi17Ci0gICAgQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhDbGllbnQgPSBj
b3JlQ2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7Ci0gICAgUmV0YWluUHRyPFdlYkNv
cmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyPiBjaGFsbGVuZ2VTZW5kZXIg
PSBhZG9wdE5TKFtbV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIg
YWxsb2NdIGluaXRXaXRoQXV0aGVudGljYXRpb25DbGllbnQ6YXV0aENsaWVudF0pOwotICAgIFJl
dGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IGF1dGhDaGFsbGVuZ2UgPSBjb3JlQ2hhbGxl
bmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpOwotICAgIGlmICghYXV0aENoYWxsZW5nZSkKLSAg
ICAgICAgYXV0aENoYWxsZW5nZSA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZSkpOwot
ICAgIFtjaGFsbGVuZ2VTZW5kZXIuZ2V0KCkgc2V0Q0ZDaGFsbGVuZ2U6YXV0aENoYWxsZW5nZS5n
ZXQoKV07Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIHJldHVybiBbW05TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgX2NyZWF0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRm9yQ0ZBdXRoQ2hhbGxl
bmdlOmF1dGhDaGFsbGVuZ2UuZ2V0KCkgc2VuZGVyOmNoYWxsZW5nZVNlbmRlci5nZXQoKV0gYXV0
b3JlbGVhc2VdOwotI2Vsc2UKLSAgICByZXR1cm4gW1tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIF9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZUZvckNGQXV0aENoYWxsZW5nZTphdXRoQ2hhbGxl
bmdlLmdldCgpIHNlbmRlcjpjaGFsbGVuZ2VTZW5kZXIuZ2V0KCldIGF1dG9yZWxlYXNlXTsKLSNl
bmRpZgotfQotCi0jZWxzZQotCiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ3JlZGVu
dGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNvdW50LApAQCAtMjAz
LDYgKzE2MCw0IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSAqbWFjQ2hhbGxlbmdlKQogICAgIHJldHVybiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShtYWNDaGFsbGVuZ2UpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCmluZGV4IDE2ZDEwZTIwNzAwNDFhODdlNDYzY2Vm
MjQ3NGMzYzQ4OWRkM2ZhZWEuLjgyZDRmNWZlMjUyYThlY2JlZTc2YjI3YTQyMmY1MTczNzQyODBh
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tp
ZUphck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29r
aWVKYXJNYWMubW0KQEAgLTMxLDggKzMxLDYgQEAKICNpbXBvcnQgIk5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogCi0jaWYgIVVTRShD
Rk5FVFdPUkspCi0KICNpbXBvcnQgIkNvb2tpZS5oIgogI2ltcG9ydCAiQ29va2llU3RvcmFnZS5o
IgogI2ltcG9ydCAiVVJMLmgiCkBAIC0yMDAsMTIgKzE5OCw2IEBAIHZvaWQgZGVsZXRlQWxsQ29v
a2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pCiAgICAgd2tEZWxldGVB
bGxIVFRQQ29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSk7CiB9CiAKLX0KLQot
I2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIHN0YXRp
YyBOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbikKIHsKICAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNv
b2tpZVN0b3JhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KaW5kZXggOWViYzg1NGRjZGI0OGQ1
N2U4ZjgyODY5NDQyNGVjZDQ5YjczMzZlYy4uZjBhNGYzYWY3NjQxNWNiMjZjMjk0YmQ4MTM5MTNm
ZTIyMzNiMzc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KQEAgLTI2LDggKzI2LDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDcmVkZW50aWFsU3RvcmFnZS5oIgogCi0jaWYg
IVVTRShDRk5FVFdPUkspCi0KICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hYy5oIgogI2luY2x1
ZGUgIkNyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIKQEAgLTUyLDUg
KzUwLDMgQEAgdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6c2F2ZVRvUGVyc2lzdGVudFN0b3JhZ2Uo
Y29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW8KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCmluZGV4
IGRiODFjNjY4N2M0MjJlNWVjYmMzNjkwZTIzNDVhZjgyMjRhZDA2YzYuLmUyYzhiODk2YThhMjQ4
OTdiMTJmMDJlNDdlYjA1NTExZDliZDQwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaApAQCAtMjksOCArMjks
NiBAQAogI2lmbmRlZiBGb3JtRGF0YVN0cmVhbU1hY19oCiAjZGVmaW5lIEZvcm1EYXRhU3RyZWFt
TWFjX2gKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMUmVxdWVzdCogQ0ZVUkxSZXF1ZXN0UmVmOwpA
QCAtNDksNiArNDcsNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogCiAjZW5kaWYgLy8gRm9ybURhdGFT
dHJlYW1NYWNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvRm9ybURhdGFTdHJlYW1NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQppbmRleCBiNTczNGY5OGVkZmJmMTEzNWUxN2Q0Yjdl
YmMyOWNjNTVmZTA0MzUxLi43YjdkMWQzYTE1ZTM5NTc0M2M5NDQ5MTgzNGMzMjk4ZTIzY2ZhMThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0
YVN0cmVhbU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9G
b3JtRGF0YVN0cmVhbU1hYy5tbQpAQCAtMjksOCArMjksNiBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJGb3JtRGF0YVN0cmVhbU1hYy5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0K
ICNpbXBvcnQgIkZvcm1EYXRhLmgiCiAjaW1wb3J0ICJGb3JtRGF0YVN0cmVhbUNGTmV0LmgiCiAj
aW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNTIsNSArNTAsMyBAQCBGb3JtRGF0YSogaHR0
cEJvZHlGcm9tU3RyZWFtKE5TSW5wdXRTdHJlYW0gKnN0cmVhbSkKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQppbmRl
eCBmN2M4NjRjZTNiNTA5OWZlMDJmMTY5NjlhY2UzOTdmNjgyZTgzZGJhLi5mYjc3NjZmNTc2YjJm
YmMxNjM4MjVmZmE5MjI4YzMyNWY4ODA5ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KQEAgLTMxLDEwICsz
MSw2IEBACiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmg+CiAjaW1wb3J0IDxGb3Vu
ZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotI2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENGTkVUV09S
SykKLSNpbXBvcnQgPENGTmV0d29yay9DRlNvY2tldFN0cmVhbVByaXYuaD4KLSNlbmRpZgotCiBA
aW50ZXJmYWNlIE5TRXJyb3IgKFdlYkV4dHJhcykKIC0gKE5TU3RyaW5nICopX3dlYl9sb2NhbGl6
ZWREZXNjcmlwdGlvbjsKIEBlbmQKQEAgLTkxLDg1ICs4Nyw2IEBAIC0gKHZvaWQpZW5jb2RlV2l0
aENvZGVyOihOU0NvZGVyICopY29kZXIKIAogQGVuZAogCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKQot
c3RhdGljIE5TRXJyb3IgKk5TRXJyb3JGcm9tQ0ZFcnJvcihDRkVycm9yUmVmIGNmRXJyb3IsIE5T
VVJMICp1cmwpCi17Ci0gICAgQ0ZJbmRleCBlcnJDb2RlID0gQ0ZFcnJvckdldENvZGUoY2ZFcnJv
cik7Ci0gICAgaWYgKENGRXF1YWwoQ0ZFcnJvckdldERvbWFpbihjZkVycm9yKSwga0NGRXJyb3JE
b21haW5DRk5ldHdvcmspICYmIGVyckNvZGUgPD0ga0NGVVJMRXJyb3JVbmtub3duICYmIGVyckNv
ZGUgPiAtNDAwMCkgewotICAgICAgICAvLyBUaGlzIGlzIGFuIFVSTCBlcnJvciBhbmQgbmVlZHMg
dG8gYmUgdHJhbnNsYXRlZCB0byB0aGUgTlNVUkxFcnJvckRvbWFpbgotICAgICAgICBpZCBrZXlz
WzEwXSwgdmFsdWVzWzEwXTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHVzZXJJbmZvID0gQ0ZF
cnJvckNvcHlVc2VySW5mbyhjZkVycm9yKTsKLSAgICAgICAgTlNFcnJvciAqcmVzdWx0OwotICAg
ICAgICBOU0ludGVnZXIgY291bnQgPSAwOwotCi0gICAgICAgIGlmICh1cmwpIHsKLSAgICAgICAg
ICAgIGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxFcnJvcktleTsKLSAgICAgICAg
ICAgIHZhbHVlc1tjb3VudF0gPSB1cmw7Ci0gICAgICAgICAgICBjb3VudCArKzsKLQotICAgICAg
ICAgICAga2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5Owot
ICAgICAgICAgICAgdmFsdWVzW2NvdW50XSA9IFt1cmwgYWJzb2x1dGVTdHJpbmddOwotICAgICAg
ICAgICAgY291bnQgKys7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlk
KUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0
aW9uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNb
Y291bnRdID0gTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleTsKLSAgICAgICAgICAgIGNvdW50ICsr
OwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlH
ZXRWYWx1ZSh1c2VySW5mbywga0NGRXJyb3JMb2NhbGl6ZWRGYWlsdXJlUmVhc29uS2V5KTsKLSAg
ICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNM
b2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk7Ci0gICAgICAgICAgICBjb3VudCArKzsKLSAg
ICAgICAgfQotCi0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUodXNlckluZm8sIGtDRkVycm9yTG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uS2V5KTsKLSAg
ICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNM
b2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25FcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50ICsr
OwotICAgICAgICB9Ci0KLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICAg
ICAgaWYgKHVzZXJJbmZvICYmICh2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZh
bHVlKHVzZXJJbmZvLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNTTFBlZXJDZXJ0aWZpY2F0ZXMpKSAhPSBu
aWwpIHsKLSAgICAgICAgICAgIC8vIE5lZWQgdG8gdHJhbnNsYXRlIHRoZSBjZXJ0Ci0gICAgICAg
ICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvclBlZXJDZXJ0aWZpY2F0ZUNoYWluS2V5IjsKLSAg
ICAgICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNG
RGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBfa0NGU3RyZWFtUHJvcGVydHlTU0xDbGllbnRD
ZXJ0aWZpY2F0ZXMpOwotICAgICAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAg
ICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvckNsaWVudENlcnRpZmljYXRlQ2hhaW5LZXki
OwotICAgICAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBfa0NG
U3RyZWFtUHJvcGVydHlTU0xDbGllbnRDZXJ0aWZpY2F0ZVN0YXRlKTsKLSAgICAgICAgICAgIGlm
ICh2YWx1ZXNbY291bnRdKSB7Ci0gICAgICAgICAgICAgICAga2V5c1tjb3VudF0gPSBAIk5TRXJy
b3JDbGllbnRDZXJ0aWZpY2F0ZVN0YXRlS2V5IjsKLSAgICAgICAgICAgICAgICBjb3VudCArKzsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAot
Ci0gICAgICAgIGlmICh1c2VySW5mbyAmJiAodmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25h
cnlHZXRWYWx1ZSh1c2VySW5mbywga0NGU3RyZWFtUHJvcGVydHlTU0xQZWVyVHJ1c3QpKSAhPSBu
aWwpIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxQZWVy
VHJ1c3RFcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50Kys7Ci0gICAgICAgIH0KLQotICAgICAg
ICBrZXlzW2NvdW50XSA9IE5TVW5kZXJseWluZ0Vycm9yS2V5OwotICAgICAgICB2YWx1ZXNbY291
bnRdID0gKGlkKWNmRXJyb3I7Ci0gICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgIHJlc3VsdCA9
IFtXZWJDdXN0b21OU1VSTEVycm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNv
ZGU6KGVyckNvZGUgPT0ga0NGVVJMRXJyb3JVbmtub3duID8gKENGSW5kZXgpTlNVUkxFcnJvclVu
a25vd24gOiBlcnJDb2RlKSB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2Jq
ZWN0czp2YWx1ZXMgZm9yS2V5czprZXlzIGNvdW50OmNvdW50XV07Ci0gICAgICAgIGlmICh1c2Vy
SW5mbykKLSAgICAgICAgICAgIENGUmVsZWFzZSh1c2VySW5mbyk7Ci0gICAgICAgIHJldHVybiBy
ZXN1bHQ7Ci0gICAgfQotICAgIHJldHVybiAoTlNFcnJvciAqKWNmRXJyb3I7Ci19Ci0jZW5kaWYg
Ly8gVVNFKENGTkVUV09SSykKLQogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMTkzLDUzICsxMTAsNiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+
IGNyZWF0ZU5TRXJyb3JGcm9tUmVzb3VyY2VFcnJvckJhc2UoY29uc3QgUmVzb3VyY2VFcnJvcgog
ICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46cmVzb3Vy
Y2VFcnJvci5kb21haW4oKSBjb2RlOnJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCkgdXNlckluZm86
dXNlckluZm8uZ2V0KCldKTsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLVJlc291cmNlRXJy
b3I6OlJlc291cmNlRXJyb3IoTlNFcnJvciAqZXJyb3IpCi0gICAgOiBtX2RhdGFJc1VwVG9EYXRl
KGZhbHNlKQotICAgICwgbV9wbGF0Zm9ybUVycm9yKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZFcnJvclJl
Zj4oZXJyb3IpKQotewotICAgIG1faXNOdWxsID0gIWVycm9yOwotICAgIGlmICghbV9pc051bGwp
Ci0gICAgICAgIG1faXNUaW1lb3V0ID0gW2Vycm9yIGNvZGVdID09IE5TVVJMRXJyb3JUaW1lZE91
dDsKLX0KLQotTlNFcnJvciAqUmVzb3VyY2VFcnJvcjo6bnNFcnJvcigpIGNvbnN0Ci17Ci0gICAg
aWYgKG1faXNOdWxsKSB7Ci0gICAgICAgIEFTU0VSVCghbV9wbGF0Zm9ybUVycm9yKTsKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICBpZiAobV9wbGF0Zm9ybU5TRXJyb3IpCi0gICAg
ICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLQotICAgIGlmIChtX3BsYXRmb3Jt
RXJyb3IpIHsKLSAgICAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG1fcGxhdGZvcm1FcnJvci5nZXQo
KTsKLSAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gdXNlckluZm8gPSBhZG9wdENG
KENGRXJyb3JDb3B5VXNlckluZm8oZXJyb3IpKTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgICAg
IG1fcGxhdGZvcm1OU0Vycm9yID0gTlNFcnJvckZyb21DRkVycm9yKGVycm9yLCAoTlNVUkwgKilb
KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvLmdldCgpIG9iamVjdEZvcktleTooaWQpIGtDRlVSTEVy
cm9yRmFpbGluZ1VSTEVycm9yS2V5XSk7Ci0gICAgICAgIC8vIElmIE5TRXJyb3JGcm9tQ0ZFcnJv
ciBjcmVhdGVkIGEgbmV3IE5TRXJyb3IgZm9yIHVzLCByZXR1cm4gdGhhdC4KLSAgICAgICAgaWYg
KG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpICE9IChOU0Vycm9yICopZXJyb3IpCi0gICAgICAgICAg
ICByZXR1cm4gbV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCk7Ci0KLSAgICAgICAgLy8gT3RoZXJ3aXNl
IGZhbGwgdGhyb3VnaCB0byBjcmVhdGUgYSBuZXcgTlNFcnJvciBmcm9tIHRoZSBDRkVycm9yLgot
I2VuZGlmCi0gICAgICAgIG1fcGxhdGZvcm1OU0Vycm9yID0gYWRvcHROUyhbW05TRXJyb3IgYWxs
b2NdIGluaXRXaXRoRG9tYWluOihOU1N0cmluZyAqKUNGRXJyb3JHZXREb21haW4oZXJyb3IpIGNv
ZGU6Q0ZFcnJvckdldENvZGUoZXJyb3IpIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5m
by5nZXQoKV0pOwotICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCk7Ci0gICAg
fQotCi0gICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBjcmVhdGVOU0Vycm9yRnJvbVJlc291cmNlRXJy
b3JCYXNlKCp0aGlzKTsKLSAgICByZXR1cm4gbV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCk7Ci19Ci0K
LVJlc291cmNlRXJyb3I6Om9wZXJhdG9yIE5TRXJyb3IgKigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG5zRXJyb3IoKTsKLX0KLQotI2Vsc2UKLQogUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihO
U0Vycm9yICpuc0Vycm9yKQogICAgIDogbV9kYXRhSXNVcFRvRGF0ZShmYWxzZSkKICAgICAsIG1f
cGxhdGZvcm1FcnJvcihuc0Vycm9yKQpAQCAtMzEyLDYgKzE4Miw0IEBAIFJlc291cmNlRXJyb3I6
Om9wZXJhdG9yIENGRXJyb3JSZWYoKSBjb25zdAogICAgIHJldHVybiBjZkVycm9yKCk7CiB9CiAK
LSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRs
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFu
ZGxlTWFjLm1tCmluZGV4IGNkYmUwMjU4ZDQwMTIxZjMxNDBiNGY0Nzk0MGNmYjkzZmU3NzE5NjQu
LjYyZTc3YmI2MTI4ODczMmRhMjlhZWRkNzI2MmI0MDRhMTMwOTI1ODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFj
Lm1tCkBAIC01NywxNiArNTcsNiBAQAogI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW1w
b3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIF9faGFz
X2luY2x1ZGUoPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb25Qcml2Lmg+KQotI2ltcG9ydCA8Q0ZO
ZXR3b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4KLSNlbmRpZgotdHlwZWRlZiBzdHJ1Y3QgX0NG
VVJMQ29ubmVjdGlvbiogQ0ZVUkxDb25uZWN0aW9uUmVmOwotZXh0ZXJuICJDIiB7Ci1DRkRpY3Rp
b25hcnlSZWYgX0NGVVJMQ29ubmVjdGlvbkNvcHlUaW1pbmdEYXRhKENGVVJMQ29ubmVjdGlvblJl
Zik7Ci19Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogI2lmIFBMQVRGT1JNKElPUykKICNp
bXBvcnQgIkNGTmV0d29ya1NQSS5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
SU9TLmgiCkBAIC04OCw5ICs3OCw3IEBAIC0oaWQpX2luaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1
ZXN0ICopcmVxdWVzdCBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUgdXNlc0NhY2hlOihCCiBAZW5kCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLSNpZiAhVVNFKENGTkVUV09SSykKLSAgICAKKwog
c3RhdGljIHZvaWQgYXBwbHlCYXNpY0F1dGhvcml6YXRpb25IZWFkZXIoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogewogICAgIFN0cmluZyBh
dXRoZW50aWNhdGlvbkhlYWRlciA9ICJCYXNpYyAiICsgYmFzZTY0RW5jb2RlKFN0cmluZyhjcmVk
ZW50aWFsLnVzZXIoKSArICI6IiArIGNyZWRlbnRpYWwucGFzc3dvcmQoKSkudXRmOCgpKTsKQEAg
LTI2OSwxMiArMjU3LDYgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogICAgICAgICBb
Y29ubmVjdGlvbigpIHNldERlbGVnYXRlUXVldWU6b3BlcmF0aW9uUXVldWVGb3JBc3luY0NsaWVu
dHMoKV07CiAgICAgICAgIHNjaGVkdWxlZCA9IHRydWU7CiAgICAgfQotI2lmIFBMQVRGT1JNKElP
UykKLSAgICBlbHNlIHsKLSAgICAgICAgW2Nvbm5lY3Rpb24oKSBzY2hlZHVsZUluUnVuTG9vcDpX
ZWJUaHJlYWROU1J1bkxvb3AoKSBmb3JNb2RlOk5TRGVmYXVsdFJ1bkxvb3BNb2RlXTsKLSAgICAg
ICAgc2NoZWR1bGVkID0gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKIAogICAgIC8vIFN0YXJ0IHRoZSBj
b25uZWN0aW9uIGlmIHdlIGRpZCBzY2hlZHVsZSB3aXRoIGF0IGxlYXN0IG9uZSBydW5sb29wLgog
ICAgIC8vIFdlIGNhbid0IHN0YXJ0IHRoZSBjb25uZWN0aW9uIHVudGlsIHdlIGhhdmUgb25lIHJ1
bmxvb3Agc2NoZWR1bGVkLgpAQCAtMzE0LDggKzI5Niw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKICAgICAgICAgW2QtPm1fY29u
bmVjdGlvbiBzZXREZWZlcnNDYWxsYmFja3M6ZGVmZXJzXTsKIH0KIAotI2lmIFBMQVRGT1JNKE1B
QykKLQogdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQog
ewogICAgIE5TUnVuTG9vcCAqcnVuTG9vcCA9IHBhaXIubnNSdW5Mb29wKCk7CkBAIC0zMzQsOCAr
MzE0LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBh
aXIpCiAgICAgICAgIFtkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkgdW5zY2hlZHVsZUZyb21SdW5Mb29w
OnJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKilwYWlyLm1vZGUoKV07CiB9CiAKLSNlbmRpZgot
CiBpZCBSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKCFkLT5tX2RlbGVnYXRlKTsKQEAgLTcyNCwyNyArNzAy
LDE0IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoTlND
YWNoZWRVUkxSZXNwb25zZSAqcmVzcG9uc2UpCiAKICAgICBbKGlkKWRlbGVnYXRlKCkgY29udGlu
dWVXaWxsQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9Ci0gICAgCi0jZW5kaWYgLy8gIVVTRShD
Rk5FVFdPUkspCi0gICAgCisKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKIAotI2lmIFVTRShDRk5F
VFdPUkspCi0gICAgCi12b2lkIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0
YShDRlVSTENvbm5lY3Rpb25SZWYgY29ubmVjdGlvbiwgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1p
bmcpCi17Ci0gICAgY29weVRpbWluZ0RhdGEoKF9fYnJpZGdlIE5TRGljdGlvbmFyeSopYWRvcHRD
RihfQ0ZVUkxDb25uZWN0aW9uQ29weVRpbWluZ0RhdGEoY29ubmVjdGlvbikpLmdldCgpLCB0aW1p
bmcpOwotfQotICAgIAotI2Vsc2UKLSAgICAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmdldENvbm5l
Y3Rpb25UaW1pbmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgUmVzb3VyY2VMb2Fk
VGltaW5nJiB0aW1pbmcpCiB7CiAgICAgY29weVRpbWluZ0RhdGEoW2Nvbm5lY3Rpb24gX3RpbWlu
Z0RhdGFdLCB0aW1pbmcpOwogfQotICAgIAotI2VuZGlmCi0gICAgCisKICNlbmRpZiAvLyBFTkFC
TEUoV0VCX1RJTUlORykKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1t
CmluZGV4IDY5NGU1M2M0YTU3MzIyMjBkNDQ2MWRjMTBmNjBkZDk4NGFhODc5NmQuLmU3NzAyNDVk
ZmQ1MDFiMTRiMGU2MWMxMDc3YzcxYjMwODQxMmYxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KQEAg
LTM3LDI5ICszNyw2IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENG
TkVUV09SSykKLQotUmVzb3VyY2VSZXF1ZXN0OjpSZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0
ICpuc1JlcXVlc3QpCi0gICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKCkKLSAgICAsIG1fY2ZSZXF1
ZXN0KFtuc1JlcXVlc3QgX0NGVVJMUmVxdWVzdF0pCi0gICAgLCBtX25zUmVxdWVzdChuc1JlcXVl
c3QpCi17Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVOU1VSTFJlcXVlc3QoKQot
ewotICAgIGlmIChtX2NmUmVxdWVzdCkKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKFtb
TlNVUkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6bV9jZlJlcXVlc3QuZ2V0
KCldKTsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmFwcGx5V2ViQXJjaGl2ZUhhY2tGb3JN
YWlsKCkKLXsKLSAgICAvLyBIYWNrIGJlY2F1c2UgTWFpbCBjaGVja3MgZm9yIHRoaXMgcHJvcGVy
dHkgdG8gZGV0ZWN0IGRhdGEgLyBhcmNoaXZlIGxvYWRzCi0gICAgX0NGVVJMUmVxdWVzdFNldFBy
b3RvY29sUHJvcGVydHkoY2ZVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpLCBDRlNUUigi
V2ViRGF0YVJlcXVlc3QiKSwgQ0ZTVFIoIiIpKTsKLX0KLQotI2VuZGlmCi0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQppbmRleCA2ZmEwMGUyNDM1
ZTgzZTc5Zjk3ZDQzMDg2MmRiMGI0MWQzNjY1MzdiLi5jZGY3ODlkNjlhN2Y3ZjVmZDBmZWE5NjM1
NTdkNmQ3ZGMxNzliZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0KQEAgLTcxLDM2ICs3MSw2IEBA
IHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6aW5pdE5TVVJMUmVzcG9uc2UoKSBjb25zdAogICAgIFtt
X25zUmVzcG9uc2UuZ2V0KCkgX3NldE1JTUVUeXBlOihOU1N0cmluZyAqKW1fbWltZVR5cGVdOwog
fQogCi0jaWYgVVNFKENGTkVUV09SSykKLQotTlNVUkxSZXNwb25zZSAqUmVzb3VyY2VSZXNwb25z
ZTo6bnNVUkxSZXNwb25zZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX25zUmVzcG9uc2UgJiYgIW1f
Y2ZSZXNwb25zZSAmJiAhbV9pc051bGwpIHsKLSAgICAgICAgaW5pdE5TVVJMUmVzcG9uc2UoKTsK
LSAgICAgICAgbV9jZlJlc3BvbnNlID0gW21fbnNSZXNwb25zZS5nZXQoKSBfQ0ZVUkxSZXNwb25z
ZV07Ci0gICAgICAgIHJldHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7Ci0gICAgfQotCi0gICAgaWYg
KCFtX2NmUmVzcG9uc2UpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBpZiAoIW1fbnNSZXNw
b25zZSkKLSAgICAgICAgbV9uc1Jlc3BvbnNlID0gW05TVVJMUmVzcG9uc2UgX3Jlc3BvbnNlV2l0
aENGVVJMUmVzcG9uc2U6bV9jZlJlc3BvbnNlLmdldCgpXTsKLQotICAgIHJldHVybiBtX25zUmVz
cG9uc2UuZ2V0KCk7Ci19Ci0KLVJlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UoTlNV
UkxSZXNwb25zZSogbnNSZXNwb25zZSkKLSAgICA6IG1faW5pdExldmVsKFVuaW5pdGlhbGl6ZWQp
Ci0gICAgLCBtX3BsYXRmb3JtUmVzcG9uc2VJc1VwVG9EYXRlKHRydWUpCi0gICAgLCBtX2NmUmVz
cG9uc2UoW25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdKQotICAgICwgbV9uc1Jlc3BvbnNlKG5z
UmVzcG9uc2UpCi17Ci0gICAgbV9pc051bGwgPSAhbnNSZXNwb25zZTsKLX0KLQotI2Vsc2UKLQog
c3RhdGljIE5TU3RyaW5nKiBjb25zdCBjb21tb25IZWFkZXJGaWVsZHNbXSA9IHsKICAgICBAIkFn
ZSIsIEAiQ2FjaGUtQ29udHJvbCIsIEAiQ29udGVudC1UeXBlIiwgQCJEYXRlIiwgQCJFdGFnIiwg
QCJFeHBpcmVzIiwgQCJMYXN0LU1vZGlmaWVkIiwgQCJQcmFnbWEiCiB9OwpAQCAtMTg5LDcgKzE1
OSw1IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlCiAgICAgcmV0dXJuIGEubnNVUkxSZXNwb25z
ZSgpID09IGIubnNVUkxSZXNwb25zZSgpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tCmlu
ZGV4IDAxNDRiZDkzYTcwYTQ0OTg4ZTA1NmM4ZWI4OTg5NzQ5ZjE1YzJiNTguLjY1Zjc2ZGYxM2I5
YzhmOTY2NzhmZjg4ZWRmN2MzNjM3MWU5MzBlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50
Lm1tCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQuaCIKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzgsMTQgKzM2LDEwIEBAIHZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosCiAgICAgW2NoYWxsZW5nZS5z
ZW5kZXIoKSBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6Y2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07CiB9CiAKLSNpZiAh
VVNFKENGTkVUV09SSykKIFJlc291cmNlRXJyb3IgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OnBs
YXRmb3JtQmFkUmVzcG9uc2VFcnJvcigpCiB7CiAgICAgUmV0YWluUHRyPE5TRXJyb3I+IGVycm9y
ID0gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21h
aW4gY29kZTpOU1VSTEVycm9yQmFkU2VydmVyUmVzcG9uc2UgdXNlckluZm86bmlsXSk7CiAgICAg
cmV0dXJuIGVycm9yLmdldCgpOwogfQotI2VuZGlmCiAKIH0KLQotI2VuZGlmIC8vICFVU0UoQ0ZO
RVRXT1JLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oCmluZGV4IDRm
NDE1NWVhZmQ5NDViMWI4NjJkMjljZTg5NmRjYWRjZGExYzQyNjYuLjJmMTE2YWQ2YTMxMDI1MGE2
NzdjY2VhMTRmNzdkMjgxMGU2YThlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlLmgKQEAgLTI2LDE4ICsyNiwxOCBAQAogI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc0RlbGVnYXRlX2gKICNkZWZpbmUgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0
ZV9oCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UmVzb3VyY2VIYW5kbGU7CiB9CiAKLUBpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNE
ZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZT4geworQHByb3RvY29s
IFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRlCistICh2b2lkKWRldGFjaEhhbmRsZTsKK0Bl
bmQKKworQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIDogTlNPYmpl
Y3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlLCBXZWJDb3JlUmVzb3VyY2VMb2FkZXJEZWxlZ2F0
ZT4gewogICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiBtX2hhbmRsZTsKIH0KIC0gKGlkKWlu
aXRXaXRoSGFuZGxlOihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopaGFuZGxlOwotLSAodm9pZClk
ZXRhY2hIYW5kbGU7CiBAZW5kCiAKLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKICNlbmRpZiAv
LyBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdh
dGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc0RlbGVnYXRlLm1tCmluZGV4IGUxN2NiOWQyMGVkN2RiZDUxNzkzYzM2NGViMzJj
MTU4OTVlYmE1M2EuLjUyNGFmZTNmYTk3NjFmYWU3MGNkZDllNmM0ZWYwMWVhZGNjOTRiZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQpAQCAtMjYsOCArMjYs
NiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW1wb3J0
ICJMb2dnaW5nLmgiCkBAIC01NCw3ICs1Miw3IEBAIC0gKGlkKWluaXRXaXRoSGFuZGxlOihSZXNv
dXJjZUhhbmRsZSopaGFuZGxlCiAKIC0gKHZvaWQpZGV0YWNoSGFuZGxlCiB7Ci0gICAgbV9oYW5k
bGUgPSAwOworICAgIG1faGFuZGxlID0gbnVsbHB0cjsKIH0KIAogLSAoTlNVUkxSZXF1ZXN0ICop
Y29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiB3aWxsU2VuZFJlcXVlc3Q6
KE5TVVJMUmVxdWVzdCAqKW5ld1JlcXVlc3QgcmVkaXJlY3RSZXNwb25zZTooTlNVUkxSZXNwb25z
ZSAqKXJlZGlyZWN0UmVzcG9uc2UKQEAgLTI4OCw2ICsyODYsMyBAQCAtIChOU0NhY2hlZFVSTFJl
c3BvbnNlICopY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiB3aWxsQ2Fj
aGVSZXNwbwogfQogCiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUuaAppbmRleCBlNzQwYWE1OWJlZDYzYmFiOTA3NmYwNzkzYWIzZDAzZGUwMDJiMDUxLi5jNTdh
Y2FlMTQxOGMxMTZmY2Y3NzcwZjU4YWQ0YzkxYzgxZTQ4Y2MyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaApAQCAt
MjYsOCArMjYsNyBAQAogI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGVfaAogI2RlZmluZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGVfaAogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KKyNpbmNsdWRlICJXZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgiCiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2gu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTM1LDcgKzM0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiB9CiAKLUBpbnRlcmZhY2UgV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIDogTlNPYmplY3QgPE5T
VVJMQ29ubmVjdGlvbkRlbGVnYXRlPiB7CitAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxl
Z2F0ZSwgV2ViQ29yZVJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsKICAgICBXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSogbV9oYW5kbGU7CiAKICAgICAvLyBTeW5jaHJvbm91cyBkZWxlZ2F0ZXMgb24g
b3BlcmF0aW9uIHF1ZXVlIHdhaXQgdW50aWwgbWFpbiB0aHJlYWQgc2VuZHMgYW4gYXN5bmNocm9u
b3VzIHJlc3BvbnNlLgpAQCAtNDYsNyArNDUsNiBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIH0K
IAogLSAoaWQpaW5pdFdpdGhIYW5kbGU6KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiloYW5kbGU7
Ci0tICh2b2lkKWRldGFjaEhhbmRsZTsKIC0gKHZvaWQpY29udGludWVXaWxsU2VuZFJlcXVlc3Q6
KE5TVVJMUmVxdWVzdCAqKW5ld1JlcXVlc3Q7CiAtICh2b2lkKWNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCkBAIC01OSw1
ICs1Nyw0IEBAIGNsYXNzIFJlc291cmNlSGFuZGxlOwogCiBAZW5kCiAKLSNlbmRpZiAvLyAhVVNF
KENGTkVUV09SSykKICNlbmRpZiAvLyBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IDkzMzdkMTM0OTBhYjgwOWM3ODNlMTU1
OGNmYjc2MTBiYjgxYzE1OWIuLmMxZDYzMGI2YjNjNjE0ZGYzZDQyOWM5N2UwNTI4YjA3ODM5MGU4
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTI2LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRl
LmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW1wb3J0ICJMb2dnaW5n
LmgiCkBAIC0zNDUsNiArMzQzLDMgQEAgLSAoQk9PTCljb25uZWN0aW9uU2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2U6KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KIH0KIAogQGVuZAotCi0j
ZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQppbmRleCAwZmFiZjkz
OTg5MzZiMzEyOTM5MjIxMTBjOTcyNWFjYTQ2OTMyZGVlLi5jZDViYjQ0N2Q3YzQzYTllZjE3N2Jh
MmRhMjU2YjZkYmJlNTY2NzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCkBAIC0zMjUsNyArMzI1LDYg
QEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNw
b25zZSkKIH0KICNlbmRpZgogCi0jaWYgIVVTRShDRk5FVFdPUkspCiBOU1VSTFJlc3BvbnNlICpz
eW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KE5TVVJMQ29ubmVjdGlvbiAqY29u
bmVjdGlvbiwgTlNVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0LCBOU1VSTFJlc3BvbnNlICpyZWRpcmVj
dFJlc3BvbnNlKQogewogICAgIGlmIChyZWRpcmVjdFJlc3BvbnNlKQpAQCAtMzM5LDYgKzMzOCw1
IEBAIE5TVVJMUmVzcG9uc2UgKnN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3Nhcnko
TlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uCiAgICAgTlNEaWN0aW9uYXJ5ICpzeW50aGVzaXpl
ZFJlc3BvbnNlSGVhZGVyRmllbGRzID0gQHsgQCJMb2NhdGlvbiI6IFtbbmV3UmVxdWVzdCBVUkxd
IGFic29sdXRlU3RyaW5nXSwgQCJDYWNoZS1Db250cm9sIjogQCJuby1zdG9yZSIgfTsKICAgICBy
ZXR1cm4gW1tbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOltbY29ubmVjdGlv
biBjdXJyZW50UmVxdWVzdF0gVVJMXSBzdGF0dXNDb2RlOjMwMiBIVFRQVmVyc2lvbjooTlNTdHJp
bmcgKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6c3ludGhlc2l6ZWRSZXNwb25zZUhl
YWRlckZpZWxkc10gYXV0b3JlbGVhc2VdOwogfQotI2VuZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9N
aXNjL1dlYkRvd25sb2FkLm1tCmluZGV4IDY4MGY2OWVjZTUwNmY2NmEzODk4MWFlYjgyYjYwNTBi
ZGYzZWQ3ZjguLjY4Y2Y2NWEzMmFhNTNjYTY4ZjJlMzM5ZGI4YTYzNjg0NjMyZjNjNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQpAQCAtNDAsMTEgKzQwLDYgQEAKIAogI2lt
cG9ydCAiV2ViVHlwZXNJbnRlcm5hbC5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQg
PENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNpbXBvcnQgPENGTmV0d29yay9DRlVSTENvbm5lY3Rp
b24uaD4KLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGNsYXNzIE5TVVJM
Q29ubmVjdGlvbkRlbGVnYXRlUHJveHk7CkBAIC02MCwxNSArNTUsNiBAQCAtIChpZClfaW5pdFdp
dGhMb2FkaW5nQ29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgogLSAoaWQp
X2luaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogICAgICAgICAgICAgICBk
ZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAgICBkaXJlY3Rvcnk6KE5TU3RyaW5nICop
ZGlyZWN0b3J5OwotCi0jaWYgVVNFKENGTkVUV09SSykKLS0gKGlkKV9pbml0V2l0aExvYWRpbmdD
RlVSTENvbm5lY3Rpb246KENGVVJMQ29ubmVjdGlvblJlZiljb25uZWN0aW9uCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNw
b25zZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6KE5TVVJMQ29ubmVjdGlvbkRl
bGVnYXRlUHJveHkgKilwcm94eTsKLSNlbmRpZgotCiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViRG93
bmxvYWRJbnRlcm5hbCA6IE5TT2JqZWN0IDxOU1VSTERvd25sb2FkRGVsZWdhdGU+CkBAIC0yNDIs
MTggKzIyOCw2IEBAIC0gKGlkKV9pbml0V2l0aExvYWRpbmdDb25uZWN0aW9uOihOU1VSTENvbm5l
Y3Rpb24gKiljb25uZWN0aW9uCiAgICAgcmV0dXJuIFtzdXBlciBfaW5pdFdpdGhMb2FkaW5nQ29u
bmVjdGlvbjpjb25uZWN0aW9uIHJlcXVlc3Q6cmVxdWVzdCByZXNwb25zZTpyZXNwb25zZSBkZWxl
Z2F0ZTpfd2ViSW50ZXJuYWwgcHJveHk6cHJveHldOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykK
LS0gKGlkKV9pbml0V2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246KENGVVJMQ29ubmVjdGlvblJl
Ziljb25uZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OihDRlVS
TFJlcXVlc3RSZWYpcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25z
ZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNwb25zZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJveHk6KE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHkgKilwcm94eQotewotICAgIFtzZWxm
IF9zZXRSZWFsRGVsZWdhdGU6ZGVsZWdhdGVdOwotICAgIHJldHVybiBbc3VwZXIgX2luaXRXaXRo
TG9hZGluZ0NGVVJMQ29ubmVjdGlvbjpjb25uZWN0aW9uIHJlcXVlc3Q6cmVxdWVzdCByZXNwb25z
ZTpyZXNwb25zZSBkZWxlZ2F0ZTpfd2ViSW50ZXJuYWwgcHJveHk6cHJveHldOwotfQotI2VuZGlm
Ci0KIC0gKGlkKV9pbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKICAgICAg
ICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCiAgICAgICAgICAgICAgZGlyZWN0b3J5OihO
U1N0cmluZyAqKWRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9X
ZWJEb3dubG9hZEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2Fk
SW50ZXJuYWwuaAppbmRleCA5YjJmMzk1ODVkOTRhOGY1YjA1ZDMzMzBhY2I4MTIzN2JkMGRiOTY5
Li5jMWQyMTkyNjE5NTJhNDY3Y2IzYTY5YWI2MWE1ODk0YjhhMDNhZDNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaApAQCAtMjgsMTAgKzI4LDYgQEAK
ICAKICNpbXBvcnQgPFdlYktpdExlZ2FjeS9XZWJEb3dubG9hZC5oPgogCi0jaWYgVVNFKENGTkVU
V09SSykKLSNpbXBvcnQgPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb24uaD4KLSNlbmRpZgotIAog
QGludGVyZmFjZSBXZWJEb3dubG9hZCAoV2ViRG93bmxvYWRDcmVhdGlvbikKICsoaWQpX2Rvd25s
b2FkV2l0aExvYWRpbmdDb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVz
dApAQCAtNDIsMTMgKzM4LDQgQEAKICsoaWQpX2Rvd25sb2FkV2l0aFJlcXVlc3Q6KE5TVVJMUmVx
dWVzdCAqKXJlcXVlc3QKICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCiAg
ICAgICAgICAgICAgICAgZGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeTsKLQotI2lmIFVT
RShDRk5FVFdPUkspCi0rIChpZClfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjoo
Q0ZVUkxDb25uZWN0aW9uUmVmKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6KENGVVJMUmVzcG9uc2VSZWYpcmVzcG9uc2UKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6KGlkKXByb3h5OwotI2VuZGlm
Ci0KIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lv
bkNoZWNrcy5oIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgK
aW5kZXggYzgxMTIwMTI1ZDRkZmI2OTMxYWZlZDQxZWQxMDAxOWJmMDdiZmRmNC4uYjUzMzM1NGMz
NzEyYmYwNjc5ZjM5ODYzYmFlYjVlMTJlM2RiMzc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvTWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
TWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgKQEAgLTcyLDYgKzcyLDcgQEAKICNkZWZpbmUgV0VC
S0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9DU1NfQVRUUklCVVRFX1NFVFRFUlNfSUdOT1JJTkdfUFJJ
T1JJVFkgMjIzOSAvLyBpT1MgNi4wCiAjZGVmaW5lIFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhf
WU9VVFVCRV9FTUJFRF9JRlJBTUVfVFJBTlNGT1JNIDIyMzkgLy8gaU9TIDYuMAogI2RlZmluZSBX
RUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIT1VUX0xFR0FDWV9CQUNLR1JPVU5EU0laRV9TSE9SVEhB
TkRfQkVIQVZJT1IgMjY2NSAvLyBpT1MgNy4wCisjZGVmaW5lIFdFQktJVF9GSVJTVF9WRVJTSU9O
X1dJVEhfTE9BRElOR19EVVJJTkdfQ09NTU9OX1JVTkxPT1BfTU9ERVMgMjY2NSAvLyBpT1MgNy4w
CiAjZGVmaW5lIFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfSU5TRUNVUkVfQ09OVEVOVF9CTE9D
S0lORyAzNDU0CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4
IGQyZWFmOTQzNTkzZDk5N2MwM2I3YjYwNzcxNmRiNTE4MjVjOWNkYzguLjcyNTk5OGZiMjIyMTM5
ZTcyODgwOTYwODhmOTA5ODE4YjcwYjg1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0zMDEsMTMg
KzMwMSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VM
b2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciogZG9jCiAKICAgICBSZXNvdXJjZUhhbmRsZSog
aGFuZGxlID0gbWFpblJlc291cmNlTG9hZGVyLT5oYW5kbGUoKTsKIAotI2lmIFVTRShDRk5FVFdP
UkspCi0gICAgQVNTRVJUKFtXZWJEb3dubG9hZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF9kb3dubG9hZFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOnJlcXVlc3Q6cmVzcG9uc2U6ZGVs
ZWdhdGU6cHJveHk6KV0pOwotICAgIGF1dG8gY29ubmVjdGlvbiA9IGhhbmRsZS0+cmVsZWFzZUNv
bm5lY3Rpb25Gb3JEb3dubG9hZCgpOwotICAgIFtXZWJEb3dubG9hZCBfZG93bmxvYWRXaXRoTG9h
ZGluZ0NGVVJMQ29ubmVjdGlvbjpjb25uZWN0aW9uLmdldCgpIHJlcXVlc3Q6cmVxdWVzdC5jZlVS
TFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpIHJlc3BvbnNlOnJlc3BvbnNlLmNmVVJMUmVzcG9uc2Uo
KSBkZWxlZ2F0ZTpbd2ViVmlldyBkb3dubG9hZERlbGVnYXRlXSBwcm94eTpuaWxdOwotI2Vsc2UK
ICAgICBbV2ViRG93bmxvYWQgX2Rvd25sb2FkV2l0aExvYWRpbmdDb25uZWN0aW9uOmhhbmRsZS0+
Y29ubmVjdGlvbigpIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkp
IHJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSBkZWxlZ2F0ZTpbd2ViVmlldyBkb3du
bG9hZERlbGVnYXRlXSBwcm94eTpuaWxdOwotI2VuZGlmCiB9CiAKIGJvb2wgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGludCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggMTRj
MWJjNmM2YjYxZWU1YzZjYzg0NjYxNWM0ODlkM2FkNGU0YzEzMi4uNGQyYjhlOTIzZDMzODVhMTY1
N2RlOTY1MzZkYTllYmRjMGM4ZjBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtMTE3LDEzICsxMTcsNiBA
QCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChDdXJzb3Ip
OwogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIElOSVQoR2V0RGVmYXVsdEhUVFBD
b29raWVTdG9yYWdlKTsKLSAgICBJTklUKENvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0
b3JhZ2UpOwotICAgIElOSVQoU2V0Q0ZVUkxSZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZmKTsKLSAg
ICBJTklUKFNldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbik7Ci0jZW5kaWYKLQogI2lmICFQTEFURk9S
TShJT1MpCiAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJzKTsKICAg
ICBJTklUKFNwZWVjaFN5bnRoZXNpc0dldERlZmF1bHRWb2ljZUlkZW50aWZpZXJGb3JMb2NhbGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KaW5kZXggMDEw
ZmE4Yjc3NzI5ZDBjNGVhZTZiNDlmOTMxZGUwNDkyNmQzY2IyNy4uNDI4YWZiNzNiNjcxYjQ0NjYw
NjZhOThjNWM0OThmOGIzMDhiOWIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzLm1tCkBAIC0xNzY2LDcgKzE3NjYsNyBAQCArICh2b2lkKV9jbGVhck5ldHdv
cmtMb2FkZXJTZXNzaW9uCiArICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25D
b29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlwb2xpY3kKIHsKICAg
ICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgp
OwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBmYWlsIHdoZW4gYnVpbGRpbmcg
d2l0aG91dCBVU0UoQ0ZORVRXT1JLKSBhbmQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hU
b05ld1Rlc3RpbmdTZXNzaW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KKyAgICBBU1NF
UlQoY29va2llU3RvcmFnZSk7IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQu
CiAgICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBv
bGljeSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBjZGEzZjU4
OGU4NmI2NmM0YzRmZmVkNjYzOTEzOGY4NDZkZDgzMTliLi5jOWI1Y2FkZGMyZTdkZDY0YWYzZDJh
ZWU2M2FhNjcwYjA1NzVjZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBA
IC0xMDI4LDEyICsxMDI4LDEzIEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZy
YW1lTmFtZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0CiAKICNpZiAhUExB
VEZPUk0oSU9TKQogICAgIE5TUnVuTG9vcCAqcnVuTG9vcCA9IFtOU1J1bkxvb3AgbWFpblJ1bkxv
b3BdOwotCisjZWxzZQorICAgIE5TUnVuTG9vcCAqcnVuTG9vcCA9IFdlYlRocmVhZE5TUnVuTG9v
cCgpOworI2VuZGlmCiAgICAgaWYgKFdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1Rf
VkVSU0lPTl9XSVRIX0xPQURJTkdfRFVSSU5HX0NPTU1PTl9SVU5MT09QX01PREVTKSkKICAgICAg
ICAgW3NlbGYgc2NoZWR1bGVJblJ1bkxvb3A6cnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKWtD
RlJ1bkxvb3BDb21tb25Nb2Rlc107CiAgICAgZWxzZQogICAgICAgICBbc2VsZiBzY2hlZHVsZUlu
UnVuTG9vcDpydW5Mb29wIGZvck1vZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGVdOwotI2VuZGlmCiAK
ICAgICBbc2VsZiBfYWRkVG9BbGxXZWJWaWV3c1NldF07CiAgICAgCkBAIC02NjE4LDI5ICs2NjE5
LDE5IEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlBlbmRpbmdQdWJsaWMp
CiAKLSNpZiAhUExBVEZPUk0oSU9TKQogLSAodm9pZClzY2hlZHVsZUluUnVuTG9vcDooTlNSdW5M
b29wICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGUKIHsKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotICAgIENGUnVuTG9vcFJlZiBzY2hlZHVsZVBhaXJSdW5Mb29wID0gW3J1bkxvb3AgZ2V0
Q0ZSdW5Mb29wXTsKLSNlbHNlCiAgICAgTlNSdW5Mb29wICpzY2hlZHVsZVBhaXJSdW5Mb29wID0g
cnVuTG9vcDsKLSNlbmRpZgogICAgIGlmIChydW5Mb29wICYmIG1vZGUpCiAgICAgICAgIGNvcmUo
c2VsZiktPmFkZFNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShzY2hlZHVsZVBhaXJS
dW5Mb29wLCAoQ0ZTdHJpbmdSZWYpbW9kZSkpOwogfQogCiAtICh2b2lkKXVuc2NoZWR1bGVGcm9t
UnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGUKIHsK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGUnVuTG9vcFJlZiBzY2hlZHVsZVBhaXJSdW5Mb29w
ID0gW3J1bkxvb3AgZ2V0Q0ZSdW5Mb29wXTsKLSNlbHNlCiAgICAgTlNSdW5Mb29wICpzY2hlZHVs
ZVBhaXJSdW5Mb29wID0gcnVuTG9vcDsKLSNlbmRpZgogICAgIGlmIChydW5Mb29wICYmIG1vZGUp
CiAgICAgICAgIGNvcmUoc2VsZiktPnJlbW92ZVNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNy
ZWF0ZShzY2hlZHVsZVBhaXJSdW5Mb29wLCAoQ0ZTdHJpbmdSZWYpbW9kZSkpOwogfQotI2VuZGlm
CiAKIHN0YXRpYyBCT09MIGZpbmRTdHJpbmcoTlNWaWV3IDxXZWJEb2N1bWVudFNlYXJjaGluZz4g
KnNlYXJjaFZpZXcsIE5TU3RyaW5nICpzdHJpbmcsIFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKaW5kZXggNzk2YzBm
NDJhNzY5OWYxODZmMGU0YzAzN2QxMTQ2N2M0NmIxMDI5NC4uZjQzMDQ5OTY0NWQ3Zjk1MDA3YzFj
YmEwZTljZmFjMDE5OGNmM2MwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d1ByaXZhdGUuaApAQCAtMTk4LDEwICsxOTgsOCBAQCB0eXBlZGVmIGVudW0gewogCiBAaW50ZXJm
YWNlIFdlYlZpZXcgKFdlYlBlbmRpbmdQdWJsaWMpCiAKLSNpZiAhVEFSR0VUX09TX0lQSE9ORQog
LSAodm9pZClzY2hlZHVsZUluUnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JNb2RlOihO
U1N0cmluZyAqKW1vZGU7CiAtICh2b2lkKXVuc2NoZWR1bGVGcm9tUnVuTG9vcDooTlNSdW5Mb29w
ICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGU7Ci0jZW5kaWYKIAogLSAoQk9PTClm
aW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihXZWJGaW5kT3B0aW9ucylvcHRp
b25zOwogLSAoRE9NUmFuZ2UgKilET01SYW5nZU9mU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBy
ZWxhdGl2ZVRvOihET01SYW5nZSAqKXByZXZpb3VzUmFuZ2Ugb3B0aW9uczooV2ViRmluZE9wdGlv
bnMpb3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5o
CmluZGV4IDgwNWZhMjdkNTYwMWJkZmZhMWZiZTRiOGVmZmIzZWM0NWFjYWQxN2IuLjI3ZWYzYmQw
MDM3YTc2YTAxMTY4ODFjYjM4ZTE0MWJkZmNiODk3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaApAQCAtOTQsMTIgKzk0LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KiwgQ0ZBcnJheVJlZikgb3ZlcnJpZGU7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5j
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJp
ZGU7Ci0jZWxzZQogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSAqKSBvdmVycmlkZTsKICNl
bmRpZgotI2VuZGlmCiAjZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKIAogI2lmIFVTRShQ
Uk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZGI3MGViMDcyZmFmZTZiOGQ4OWEw
YzllNjlhN2IwMzFhMjNlNDQ1My4uZjcyNzFlNzM3ZTFkNmJiNDQ2OWViZGExZWNhZjQzMmE1ZWE0
OWM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxp
emVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1lCiAKICAg
ICBzZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbihwYXJhbWV0ZXJzLmNhbkhh
bmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKTsKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwg
VVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBTZXNzaW9uVHJhY2tlcjo6
c2V0SWRlbnRpZmllckJhc2UocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKTsK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMv
TmV0d29ya0xvYWRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0
d29ya0xvYWRNYWMubW0KaW5kZXggZjNjNmVjYmJiMDFhMTYwMjlmOGRlY2Y5YzRjMWMzOGEwMjdh
YzA3OS4uM2Q2MjVjOGUyNmJmZjdkZTQ4YmY3YTVmMWYwNDA5OGI4OGM2ZmMxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbQpA
QCAtMzQsMTggKzM0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi0jaWYgVVNFKENGTkVUV09SSykKLQotdm9pZCBOZXR3b3JrTG9hZDo6d2lsbENh
Y2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmIGNmUmVzcG9uc2UpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9
PSBtX2hhbmRsZSk7Ci0KLSAgICBtX2NsaWVudC53aWxsQ2FjaGVSZXNwb25zZUFzeW5jKGNmUmVz
cG9uc2UpOwotCi0gICAgbV9oYW5kbGUtPmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoY2ZSZXNw
b25zZSk7Ci19Ci0KLSNlbGlmICFVU0UoTkVUV09SS19TRVNTSU9OKQorI2lmICFVU0UoTkVUV09S
S19TRVNTSU9OKQogCiB2b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UpCiB7
CkBAIC01Niw2ICs0NSw2IEBAIHZvaWQgTmV0d29ya0xvYWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5
bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgTlNDYWNoZWRVUkxSZXNwCiAgICAgbV9oYW5kbGUt
PmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UobnNSZXNwb25zZSk7CiB9CiAKLSNlbmRpZiAvLyAh
VVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyAhVVNFKE5FVFdPUktfU0VTU0lPTikKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxv
YWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2Fk
LmgKaW5kZXggNzEzNzQ5OGJmMzJlYzMzOTJjMGNkODZkOThmZTVlMDRmYjFjYjk5YS4uZWU0ZDgy
ZTNjMGUyZWU5OTc4NzRlZWQ0ZDM2MWQ4MTM4OTRlYmJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaApAQCAtNDgsMTAgKzQ4LDYgQEAgT0JKQ19DTEFTUyBX
S0Rvd25sb2FkQXNEZWxlZ2F0ZTsKICNpbmNsdWRlIDxtZW1vcnk+CiAjZW5kaWYKIAotI2lmIFVT
RShDRk5FVFdPUkspCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWRQcml2Lmg+Ci0j
ZW5kaWYKLQogbmFtZXNwYWNlIElQQyB7CiAgICAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KQEAg
LTk4LDEwICs5NCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSk7CiAg
ICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsK
IAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgRG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudCog
YXV0aGVudGljYXRpb25DbGllbnQoKTsKLSNlbmRpZgotCiAgICAgLy8gQXV0aGVudGljYXRpb24K
ICAgICBzdGF0aWMgdm9pZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik7CiAgICAgc3Rh
dGljIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0
IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CkBAIC0xMzQsMTAgKzEyNiw2IEBA
IHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdLRG93bmxvYWRBc0RlbGVnYXRlPiBtX2RlbGVnYXRl
OwogI2VuZGlmCiAjZW5kaWYKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIFJldGFpblB0cjxDRlVS
TERvd25sb2FkUmVmPiBtX2Rvd25sb2FkOwotICAgIFJlZlB0cjxEb3dubG9hZEF1dGhlbnRpY2F0
aW9uQ2xpZW50PiBtX2F1dGhlbnRpY2F0aW9uQ2xpZW50OwotI2VuZGlmCiAjaWYgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIFJlZlB0cjxXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZT4gbV9yZXNvdXJjZUhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGY4ZjQyMjA5ZDI3OWZmYTU0NmRhN2E5MWFhNTg5ZWQ0MTQ1MDExZGYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0KKysrIC9kZXYvbnVsbApAQCAtMSwx
OTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRG93
bmxvYWQuaCIKLQotI2lmIFBMQVRGT1JNKElPUykKLQotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5o
IgotI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9S
ZXNvdXJjZUVycm9yLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KLSNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9y
dCA8Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWQuaD4KLSNlbmRpZgotCi11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotLy8g
RklYTUU6IElmIHBvc3NpYmxlLCB3ZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIHNvbWUgY2FsbGJh
Y2tzIG9mZiB0aGUgbWFpbiB0aHJlYWQgb3IgYXQgbGVhc3QKLS8vIG1ha2luZyB0aGVtIGFzeW5j
aG9ub3VzIGNhbGxzLgotc3RhdGljIHZvaWQgZGlzcGF0Y2hPbk1haW5UaHJlYWQodm9pZCheYmxv
Y2spKCkpCi17Ci0gICAgaWYgKFJ1bkxvb3A6OmlzTWFpbigpKSB7Ci0gICAgICAgIGJsb2NrKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIGJsb2NrKTsKLX0KLQotc3RhdGljIGlubGluZSBEb3dubG9hZCogdG9E
b3dubG9hZChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxEb3dubG9hZCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLX0KLQotc3RhdGlj
IHZvaWQgc2V0VXBEb3dubG9hZENsaWVudChDRlVSTERvd25sb2FkQ2xpZW50JiBjbGllbnQsIERv
d25sb2FkJiBkb3dubG9hZCkKLXsKLSAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVu
dCkpOwotICAgIGNsaWVudC5jbGllbnRJbmZvID0gJmRvd25sb2FkOwotCi0gICAgY2xpZW50LmRp
ZFN0YXJ0ID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewot
ICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChj
bGllbnRJbmZvKS0+ZGlkU3RhcnQoKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVu
dC53aWxsU2VuZFJlcXVlc3QgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlVSTFJlcXVlc3RSZWYg
cmVxdWVzdCwgQ0ZVUkxSZXNwb25zZVJlZiwgY29uc3Qgdm9pZCopIC0+IENGVVJMUmVxdWVzdFJl
ZiB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlVSTFJlcXVlc3RSZWY+KENGUmV0YWlu
KHJlcXVlc3QpKTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZSA9IFtd
KENGVVJMRG93bmxvYWRSZWYsIENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAg
ICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7
Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEgPSBbXShD
RlVSTERvd25sb2FkUmVmLCBDRkluZGV4IGxlbmd0aCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykg
ewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9h
ZChjbGllbnRJbmZvKS0+ZGlkUmVjZWl2ZURhdGEobGVuZ3RoKTsKLSAgICAgICAgfSk7Ci0gICAg
fTsKLQotICAgIGNsaWVudC5zaG91bGREZWNvZGVEYXRhT2ZNSU1FVHlwZSA9IFtdKENGVVJMRG93
bmxvYWRSZWYsIENGU3RyaW5nUmVmIGVuY29kaW5nVHlwZSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykgLT4gQm9vbGVhbiB7Ci0gICAgICAgIF9fYmxvY2sgQk9PTCByZXR1cm5WYWx1ZSA9IE5POwot
ICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgcmV0dXJuVmFsdWUg
PSB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5zaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlw
ZShlbmNvZGluZ1R5cGUpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHJldHVyblZhbHVl
OwotICAgIH07Ci0KLSAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkT2Jq
ZWN0TmFtZSA9IFtdKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWRSZWYsIENGU3RyaW5nUmVmIG9i
amVjdE5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1h
aW5UaHJlYWQoXnsKLSAgICAgICAgICAgIGJvb2wgYWxsb3dPdmVyd3JpdGU7Ci0gICAgICAgICAg
ICBTdHJpbmcgZGVzdGluYXRpb24gPSB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShvYmplY3ROYW1lLCBhbGxvd092ZXJ3cml0ZSk7
Ci0gICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQotICAgICAgICAgICAgICAg
IENGVVJMRG93bmxvYWRTZXREZXN0aW5hdGlvbihkb3dubG9hZFJlZiwgcmVpbnRlcnByZXRfY2Fz
dDxDRlVSTFJlZj4oW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpkZXN0aW5hdGlvbl0pLCBhbGxvd092
ZXJ3cml0ZSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkQ3JlYXRlRGVz
dGluYXRpb24gPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlVSTFJlZiBwYXRoLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAg
ICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihDRlVSTEdl
dFN0cmluZyhwYXRoKSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkRmlu
aXNoID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAg
ICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGll
bnRJbmZvKS0+ZGlkRmluaXNoKCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQu
ZGlkRmFpbCA9IFtdKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWRSZWYsIENGRXJyb3JSZWYgZXJy
b3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJl
YWQoXnsKLSAgICAgICAgICAgIGF1dG8gcmVzdW1lRGF0YSA9IGFkb3B0Q0YoQ0ZVUkxEb3dubG9h
ZENvcHlSZXN1bWVEYXRhKGRvd25sb2FkUmVmKSk7Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNs
aWVudEluZm8pLT5kaWRGYWlsKGVycm9yLCBJUEM6OkRhdGFSZWZlcmVuY2UocmVzdW1lRGF0YSA/
IENGRGF0YUdldEJ5dGVQdHIocmVzdW1lRGF0YS5nZXQoKSkgOiBudWxscHRyLCByZXN1bWVEYXRh
ID8gQ0ZEYXRhR2V0TGVuZ3RoKHJlc3VtZURhdGEuZ2V0KCkpIDogMCkpOwotICAgICAgICB9KTsK
LSAgICB9OwotfQotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KLXZvaWQgRG93bmxvYWQ6OnN0
YXJ0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZXN1
bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lk
IERvd25sb2FkOjpzdGFydFdpdGhIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBD
RlVSTERvd25sb2FkQ2xpZW50IGNsaWVudDsKLSAgICBzZXRVcERvd25sb2FkQ2xpZW50KGNsaWVu
dCwgKnRoaXMpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgIG1fZG93
bmxvYWQgPSBhZG9wdENGKENGVVJMRG93bmxvYWRDcmVhdGVBbmRTdGFydFdpdGhMb2FkaW5nQ29u
bmVjdGlvbihOVUxMLCBoYW5kbGUtPnJlbGVhc2VDb25uZWN0aW9uRm9yRG93bmxvYWQoKS5nZXQo
KSwgbV9yZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSksIHJlc3BvbnNlLmNmVVJM
UmVzcG9uc2UoKSwgJmNsaWVudCkpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotI2Vs
c2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCi19Ci0KLXZvaWQgRG93bmxvYWQ6OmNh
bmNlbCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cGxh
dGZvcm1JbnZhbGlkYXRlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERv
d25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVk
ZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
dm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBQTEFURk9S
TShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9E
b3dubG9hZE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvbWFjL0Rvd25s
b2FkTWFjLm1tCmluZGV4IDAwNTgzYzY5ZGEwZTQ1NjJmOWY5NjZiODVjZTJkNTcxZjAwNmZlN2Mu
LjE4Y2IwYTA2N2MyNjhmNWMyZGI2MzU3YWEwNjJmN2JjNTExNmNkYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCkBAIC0yNiwx
MCArMjYsMTEgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRG93bmxvYWQuaCIKIAot
I2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShORVRXT1JLX1NFU1NJT04pCisjaWYgUExBVEZPUk0o
Q09DT0EpICYmICFVU0UoTkVUV09SS19TRVNTSU9OKQogCiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uTWFj
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL05TVVJMRG93bmxvYWRTUEkuaD4KICNpbXBvcnQgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRl
eCA2YWYzMTdlZGNjY2IzZjM3OGVkODk0OTFjNGFkZjdiNmNlYjFiYmU5Li5lZDA1ZmY2MjViYjI5
MGJiOWZmOGUzMjc4YjAyYWRmY2NkNWIwNTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xMDUsNyArMTA1
LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpBcmd1
bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB0ZXh0Q2hlY2tlclN0
YXRlOwogICAgIGVuY29kZXIgPDwgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZDsKICAgICBlbmNv
ZGVyIDw8IGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsOwotI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGVuY29kZXIgPDwg
dWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcjsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQpA
QCAtMjMwLDcgKzIzMCw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZGVmYXVsdFJlcXVl
c3RUaW1lb3V0SW50ZXJ2YWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDJmODBjNjNkNzgzNTQ5MDll
ZWFkNTJlNjhiNGY4MjljMWMxNzk1NjIuLjAzMzUwMTEwMmM0YWZkOGU0NDZhZmY3N2EwMWM0MDcw
NWQ0NmQ4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTIxLDcgKzEyMSw3IEBAIHN0cnVjdCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIGRvdWJsZSBkZWZhdWx0UmVxdWVzdFRpbWVvdXRJ
bnRlcnZhbDsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIFN0cmluZyB1aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1l
bnRDb2RlcnNNYWMubW0KaW5kZXggZGZmYjNlMDYzZDU2YWRhMTdkNWNkNTRjZmUxNWUwMzA5OGM1
YWUxNS4uZDBkNGM3MDg1MWRlOTk4YWI5ZWQyOWI1ZTgwOTExZjkyZmRjNmIzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMu
bW0KQEAgLTM5LDEwICszOSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdC5oPgotI2VuZGlmCi0KICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogI2ltcG9ydCA8V2ViQ29yZS9BVkZvdW5kYXRp
b25TUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4K
QEAgLTU3LDM2ICs1Myw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
SVBDIHsKIAotI2lmIFVTRShDRk5FVFdPUkspCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VS
ZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCi17Ci0gICAgUmV0YWluUHRyPENG
VVJMUmVxdWVzdFJlZj4gcmVxdWVzdFRvU2VyaWFsaXplID0gcmVzb3VyY2VSZXF1ZXN0LmNmVVJM
UmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKLQotICAgIGJvb2wgcmVxdWVzdElzUHJlc2Vu
dCA9IHJlcXVlc3RUb1NlcmlhbGl6ZTsKLSAgICBlbmNvZGVyIDw8IHJlcXVlc3RJc1ByZXNlbnQ7
Ci0KLSAgICBpZiAoIXJlcXVlc3RJc1ByZXNlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IFdlIGRvbid0IHNlbmQgSFRUUCBib2R5IG92ZXIgSVBDIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2Uu
Ci0gICAgLy8gQWxzbywgaXQncyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIGRvLCBhcyBzdHJlYW1z
IGNhbiBvbmx5IGJlIGNyZWF0ZWQgaW4gcHJvY2VzcyB0aGF0IGRvZXMgbmV0d29ya2luZy4KLSAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByZXF1ZXN0SFRUUEJvZHkgPSBhZG9wdENGKENGVVJMUmVx
dWVzdENvcHlIVFRQUmVxdWVzdEJvZHkocmVxdWVzdFRvU2VyaWFsaXplLmdldCgpKSk7Ci0gICAg
UmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gcmVxdWVzdEhUVFBCb2R5U3RyZWFtID0gYWRvcHRD
RihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5U3RyZWFtKHJlcXVlc3RUb1NlcmlhbGl6
ZS5nZXQoKSkpOwotICAgIGlmIChyZXF1ZXN0SFRUUEJvZHkgfHwgcmVxdWVzdEhUVFBCb2R5U3Ry
ZWFtKSB7Ci0gICAgICAgIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgbXV0YWJsZVJlcXVlc3QgPSBD
RlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgwLCByZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCkp
OwotICAgICAgICByZXF1ZXN0VG9TZXJpYWxpemUgPSBhZG9wdENGKG11dGFibGVSZXF1ZXN0KTsK
LSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RCb2R5KG11dGFibGVSZXF1ZXN0LCBu
aWwpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdEJvZHlTdHJlYW0obXV0YWJs
ZVJlcXVlc3QsIG5pbCk7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
ZGljdGlvbmFyeSA9IGFkb3B0Q0YoV0tDRlVSTFJlcXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXBy
ZXNlbnRhdGlvbihyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJl
ZigpKSk7Ci0gICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZGljdGlvbmFyeS5nZXQoKSk7Ci0KLSAg
ICAvLyBUaGUgZmFsbGJhY2sgYXJyYXkgaXMgcGFydCBvZiBDRlVSTFJlcXVlc3QsIGJ1dCBpdCBp
cyBub3QgZW5jb2RlZCBieSBXS0NGVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2Vu
dGF0aW9uLgotICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXF1ZXN0LnJlc3BvbnNlQ29udGVudERp
c3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KCk7Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVt
KHJlc291cmNlUmVxdWVzdC5yZXF1ZXN0ZXIoKSk7Ci19Ci0jZWxzZQogdm9pZCBBcmd1bWVudENv
ZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewogICAg
IFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlcXVlc3RUb1NlcmlhbGl6ZSA9IHJlc291cmNlUmVx
dWVzdC5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSk7CkBAIC0xMTIsNyArNzgsNiBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRh
KEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcgogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXF1ZXN0
LnJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KCk7CiAgICAg
ZW5jb2Rlci5lbmNvZGVFbnVtKHJlc291cmNlUmVxdWVzdC5yZXF1ZXN0ZXIoKSk7CiB9Ci0jZW5k
aWYKIAogYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3Jt
RGF0YShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0KQogewpAQCAtMTI5LDIwICs5NCwxMiBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciYgZGVjb2Rlcgog
ICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGljdGlvbmFyeSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgUmV0YWluUHRyPENGVVJMUmVxdWVz
dFJlZj4gY2ZVUkxSZXF1ZXN0ID0gYWRvcHRDRihXS0NyZWF0ZUNGVVJMUmVxdWVzdEZyb21TZXJp
YWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJUEM6OnRva2VuTnVsbFR5
cGVSZWYoKSkpOwotICAgIGlmICghY2ZVUkxSZXF1ZXN0KQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICByZXNvdXJjZVJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoY2ZVUkxSZXF1ZXN0Lmdl
dCgpKTsKLSNlbHNlCiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbnNVUkxSZXF1ZXN0ID0g
V0tOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24oZGljdGlvbmFyeS5n
ZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpOwogICAgIGlmICghbnNVUkxSZXF1ZXN0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXNvdXJjZVJlcXVlc3QgPSBSZXNvdXJjZVJl
cXVlc3QobnNVUkxSZXF1ZXN0LmdldCgpKTsKLSNlbmRpZgotICAgIAorCiAgICAgVmVjdG9yPFN0
cmluZz4gcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXk7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NjI5Yzc3YTBjZDli
MzBiZTYyZTEzOTRjYjhlMzEzODkxYWJmMjAwLi40MjMwZTE1OGY0NDEwMTJkOTZiZjlmNGJjYjlm
N2QxOWFhMmI0ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC02NzIsNyArNjcyLDYgQEAKIAkJMkRBOTQ0QTIxODg0RTRGMDAw
RUQ4NkRCIC8qIFdlYlBsYXRmb3JtVG91Y2hQb2ludElPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDQ5QjE4ODRFNEYwMDBFRDg2REIgLyog
V2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcCAqLzsgfTsKIAkJMkRBOTQ0QTMxODg0RTRGMDAw
RUQ4NkRCIC8qIFdlYlRvdWNoRXZlbnRJT1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0OUMxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYlRvdWNo
RXZlbnRJT1MuY3BwICovOyB9OwogCQkyREE5NDRBNDE4ODRFNEYwMDBFRDg2REIgLyogR2VzdHVy
ZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
REE5NDQ5RDE4ODRFNEYwMDBFRDg2REIgLyogR2VzdHVyZVR5cGVzLmggKi87IH07Ci0JCTJEQTk0
NEE3MTg4NEU5NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEE2MTg4NEU5NDgwMEVEODZEQiAvKiBE
b3dubG9hZElPUy5tbSAqLzsgfTsKIAkJMkRBOTQ0QUQxODg0RTlCQTAwRUQ4NkRCIC8qIFRleHRD
aGVja2VySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkRBOTQ0QTkxODg0RTlCQTAwRUQ4NkRCIC8qIFRleHRDaGVja2VySU9TLm1tICovOyB9Owog
CQkyREE5NDRBRjE4ODRFOUJBMDBFRDg2REIgLyogV2ViUGFnZVByb3h5SU9TLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0QUIxODg0RTlCQTAw
RUQ4NkRCIC8qIFdlYlBhZ2VQcm94eUlPUy5tbSAqLzsgfTsKIAkJMkRBOTQ0QjAxODg0RTlCQTAw
RUQ4NkRCIC8qIFdlYlByb2Nlc3NQcm94eUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEFDMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQcm9j
ZXNzUHJveHlJT1MubW0gKi87IH07CkBAIC0yODMyLDcgKzI4MzEsNiBAQAogCQkyREE5NDQ5QjE4
ODRFNEYwMDBFRDg2REIgLyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludElPUy5jcHA7
IHBhdGggPSBpb3MvV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0OUMxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYlRvdWNoRXZlbnRJ
T1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViVG91Y2hFdmVu
dElPUy5jcHA7IHBhdGggPSBpb3MvV2ViVG91Y2hFdmVudElPUy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJEQTk0NDlEMTg4NEU0RjAwMEVEODZEQiAvKiBHZXN0dXJlVHlwZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR2VzdHVyZVR5cGVzLmg7IHBhdGgg
PSBpb3MvR2VzdHVyZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJEQTk0
NEE2MTg4NEU5NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IERvd25sb2FkSU9TLm1tOyBwYXRoID0gRG93bmxvYWRzL2lv
cy9Eb3dubG9hZElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0QTkx
ODg0RTlCQTAwRUQ4NkRCIC8qIFRleHRDaGVja2VySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gVGV4dENoZWNrZXJJT1MubW07IHBhdGggPSBpb3MvVGV4dENo
ZWNrZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQTk0NEFCMTg4NEU5
QkEwMEVEODZEQiAvKiBXZWJQYWdlUHJveHlJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBXZWJQYWdlUHJveHlJT1MubW07IHBhdGggPSBpb3MvV2ViUGFnZVBy
b3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREE5NDRBQzE4ODRFOUJB
MDBFRDg2REIgLyogV2ViUHJvY2Vzc1Byb3h5SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gV2ViUHJvY2Vzc1Byb3h5SU9TLm1tOyBwYXRoID0gaW9zL1dlYlBy
b2Nlc3NQcm94eUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxNDYsNyAr
NTE0NCw2IEBACiAJCTJEQTk0NEE1MTg4NEU5M0MwMEVEODZEQiAvKiBpb3MgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTJEQTk0NEE2MTg4NEU5NDgwMEVE
ODZEQiAvKiBEb3dubG9hZElPUy5tbSAqLywKIAkJCSk7CiAJCQluYW1lID0gaW9zOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTk1MDUsNyArOTUwMiw2IEBACiAJCQkJNTE4RThGMDcx
NkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxOEU4
RjA5MTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUExREY2MzEyMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENs
aWVudC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTJEQTk0NEE3MTg4NEU5NDgwMEVEODZEQiAvKiBE
b3dubG9hZElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxOEU4RjBEMTZCMjA5MzcwMEU5MTQy
OSAvKiBEb3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxOEU4RjBCMTZCMjA5Mzcw
MEU5MTQyOSAvKiBEb3dubG9hZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0Q0
Q0IxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDVkZWMzN2FlNWU1ZmM2NTU3OTM1ZDMxYWNhMjJlYWM1
YTYxOTBjMDEuLjliODJjODM5MDA1Mjc4MmJmZTFkNjJkZDM5ZDUzY2NiY2MyMmViMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChXZWJQYWdlR3JvdXBQcm94eSogcGFn
ZUdyb3UKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2Vi
UGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgYm9vbCBlbmFibGVkKQogewogICAgIC8vIEZJWE1F
IChOZXR3b3JrUHJvY2Vzcyk6IFRoaXMgdGVzdC1vbmx5IGZ1bmN0aW9uIGRvZXNuJ3Qgd29yayB3
aXRoIE5ldHdvcmtQcm9jZXNzLCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTI3ND4uCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVT
RShTT1VQKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKICAgICBpZiAoZW5hYmxl
ZCkKICAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSk7CiAgICAgZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDAzZjI4ODIzMDIxMTM2
ZmUwOGRkMmY3M2M1NGFiYjM1ZjMzYjhlOGYuLmM3MTg1YmZlNTI0ODVkOTkxYmQwMmJiZTE3NzVh
ODhiODNlZTkxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTEy
MSwxMyArMTIxLDYgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAg
ICAgICBJTklUKFdpbmRvd1NldEFscGhhKTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCi0j
aWYgVVNFKENGTkVUV09SSykKLSAgICAgICAgSU5JVChHZXREZWZhdWx0SFRUUENvb2tpZVN0b3Jh
Z2UpOwotICAgICAgICBJTklUKENvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2Up
OwotICAgICAgICBJTklUKFNldENGVVJMUmVxdWVzdFNob3VsZENvbnRlbnRTbmlmZik7Ci0gICAg
ICAgIElOSVQoU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKTsKLSNlbmRpZgotCiAjaWYgIVBMQVRG
T1JNKElPUykKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJz
KTsKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXREZWZhdWx0Vm9pY2VJZGVudGlmaWVy
Rm9yTG9jYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4
IDAzYzUyNDM3YTAwMjVjNDIxN2YxZDM2YTY4MjkyMjUxYjY1Mjg2ZjcuLmUwMzA4MTYxMDIxNTJm
ODk2NDAzOGVmMGY3MTM5MjdhYjM3MjFhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcApAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlh
bGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlRm9udFNtb290aGluZykKICAgICAgICAgc2V0
U2hvdWxkVXNlRm9udFNtb290aGluZyh0cnVlKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBV
U0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFNlc3Npb25UcmFja2VyOjpz
ZXRJZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpOwog
I2VuZGlmCiAKQEAgLTQ1NywxNCArNDU3LDE0IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZnVsbEtleWJv
YXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKQogCiB2
b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNl
c3Npb25JRCkKIHsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNF
KFNPVVApCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsK
ICNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShD
Rk5FVFdPUkspIHx8IFVTRShTT1VQKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkK
ICAgICBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oc2Vzc2lvbklEKTsKICNlbmRpZgog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267554</attachid>
            <date>2015-12-17 03:20:10 -0800</date>
            <delta_ts>2015-12-17 04:45:46 -0800</delta_ts>
            <desc>Patch to find build errors (fixes for iOS and Windows) v2</desc>
            <filename>bug-137936-20151217031931.patch</filename>
            <type>text/plain</type>
            <size>128326</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE4YmM0YTczMTU0ODcyYTg1OTc1NjNm
YWE0MDRlYzg0NjMyM2RhODAuLjE2YzdjYzM4YjU4NWJiMTU3ODFjOGRiOWMyZjU4MjMwYjkxYmRh
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTItMTcgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgVVNFKENGTkVUV09SSykrUExBVEZPUk0o
Q09DT0EpIGNvZGUgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM3OTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxNS0xMi0xNiAgQW5kcmVhcyBLbGluZyAg
PGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgR2l2ZSBrZXJuZWwgVk0gc29tZSBoaW50cyBh
Ym91dCBub24tbGl2ZSBtZW1vcnktY2FjaGVkIHJlc291cmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0ODdl
YTUxYTY3MjEwMzFlMzY0MGU2NjQzODYzZGE0ZmFiZDMwNjIxLi4wYWQ4MTY1ZGFjNTNmMjE4OWVi
ZTlhNDhlOGQzYmY1ODk0NzUwYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMxIEBACisyMDE1
LTEyLTE3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIFVTRShDRk5FVFdPUkspK1BMQVRGT1JNKENPQ09BKSBjb2RlIHBhdGgKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzkzNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbW9zdCBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9t
YWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NoZWR1bGVBbGwp
OiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJy
YXkpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvbWFjL1BhZ2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6YWRkU2NoZWR1bGVQYWlyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJl
bW92ZVNjaGVkdWxlUGFpcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJl
Z2lzdGVyTWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVWaWRlb0xheWVyR3Jhdml0eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
aW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2Uu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNGKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvcHlDb29raWVzRm9yVVJMV2l0aEZpcnN0UGFydHlVUkwpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlQ29va2llcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5k
bGluZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0OjpSZXNvdXJjZVJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0OjpjYWNoZVBhcnRpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OnNldENhY2hlUGFydGl0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9uc2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6YWRkVG9IVFRQSGVhZGVyTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmg6
CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjplbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1E
YXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRp
YWxDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnRvTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVu
Y2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6bnNDcmVkZW50aWFs
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OmlzRW1wdHkpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29j
b2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZTo6ZW5jb2RpbmdSZXF1aXJl
c1BsYXRmb3JtRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnR5cGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpuc1NwYWNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVlc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJl
c291cmNlUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3Mv
UXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1t
OgorICAgICAgICAoLVtXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIGRldGFjaEhh
bmRsZV0pOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjp+UXVpY2tMb29rSGFu
ZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1Nl
dCk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdh
dGUgaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViUmVz
b3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSBfc2VuZERpZFJlY2VpdmVSZXNwb25zZUlmTmVj
ZXNzYXJ5XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29r
RGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YUFycmF5Ol0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlk
UmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJl
c291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdh
dGUgY29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UXVpY2tMb29rSGFuZGxlOjpkaWRSZWNlaXZlRGF0YUFycmF5KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW06IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6OnNldEF1dGhlbnRpY2F0aW9uQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjphdXRoZW50aWNhdGlvbkNsaWVudCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y29va2llU3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW06CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTlNF
cnJvckZyb21SZXNvdXJjZUVycm9yQmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om5zRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgTlNFcnJvciAqKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Om9wZXJhdGlvblF1ZXVlRm9yQXN5bmNDbGllbnRzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWxlZ2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xv
YWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50
OjpwbGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1t
OgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIGRldGFjaEhhbmRs
ZV0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW06CisgICAg
ICAgIChXZWJDb3JlOjpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KTogRGVs
ZXRlZC4KKwogMjAxNS0xMi0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIE1ha2UgU2Vzc2lvbklEIHVzZSBpbnRIYXNoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKaW5kZXggZTVkMjgzN2U5YTYwY2NjYzYxMGQ1OTMwNTAzY2VmOGYxZmFjNWQ4Ny4uNzU5MWVk
MGVjNDYzZDU5NjJmODQ5NzY3ZTE5MDM0YjExMWZhMjdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI2IEBACisyMDE1LTEyLTE3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVtb3ZlIFVTRShDRk5FVFdPUkspK1BMQVRGT1JNKENPQ09BKSBjb2Rl
IHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
NzkzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TWlzYy9XZWJEb3dubG9hZC5tbToKKyAgICAgICAgKiBNaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwu
aDoKKyAgICAgICAgKiBNaXNjL1dlYktpdFZlcnNpb25DaGVja3MuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJv
bU1lbW9yeUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0
ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtb
V2ViUHJlZmVyZW5jZXMgX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2Vw
dFBvbGljeTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dl
YlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6Cisg
ICAgICAgICgtW1dlYlZpZXcgc2NoZWR1bGVJblJ1bkxvb3A6Zm9yTW9kZTpdKTogRGVsZXRlZC4K
KyAgICAgICAgKGZpbmRTdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmll
d1ByaXZhdGUuaDoKKwogMjAxNS0xMi0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRA
Y3JmLmNhbm9uLmZyPgogCiAgICAgICAgIFtGZXRjaCBBUEldIEFkZCBmZXRjaCBBUEkgY29tcGls
ZSB0aW1lIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlMzQ1Y2EyYTdhYmM2MjgzMTliMDg4ZTMzNTRlMmQ2
MzcxOWZjOTc1Li4wZDlmNDQ4Y2Y1NTcwMjc1ZDE0MmYzNzU1ZDIxNzg1ZDBhZTk5YWJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTUtMTItMTcgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgVVNFKENGTkVUV09SSykrUExBVEZPUk0o
Q09DT0EpIGNvZGUgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM3OTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6
d2lsbENhY2hlUmVzcG9uc2VBc3luYyk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL0Rvd25s
b2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAqIFNoYXJlZC9Eb3dubG9hZHMvaW9zL0Rvd25sb2Fk
SU9TLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2Fk
TWFjLm1tOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAg
ICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxh
dGZvcm1EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDZXJ0aWZp
Y2F0ZUluZm8+OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldFBy
aXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbik6CisKIDIwMTUtMTItMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBQcm9ncmVzcyB0b3dhcmRzIGltcGxlbWVudGluZyBkb3dubG9h
ZHMgd2l0aCBOZXR3b3JrU2Vzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggNTkxODE4YzNiZGI4MmJhOWMy
YjVhYTU5YTZkZWI2NGIzMzAxMGM5ZS4uNjI2NGY4ODc3YWFmMTg1YTZiYWZjZDg4NDNkMWM1MmZh
OWIwNGJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC01NDUsOSArNTQ1LDYgQEAKICNpZiBQTEFURk9STShJ
T1MpCiAKICNkZWZpbmUgSEFWRV9SRUFETElORSAxCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKLSNkZWZpbmUgVVNFX0NGTkVUV09SSyAxCi0jZW5kaWYKICNkZWZpbmUgVVNFX1VJS0lUX0VE
SVRJTkcgMQogI2RlZmluZSBVU0VfV0VCX1RIUkVBRCAxCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMDlkM2Q5NGYzMWE2OWM2
ODg3ZDI3NTQwMjQ4NTI2OTkxYmE4Y2NkLi43ZTFlODI2NDRkNTg0ZWY2NTc5N2E4ZDcyZjI4NTNj
YWVjNGEyY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yNzc0LDcgKzI3NzQsNiBAQAogCQk3RTY2RTIzNDE2RDZFQjZDMDBG
N0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U2NkUyMzIxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCAqLzsgfTsKIAkJN0U2NkUyMzQxN0U2RUI2QzAwRjdF
N0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U2NkUyMzIxN0U2RUI2QzAwRjdFN0ZGIC8qIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oICovOyB9OwogCQk3RTdERTFGRDE5NUNFRjI2MDAz
NTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTdERTFGQzE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3Vy
Y2VSZXF1ZXN0Q29jb2EubW0gKi87IH07Ci0JCTdFN0RFMjAyMTk1Q0VGQ0QwMDM1MzYzQiAvKiBS
ZXNvdXJjZVJlcXVlc3RJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RTdERTIwMTE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9T
Lm1tICovOyB9OwogCQk3RThGQURDNDE5OUE5NUIxMDA3MTQ5NjggLyogU3VicmVzb3VyY2VMb2Fk
ZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdFOEZBREMzMTk5QTk1QjEwMDcxNDk2OCAvKiBTdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tICov
OyB9OwogCQk3RTk5QUY1MTBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5k
aWNhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdFOTlBRjUyMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3Iu
Y3BwICovOyB9OwogCQk3RTk5QUY1MzBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxv
d2VkSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RTk5QUY1NDBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNh
dG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTEwMjg1LDcgKzEwMjg0LDYgQEAKIAkJN0U2NkUyMzIxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVBVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3RTY2RTIzMjE3RTZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRD
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTdERTFGQzE5NUNFRjI2
MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJN0U3REUyMDExOTVDRUZDRDAwMzUzNjNCIC8qIFJlc291cmNlUmVx
dWVzdElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291
cmNlUmVxdWVzdElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U4RkFEQzMx
OTlBOTVCMTAwNzE0OTY4IC8qIFN1YnJlc291cmNlTG9hZGVyQ29jb2EubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTk5QUY1MjBCMTM4NDY0NjhGQjAxQTUgLyog
V2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdFOTlBRjU0MEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1
c0FsbG93ZWRJbmRpY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2lu
ZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNjU2Nyw3ICsxNjU2NSw2IEBACiAJCQkJNDQyQUY3QTgxMDJDRERFQTAwOEZENEQzIC8qIFF1
aWNrTG9vay5tbSAqLywKIAkJCQlBMTBEQkY0NjE4RjkyMzE3MDAwRDcwQzYgLyogUXVpY2tMb29r
SGFuZGxlQ2xpZW50LmggKi8sCiAJCQkJN0U0MjhDRTQxM0UzNDA3RjAwM0I2NjFDIC8qIFJlc291
cmNlSGFuZGxlSU9TLm1tICovLAotCQkJCTdFN0RFMjAxMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNv
dXJjZVJlcXVlc3RJT1MubW0gKi8sCiAJCQkJNDRBMjBEQjgwRjg0MTY2QzAwQjNFMUZFIC8qIFdl
YkNvcmVVUkxSZXNwb25zZUlPUy5oICovLAogCQkJCTQ0NEQ0RTIxMEY3MDhCMkUwMDMxNThFMCAv
KiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0gKi8sCiAJCQkpOwpAQCAtMzA3ODQsNyArMzA3ODEs
NiBAQAogCQkJCTUxNEM3NjdDMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDZFMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTdERTFGRDE5NUNFRjI2
MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gaW4gU291cmNlcyAqLywKLQkJCQk3
RTdERTIwMjE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE0Qzc2NTMwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdE1h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjdFMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNv
dXJjZVJlc3BvbnNlQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ3MTEyRDI2RTM4
MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCA1NTEwMzkxYmQzM2QzYTM2Njcx
NTZlODQ1ZmEzMTMxMWMzZjZmOWYzLi45ZGJlMTgzZTY5ZWNiNWRlMWY1NTViN2U1OGNlNDhkNzgz
ZGRlMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNTYsNiAr
NTYsMTAgQEAKICNpbmNsdWRlICJRdWlja0xvb2suaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0o
Q09DT0EpCisjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFpci5oPgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OwpAQCAtMTQ0LDcg
KzE0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgICAgIGNvbnN0IFN0
cmluZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGlu
ZzsgfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICB2
b2lkIHNjaGVkdWxlKFNjaGVkdWxlUGFpciYpOwogICAgICAgICB2b2lkIHVuc2NoZWR1bGUoU2No
ZWR1bGVQYWlyJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDBkODFmZjViYTI4YTIxMDRkNTI4YWVjZmJiYmU3MzU2Y2EyM2I2NzguLjk2MTNl
MzAxYjgzMTdlYWU4MTUyY2YzZThmMDc2YzRkMzljMWQ3MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNzI0LDcgKzcyNCw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JikKICAgICBjYW5jZWwoKTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShD
T0NPQSkKIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWly
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCAwMjdhYzA4ZjIz
MjMxZDQwNzg3ZDEzMDI1NjI2MzMyYjkyNmY0MGZhLi44NTIwMTE3NTRmN2I5MTQ2NzU1MmM4YjVj
YTliMTk3NzE3OTllZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApA
QCAtMTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2lsbFN3aXRjaFRvU3Vic3Rp
dHV0ZVJlc291cmNlKCk7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdm9pZCBzY2hlZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpOwogICAgIHZvaWQgdW5zY2hl
ZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpOwogI2VuZGlmCkBAIC0xNTcsMTIgKzE1Nyw5IEBAIHBy
b3RlY3RlZDoKIAogICAgIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucygpIHsg
cmV0dXJuIG1fb3B0aW9uczsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRX
T1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNwb25z
ZSogd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNl
Kikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKENGTkVUV09S
SykKLSAgICB2aXJ0dWFsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2Uo
UmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKLSNlbmRp
ZgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IDY5YTI0MjI5NzIxZmY2
Y2E5ODk5M2E2OTk3NzAxOGZlZWQ4ZDVjZDguLmVmYWNkZDhkMTMyNDJhMDY0NDM5YWI3MjkwMGIx
OTRjY2JjMDE0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5o
CkBAIC03MywxMiArNzMsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2Vs
KGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2Fu
Y2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIAotI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIE5T
Q2FjaGVkVVJMUmVzcG9uc2UgKndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgTlND
YWNoZWRVUkxSZXNwb25zZSopIG92ZXJyaWRlOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0Ep
ICYmIFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdp
bGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikg
b3ZlcnJpZGU7Ci0jZW5kaWYKIAogI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFD
SykKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNEYXRhQXJyYXkoKSBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0RvY3VtZW50
TG9hZGVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJN
YWMuY3BwCmluZGV4IDdlNzRmMjBmOTcyYjA3OGZlODYyYjU4MWMyODliZWVlNWQwYTEyYzguLmIy
NjE0NGJkMjA1ZjFmNmE3NjZhZWViNTI3ZmNlZjNmOTYyZTE3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCkBAIC0zMyw4ICszMyw2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFBMQVRGT1JNKE1BQykKLQogc3RhdGljIHZv
aWQgc2NoZWR1bGVBbGwoY29uc3QgUmVzb3VyY2VMb2FkZXJNYXAmIGxvYWRlcnMsIFNjaGVkdWxl
UGFpciYgcGFpcikKIHsKICAgICBWZWN0b3I8UmVmUHRyPFJlc291cmNlTG9hZGVyPj4gbG9hZGVy
c0NvcHk7CkBAIC02OSw2ICs2Nyw0IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnVuc2NoZWR1bGUo
U2NoZWR1bGVQYWlyJiBwYWlyKQogICAgIHVuc2NoZWR1bGVBbGwobV9tdWx0aXBhcnRTdWJyZXNv
dXJjZUxvYWRlcnMsIHBhaXIpOwogfQogCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCmluZGV4IGJiOWIx
NGU4MTRiNWIyMzljNzdlNTFhNGRiZjE3Y2Q2NTFjMjZmMDMuLjhhMzI4ZWU1ZmYyODgxZThjMzQ0
NmViNTg4NGNlMmU1YjIyZmNmYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9t
YWMvUmVzb3VyY2VMb2FkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9S
ZXNvdXJjZUxvYWRlck1hYy5tbQpAQCAtMzYsMTkgKzM2LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLQotQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBSZXNv
dXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQotewotICAgIGlmIChtX29wdGlvbnMuc2VuZExv
YWRDYWxsYmFja3MoKSA9PSBEb05vdFNlbmRDYWxsYmFja3MpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgUmV0YWluUHRyPE5TQ2FjaGVkVVJMUmVzcG9uc2U+IG5zQ2FjaGVkUmVzcG9u
c2UgPSBhZG9wdE5TKFtbTlNDYWNoZWRVUkxSZXNwb25zZSBhbGxvY10gX2luaXRXaXRoQ0ZDYWNo
ZWRVUkxSZXNwb25zZTpjYWNoZWRSZXNwb25zZV0pOwotICAgIHJldHVybiBbZnJhbWVMb2FkZXIo
KS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9jdW1lbnRMb2FkZXIoKSwgaWRlbnRpZmll
cigpLCBuc0NhY2hlZFJlc3BvbnNlLmdldCgpKSBfQ0ZDYWNoZWRVUkxSZXNwb25zZV07Ci19Ci0K
LSNlbHNlCi0KIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVS
ZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNlKQog
ewogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MoKSA9PSBEb05vdFNlbmRDYWxs
YmFja3MpCkBAIC01Niw4ICs0Myw2IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFJlc291cmNlTG9h
ZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkCiAgICAgcmV0
dXJuIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLndpbGxDYWNoZVJlc3BvbnNlKGRvY3VtZW50TG9h
ZGVyKCksIGlkZW50aWZpZXIoKSwgcmVzcG9uc2UpOwogfQogCi0jZW5kaWYKLQogI2lmIFVTRShO
RVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9Q
YWdlTWFjLm1tCmluZGV4IDUyNTEwOGZjYTVlZThhODQzMTRhNmQxMDVhZjRhNmQxMzU0MjRlN2Yu
LmY1YzUxZjlhYmZhYTdjNzU3NTAyYzJhY2U4MDgzOWNkNmViMjc5NWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvUGFnZU1hYy5tbQpAQCAtMzQsMTIgKzM0LDE2IEBACiAjaW1wb3J0ICJGcmFtZVRyZWUu
aCIKICNpbXBvcnQgIk1haW5GcmFtZS5oIgogCisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCAi
V2ViQ29yZVRocmVhZC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQ
YWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgYWRk
U2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5M
b29wXSBnZXRDRlJ1bkxvb3BdLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpKTsKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFdlYlRocmVh
ZE5TUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpKTsKICNlbHNlCiAgICAgYWRkU2No
ZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFtOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3Bd
LCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpKTsKICNlbmRpZgpAQCAtNTEsMTQgKzU1LDEyIEBAIHZv
aWQgUGFnZTo6YWRkU2NoZWR1bGVQYWlyKFJlZjxTY2hlZHVsZVBhaXI+JiYgcGFpcikKICAgICAg
ICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlUGFp
ckhhc2hTZXQ+KCk7CiAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMtPmFkZChwYWlyLnB0cigp
KTsKIAotI2lmICFQTEFURk9STShJT1MpCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX21haW5G
cmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkg
ewogICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+c2No
ZWR1bGUocGFpcik7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIg
PSBmcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKQogICAgICAgICAg
ICAgZG9jdW1lbnRMb2FkZXItPnNjaGVkdWxlKHBhaXIpOwogICAgIH0KLSNlbmRpZgogCiAgICAg
Ly8gRklYTUU6IG1ha2UgU2hhcmVkVGltZXJNYWMgdXNlIHRoZXNlIFNjaGVkdWxlUGFpcnMuCiB9
CkBAIC03MSwxNCArNzMsMTIgQEAgdm9pZCBQYWdlOjpyZW1vdmVTY2hlZHVsZVBhaXIoUmVmPFNj
aGVkdWxlUGFpcj4mJiBwYWlyKQogCiAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMtPnJlbW92
ZShwYWlyLnB0cigpKTsKIAotI2lmICFQTEFURk9STShJT1MpCiAgICAgZm9yIChGcmFtZSogZnJh
bWUgPSBtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2
ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVy
ID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVu
dExvYWRlci0+dW5zY2hlZHVsZShwYWlyKTsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBk
b2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVy
KCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+dW5zY2hlZHVsZShwYWlyKTsKICAgICB9
Ci0jZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4
IDk4MGU0MzFmNmQyYzE0NmY1YmMxMWI5NzJlYzY5ZjYwMzU3YzhiNTguLjBhYTE4ZmQxYjVjZmI5
NzA0ZGNhZDI1NDc2YzYxZmE5NmU1OTU0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAt
OTksMTAgKzk5LDYgQEAKICNpbXBvcnQgPFZpZGVvVG9vbGJveC9WaWRlb1Rvb2xib3guaD4KICNl
bmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbmNsdWRlICJDRk5TVVJMQ29ubmVjdGlvblNQ
SS5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSA8T3BlbkdMRVMvRVMz
L2dsZXh0Lmg+CiAjZW5kaWYKQEAgLTQyMSw1OCArNDE3LDYgQEAgc3RhdGljIGRpc3BhdGNoX3F1
ZXVlX3QgZ2xvYmFsUHVsbERlbGVnYXRlUXVldWUoKQogfQogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotY2xhc3MgV2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNs
aWVudD4sIHB1YmxpYyBBdXRoZW50aWNhdGlvbkNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudD4gY3JlYXRl
KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VD
bGllbnQoY2hhbGxlbmdlKSk7Ci0gICAgfQotCi0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJDb3Jl
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudD46OnJlZjsKLSAgICB1c2luZyBSZWZD
b3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50Pjo6ZGVyZWY7
Ci0KLXByaXZhdGU6Ci0gICAgV2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGll
bnQoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlKQotICAgICAgICA6IG1f
Y2hhbGxlbmdlKGNoYWxsZW5nZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2NoYWxsZW5nZSk7
Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3Zl
cnJpZGUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkF1dGhlbnRpY2F0aW9uQ2xp
ZW50KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRD
cmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlh
bCYgY3JlZGVudGlhbCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2Vu
ZGVyXSB1c2VDcmVkZW50aWFsOmNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkgZm9yQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCldOwotICAgIH0KLQotICAgIHZpcnR1YWwg
dm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgW1ttX2NoYWxs
ZW5nZSBzZW5kZXJdIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJl
Y2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSBjYW5jZWxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAgdmlydHVhbCB2
b2lkIHJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoW1ttX2NoYWxs
ZW5nZSBzZW5kZXJdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGVyZm9ybURlZmF1bHRI
YW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOildKQotICAgICAgICAgICAgW1ttX2No
YWxsZW5nZSBzZW5kZXJdIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJl
Y2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChbW21fY2hhbGxlbmdlIHNlbmRlcl0gcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdp
dGhDaGFsbGVuZ2U6KV0pCi0gICAgICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gcmVqZWN0
UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgp
XTsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4g
bV9jaGFsbGVuZ2U7Ci19OwotI2VuZGlmCi0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdp
c3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCkBAIC0xNzg4LDEzICsxNzMyLDcgQEAg
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9h
ZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIG5zQ2hhbGxlbmdlKQogewotI2lmIFVTRShD
Rk5FVFdPUkspCi0gICAgUmVmUHRyPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Q2xpZW50PiBjbGllbnQgPSBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVu
dDo6Y3JlYXRlKG5zQ2hhbGxlbmdlKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxBdXRoQ2hhbGxlbmdl
UmVmPiBjZkNoYWxsZW5nZSA9IGFkb3B0Q0YoW25zQ2hhbGxlbmdlIF9jcmVhdGVDRkF1dGhDaGFs
bGVuZ2VdKTsKLSAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UoY2ZDaGFsbGVu
Z2UuZ2V0KCksIGNsaWVudC5nZXQoKSk7Ci0jZWxzZQogICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIGNoYWxsZW5nZShuc0NoYWxsZW5nZSk7Ci0jZW5kaWYKIAogICAgIHJldHVybiBwbGF5ZXIo
KS0+c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVu
Z2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZUlPUy5tbQppbmRleCA0ZTMwMzY2ZDRlYjdmYWIxODhkZTRjYWU5MGY5
ZDU1MTFmOTA2ZGFiLi4wOWQ1OWM3MTI4MDgzMWQ1ZTc0NTU4MDI1ZDc0NGRhMzgzMjUwOWUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3Rl
bUludGVyZmFjZUlPUy5tbQpAQCAtNTEsMTMgKzUxLDYgQEAgV0VCQ09SRV9FWFBPUlQgdm9pZCAo
KndrQ0ZVUkxSZXF1ZXN0QWxsb3dBbGxQb3N0Q2FjaGluZykoQ0ZVUkxSZXF1ZXN0UmVmKTsKIFdF
QkNPUkVfRVhQT1JUIENGQXJyYXlSZWYgKCp3a0NvcHlOU1VSTFJlc3BvbnNlQ2VydGlmaWNhdGVD
aGFpbikoTlNVUkxSZXNwb25zZSopOwogV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdFbmNvZGluZyAo
KndrR2V0V2ViRGVmYXVsdENGU3RyaW5nRW5jb2RpbmcpKHZvaWQpOwogCi0jaWYgVVNFKENGTkVU
V09SSykKLVdFQkNPUkVfRVhQT1JUIENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgKCp3a0dldERlZmF1
bHRIVFRQQ29va2llU3RvcmFnZSkoKTsKLVdFQkNPUkVfRVhQT1JUIFdLQ0ZVUkxDcmVkZW50aWFs
UmVmICgqd2tDb3B5Q3JlZGVudGlhbEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKShDRlVSTFByb3Rl
Y3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2UpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndr
U2V0Q0ZVUkxSZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZmKShDRk11dGFibGVVUkxSZXF1ZXN0UmVm
LCBib29sKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lv
bikoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiwgQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZik7Ci0jZW5k
aWYKLQogV0VCQ09SRV9FWFBPUlQgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiAoKndrQ3JlYXRlUHJp
dmF0ZVN0b3JhZ2VTZXNzaW9uKShDRlN0cmluZ1JlZik7CiBXRUJDT1JFX0VYUE9SVCBOU1VSTFJl
cXVlc3QqICgqd2tDb3B5UmVxdWVzdFdpdGhTdG9yYWdlU2Vzc2lvbikoQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiwgTlNVUkxSZXF1ZXN0Kik7CiBXRUJDT1JFX0VYUE9SVCBDRkhUVFBDb29raWVTdG9y
YWdlUmVmICgqd2tDb3B5SFRUUENvb2tpZVN0b3JhZ2UpKENGVVJMU3RvcmFnZVNlc3Npb25SZWYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhy
ZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQuaApp
bmRleCBlZmI4ZDdhNDg2MGQwMDNmZjNkN2EwZTNhMWFhZDM3MjJkN2ZjOGVmLi42Mzc3YjhlNWRk
ZmU4ZDk4ZTFiZDBlYjEyMzczMTUxNzk0YmQ0MGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQuaApAQCAtODEsNyArODEsNyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgV2ViVGhyZWFkU2hvdWxkWWllbGQodm9pZCkgeyByZXR1cm4gd2ViVGhyZWFk
U2hvdWxkWWllbGQ7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBXZWJUaHJlYWRTZXRTaG91bGRZaWVs
ZCgpIHsgd2ViVGhyZWFkU2hvdWxkWWllbGQgPSB0cnVlOyB9CiAKIFdFQkNPUkVfRVhQT1JUIENG
UnVuTG9vcFJlZiBXZWJUaHJlYWRSdW5Mb29wKHZvaWQpOwotTlNSdW5Mb29wKiBXZWJUaHJlYWRO
U1J1bkxvb3Aodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBOU1J1bkxvb3AqIFdlYlRocmVhZE5TUnVu
TG9vcCh2b2lkKTsKIFdlYlRocmVhZENvbnRleHQgKldlYlRocmVhZEN1cnJlbnRDb250ZXh0KHZv
aWQpOwogYm9vbCBXZWJUaHJlYWRDb250ZXh0SXNDdXJyZW50KHZvaWQpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAppbmRl
eCA2MGI0ODkwNTczYWQ2YTg1ZDNiMGEzNzNjYzhjYTI1ZmYzOWYwMjExLi5iNjU2NjEzMDdkMDYy
YmQwYTk3Y2QxN2QxZGJhOGExMmY3ZGRlODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKQEAgLTI1NiwxMiArMjU2LDYg
QEAgZXh0ZXJuIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0dldENGVVJMUmVzcG9uc2VIVFRQUmVzcG9u
c2UpKENGVVJMUmVzcG9uc2VSZWYpOwogZXh0ZXJuIENGU3RyaW5nUmVmICgqd2tDb3B5Q0ZVUkxS
ZXNwb25zZVN1Z2dlc3RlZEZpbGVuYW1lKShDRlVSTFJlc3BvbnNlUmVmKTsKIGV4dGVybiB2b2lk
ICgqd2tTZXRDRlVSTFJlc3BvbnNlTUlNRVR5cGUpKENGVVJMUmVzcG9uc2VSZWYsIENGU3RyaW5n
UmVmIG1pbWVUeXBlKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi1leHRlcm4gQ0ZIVFRQQ29va2ll
U3RvcmFnZVJlZiAoKndrR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKSgpOwotZXh0ZXJuIFdL
Q0ZVUkxDcmVkZW50aWFsUmVmICgqd2tDb3B5Q3JlZGVudGlhbEZyb21DRlBlcnNpc3RlbnRTdG9y
YWdlKShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2UpOwotZXh0ZXJuIHZv
aWQgKCp3a1NldENGVVJMUmVxdWVzdFNob3VsZENvbnRlbnRTbmlmZikoQ0ZNdXRhYmxlVVJMUmVx
dWVzdFJlZiwgYm9vbCk7Ci1leHRlcm4gdm9pZCAoKndrU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9u
KShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBDRk11dGFibGVVUkxSZXF1ZXN0UmVmKTsKLSNlbmRp
ZgogI2lmICFQTEFURk9STShJT1MpCiBleHRlcm4gdm9pZCAoKndrU2V0TWV0YWRhdGFVUkwpKE5T
U3RyaW5nICp1cmxTdHJpbmcsIE5TU3RyaW5nICpyZWZlcnJlciwgTlNTdHJpbmcgKnBhdGgpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lz
dGVtSW50ZXJmYWNlLm1tCmluZGV4IDE4OGY0MTI4MTIzYTk2MDhhZGJmZmNjYmY2OWI4ZGFmMzAw
MWNiYzcuLjAzMzkwY2U2OWM1YmZjZWYzYWI1MWU2YTE5NjM3NDUwNmViYWVhMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
Lm1tCkBAIC04OCwxMyArODgsNiBAQCB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0p
KENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bQogdm9pZCAoKndr
U2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBD
RlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcpOwogQ0ZIVFRQTWVzc2FnZVJlZiAo
KndrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJlYWRTdHJlYW1SZWYsIENGVVJMUmVmIHJl
c3BvbnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiAoKndrR2V0RGVm
YXVsdEhUVFBDb29raWVTdG9yYWdlKSgpOwotV0tDRlVSTENyZWRlbnRpYWxSZWYgKCp3a0NvcHlD
cmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UpKENGVVJMUHJvdGVjdGlvblNwYWNlUmVm
IHByb3RlY3Rpb25TcGFjZSk7Ci12b2lkICgqd2tTZXRDRlVSTFJlcXVlc3RTaG91bGRDb250ZW50
U25pZmYpKENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIGJvb2wpOwotdm9pZCAoKndrU2V0UmVxdWVz
dFN0b3JhZ2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBDRk11dGFibGVVUkxSZXF1
ZXN0UmVmKTsKLSNlbmRpZgotCiB2b2lkKiB3a0dldEh5cGhlbmF0aW9uTG9jYXRpb25CZWZvcmVJ
bmRleDsKIAogYm9vbCAoKndrRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVvcGFy
ZCkodm9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1By
b3RlY3Rpb25TcGFjZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
cm90ZWN0aW9uU3BhY2VCYXNlLmNwcAppbmRleCA5M2M0ZGRiYTQ4ZjlmZGIzNzFiOTVjYzI5NzBk
YWM4Y2U4NTliYzM4Li4wMTI2ZGM3OTQ4MzFmNGFmZjZjYWMxMjljMDJlOThjZWVlYzlkMmYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFj
ZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlv
blNwYWNlQmFzZS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlByb3RlY3Rpb25T
cGFjZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykgJiYgIVBMQVRGT1JNKENPQ09BKQorI2lmIFVT
RShDRk5FVFdPUkspCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgPENG
TmV0d29yay9DRlVSTFByb3RlY3Rpb25TcGFjZVByaXYuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgKaW5kZXggNTNlMjRjZDFlYWJmNzBiOGExZWMxZGI0YjY3ZjgzYzU4Yjk4MGM3MC4uMDky
MzkyZWUyNDc0Zjk0MTk2N2IxOTc5ZjRiNzJlZWU2NWEzZjRhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtMTI2LDcgKzEyNiw3
IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRpZENh
bmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uKCkgY29u
c3Q7CiAgICAgaWQgbWFrZURlbGVnYXRlKGJvb2wpOwpAQCAtMjE2LDcgKzIxNiw3IEBAIHB1Ymxp
YzoKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udGludWVX
aWxsQ2FjaGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKICNlbmRpZgotI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoTlNDYWNoZWRV
UkxSZXNwb25zZSAqKTsKICNlbmRpZgogCkBAIC0yMzYsMTAgKzIzNiw2IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ0ZTdHJpbmdSZWYgc3luY2hyb25vdXNMb2FkUnVuTG9v
cE1vZGUoKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBVU0UoQ0ZORVRXT1JLKQot
ICAgIHN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGNyZWF0ZVNTTFByb3BlcnRpZXNGcm9t
TlNVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotI2VuZGlmCi0KICAgICB0eXBl
ZGVmIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+ICgqQnVpbHRpbkNvbnN0cnVjdG9yKShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQp
OwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQnVpbHRpbkNvbnN0cnVjdG9yKGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJvdG9jb2wsIEJ1aWx0aW5Db25zdHJ1Y3Rvcik7CiAKQEAgLTI3NiwxMSArMjcy
LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxp
bmdCZWhhdmlvciwgQ0ZEaWN0aW9uYXJ5UmVmIGNsaWVudFByb3BlcnRpZXMpOwogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKE1BQykK
ICAgICB2b2lkIGNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRV
c2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdC
ZWhhdmlvcik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgIVVTRShDRk5FVFdPUksp
CisjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQgY3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRl
bGVnYXRlLCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRl
bnRTbmlmZiwgU2NoZWR1bGluZ0JlaGF2aW9yLCBOU0RpY3Rpb25hcnkgKmNvbm5lY3Rpb25Qcm9w
ZXJ0aWVzKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmluZGV4IDYxMjNmMTRhY2EyNDg0YmU0
MmE2ZGYxMDBhZjNhYWMzMTliZDJkOWYuLjdhZTczY2Y3MWRjMTE1ZjQwMWYyMDBiM2M0ODFmODg0
OTc5YzczOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC0xMzYsMTEgKzEzNiw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAg
ICAgICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiBtX2Nv
bm5lY3Rpb25EZWxlZ2F0ZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENG
TkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgUmV0YWluUHRyPE5TVVJMQ29u
bmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgICAgICBSZXRhaW5QdHI8aWQ+IG1fZGVsZWdhdGU7
Ci0jZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgYm9vbCBtX3N0YXJ0V2hlblNj
aGVkdWxlZDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNh
dGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGlj
YXRpb25DRi5jcHAKaW5kZXggNzg4M2U0NjkxMTVkZTMyNzk0YzFiMmE0N2RiYjUwMzA4ZTEwOGVj
OS4uZjg3NDVkNTQzYTkwOGM4MzMyY2E4YWYyZjlhMjE2ZTk5NjllZGJmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0Yu
Y3BwCkBAIC01MywxMyArNTMsOCBAQCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aQogCiBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxl
bmdlUmVmIGNmQ2hhbGxlbmdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoZW50aWNhdGlvbkNsaWVudCkK
LSNpZiBQTEFURk9STShDT0NPQSkKLSAgICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShQ
cm90ZWN0aW9uU3BhY2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hh
bGxlbmdlKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlZGVudGlhbChD
RlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRlbnRpYWwoY2ZDaGFsbGVuZ2UpKSwKLSNl
bHNlCiAgICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UoY29yZShDRlVSTEF1dGhDaGFs
bGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2ZDaGFsbGVuZ2UpKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVu
dGlhbChjZkNoYWxsZW5nZSkpLAotI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJldmlvdXNGYWlsdXJlQ291bnQoY2ZDaGFsbGVu
Z2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDRlVSTFJlc3BvbnNlUmVm
KUNGVVJMQXV0aENoYWxsZW5nZUdldEZhaWx1cmVSZXNwb25zZShjZkNoYWxsZW5nZSksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0RXJyb3Io
Y2ZDaGFsbGVuZ2UpKQpAQCAtOTMsMTQgKzg4LDEwIEBAIENGVVJMQXV0aENoYWxsZW5nZVJlZiBj
cmVhdGVDRihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNoYWxsZW5nZSkKIHsK
ICAgICAvLyBGSVhNRTogV2h5IG5vdCBjYWNoZSBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgaW4gbV9j
ZkNoYWxsZW5nZT8gRm91bmRhdGlvbiBjb3VudGVycGFydCBkb2VzIHRoYXQuCiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgcmVzdWx0ID0gQ0ZVUkxBdXRo
Q2hhbGxlbmdlQ3JlYXRlKDAsIGNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuY2ZTcGFj
ZSgpLCBjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLmNmQ3JlZGVudGlhbCgpLAot
I2Vsc2UKICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFsID0gYWRv
cHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpKSk7CiAgICAg
UmV0YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNlUmVmPiBwcm90ZWN0aW9uU3BhY2UgPSBhZG9w
dENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpKTsKIAogICAgIENG
VVJMQXV0aENoYWxsZW5nZVJlZiByZXN1bHQgPSBDRlVSTEF1dGhDaGFsbGVuZ2VDcmVhdGUoMCwg
cHJvdGVjdGlvblNwYWNlLmdldCgpLCBjcmVkZW50aWFsLmdldCgpLAotI2VuZGlmCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUNoYWxsZW5nZS5wcmV2aW91c0Zh
aWx1cmVDb3VudCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
cmVDaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuY2ZVUkxSZXNwb25zZSgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVDaGFsbGVuZ2UuZXJyb3IoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNG
TmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZO
ZXQuY3BwCmluZGV4IDk0N2ZiM2JmOWJlMjZmYjI3ZGI2OTA0ZjBjZWRkM2U5ZTg3M2Q0MTguLmRh
NGEwNjRmNzVhMDc3NmVjZDM1ZmQ2NmVmOGI4MDY1MWE1MDUwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCkBAIC00
Miw3ICs0Miw3IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShXSU4pIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPD0gMTA5MCkKKyNpZiBQTEFURk9STShXSU4pCiBlbnVtIHsKICAgICBDRkhUVFBDb29raWVT
dG9yYWdlQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluID0gMwog
fTsKQEAgLTEwNSwxMyArMTA1LDkgQEAgc3RhdGljIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb3B5
Q29va2llc0ZvclVSTFdpdGhGaXJzdFBhcnR5VVJMKGNvbnN0IE5ldHdvcmtTdG8KIHsKICAgICBi
b29sIHNlY3VyZSA9IHVybC5wcm90b2NvbElzKCJodHRwcyIpOwogCi0jaWYgUExBVEZPUk0oSU9T
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTAwMCkKLSAgICByZXR1cm4gYWRvcHRDRihfQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29r
aWVzRm9yVVJMV2l0aE1haW5Eb2N1bWVudFVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQo
KSwgdXJsLmNyZWF0ZUNGVVJMKCkuZ2V0KCksIGZpcnN0UGFydHkuY3JlYXRlQ0ZVUkwoKS5nZXQo
KSwgc2VjdXJlKSk7Ci0jZWxzZQogICAgIC8vIF9DRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tp
ZXNGb3JVUkxXaXRoTWFpbkRvY3VtZW50VVJMIGlzIG5vdCBhdmFpbGFibGUgb24gb3RoZXIgcGxh
dGZvcm1zLgogICAgIFVOVVNFRF9QQVJBTShmaXJzdFBhcnR5KTsKICAgICByZXR1cm4gYWRvcHRD
RihDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9y
YWdlKCkuZ2V0KCksIHVybC5jcmVhdGVDRlVSTCgpLmdldCgpLCBzZWN1cmUpKTsKLSNlbmRpZgog
fQogCiBzdGF0aWMgQ0ZBcnJheVJlZiBjcmVhdGVDb29raWVzKENGRGljdGlvbmFyeVJlZiBoZWFk
ZXJGaWVsZHMsIENGVVJMUmVmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCmluZGV4IDU2
MDkyNTk3YWFjY2QyNzczZjY5OGIzNWJkNGZjNzE1ODcyYzQwZTQuLjY5ZTMzMmMxM2IxNzBiYmIy
OTkzZWE0YzFkNTc1ODg3YmU2ZWY1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcApAQCAt
MzMsNDIgKzMzLDE4IEBACiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oIgotI2VsaWYgUExBVEZPUk0oV0lOKQorI2lmIFBMQVRGT1JNKFdJ
TikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNl
Lmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZV
UkxDcmVkZW50aWFsU3RvcmFnZS5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Q3JlZGVudGlhbCBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNv
bnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQogewotI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWxDRiA9IGFk
b3B0Q0Yod2tDb3B5Q3JlZGVudGlhbEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKHByb3RlY3Rpb25T
cGFjZS5jZlNwYWNlKCkpKTsKLSAgICByZXR1cm4gQ3JlZGVudGlhbChjcmVkZW50aWFsQ0YuZ2V0
KCkpOwotI2Vsc2UKICAgICBSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY+IHByb3Rl
Y3Rpb25TcGFjZUNGID0gYWRvcHRDRihjcmVhdGVDRihwcm90ZWN0aW9uU3BhY2UpKTsKICAgICBS
ZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFsQ0YgPSBhZG9wdENGKHdrQ29w
eUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFnZShwcm90ZWN0aW9uU3BhY2VDRi5nZXQo
KSkpOwogICAgIHJldHVybiBjb3JlKGNyZWRlbnRpYWxDRi5nZXQoKSk7Ci0jZW5kaWYKLX0KLQot
I2lmIFBMQVRGT1JNKElPUykKLXZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNhdmVUb1BlcnNpc3Rl
bnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBD
cmVkZW50aWFsJiBjcmVkZW50aWFsKQotewotICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxT
dG9yYWdlUmVmPiBzdG9yYWdlQ0YgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VDcmVh
dGUoMCkpOwotCi0gICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBDcmVkZW50aWFs
UGVyc2lzdGVuY2VOb25lKSB7Ci0gICAgICAgIENyZWRlbnRpYWwgc2Vzc2lvbkNyZWRlbnRpYWwo
Y3JlZGVudGlhbCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbik7Ci0gICAgICAgIENG
VVJMQ3JlZGVudGlhbFN0b3JhZ2VTZXREZWZhdWx0Q3JlZGVudGlhbEZvclByb3RlY3Rpb25TcGFj
ZShzdG9yYWdlQ0YuZ2V0KCksIHNlc3Npb25DcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBwcm90
ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgQ0ZVUkxDcmVkZW50
aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0b3JhZ2VD
Ri5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgcHJvdGVjdGlvblNwYWNlLmNmU3Bh
Y2UoKSk7CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCmluZGV4IDE3
MDNjYzkxZjY4YjJhNWU2NGY4NzkyM2NlNmZiYTFkMjdkZDI0MWQuLjFiNGFkNzMwNjZjNzcxOGEw
Y2E1MTQ1MDBlZWQ0ZjdjNGQ5MTQ0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCkBAIC02MSwxNiArNjEsMTEgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIENGRXJyb3JSZWYgY2ZFcnJvcigpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIG9wZXJhdG9yIENGRXJyb3JSZWYoKSBjb25zdDsKIAotI2lmIFVTRShDRk5F
VFdPUkspCi0jaWYgUExBVEZPUk0oV0lOKQorI2lmIFVTRShDRk5FVFdPUkspICYmIFBMQVRGT1JN
KFdJTikKICAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JD
b2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVz
Y3JpcHRpb24sIENGRGF0YVJlZiBjZXJ0aWZpY2F0ZSk7CiAgICAgUENDRVJUX0NPTlRFWFQgY2Vy
dGlmaWNhdGUoKSBjb25zdDsKICAgICB2b2lkIHNldENlcnRpZmljYXRlKENGRGF0YVJlZik7CiAj
ZW5kaWYKLSAgICBSZXNvdXJjZUVycm9yKENGU3RyZWFtRXJyb3IgZXJyb3IpOwotICAgIENGU3Ry
ZWFtRXJyb3IgY2ZTdHJlYW1FcnJvcigpIGNvbnN0OwotICAgIG9wZXJhdG9yIENGU3RyZWFtRXJy
b3IoKSBjb25zdDsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9F
WFBPUlQgUmVzb3VyY2VFcnJvcihOU0Vycm9yICopOwpAQCAtODgsOSArODMsNiBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9kYXRhSXNVcFRvRGF0ZTsKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIG11
dGFibGUgUmV0YWluUHRyPENGRXJyb3JSZWY+IG1fcGxhdGZvcm1FcnJvcjsKLSNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICBtdXRhYmxlIFJldGFpblB0cjxOU0Vycm9yPiBtX3BsYXRmb3JtTlNFcnJv
cjsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBt
X2NlcnRpZmljYXRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggMTMxZmJiMDQ2MTE3MDZmNjRk
ODUwYTFjNTBlMDVlMTRhMmM2ZTEzMy4uYTQ3Yjg5ODJkNTZlY2U0NjNmNDVjZWQwZTk0MGZhNDY2
MjNiYjJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMTc3LDUyICsxNzcsNiBAQCBSZXNvdXJjZUVycm9y
OjpvcGVyYXRvciBDRkVycm9yUmVmKCkgY29uc3QKICAgICByZXR1cm4gY2ZFcnJvcigpOwogfQog
Ci0vLyBGSVhNRTogT25jZSA8cmRhcjovL3Byb2JsZW0vNTA1MDg0MT4gaXMgZml4ZWQgd2UgY2Fu
IHJlbW92ZSB0aGlzIGNvbnN0cnVjdG9yLgotUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihD
RlN0cmVhbUVycm9yIGVycm9yKQotICAgIDogbV9kYXRhSXNVcFRvRGF0ZSh0cnVlKQotewotICAg
IG1faXNOdWxsID0gZmFsc2U7Ci0gICAgbV9lcnJvckNvZGUgPSBlcnJvci5lcnJvcjsKLQotICAg
IHN3aXRjaChlcnJvci5kb21haW4pIHsKLSAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluQ3Vz
dG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluUE9TSVg6Ci0gICAgICAgIG1fZG9t
YWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Uga0NG
U3RyZWFtRXJyb3JEb21haW5NYWNPU1N0YXR1czoKLSAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0
YXR1c0Vycm9yRG9tYWluIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1DRlN0cmVhbUVy
cm9yIFJlc291cmNlRXJyb3I6OmNmU3RyZWFtRXJyb3IoKSBjb25zdAotewotICAgIGxhenlJbml0
KCk7Ci0KLSAgICBDRlN0cmVhbUVycm9yIHJlc3VsdDsKLSAgICByZXN1bHQuZXJyb3IgPSBtX2Vy
cm9yQ29kZTsKLQotICAgIGlmIChtX2RvbWFpbiA9PSAiTlNDdXN0b21FcnJvckRvbWFpbiIpCi0g
ICAgICAgIHJlc3VsdC5kb21haW4gPSBrQ0ZTdHJlYW1FcnJvckRvbWFpbkN1c3RvbTsKLSAgICBl
bHNlIGlmIChtX2RvbWFpbiA9PSAiTlNQT1NJWEVycm9yRG9tYWluIikKLSAgICAgICAgcmVzdWx0
LmRvbWFpbiA9IGtDRlN0cmVhbUVycm9yRG9tYWluUE9TSVg7Ci0gICAgZWxzZSBpZiAobV9kb21h
aW4gPT0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiIpCi0gICAgICAgIHJlc3VsdC5kb21haW4gPSBr
Q0ZTdHJlYW1FcnJvckRvbWFpbk1hY09TU3RhdHVzOwotICAgIGVsc2UgewotICAgICAgICByZXN1
bHQuZG9tYWluID0ga0NGU3RyZWFtRXJyb3JEb21haW5DdXN0b207Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVJlc291cmNl
RXJyb3I6Om9wZXJhdG9yIENGU3RyZWFtRXJyb3IoKSBjb25zdAotewotICAgIHJldHVybiBjZlN0
cmVhbUVycm9yKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVT
RShDRk5FVFdPUkspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAppbmRleCA1YzE0MjA3ZDQxYWEzNmY3OTBi
ZWVjN2MzM2Y0N2JmMmE3YzdkMjUxLi41ZGYxZDAwZDYzZWRlOWNjMmEyNDJmMWQyYTQyNzU0Nzc3
MmNkNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAgLTUzLDE2ICs1Myw2IEBACiAjaW5jbHVk
ZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCi0j
aWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oIgotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaCIKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2luY2x1ZGUgIldlYkNvcmVVUkxSZXNw
b25zZS5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb25Qcml2Lmg+Ci0jaW5j
bHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdFByaXYuaD4KLSNlbmRpZgotI2VuZGlmCi0KICNp
ZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5
c3RlbUludGVyZmFjZS5oPgogI2luY2x1ZGUgPHByb2Nlc3MuaD4KQEAgLTIxOSwxNCArMjA5LDcg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShwcm9w
ZXJ0aWVzRGljdGlvbmFyeS5nZXQoKSwga0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3Bl
cnRpZXMsIHN0cmVhbVByb3BlcnRpZXMpOwogICAgIENGUmVsZWFzZShzdHJlYW1Qcm9wZXJ0aWVz
KTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmIChkLT5tX3VzZXNBc3luY0NhbGxiYWNr
cykKLSAgICAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUgPSBhZG9wdFJlZihuZXcgUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZSh0aGlzKSk7
Ci0gICAgZWxzZQotICAgICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5l
dyBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUodGhpcykp
OwotI2Vsc2UKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUodGhpcykpOwotI2Vu
ZGlmCiAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUtPnNldHVwUmVxdWVzdChyZXF1ZXN0Lmdl
dCgpKTsKIAogICAgIENGVVJMQ29ubmVjdGlvbkNsaWVudF9WNiBjbGllbnQgPSBkLT5tX2Nvbm5l
Y3Rpb25EZWxlZ2F0ZS0+bWFrZUNvbm5lY3Rpb25DbGllbnQoKTsKQEAgLTM2OCwxMiArMzUxLDkg
QEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0
aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2gKIAogICAgIGlmICghZC0+bV91c2VyLmlzTnVsbCgp
ICYmICFkLT5tX3Bhc3MuaXNOdWxsKCkpIHsKICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVu
dGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihDRlVSTENyZWRlbnRpYWxDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgZC0+bV91c2VyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGQtPm1f
cGFzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwLCBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVu
Y2VOb25lKSk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIENyZWRlbnRpYWwgY3JlZGVu
dGlhbCA9IENyZWRlbnRpYWwoY2ZDcmVkZW50aWFsLmdldCgpKTsKLSNlbHNlCisKICAgICAgICAg
Q3JlZGVudGlhbCBjcmVkZW50aWFsID0gY29yZShjZkNyZWRlbnRpYWwuZ2V0KCkpOwotI2VuZGlm
Ci0gICAgICAgIAorCiAgICAgICAgIFVSTCB1cmxUb1N0b3JlOwogICAgICAgICBpZiAoY2hhbGxl
bmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQogICAgICAgICAg
ICAgdXJsVG9TdG9yZSA9IGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKTsKQEAgLTQw
MiwxMiArMzgyLDggQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNl
ZEF1dGhlbnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2gKICAgICAgICAgICAgICAgICAg
ICAgLy8gU3RvcmUgdGhlIGNyZWRlbnRpYWwgYmFjaywgcG9zc2libHkgYWRkaW5nIGl0IGFzIGEg
ZGVmYXVsdCBmb3IgdGhpcyBkaXJlY3RvcnkuCiAgICAgICAgICAgICAgICAgICAgIGQtPm1fY29u
dGV4dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChjcmVkZW50aWFs
LCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2Uo
KS51cmwoKSk7CiAgICAgICAgICAgICAgICAgfQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAg
ICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdl
dCgpLCBjcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxl
bmdlUmVmKCkpOwotI2Vsc2UKICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50
aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKICAg
ICAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlv
bi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdl
UmVmKCkpOwotI2VuZGlmCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTQ1NywyMCArNDMzLDEyIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlCiAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3Rv
cmFnZSgpLnNldCh3ZWJDcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIHVy
bFRvU3RvcmUpOwogCiAgICAgICAgIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKLSNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9j
b25uZWN0aW9uLmdldCgpLCB3ZWJDcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBjaGFsbGVuZ2Uu
Y2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2Vsc2UKICAgICAgICAgICAgIFJldGFpblB0cjxD
RlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0Yod2ViQ3Jl
ZGVudGlhbCkpOwogICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5t
X2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0
aENoYWxsZW5nZVJlZigpKTsKLSNlbmRpZgogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChkLT5t
X2Nvbm5lY3Rpb24pIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgQ0ZVUkxDb25uZWN0
aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRpYWwuY2ZDcmVk
ZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZWxzZQogICAg
ICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENG
KGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVu
dGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdl
LmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRpZgogICAgIH0KIAogICAgIGNsZWFyQXV0
aGVudGljYXRpb24oKTsKQEAgLTYxMSwzMCArNTc5LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6
cGxhdGZvcm1TZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzKQogICAgICAgICBDRlVSTENvbm5l
Y3Rpb25SZXN1bWUoZC0+bV9jb25uZWN0aW9uLmdldCgpKTsKIH0KIAotI2lmIFBMQVRGT1JNKENP
Q09BKQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQot
ewotICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gcGFpci5ydW5Mb29wKCk7Ci0gICAgaWYgKCFy
dW5Mb29wKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdp
dGhSdW5Mb29wKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgcnVuTG9vcCwgcGFpci5tb2RlKCkpOwot
ICAgIGlmIChkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCkgewotICAgICAgICBDRlVSTENvbm5lY3Rp
b25TdGFydChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOwotICAgICAgICBkLT5tX3N0YXJ0V2hlblNj
aGVkdWxlZCA9IGZhbHNlOwotICAgIH0KLX0KLQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hl
ZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCi17Ci0gICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBw
YWlyLnJ1bkxvb3AoKTsKLSAgICBpZiAoIXJ1bkxvb3ApCi0gICAgICAgIHJldHVybjsKLQotICAg
IENGVVJMQ29ubmVjdGlvblVuc2NoZWR1bGVGcm9tUnVuTG9vcChkLT5tX2Nvbm5lY3Rpb24uZ2V0
KCksIHJ1bkxvb3AsIHBhaXIubW9kZSgpKTsKLX0KLSNlbmRpZgotCiBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIFJlc291cmNlSGFuZGxlOjpjdXJyZW50UmVxdWVzdCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGQtPm1fY3VycmVudFJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmNwcAppbmRleCA0ZjdhNzkyOWYxYjExZDg4NGQ4ZDA0NzY4MjEx
MmFkYjY2ZTliYmQ1Li5hMWUxMzgwOWU0NzhiZWY0ZmVhZTczODBkMmFjZGNlYTRkYTExMjNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAK
QEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZS5oIgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAi
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9STShXSU4pCiAj
aW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZVJlcXVlc3QuaAppbmRleCA4YTVlZjA5MDRkM2E2MjVkMzU2MDdjNmE2NzdlZDZlZWZkOWE2
Yzc5Li4xZDBkN2QwMjUyMDMzN2NkMjcwZWRiZGY0MTc4MjZiNTE4ZjY4OGUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgK
QEAgLTYzLDEyICs2Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogICAgICAg
ICAKICNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBXRUJD
T1JFX0VYUE9SVCBSZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0ICopOwotICAgICAgICB2b2lk
IHVwZGF0ZU5TVVJMUmVxdWVzdCgpOwotICAgICAgICB2b2lkIGNsZWFyT3JVcGRhdGVOU1VSTFJl
cXVlc3QoKTsKLSNlbmRpZgotCiAgICAgICAgIFJlc291cmNlUmVxdWVzdChDRlVSTFJlcXVlc3RS
ZWYgY2ZSZXF1ZXN0KQogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKCkKICAgICAg
ICAgICAgICwgbV9jZlJlcXVlc3QoY2ZSZXF1ZXN0KQpAQCAtODgsMTEgKzgyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGFwcGx5V2ViQXJjaGl2ZUhhY2tGb3JNYWlsKCk7
CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgICAg
ICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX2h0
dHBCb2R5IHx8IG1fY2ZSZXF1ZXN0OyB9Ci0jZWxzZQogICAgICAgICBib29sIGVuY29kaW5nUmVx
dWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX2h0dHBCb2R5IHx8IG1fbnNSZXF1
ZXN0OyB9Ci0jZW5kaWYKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxSZXF1ZXN0ICpuc1VS
TFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kpIGNvbnN0OwogCiAgICAgICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBDRlN0cmluZ1JlZiBpc1VzZXJJbml0aWF0ZWRLZXkoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgK
aW5kZXggYWNjMWQ0NTY5NzVjYzEyZjM5YTMzOGRiYjI0Mzk0MWU1N2MyNmQxYS4uYjc5ZjdjNDBl
ZDBjOTRkMWNiZWM5ZTU2ODYzYWM5ZTU2NDFiOTg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTUzLDkgKzUz
LDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9pc051bGwgPSAhY2ZSZXNwb25zZTsKICAg
ICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VSZXNw
b25zZShOU1VSTFJlc3BvbnNlICopOwotI2VuZGlmCiAjZWxzZQogICAgIFJlc291cmNlUmVzcG9u
c2UoTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkKICAgICAgICAgOiBtX2luaXRMZXZlbChVbmlu
aXRpYWxpemVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCmluZGV4IDRiYWU3NGU4MzgxNmMxOTRl
ZGMxNTRkODRjMmRlOGY2ZGQxNmZjOTUuLjFhYTgzN2ZjNzJiNzgyM2VhN2JkZThjYjkwNjM5OGZl
YTc1ZDVhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKQEAgLTMzLDEwICszMyw2IEBACiAj
aW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVzcG9uc2VQcml2Lmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3Rl
bUludGVyZmFjZS5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIENG
U3RyaW5nUmVmIGNvbnN0IGNvbW1vbkhlYWRlckZpZWxkc1tdID0gewpAQCAtNDYsMTMgKzQyLDkg
QEAgc3RhdGljIENGU3RyaW5nUmVmIGNvbnN0IGNvbW1vbkhlYWRlckZpZWxkc1tdID0gewogQ0ZV
UkxSZXNwb25zZVJlZiBSZXNvdXJjZVJlc3BvbnNlOjpjZlVSTFJlc3BvbnNlKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051bGwpIHsKLSNpZiBQTEFURk9STShDT0NP
QSkKLSAgICAgICAgbnNVUkxSZXNwb25zZSgpOwotI2Vsc2UKICAgICAgICAgUmV0YWluUHRyPENG
VVJMUmVmPiB1cmwgPSBtX3VybC5jcmVhdGVDRlVSTCgpOwogICAgICAgICAvLyBGSVhNRTogVGhp
cyBjcmVhdGVzIGEgdmVyeSBpbmNvbXBsZXRlIENGVVJMUmVzcG9uc2UsIHdoaWNoIGRvZXMgbm90
IGV2ZW4gaGF2ZSBhIHN0YXR1cyBjb2RlLgogICAgICAgICBtX2NmUmVzcG9uc2UgPSBhZG9wdENG
KENGVVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJsLmdldCgpLCBtX21pbWVUeXBlLnN0cmluZygpLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBtX3RleHRFbmNv
ZGluZ05hbWUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9y
YWdlQWxsb3dlZCkpOwotI2VuZGlmCiAgICAgfQogCiAgICAgcmV0dXJuIG1fY2ZSZXNwb25zZS5n
ZXQoKTsKQEAgLTExNSw5ICsxMDcsNiBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3Jt
TGF6eUluaXQoSW5pdExldmVsIGluaXRMZXZlbCkKIAogQ2VydGlmaWNhdGVJbmZvIFJlc291cmNl
UmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkgY29uc3QKIHsKLSNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKGFkb3B0Q0Yod2tDb3B5TlNVUkxS
ZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4obnNVUkxSZXNwb25zZSgpKSkpOwotI2VuZGlmCiAgICAg
cmV0dXJuIENlcnRpZmljYXRlSW5mbygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAppbmRleCBmMmNkOTYz
MmMyMGU2NTU3MGRhY2U5YjljMDkxMTA3NzZkNzZlMzE3Li45NDM0ZDNhN2ExYTUwYjU1ZDU4ZDkw
YzZlZGM1MmUyN2Q2MDk1OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmgKQEAgLTMwLDEwICszMCw2IEBACiAj
aW5jbHVkZSA8U2VjdXJpdHkvU2VjQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
IAotI2lmIFVTRShDRk5FVFdPUkspCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZVUkxDcmVkZW50
aWFsKiBDRlVSTENyZWRlbnRpYWxSZWY7Ci0jZW5kaWYKLQogT0JKQ19DTEFTUyBOU1VSTENyZWRl
bnRpYWw7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDE4ICs0OCwxMiBAQCBwdWJsaWM6
CiAKICAgICBDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmLCBDcmVkZW50aWFsUGVyc2lzdGVu
Y2UpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBleHBsaWNpdCBDcmVkZW50aWFsKENGVVJM
Q3JlZGVudGlhbFJlZik7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDcmVk
ZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNF
bXB0eSgpIGNvbnN0OwogCiAgICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9uc0NyZWRlbnRpYWwgJiYgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3Jt
RGF0YShtX25zQ3JlZGVudGlhbC5nZXQoKSk7IH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAg
Q0ZVUkxDcmVkZW50aWFsUmVmIGNmQ3JlZGVudGlhbCgpIGNvbnN0OwotI2VuZGlmCiAgICAgV0VC
Q09SRV9FWFBPUlQgTlNVUkxDcmVkZW50aWFsICpuc0NyZWRlbnRpYWwoKSBjb25zdDsKIAogICAg
IHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgQ3Jl
ZGVudGlhbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9DcmVkZW50aWFsQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbQppbmRleCBkNjk2MWI2NjUyYTBmYWQyYjFkODZlMTg4
NWFmNTI1MTI4OWEyMzcxLi43ZTA1YzQ2M2E1NWFlM2NiMjg5NjU2YmExMzFkOWUyMjQwYzAwNjM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRl
bnRpYWxDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0NyZWRlbnRpYWxDb2NvYS5tbQpAQCAtMjYsMTMgKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiQ3JlZGVudGlhbENvY29hLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQGlu
dGVyZmFjZSBOU1VSTENyZWRlbnRpYWwgKFdlYkRldGFpbHMpCi0tIChpZClfaW5pdFdpdGhDRlVS
TENyZWRlbnRpYWw6KENGVVJMQ3JlZGVudGlhbFJlZiljcmVkZW50aWFsOwotLSAoQ0ZVUkxDcmVk
ZW50aWFsUmVmKSBfQ0ZVUkxDcmVkZW50aWFsOwotQGVuZAotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHRvTlNVUkxDcmVk
ZW50aWFsUGVyc2lzdGVuY2UoQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQpAQCAt
ODQsMjYgKzc3LDEyIEBAIENyZWRlbnRpYWw6OkNyZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYg
b3JpZ2luYWwsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0CiAgICAgfQogfQogCi0jaWYg
VVNFKENGTkVUV09SSykKLUNyZWRlbnRpYWw6OkNyZWRlbnRpYWwoQ0ZVUkxDcmVkZW50aWFsUmVm
IGNyZWRlbnRpYWwpCi0gICAgOiBDcmVkZW50aWFsKGFkb3B0TlMoW1tOU1VSTENyZWRlbnRpYWwg
YWxsb2NdIF9pbml0V2l0aENGVVJMQ3JlZGVudGlhbDpjcmVkZW50aWFsXSkuZ2V0KCkpCi17Ci19
Ci0jZW5kaWYKLQogQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChOU1VSTENyZWRlbnRpYWwgKmNyZWRl
bnRpYWwpCiAgICAgOiBDcmVkZW50aWFsQmFzZShjcmVkZW50aWFsLnVzZXIsIGNyZWRlbnRpYWwu
cGFzc3dvcmQsIHRvQ3JlZGVudGlhbFBlcnNpc3RlbmNlKGNyZWRlbnRpYWwucGVyc2lzdGVuY2Up
KQogICAgICwgbV9uc0NyZWRlbnRpYWwoY3JlZGVudGlhbCkKIHsKIH0KIAotI2lmIFVTRShDRk5F
VFdPUkspCi1DRlVSTENyZWRlbnRpYWxSZWYgQ3JlZGVudGlhbDo6Y2ZDcmVkZW50aWFsKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gW25zQ3JlZGVudGlhbCgpIF9DRlVSTENyZWRlbnRpYWxdOwotfQot
I2VuZGlmCi0KIE5TVVJMQ3JlZGVudGlhbCAqQ3JlZGVudGlhbDo6bnNDcmVkZW50aWFsKCkgY29u
c3QKIHsKICAgICBpZiAobV9uc0NyZWRlbnRpYWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLmgKaW5k
ZXggNzQ4ODJkN2E4OGI3ODMxYjQxNGY5MGRmNzFkMTVkODkyNDRlMjE1Mi4uYjg2YWIwM2Q0ZmYz
MjM1MzQwM2ZmMDdmYWE4MTgxZTUyOTgwZjdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EuaApA
QCAtMjksMTAgKzI5LDYgQEAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VCYXNlLmgiCiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3Ry
dWN0IF9DRlVSTFByb3RlY3Rpb25TcGFjZSogQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY7Ci0jZW5k
aWYKLQogT0JKQ19DTEFTUyBOU1VSTFByb3RlY3Rpb25TcGFjZTsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDcsOSArNDMsNiBAQCBwdWJsaWM6CiAKICAgICBQcm90ZWN0aW9uU3BhY2UoV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIGRlbGV0ZWRWYWx1ZSkgOiBQcm90ZWN0aW9uU3Bh
Y2VCYXNlKGRlbGV0ZWRWYWx1ZSkgeyB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGV4cGxp
Y2l0IFByb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZik7Ci0jZW5kaWYKICAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBQcm90ZWN0aW9uU3BhY2UoTlNVUkxQcm90ZWN0aW9u
U3BhY2UgKik7CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUHJvdGVj
dGlvblNwYWNlJiBhLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGIpOwpAQCAtNTgsOSArNTEsNiBA
QCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlY2VpdmVzQ3JlZGVudGlhbFNl
Y3VyZWx5KCkgY29uc3Q7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJMUHJvdGVjdGlv
blNwYWNlUmVmIGNmU3BhY2UoKSBjb25zdDsKLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIE5T
VVJMUHJvdGVjdGlvblNwYWNlICpuc1NwYWNlKCkgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFj
ZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0
aW9uU3BhY2VDb2NvYS5tbQppbmRleCBhZjRjNGUwNTc2OGMwOGY2M2I2ZGEwZGE5OTkzNDc4NWEx
M2ZiOGEzLi5kYjFmYjUxYmY5OTAyN2JjMmYzNTMwYTVkNTE4YjBmZjdiNzg2MWJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFj
ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJv
dGVjdGlvblNwYWNlQ29jb2EubW0KQEAgLTI2LDIyICsyNiw4IEBACiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIlByb3RlY3Rpb25TcGFjZUNvY29hLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotQGludGVyZmFjZSBOU1VSTFByb3RlY3Rpb25TcGFjZSAoV2ViRGV0YWlscykKLS0gKENGVVJM
UHJvdGVjdGlvblNwYWNlUmVmKSBfQ0ZVUkxQcm90ZWN0aW9uU3BhY2U7Ci0tIChpZClfaW5pdFdp
dGhDRlVSTFByb3RlY3Rpb25TcGFjZTooQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpY2ZQcm90U3Bh
Y2U7Ci1AZW5kCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVU
V09SSykKLVByb3RlY3Rpb25TcGFjZTo6UHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNw
YWNlUmVmIHNwYWNlKQotICAgIDogUHJvdGVjdGlvblNwYWNlKGFkb3B0TlMoW1tOU1VSTFByb3Rl
Y3Rpb25TcGFjZSBhbGxvY10gX2luaXRXaXRoQ0ZVUkxQcm90ZWN0aW9uU3BhY2U6c3BhY2VdKS5n
ZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBzdGF0aWMgUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZSB0
eXBlKE5TVVJMUHJvdGVjdGlvblNwYWNlICpzcGFjZSkKIHsKICAgICBpZiAoW3NwYWNlIGlzUHJv
eHldKSB7CkBAIC0xMDUsMTMgKzkxLDYgQEAgUHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9uU3Bh
Y2UoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKnNwYWNlKQogICAgIG1fbnNTcGFjZSA9IHNwYWNlOwog
fQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJMUHJvdGVjdGlvblNwYWNlUmVmIFByb3RlY3Rp
b25TcGFjZTo6Y2ZTcGFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFtuc1NwYWNlKCkgX0NGVVJM
UHJvdGVjdGlvblNwYWNlXTsKLX0KLSNlbmRpZgotCiBOU1VSTFByb3RlY3Rpb25TcGFjZSAqUHJv
dGVjdGlvblNwYWNlOjpuc1NwYWNlKCkgY29uc3QKIHsKICAgICBpZiAobV9uc1NwYWNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJl
cXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVz
b3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggM2IxYjBhMmY4NzQ3NDdiMzhhMmM4MzgwZmI2NTU5
ODZiZGViOWVjYy4uOWY1ZDAyYWI2NWJjOGNhNDMyYzgyNDI4NGU4YmRjMDFhYjdhMzk1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJl
cXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBAIC01MywxNSArNTMsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBOU1VSTFJlcXVlc3QgKlJlc291cmNlUmVxdWVzdDo6bnNVUkxSZXF1ZXN0KEhUVFBC
b2R5VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNvbnN0CiB7CiAgICAgdXBkYXRlUGxhdGZvcm1S
ZXF1ZXN0KGJvZHlQb2xpY3kpOwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgaWYgKCFtX25zUmVx
dWVzdCkKLSAgICAgICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlcXVlc3QqPih0aGlzKS0+dXBkYXRl
TlNVUkxSZXF1ZXN0KCk7Ci0jZW5kaWYKICAgICByZXR1cm4gW1ttX25zUmVxdWVzdC5nZXQoKSBy
ZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiBDRlVSTFJl
cXVlc3RSZWYgUmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xp
Y3kgYm9keVBvbGljeSkgY29uc3QKIHsKICAgICByZXR1cm4gW25zVVJMUmVxdWVzdChib2R5UG9s
aWN5KSBfQ0ZVUkxSZXF1ZXN0XTsKQEAgLTIyMiw4ICsyMTYsNiBAQCB2b2lkIFJlc291cmNlUmVx
dWVzdDo6c2V0U3RvcmFnZVNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vz
c2lvbikKICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMod2tDb3B5UmVxdWVzdFdpdGhTdG9yYWdl
U2Vzc2lvbihzdG9yYWdlU2Vzc2lvbiwgbV9uc1JlcXVlc3QuZ2V0KCkpKTsKIH0KIAotI2VuZGlm
IC8vIFVTRShDRk5FVFdPUkspCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvUXVpY2tMb29rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2suaAppbmRleCAwZDdlODI1ZWYyYjExODg2YjM4ZGJiM2NiOTNlMDAwYjhiZDJl
ZWU1Li5kMTNmY2ZjZWNlNTYzMzUxNTA5M2QyMTAyMjk0NzhkMmQ5MzlkNjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaApAQCAtNDQsMTEg
KzQ0LDYgQEAgT0JKQ19DTEFTUyBOU1VSTFJlcXVlc3Q7CiBPQkpDX0NMQVNTIE5TVVJMUmVzcG9u
c2U7CiBPQkpDX0NMQVNTIFFMUHJldmlld0NvbnZlcnRlcjsKIAotI2lmIFVTRShDRk5FVFdPUksp
Ci10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxSZXNwb25zZSogQ0ZVUkxSZXNwb25zZVJlZjsKLXR5cGVk
ZWYgc3RydWN0IF9DRlVSTENvbm5lY3Rpb24qIENGVVJMQ29ubmVjdGlvblJlZjsKLSNlbmRpZgot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFF1aWNrTG9va0hhbmRsZUNsaWVudDsKQEAg
LTgyLDkgKzc3LDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNo
b3VsZENyZWF0ZUZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJjZUhhbmRsZSosIE5TVVJM
Q29ubmVjdGlvbiAqLCBOU1VSTFJlc3BvbnNlICosIGlkIGRlbGVnYXRlKTsKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBjcmVh
dGUoUmVzb3VyY2VIYW5kbGUqLCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGUqLCBDRlVSTFJlc3BvbnNlUmVmKTsKLSNlbmRpZgogICAgIC8vIEZJWE1FOiBV
c2Ugb2YgUmVzb3VyY2VMb2FkZXIgaGVyZSBpcyBhIHBsYXRmb3JtIHZpb2xhdGlvbi4KICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3Jl
YXRlKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCkBAIC05Niw5
ICs4OCw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZhaWwoKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UoKTsKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQotICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSgpOwotI2VuZGlmCiAK
ICAgICB2b2lkIHNldENsaWVudChQYXNzUmVmUHRyPFF1aWNrTG9va0hhbmRsZUNsaWVudD4gY2xp
ZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQppbmRleCAxN2VkODY0NmE1OTQ0YTBmMDFlZDU2
ODcwOTdkOTdjYWM3MjA4NGY0Li5kZTA0MDRlMjAyNTljZTcxMWY4ODZlNjFkNzlkOGYwNTUzMThi
Mzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlj
a0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tM
b29rLm1tCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbXBvcnQgIkZpbGVTeXN0ZW1JT1MuaCIKICNp
bXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk5TRmlsZU1hbmFnZXJTUEkuaCIKLSNpbXBvcnQg
IlF1aWNrTG9va1NvZnRMaW5rLmgiCiAjaW1wb3J0ICJSZXNvdXJjZUVycm9yLmgiCiAjaW1wb3J0
ICJSZXNvdXJjZUhhbmRsZS5oIgogI2ltcG9ydCAiUmVzb3VyY2VMb2FkZXIuaCIKICNpbXBvcnQg
IlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oIgogI2ltcG9ydCAiU3luY2hyb25vdXNSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJXZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb3JlVVJMUmVzcG9uc2VJT1Mu
aCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CkBAIC00NiwxNCArNDYsNyBAQAogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgog
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2lt
cG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvbi5oPgotCi1AaW50ZXJmYWNlIE5TVVJMUmVz
cG9uc2UgKFF1aWNrTG9va0RldGFpbHMpCi0rKE5TVVJMUmVzcG9uc2UgKilfcmVzcG9uc2VXaXRo
Q0ZVUkxSZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNwb25zZTsKLS0oQ0ZVUkxSZXNwb25z
ZVJlZilfQ0ZVUkxSZXNwb25zZTsKLUBlbmQKLSNlbmRpZgorI2ltcG9ydCAiUXVpY2tMb29rU29m
dExpbmsuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE5Miw4MyArMTg1LDcg
QEAgY29uc3QgY2hhciogV2ViQ29yZTo6UUxQcmV2aWV3UHJvdG9jb2woKQogICAgIHJldHVybiBw
cmV2aWV3UHJvdG9jb2wuZ2V0KCkuZGF0YSgpOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLS8v
IFRoZSB3YXkgUXVpY2tMb29rIHdvcmtzIGlzIHdlIHBhc3MgaXQgYW4gTlNVUkxDb25uZWN0aW9u
RGVsZWdhdGUgY2FsbGJhY2sgb2JqZWN0IGF0IGNyZWF0aW9uCi0vLyB0aW1lLiBUaGVuIHdlIHBh
c3MgaXQgYWxsIHRoZSBkYXRhIGFzIHdlIHJlY2VpdmUgaXQuIE9uY2Ugd2UndmUgZG93bmxvYWRl
ZCB0aGUgZnVsbCBVUkwsCi0vLyBRdWlja0xvb2sgdHVybnMgYXJvdW5kIGFuZCBzZW5kIHVzLCB0
aHJvdWdoIHRoaXMgZGVsZWdhdGUsIHRoZSBIVE1MIHZlcnNpb24gb2YgdGhlIGZpbGUgd2hpY2gg
d2UKLS8vIHBhc3Mgb24gdG8gV2ViQ29yZS4gVGhlIGZsYWcgbV9maW5pc2hlZExvYWRpbmdEYXRh
SW50b0NvbnZlcnRlciBpbiBRdWlja0xvb2tIYW5kbGUgZGVjaWRlcwotLy8gd2hldGhlciB0byBw
YXNzIHRoZSBkYXRhIHRvIFF1aWNrTG9vayBvciBXZWJDb3JlLgotLy8KLS8vIFRoaXMgd29ya3Mg
ZmluZSB3aGVuIHVzaW5nIE5TIEFQSXMsIGJ1dCB3aGVuIHVzaW5nIENGTmV0d29yaywgd2UgZG9u
J3QgaGF2ZSBhIE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlLgotLy8gU28gd2UgY3JlYXRlIFdlYlF1
aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgYXMgYW4gaW50ZXJtZWRpYXRlIGRlbGVnYXRlIG9iamVj
dCBhbmQgcGFzcyBpdCB0bwotLy8gUUxQcmV2aWV3Q29udmVydGVyLiBUaGUgcHJveHkgZGVsZWdh
dGUgdGhlbiBmb3J3YXJkcyB0aGUgbWVzc2FnZXMgb24gdG8gdGhlIENGTmV0d29yayBjb2RlLgot
QGludGVyZmFjZSBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJM
Q29ubmVjdGlvbkRlbGVnYXRlPiB7Ci0gICAgUmVmUHRyPFN5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZT4gbV9jb25uZWN0aW9uRGVsZWdhdGU7Ci19Ci0KLS0g
KGlkKWluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRlOihTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqKWNvbm5lY3Rpb25EZWxlZ2F0ZTsKLS0gKHZvaWQpY2xl
YXJIYW5kbGU7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJRdWlja0xvb2tIYW5kbGVBc0Rl
bGVnYXRlCi0tIChpZClpbml0V2l0aENvbm5lY3Rpb25EZWxlZ2F0ZTooU3luY2hyb25vdXNSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKiljb25uZWN0aW9uRGVsZWdhdGUKLXsK
LSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGNvbm5lY3Rpb25EZWxlZ2F0ZTsKLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24g
Kiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhQXJyYXk6KE5TQXJyYXkgKilkYXRhQXJyYXkKLXsK
LSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxl
Z2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFu
ZGxlQXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGFBcnJheSgpIik7Ci0gICAgbV9jb25uZWN0aW9u
RGVsZWdhdGUtPmRpZFJlY2VpdmVEYXRhQXJyYXkocmVpbnRlcnByZXRfY2FzdDxDRkFycmF5UmVm
PihkYXRhQXJyYXkpKTsKLX0KLQotLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24g
Kiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhIGxlbmd0aFJlY2VpdmVk
Oihsb25nIGxvbmcpbGVuZ3RoUmVjZWl2ZWQKLXsKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlv
bik7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAg
IExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURh
dGEoKSAtIGRhdGEgbGVuZ3RoID0gJWxkIiwgKGxvbmcpW2RhdGEgbGVuZ3RoXSk7Ci0KLSAgICAv
LyBRdWlja0xvb2sgY29kZSBzZW5kcyB1cyBhIG5pbCBkYXRhIGF0IHRpbWVzLiBUaGUgY2hlY2sg
YmVsb3cgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbgotICAgIC8vIFJlc291cmNlSGFuZGxlTWFj
LmNwcCBhZGRlZCBmb3IgYSBkaWZmZXJlbnQgYnVnLgotICAgIGlmICghW2RhdGEgbGVuZ3RoXSkK
LSAgICAgICAgcmV0dXJuOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRSZWNlaXZlRGF0
YShyZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oZGF0YSksIHN0YXRpY19jYXN0PGludD4obGVu
Z3RoUmVjZWl2ZWQpKTsKLX0KLQotLSAodm9pZCljb25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzoo
TlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgotewotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0
aW9uKTsKLSAgICBpZiAoIW1fY29ubmVjdGlvbkRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0g
ICAgTE9HKE5ldHdvcmssICJXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRGaW5pc2hM
b2FkaW5nKCkiKTsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+ZGlkRmluaXNoTG9hZGluZygp
OwotfQotCi0tICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24g
ZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCi17Ci0gICAgVU5VU0VEX1BBUkFNKGNv
bm5lY3Rpb24pOwotICAgIGlmICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCi0gICAgICAgIHJldHVy
bjsKLSAgICBMT0coTmV0d29yaywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6OmRpZEZh
aWwoKSIpOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRGYWlsKHJlaW50ZXJwcmV0X2Nh
c3Q8Q0ZFcnJvclJlZj4oZXJyb3IpKTsKLX0KLQotLSAodm9pZCljbGVhckhhbmRsZQotewotICAg
IG1fY29ubmVjdGlvbkRlbGVnYXRlID0gbnVsbHB0cjsKLX0KLUBlbmQKLSNlbmRpZgotCi1AaW50
ZXJmYWNlIFdlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgOiBOU09iamVjdCA8TlNV
UkxDb25uZWN0aW9uRGVsZWdhdGU+IHsKK0BpbnRlcmZhY2UgV2ViUmVzb3VyY2VMb2FkZXJRdWlj
a0xvb2tEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZSwgV2ViQ29y
ZVJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsKICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IF9y
ZXNvdXJjZUxvYWRlcjsKICAgICBCT09MIF9oYXNTZW50RGlkUmVjZWl2ZVJlc3BvbnNlOwogICAg
IEJPT0wgX2hhc0ZhaWxlZDsKQEAgLTM1OSw3ICsyNzYsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb246
KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAq
KWVycgogICAgIF9yZXNvdXJjZUxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGVycm9yKSk7
CiB9CiAKLS0gKHZvaWQpY2xlYXJIYW5kbGUKKy0gKHZvaWQpZGV0YWNoSGFuZGxlCiB7CiAgICAg
X3Jlc291cmNlTG9hZGVyID0gbnVsbHB0cjsKICAgICBfcXVpY2tMb29rSGFuZGxlID0gbnVsbHB0
cjsKQEAgLTQxNSwyNiArMzMyLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4g
UXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwKICAgICByZXR1
cm4gV1RGOjptb3ZlKHF1aWNrTG9va0hhbmRsZSk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
c3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlKiBjb25uZWN0aW9uRGVsZWdhdGUsIENGVVJMUmVzcG9uc2VSZWYgY2ZS
ZXNwb25zZSkKLXsKLSAgICBBU1NFUlRfQVJHKGhhbmRsZSwgaGFuZGxlKTsKLSAgICBpZiAoaGFu
ZGxlLT5maXJzdFJlcXVlc3QoKS5yZXF1ZXN0ZXIoKSAhPSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVl
c3Rlcjo6TWFpbiB8fCAhW1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpIGNvbnRh
aW5zT2JqZWN0OihOU1N0cmluZyAqKUNGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShjZlJlc3BvbnNl
KV0pCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgTlNVUkxSZXNwb25zZSAqbnNSZXNw
b25zZSA9IFtOU1VSTFJlc3BvbnNlIF9yZXNwb25zZVdpdGhDRlVSTFJlc3BvbnNlOmNmUmVzcG9u
c2VdOwotICAgIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgKmRlbGVnYXRlID0gW1tbV2Vi
UXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhDb25uZWN0aW9uRGVsZWdh
dGU6Y29ubmVjdGlvbkRlbGVnYXRlXSBhdXRvcmVsZWFzZV07Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFF1aWNrTG9va0hhbmRsZT4gcXVpY2tMb29rSGFuZGxlKG5ldyBRdWlja0xvb2tIYW5kbGUoW2hh
bmRsZS0+Zmlyc3RSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpIFVS
TF0sIG5pbCwgbnNSZXNwb25zZSwgZGVsZWdhdGUpKTsKLSAgICBoYW5kbGUtPmNsaWVudCgpLT5k
aWRDcmVhdGVRdWlja0xvb2tIYW5kbGUoKnF1aWNrTG9va0hhbmRsZSk7Ci0gICAgcmV0dXJuIFdU
Rjo6bW92ZShxdWlja0xvb2tIYW5kbGUpOwotfQotCi1DRlVSTFJlc3BvbnNlUmVmIFF1aWNrTG9v
a0hhbmRsZTo6Y2ZSZXNwb25zZSgpCi17Ci0gICAgcmV0dXJuIFttX25zUmVzcG9uc2UgX0NGVVJM
UmVzcG9uc2VdOwotfQotI2VuZGlmCi0KIGJvb2wgUXVpY2tMb29rSGFuZGxlOjpzaG91bGRDcmVh
dGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIHJldHVybiBbUUxQ
cmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6bWltZVR5cGVd
OwpAQCAtNTAwLDcgKzM5Nyw3IEBAIFF1aWNrTG9va0hhbmRsZTo6flF1aWNrTG9va0hhbmRsZSgp
CiAgICAgTE9HKE5ldHdvcmssICJRdWlja0xvb2tIYW5kbGU6On5RdWlja0xvb2tIYW5kbGUoKSIp
OwogICAgIG1fY29udmVydGVyID0gbnVsbHB0cjsKIAotICAgIFttX2RlbGVnYXRlIGNsZWFySGFu
ZGxlXTsKKyAgICBbbV9kZWxlZ2F0ZSBkZXRhY2hIYW5kbGVdOwogfQogCiBTdHJpbmcgUXVpY2tM
b29rSGFuZGxlOjpwcmV2aWV3RmlsZU5hbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VIYW5kbGVJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbQppbmRleCA2
NjdiOWIxODY2NzQ0MGRlYmZlZmRhMTgwNWI4NGNiNTQ3ODRjNTc5Li5iNzI5ZjBmMzYyMTlkYzQx
ZjNhZGViMzE5NDIxZmY5NjU3ZjQ4MWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbQpAQCAtMSwzOSArMSBA
QAotLy8KLS8vICBSZXNvdXJjZUhhbmRsZUlQaG9uZS5tbQotLy8gIFdlYkNvcmUKLS8vCi0vLyAg
Q29weXJpZ2h0IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLQotI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCi0KLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZTb2NrZXRTdHJlYW1Qcml2
Lmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVxdWVzdFByaXZhdGUuaD4KLQotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlU1NMUHJvcGVydGllc0Zyb21OU1VSTFJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQotewotICAgIE5TU3RyaW5nICpo
b3N0ID0gcmVxdWVzdC51cmwoKS5ob3N0KCk7Ci0gICAgTlNBcnJheSAqY2VydEFycmF5ID0gW05T
VVJMUmVxdWVzdCBhbGxvd3NTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0Omhvc3RdOwot
ICAgIEJPT0wgYWxsb3dzQW55Q2VydGlmaWNhdGUgPSBbTlNVUkxSZXF1ZXN0IGFsbG93c0FueUhU
VFBTQ2VydGlmaWNhdGVGb3JIb3N0Omhvc3RdOwotICAgIGlmICghY2VydEFycmF5ICYmICFhbGxv
d3NBbnlDZXJ0aWZpY2F0ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBDRk11dGFibGVEaWN0
aW9uYXJ5UmVmIHNzbFByb3BzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGlj
dGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBpZiAoY2VydEFycmF5KQotICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShzc2xQcm9wcywgX2tDRlN0cmVhbVNTTFRydXN0ZWRMZWFmQ2VydGlm
aWNhdGVzLCAoQ0ZUeXBlUmVmKSBjZXJ0QXJyYXkpOwotCi0gICAgaWYgKGFsbG93c0FueUNlcnRp
ZmljYXRlKQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzc2xQcm9wcywga0NGU3RyZWFt
U1NMVmFsaWRhdGVzQ2VydGlmaWNhdGVDaGFpbiwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICByZXR1
cm4gc3NsUHJvcHM7Ci19Ci0KLX0KLQotI2VuZGlmCisvLyBSZW1vdmUgbWUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlUmVxdWVzdElPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlUmVxdWVzdElP
Uy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I3ZGM2YmU2MzQ1Y2M1Njk2YTFl
YzZlYmQwMDMyZjMyMzRkZmIwMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJl
cXVlc3RJT1MubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIlJlc291cmNlUmVxdWVzdC5oIgotCi0jaWYgUExBVEZPUk0oSU9TKQotCi1AaW50ZXJm
YWNlIE5TVVJMUmVxdWVzdCAoV2ViTlNVUkxSZXF1ZXN0RGV0YWlscykKLS0gKENGVVJMUmVxdWVz
dFJlZilfQ0ZVUkxSZXF1ZXN0OwotLSAoaWQpX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0OihDRlVSTFJl
cXVlc3RSZWYpcmVxdWVzdDsKLUBlbmQKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgVVNF
KENGTkVUV09SSykKLQotUmVzb3VyY2VSZXF1ZXN0OjpSZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1
ZXN0ICpuc1JlcXVlc3QpCi0gICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKCkKLSAgICAsIG1fY2ZS
ZXF1ZXN0KFtuc1JlcXVlc3QgX0NGVVJMUmVxdWVzdF0pCi0gICAgLCBtX25zUmVxdWVzdChuc1Jl
cXVlc3QpCi17Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVOU1VSTFJlcXVlc3Qo
KQotewotICAgIGlmIChtX2NmUmVxdWVzdCkKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0Om1fY2ZS
ZXF1ZXN0LmdldCgpXSk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpjbGVhck9yVXBkYXRl
TlNVUkxSZXF1ZXN0KCkKLXsKLSAgICAvLyBUaGVyZSBpcyBjbGllbnQgY29kZSB0aGF0IGV4dGVu
ZHMgTlNVUkxSZXF1ZXN0IGFuZCBleHBlY3RzIHRvIGdldCBiYWNrLCBpbiB0aGUgZGVsZWdhdGUK
LSAgICAvLyBjYWxsYmFja3MsIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIHRoYXQgdGhleSBw
YXNzZWQgaW50byBXZWJLaXQuIFRvIGtlZXAgdGhlbiBydW5uaW5nLCB3ZQotICAgIC8vIGNyZWF0
ZSBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSBhbmQgcmV0dXJuIHRoYXQuIFNlZSA8cmRhcjov
Lzk4NDM1ODI+LgotICAgIC8vIEFsc28sIGRldmVsb3BlcnMgcmVhbGx5IHJlYWxseSB3YW50IGFu
IE5TTXV0YWJsZVVSTFJlcXVlc3Qgc28gdHJ5IHRvIGNyZWF0ZSBhbgotICAgIC8vIE5TTXV0YWJs
ZVVSTFJlcXVlc3QgaW5zdGVhZCBvZiBOU1VSTFJlcXVlc3QuCi0gICAgc3RhdGljIENsYXNzIG5z
VVJMUmVxdWVzdENsYXNzID0gW05TVVJMUmVxdWVzdCBjbGFzc107Ci0gICAgc3RhdGljIENsYXNz
IG5zTXV0YWJsZVVSTFJlcXVlc3RDbGFzcyA9IFtOU011dGFibGVVUkxSZXF1ZXN0IGNsYXNzXTsK
LSAgICBDbGFzcyByZXF1ZXN0Q2xhc3MgPSBbbV9uc1JlcXVlc3QuZ2V0KCkgY2xhc3NdOwotCi0g
ICAgaWYgKCFtX2NmUmVxdWVzdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHJlcXVlc3RD
bGFzcyAmJiByZXF1ZXN0Q2xhc3MgIT0gbnNVUkxSZXF1ZXN0Q2xhc3MgJiYgcmVxdWVzdENsYXNz
ICE9IG5zTXV0YWJsZVVSTFJlcXVlc3RDbGFzcykKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBhZG9w
dE5TKFtbcmVxdWVzdENsYXNzIGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6bV9jZlJlcXVl
c3QuZ2V0KCldKTsKLSAgICBlbHNlCi0gICAgICAgIG1fbnNSZXF1ZXN0ID0gbnVsbHB0cjsKLX0K
LQotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KaW5kZXggZTM4YjAzODdkZTA0
NmM3YzAxNTc0M2Q3YmI3ZWEzNmU0MDkzODAyMi4uYTgyYTU1YzMzODgzN2Q3MGUyZTFhNWIwMzJj
NzJiYzkzMzY5OGUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KQEAgLTMyLDE4ICszMiwxMiBAQAogI2lt
cG9ydCA8Rm91bmRhdGlvbi9OU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0
IDxGb3VuZGF0aW9uL05TVVJMUHJvdGVjdGlvblNwYWNlLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotI2ltcG9ydCAiQ0ZOU1VSTENvbm5lY3Rpb25TUEkuaCIKLSNlbmRpZgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFjZSBXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRB
c0NoYWxsZW5nZVNlbmRlciA6IE5TT2JqZWN0IDxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
U2VuZGVyPgogewogICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBtX2NsaWVudDsKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQotICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiBtX2NmQ2hhbGxlbmdlOwotI2Vu
ZGlmCiB9CiAtIChpZClpbml0V2l0aEF1dGhlbnRpY2F0aW9uQ2xpZW50OihBdXRoZW50aWNhdGlv
bkNsaWVudCopY2xpZW50OwogLSAoQXV0aGVudGljYXRpb25DbGllbnQqKWNsaWVudDsKQEAgLTg5
LDQ3ICs4MywxMCBAQCAtICh2b2lkKWNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlCiAgICAgICAgIG1fY2xpZW50LT5y
ZWNlaXZlZENhbmNlbGxhdGlvbihjb3JlKGNoYWxsZW5nZSkpOwogfQogCi0jaWYgVVNFKENGTkVU
V09SSykKLS0gKHZvaWQpc2V0Q0ZDaGFsbGVuZ2U6KENGVVJMQXV0aENoYWxsZW5nZVJlZiljaGFs
bGVuZ2UKLXsKLSAgICBtX2NmQ2hhbGxlbmdlID0gY2hhbGxlbmdlOwotfQotCi0tIChDRlVSTEF1
dGhDaGFsbGVuZ2VSZWYpY2ZDaGFsbGVuZ2UKLXsKLSAgICByZXR1cm4gbV9jZkNoYWxsZW5nZTsK
LX0KLSNlbmRpZgotCiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShDRk5F
VFdPUkspCi0KLUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSAqbWFjQ2hhbGxlbmdlKQotewotICAgIFdlYkNvcmVBdXRoZW50aWNhdGlvbkNs
aWVudEFzQ2hhbGxlbmdlU2VuZGVyICpjaGFsbGVuZ2VTZW5kZXIgPSAoV2ViQ29yZUF1dGhlbnRp
Y2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIqKSBbbWFjQ2hhbGxlbmdlIHNlbmRlcl07Ci0g
ICAgcmV0dXJuIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFtjaGFsbGVuZ2VTZW5kZXIgY2ZDaGFs
bGVuZ2VdLCBbY2hhbGxlbmdlU2VuZGVyIGNsaWVudF0pOwotfQotCi1OU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlICptYWMoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFs
bGVuZ2UpCi17Ci0gICAgQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhDbGllbnQgPSBjb3JlQ2hh
bGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7Ci0gICAgUmV0YWluUHRyPFdlYkNvcmVBdXRo
ZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyPiBjaGFsbGVuZ2VTZW5kZXIgPSBhZG9w
dE5TKFtbV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgYWxsb2Nd
IGluaXRXaXRoQXV0aGVudGljYXRpb25DbGllbnQ6YXV0aENsaWVudF0pOwotICAgIFJldGFpblB0
cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IGF1dGhDaGFsbGVuZ2UgPSBjb3JlQ2hhbGxlbmdlLmNm
VVJMQXV0aENoYWxsZW5nZVJlZigpOwotICAgIGlmICghYXV0aENoYWxsZW5nZSkKLSAgICAgICAg
YXV0aENoYWxsZW5nZSA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZSkpOwotICAgIFtj
aGFsbGVuZ2VTZW5kZXIuZ2V0KCkgc2V0Q0ZDaGFsbGVuZ2U6YXV0aENoYWxsZW5nZS5nZXQoKV07
Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIHJldHVybiBbW05TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgX2NyZWF0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRm9yQ0ZBdXRoQ2hhbGxlbmdlOmF1
dGhDaGFsbGVuZ2UuZ2V0KCkgc2VuZGVyOmNoYWxsZW5nZVNlbmRlci5nZXQoKV0gYXV0b3JlbGVh
c2VdOwotI2Vsc2UKLSAgICByZXR1cm4gW1tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIF9h
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUZvckNGQXV0aENoYWxsZW5nZTphdXRoQ2hhbGxlbmdlLmdl
dCgpIHNlbmRlcjpjaGFsbGVuZ2VTZW5kZXIuZ2V0KCldIGF1dG9yZWxlYXNlXTsKLSNlbmRpZgot
fQotCi0jZWxzZQotCiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ3JlZGVudGlhbCYg
cHJvcG9zZWRDcmVkZW50aWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNvdW50LApAQCAtMjAzLDYgKzE2
MCw0IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAqbWFjQ2hhbGxlbmdlKQogICAgIHJldHVybiBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShtYWNDaGFsbGVuZ2UpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvQ29va2llSmFyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvQ29va2llSmFyTWFjLm1tCmluZGV4IDE2ZDEwZTIwNzAwNDFhODdlNDYzY2VmMjQ3NGMz
YzQ4OWRkM2ZhZWEuLjgyZDRmNWZlMjUyYThlY2JlZTc2YjI3YTQyMmY1MTczNzQyODBhYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJN
YWMubW0KQEAgLTMxLDggKzMxLDYgQEAKICNpbXBvcnQgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
IgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogCi0jaWYgIVVTRShDRk5FVFdP
UkspCi0KICNpbXBvcnQgIkNvb2tpZS5oIgogI2ltcG9ydCAiQ29va2llU3RvcmFnZS5oIgogI2lt
cG9ydCAiVVJMLmgiCkBAIC0yMDAsMTIgKzE5OCw2IEBAIHZvaWQgZGVsZXRlQWxsQ29va2llcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pCiAgICAgd2tEZWxldGVBbGxIVFRQ
Q29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSk7CiB9CiAKLX0KLQotI2VuZGlm
IC8vICFVU0UoQ0ZORVRXT1JLKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIHN0YXRpYyBOU0hU
VFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbikKIHsKICAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0
b3JhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KaW5kZXggOWViYzg1NGRjZGI0OGQ1N2U4Zjgy
ODY5NDQyNGVjZDQ5YjczMzZlYy4uZjBhNGYzYWY3NjQxNWNiMjZjMjk0YmQ4MTM5MTNmZTIyMzNi
Mzc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3Jl
ZGVudGlhbFN0b3JhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJDcmVkZW50aWFsU3RvcmFnZS5oIgogCi0jaWYgIVVTRShD
Rk5FVFdPUkspCi0KICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hYy5oIgogI2luY2x1ZGUgIkNy
ZWRlbnRpYWwuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIKQEAgLTUyLDUgKzUwLDMg
QEAgdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6c2F2ZVRvUGVyc2lzdGVudFN0b3JhZ2UoY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW8KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCmluZGV4IGRiODFj
NjY4N2M0MjJlNWVjYmMzNjkwZTIzNDVhZjgyMjRhZDA2YzYuLmUyYzhiODk2YThhMjQ4OTdiMTJm
MDJlNDdlYjA1NTExZDliZDQwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaApAQCAtMjksOCArMjksNiBAQAog
I2lmbmRlZiBGb3JtRGF0YVN0cmVhbU1hY19oCiAjZGVmaW5lIEZvcm1EYXRhU3RyZWFtTWFjX2gK
IAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMUmVxdWVzdCogQ0ZVUkxSZXF1ZXN0UmVmOwpAQCAtNDks
NiArNDcsNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogCiAjZW5kaWYgLy8gRm9ybURhdGFTdHJlYW1N
YWNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9y
bURhdGFTdHJlYW1NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9G
b3JtRGF0YVN0cmVhbU1hYy5tbQppbmRleCBiNTczNGY5OGVkZmJmMTEzNWUxN2Q0YjdlYmMyOWNj
NTVmZTA0MzUxLi43YjdkMWQzYTE1ZTM5NTc0M2M5NDQ5MTgzNGMzMjk4ZTIzY2ZhMThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVh
bU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0
YVN0cmVhbU1hYy5tbQpAQCAtMjksOCArMjksNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJGb3JtRGF0YVN0cmVhbU1hYy5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbXBv
cnQgIkZvcm1EYXRhLmgiCiAjaW1wb3J0ICJGb3JtRGF0YVN0cmVhbUNGTmV0LmgiCiAjaW1wb3J0
IDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNTIsNSArNTAsMyBAQCBGb3JtRGF0YSogaHR0cEJvZHlG
cm9tU3RyZWFtKE5TSW5wdXRTdHJlYW0gKnN0cmVhbSkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQppbmRleCBmN2M4
NjRjZTNiNTA5OWZlMDJmMTY5NjlhY2UzOTdmNjgyZTgzZGJhLi5mYjc3NjZmNTc2YjJmYmMxNjM4
MjVmZmE5MjI4YzMyNWY4ODA5ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KQEAgLTMxLDEwICszMSw2IEBA
CiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KIAotI2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENGTkVUV09SSykKLSNp
bXBvcnQgPENGTmV0d29yay9DRlNvY2tldFN0cmVhbVByaXYuaD4KLSNlbmRpZgotCiBAaW50ZXJm
YWNlIE5TRXJyb3IgKFdlYkV4dHJhcykKIC0gKE5TU3RyaW5nICopX3dlYl9sb2NhbGl6ZWREZXNj
cmlwdGlvbjsKIEBlbmQKQEAgLTkxLDg1ICs4Nyw2IEBAIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVy
OihOU0NvZGVyICopY29kZXIKIAogQGVuZAogCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotc3RhdGlj
IE5TRXJyb3IgKk5TRXJyb3JGcm9tQ0ZFcnJvcihDRkVycm9yUmVmIGNmRXJyb3IsIE5TVVJMICp1
cmwpCi17Ci0gICAgQ0ZJbmRleCBlcnJDb2RlID0gQ0ZFcnJvckdldENvZGUoY2ZFcnJvcik7Ci0g
ICAgaWYgKENGRXF1YWwoQ0ZFcnJvckdldERvbWFpbihjZkVycm9yKSwga0NGRXJyb3JEb21haW5D
Rk5ldHdvcmspICYmIGVyckNvZGUgPD0ga0NGVVJMRXJyb3JVbmtub3duICYmIGVyckNvZGUgPiAt
NDAwMCkgewotICAgICAgICAvLyBUaGlzIGlzIGFuIFVSTCBlcnJvciBhbmQgbmVlZHMgdG8gYmUg
dHJhbnNsYXRlZCB0byB0aGUgTlNVUkxFcnJvckRvbWFpbgotICAgICAgICBpZCBrZXlzWzEwXSwg
dmFsdWVzWzEwXTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHVzZXJJbmZvID0gQ0ZFcnJvckNv
cHlVc2VySW5mbyhjZkVycm9yKTsKLSAgICAgICAgTlNFcnJvciAqcmVzdWx0OwotICAgICAgICBO
U0ludGVnZXIgY291bnQgPSAwOwotCi0gICAgICAgIGlmICh1cmwpIHsKLSAgICAgICAgICAgIGtl
eXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxFcnJvcktleTsKLSAgICAgICAgICAgIHZh
bHVlc1tjb3VudF0gPSB1cmw7Ci0gICAgICAgICAgICBjb3VudCArKzsKLQotICAgICAgICAgICAg
a2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5OwotICAgICAg
ICAgICAgdmFsdWVzW2NvdW50XSA9IFt1cmwgYWJzb2x1dGVTdHJpbmddOwotICAgICAgICAgICAg
Y291bnQgKys7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGlj
dGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0aW9uS2V5
KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRd
ID0gTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleTsKLSAgICAgICAgICAgIGNvdW50ICsrOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1
ZSh1c2VySW5mbywga0NGRXJyb3JMb2NhbGl6ZWRGYWlsdXJlUmVhc29uS2V5KTsKLSAgICAgICAg
aWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2NhbGl6
ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk7Ci0gICAgICAgICAgICBjb3VudCArKzsKLSAgICAgICAg
fQotCi0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNl
ckluZm8sIGtDRkVycm9yTG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uS2V5KTsKLSAgICAgICAg
aWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2NhbGl6
ZWRSZWNvdmVyeVN1Z2dlc3Rpb25FcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50ICsrOwotICAg
ICAgICB9Ci0KLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICAgICAgaWYg
KHVzZXJJbmZvICYmICh2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVz
ZXJJbmZvLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNTTFBlZXJDZXJ0aWZpY2F0ZXMpKSAhPSBuaWwpIHsK
LSAgICAgICAgICAgIC8vIE5lZWQgdG8gdHJhbnNsYXRlIHRoZSBjZXJ0Ci0gICAgICAgICAgICBr
ZXlzW2NvdW50XSA9IEAiTlNFcnJvclBlZXJDZXJ0aWZpY2F0ZUNoYWluS2V5IjsKLSAgICAgICAg
ICAgIGNvdW50ICsrOwotCi0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlv
bmFyeUdldFZhbHVlKHVzZXJJbmZvLCBfa0NGU3RyZWFtUHJvcGVydHlTU0xDbGllbnRDZXJ0aWZp
Y2F0ZXMpOwotICAgICAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgICAg
ICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvckNsaWVudENlcnRpZmljYXRlQ2hhaW5LZXkiOwotICAg
ICAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YWx1
ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBfa0NGU3RyZWFt
UHJvcGVydHlTU0xDbGllbnRDZXJ0aWZpY2F0ZVN0YXRlKTsKLSAgICAgICAgICAgIGlmICh2YWx1
ZXNbY291bnRdKSB7Ci0gICAgICAgICAgICAgICAga2V5c1tjb3VudF0gPSBAIk5TRXJyb3JDbGll
bnRDZXJ0aWZpY2F0ZVN0YXRlS2V5IjsKLSAgICAgICAgICAgICAgICBjb3VudCArKzsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotCi0gICAg
ICAgIGlmICh1c2VySW5mbyAmJiAodmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRW
YWx1ZSh1c2VySW5mbywga0NGU3RyZWFtUHJvcGVydHlTU0xQZWVyVHJ1c3QpKSAhPSBuaWwpIHsK
LSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxQZWVyVHJ1c3RF
cnJvcktleTsKLSAgICAgICAgICAgIGNvdW50Kys7Ci0gICAgICAgIH0KLQotICAgICAgICBrZXlz
W2NvdW50XSA9IE5TVW5kZXJseWluZ0Vycm9yS2V5OwotICAgICAgICB2YWx1ZXNbY291bnRdID0g
KGlkKWNmRXJyb3I7Ci0gICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgIHJlc3VsdCA9IFtXZWJD
dXN0b21OU1VSTEVycm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6KGVy
ckNvZGUgPT0ga0NGVVJMRXJyb3JVbmtub3duID8gKENGSW5kZXgpTlNVUkxFcnJvclVua25vd24g
OiBlcnJDb2RlKSB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0czp2
YWx1ZXMgZm9yS2V5czprZXlzIGNvdW50OmNvdW50XV07Ci0gICAgICAgIGlmICh1c2VySW5mbykK
LSAgICAgICAgICAgIENGUmVsZWFzZSh1c2VySW5mbyk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgfQotICAgIHJldHVybiAoTlNFcnJvciAqKWNmRXJyb3I7Ci19Ci0jZW5kaWYgLy8gVVNF
KENGTkVUV09SSykKLQogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMTkzLDUzICsxMTAsNiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0
ZU5TRXJyb3JGcm9tUmVzb3VyY2VFcnJvckJhc2UoY29uc3QgUmVzb3VyY2VFcnJvcgogICAgIHJl
dHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46cmVzb3VyY2VFcnJv
ci5kb21haW4oKSBjb2RlOnJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCkgdXNlckluZm86dXNlcklu
Zm8uZ2V0KCldKTsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLVJlc291cmNlRXJyb3I6OlJl
c291cmNlRXJyb3IoTlNFcnJvciAqZXJyb3IpCi0gICAgOiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNl
KQotICAgICwgbV9wbGF0Zm9ybUVycm9yKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZFcnJvclJlZj4oZXJy
b3IpKQotewotICAgIG1faXNOdWxsID0gIWVycm9yOwotICAgIGlmICghbV9pc051bGwpCi0gICAg
ICAgIG1faXNUaW1lb3V0ID0gW2Vycm9yIGNvZGVdID09IE5TVVJMRXJyb3JUaW1lZE91dDsKLX0K
LQotTlNFcnJvciAqUmVzb3VyY2VFcnJvcjo6bnNFcnJvcigpIGNvbnN0Ci17Ci0gICAgaWYgKG1f
aXNOdWxsKSB7Ci0gICAgICAgIEFTU0VSVCghbV9wbGF0Zm9ybUVycm9yKTsKLSAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICB9Ci0KLSAgICBpZiAobV9wbGF0Zm9ybU5TRXJyb3IpCi0gICAgICAgIHJl
dHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLQotICAgIGlmIChtX3BsYXRmb3JtRXJyb3Ip
IHsKLSAgICAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG1fcGxhdGZvcm1FcnJvci5nZXQoKTsKLSAg
ICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gdXNlckluZm8gPSBhZG9wdENGKENGRXJy
b3JDb3B5VXNlckluZm8oZXJyb3IpKTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIG1fcGxh
dGZvcm1OU0Vycm9yID0gTlNFcnJvckZyb21DRkVycm9yKGVycm9yLCAoTlNVUkwgKilbKE5TRGlj
dGlvbmFyeSAqKXVzZXJJbmZvLmdldCgpIG9iamVjdEZvcktleTooaWQpIGtDRlVSTEVycm9yRmFp
bGluZ1VSTEVycm9yS2V5XSk7Ci0gICAgICAgIC8vIElmIE5TRXJyb3JGcm9tQ0ZFcnJvciBjcmVh
dGVkIGEgbmV3IE5TRXJyb3IgZm9yIHVzLCByZXR1cm4gdGhhdC4KLSAgICAgICAgaWYgKG1fcGxh
dGZvcm1OU0Vycm9yLmdldCgpICE9IChOU0Vycm9yICopZXJyb3IpCi0gICAgICAgICAgICByZXR1
cm4gbV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCk7Ci0KLSAgICAgICAgLy8gT3RoZXJ3aXNlIGZhbGwg
dGhyb3VnaCB0byBjcmVhdGUgYSBuZXcgTlNFcnJvciBmcm9tIHRoZSBDRkVycm9yLgotI2VuZGlm
Ci0gICAgICAgIG1fcGxhdGZvcm1OU0Vycm9yID0gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGlu
aXRXaXRoRG9tYWluOihOU1N0cmluZyAqKUNGRXJyb3JHZXREb21haW4oZXJyb3IpIGNvZGU6Q0ZF
cnJvckdldENvZGUoZXJyb3IpIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mby5nZXQo
KV0pOwotICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCk7Ci0gICAgfQotCi0g
ICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBjcmVhdGVOU0Vycm9yRnJvbVJlc291cmNlRXJyb3JCYXNl
KCp0aGlzKTsKLSAgICByZXR1cm4gbV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCk7Ci19Ci0KLVJlc291
cmNlRXJyb3I6Om9wZXJhdG9yIE5TRXJyb3IgKigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG5zRXJy
b3IoKTsKLX0KLQotI2Vsc2UKLQogUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihOU0Vycm9y
ICpuc0Vycm9yKQogICAgIDogbV9kYXRhSXNVcFRvRGF0ZShmYWxzZSkKICAgICAsIG1fcGxhdGZv
cm1FcnJvcihuc0Vycm9yKQpAQCAtMzEyLDYgKzE4Miw0IEBAIFJlc291cmNlRXJyb3I6Om9wZXJh
dG9yIENGRXJyb3JSZWYoKSBjb25zdAogICAgIHJldHVybiBjZkVycm9yKCk7CiB9CiAKLSNlbmRp
ZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFj
Lm1tCmluZGV4IGNkYmUwMjU4ZDQwMTIxZjMxNDBiNGY0Nzk0MGNmYjkzZmU3NzE5NjQuLjYyZTc3
YmI2MTI4ODczMmRhMjlhZWRkNzI2MmI0MDRhMTMwOTI1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCkBA
IC01NywxNiArNTcsNiBAQAogI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW1wb3J0IDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIF9faGFzX2luY2x1
ZGUoPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb25Qcml2Lmg+KQotI2ltcG9ydCA8Q0ZOZXR3b3Jr
L0NGVVJMQ29ubmVjdGlvblByaXYuaD4KLSNlbmRpZgotdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQ29u
bmVjdGlvbiogQ0ZVUkxDb25uZWN0aW9uUmVmOwotZXh0ZXJuICJDIiB7Ci1DRkRpY3Rpb25hcnlS
ZWYgX0NGVVJMQ29ubmVjdGlvbkNvcHlUaW1pbmdEYXRhKENGVVJMQ29ubmVjdGlvblJlZik7Ci19
Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQg
IkNGTmV0d29ya1NQSS5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgi
CkBAIC04OCw5ICs3OCw3IEBAIC0oaWQpX2luaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdCBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUgdXNlc0NhY2hlOihCCiBAZW5kCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICAKLSNpZiAhVVNFKENGTkVUV09SSykKLSAgICAKKwogc3RhdGlj
IHZvaWQgYXBwbHlCYXNpY0F1dGhvcml6YXRpb25IZWFkZXIoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogewogICAgIFN0cmluZyBhdXRoZW50
aWNhdGlvbkhlYWRlciA9ICJCYXNpYyAiICsgYmFzZTY0RW5jb2RlKFN0cmluZyhjcmVkZW50aWFs
LnVzZXIoKSArICI6IiArIGNyZWRlbnRpYWwucGFzc3dvcmQoKSkudXRmOCgpKTsKQEAgLTI2OSwx
MiArMjU3LDYgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogICAgICAgICBbY29ubmVj
dGlvbigpIHNldERlbGVnYXRlUXVldWU6b3BlcmF0aW9uUXVldWVGb3JBc3luY0NsaWVudHMoKV07
CiAgICAgICAgIHNjaGVkdWxlZCA9IHRydWU7CiAgICAgfQotI2lmIFBMQVRGT1JNKElPUykKLSAg
ICBlbHNlIHsKLSAgICAgICAgW2Nvbm5lY3Rpb24oKSBzY2hlZHVsZUluUnVuTG9vcDpXZWJUaHJl
YWROU1J1bkxvb3AoKSBmb3JNb2RlOk5TRGVmYXVsdFJ1bkxvb3BNb2RlXTsKLSAgICAgICAgc2No
ZWR1bGVkID0gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKIAogICAgIC8vIFN0YXJ0IHRoZSBjb25uZWN0
aW9uIGlmIHdlIGRpZCBzY2hlZHVsZSB3aXRoIGF0IGxlYXN0IG9uZSBydW5sb29wLgogICAgIC8v
IFdlIGNhbid0IHN0YXJ0IHRoZSBjb25uZWN0aW9uIHVudGlsIHdlIGhhdmUgb25lIHJ1bmxvb3Ag
c2NoZWR1bGVkLgpAQCAtMzE0LDggKzI5Niw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRm
b3JtU2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKICAgICAgICAgW2QtPm1fY29ubmVjdGlv
biBzZXREZWZlcnNDYWxsYmFja3M6ZGVmZXJzXTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKLQog
dm9pZCBSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQogewogICAg
IE5TUnVuTG9vcCAqcnVuTG9vcCA9IHBhaXIubnNSdW5Mb29wKCk7CkBAIC0zMzQsOCArMzE0LDYg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiAg
ICAgICAgIFtkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkgdW5zY2hlZHVsZUZyb21SdW5Mb29wOnJ1bkxv
b3AgZm9yTW9kZTooTlNTdHJpbmcgKilwYWlyLm1vZGUoKV07CiB9CiAKLSNlbmRpZgotCiBpZCBS
ZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UpCiB7CiAgICAgQVNTRVJUKCFkLT5tX2RlbGVnYXRlKTsKQEAgLTcyNCwyNyArNzAyLDE0IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoTlNDYWNoZWRV
UkxSZXNwb25zZSAqcmVzcG9uc2UpCiAKICAgICBbKGlkKWRlbGVnYXRlKCkgY29udGludWVXaWxs
Q2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9Ci0gICAgCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdP
UkspCi0gICAgCisKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKIAotI2lmIFVTRShDRk5FVFdPUksp
Ci0gICAgCi12b2lkIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShDRlVS
TENvbm5lY3Rpb25SZWYgY29ubmVjdGlvbiwgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcpCi17
Ci0gICAgY29weVRpbWluZ0RhdGEoKF9fYnJpZGdlIE5TRGljdGlvbmFyeSopYWRvcHRDRihfQ0ZV
UkxDb25uZWN0aW9uQ29weVRpbWluZ0RhdGEoY29ubmVjdGlvbikpLmdldCgpLCB0aW1pbmcpOwot
fQotICAgIAotI2Vsc2UKLSAgICAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25U
aW1pbmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgUmVzb3VyY2VMb2FkVGltaW5n
JiB0aW1pbmcpCiB7CiAgICAgY29weVRpbWluZ0RhdGEoW2Nvbm5lY3Rpb24gX3RpbWluZ0RhdGFd
LCB0aW1pbmcpOwogfQotICAgIAotI2VuZGlmCi0gICAgCisKICNlbmRpZiAvLyBFTkFCTEUoV0VC
X1RJTUlORykKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCmluZGV4
IDY5NGU1M2M0YTU3MzIyMjBkNDQ2MWRjMTBmNjBkZDk4NGFhODc5NmQuLmU3NzAyNDVkZmQ1MDFi
MTRiMGU2MWMxMDc3YzcxYjMwODQxMmYxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KQEAgLTM3LDI5
ICszNyw2IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09S
SykKLQotUmVzb3VyY2VSZXF1ZXN0OjpSZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0ICpuc1Jl
cXVlc3QpCi0gICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKCkKLSAgICAsIG1fY2ZSZXF1ZXN0KFtu
c1JlcXVlc3QgX0NGVVJMUmVxdWVzdF0pCi0gICAgLCBtX25zUmVxdWVzdChuc1JlcXVlc3QpCi17
Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVOU1VSTFJlcXVlc3QoKQotewotICAg
IGlmIChtX2NmUmVxdWVzdCkKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxS
ZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6bV9jZlJlcXVlc3QuZ2V0KCldKTsK
LX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmFwcGx5V2ViQXJjaGl2ZUhhY2tGb3JNYWlsKCkK
LXsKLSAgICAvLyBIYWNrIGJlY2F1c2UgTWFpbCBjaGVja3MgZm9yIHRoaXMgcHJvcGVydHkgdG8g
ZGV0ZWN0IGRhdGEgLyBhcmNoaXZlIGxvYWRzCi0gICAgX0NGVVJMUmVxdWVzdFNldFByb3RvY29s
UHJvcGVydHkoY2ZVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpLCBDRlNUUigiV2ViRGF0
YVJlcXVlc3QiKSwgQ0ZTVFIoIiIpKTsKLX0KLQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQppbmRleCA2ZmEwMGUyNDM1ZTgzZTc5
Zjk3ZDQzMDg2MmRiMGI0MWQzNjY1MzdiLi5jZGY3ODlkNjlhN2Y3ZjVmZDBmZWE5NjM1NTdkNmQ3
ZGMxNzliZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0KQEAgLTcxLDM2ICs3MSw2IEBAIHZvaWQg
UmVzb3VyY2VSZXNwb25zZTo6aW5pdE5TVVJMUmVzcG9uc2UoKSBjb25zdAogICAgIFttX25zUmVz
cG9uc2UuZ2V0KCkgX3NldE1JTUVUeXBlOihOU1N0cmluZyAqKW1fbWltZVR5cGVdOwogfQogCi0j
aWYgVVNFKENGTkVUV09SSykKLQotTlNVUkxSZXNwb25zZSAqUmVzb3VyY2VSZXNwb25zZTo6bnNV
UkxSZXNwb25zZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX25zUmVzcG9uc2UgJiYgIW1fY2ZSZXNw
b25zZSAmJiAhbV9pc051bGwpIHsKLSAgICAgICAgaW5pdE5TVVJMUmVzcG9uc2UoKTsKLSAgICAg
ICAgbV9jZlJlc3BvbnNlID0gW21fbnNSZXNwb25zZS5nZXQoKSBfQ0ZVUkxSZXNwb25zZV07Ci0g
ICAgICAgIHJldHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2Nm
UmVzcG9uc2UpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBpZiAoIW1fbnNSZXNwb25zZSkK
LSAgICAgICAgbV9uc1Jlc3BvbnNlID0gW05TVVJMUmVzcG9uc2UgX3Jlc3BvbnNlV2l0aENGVVJM
UmVzcG9uc2U6bV9jZlJlc3BvbnNlLmdldCgpXTsKLQotICAgIHJldHVybiBtX25zUmVzcG9uc2Uu
Z2V0KCk7Ci19Ci0KLVJlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNw
b25zZSogbnNSZXNwb25zZSkKLSAgICA6IG1faW5pdExldmVsKFVuaW5pdGlhbGl6ZWQpCi0gICAg
LCBtX3BsYXRmb3JtUmVzcG9uc2VJc1VwVG9EYXRlKHRydWUpCi0gICAgLCBtX2NmUmVzcG9uc2Uo
W25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdKQotICAgICwgbV9uc1Jlc3BvbnNlKG5zUmVzcG9u
c2UpCi17Ci0gICAgbV9pc051bGwgPSAhbnNSZXNwb25zZTsKLX0KLQotI2Vsc2UKLQogc3RhdGlj
IE5TU3RyaW5nKiBjb25zdCBjb21tb25IZWFkZXJGaWVsZHNbXSA9IHsKICAgICBAIkFnZSIsIEAi
Q2FjaGUtQ29udHJvbCIsIEAiQ29udGVudC1UeXBlIiwgQCJEYXRlIiwgQCJFdGFnIiwgQCJFeHBp
cmVzIiwgQCJMYXN0LU1vZGlmaWVkIiwgQCJQcmFnbWEiCiB9OwpAQCAtMTg5LDcgKzE1OSw1IEBA
IGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIGEsIGNvbnN0IFJlc291cmNlCiAgICAgcmV0dXJuIGEubnNVUkxSZXNwb25zZSgpID09
IGIubnNVUkxSZXNwb25zZSgpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDAx
NDRiZDkzYTcwYTQ0OTg4ZTA1NmM4ZWI4OTg5NzQ5ZjE1YzJiNTguLjY1Zjc2ZGYxM2I5YzhmOTY2
NzhmZjg4ZWRmN2MzNjM3MWU5MzBlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tCkBA
IC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3luY2hyb25v
dXNMb2FkZXJDbGllbnQuaCIKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW5jbHVkZSAiQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsMTQg
KzM2LDEwIEBAIHZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosCiAgICAgW2NoYWxsZW5nZS5zZW5kZXIo
KSBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y2hh
bGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07CiB9CiAKLSNpZiAhVVNFKENG
TkVUV09SSykKIFJlc291cmNlRXJyb3IgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OnBsYXRmb3Jt
QmFkUmVzcG9uc2VFcnJvcigpCiB7CiAgICAgUmV0YWluUHRyPE5TRXJyb3I+IGVycm9yID0gYWRv
cHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29k
ZTpOU1VSTEVycm9yQmFkU2VydmVyUmVzcG9uc2UgdXNlckluZm86bmlsXSk7CiAgICAgcmV0dXJu
IGVycm9yLmdldCgpOwogfQotI2VuZGlmCiAKIH0KLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JL
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oCmluZGV4IDRmNDE1NWVh
ZmQ5NDViMWI4NjJkMjljZTg5NmRjYWRjZGExYzQyNjYuLjJmMTE2YWQ2YTMxMDI1MGE2NzdjY2Vh
MTRmNzdkMjgxMGU2YThlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVn
YXRlLmgKQEAgLTI2LDE4ICsyNiwxOCBAQAogI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlX2gKICNkZWZpbmUgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCiAK
LSNpZiAhVVNFKENGTkVUV09SSykKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3Vy
Y2VIYW5kbGU7CiB9CiAKLUBpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0
ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZT4geworQHByb3RvY29sIFdlYkNv
cmVSZXNvdXJjZUxvYWRlckRlbGVnYXRlCistICh2b2lkKWRldGFjaEhhbmRsZTsKK0BlbmQKKwor
QGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIDogTlNPYmplY3QgPE5T
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLCBXZWJDb3JlUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZT4gewog
ICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiBtX2hhbmRsZTsKIH0KIC0gKGlkKWluaXRXaXRo
SGFuZGxlOihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopaGFuZGxlOwotLSAodm9pZClkZXRhY2hI
YW5kbGU7CiBAZW5kCiAKLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKICNlbmRpZiAvLyBXZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc0RlbGVnYXRlLm1tCmluZGV4IGUxN2NiOWQyMGVkN2RiZDUxNzkzYzM2NGViMzJjMTU4OTVl
YmE1M2EuLjUyNGFmZTNmYTk3NjFmYWU3MGNkZDllNmM0ZWYwMWVhZGNjOTRiZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQpAQCAtMjYsOCArMjYsNiBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVn
YXRlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW1wb3J0ICJMb2dn
aW5nLmgiCkBAIC01NCw3ICs1Miw3IEBAIC0gKGlkKWluaXRXaXRoSGFuZGxlOihSZXNvdXJjZUhh
bmRsZSopaGFuZGxlCiAKIC0gKHZvaWQpZGV0YWNoSGFuZGxlCiB7Ci0gICAgbV9oYW5kbGUgPSAw
OworICAgIG1faGFuZGxlID0gbnVsbHB0cjsKIH0KIAogLSAoTlNVUkxSZXF1ZXN0ICopY29ubmVj
dGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiB3aWxsU2VuZFJlcXVlc3Q6KE5TVVJM
UmVxdWVzdCAqKW5ld1JlcXVlc3QgcmVkaXJlY3RSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJl
ZGlyZWN0UmVzcG9uc2UKQEAgLTI4OCw2ICsyODYsMyBAQCAtIChOU0NhY2hlZFVSTFJlc3BvbnNl
ICopY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiB3aWxsQ2FjaGVSZXNw
bwogfQogCiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaApp
bmRleCBlNzQwYWE1OWJlZDYzYmFiOTA3NmYwNzkzYWIzZDAzZGUwMDJiMDUxLi5jNTdhY2FlMTQx
OGMxMTZmY2Y3NzcwZjU4YWQ0YzkxYzgxZTQ4Y2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaApAQCAtMjYsOCAr
MjYsNyBAQAogI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVs
ZWdhdGVfaAogI2RlZmluZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVs
ZWdhdGVfaAogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KKyNpbmNsdWRlICJXZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc0RlbGVnYXRlLmgiCiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTM1LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiB9CiAKLUBpbnRlcmZhY2UgV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29u
bmVjdGlvbkRlbGVnYXRlPiB7CitAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3Bl
cmF0aW9uUXVldWVEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZSwg
V2ViQ29yZVJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZSogbV9oYW5kbGU7CiAKICAgICAvLyBTeW5jaHJvbm91cyBkZWxlZ2F0ZXMgb24gb3BlcmF0
aW9uIHF1ZXVlIHdhaXQgdW50aWwgbWFpbiB0aHJlYWQgc2VuZHMgYW4gYXN5bmNocm9ub3VzIHJl
c3BvbnNlLgpAQCAtNDYsNyArNDUsNiBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIH0KIAogLSAo
aWQpaW5pdFdpdGhIYW5kbGU6KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiloYW5kbGU7Ci0tICh2
b2lkKWRldGFjaEhhbmRsZTsKIC0gKHZvaWQpY29udGludWVXaWxsU2VuZFJlcXVlc3Q6KE5TVVJM
UmVxdWVzdCAqKW5ld1JlcXVlc3Q7CiAtICh2b2lkKWNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
OwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCkBAIC01OSw1ICs1Nyw0
IEBAIGNsYXNzIFJlc291cmNlSGFuZGxlOwogCiBAZW5kCiAKLSNlbmRpZiAvLyAhVVNFKENGTkVU
V09SSykKICNlbmRpZiAvLyBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVs
ZWdhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IDkzMzdkMTM0OTBhYjgwOWM3ODNlMTU1OGNmYjc2
MTBiYjgxYzE1OWIuLmMxZDYzMGI2YjNjNjE0ZGYzZDQyOWM5N2UwNTI4YjA3ODM5MGU4Y2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUubW0KQEAgLTI2LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgiCiAK
LSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBA
IC0zNDUsNiArMzQzLDMgQEAgLSAoQk9PTCljb25uZWN0aW9uU2hvdWxkVXNlQ3JlZGVudGlhbFN0
b3JhZ2U6KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KIH0KIAogQGVuZAotCi0jZW5kaWYg
Ly8gIVVTRShDRk5FVFdPUkspCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQppbmRleCAwZmFiZjkzOTg5MzZi
MzEyOTM5MjIxMTBjOTcyNWFjYTQ2OTMyZGVlLi5jZDViYjQ0N2Q3YzQzYTllZjE3N2JhMmRhMjU2
YjZkYmJlNTY2NzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCkBAIC0zMjUsNyArMzI1LDYgQEAgdm9p
ZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkK
IH0KICNlbmRpZgogCi0jaWYgIVVTRShDRk5FVFdPUkspCiBOU1VSTFJlc3BvbnNlICpzeW50aGVz
aXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlv
biwgTlNVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0LCBOU1VSTFJlc3BvbnNlICpyZWRpcmVjdFJlc3Bv
bnNlKQogewogICAgIGlmIChyZWRpcmVjdFJlc3BvbnNlKQpAQCAtMzM5LDYgKzMzOCw1IEBAIE5T
VVJMUmVzcG9uc2UgKnN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxD
b25uZWN0aW9uICpjb25uZWN0aW9uCiAgICAgTlNEaWN0aW9uYXJ5ICpzeW50aGVzaXplZFJlc3Bv
bnNlSGVhZGVyRmllbGRzID0gQHsgQCJMb2NhdGlvbiI6IFtbbmV3UmVxdWVzdCBVUkxdIGFic29s
dXRlU3RyaW5nXSwgQCJDYWNoZS1Db250cm9sIjogQCJuby1zdG9yZSIgfTsKICAgICByZXR1cm4g
W1tbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOltbY29ubmVjdGlvbiBjdXJy
ZW50UmVxdWVzdF0gVVJMXSBzdGF0dXNDb2RlOjMwMiBIVFRQVmVyc2lvbjooTlNTdHJpbmcgKilr
Q0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6c3ludGhlc2l6ZWRSZXNwb25zZUhlYWRlckZp
ZWxkc10gYXV0b3JlbGVhc2VdOwogfQotI2VuZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
YkRvd25sb2FkLm1tCmluZGV4IDY4MGY2OWVjZTUwNmY2NmEzODk4MWFlYjgyYjYwNTBiZGYzZWQ3
ZjguLjY4Y2Y2NWEzMmFhNTNjYTY4ZjJlMzM5ZGI4YTYzNjg0NjMyZjNjNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQpAQCAtNDAsMTEgKzQwLDYgQEAKIAogI2ltcG9ydCAi
V2ViVHlwZXNJbnRlcm5hbC5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQgPENGTmV0
d29yay9DRk5ldHdvcmsuaD4KLSNpbXBvcnQgPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb24uaD4K
LSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGNsYXNzIE5TVVJMQ29ubmVj
dGlvbkRlbGVnYXRlUHJveHk7CkBAIC02MCwxNSArNTUsNiBAQCAtIChpZClfaW5pdFdpdGhMb2Fk
aW5nQ29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgogLSAoaWQpX2luaXRX
aXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogICAgICAgICAgICAgICBkZWxlZ2F0
ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAgICBkaXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0
b3J5OwotCi0jaWYgVVNFKENGTkVUV09SSykKLS0gKGlkKV9pbml0V2l0aExvYWRpbmdDRlVSTENv
bm5lY3Rpb246KENGVVJMQ29ubmVjdGlvblJlZiljb25uZWN0aW9uCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNwb25zZQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6KE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRl
UHJveHkgKilwcm94eTsKLSNlbmRpZgotCiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViRG93bmxvYWRJ
bnRlcm5hbCA6IE5TT2JqZWN0IDxOU1VSTERvd25sb2FkRGVsZWdhdGU+CkBAIC0yNDIsMTggKzIy
OCw2IEBAIC0gKGlkKV9pbml0V2l0aExvYWRpbmdDb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24g
Kiljb25uZWN0aW9uCiAgICAgcmV0dXJuIFtzdXBlciBfaW5pdFdpdGhMb2FkaW5nQ29ubmVjdGlv
bjpjb25uZWN0aW9uIHJlcXVlc3Q6cmVxdWVzdCByZXNwb25zZTpyZXNwb25zZSBkZWxlZ2F0ZTpf
d2ViSW50ZXJuYWwgcHJveHk6cHJveHldOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLS0gKGlk
KV9pbml0V2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246KENGVVJMQ29ubmVjdGlvblJlZiljb25u
ZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OihDRlVSTFJlcXVl
c3RSZWYpcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTooQ0ZV
UkxSZXNwb25zZVJlZilyZXNwb25zZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxl
Z2F0ZTooaWQpZGVsZWdhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6
KE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHkgKilwcm94eQotewotICAgIFtzZWxmIF9zZXRS
ZWFsRGVsZWdhdGU6ZGVsZWdhdGVdOwotICAgIHJldHVybiBbc3VwZXIgX2luaXRXaXRoTG9hZGlu
Z0NGVVJMQ29ubmVjdGlvbjpjb25uZWN0aW9uIHJlcXVlc3Q6cmVxdWVzdCByZXNwb25zZTpyZXNw
b25zZSBkZWxlZ2F0ZTpfd2ViSW50ZXJuYWwgcHJveHk6cHJveHldOwotfQotI2VuZGlmCi0KIC0g
KGlkKV9pbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKICAgICAgICAgICAg
ICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCiAgICAgICAgICAgICAgZGlyZWN0b3J5OihOU1N0cmlu
ZyAqKWRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJEb3du
bG9hZEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkSW50ZXJu
YWwuaAppbmRleCA5YjJmMzk1ODVkOTRhOGY1YjA1ZDMzMzBhY2I4MTIzN2JkMGRiOTY5Li5jMWQy
MTkyNjE5NTJhNDY3Y2IzYTY5YWI2MWE1ODk0YjhhMDNhZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9NaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaApAQCAtMjgsMTAgKzI4LDYgQEAKICAKICNp
bXBvcnQgPFdlYktpdExlZ2FjeS9XZWJEb3dubG9hZC5oPgogCi0jaWYgVVNFKENGTkVUV09SSykK
LSNpbXBvcnQgPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb24uaD4KLSNlbmRpZgotIAogQGludGVy
ZmFjZSBXZWJEb3dubG9hZCAoV2ViRG93bmxvYWRDcmVhdGlvbikKICsoaWQpX2Rvd25sb2FkV2l0
aExvYWRpbmdDb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdApAQCAt
NDIsMTMgKzM4LDQgQEAKICsoaWQpX2Rvd25sb2FkV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3QKICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCiAgICAgICAg
ICAgICAgICAgZGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeTsKLQotI2lmIFVTRShDRk5F
VFdPUkspCi0rIChpZClfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjooQ0ZVUkxD
b25uZWN0aW9uUmVmKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzcG9uc2U6KENGVVJMUmVzcG9uc2VSZWYpcmVzcG9uc2UKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6KGlkKXByb3h5OwotI2VuZGlmCi0KIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNr
cy5oIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgKaW5kZXgg
YzgxMTIwMTI1ZDRkZmI2OTMxYWZlZDQxZWQxMDAxOWJmMDdiZmRmNC4uYjUzMzM1NGMzNzEyYmYw
Njc5ZjM5ODYzYmFlYjVlMTJlM2RiMzc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
TWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9X
ZWJLaXRWZXJzaW9uQ2hlY2tzLmgKQEAgLTcyLDYgKzcyLDcgQEAKICNkZWZpbmUgV0VCS0lUX0ZJ
UlNUX1ZFUlNJT05fV0lUSF9DU1NfQVRUUklCVVRFX1NFVFRFUlNfSUdOT1JJTkdfUFJJT1JJVFkg
MjIzOSAvLyBpT1MgNi4wCiAjZGVmaW5lIFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfWU9VVFVC
RV9FTUJFRF9JRlJBTUVfVFJBTlNGT1JNIDIyMzkgLy8gaU9TIDYuMAogI2RlZmluZSBXRUJLSVRf
RklSU1RfVkVSU0lPTl9XSVRIT1VUX0xFR0FDWV9CQUNLR1JPVU5EU0laRV9TSE9SVEhBTkRfQkVI
QVZJT1IgMjY2NSAvLyBpT1MgNy4wCisjZGVmaW5lIFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhf
TE9BRElOR19EVVJJTkdfQ09NTU9OX1JVTkxPT1BfTU9ERVMgMjY2NSAvLyBpT1MgNy4wCiAjZGVm
aW5lIFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfSU5TRUNVUkVfQ09OVEVOVF9CTE9DS0lORyAz
NDU0CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGQyZWFm
OTQzNTkzZDk5N2MwM2I3YjYwNzcxNmRiNTE4MjVjOWNkYzguLjcyNTk5OGZiMjIyMTM5ZTcyODgw
OTYwODhmOTA5ODE4YjcwYjg1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0zMDEsMTMgKzMwMSw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9E
b3dubG9hZChEb2N1bWVudExvYWRlciogZG9jCiAKICAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxl
ID0gbWFpblJlc291cmNlTG9hZGVyLT5oYW5kbGUoKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0g
ICAgQVNTRVJUKFtXZWJEb3dubG9hZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3du
bG9hZFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOnJlcXVlc3Q6cmVzcG9uc2U6ZGVsZWdhdGU6
cHJveHk6KV0pOwotICAgIGF1dG8gY29ubmVjdGlvbiA9IGhhbmRsZS0+cmVsZWFzZUNvbm5lY3Rp
b25Gb3JEb3dubG9hZCgpOwotICAgIFtXZWJEb3dubG9hZCBfZG93bmxvYWRXaXRoTG9hZGluZ0NG
VVJMQ29ubmVjdGlvbjpjb25uZWN0aW9uLmdldCgpIHJlcXVlc3Q6cmVxdWVzdC5jZlVSTFJlcXVl
c3QoVXBkYXRlSFRUUEJvZHkpIHJlc3BvbnNlOnJlc3BvbnNlLmNmVVJMUmVzcG9uc2UoKSBkZWxl
Z2F0ZTpbd2ViVmlldyBkb3dubG9hZERlbGVnYXRlXSBwcm94eTpuaWxdOwotI2Vsc2UKICAgICBb
V2ViRG93bmxvYWQgX2Rvd25sb2FkV2l0aExvYWRpbmdDb25uZWN0aW9uOmhhbmRsZS0+Y29ubmVj
dGlvbigpIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpIHJlc3Bv
bnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSBkZWxlZ2F0ZTpbd2ViVmlldyBkb3dubG9hZERl
bGVnYXRlXSBwcm94eTpuaWxdOwotI2VuZGlmCiB9CiAKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIGludCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggMTRjMWJjNmM2
YjYxZWU1YzZjYzg0NjYxNWM0ODlkM2FkNGU0YzEzMi4uNGQyYjhlOTIzZDMzODVhMTY1N2RlOTY1
MzZkYTllYmRjMGM4ZjBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtMTE3LDEzICsxMTcsNiBAQCB2b2lk
IEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChDdXJzb3IpOwogI2Vu
ZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIElOSVQoR2V0RGVmYXVsdEhUVFBDb29raWVT
dG9yYWdlKTsKLSAgICBJTklUKENvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2Up
OwotICAgIElOSVQoU2V0Q0ZVUkxSZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZmKTsKLSAgICBJTklU
KFNldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbik7Ci0jZW5kaWYKLQogI2lmICFQTEFURk9STShJT1Mp
CiAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJzKTsKICAgICBJTklU
KFNwZWVjaFN5bnRoZXNpc0dldERlZmF1bHRWb2ljZUlkZW50aWZpZXJGb3JMb2NhbGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KaW5kZXggMDEwZmE4Yjc3
NzI5ZDBjNGVhZTZiNDlmOTMxZGUwNDkyNmQzY2IyNy4uNDI4YWZiNzNiNjcxYjQ0NjYwNjZhOThj
NWM0OThmOGIzMDhiOWIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzLm1tCkBAIC0xNzY2LDcgKzE3NjYsNyBAQCArICh2b2lkKV9jbGVhck5ldHdvcmtMb2Fk
ZXJTZXNzaW9uCiArICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVB
Y2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlwb2xpY3kKIHsKICAgICBSZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOwotICAg
IEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBmYWlsIHdoZW4gYnVpbGRpbmcgd2l0aG91
dCBVU0UoQ0ZORVRXT1JLKSBhbmQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rl
c3RpbmdTZXNzaW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KKyAgICBBU1NFUlQoY29v
a2llU3RvcmFnZSk7IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dp
dGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCiAgICAg
V0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBjZGEzZjU4OGU4NmI2
NmM0YzRmZmVkNjYzOTEzOGY4NDZkZDgzMTliLi5jOWI1Y2FkZGMyZTdkZDY0YWYzZDJhZWU2M2Fh
NjcwYjA1NzVjZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xMDI4
LDEyICsxMDI4LDEzIEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFt
ZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0CiAKICNpZiAhUExBVEZPUk0o
SU9TKQogICAgIE5TUnVuTG9vcCAqcnVuTG9vcCA9IFtOU1J1bkxvb3AgbWFpblJ1bkxvb3BdOwot
CisjZWxzZQorICAgIE5TUnVuTG9vcCAqcnVuTG9vcCA9IFdlYlRocmVhZE5TUnVuTG9vcCgpOwor
I2VuZGlmCiAgICAgaWYgKFdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lP
Tl9XSVRIX0xPQURJTkdfRFVSSU5HX0NPTU1PTl9SVU5MT09QX01PREVTKSkKICAgICAgICAgW3Nl
bGYgc2NoZWR1bGVJblJ1bkxvb3A6cnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKWtDRlJ1bkxv
b3BDb21tb25Nb2Rlc107CiAgICAgZWxzZQogICAgICAgICBbc2VsZiBzY2hlZHVsZUluUnVuTG9v
cDpydW5Mb29wIGZvck1vZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGVdOwotI2VuZGlmCiAKICAgICBb
c2VsZiBfYWRkVG9BbGxXZWJWaWV3c1NldF07CiAgICAgCkBAIC02NjE4LDI5ICs2NjE5LDE5IEBA
IEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlBlbmRpbmdQdWJsaWMpCiAKLSNp
ZiAhUExBVEZPUk0oSU9TKQogLSAodm9pZClzY2hlZHVsZUluUnVuTG9vcDooTlNSdW5Mb29wICop
cnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGUKIHsKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
ICAgIENGUnVuTG9vcFJlZiBzY2hlZHVsZVBhaXJSdW5Mb29wID0gW3J1bkxvb3AgZ2V0Q0ZSdW5M
b29wXTsKLSNlbHNlCiAgICAgTlNSdW5Mb29wICpzY2hlZHVsZVBhaXJSdW5Mb29wID0gcnVuTG9v
cDsKLSNlbmRpZgogICAgIGlmIChydW5Mb29wICYmIG1vZGUpCiAgICAgICAgIGNvcmUoc2VsZikt
PmFkZFNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShzY2hlZHVsZVBhaXJSdW5Mb29w
LCAoQ0ZTdHJpbmdSZWYpbW9kZSkpOwogfQogCiAtICh2b2lkKXVuc2NoZWR1bGVGcm9tUnVuTG9v
cDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGUKIHsKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIENGUnVuTG9vcFJlZiBzY2hlZHVsZVBhaXJSdW5Mb29wID0gW3J1
bkxvb3AgZ2V0Q0ZSdW5Mb29wXTsKLSNlbHNlCiAgICAgTlNSdW5Mb29wICpzY2hlZHVsZVBhaXJS
dW5Mb29wID0gcnVuTG9vcDsKLSNlbmRpZgogICAgIGlmIChydW5Mb29wICYmIG1vZGUpCiAgICAg
ICAgIGNvcmUoc2VsZiktPnJlbW92ZVNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShz
Y2hlZHVsZVBhaXJSdW5Mb29wLCAoQ0ZTdHJpbmdSZWYpbW9kZSkpOwogfQotI2VuZGlmCiAKIHN0
YXRpYyBCT09MIGZpbmRTdHJpbmcoTlNWaWV3IDxXZWJEb2N1bWVudFNlYXJjaGluZz4gKnNlYXJj
aFZpZXcsIE5TU3RyaW5nICpzdHJpbmcsIFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKaW5kZXggNzk2YzBmNDJhNzY5
OWYxODZmMGU0YzAzN2QxMTQ2N2M0NmIxMDI5NC4uZjQzMDQ5OTY0NWQ3Zjk1MDA3YzFjYmEwZTlj
ZmFjMDE5OGNmM2MwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZh
dGUuaApAQCAtMTk4LDEwICsxOTgsOCBAQCB0eXBlZGVmIGVudW0gewogCiBAaW50ZXJmYWNlIFdl
YlZpZXcgKFdlYlBlbmRpbmdQdWJsaWMpCiAKLSNpZiAhVEFSR0VUX09TX0lQSE9ORQogLSAodm9p
ZClzY2hlZHVsZUluUnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmlu
ZyAqKW1vZGU7CiAtICh2b2lkKXVuc2NoZWR1bGVGcm9tUnVuTG9vcDooTlNSdW5Mb29wICopcnVu
TG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGU7Ci0jZW5kaWYKIAogLSAoQk9PTClmaW5kU3Ry
aW5nOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihXZWJGaW5kT3B0aW9ucylvcHRpb25zOwog
LSAoRE9NUmFuZ2UgKilET01SYW5nZU9mU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyByZWxhdGl2
ZVRvOihET01SYW5nZSAqKXByZXZpb3VzUmFuZ2Ugb3B0aW9uczooV2ViRmluZE9wdGlvbnMpb3B0
aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCmluZGV4
IDgwNWZhMjdkNTYwMWJkZmZhMWZiZTRiOGVmZmIzZWM0NWFjYWQxN2IuLjI3ZWYzYmQwMDM3YTc2
YTAxMTY4ODFjYjM4ZTE0MWJkZmNiODk3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuaApAQCAtOTQsMTIgKzk0LDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgQ0ZB
cnJheVJlZikgb3ZlcnJpZGU7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7Ci0j
ZWxzZQogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSAqKSBvdmVycmlkZTsKICNlbmRpZgot
I2VuZGlmCiAjZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKIAogI2lmIFVTRShQUk9URUNU
SU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMTlhYmM5YWJmZjA1N2JmMDNmNTJhODk3YmE1
NDZhOGU5ZWViYzFhZS4uOGU4ZTc0NGUzMzkxNzI1MWQ2ZDczMjE2OTM3N2M3Y2UwMzMyYjg2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3
b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1lCiAKICAgICBzZXRD
YW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbihwYXJhbWV0ZXJzLmNhbkhhbmRsZUhU
VFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKTsKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENG
TkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0SWRl
bnRpZmllckJhc2UocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKTsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29y
a0xvYWRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xv
YWRNYWMubW0KaW5kZXggZjNjNmVjYmJiMDFhMTYwMjlmOGRlY2Y5YzRjMWMzOGEwMjdhYzA3OS4u
M2Q2MjVjOGUyNmJmZjdkZTQ4YmY3YTVmMWYwNDA5OGI4OGM2ZmMxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbQpAQCAtMzQs
MTggKzM0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi0jaWYgVVNFKENGTkVUV09SSykKLQotdm9pZCBOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVz
cG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVm
IGNmUmVzcG9uc2UpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hh
bmRsZSk7Ci0KLSAgICBtX2NsaWVudC53aWxsQ2FjaGVSZXNwb25zZUFzeW5jKGNmUmVzcG9uc2Up
OwotCi0gICAgbV9oYW5kbGUtPmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoY2ZSZXNwb25zZSk7
Ci19Ci0KLSNlbGlmICFVU0UoTkVUV09SS19TRVNTSU9OKQorI2lmICFVU0UoTkVUV09SS19TRVNT
SU9OKQogCiB2b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UpCiB7CkBAIC01
Niw2ICs0NSw2IEBAIHZvaWQgTmV0d29ya0xvYWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSwgTlNDYWNoZWRVUkxSZXNwCiAgICAgbV9oYW5kbGUtPmNvbnRp
bnVlV2lsbENhY2hlUmVzcG9uc2UobnNSZXNwb25zZSk7CiB9CiAKLSNlbmRpZiAvLyAhVVNFKENG
TkVUV09SSykKKyNlbmRpZiAvLyAhVVNFKE5FVFdPUktfU0VTU0lPTikKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rv
d25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgKaW5k
ZXggNjMwNTgwZjM1MTcwZTJhM2U0OWNmNTdiMDM4MzkyNTFkY2NjODExMi4uYjhkYjZlMWUxZWFj
YmQ3ZGFjNDY4MTE0YzcyMDRlMmNlY2Q5YzM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9E
b3dubG9hZHMvRG93bmxvYWQuaApAQCAtNDgsMTAgKzQ4LDYgQEAgT0JKQ19DTEFTUyBXS0Rvd25s
b2FkQXNEZWxlZ2F0ZTsKICNpbmNsdWRlIDxtZW1vcnk+CiAjZW5kaWYKIAotI2lmIFVTRShDRk5F
VFdPUkspCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWRQcml2Lmg+Ci0jZW5kaWYK
LQogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwogfQpAQCAtMTA1LDEwICsx
MDEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOwogICAgIHZvaWQg
ZGlkQ2FuY2VsKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSk7CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIERvd25sb2FkQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhlbnRp
Y2F0aW9uQ2xpZW50KCk7Ci0jZW5kaWYKLQogICAgIC8vIEF1dGhlbnRpY2F0aW9uCiAgICAgc3Rh
dGljIHZvaWQgcmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpOwogICAgIHN0YXRpYyB2b2lk
IHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwpAQCAtMTQyLDEwICsxMzQsNiBAQCBwcml2YXRl
OgogICAgIFJldGFpblB0cjxXS0Rvd25sb2FkQXNEZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKICNlbmRp
ZgogI2VuZGlmCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBSZXRhaW5QdHI8Q0ZVUkxEb3dubG9h
ZFJlZj4gbV9kb3dubG9hZDsKLSAgICBSZWZQdHI8RG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVu
dD4gbV9hdXRoZW50aWNhdGlvbkNsaWVudDsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwg
UExBVEZPUk0oRUZMKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZUNsaWVudD4gbV9kb3dubG9hZENsaWVudDsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGU+IG1fcmVzb3VyY2VIYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9E
b3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkMGU4MGU2MjAzODRjMTc4MDE3MDEzODYxZjc1MjA4ZTc1YjVjYzA5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9E
b3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTk2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkRvd25sb2FkLmgi
Ci0KLSNpZiBQTEFURk9STShJT1MpICYmICFVU0UoTkVUV09SS19TRVNTSU9OKQotCi0jaW1wb3J0
ICJEYXRhUmVmZXJlbmNlLmgiCi0jaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3Vy
Y2VIYW5kbGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgotI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgotI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KLQotI2lmIFVTRShD
Rk5FVFdPUkspCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxEb3dubG9hZC5oPgotI2VuZGlmCi0K
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotI2lmIFVT
RShDRk5FVFdPUkspCi0vLyBGSVhNRTogSWYgcG9zc2libGUsIHdlIHNob3VsZCBjb25zaWRlciBt
b3Zpbmcgc29tZSBjYWxsYmFja3Mgb2ZmIHRoZSBtYWluIHRocmVhZCBvciBhdCBsZWFzdAotLy8g
bWFraW5nIHRoZW0gYXN5bmNob25vdXMgY2FsbHMuCi1zdGF0aWMgdm9pZCBkaXNwYXRjaE9uTWFp
blRocmVhZCh2b2lkKF5ibG9jaykoKSkKLXsKLSAgICBpZiAoUnVuTG9vcDo6aXNNYWluKCkpIHsK
LSAgICAgICAgYmxvY2soKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGRpc3BhdGNo
X3N5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgYmxvY2spOwotfQotCi1zdGF0aWMgaW5s
aW5lIERvd25sb2FkKiB0b0Rvd25sb2FkKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PERvd25sb2FkKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5m
bykpOwotfQotCi1zdGF0aWMgdm9pZCBzZXRVcERvd25sb2FkQ2xpZW50KENGVVJMRG93bmxvYWRD
bGllbnQmIGNsaWVudCwgRG93bmxvYWQmIGRvd25sb2FkKQotewotICAgIG1lbXNldCgmY2xpZW50
LCAwLCBzaXplb2YoY2xpZW50KSk7Ci0gICAgY2xpZW50LmNsaWVudEluZm8gPSAmZG93bmxvYWQ7
Ci0KLSAgICBjbGllbnQuZGlkU3RhcnQgPSBbXShDRlVSTERvd25sb2FkUmVmLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAg
ICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRTdGFydCgpOwotICAgICAgICB9KTsKLSAg
ICB9OwotCi0gICAgY2xpZW50LndpbGxTZW5kUmVxdWVzdCA9IFtdKENGVVJMRG93bmxvYWRSZWYs
IENGVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBDRlVSTFJlc3BvbnNlUmVmLCBjb25zdCB2b2lkKikg
LT4gQ0ZVUkxSZXF1ZXN0UmVmIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGVVJMUmVx
dWVzdFJlZj4oQ0ZSZXRhaW4ocmVxdWVzdCkpOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkUmVj
ZWl2ZVJlc3BvbnNlID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZVUkxSZXNwb25zZVJlZiByZXNw
b25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRo
cmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlkUmVjZWl2ZVJl
c3BvbnNlKHJlc3BvbnNlKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC5kaWRS
ZWNlaXZlRGF0YSA9IFtdKENGVVJMRG93bmxvYWRSZWYsIENGSW5kZXggbGVuZ3RoLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAg
ICAgICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRSZWNlaXZlRGF0YShsZW5ndGgpOwot
ICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LnNob3VsZERlY29kZURhdGFPZk1JTUVU
eXBlID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZTdHJpbmdSZWYgZW5jb2RpbmdUeXBlLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKSAtPiBCb29sZWFuIHsKLSAgICAgICAgX19ibG9jayBCT09MIHJl
dHVyblZhbHVlID0gTk87Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAg
ICAgICByZXR1cm5WYWx1ZSA9IHRvRG93bmxvYWQoY2xpZW50SW5mbyktPnNob3VsZERlY29kZVNv
dXJjZURhdGFPZk1JTUVUeXBlKGVuY29kaW5nVHlwZSk7Ci0gICAgICAgIH0pOwotICAgICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Ci0gICAgfTsKLQotICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRPYmplY3ROYW1lID0gW10oQ0ZVUkxEb3dubG9hZFJlZiBkb3dubG9hZFJl
ZiwgQ0ZTdHJpbmdSZWYgb2JqZWN0TmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAg
ICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgYm9vbCBhbGxvd092ZXJ3
cml0ZTsKLSAgICAgICAgICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IHRvRG93bmxvYWQoY2xpZW50
SW5mbyktPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKG9iamVjdE5hbWUs
IGFsbG93T3ZlcndyaXRlKTsKLSAgICAgICAgICAgIGlmICghZGVzdGluYXRpb24uaXNOdWxsKCkp
Ci0gICAgICAgICAgICAgICAgQ0ZVUkxEb3dubG9hZFNldERlc3RpbmF0aW9uKGRvd25sb2FkUmVm
LCByZWludGVycHJldF9jYXN0PENGVVJMUmVmPihbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmRlc3Rp
bmF0aW9uXSksIGFsbG93T3ZlcndyaXRlKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNs
aWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbiA9IFtdKENGVVJMRG93bmxvYWRSZWYsIENGVVJMUmVm
IHBhdGgsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5U
aHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZENyZWF0ZURl
c3RpbmF0aW9uKENGVVJMR2V0U3RyaW5nKHBhdGgpKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQot
ICAgIGNsaWVudC5kaWRGaW5pc2ggPSBbXShDRlVSTERvd25sb2FkUmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAg
ICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRGaW5pc2goKTsKLSAgICAgICAgfSk7Ci0gICAg
fTsKLQotICAgIGNsaWVudC5kaWRGYWlsID0gW10oQ0ZVUkxEb3dubG9hZFJlZiBkb3dubG9hZFJl
ZiwgQ0ZFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBk
aXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgYXV0byByZXN1bWVEYXRhID0gYWRv
cHRDRihDRlVSTERvd25sb2FkQ29weVJlc3VtZURhdGEoZG93bmxvYWRSZWYpKTsKLSAgICAgICAg
ICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZEZhaWwoZXJyb3IsIElQQzo6RGF0YVJlZmVy
ZW5jZShyZXN1bWVEYXRhID8gQ0ZEYXRhR2V0Qnl0ZVB0cihyZXN1bWVEYXRhLmdldCgpKSA6IG51
bGxwdHIsIHJlc3VtZURhdGEgPyBDRkRhdGFHZXRMZW5ndGgocmVzdW1lRGF0YS5nZXQoKSkgOiAw
KSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci19Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQot
dm9pZCBEb3dubG9hZDo6c3RhcnQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZShSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKLXsKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQotICAgIENGVVJMRG93bmxvYWRDbGllbnQgY2xpZW50OwotICAgIHNldFVwRG93
bmxvYWRDbGllbnQoY2xpZW50LCAqdGhpcyk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVz
aAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJh
dGlvbnMiCi0gICAgbV9kb3dubG9hZCA9IGFkb3B0Q0YoQ0ZVUkxEb3dubG9hZENyZWF0ZUFuZFN0
YXJ0V2l0aExvYWRpbmdDb25uZWN0aW9uKE5VTEwsIGhhbmRsZS0+cmVsZWFzZUNvbm5lY3Rpb25G
b3JEb3dubG9hZCgpLmdldCgpLCBtX3JlcXVlc3QuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5
KSwgcmVzcG9uc2UuY2ZVUkxSZXNwb25zZSgpLCAmY2xpZW50KSk7Ci0jcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcG9wCi0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKLX0KLQot
dm9pZCBEb3dubG9hZDo6Y2FuY2VsKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIERvd25sb2FkOjpwbGF0Zm9ybUludmFsaWRhdGUoKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtRGlkRmluaXNoKCkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZWNlaXZlZENyZWRlbnRpYWwoY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJikKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZWNlaXZlZFJlcXVlc3RUb0Nv
bnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkQ2Fu
Y2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1E
ZWZhdWx0SGFuZGxpbmcoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkQ2hh
bGxlbmdlUmVqZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rv
d25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KaW5kZXggOWM3ZDk1MzM4NWVmNjNhNjZkZjc1NjI3
MThlYzhhNzZkN2RmYjk2NS4uODQ1ZTRhYWU2MmMwNjcxNDZkN2QyM2ZiYWQ0YTAyMzU1NzQyOWI1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxv
YWRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxv
YWRNYWMubW0KQEAgLTI2LDEwICsyNiwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJEb3dubG9hZC5oIgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKE5FVFdPUktfU0VTU0lP
TikKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAKICNpbXBv
cnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
QXV0aGVudGljYXRpb25NYWMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTlNVUkxEb3dubG9hZFNQSS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9S
ZXNvdXJjZUhhbmRsZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUNsaWVudC5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCmluZGV4IDZhZjMxN2VkY2NjYjNmMzc4ZWQ4OTQ5MWM0YWRmN2I2Y2ViMWJi
ZTkuLmVkMDVmZjYyNWJiMjkwYmI5ZmY4ZTMyNzhiMDJhZGZjY2Q1YjA1NGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6
OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVy
IDw8IHRleHRDaGVja2VyU3RhdGU7CiAgICAgZW5jb2RlciA8PCBmdWxsS2V5Ym9hcmRBY2Nlc3NF
bmFibGVkOwogICAgIGVuY29kZXIgPDwgZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWw7Ci0j
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgZW5jb2RlciA8PCB1aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwogI2VuZGlmCiAjaWYg
UExBVEZPUk0oQ09DT0EpCkBAIC0yMzAsNyArMjMwLDcgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlYlBy
b2MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5kZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxl
SWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXgg
MmY4MGM2M2Q3ODM1NDkwOWVlYWQ1MmU2OGI0ZjgyOWMxYzE3OTU2Mi4uMDMzNTAxMTAyYzRhZmQ4
ZTQ0NmFmZjc3YTAxYzQwNzA1ZDQ2ZDhkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xMjEsNyArMTIxLDcgQEAg
c3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgZG91YmxlIGRlZmF1
bHRSZXF1ZXN0VGltZW91dEludGVydmFsOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShD
Rk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU3RyaW5nIHVpUHJvY2Vzc0J1bmRs
ZUlkZW50aWZpZXI7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQppbmRleCBkZmZiM2UwNjNkNTZhZGExN2Q1
Y2Q1NGNmZTE1ZTAzMDk4YzVhZTE1Li5kMGQ0YzcwODUxZGU5OThhYjllZDI5YjVlODA5MTFmOTJm
ZGM2YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1
bWVudENvZGVyc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVB
cmd1bWVudENvZGVyc01hYy5tbQpAQCAtMzksMTAgKzM5LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUv
UmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KIAot
I2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0Lmg+Ci0j
ZW5kaWYKLQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW1wb3J0IDxX
ZWJDb3JlL0FWRm91bmRhdGlvblNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dC5oPgpAQCAtNTcsMzYgKzUzLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBJUEMgewogCi0jaWYgVVNFKENGTkVUV09SSykKLXZvaWQgQXJndW1l
bnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKLXsK
LSAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiByZXF1ZXN0VG9TZXJpYWxpemUgPSByZXNv
dXJjZVJlcXVlc3QuY2ZVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpOwotCi0gICAgYm9v
bCByZXF1ZXN0SXNQcmVzZW50ID0gcmVxdWVzdFRvU2VyaWFsaXplOwotICAgIGVuY29kZXIgPDwg
cmVxdWVzdElzUHJlc2VudDsKLQotICAgIGlmICghcmVxdWVzdElzUHJlc2VudCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgLy8gV2UgZG9uJ3Qgc2VuZCBIVFRQIGJvZHkgb3ZlciBJUEMgZm9yIGJl
dHRlciBwZXJmb3JtYW5jZS4KLSAgICAvLyBBbHNvLCBpdCdzIG5vdCBhbHdheXMgcG9zc2libGUg
dG8gZG8sIGFzIHN0cmVhbXMgY2FuIG9ubHkgYmUgY3JlYXRlZCBpbiBwcm9jZXNzIHRoYXQgZG9l
cyBuZXR3b3JraW5nLgotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJlcXVlc3RIVFRQQm9keSA9
IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keShyZXF1ZXN0VG9TZXJpYWxp
emUuZ2V0KCkpKTsKLSAgICBSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVmPiByZXF1ZXN0SFRUUEJv
ZHlTdHJlYW0gPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdEJvZHlTdHJlYW0o
cmVxdWVzdFRvU2VyaWFsaXplLmdldCgpKSk7Ci0gICAgaWYgKHJlcXVlc3RIVFRQQm9keSB8fCBy
ZXF1ZXN0SFRUUEJvZHlTdHJlYW0pIHsKLSAgICAgICAgQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBt
dXRhYmxlUmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIHJlcXVlc3RU
b1NlcmlhbGl6ZS5nZXQoKSk7Ci0gICAgICAgIHJlcXVlc3RUb1NlcmlhbGl6ZSA9IGFkb3B0Q0Yo
bXV0YWJsZVJlcXVlc3QpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdEJvZHko
bXV0YWJsZVJlcXVlc3QsIG5pbCk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0
Qm9keVN0cmVhbShtdXRhYmxlUmVxdWVzdCwgbmlsKTsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRihXS0NGVVJMUmVxdWVzdENyZWF0
ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSwgSVBD
Ojp0b2tlbk51bGxUeXBlUmVmKCkpKTsKLSAgICBJUEM6OmVuY29kZShlbmNvZGVyLCBkaWN0aW9u
YXJ5LmdldCgpKTsKLQotICAgIC8vIFRoZSBmYWxsYmFjayBhcnJheSBpcyBwYXJ0IG9mIENGVVJM
UmVxdWVzdCwgYnV0IGl0IGlzIG5vdCBlbmNvZGVkIGJ5IFdLQ0ZVUkxSZXF1ZXN0Q3JlYXRlU2Vy
aWFsaXphYmxlUmVwcmVzZW50YXRpb24uCi0gICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3Qu
cmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoKTsKLSAgICBl
bmNvZGVyLmVuY29kZUVudW0ocmVzb3VyY2VSZXF1ZXN0LnJlcXVlc3RlcigpKTsKLX0KLSNlbHNl
CiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRh
KEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJj
ZVJlcXVlc3QpCiB7CiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdFRvU2VyaWFs
aXplID0gcmVzb3VyY2VSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsK
QEAgLTExMiw3ICs3OCw2IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+Ojpl
bmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyCiAgICAgZW5jb2RlciA8
PCByZXNvdXJjZVJlcXVlc3QucmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxi
YWNrQXJyYXkoKTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0ocmVzb3VyY2VSZXF1ZXN0LnJlcXVl
c3RlcigpKTsKIH0KLSNlbmRpZgogCiBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0
Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVzb3VyY2VS
ZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7CkBAIC0xMjksMjAgKzk0LDEyIEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRE
ZWNvZGVyJiBkZWNvZGVyCiAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkaWN0aW9uYXJ5
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBSZXRh
aW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBjZlVSTFJlcXVlc3QgPSBhZG9wdENGKFdLQ3JlYXRlQ0ZV
UkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCks
IElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7Ci0gICAgaWYgKCFjZlVSTFJlcXVlc3QpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJlc291cmNlUmVxdWVzdCA9IFJlc291cmNlUmVxdWVz
dChjZlVSTFJlcXVlc3QuZ2V0KCkpOwotI2Vsc2UKICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0
PiBuc1VSTFJlcXVlc3QgPSBXS05TVVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRh
dGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSk7CiAgICAgaWYg
KCFuc1VSTFJlcXVlc3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJlc291cmNlUmVx
dWVzdCA9IFJlc291cmNlUmVxdWVzdChuc1VSTFJlcXVlc3QuZ2V0KCkpOwotI2VuZGlmCi0gICAg
CisKICAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlQ29udGVudERp
c3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGNjYzBiNmNmNGZmZTU1NDFjYmFjMjg3Y2E3OGJhNGZjZWY1NmJkZTkuLmY0MjY2MGFiMzA4
MzE4MDA5OGMxN2VmZTMwNWQ2NDQ1ZDNmOGExNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY3Miw3ICs2NzIsNiBAQAogCQky
REE5NDRBMjE4ODRFNEYwMDBFRDg2REIgLyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NDlCMTg4
NEU0RjAwMEVEODZEQiAvKiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1MuY3BwICovOyB9OwogCQky
REE5NDRBMzE4ODRFNEYwMDBFRDg2REIgLyogV2ViVG91Y2hFdmVudElPUy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDQ5QzE4ODRFNEYwMDBF
RDg2REIgLyogV2ViVG91Y2hFdmVudElPUy5jcHAgKi87IH07CiAJCTJEQTk0NEE0MTg4NEU0RjAw
MEVEODZEQiAvKiBHZXN0dXJlVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEQTk0NDlEMTg4NEU0RjAwMEVEODZEQiAvKiBHZXN0dXJlVHlwZXMu
aCAqLzsgfTsKLQkJMkRBOTQ0QTcxODg0RTk0ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9TLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0QTYxODg0
RTk0ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9TLm1tICovOyB9OwogCQkyREE5NDRBRDE4ODRFOUJB
MDBFRDg2REIgLyogVGV4dENoZWNrZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDRBOTE4ODRFOUJBMDBFRDg2REIgLyogVGV4dENoZWNr
ZXJJT1MubW0gKi87IH07CiAJCTJEQTk0NEFGMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQYWdlUHJv
eHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
REE5NDRBQjE4ODRFOUJBMDBFRDg2REIgLyogV2ViUGFnZVByb3h5SU9TLm1tICovOyB9OwogCQky
REE5NDRCMDE4ODRFOUJBMDBFRDg2REIgLyogV2ViUHJvY2Vzc1Byb3h5SU9TLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0QUMxODg0RTlCQTAw
RUQ4NkRCIC8qIFdlYlByb2Nlc3NQcm94eUlPUy5tbSAqLzsgfTsKQEAgLTI4MzMsNyArMjgzMiw2
IEBACiAJCTJEQTk0NDlCMTg4NEU0RjAwMEVEODZEQiAvKiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnRJ
T1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUGxhdGZvcm1U
b3VjaFBvaW50SU9TLmNwcDsgcGF0aCA9IGlvcy9XZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1MuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREE5NDQ5QzE4ODRFNEYwMDBFRDg2REIg
LyogV2ViVG91Y2hFdmVudElPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBXZWJUb3VjaEV2ZW50SU9TLmNwcDsgcGF0aCA9IGlvcy9XZWJUb3VjaEV2ZW50SU9TLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0OUQxODg0RTRGMDAwRUQ4NkRC
IC8qIEdlc3R1cmVUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHZXN0
dXJlVHlwZXMuaDsgcGF0aCA9IGlvcy9HZXN0dXJlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMkRBOTQ0QTYxODg0RTk0ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRG93bmxvYWRJT1MubW07IHBh
dGggPSBEb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyREE5NDRBOTE4ODRFOUJBMDBFRDg2REIgLyogVGV4dENoZWNrZXJJT1MubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXh0Q2hlY2tlcklPUy5tbTsg
cGF0aCA9IGlvcy9UZXh0Q2hlY2tlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkRBOTQ0QUIxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlBhZ2VQcm94eUlPUy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlBhZ2VQcm94eUlPUy5tbTsgcGF0
aCA9IGlvcy9XZWJQYWdlUHJveHlJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJEQTk0NEFDMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQcm9jZXNzUHJveHlJT1MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJQcm9jZXNzUHJveHlJT1MubW07
IHBhdGggPSBpb3MvV2ViUHJvY2Vzc1Byb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNTE0OCw3ICs1MTQ2LDYgQEAKIAkJMkRBOTQ0QTUxODg0RTkzQzAwRUQ4NkRCIC8q
IGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMkRB
OTQ0QTYxODg0RTk0ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9TLm1tICovLAogCQkJKTsKIAkJCW5h
bWUgPSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTUxNiw3ICs5NTEzLDYg
QEAKIAkJCQk1MThFOEYwNzE2QjIwOTM3MDBFOTE0MjkgLyogRG93bmxvYWQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE4RThGMDkxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkQXV0aGVudGlj
YXRpb25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFERjYzMTIxOEUwQjdDODAwM0Ez
RTJBIC8qIERvd25sb2FkQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMkRBOTQ0QTcxODg0
RTk0ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4RThG
MEQxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTE4RThGMEIxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUI3RDRDQjEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNWRlYzM3YWU1ZTVmYzY1
NTc5MzVkMzFhY2EyMmVhYzVhNjE5MGMwMS4uOWI4MmM4MzkwMDUyNzgyYmZlMWQ2MmRkMzlkNTNj
Y2JjYzIyZWIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTI4Nyw3ICsyODcsNyBAQCB2
b2lkIEluamVjdGVkQnVuZGxlOjpzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKFdlYlBh
Z2VHcm91cFByb3h5KiBwYWdlR3JvdQogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBib29sIGVuYWJsZWQp
CiB7CiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVGhpcyB0ZXN0LW9ubHkgZnVuY3Rp
b24gZG9lc24ndCB3b3JrIHdpdGggTmV0d29ya1Byb2Nlc3MsIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1Mjc0Pi4KLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNF
KENGTkVUV09SSykgfHwgVVNFKFNPVVApCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQ
KQogICAgIGlmIChlbmFibGVkKQogICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Np
b25JRCgpKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5k
ZXggMDNmMjg4MjMwMjExMzZmZTA4ZGQyZjczYzU0YWJiMzVmMzNiOGU4Zi4uYzcxODViZmU1MjQ4
NWQ5OTFiZDAyYmJlMTc3NWE4OGI4M2VlOTExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUlu
dGVyZmFjZS5tbQpAQCAtMTIxLDEzICsxMjEsNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlKHZvaWQpCiAgICAgICAgIElOSVQoV2luZG93U2V0QWxwaGEpOwogI2VuZGlmIC8vICFQ
TEFURk9STShJT1MpCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgICAgICBJTklUKEdldERlZmF1
bHRIVFRQQ29va2llU3RvcmFnZSk7Ci0gICAgICAgIElOSVQoQ29weUNyZWRlbnRpYWxGcm9tQ0ZQ
ZXJzaXN0ZW50U3RvcmFnZSk7Ci0gICAgICAgIElOSVQoU2V0Q0ZVUkxSZXF1ZXN0U2hvdWxkQ29u
dGVudFNuaWZmKTsKLSAgICAgICAgSU5JVChTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pOwotI2Vu
ZGlmCi0KICNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICBJTklUKFNwZWVjaFN5bnRoZXNpc0dl
dFZvaWNlSWRlbnRpZmllcnMpOwogICAgICAgICBJTklUKFNwZWVjaFN5bnRoZXNpc0dldERlZmF1
bHRWb2ljZUlkZW50aWZpZXJGb3JMb2NhbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggMDNjNTI0MzdhMDAyNWM0MjE3ZjFkMzZhNjgyOTIyNTFiNjUyODZm
Ny4uZTAzMDgxNjEwMjE1MmY4OTY0MDM4ZWYwZjcxMzkyN2FiMzcyMWEyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBX
ZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycykKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRVc2VGb250U21vb3Ro
aW5nKQogICAgICAgICBzZXRTaG91bGRVc2VGb250U21vb3RoaW5nKHRydWUpOwogCi0jaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
U2Vzc2lvblRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVu
ZGxlSWRlbnRpZmllcik7CiAjZW5kaWYKIApAQCAtNDU3LDE0ICs0NTcsMTQgQEAgdm9pZCBXZWJQ
cm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFj
Y2Vzc0VuYWJsZWQpCiAKIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZORVRXT1JLKSB8fCBVU0UoU09VUCkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVAp
CiAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihzZXNzaW9uSUQpOwogI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJveVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSNpZiBQTEFURk9S
TShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCisjaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShTT1VQKQogICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihzZXNz
aW9uSUQpOwogI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267557</attachid>
            <date>2015-12-17 04:45:51 -0800</date>
            <delta_ts>2015-12-17 09:00:46 -0800</delta_ts>
            <desc>Patch to find build errors (fix NSURLDownload on iOS)</desc>
            <filename>bug-137936-20151217044513.patch</filename>
            <type>text/plain</type>
            <size>130513</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE4YmM0YTczMTU0ODcyYTg1OTc1NjNm
YWE0MDRlYzg0NjMyM2RhODAuLjE2YzdjYzM4YjU4NWJiMTU3ODFjOGRiOWMyZjU4MjMwYjkxYmRh
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTItMTcgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgVVNFKENGTkVUV09SSykrUExBVEZPUk0o
Q09DT0EpIGNvZGUgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM3OTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxNS0xMi0xNiAgQW5kcmVhcyBLbGluZyAg
PGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgR2l2ZSBrZXJuZWwgVk0gc29tZSBoaW50cyBh
Ym91dCBub24tbGl2ZSBtZW1vcnktY2FjaGVkIHJlc291cmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0ODdl
YTUxYTY3MjEwMzFlMzY0MGU2NjQzODYzZGE0ZmFiZDMwNjIxLi43M2M5MjlhOWNmNjcwYTQ3Mjcy
NjI4MTU0ZGE0NTMxNGEyNWE4ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMyIEBACisyMDE1
LTEyLTE3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIFVTRShDRk5FVFdPUkspK1BMQVRGT1JNKENPQ09BKSBjb2RlIHBhdGgKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzkzNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbW9zdCBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9t
YWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NoZWR1bGVBbGwp
OiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJy
YXkpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvbWFjL1BhZ2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6YWRkU2NoZWR1bGVQYWlyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJl
bW92ZVNjaGVkdWxlUGFpcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJl
Z2lzdGVyTWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVWaWRlb0xheWVyR3Jhdml0eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
aW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2Uu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNGKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvcHlDb29raWVzRm9yVVJMV2l0aEZpcnN0UGFydHlVUkwpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlQ29va2llcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5k
bGluZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0OjpSZXNvdXJjZVJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0OjpjYWNoZVBhcnRpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OnNldENhY2hlUGFydGl0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9uc2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6YWRkVG9IVFRQSGVhZGVyTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmg6
CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjplbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1E
YXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRp
YWxDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnRvTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVu
Y2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6bnNDcmVkZW50aWFs
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OmlzRW1wdHkpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29j
b2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZTo6ZW5jb2RpbmdSZXF1aXJl
c1BsYXRmb3JtRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnR5cGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpuc1NwYWNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVlc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJl
c291cmNlUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3Mv
UXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1t
OgorICAgICAgICAoLVtXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIGRldGFjaEhh
bmRsZV0pOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjp+UXVpY2tMb29rSGFu
ZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1Nl
dCk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdh
dGUgaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViUmVz
b3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSBfc2VuZERpZFJlY2VpdmVSZXNwb25zZUlmTmVj
ZXNzYXJ5XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29r
RGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YUFycmF5Ol0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlk
UmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJl
c291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdh
dGUgY29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UXVpY2tMb29rSGFuZGxlOjpkaWRSZWNlaXZlRGF0YUFycmF5KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW06IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6OnNldEF1dGhlbnRpY2F0aW9uQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjphdXRoZW50aWNhdGlvbkNsaWVudCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y29va2llU3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW06CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTlNF
cnJvckZyb21SZXNvdXJjZUVycm9yQmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om5zRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgTlNFcnJvciAqKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Om9wZXJhdGlvblF1ZXVlRm9yQXN5bmNDbGllbnRzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWxlZ2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xv
YWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50
OjpwbGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1t
OgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIGRldGFjaEhhbmRs
ZV0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW06CisgICAg
ICAgIChXZWJDb3JlOjpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvY29jb2EvTlNVUkxEb3dubG9hZFNQSS5oOgor
CiAyMDE1LTEyLTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgTWFrZSBTZXNzaW9uSUQgdXNlIGludEhhc2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRl
eCBlNWQyODM3ZTlhNjBjY2NjNjEwZDU5MzA1MDNjZWY4ZjFmYWM1ZDg3Li43NTkxZWQwZWM0NjNk
NTk2MmY4NDk3NjdlMTkwMzRiMTExZmEyN2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMTUtMTItMTcgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW1vdmUgVVNFKENGTkVUV09SSykrUExBVEZPUk0oQ09DT0EpIGNvZGUgcGF0aAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3OTM2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dl
YkRvd25sb2FkLm1tOgorICAgICAgICAqIE1pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oOgorICAg
ICAgICAqIE1pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5
Q2FjaGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVy
ZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVm
ZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5
Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBf
Y29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAg
KC1bV2ViVmlldyBzY2hlZHVsZUluUnVuTG9vcDpmb3JNb2RlOl0pOiBEZWxldGVkLgorICAgICAg
ICAoZmluZFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oOgorCiAyMDE1LTEyLTE2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fu
b24uZnI+CiAKICAgICAgICAgW0ZldGNoIEFQSV0gQWRkIGZldGNoIEFQSSBjb21waWxlIHRpbWUg
ZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IGUzNDVjYTJhN2FiYzYyODMxOWIwODhlMzM1NGUyZDYzNzE5ZmM5
NzUuLjBkOWY0NDhjZjU1NzAyNzVkMTQyZjM3NTVkMjE3ODVkMGFlOTlhYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNiBAQAorMjAxNS0xMi0xNyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFJlbW92ZSBVU0UoQ0ZORVRXT1JLKStQTEFURk9STShDT0NPQSkg
Y29kZSBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzc5MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMv
TmV0d29ya0xvYWRNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp3aWxsQ2Fj
aGVSZXNwb25zZUFzeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL0Rv
d25sb2FkLmg6CisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW06
IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW06
CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICog
U2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW06CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURh
dGEpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENlcnRpZmljYXRlSW5m
bz46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToK
KwogMjAxNS0xMi0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFByb2dyZXNzIHRvd2FyZHMgaW1wbGVtZW50aW5nIGRvd25sb2FkcyB3aXRo
IE5ldHdvcmtTZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCA1OTE4MThjM2JkYjgyYmE5YzJiNWFhNTlh
NmRlYjY0YjMzMDEwYzllLi42MjY0Zjg4NzdhYWYxODVhNmJhZmNkODg0M2QxYzUyZmE5YjA0YmI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgKQEAgLTU0NSw5ICs1NDUsNiBAQAogI2lmIFBMQVRGT1JNKElPUykKIAog
I2RlZmluZSBIQVZFX1JFQURMSU5FIDEKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2Rl
ZmluZSBVU0VfQ0ZORVRXT1JLIDEKLSNlbmRpZgogI2RlZmluZSBVU0VfVUlLSVRfRURJVElORyAx
CiAjZGVmaW5lIFVTRV9XRUJfVEhSRUFEIDEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMwOWQzZDk0ZjMxYTY5YzY4ODdkMjc1
NDAyNDg1MjY5OTFiYThjY2QuLjdlMWU4MjY0NGQ1ODRlZjY1Nzk3YThkNzJmMjg1M2NhZWM0YTJj
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTI3NzQsNyArMjc3NCw2IEBACiAJCTdFNjZFMjM0MTZENkVCNkMwMEY3RTdGRiAv
KiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RTY2RTIzMjE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFUQy5oICovOyB9OwogCQk3RTY2RTIzNDE3RTZFQjZDMDBGN0U3RkYgLyog
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RTY2RTIzMjE3RTZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDLmggKi87IH07CiAJCTdFN0RFMUZEMTk1Q0VGMjYwMDM1MzYzQiAv
KiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFN0RFMUZDMTk1Q0VGMjYwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVl
c3RDb2NvYS5tbSAqLzsgfTsKLQkJN0U3REUyMDIxOTVDRUZDRDAwMzUzNjNCIC8qIFJlc291cmNl
UmVxdWVzdElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdFN0RFMjAxMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gKi87
IH07CiAJCTdFOEZBREM0MTk5QTk1QjEwMDcxNDk2OCAvKiBTdWJyZXNvdXJjZUxvYWRlckNvY29h
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U4RkFE
QzMxOTlBOTVCMTAwNzE0OTY4IC8qIFN1YnJlc291cmNlTG9hZGVyQ29jb2EubW0gKi87IH07CiAJ
CTdFOTlBRjUxMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U5OUFG
NTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHAgKi87
IH07CiAJCTdFOTlBRjUzMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRp
Y2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdF
OTlBRjU0MEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAyODUs
NyArMTAyODQsNiBAQAogCQk3RTY2RTIzMjE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTENv
bXByZXNzZWRUZXh0dXJlQVRDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNjZF
MjMyMTdFNkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRD
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFN0RFMUZDMTk1Q0VGMjYwMDM1MzYz
QiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk3RTdERTIwMTE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VSZXF1
ZXN0SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RThGQURDMzE5OUE5NUIx
MDA3MTQ5NjggLyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN1YnJlc291cmNlTG9hZGVyQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFOTlBRjUyMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dG
b2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0U5OUFGNTQwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dl
ZEluZGljYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5kb3dGb2N1
c0FsbG93ZWRJbmRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NTY3
LDcgKzE2NTY1LDYgQEAKIAkJCQk0NDJBRjdBODEwMkNEREVBMDA4RkQ0RDMgLyogUXVpY2tMb29r
Lm1tICovLAogCQkJCUExMERCRjQ2MThGOTIzMTcwMDBENzBDNiAvKiBRdWlja0xvb2tIYW5kbGVD
bGllbnQuaCAqLywKIAkJCQk3RTQyOENFNDEzRTM0MDdGMDAzQjY2MUMgLyogUmVzb3VyY2VIYW5k
bGVJT1MubW0gKi8sCi0JCQkJN0U3REUyMDExOTVDRUZDRDAwMzUzNjNCIC8qIFJlc291cmNlUmVx
dWVzdElPUy5tbSAqLywKIAkJCQk0NEEyMERCODBGODQxNjZDMDBCM0UxRkUgLyogV2ViQ29yZVVS
TFJlc3BvbnNlSU9TLmggKi8sCiAJCQkJNDQ0RDRFMjEwRjcwOEIyRTAwMzE1OEUwIC8qIFdlYkNv
cmVVUkxSZXNwb25zZUlPUy5tbSAqLywKIAkJCSk7CkBAIC0zMDc4NCw3ICszMDc4MSw2IEBACiAJ
CQkJNTE0Qzc2N0MwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdEJhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NkUxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVx
dWVzdENGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFN0RFMUZEMTk1Q0VGMjYwMDM1MzYz
QiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTdFN0RFMjAy
MTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MTRDNzY1MzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2N0UwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVz
cG9uc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDcxMTJEMjZFMzgwMEU3OTQx
NSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IDU1MTAzOTFiZDMzZDNhMzY2NzE1NmU4NDVm
YTMxMzExYzNmNmY5ZjMuLjlkYmUxODNlNjllY2I1ZGUxZjU1NWI3ZTU4Y2U0OGQ3ODNkZGUwNzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC01Niw2ICs1NiwxMCBA
QAogI2luY2x1ZGUgIlF1aWNrTG9vay5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkK
KyNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7CkBAIC0xNDQsNyArMTQ4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRp
dGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBv
dmVycmlkZUVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZUVuY29kaW5nOyB9CiAK
LSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIHZvaWQgc2No
ZWR1bGUoU2NoZWR1bGVQYWlyJik7CiAgICAgICAgIHZvaWQgdW5zY2hlZHVsZShTY2hlZHVsZVBh
aXImKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggMGQ4MWZmNWJhMjhhMjEwNGQ1MjhhZWNmYmJiZTczNTZjYTIzYjY3OC4uOTYxM2UzMDFiODMx
N2VhZTgxNTJjZjNlOGYwNzZjNGQzOWMxZDcwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC03MjQsNyArNzI0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6
cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQogICAg
IGNhbmNlbCgpOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQog
CiB2b2lkIFJlc291cmNlTG9hZGVyOjpzY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDAyN2FjMDhmMjMyMzFkNDA3
ODdkMTMwMjU2MjYzMzJiOTI2ZjQwZmEuLjg1MjAxMTc1NGY3YjkxNDY3NTUyYzhiNWNhOWIxOTc3
MTc5OWVlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0xNDAs
NyArMTQwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVz
b3VyY2UoKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2
b2lkIHNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAgICAgdm9pZCB1bnNjaGVkdWxlKFdU
Rjo6U2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKQEAgLTE1NywxMiArMTU3LDkgQEAgcHJvdGVjdGVk
OgogCiAgICAgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKCkgeyByZXR1cm4g
bV9vcHRpb25zOyB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxs
Q2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBvdmVy
cmlkZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAg
IHZpcnR1YWwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJj
ZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwotI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKaW5kZXggNjlhMjQyMjk3MjFmZjZjYTk4OTkz
YTY5OTc3MDE4ZmVlZDhkNWNkOC4uZWZhY2RkOGQxMzI0MmEwNjQ0MzlhYjcyOTAwYjE5NGNjYmMw
MTRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKQEAgLTcz
LDEyICs3Myw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFV
U0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgTlNDYWNoZWRV
UkxSZXNwb25zZSAqd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVS
TFJlc3BvbnNlKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNF
KENGTkVUV09SSykKLSAgICB2aXJ0dWFsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hl
UmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlk
ZTsKLSNlbmRpZgogCiAjaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RhdGFBcnJheSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJN
YWMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAK
aW5kZXggN2U3NGYyMGY5NzJiMDc4ZmU4NjJiNTgxYzI4OWJlZWU1ZDBhMTJjOC4uYjI2MTQ0YmQy
MDVmMWY2YTc2NmFlZWI1MjdmY2VmM2Y5NjJlMTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAKQEAgLTMzLDggKzMzLDYgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgUExBVEZPUk0oTUFDKQotCiBzdGF0aWMgdm9pZCBzY2hl
ZHVsZUFsbChjb25zdCBSZXNvdXJjZUxvYWRlck1hcCYgbG9hZGVycywgU2NoZWR1bGVQYWlyJiBw
YWlyKQogewogICAgIFZlY3RvcjxSZWZQdHI8UmVzb3VyY2VMb2FkZXI+PiBsb2FkZXJzQ29weTsK
QEAgLTY5LDYgKzY3LDQgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6dW5zY2hlZHVsZShTY2hlZHVs
ZVBhaXImIHBhaXIpCiAgICAgdW5zY2hlZHVsZUFsbChtX211bHRpcGFydFN1YnJlc291cmNlTG9h
ZGVycywgcGFpcik7CiB9CiAKLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0KaW5kZXggYmI5YjE0ZTgxNGI1
YjIzOWM3N2U1MWE0ZGJmMTdjZDY1MWMyNmYwMy4uOGEzMjhlZTVmZjI4ODFlOGMzNDQ2ZWI1ODg0
Y2UyZTViMjJmY2ZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNv
dXJjZUxvYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNl
TG9hZGVyTWFjLm1tCkBAIC0zNiwxOSArMzYsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1DRkNhY2hlZFVSTFJlc3BvbnNlUmVmIFJlc291cmNlTG9h
ZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9u
c2VSZWYgY2FjaGVkUmVzcG9uc2UpCi17Ci0gICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxi
YWNrcygpID09IERvTm90U2VuZENhbGxiYWNrcykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBSZXRhaW5QdHI8TlNDYWNoZWRVUkxSZXNwb25zZT4gbnNDYWNoZWRSZXNwb25zZSA9IGFk
b3B0TlMoW1tOU0NhY2hlZFVSTFJlc3BvbnNlIGFsbG9jXSBfaW5pdFdpdGhDRkNhY2hlZFVSTFJl
c3BvbnNlOmNhY2hlZFJlc3BvbnNlXSk7Ci0gICAgcmV0dXJuIFtmcmFtZUxvYWRlcigpLT5jbGll
bnQoKS53aWxsQ2FjaGVSZXNwb25zZShkb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyKCksIG5z
Q2FjaGVkUmVzcG9uc2UuZ2V0KCkpIF9DRkNhY2hlZFVSTFJlc3BvbnNlXTsKLX0KLQotI2Vsc2UK
LQogTlNDYWNoZWRVUkxSZXNwb25zZSogUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNl
KFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpCiB7CiAgICAg
aWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcygpID09IERvTm90U2VuZENhbGxiYWNrcykK
QEAgLTU2LDggKzQzLDYgQEAgTlNDYWNoZWRVUkxSZXNwb25zZSogUmVzb3VyY2VMb2FkZXI6Ondp
bGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWQKICAgICByZXR1cm4gZnJh
bWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9jdW1lbnRMb2FkZXIoKSwg
aWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9CiAKLSNlbmRpZgotCiAjaWYgVVNFKE5FVFdPUktf
Q0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMu
bW0KaW5kZXggNTI1MTA4ZmNhNWVlOGE4NDMxNGE2ZDEwNWFmNGE2ZDEzNTQyNGU3Zi4uZjVjNTFm
OWFiZmFhN2M3NTc1MDJjMmFjZTgwODM5Y2Q2ZWIyNzk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9Q
YWdlTWFjLm1tCkBAIC0zNCwxMiArMzQsMTYgQEAKICNpbXBvcnQgIkZyYW1lVHJlZS5oIgogI2lt
cG9ydCAiTWFpbkZyYW1lLmgiCiAKKyNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0ICJXZWJDb3Jl
VGhyZWFkLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFBhZ2U6OnBs
YXRmb3JtSW5pdGlhbGl6ZSgpCiB7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBhZGRTY2hlZHVs
ZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUoW1tOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIGdl
dENGUnVuTG9vcF0sIGtDRlJ1bkxvb3BDb21tb25Nb2RlcykpOworI2lmIFBMQVRGT1JNKElPUykK
KyAgICBhZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUoV2ViVGhyZWFkTlNSdW5M
b29wKCksIGtDRlJ1bkxvb3BDb21tb25Nb2RlcykpOwogI2Vsc2UKICAgICBhZGRTY2hlZHVsZVBh
aXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUoW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0sIGtDRlJ1
bkxvb3BDb21tb25Nb2RlcykpOwogI2VuZGlmCkBAIC01MSwxNCArNTUsMTIgQEAgdm9pZCBQYWdl
OjphZGRTY2hlZHVsZVBhaXIoUmVmPFNjaGVkdWxlUGFpcj4mJiBwYWlyKQogICAgICAgICBtX3Nj
aGVkdWxlZFJ1bkxvb3BQYWlycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVQYWlySGFzaFNl
dD4oKTsKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycy0+YWRkKHBhaXIucHRyKCkpOwogCi0j
aWYgIVBMQVRGT1JNKElPUykKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fbWFpbkZyYW1lLmdl
dCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAg
ICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zY2hlZHVsZShw
YWlyKTsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1l
LT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1
bWVudExvYWRlci0+c2NoZWR1bGUocGFpcik7CiAgICAgfQotI2VuZGlmCiAKICAgICAvLyBGSVhN
RTogbWFrZSBTaGFyZWRUaW1lck1hYyB1c2UgdGhlc2UgU2NoZWR1bGVQYWlycy4KIH0KQEAgLTcx
LDE0ICs3MywxMiBAQCB2b2lkIFBhZ2U6OnJlbW92ZVNjaGVkdWxlUGFpcihSZWY8U2NoZWR1bGVQ
YWlyPiYmIHBhaXIpCiAKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycy0+cmVtb3ZlKHBhaXIu
cHRyKCkpOwogCi0jaWYgIVBMQVRGT1JNKElPUykKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1f
bWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFt
ZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVy
LT51bnNjaGVkdWxlKHBhaXIpOwogICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50
TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSkKICAg
ICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT51bnNjaGVkdWxlKHBhaXIpOwogICAgIH0KLSNlbmRp
ZgogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggOTgwZTQz
MWY2ZDJjMTQ2ZjViYzExYjk3MmVjNjlmNjAzNTdjOGI1OC4uMGFhMThmZDFiNWNmYjk3MDRkY2Fk
MjU0NzZjNjFmYTk2ZTU5NTQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC05OSwxMCAr
OTksNiBAQAogI2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZpZGVvVG9vbGJveC5oPgogI2VuZGlmCiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotI2luY2x1ZGUgIkNGTlNVUkxDb25uZWN0aW9uU1BJLmgiCi0j
ZW5kaWYKLQogI2lmIFBMQVRGT1JNKElPUykKICNpbmNsdWRlIDxPcGVuR0xFUy9FUzMvZ2xleHQu
aD4KICNlbmRpZgpAQCAtNDIxLDU4ICs0MTcsNiBAQCBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBn
bG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpCiB9CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUksp
Ci1jbGFzcyBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50Piwg
cHVibGljIEF1dGhlbnRpY2F0aW9uQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRy
PFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50PiBjcmVhdGUoTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudChj
aGFsbGVuZ2UpKTsKLSAgICB9Ci0KLSAgICB1c2luZyBSZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50Pjo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50ZWQ8
V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+OjpkZXJlZjsKLQotcHJp
dmF0ZToKLSAgICBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudChOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UpCi0gICAgICAgIDogbV9jaGFsbGVu
Z2UoY2hhbGxlbmdlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fY2hhbGxlbmdlKTsKLSAgICB9
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVmQXV0aGVudGljYXRpb25DbGllbnQoKSBvdmVycmlkZSB7
IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmQXV0aGVudGljYXRpb25DbGllbnQoKSBv
dmVycmlkZSB7IGRlcmVmKCk7IH0KLQotICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENyZWRlbnRp
YWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJiBjcmVk
ZW50aWFsKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIHVz
ZUNyZWRlbnRpYWw6Y3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSBmb3JBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJl
Y2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBbW21fY2hhbGxlbmdlIHNl
bmRlcl0gY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Om1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRD
YW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIGNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVj
ZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChbW21fY2hhbGxlbmdlIHNl
bmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwZXJmb3JtRGVmYXVsdEhhbmRsaW5n
Rm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KV0pCi0gICAgICAgICAgICBbW21fY2hhbGxlbmdl
IHNlbmRlcl0gcGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Om1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRD
aGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgaWYgKFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENoYWxs
ZW5nZTopXSkKLSAgICAgICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSByZWplY3RQcm90ZWN0
aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCldOwotICAg
IH0KLQotICAgIFJldGFpblB0cjxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiBtX2NoYWxs
ZW5nZTsKLX07Ci0jZW5kaWYKLQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikK
IHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkKQEAgLTE3ODgsMTMgKzE3MzIsNyBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZS
ZXNvdXJjZShBVkFzc2V0UgogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSogbnNDaGFsbGVuZ2UpCiB7Ci0jaWYgVVNFKENGTkVUV09S
SykKLSAgICBSZWZQdHI8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+
IGNsaWVudCA9IFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50OjpjcmVh
dGUobnNDaGFsbGVuZ2UpOwotICAgIFJldGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IGNm
Q2hhbGxlbmdlID0gYWRvcHRDRihbbnNDaGFsbGVuZ2UgX2NyZWF0ZUNGQXV0aENoYWxsZW5nZV0p
OwotICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZShjZkNoYWxsZW5nZS5nZXQo
KSwgY2xpZW50LmdldCgpKTsKLSNlbHNlCiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hh
bGxlbmdlKG5zQ2hhbGxlbmdlKTsKLSNlbmRpZgogCiAgICAgcmV0dXJuIHBsYXllcigpLT5zaG91
bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlSU9TLm1tCmluZGV4IDRlMzAzNjZkNGViN2ZhYjE4OGRlNGNhZTkwZjlkNTUxMWY5
MDZkYWIuLjA5ZDU5YzcxMjgwODMxZDVlNzQ1NTgwMjVkNzQ0ZGEzODMyNTA5ZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJm
YWNlSU9TLm1tCkBAIC01MSwxMyArNTEsNiBAQCBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tDRlVS
TFJlcXVlc3RBbGxvd0FsbFBvc3RDYWNoaW5nKShDRlVSTFJlcXVlc3RSZWYpOwogV0VCQ09SRV9F
WFBPUlQgQ0ZBcnJheVJlZiAoKndrQ29weU5TVVJMUmVzcG9uc2VDZXJ0aWZpY2F0ZUNoYWluKShO
U1VSTFJlc3BvbnNlKik7CiBXRUJDT1JFX0VYUE9SVCBDRlN0cmluZ0VuY29kaW5nICgqd2tHZXRX
ZWJEZWZhdWx0Q0ZTdHJpbmdFbmNvZGluZykodm9pZCk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
V0VCQ09SRV9FWFBPUlQgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiAoKndrR2V0RGVmYXVsdEhUVFBD
b29raWVTdG9yYWdlKSgpOwotV0VCQ09SRV9FWFBPUlQgV0tDRlVSTENyZWRlbnRpYWxSZWYgKCp3
a0NvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UpKENGVVJMUHJvdGVjdGlvblNw
YWNlUmVmIHByb3RlY3Rpb25TcGFjZSk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDRlVS
TFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYpKENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIGJvb2wp
OwotV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKShDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmLCBDRk11dGFibGVVUkxSZXF1ZXN0UmVmKTsKLSNlbmRpZgotCiBX
RUJDT1JFX0VYUE9SVCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmICgqd2tDcmVhdGVQcml2YXRlU3Rv
cmFnZVNlc3Npb24pKENGU3RyaW5nUmVmKTsKIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVxdWVzdCog
KCp3a0NvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
LCBOU1VSTFJlcXVlc3QqKTsKIFdFQkNPUkVfRVhQT1JUIENGSFRUUENvb2tpZVN0b3JhZ2VSZWYg
KCp3a0NvcHlIVFRQQ29va2llU3RvcmFnZSkoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5oCmluZGV4IGVm
YjhkN2E0ODYwZDAwM2ZmM2Q3YTBlM2ExYWFkMzcyMmQ3ZmM4ZWYuLjYzNzdiOGU1ZGRmZThkOThl
MWJkMGViMTIzNzMxNTE3OTRiZDQwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy93YWsvV2ViQ29yZVRocmVhZC5oCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBXZWJUaHJlYWRTaG91bGRZaWVsZCh2b2lkKSB7IHJldHVybiB3ZWJUaHJlYWRTaG91bGRZ
aWVsZDsgfQogc3RhdGljIGlubGluZSB2b2lkIFdlYlRocmVhZFNldFNob3VsZFlpZWxkKCkgeyB3
ZWJUaHJlYWRTaG91bGRZaWVsZCA9IHRydWU7IH0KIAogV0VCQ09SRV9FWFBPUlQgQ0ZSdW5Mb29w
UmVmIFdlYlRocmVhZFJ1bkxvb3Aodm9pZCk7Ci1OU1J1bkxvb3AqIFdlYlRocmVhZE5TUnVuTG9v
cCh2b2lkKTsKK1dFQkNPUkVfRVhQT1JUIE5TUnVuTG9vcCogV2ViVGhyZWFkTlNSdW5Mb29wKHZv
aWQpOwogV2ViVGhyZWFkQ29udGV4dCAqV2ViVGhyZWFkQ3VycmVudENvbnRleHQodm9pZCk7CiBi
b29sIFdlYlRocmVhZENvbnRleHRJc0N1cnJlbnQodm9pZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCmluZGV4IDYwYjQ4
OTA1NzNhZDZhODVkM2IwYTM3M2NjOGNhMjVmZjM5ZjAyMTEuLmI2NTY2MTMwN2QwNjJiZDBhOTdj
ZDE3ZDFkYmE4YTEyZjdkZGU4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaApAQCAtMjU2LDEyICsyNTYsNiBAQCBleHRl
cm4gQ0ZIVFRQTWVzc2FnZVJlZiAoKndrR2V0Q0ZVUkxSZXNwb25zZUhUVFBSZXNwb25zZSkoQ0ZV
UkxSZXNwb25zZVJlZik7CiBleHRlcm4gQ0ZTdHJpbmdSZWYgKCp3a0NvcHlDRlVSTFJlc3BvbnNl
U3VnZ2VzdGVkRmlsZW5hbWUpKENGVVJMUmVzcG9uc2VSZWYpOwogZXh0ZXJuIHZvaWQgKCp3a1Nl
dENGVVJMUmVzcG9uc2VNSU1FVHlwZSkoQ0ZVUkxSZXNwb25zZVJlZiwgQ0ZTdHJpbmdSZWYgbWlt
ZVR5cGUpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLWV4dGVybiBDRkhUVFBDb29raWVTdG9yYWdl
UmVmICgqd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UpKCk7Ci1leHRlcm4gV0tDRlVSTENy
ZWRlbnRpYWxSZWYgKCp3a0NvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UpKENG
VVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSk7Ci1leHRlcm4gdm9pZCAoKndr
U2V0Q0ZVUkxSZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZmKShDRk11dGFibGVVUkxSZXF1ZXN0UmVm
LCBib29sKTsKLWV4dGVybiB2b2lkICgqd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pKENGVVJM
U3RvcmFnZVNlc3Npb25SZWYsIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYpOwotI2VuZGlmCiAjaWYg
IVBMQVRGT1JNKElPUykKIGV4dGVybiB2b2lkICgqd2tTZXRNZXRhZGF0YVVSTCkoTlNTdHJpbmcg
KnVybFN0cmluZywgTlNTdHJpbmcgKnJlZmVycmVyLCBOU1N0cmluZyAqcGF0aCk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UubW0KaW5kZXggMTg4ZjQxMjgxMjNhOTYwOGFkYmZmY2NiZjY5YjhkYWYzMDAxY2JjNy4u
MDMzOTBjZTY5YzViZmNlZjNhYjUxZTZhMTk2Mzc0NTA2ZWJhZWEzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KQEAg
LTg4LDEzICs4OCw2IEBAIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFk
U3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtCiB2b2lkICgqd2tTZXRDT05O
RUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5n
UmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CiBDRkhUVFBNZXNzYWdlUmVmICgqd2tDb3B5
Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwgQ0ZVUkxSZWYgcmVzcG9uc2VV
UkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKIAotI2lm
IFVTRShDRk5FVFdPUkspCi1DRkhUVFBDb29raWVTdG9yYWdlUmVmICgqd2tHZXREZWZhdWx0SFRU
UENvb2tpZVN0b3JhZ2UpKCk7Ci1XS0NGVVJMQ3JlZGVudGlhbFJlZiAoKndrQ29weUNyZWRlbnRp
YWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFnZSkoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVj
dGlvblNwYWNlKTsKLXZvaWQgKCp3a1NldENGVVJMUmVxdWVzdFNob3VsZENvbnRlbnRTbmlmZiko
Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiwgYm9vbCk7Ci12b2lkICgqd2tTZXRSZXF1ZXN0U3RvcmFn
ZVNlc3Npb24pKENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYp
OwotI2VuZGlmCi0KIHZvaWQqIHdrR2V0SHlwaGVuYXRpb25Mb2NhdGlvbkJlZm9yZUluZGV4Owog
CiBib29sICgqd2tFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9wYXJkKSh2b2lk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlv
blNwYWNlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rp
b25TcGFjZUJhc2UuY3BwCmluZGV4IDkzYzRkZGJhNDhmOWZkYjM3MWI5NWNjMjk3MGRhYzhjZTg1
OWJjMzguLjAxMjZkYzc5NDgzMWY0YWZmNmNhYzEyOWMwMmU5OGNlZWVjOWQyZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VC
YXNlLmNwcApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgi
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKSAmJiAhUExBVEZPUk0oQ09DT0EpCisjaWYgVVNFKENGTkVU
V09SSykKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3Jr
L0NGVVJMUHJvdGVjdGlvblNwYWNlUHJpdi5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApp
bmRleCA1M2UyNGNkMWVhYmY3MGI4YTFlYzFkYjRiNjdmODNjNThiOTgwYzcwLi4wOTIzOTJlZTI0
NzRmOTQxOTY3YjE5NzlmNGI3MmVlZTY1YTNmNGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBAIC0xMjYsNyArMTI2LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25z
dCBQcm90ZWN0aW9uU3BhY2UmKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFV
U0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgZGlkQ2FuY2VsQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24oKSBjb25zdDsKICAg
ICBpZCBtYWtlRGVsZWdhdGUoYm9vbCk7CkBAIC0yMTYsNyArMjE2LDcgQEAgcHVibGljOgogI2lm
IFVTRShDRk5FVFdPUkspCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb250aW51ZVdpbGxDYWNo
ZVJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0o
Q09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29udGludWVXaWxsQ2FjaGVSZXNwb25zZShOU0NhY2hlZFVSTFJlc3Bv
bnNlICopOwogI2VuZGlmCiAKQEAgLTIzNiwxMCArMjM2LDYgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBDRlN0cmluZ1JlZiBzeW5jaHJvbm91c0xvYWRSdW5Mb29wTW9kZSgp
OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpICYmIFVTRShDRk5FVFdPUkspCi0gICAgc3Rh
dGljIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY3JlYXRlU1NMUHJvcGVydGllc0Zyb21OU1VSTFJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0jZW5kaWYKLQogICAgIHR5cGVkZWYgUGFz
c1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gKCpCdWlsdGluQ29uc3RydWN0b3IpKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCk7CiAgICAg
c3RhdGljIHZvaWQgcmVnaXN0ZXJCdWlsdGluQ29uc3RydWN0b3IoY29uc3QgQXRvbWljU3RyaW5n
JiBwcm90b2NvbCwgQnVpbHRpbkNvbnN0cnVjdG9yKTsKIApAQCAtMjc2LDExICsyNzIsMTEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1bGluZ0JlaGF2
aW9yLCBDRkRpY3Rpb25hcnlSZWYgY2xpZW50UHJvcGVydGllcyk7CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKE1BQykgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oTUFDKQogICAgIHZv
aWQgY3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNob3VsZFVzZUNyZWRl
bnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1bGluZ0JlaGF2aW9y
KTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQ
TEFURk9STShJT1MpCiAgICAgdm9pZCBjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUs
IGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZm
LCBTY2hlZHVsaW5nQmVoYXZpb3IsIE5TRGljdGlvbmFyeSAqY29ubmVjdGlvblByb3BlcnRpZXMp
OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKaW5kZXggNjEyM2YxNGFjYTI0ODRiZTQyYTZkZjEw
MGFmM2FhYzMxOWJkMmQ5Zi4uN2FlNzNjZjcxZGMxMTVmNDAxZjIwMGIzYzQ4MWY4ODQ5NzljNzM5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUludGVybmFsLmgKQEAgLTEzNiwxMSArMTM2LDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgbV9jdXJyZW50UmVxdWVzdDsKICAgICAgICAg
UmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU+IG1fY29ubmVjdGlv
bkRlbGVnYXRlOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JL
KQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBSZXRhaW5QdHI8TlNVUkxDb25uZWN0aW9u
PiBtX2Nvbm5lY3Rpb247CiAgICAgICAgIFJldGFpblB0cjxpZD4gbV9kZWxlZ2F0ZTsKLSNlbmRp
ZgotI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBib29sIG1fc3RhcnRXaGVuU2NoZWR1bGVk
OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0Yu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNG
LmNwcAppbmRleCA3ODgzZTQ2OTExNWRlMzI3OTRjMWIyYTQ3ZGJiNTAzMDhlMTA4ZWM5Li5mODc0
NWQ1NDNhOTA4YzgzMzJjYThhZjJmOWEyMTZlOTk2OWVkYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAKQEAg
LTUzLDEzICs1Myw4IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3RpCiAKIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYg
Y2ZDaGFsbGVuZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhlbnRpY2F0aW9uQ2xpZW50KQotI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKFByb3RlY3Rp
b25TcGFjZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2ZDaGFsbGVuZ2Up
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVkZW50aWFsKENGVVJMQXV0
aENoYWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbChjZkNoYWxsZW5nZSkpLAotI2Vsc2UKICAg
ICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdl
dFByb3RlY3Rpb25TcGFjZShjZkNoYWxsZW5nZSkpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvcG9zZWRDcmVkZW50aWFsKGNm
Q2hhbGxlbmdlKSksCi0jZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
RlVSTEF1dGhDaGFsbGVuZ2VHZXRQcmV2aW91c0ZhaWx1cmVDb3VudChjZkNoYWxsZW5nZSksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENGVVJMUmVzcG9uc2VSZWYpQ0ZVUkxB
dXRoQ2hhbGxlbmdlR2V0RmFpbHVyZVJlc3BvbnNlKGNmQ2hhbGxlbmdlKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRFcnJvcihjZkNoYWxs
ZW5nZSkpCkBAIC05MywxNCArODgsMTAgQEAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNyZWF0ZUNG
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlKQogewogICAgIC8v
IEZJWE1FOiBXaHkgbm90IGNhY2hlIENGVVJMQXV0aENoYWxsZW5nZVJlZiBpbiBtX2NmQ2hhbGxl
bmdlPyBGb3VuZGF0aW9uIGNvdW50ZXJwYXJ0IGRvZXMgdGhhdC4KIAotI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiByZXN1bHQgPSBDRlVSTEF1dGhDaGFsbGVu
Z2VDcmVhdGUoMCwgY29yZUNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5jZlNwYWNlKCksIGNv
cmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkuY2ZDcmVkZW50aWFsKCksCi0jZWxzZQog
ICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwgPSBhZG9wdENGKGNy
ZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkpKTsKICAgICBSZXRhaW5Q
dHI8Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY+IHByb3RlY3Rpb25TcGFjZSA9IGFkb3B0Q0YoY3Jl
YXRlQ0YoY29yZUNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSkpOwogCiAgICAgQ0ZVUkxBdXRo
Q2hhbGxlbmdlUmVmIHJlc3VsdCA9IENGVVJMQXV0aENoYWxsZW5nZUNyZWF0ZSgwLCBwcm90ZWN0
aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCksCi0jZW5kaWYKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlQ2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNv
dW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUNoYWxs
ZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5jZlVSTFJlc3BvbnNlKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29yZUNoYWxsZW5nZS5lcnJvcigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAK
aW5kZXggOTQ3ZmIzYmY5YmUyNmZiMjdkYjY5MDRmMGNlZGQzZTllODczZDQxOC4uZGE0YTA2NGY3
NWEwNzc2ZWNkMzVmZDY2ZWY4YjgwNjUxYTUwNTA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKQEAgLTQyLDcgKzQy
LDcgQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFdJTikg
fHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSAx
MDkwKQorI2lmIFBMQVRGT1JNKFdJTikKIGVudW0gewogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VB
Y2NlcHRQb2xpY3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnREb21haW4gPSAzCiB9OwpAQCAt
MTA1LDEzICsxMDUsOSBAQCBzdGF0aWMgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvcHlDb29raWVz
Rm9yVVJMV2l0aEZpcnN0UGFydHlVUkwoY29uc3QgTmV0d29ya1N0bwogewogICAgIGJvb2wgc2Vj
dXJlID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7CiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAw
KQotICAgIHJldHVybiBhZG9wdENGKF9DRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JV
UkxXaXRoTWFpbkRvY3VtZW50VVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmwu
Y3JlYXRlQ0ZVUkwoKS5nZXQoKSwgZmlyc3RQYXJ0eS5jcmVhdGVDRlVSTCgpLmdldCgpLCBzZWN1
cmUpKTsKLSNlbHNlCiAgICAgLy8gX0NGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVS
TFdpdGhNYWluRG9jdW1lbnRVUkwgaXMgbm90IGF2YWlsYWJsZSBvbiBvdGhlciBwbGF0Zm9ybXMu
CiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHkpOwogICAgIHJldHVybiBhZG9wdENGKENGSFRU
UENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5n
ZXQoKSwgdXJsLmNyZWF0ZUNGVVJMKCkuZ2V0KCksIHNlY3VyZSkpOwotI2VuZGlmCiB9CiAKIHN0
YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNvb2tpZXMoQ0ZEaWN0aW9uYXJ5UmVmIGhlYWRlckZpZWxk
cywgQ0ZVUkxSZWYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAKaW5kZXggNTYwOTI1OTdh
YWNjZDI3NzNmNjk4YjM1YmQ0ZmM3MTU4NzJjNDBlNC4uNjllMzMyYzEzYjE3MGJiYjI5OTNlYTRj
MWQ1NzU4ODdiZTZlZjU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCkBAIC0zMyw0MiAr
MzMsMTggQEAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgiCi0jZWxpZiBQTEFURk9STShXSU4pCisjaWYgUExBVEZPUk0oV0lOKQogI2lu
Y2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENyZWRl
bnRpYWxTdG9yYWdlLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDcmVkZW50
aWFsIENyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJv
dGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbENGID0gYWRvcHRDRih3
a0NvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2UocHJvdGVjdGlvblNwYWNlLmNm
U3BhY2UoKSkpOwotICAgIHJldHVybiBDcmVkZW50aWFsKGNyZWRlbnRpYWxDRi5nZXQoKSk7Ci0j
ZWxzZQogICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gcHJvdGVjdGlvblNw
YWNlQ0YgPSBhZG9wdENGKGNyZWF0ZUNGKHByb3RlY3Rpb25TcGFjZSkpOwogICAgIFJldGFpblB0
cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWxDRiA9IGFkb3B0Q0Yod2tDb3B5Q3JlZGVu
dGlhbEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKHByb3RlY3Rpb25TcGFjZUNGLmdldCgpKSk7CiAg
ICAgcmV0dXJuIGNvcmUoY3JlZGVudGlhbENGLmdldCgpKTsKLSNlbmRpZgotfQotCi0jaWYgUExB
VEZPUk0oSU9TKQotdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6c2F2ZVRvUGVyc2lzdGVudFN0b3Jh
Z2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRp
YWwmIGNyZWRlbnRpYWwpCi17Ci0gICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VS
ZWY+IHN0b3JhZ2VDRiA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZUNyZWF0ZSgwKSk7
Ci0KLSAgICBpZiAoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpID09IENyZWRlbnRpYWxQZXJzaXN0
ZW5jZU5vbmUpIHsKLSAgICAgICAgQ3JlZGVudGlhbCBzZXNzaW9uQ3JlZGVudGlhbChjcmVkZW50
aWFsLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsKLSAgICAgICAgQ0ZVUkxDcmVk
ZW50aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0b3Jh
Z2VDRi5nZXQoKSwgc2Vzc2lvbkNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIHByb3RlY3Rpb25T
cGFjZS5jZlNwYWNlKCkpOwotICAgIH0gZWxzZQotICAgICAgICBDRlVSTENyZWRlbnRpYWxTdG9y
YWdlU2V0RGVmYXVsdENyZWRlbnRpYWxGb3JQcm90ZWN0aW9uU3BhY2Uoc3RvcmFnZUNGLmdldCgp
LCBjcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKTsK
IH0KLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKaW5kZXggMTcwM2NjOTFm
NjhiMmE1ZTY0Zjg3OTIzY2U2ZmJhMWQyN2RkMjQxZC4uMWI0YWQ3MzA2NmM3NzE4YTBjYTUxNDUw
MGVlZDRmN2M0ZDkxNDQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUVycm9yLmgKQEAgLTYxLDE2ICs2MSwxMSBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgQ0ZFcnJvclJlZiBjZkVycm9yKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgb3BlcmF0b3IgQ0ZFcnJvclJlZigpIGNvbnN0OwogCi0jaWYgVVNFKENGTkVUV09SSykK
LSNpZiBQTEFURk9STShXSU4pCisjaWYgVVNFKENGTkVUV09SSykgJiYgUExBVEZPUk0oV0lOKQog
ICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNv
bnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlv
biwgQ0ZEYXRhUmVmIGNlcnRpZmljYXRlKTsKICAgICBQQ0NFUlRfQ09OVEVYVCBjZXJ0aWZpY2F0
ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2VydGlmaWNhdGUoQ0ZEYXRhUmVmKTsKICNlbmRpZgot
ICAgIFJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcik7Ci0gICAgQ0ZTdHJlYW1FcnJv
ciBjZlN0cmVhbUVycm9yKCkgY29uc3Q7Ci0gICAgb3BlcmF0b3IgQ0ZTdHJlYW1FcnJvcigpIGNv
bnN0OwotI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCBS
ZXNvdXJjZUVycm9yKE5TRXJyb3IgKik7CkBAIC04OCw5ICs4Myw2IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2RhdGFJc1VwVG9EYXRlOwogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgbXV0YWJsZSBS
ZXRhaW5QdHI8Q0ZFcnJvclJlZj4gbV9wbGF0Zm9ybUVycm9yOwotI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIG11dGFibGUgUmV0YWluUHRyPE5TRXJyb3I+IG1fcGxhdGZvcm1OU0Vycm9yOwotI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IG1fY2VydGlm
aWNhdGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAppbmRleCAxMzFmYmIwNDYxMTcwNmY2NGQ4NTBhMWM1
MGUwNWUxNGEyYzZlMTMzLi5hNDdiODk4MmQ1NmVjZTQ2M2Y0NWNlZDBlOTQwZmE0NjYyM2JiMmJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
RXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yQ0YuY3BwCkBAIC0xNzcsNTIgKzE3Nyw2IEBAIFJlc291cmNlRXJyb3I6Om9wZXJh
dG9yIENGRXJyb3JSZWYoKSBjb25zdAogICAgIHJldHVybiBjZkVycm9yKCk7CiB9CiAKLS8vIEZJ
WE1FOiBPbmNlIDxyZGFyOi8vcHJvYmxlbS81MDUwODQxPiBpcyBmaXhlZCB3ZSBjYW4gcmVtb3Zl
IHRoaXMgY29uc3RydWN0b3IuCi1SZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKENGU3RyZWFt
RXJyb3IgZXJyb3IpCi0gICAgOiBtX2RhdGFJc1VwVG9EYXRlKHRydWUpCi17Ci0gICAgbV9pc051
bGwgPSBmYWxzZTsKLSAgICBtX2Vycm9yQ29kZSA9IGVycm9yLmVycm9yOwotCi0gICAgc3dpdGNo
KGVycm9yLmRvbWFpbikgewotICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5DdXN0b206Ci0g
ICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiI7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21haW4gPSAi
TlNQT1NJWEVycm9yRG9tYWluIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBrQ0ZTdHJlYW1F
cnJvckRvbWFpbk1hY09TU3RhdHVzOgotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJy
b3JEb21haW4iOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLUNGU3RyZWFtRXJyb3IgUmVz
b3VyY2VFcnJvcjo6Y2ZTdHJlYW1FcnJvcigpIGNvbnN0Ci17Ci0gICAgbGF6eUluaXQoKTsKLQot
ICAgIENGU3RyZWFtRXJyb3IgcmVzdWx0OwotICAgIHJlc3VsdC5lcnJvciA9IG1fZXJyb3JDb2Rl
OwotCi0gICAgaWYgKG1fZG9tYWluID09ICJOU0N1c3RvbUVycm9yRG9tYWluIikKLSAgICAgICAg
cmVzdWx0LmRvbWFpbiA9IGtDRlN0cmVhbUVycm9yRG9tYWluQ3VzdG9tOwotICAgIGVsc2UgaWYg
KG1fZG9tYWluID09ICJOU1BPU0lYRXJyb3JEb21haW4iKQotICAgICAgICByZXN1bHQuZG9tYWlu
ID0ga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDsKLSAgICBlbHNlIGlmIChtX2RvbWFpbiA9PSAi
TlNPU1N0YXR1c0Vycm9yRG9tYWluIikKLSAgICAgICAgcmVzdWx0LmRvbWFpbiA9IGtDRlN0cmVh
bUVycm9yRG9tYWluTWFjT1NTdGF0dXM7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJlc3VsdC5kb21h
aW4gPSBrQ0ZTdHJlYW1FcnJvckRvbWFpbkN1c3RvbTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUmVzb3VyY2VFcnJvcjo6
b3BlcmF0b3IgQ0ZTdHJlYW1FcnJvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGNmU3RyZWFtRXJy
b3IoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKENGTkVU
V09SSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDVjMTQyMDdkNDFhYTM2Zjc5MGJlZWM3YzMz
ZjQ3YmYyYTdjN2QyNTEuLjVkZjFkMDBkNjNlZGU5Y2MyYTI0MmYxZDJhNDI3NTQ3NzcyY2Q3N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtNTMsMTYgKzUzLDYgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkKLSNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgiCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oIgotI2lmIFVTRShDRk5FVFdPUkspCi0jaW5jbHVkZSAiV2ViQ29yZVVSTFJlc3BvbnNlLmgi
Ci0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4KLSNpbmNsdWRlIDxD
Rk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0UHJpdi5oPgotI2VuZGlmCi0jZW5kaWYKLQogI2lmIFBMQVRG
T1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50
ZXJmYWNlLmg+CiAjaW5jbHVkZSA8cHJvY2Vzcy5oPgpAQCAtMjE5LDE0ICsyMDksNyBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZSwgYm9vbAogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHByb3BlcnRpZXNE
aWN0aW9uYXJ5LmdldCgpLCBrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcywg
c3RyZWFtUHJvcGVydGllcyk7CiAgICAgQ0ZSZWxlYXNlKHN0cmVhbVByb3BlcnRpZXMpOwogCi0j
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYgKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKQotICAg
ICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlKHRoaXMpKTsKLSAgICBl
bHNlCi0gICAgICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7Ci0jZWxz
ZQogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7Ci0jZW5kaWYKICAg
ICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+c2V0dXBSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwog
CiAgICAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IGNsaWVudCA9IGQtPm1fY29ubmVjdGlvbkRl
bGVnYXRlLT5tYWtlQ29ubmVjdGlvbkNsaWVudCgpOwpAQCAtMzY4LDEyICszNTEsOSBAQCBib29s
IFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29u
c3QgQXV0aGVudGljYXRpb25DaAogCiAgICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQt
Pm1fcGFzcy5pc051bGwoKSkgewogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVm
PiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBkLT5tX3VzZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZC0+bV9wYXNzLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUp
KTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0g
Q3JlZGVudGlhbChjZkNyZWRlbnRpYWwuZ2V0KCkpOwotI2Vsc2UKKwogICAgICAgICBDcmVkZW50
aWFsIGNyZWRlbnRpYWwgPSBjb3JlKGNmQ3JlZGVudGlhbC5nZXQoKSk7Ci0jZW5kaWYKLSAgICAg
ICAgCisKICAgICAgICAgVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFp
bHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAgICAgICAgICAgICB1cmxU
b1N0b3JlID0gY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwpAQCAtNDAyLDEyICsz
ODIsOCBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVu
dGljYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaAogICAgICAgICAgICAgICAgICAgICAvLyBT
dG9yZSB0aGUgY3JlZGVudGlhbCBiYWNrLCBwb3NzaWJseSBhZGRpbmcgaXQgYXMgYSBkZWZhdWx0
IGZvciB0aGlzIGRpcmVjdG9yeS4KICAgICAgICAgICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5z
dG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KGNyZWRlbnRpYWwsIGNoYWxs
ZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgp
KTsKICAgICAgICAgICAgICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICAg
ICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNy
ZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYo
KSk7Ci0jZWxzZQogICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+
IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOwogICAgICAgICAg
ICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgp
LCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7
Ci0jZW5kaWYKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtNDU3LDIwICs0MzMsMTIgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2
ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UKICAg
ICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCku
c2V0KHdlYkNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9y
ZSk7CiAKICAgICAgICAgaWYgKGQtPm1fY29ubmVjdGlvbikgewotI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rp
b24uZ2V0KCksIHdlYkNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1
dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZWxzZQogICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3Jl
ZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRih3ZWJDcmVkZW50aWFs
KSk7CiAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVj
dGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxl
bmdlUmVmKCkpOwotI2VuZGlmCiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGQtPm1fY29ubmVj
dGlvbikgewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VD
cmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwo
KSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbHNlCiAgICAgICAgIFJl
dGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRl
Q0YoY3JlZGVudGlhbCkpOwogICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQt
Pm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxB
dXRoQ2hhbGxlbmdlUmVmKCkpOwotI2VuZGlmCiAgICAgfQogCiAgICAgY2xlYXJBdXRoZW50aWNh
dGlvbigpOwpAQCAtNjExLDMwICs1NzksNiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9y
bVNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCiAgICAgICAgIENGVVJMQ29ubmVjdGlvblJl
c3VtZShkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOwogfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi12
b2lkIFJlc291cmNlSGFuZGxlOjpzY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCi17Ci0gICAg
Q0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBwYWlyLnJ1bkxvb3AoKTsKLSAgICBpZiAoIXJ1bkxvb3Ap
Ci0gICAgICAgIHJldHVybjsKLQotICAgIENGVVJMQ29ubmVjdGlvblNjaGVkdWxlV2l0aFJ1bkxv
b3AoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBydW5Mb29wLCBwYWlyLm1vZGUoKSk7Ci0gICAgaWYg
KGQtPm1fc3RhcnRXaGVuU2NoZWR1bGVkKSB7Ci0gICAgICAgIENGVVJMQ29ubmVjdGlvblN0YXJ0
KGQtPm1fY29ubmVjdGlvbi5nZXQoKSk7Ci0gICAgICAgIGQtPm1fc3RhcnRXaGVuU2NoZWR1bGVk
ID0gZmFsc2U7Ci0gICAgfQotfQotCi12b2lkIFJlc291cmNlSGFuZGxlOjp1bnNjaGVkdWxlKFNj
aGVkdWxlUGFpciYgcGFpcikKLXsKLSAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCA9IHBhaXIucnVu
TG9vcCgpOwotICAgIGlmICghcnVuTG9vcCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0ZVUkxD
b25uZWN0aW9uVW5zY2hlZHVsZUZyb21SdW5Mb29wKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgcnVu
TG9vcCwgcGFpci5tb2RlKCkpOwotfQotI2VuZGlmCi0KIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
UmVzb3VyY2VIYW5kbGU6OmN1cnJlbnRSZXF1ZXN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gZC0+
bV9jdXJyZW50UmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGUuY3BwCmluZGV4IDRmN2E3OTI5ZjFiMTFkODg0ZDhkMDQ3NjgyMTEyYWRiNjZl
OWJiZDUuLmExZTEzODA5ZTQ3OGJlZjRmZWFlNzM4MGQyYWNkY2VhNGRhMTEyM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcApAQCAtMzIs
MTAgKzMyLDYgQEAKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlLmgiCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJXZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlLmgiCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRl
IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VS
ZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVx
dWVzdC5oCmluZGV4IDhhNWVmMDkwNGQzYTYyNWQzNTYwN2M2YTY3N2VkNmVlZmQ5YTZjNzkuLjFk
MGQ3ZDAyNTIwMzM3Y2QyNzBlZGJkZjQxNzgyNmI1MThmNjg4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaApAQCAtNjMs
MTIgKzYzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAgICAgICAgIAogI2lm
IFVTRShDRk5FVFdPUkspCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIFdFQkNPUkVfRVhQ
T1JUIFJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVlc3QgKik7Ci0gICAgICAgIHZvaWQgdXBkYXRl
TlNVUkxSZXF1ZXN0KCk7Ci0gICAgICAgIHZvaWQgY2xlYXJPclVwZGF0ZU5TVVJMUmVxdWVzdCgp
OwotI2VuZGlmCi0KICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KENGVVJMUmVxdWVzdFJlZiBjZlJl
cXVlc3QpCiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoKQogICAgICAgICAgICAg
LCBtX2NmUmVxdWVzdChjZlJlcXVlc3QpCkBAIC04OCwxMSArODIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZvaWQgYXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwoKTsKICNlbmRp
ZgogI2lmIFBMQVRGT1JNKENPQ09BKQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgICAgIGJvb2wg
ZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faHR0cEJvZHkg
fHwgbV9jZlJlcXVlc3Q7IH0KLSNlbHNlCiAgICAgICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1Bs
YXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faHR0cEJvZHkgfHwgbV9uc1JlcXVlc3Q7IH0K
LSNlbmRpZgogICAgICAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVz
dChIVFRQQm9keVVwZGF0ZVBvbGljeSkgY29uc3Q7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIENGU3RyaW5nUmVmIGlzVXNlckluaXRpYXRlZEtleSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCBh
Y2MxZDQ1Njk3NWNjMTJmMzlhMzM4ZGJiMjQzOTQxZTU3YzI2ZDFhLi5iNzlmN2M0MGVkMGM5NGQx
Y2JlYzllNTY4NjNhYzllNTY0MWI5ODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaApAQCAtNTMsOSArNTMsNiBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBtX2lzTnVsbCA9ICFjZlJlc3BvbnNlOwogICAgIH0KLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZVJlc3BvbnNlKE5T
VVJMUmVzcG9uc2UgKik7Ci0jZW5kaWYKICNlbHNlCiAgICAgUmVzb3VyY2VSZXNwb25zZShOU1VS
TFJlc3BvbnNlICpuc1Jlc3BvbnNlKQogICAgICAgICA6IG1faW5pdExldmVsKFVuaW5pdGlhbGl6
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVzcG9uc2VDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKaW5kZXggNGJhZTc0ZTgzODE2YzE5NGVkYzE1NGQ4
NGMyZGU4ZjZkZDE2ZmM5NS4uMWFhODM3ZmM3MmI3ODIzZWE3YmRlOGNiOTA2Mzk4ZmVhNzVkNWFm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlc3BvbnNlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcApAQCAtMzMsMTAgKzMzLDYgQEAKICNpbmNsdWRl
IDxDRk5ldHdvcmsvQ0ZVUkxSZXNwb25zZVByaXYuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgQ0ZTdHJpbmdS
ZWYgY29uc3QgY29tbW9uSGVhZGVyRmllbGRzW10gPSB7CkBAIC00NiwxMyArNDIsOSBAQCBzdGF0
aWMgQ0ZTdHJpbmdSZWYgY29uc3QgY29tbW9uSGVhZGVyRmllbGRzW10gPSB7CiBDRlVSTFJlc3Bv
bnNlUmVmIFJlc291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9uc2UoKSBjb25zdAogewogICAgIGlm
ICghbV9jZlJlc3BvbnNlICYmICFtX2lzTnVsbCkgewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
ICAgICBuc1VSTFJlc3BvbnNlKCk7Ci0jZWxzZQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IHVybCA9IG1fdXJsLmNyZWF0ZUNGVVJMKCk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNyZWF0
ZXMgYSB2ZXJ5IGluY29tcGxldGUgQ0ZVUkxSZXNwb25zZSwgd2hpY2ggZG9lcyBub3QgZXZlbiBo
YXZlIGEgc3RhdHVzIGNvZGUuCiAgICAgICAgIG1fY2ZSZXNwb25zZSA9IGFkb3B0Q0YoQ0ZVUkxS
ZXNwb25zZUNyZWF0ZSgwLCB1cmwuZ2V0KCksIG1fbWltZVR5cGUuc3RyaW5nKCkuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgsIG1fdGV4dEVuY29kaW5nTmFt
ZS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxv
d2VkKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4gbV9jZlJlc3BvbnNlLmdldCgpOwpA
QCAtMTE1LDkgKzEwNyw2IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5p
dChJbml0TGV2ZWwgaW5pdExldmVsKQogCiBDZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VSZXNwb25z
ZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAogewotI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oYWRvcHRDRih3a0NvcHlOU1VSTFJlc3BvbnNl
Q2VydGlmaWNhdGVDaGFpbihuc1VSTFJlc3BvbnNlKCkpKSk7Ci0jZW5kaWYKICAgICByZXR1cm4g
Q2VydGlmaWNhdGVJbmZvKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCmluZGV4IGYyY2Q5NjMyYzIwZTY1
NTcwZGFjZTliOWMwOTExMDc3NmQ3NmUzMTcuLjk0MzRkM2E3YTFhNTBiNTVkNThkOTBjNmVkYzUy
ZTI3ZDYwOTU5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvQ3JlZGVudGlhbENvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaApAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRl
IDxTZWN1cml0eS9TZWNCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYg
VVNFKENGTkVUV09SSykKLXR5cGVkZWYgY29uc3Qgc3RydWN0IF9DRlVSTENyZWRlbnRpYWwqIENG
VVJMQ3JlZGVudGlhbFJlZjsKLSNlbmRpZgotCiBPQkpDX0NMQVNTIE5TVVJMQ3JlZGVudGlhbDsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIsMTggKzQ4LDEyIEBAIHB1YmxpYzoKIAogICAg
IENyZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGV4cGxpY2l0IENyZWRlbnRpYWwoQ0ZVUkxDcmVkZW50
aWFsUmVmKTsKLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENyZWRlbnRpYWwo
TlNVUkxDcmVkZW50aWFsICopOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0VtcHR5KCkg
Y29uc3Q7CiAKICAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7
IHJldHVybiBtX25zQ3JlZGVudGlhbCAmJiBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKG1f
bnNDcmVkZW50aWFsLmdldCgpKTsgfQogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBDRlVSTENy
ZWRlbnRpYWxSZWYgY2ZDcmVkZW50aWFsKCkgY29uc3Q7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VY
UE9SVCBOU1VSTENyZWRlbnRpYWwgKm5zQ3JlZGVudGlhbCgpIGNvbnN0OwogCiAgICAgc3RhdGlj
IGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBDcmVkZW50aWFs
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Ny
ZWRlbnRpYWxDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
Q3JlZGVudGlhbENvY29hLm1tCmluZGV4IGQ2OTYxYjY2NTJhMGZhZDJiMWQ4NmUxODg1YWY1MjUx
Mjg5YTIzNzEuLjdlMDVjNDYzYTU1YWUzY2IyODk2NTZiYTEzMWQ5ZTIyNDBjMDA2MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVu
dGlhbENvY29hLm1tCkBAIC0yNiwxMyArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJDcmVkZW50aWFsQ29jb2EuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCi1AaW50ZXJmYWNl
IE5TVVJMQ3JlZGVudGlhbCAoV2ViRGV0YWlscykKLS0gKGlkKV9pbml0V2l0aENGVVJMQ3JlZGVu
dGlhbDooQ0ZVUkxDcmVkZW50aWFsUmVmKWNyZWRlbnRpYWw7Ci0tIChDRlVSTENyZWRlbnRpYWxS
ZWYpIF9DRlVSTENyZWRlbnRpYWw7Ci1AZW5kCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UgdG9OU1VSTENyZWRlbnRpYWxQ
ZXJzaXN0ZW5jZShDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVyc2lzdGVuY2UpCkBAIC04NCwyNiAr
NzcsMTIgQEAgQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFsJiBvcmlnaW5h
bCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3QKICAgICB9CiB9CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChDRlVSTENyZWRlbnRpYWxSZWYgY3JlZGVu
dGlhbCkKLSAgICA6IENyZWRlbnRpYWwoYWRvcHROUyhbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10g
X2luaXRXaXRoQ0ZVUkxDcmVkZW50aWFsOmNyZWRlbnRpYWxdKS5nZXQoKSkKLXsKLX0KLSNlbmRp
ZgotCiBDcmVkZW50aWFsOjpDcmVkZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkK
ICAgICA6IENyZWRlbnRpYWxCYXNlKGNyZWRlbnRpYWwudXNlciwgY3JlZGVudGlhbC5wYXNzd29y
ZCwgdG9DcmVkZW50aWFsUGVyc2lzdGVuY2UoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSkpCiAgICAg
LCBtX25zQ3JlZGVudGlhbChjcmVkZW50aWFsKQogewogfQogCi0jaWYgVVNFKENGTkVUV09SSykK
LUNGVVJMQ3JlZGVudGlhbFJlZiBDcmVkZW50aWFsOjpjZkNyZWRlbnRpYWwoKSBjb25zdAotewot
ICAgIHJldHVybiBbbnNDcmVkZW50aWFsKCkgX0NGVVJMQ3JlZGVudGlhbF07Ci19Ci0jZW5kaWYK
LQogTlNVUkxDcmVkZW50aWFsICpDcmVkZW50aWFsOjpuc0NyZWRlbnRpYWwoKSBjb25zdAogewog
ICAgIGlmIChtX25zQ3JlZGVudGlhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EuaAppbmRleCA3NDg4
MmQ3YTg4Yjc4MzFiNDE0ZjkwZGY3MWQxNWQ4OTI0NGUyMTUyLi5iODZhYjAzZDRmZjMyMzUzNDAz
ZmYwN2ZhYTgxODFlNTI5ODBmN2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5oCkBAIC0yOSwx
MCArMjksNiBAQAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUJhc2UuaCIKICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotdHlwZWRlZiBzdHJ1Y3QgX0NG
VVJMUHJvdGVjdGlvblNwYWNlKiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZjsKLSNlbmRpZgotCiBP
QkpDX0NMQVNTIE5TVVJMUHJvdGVjdGlvblNwYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00Nyw5ICs0Myw2IEBAIHB1YmxpYzoKIAogICAgIFByb3RlY3Rpb25TcGFjZShXVEY6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZVR5cGUgZGVsZXRlZFZhbHVlKSA6IFByb3RlY3Rpb25TcGFjZUJhc2Uo
ZGVsZXRlZFZhbHVlKSB7IH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgZXhwbGljaXQgUHJv
dGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKTsKLSNlbmRpZgogICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFByb3RlY3Rpb25TcGFjZShOU1VSTFByb3RlY3Rpb25TcGFjZSAq
KTsKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmIGEsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgYik7CkBAIC01OCw5ICs1MSw2IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVjZWl2ZXNDcmVkZW50aWFsU2VjdXJlbHko
KSBjb25zdDsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VS
ZWYgY2ZTcGFjZSgpIGNvbnN0OwotI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxQcm90
ZWN0aW9uU3BhY2UgKm5zU3BhY2UoKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFj
ZUNvY29hLm1tCmluZGV4IGFmNGM0ZTA1NzY4YzA4ZjYzYjZkYTBkYTk5OTM0Nzg1YTEzZmI4YTMu
LmRiMWZiNTFiZjk5MDI3YmMyZjM1MzBhNWQ1MThiMGZmN2I3ODYxYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9u
U3BhY2VDb2NvYS5tbQpAQCAtMjYsMjIgKzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiUHJvdGVjdGlvblNwYWNlQ29jb2EuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCi1AaW50
ZXJmYWNlIE5TVVJMUHJvdGVjdGlvblNwYWNlIChXZWJEZXRhaWxzKQotLSAoQ0ZVUkxQcm90ZWN0
aW9uU3BhY2VSZWYpIF9DRlVSTFByb3RlY3Rpb25TcGFjZTsKLS0gKGlkKV9pbml0V2l0aENGVVJM
UHJvdGVjdGlvblNwYWNlOihDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiljZlByb3RTcGFjZTsKLUBl
bmQKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
UHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9uU3BhY2UoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYg
c3BhY2UpCi0gICAgOiBQcm90ZWN0aW9uU3BhY2UoYWRvcHROUyhbW05TVVJMUHJvdGVjdGlvblNw
YWNlIGFsbG9jXSBfaW5pdFdpdGhDRlVSTFByb3RlY3Rpb25TcGFjZTpzcGFjZV0pLmdldCgpKQot
ewotfQotI2VuZGlmCi0KIHN0YXRpYyBQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlIHR5cGUoTlNV
UkxQcm90ZWN0aW9uU3BhY2UgKnNwYWNlKQogewogICAgIGlmIChbc3BhY2UgaXNQcm94eV0pIHsK
QEAgLTEwNSwxMyArOTEsNiBAQCBQcm90ZWN0aW9uU3BhY2U6OlByb3RlY3Rpb25TcGFjZShOU1VS
TFByb3RlY3Rpb25TcGFjZSAqc3BhY2UpCiAgICAgbV9uc1NwYWNlID0gc3BhY2U7CiB9CiAKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgUHJvdGVjdGlvblNwYWNl
OjpjZlNwYWNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW25zU3BhY2UoKSBfQ0ZVUkxQcm90ZWN0
aW9uU3BhY2VdOwotfQotI2VuZGlmCi0KIE5TVVJMUHJvdGVjdGlvblNwYWNlICpQcm90ZWN0aW9u
U3BhY2U6Om5zU3BhY2UoKSBjb25zdAogewogICAgIGlmIChtX25zU3BhY2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJl
cXVlc3RDb2NvYS5tbQppbmRleCAzYjFiMGEyZjg3NDc0N2IzOGEyYzgzODBmYjY1NTk4NmJkZWI5
ZWNjLi45ZjVkMDJhYjY1YmM4Y2E0MzJjODI0Mjg0ZThiZGMwMWFiN2EzOTUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3Vy
Y2VSZXF1ZXN0Q29jb2EubW0KQEAgLTUzLDE1ICs1Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IE5TVVJMUmVxdWVzdCAqUmVzb3VyY2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRh
dGVQb2xpY3kgYm9keVBvbGljeSkgY29uc3QKIHsKICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3Qo
Ym9keVBvbGljeSk7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBpZiAoIW1fbnNSZXF1ZXN0KQot
ICAgICAgICBjb25zdF9jYXN0PFJlc291cmNlUmVxdWVzdCo+KHRoaXMpLT51cGRhdGVOU1VSTFJl
cXVlc3QoKTsKLSNlbmRpZgogICAgIHJldHVybiBbW21fbnNSZXF1ZXN0LmdldCgpIHJldGFpbl0g
YXV0b3JlbGVhc2VdOwogfQogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KIENGVVJMUmVxdWVzdFJl
ZiBSZXNvdXJjZVJlcXVlc3Q6OmNmVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSBib2R5
UG9saWN5KSBjb25zdAogewogICAgIHJldHVybiBbbnNVUkxSZXF1ZXN0KGJvZHlQb2xpY3kpIF9D
RlVSTFJlcXVlc3RdOwpAQCAtMjIyLDggKzIxNiw2IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpz
ZXRTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKQog
ICAgIG1fbnNSZXF1ZXN0ID0gYWRvcHROUyh3a0NvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9u
KHN0b3JhZ2VTZXNzaW9uLCBtX25zUmVxdWVzdC5nZXQoKSkpOwogfQogCi0jZW5kaWYgLy8gVVNF
KENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZP
Uk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNr
TG9vay5oCmluZGV4IDBkN2U4MjVlZjJiMTE4ODZiMzhkYmIzY2I5M2UwMDBiOGJkMmVlZTUuLmQx
M2ZjZmNlY2U1NjMzNTE1MDkzZDIxMDIyOTQ3OGQyZDkzOWQ2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCkBAIC00NCwxMSArNDQsNiBA
QCBPQkpDX0NMQVNTIE5TVVJMUmVxdWVzdDsKIE9CSkNfQ0xBU1MgTlNVUkxSZXNwb25zZTsKIE9C
SkNfQ0xBU1MgUUxQcmV2aWV3Q29udmVydGVyOwogCi0jaWYgVVNFKENGTkVUV09SSykKLXR5cGVk
ZWYgc3RydWN0IF9DRlVSTFJlc3BvbnNlKiBDRlVSTFJlc3BvbnNlUmVmOwotdHlwZWRlZiBzdHJ1
Y3QgX0NGVVJMQ29ubmVjdGlvbiogQ0ZVUkxDb25uZWN0aW9uUmVmOwotI2VuZGlmCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUXVpY2tMb29rSGFuZGxlQ2xpZW50OwpAQCAtODIsOSAr
NzcsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc2hvdWxkQ3Jl
YXRlRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJlc291cmNlSGFuZGxlKiwgTlNVUkxDb25uZWN0
aW9uICosIE5TVVJMUmVzcG9uc2UgKiwgaWQgZGVsZWdhdGUpOwotI2lmIFVTRShDRk5FVFdPUksp
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0ZShSZXNv
dXJjZUhhbmRsZSosIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZSosIENGVVJMUmVzcG9uc2VSZWYpOwotI2VuZGlmCiAgICAgLy8gRklYTUU6IFVzZSBvZiBS
ZXNvdXJjZUxvYWRlciBoZXJlIGlzIGEgcGxhdGZvcm0gdmlvbGF0aW9uLgogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGUoUmVz
b3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKQEAgLTk2LDkgKzg4LDYg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmFpbCgpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSgpOwotI2lmIFVTRShDRk5FVFdP
UkspCi0gICAgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKCk7Ci0jZW5kaWYKIAogICAgIHZv
aWQgc2V0Q2xpZW50KFBhc3NSZWZQdHI8UXVpY2tMb29rSGFuZGxlQ2xpZW50PiBjbGllbnQpIHsg
bV9jbGllbnQgPSBjbGllbnQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvUXVpY2tMb29rLm1tCmluZGV4IDE3ZWQ4NjQ2YTU5NDRhMGYwMWVkNTY4NzA5N2Q5
N2NhYzcyMDg0ZjQuLmRlMDQwNGUyMDI1OWNlNzExZjg4NmU2MWQ3OWQ4ZjA1NTMxOGIzNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0K
QEAgLTMyLDEyICszMiwxMiBAQAogI2ltcG9ydCAiRmlsZVN5c3RlbUlPUy5oIgogI2ltcG9ydCAi
TG9nZ2luZy5oIgogI2ltcG9ydCAiTlNGaWxlTWFuYWdlclNQSS5oIgotI2ltcG9ydCAiUXVpY2tM
b29rU29mdExpbmsuaCIKICNpbXBvcnQgIlJlc291cmNlRXJyb3IuaCIKICNpbXBvcnQgIlJlc291
cmNlSGFuZGxlLmgiCiAjaW1wb3J0ICJSZXNvdXJjZUxvYWRlci5oIgogI2ltcG9ydCAiUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCiAjaW1wb3J0ICJTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYkNvcmVVUkxSZXNwb25zZUlPUy5oIgogI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KQEAgLTQ2LDE0ICs0Niw3IEBACiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxD
Rk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uLmg+Ci0KLUBpbnRlcmZhY2UgTlNVUkxSZXNwb25zZSAo
UXVpY2tMb29rRGV0YWlscykKLSsoTlNVUkxSZXNwb25zZSAqKV9yZXNwb25zZVdpdGhDRlVSTFJl
c3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNlOwotLShDRlVSTFJlc3BvbnNlUmVmKV9D
RlVSTFJlc3BvbnNlOwotQGVuZAotI2VuZGlmCisjaW1wb3J0ICJRdWlja0xvb2tTb2Z0TGluay5o
IgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTkyLDgzICsxODUsNyBAQCBjb25z
dCBjaGFyKiBXZWJDb3JlOjpRTFByZXZpZXdQcm90b2NvbCgpCiAgICAgcmV0dXJuIHByZXZpZXdQ
cm90b2NvbC5nZXQoKS5kYXRhKCk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotLy8gVGhlIHdh
eSBRdWlja0xvb2sgd29ya3MgaXMgd2UgcGFzcyBpdCBhbiBOU1VSTENvbm5lY3Rpb25EZWxlZ2F0
ZSBjYWxsYmFjayBvYmplY3QgYXQgY3JlYXRpb24KLS8vIHRpbWUuIFRoZW4gd2UgcGFzcyBpdCBh
bGwgdGhlIGRhdGEgYXMgd2UgcmVjZWl2ZSBpdC4gT25jZSB3ZSd2ZSBkb3dubG9hZGVkIHRoZSBm
dWxsIFVSTCwKLS8vIFF1aWNrTG9vayB0dXJucyBhcm91bmQgYW5kIHNlbmQgdXMsIHRocm91Z2gg
dGhpcyBkZWxlZ2F0ZSwgdGhlIEhUTUwgdmVyc2lvbiBvZiB0aGUgZmlsZSB3aGljaCB3ZQotLy8g
cGFzcyBvbiB0byBXZWJDb3JlLiBUaGUgZmxhZyBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29u
dmVydGVyIGluIFF1aWNrTG9va0hhbmRsZSBkZWNpZGVzCi0vLyB3aGV0aGVyIHRvIHBhc3MgdGhl
IGRhdGEgdG8gUXVpY2tMb29rIG9yIFdlYkNvcmUuCi0vLwotLy8gVGhpcyB3b3JrcyBmaW5lIHdo
ZW4gdXNpbmcgTlMgQVBJcywgYnV0IHdoZW4gdXNpbmcgQ0ZOZXR3b3JrLCB3ZSBkb24ndCBoYXZl
IGEgTlNVUkxDb25uZWN0aW9uRGVsZWdhdGUuCi0vLyBTbyB3ZSBjcmVhdGUgV2ViUXVpY2tMb29r
SGFuZGxlQXNEZWxlZ2F0ZSBhcyBhbiBpbnRlcm1lZGlhdGUgZGVsZWdhdGUgb2JqZWN0IGFuZCBw
YXNzIGl0IHRvCi0vLyBRTFByZXZpZXdDb252ZXJ0ZXIuIFRoZSBwcm94eSBkZWxlZ2F0ZSB0aGVu
IGZvcndhcmRzIHRoZSBtZXNzYWdlcyBvbiB0byB0aGUgQ0ZOZXR3b3JrIGNvZGUuCi1AaW50ZXJm
YWNlIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25uZWN0
aW9uRGVsZWdhdGU+IHsKLSAgICBSZWZQdHI8U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZTsKLX0KLQotLSAoaWQpaW5p
dFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6KFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZSopY29ubmVjdGlvbkRlbGVnYXRlOwotLSAodm9pZCljbGVhckhhbmRs
ZTsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUK
LS0gKGlkKWluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRlOihTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqKWNvbm5lY3Rpb25EZWxlZ2F0ZQotewotICAgIHNl
bGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwot
ICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlID0gY29ubmVjdGlvbkRlbGVnYXRlOwotICAgIHJldHVy
biBzZWxmOwotfQotCi0tICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5l
Y3Rpb24gZGlkUmVjZWl2ZURhdGFBcnJheTooTlNBcnJheSAqKWRhdGFBcnJheQotewotICAgIFVO
VVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBpZiAoIW1fY29ubmVjdGlvbkRlbGVnYXRlKQot
ICAgICAgICByZXR1cm47Ci0gICAgTE9HKE5ldHdvcmssICJXZWJRdWlja0xvb2tIYW5kbGVBc0Rl
bGVnYXRlOjpkaWRSZWNlaXZlRGF0YUFycmF5KCkiKTsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0
ZS0+ZGlkUmVjZWl2ZURhdGFBcnJheShyZWludGVycHJldF9jYXN0PENGQXJyYXlSZWY+KGRhdGFB
cnJheSkpOwotfQotCi0tICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5l
Y3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEgbGVuZ3RoUmVjZWl2ZWQ6KGxvbmcg
bG9uZylsZW5ndGhSZWNlaXZlZAotewotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAg
ICBpZiAoIW1fY29ubmVjdGlvbkRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgTE9HKE5l
dHdvcmssICJXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YSgpIC0g
ZGF0YSBsZW5ndGggPSAlbGQiLCAobG9uZylbZGF0YSBsZW5ndGhdKTsKLQotICAgIC8vIFF1aWNr
TG9vayBjb2RlIHNlbmRzIHVzIGEgbmlsIGRhdGEgYXQgdGltZXMuIFRoZSBjaGVjayBiZWxvdyBp
cyB0aGUgc2FtZSBhcyB0aGUgb25lIGluCi0gICAgLy8gUmVzb3VyY2VIYW5kbGVNYWMuY3BwIGFk
ZGVkIGZvciBhIGRpZmZlcmVudCBidWcuCi0gICAgaWYgKCFbZGF0YSBsZW5ndGhdKQotICAgICAg
ICByZXR1cm47Ci0gICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZFJlY2VpdmVEYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhKSwgc3RhdGljX2Nhc3Q8aW50PihsZW5ndGhSZWNl
aXZlZCkpOwotfQotCi0tICh2b2lkKWNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOihOU1VSTENv
bm5lY3Rpb24gKiljb25uZWN0aW9uCi17Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwot
ICAgIGlmICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBMT0co
TmV0d29yaywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6OmRpZEZpbmlzaExvYWRpbmco
KSIpOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRGaW5pc2hMb2FkaW5nKCk7Ci19Ci0K
LS0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRGYWls
V2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKLXsKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlv
bik7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAg
IExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkRmFpbCgpIik7
Ci0gICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZEZhaWwocmVpbnRlcnByZXRfY2FzdDxDRkVy
cm9yUmVmPihlcnJvcikpOwotfQotCi0tICh2b2lkKWNsZWFySGFuZGxlCi17Ci0gICAgbV9jb25u
ZWN0aW9uRGVsZWdhdGUgPSBudWxscHRyOwotfQotQGVuZAotI2VuZGlmCi0KLUBpbnRlcmZhY2Ug
V2ViUmVzb3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5l
Y3Rpb25EZWxlZ2F0ZT4geworQGludGVyZmFjZSBXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0Rl
bGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlLCBXZWJDb3JlUmVzb3Vy
Y2VMb2FkZXJEZWxlZ2F0ZT4gewogICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gX3Jlc291cmNl
TG9hZGVyOwogICAgIEJPT0wgX2hhc1NlbnREaWRSZWNlaXZlUmVzcG9uc2U7CiAgICAgQk9PTCBf
aGFzRmFpbGVkOwpAQCAtMzU5LDcgKzI3Niw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxD
b25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyCiAg
ICAgX3Jlc291cmNlTG9hZGVyLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3IpKTsKIH0KIAot
LSAodm9pZCljbGVhckhhbmRsZQorLSAodm9pZClkZXRhY2hIYW5kbGUKIHsKICAgICBfcmVzb3Vy
Y2VMb2FkZXIgPSBudWxscHRyOwogICAgIF9xdWlja0xvb2tIYW5kbGUgPSBudWxscHRyOwpAQCAt
NDE1LDI2ICszMzIsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBRdWlja0xv
b2tIYW5kbGU6OmNyZWF0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLAogICAgIHJldHVybiBXVEY6
Om1vdmUocXVpY2tMb29rSGFuZGxlKTsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi1zdGQ6OnVu
aXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlLCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGUqIGNvbm5lY3Rpb25EZWxlZ2F0ZSwgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNl
KQotewotICAgIEFTU0VSVF9BUkcoaGFuZGxlLCBoYW5kbGUpOwotICAgIGlmIChoYW5kbGUtPmZp
cnN0UmVxdWVzdCgpLnJlcXVlc3RlcigpICE9IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpN
YWluIHx8ICFbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkgY29udGFpbnNPYmpl
Y3Q6KE5TU3RyaW5nICopQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKGNmUmVzcG9uc2UpXSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBOU1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNlID0g
W05TVVJMUmVzcG9uc2UgX3Jlc3BvbnNlV2l0aENGVVJMUmVzcG9uc2U6Y2ZSZXNwb25zZV07Ci0g
ICAgV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZSAqZGVsZWdhdGUgPSBbW1tXZWJRdWlja0xv
b2tIYW5kbGVBc0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aENvbm5lY3Rpb25EZWxlZ2F0ZTpjb25u
ZWN0aW9uRGVsZWdhdGVdIGF1dG9yZWxlYXNlXTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tM
b29rSGFuZGxlPiBxdWlja0xvb2tIYW5kbGUobmV3IFF1aWNrTG9va0hhbmRsZShbaGFuZGxlLT5m
aXJzdFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSkgVVJMXSwgbmls
LCBuc1Jlc3BvbnNlLCBkZWxlZ2F0ZSkpOwotICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZENyZWF0
ZVF1aWNrTG9va0hhbmRsZSgqcXVpY2tMb29rSGFuZGxlKTsKLSAgICByZXR1cm4gV1RGOjptb3Zl
KHF1aWNrTG9va0hhbmRsZSk7Ci19Ci0KLUNGVVJMUmVzcG9uc2VSZWYgUXVpY2tMb29rSGFuZGxl
OjpjZlJlc3BvbnNlKCkKLXsKLSAgICByZXR1cm4gW21fbnNSZXNwb25zZSBfQ0ZVUkxSZXNwb25z
ZV07Ci19Ci0jZW5kaWYKLQogYm9vbCBRdWlja0xvb2tIYW5kbGU6OnNob3VsZENyZWF0ZUZvck1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgcmV0dXJuIFtRTFByZXZpZXdH
ZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSBjb250YWluc09iamVjdDptaW1lVHlwZV07CkBAIC01
MDAsNyArMzk3LDcgQEAgUXVpY2tMb29rSGFuZGxlOjp+UXVpY2tMb29rSGFuZGxlKCkKICAgICBM
T0coTmV0d29yaywgIlF1aWNrTG9va0hhbmRsZTo6flF1aWNrTG9va0hhbmRsZSgpIik7CiAgICAg
bV9jb252ZXJ0ZXIgPSBudWxscHRyOwogCi0gICAgW21fZGVsZWdhdGUgY2xlYXJIYW5kbGVdOwor
ICAgIFttX2RlbGVnYXRlIGRldGFjaEhhbmRsZV07CiB9CiAKIFN0cmluZyBRdWlja0xvb2tIYW5k
bGU6OnByZXZpZXdGaWxlTmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCmluZGV4IDY2N2I5YjE4
NjY3NDQwZGViZmVmZGExODA1Yjg0Y2I1NDc4NGM1NzkuLmI3MjlmMGYzNjIxOWRjNDFmM2FkZWIz
MTk0MjFmZjk2NTdmNDgxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCkBAIC0xLDM5ICsxIEBACi0vLwot
Ly8gIFJlc291cmNlSGFuZGxlSVBob25lLm1tCi0vLyAgV2ViQ29yZQotLy8KLS8vICBDb3B5cmln
aHQgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotCi0jaW1wb3J0ICJj
b25maWcuaCIKLSNpbXBvcnQgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKLQotI2lmIFVTRShD
Rk5FVFdPUkspCi0KLSNpbXBvcnQgPENGTmV0d29yay9DRlNvY2tldFN0cmVhbVByaXYuaD4KLSNp
bXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0UHJpdmF0ZS5oPgotCi11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DRk11dGFibGVEaWN0aW9uYXJ5
UmVmIFJlc291cmNlSGFuZGxlOjpjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgTlNTdHJpbmcgKmhvc3QgPSBy
ZXF1ZXN0LnVybCgpLmhvc3QoKTsKLSAgICBOU0FycmF5ICpjZXJ0QXJyYXkgPSBbTlNVUkxSZXF1
ZXN0IGFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Q6aG9zdF07Ci0gICAgQk9P
TCBhbGxvd3NBbnlDZXJ0aWZpY2F0ZSA9IFtOU1VSTFJlcXVlc3QgYWxsb3dzQW55SFRUUFNDZXJ0
aWZpY2F0ZUZvckhvc3Q6aG9zdF07Ci0gICAgaWYgKCFjZXJ0QXJyYXkgJiYgIWFsbG93c0FueUNl
cnRpZmljYXRlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIENGTXV0YWJsZURpY3Rpb25hcnlS
ZWYgc3NsUHJvcHMgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5
VmFsdWVDYWxsQmFja3MpOwotICAgIGlmIChjZXJ0QXJyYXkpCi0gICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHNzbFByb3BzLCBfa0NGU3RyZWFtU1NMVHJ1c3RlZExlYWZDZXJ0aWZpY2F0ZXMs
IChDRlR5cGVSZWYpIGNlcnRBcnJheSk7Ci0KLSAgICBpZiAoYWxsb3dzQW55Q2VydGlmaWNhdGUp
Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHNzbFByb3BzLCBrQ0ZTdHJlYW1TU0xWYWxp
ZGF0ZXNDZXJ0aWZpY2F0ZUNoYWluLCBrQ0ZCb29sZWFuRmFsc2UpOwotICAgIHJldHVybiBzc2xQ
cm9wczsKLX0KLQotfQotCi0jZW5kaWYKKy8vIFJlbW92ZSBtZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VSZXF1ZXN0SU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VSZXF1ZXN0SU9TLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjdkYzZiZTYzNDVjYzU2OTZhMWVjNmViZDAw
MzJmMzIzNGRmYjAwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlUmVxdWVzdElP
Uy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAi
UmVzb3VyY2VSZXF1ZXN0LmgiCi0KLSNpZiBQTEFURk9STShJT1MpCi0KLUBpbnRlcmZhY2UgTlNV
UkxSZXF1ZXN0IChXZWJOU1VSTFJlcXVlc3REZXRhaWxzKQotLSAoQ0ZVUkxSZXF1ZXN0UmVmKV9D
RlVSTFJlcXVlc3Q7Ci0tIChpZClfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6KENGVVJMUmVxdWVzdFJl
ZilyZXF1ZXN0OwotQGVuZAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBVU0UoQ0ZORVRX
T1JLKQotCi1SZXNvdXJjZVJlcXVlc3Q6OlJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVlc3QgKm5z
UmVxdWVzdCkKLSAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoKQotICAgICwgbV9jZlJlcXVlc3Qo
W25zUmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSkKLSAgICAsIG1fbnNSZXF1ZXN0KG5zUmVxdWVzdCkK
LXsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZU5TVVJMUmVxdWVzdCgpCi17Ci0g
ICAgaWYgKG1fY2ZSZXF1ZXN0KQotICAgICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMoW1tOU011
dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6bV9jZlJlcXVlc3Qu
Z2V0KCldKTsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmNsZWFyT3JVcGRhdGVOU1VSTFJl
cXVlc3QoKQotewotICAgIC8vIFRoZXJlIGlzIGNsaWVudCBjb2RlIHRoYXQgZXh0ZW5kcyBOU1VS
TFJlcXVlc3QgYW5kIGV4cGVjdHMgdG8gZ2V0IGJhY2ssIGluIHRoZSBkZWxlZ2F0ZQotICAgIC8v
IGNhbGxiYWNrcywgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgdGhhdCB0aGV5IHBhc3NlZCBp
bnRvIFdlYktpdC4gVG8ga2VlcCB0aGVuIHJ1bm5pbmcsIHdlCi0gICAgLy8gY3JlYXRlIGFuIG9i
amVjdCBvZiB0aGUgc2FtZSB0eXBlIGFuZCByZXR1cm4gdGhhdC4gU2VlIDxyZGFyOi8vOTg0MzU4
Mj4uCi0gICAgLy8gQWxzbywgZGV2ZWxvcGVycyByZWFsbHkgcmVhbGx5IHdhbnQgYW4gTlNNdXRh
YmxlVVJMUmVxdWVzdCBzbyB0cnkgdG8gY3JlYXRlIGFuCi0gICAgLy8gTlNNdXRhYmxlVVJMUmVx
dWVzdCBpbnN0ZWFkIG9mIE5TVVJMUmVxdWVzdC4KLSAgICBzdGF0aWMgQ2xhc3MgbnNVUkxSZXF1
ZXN0Q2xhc3MgPSBbTlNVUkxSZXF1ZXN0IGNsYXNzXTsKLSAgICBzdGF0aWMgQ2xhc3MgbnNNdXRh
YmxlVVJMUmVxdWVzdENsYXNzID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgY2xhc3NdOwotICAgIENs
YXNzIHJlcXVlc3RDbGFzcyA9IFttX25zUmVxdWVzdC5nZXQoKSBjbGFzc107Ci0KLSAgICBpZiAo
IW1fY2ZSZXF1ZXN0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAocmVxdWVzdENsYXNzICYm
IHJlcXVlc3RDbGFzcyAhPSBuc1VSTFJlcXVlc3RDbGFzcyAmJiByZXF1ZXN0Q2xhc3MgIT0gbnNN
dXRhYmxlVVJMUmVxdWVzdENsYXNzKQotICAgICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMoW1ty
ZXF1ZXN0Q2xhc3MgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDptX2NmUmVxdWVzdC5nZXQo
KV0pOwotICAgIGVsc2UKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBudWxscHRyOwotfQotCi0jZW5k
aWYgLy8gVVNFKENGTkVUV09SSykKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQppbmRleCBlMzhiMDM4N2RlMDQ2YzdjMDE1
NzQzZDdiYjdlYTM2ZTQwOTM4MDIyLi5hODJhNTVjMzM4ODM3ZDcwZTJlMWE1YjAzMmM3MmJjOTMz
Njk4ZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9B
dXRoZW50aWNhdGlvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQpAQCAtMzIsMTggKzMyLDEyIEBACiAjaW1wb3J0IDxG
b3VuZGF0aW9uL05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPEZvdW5k
YXRpb24vTlNVUkxQcm90ZWN0aW9uU3BhY2UuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1w
b3J0ICJDRk5TVVJMQ29ubmVjdGlvblNQSS5oIgotI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxl
bmdlU2VuZGVyIDogTlNPYmplY3QgPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI+
CiB7CiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIG1fY2xpZW50OwotI2lmIFVTRShDRk5FVFdP
UkspCi0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIG1fY2ZDaGFsbGVuZ2U7Ci0jZW5kaWYKIH0K
IC0gKGlkKWluaXRXaXRoQXV0aGVudGljYXRpb25DbGllbnQ6KEF1dGhlbnRpY2F0aW9uQ2xpZW50
KiljbGllbnQ7CiAtIChBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50OwpAQCAtODksNDcgKzgz
LDEwIEBAIC0gKHZvaWQpY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKICAgICAgICAgbV9jbGllbnQtPnJlY2VpdmVk
Q2FuY2VsbGF0aW9uKGNvcmUoY2hhbGxlbmdlKSk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
LSAodm9pZClzZXRDRkNoYWxsZW5nZTooQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKWNoYWxsZW5nZQot
ewotICAgIG1fY2ZDaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7Ci19Ci0KLS0gKENGVVJMQXV0aENoYWxs
ZW5nZVJlZiljZkNoYWxsZW5nZQotewotICAgIHJldHVybiBtX2NmQ2hhbGxlbmdlOwotfQotI2Vu
ZGlmCi0KIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykK
LQotQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY29yZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlICptYWNDaGFsbGVuZ2UpCi17Ci0gICAgV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXND
aGFsbGVuZ2VTZW5kZXIgKmNoYWxsZW5nZVNlbmRlciA9IChXZWJDb3JlQXV0aGVudGljYXRpb25D
bGllbnRBc0NoYWxsZW5nZVNlbmRlciopIFttYWNDaGFsbGVuZ2Ugc2VuZGVyXTsKLSAgICByZXR1
cm4gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoW2NoYWxsZW5nZVNlbmRlciBjZkNoYWxsZW5nZV0s
IFtjaGFsbGVuZ2VTZW5kZXIgY2xpZW50XSk7Ci19Ci0KLU5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgKm1hYyhjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNoYWxsZW5nZSkK
LXsKLSAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0aENsaWVudCA9IGNvcmVDaGFsbGVuZ2Uu
YXV0aGVudGljYXRpb25DbGllbnQoKTsKLSAgICBSZXRhaW5QdHI8V2ViQ29yZUF1dGhlbnRpY2F0
aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXI+IGNoYWxsZW5nZVNlbmRlciA9IGFkb3B0TlMoW1tX
ZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciBhbGxvY10gaW5pdFdp
dGhBdXRoZW50aWNhdGlvbkNsaWVudDphdXRoQ2xpZW50XSk7Ci0gICAgUmV0YWluUHRyPENGVVJM
QXV0aENoYWxsZW5nZVJlZj4gYXV0aENoYWxsZW5nZSA9IGNvcmVDaGFsbGVuZ2UuY2ZVUkxBdXRo
Q2hhbGxlbmdlUmVmKCk7Ci0gICAgaWYgKCFhdXRoQ2hhbGxlbmdlKQotICAgICAgICBhdXRoQ2hh
bGxlbmdlID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlKSk7Ci0gICAgW2NoYWxsZW5n
ZVNlbmRlci5nZXQoKSBzZXRDRkNoYWxsZW5nZTphdXRoQ2hhbGxlbmdlLmdldCgpXTsKLSNpZiBQ
TEFURk9STShJT1MpCi0gICAgcmV0dXJuIFtbTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBf
Y3JlYXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VGb3JDRkF1dGhDaGFsbGVuZ2U6YXV0aENoYWxs
ZW5nZS5nZXQoKSBzZW5kZXI6Y2hhbGxlbmdlU2VuZGVyLmdldCgpXSBhdXRvcmVsZWFzZV07Ci0j
ZWxzZQotICAgIHJldHVybiBbW05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgX2F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRm9yQ0ZBdXRoQ2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2UuZ2V0KCkgc2Vu
ZGVyOmNoYWxsZW5nZVNlbmRlci5nZXQoKV0gYXV0b3JlbGVhc2VdOwotI2VuZGlmCi19Ci0KLSNl
bHNlCi0KIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShj
b25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3Nl
ZENyZWRlbnRpYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsCkBAIC0yMDMsNiArMTYwLDQgQEAg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY29yZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICptYWNDaGFsbGVuZ2UpCiAgICAgcmV0dXJuIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1hY0No
YWxsZW5nZSk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9Db29raWVKYXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9D
b29raWVKYXJNYWMubW0KaW5kZXggMTZkMTBlMjA3MDA0MWE4N2U0NjNjZWYyNDc0YzNjNDg5ZGQz
ZmFlYS4uODJkNGY1ZmUyNTJhOGVjYmVlNzZiMjdhNDIyZjUxNzM3NDI4MGFiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQpA
QCAtMzEsOCArMzEsNiBAQAogI2ltcG9ydCAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW1w
b3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQog
I2ltcG9ydCAiQ29va2llLmgiCiAjaW1wb3J0ICJDb29raWVTdG9yYWdlLmgiCiAjaW1wb3J0ICJV
UkwuaCIKQEAgLTIwMCwxMiArMTk4LDYgQEAgdm9pZCBkZWxldGVBbGxDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKICAgICB3a0RlbGV0ZUFsbEhUVFBDb29raWVz
KHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKTsKIH0KIAotfQotCi0jZW5kaWYgLy8gIVVT
RShDRk5FVFdPUkspCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQogc3RhdGljIE5TSFRUUENvb2tp
ZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uKQogewogICAgIGF1dG8gY29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2llU3RvcmFnZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVu
dGlhbFN0b3JhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9D
cmVkZW50aWFsU3RvcmFnZU1hYy5tbQppbmRleCA5ZWJjODU0ZGNkYjQ4ZDU3ZThmODI4Njk0NDI0
ZWNkNDliNzMzNmVjLi5mMGE0ZjNhZjc2NDE1Y2IyNmMyOTRiZDgxMzkxM2ZlMjIzM2IzNzQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFs
U3RvcmFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9D
cmVkZW50aWFsU3RvcmFnZU1hYy5tbQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09S
SykKLQogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlh
bC5oIgogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgpAQCAtNTIsNSArNTAsMyBAQCB2b2lk
IENyZWRlbnRpYWxTdG9yYWdlOjpzYXZlVG9QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90ZWN0
aW9uU3BhY2UmIHByb3RlY3RpbwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgKaW5kZXggZGI4MWM2Njg3YzQy
MmU1ZWNiYzM2OTBlMjM0NWFmODIyNGFkMDZjNi4uZTJjOGI4OTZhOGEyNDg5N2IxMmYwMmU0N2Vi
MDU1MTFkOWJkNDBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCkBAIC0yOSw4ICsyOSw2IEBACiAjaWZuZGVm
IEZvcm1EYXRhU3RyZWFtTWFjX2gKICNkZWZpbmUgRm9ybURhdGFTdHJlYW1NYWNfaAogCi0jaWYg
IVVTRShDRk5FVFdPUkspCi0KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBDRlVSTFJlcXVlc3RSZWY7CkBAIC00OSw2ICs0Nyw1
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5k
aWYgLy8gIVVTRShDRk5FVFdPUkspCiAKICNlbmRpZiAvLyBGb3JtRGF0YVN0cmVhbU1hY19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0
cmVhbU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRh
U3RyZWFtTWFjLm1tCmluZGV4IGI1NzM0Zjk4ZWRmYmYxMTM1ZTE3ZDRiN2ViYzI5Y2M1NWZlMDQz
NTEuLjdiN2QxZDNhMTVlMzk1NzQzYzk0NDkxODM0YzMyOThlMjNjZmExOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFt
TWFjLm1tCkBAIC0yOSw4ICsyOSw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkZv
cm1EYXRhU3RyZWFtTWFjLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiRm9y
bURhdGEuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKICNpbXBvcnQgPHd0Zi9Q
YXNzUmVmUHRyLmg+CkBAIC01Miw1ICs1MCwzIEBAIEZvcm1EYXRhKiBodHRwQm9keUZyb21TdHJl
YW0oTlNJbnB1dFN0cmVhbSAqc3RyZWFtKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCmluZGV4IGY3Yzg2NGNlM2I1
MDk5ZmUwMmYxNjk2OWFjZTM5N2Y2ODJlODNkYmEuLmZiNzc2NmY1NzZiMmZiYzE2MzgyNWZmYTky
MjhjMzI1Zjg4MDlmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQpAQCAtMzEsMTAgKzMxLDYgQEAKICNpbXBv
cnQgPENvcmVGb3VuZGF0aW9uL0NGRXJyb3IuaD4KICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5oPgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8
Q0ZOZXR3b3JrL0NGU29ja2V0U3RyZWFtUHJpdi5oPgotI2VuZGlmCi0KIEBpbnRlcmZhY2UgTlNF
cnJvciAoV2ViRXh0cmFzKQogLSAoTlNTdHJpbmcgKilfd2ViX2xvY2FsaXplZERlc2NyaXB0aW9u
OwogQGVuZApAQCAtOTEsODUgKzg3LDYgQEAgLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29k
ZXIgKiljb2RlcgogCiBAZW5kCiAKLQotI2lmIFVTRShDRk5FVFdPUkspCi1zdGF0aWMgTlNFcnJv
ciAqTlNFcnJvckZyb21DRkVycm9yKENGRXJyb3JSZWYgY2ZFcnJvciwgTlNVUkwgKnVybCkKLXsK
LSAgICBDRkluZGV4IGVyckNvZGUgPSBDRkVycm9yR2V0Q29kZShjZkVycm9yKTsKLSAgICBpZiAo
Q0ZFcXVhbChDRkVycm9yR2V0RG9tYWluKGNmRXJyb3IpLCBrQ0ZFcnJvckRvbWFpbkNGTmV0d29y
aykgJiYgZXJyQ29kZSA8PSBrQ0ZVUkxFcnJvclVua25vd24gJiYgZXJyQ29kZSA+IC00MDAwKSB7
Ci0gICAgICAgIC8vIFRoaXMgaXMgYW4gVVJMIGVycm9yIGFuZCBuZWVkcyB0byBiZSB0cmFuc2xh
dGVkIHRvIHRoZSBOU1VSTEVycm9yRG9tYWluCi0gICAgICAgIGlkIGtleXNbMTBdLCB2YWx1ZXNb
MTBdOwotICAgICAgICBDRkRpY3Rpb25hcnlSZWYgdXNlckluZm8gPSBDRkVycm9yQ29weVVzZXJJ
bmZvKGNmRXJyb3IpOwotICAgICAgICBOU0Vycm9yICpyZXN1bHQ7Ci0gICAgICAgIE5TSW50ZWdl
ciBjb3VudCA9IDA7Ci0KLSAgICAgICAgaWYgKHVybCkgewotICAgICAgICAgICAga2V5c1tjb3Vu
dF0gPSBOU1VSTEVycm9yRmFpbGluZ1VSTEVycm9yS2V5OwotICAgICAgICAgICAgdmFsdWVzW2Nv
dW50XSA9IHVybDsKLSAgICAgICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgICAgICBrZXlzW2Nv
dW50XSA9IE5TVVJMRXJyb3JGYWlsaW5nVVJMU3RyaW5nRXJyb3JLZXk7Ci0gICAgICAgICAgICB2
YWx1ZXNbY291bnRdID0gW3VybCBhYnNvbHV0ZVN0cmluZ107Ci0gICAgICAgICAgICBjb3VudCAr
KzsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUodXNlckluZm8sIGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRpb25LZXkpOwotICAg
ICAgICBpZiAodmFsdWVzW2NvdW50XSkgewotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xv
Y2FsaXplZERlc2NyaXB0aW9uS2V5OwotICAgICAgICAgICAgY291bnQgKys7Ci0gICAgICAgIH0K
LQotICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJ
bmZvLCBrQ0ZFcnJvckxvY2FsaXplZEZhaWx1cmVSZWFzb25LZXkpOwotICAgICAgICBpZiAodmFs
dWVzW2NvdW50XSkgewotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xvY2FsaXplZEZhaWx1
cmVSZWFzb25FcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywg
a0NGRXJyb3JMb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25LZXkpOwotICAgICAgICBpZiAodmFs
dWVzW2NvdW50XSkgewotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xvY2FsaXplZFJlY292
ZXJ5U3VnZ2VzdGlvbkVycm9yS2V5OwotICAgICAgICAgICAgY291bnQgKys7Ci0gICAgICAgIH0K
LQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgICAgICBpZiAodXNlcklu
Zm8gJiYgKHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8s
IGtDRlN0cmVhbVByb3BlcnR5U1NMUGVlckNlcnRpZmljYXRlcykpICE9IG5pbCkgewotICAgICAg
ICAgICAgLy8gTmVlZCB0byB0cmFuc2xhdGUgdGhlIGNlcnQKLSAgICAgICAgICAgIGtleXNbY291
bnRdID0gQCJOU0Vycm9yUGVlckNlcnRpZmljYXRlQ2hhaW5LZXkiOwotICAgICAgICAgICAgY291
bnQgKys7Ci0KLSAgICAgICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUodXNlckluZm8sIF9rQ0ZTdHJlYW1Qcm9wZXJ0eVNTTENsaWVudENlcnRpZmljYXRlcyk7
Ci0gICAgICAgICAgICBpZiAodmFsdWVzW2NvdW50XSkgewotICAgICAgICAgICAgICAgIGtleXNb
Y291bnRdID0gQCJOU0Vycm9yQ2xpZW50Q2VydGlmaWNhdGVDaGFpbktleSI7Ci0gICAgICAgICAg
ICAgICAgY291bnQgKys7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhbHVlc1tjb3Vu
dF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIF9rQ0ZTdHJlYW1Qcm9wZXJ0
eVNTTENsaWVudENlcnRpZmljYXRlU3RhdGUpOwotICAgICAgICAgICAgaWYgKHZhbHVlc1tjb3Vu
dF0pIHsKLSAgICAgICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvckNsaWVudENlcnRp
ZmljYXRlU3RhdGVLZXkiOwotICAgICAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0KLSAgICAgICAgaWYg
KHVzZXJJbmZvICYmICh2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVz
ZXJJbmZvLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNTTFBlZXJUcnVzdCkpICE9IG5pbCkgewotICAgICAg
ICAgICAga2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFpbGluZ1VSTFBlZXJUcnVzdEVycm9yS2V5
OwotICAgICAgICAgICAgY291bnQrKzsKLSAgICAgICAgfQotCi0gICAgICAgIGtleXNbY291bnRd
ID0gTlNVbmRlcmx5aW5nRXJyb3JLZXk7Ci0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpY2ZF
cnJvcjsKLSAgICAgICAgY291bnQgKys7Ci0KLSAgICAgICAgcmVzdWx0ID0gW1dlYkN1c3RvbU5T
VVJMRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTooZXJyQ29kZSA9
PSBrQ0ZVUkxFcnJvclVua25vd24gPyAoQ0ZJbmRleClOU1VSTEVycm9yVW5rbm93biA6IGVyckNv
ZGUpIHVzZXJJbmZvOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzOnZhbHVlcyBm
b3JLZXlzOmtleXMgY291bnQ6Y291bnRdXTsKLSAgICAgICAgaWYgKHVzZXJJbmZvKQotICAgICAg
ICAgICAgQ0ZSZWxlYXNlKHVzZXJJbmZvKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9
Ci0gICAgcmV0dXJuIChOU0Vycm9yICopY2ZFcnJvcjsKLX0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRX
T1JLKQotCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0xOTMsNTMgKzExMCw2IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gY3JlYXRlTlNFcnJv
ckZyb21SZXNvdXJjZUVycm9yQmFzZShjb25zdCBSZXNvdXJjZUVycm9yCiAgICAgcmV0dXJuIGFk
b3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpyZXNvdXJjZUVycm9yLmRvbWFp
bigpIGNvZGU6cmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSB1c2VySW5mbzp1c2VySW5mby5nZXQo
KV0pOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VF
cnJvcihOU0Vycm9yICplcnJvcikKLSAgICA6IG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCi0gICAg
LCBtX3BsYXRmb3JtRXJyb3IocmVpbnRlcnByZXRfY2FzdDxDRkVycm9yUmVmPihlcnJvcikpCi17
Ci0gICAgbV9pc051bGwgPSAhZXJyb3I7Ci0gICAgaWYgKCFtX2lzTnVsbCkKLSAgICAgICAgbV9p
c1RpbWVvdXQgPSBbZXJyb3IgY29kZV0gPT0gTlNVUkxFcnJvclRpbWVkT3V0OwotfQotCi1OU0Vy
cm9yICpSZXNvdXJjZUVycm9yOjpuc0Vycm9yKCkgY29uc3QKLXsKLSAgICBpZiAobV9pc051bGwp
IHsKLSAgICAgICAgQVNTRVJUKCFtX3BsYXRmb3JtRXJyb3IpOwotICAgICAgICByZXR1cm4gbmls
OwotICAgIH0KLQotICAgIGlmIChtX3BsYXRmb3JtTlNFcnJvcikKLSAgICAgICAgcmV0dXJuIG1f
cGxhdGZvcm1OU0Vycm9yLmdldCgpOwotCi0gICAgaWYgKG1fcGxhdGZvcm1FcnJvcikgewotICAg
ICAgICBDRkVycm9yUmVmIGVycm9yID0gbV9wbGF0Zm9ybUVycm9yLmdldCgpOwotICAgICAgICBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiB1c2VySW5mbyA9IGFkb3B0Q0YoQ0ZFcnJvckNvcHlV
c2VySW5mbyhlcnJvcikpOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgbV9wbGF0Zm9ybU5T
RXJyb3IgPSBOU0Vycm9yRnJvbUNGRXJyb3IoZXJyb3IsIChOU1VSTCAqKVsoTlNEaWN0aW9uYXJ5
ICopdXNlckluZm8uZ2V0KCkgb2JqZWN0Rm9yS2V5OihpZCkga0NGVVJMRXJyb3JGYWlsaW5nVVJM
RXJyb3JLZXldKTsKLSAgICAgICAgLy8gSWYgTlNFcnJvckZyb21DRkVycm9yIGNyZWF0ZWQgYSBu
ZXcgTlNFcnJvciBmb3IgdXMsIHJldHVybiB0aGF0LgotICAgICAgICBpZiAobV9wbGF0Zm9ybU5T
RXJyb3IuZ2V0KCkgIT0gKE5TRXJyb3IgKillcnJvcikKLSAgICAgICAgICAgIHJldHVybiBtX3Bs
YXRmb3JtTlNFcnJvci5nZXQoKTsKLQotICAgICAgICAvLyBPdGhlcndpc2UgZmFsbCB0aHJvdWdo
IHRvIGNyZWF0ZSBhIG5ldyBOU0Vycm9yIGZyb20gdGhlIENGRXJyb3IuCi0jZW5kaWYKLSAgICAg
ICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhE
b21haW46KE5TU3RyaW5nICopQ0ZFcnJvckdldERvbWFpbihlcnJvcikgY29kZTpDRkVycm9yR2V0
Q29kZShlcnJvcikgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvLmdldCgpXSk7Ci0g
ICAgICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLSAgICB9Ci0KLSAgICBtX3Bs
YXRmb3JtTlNFcnJvciA9IGNyZWF0ZU5TRXJyb3JGcm9tUmVzb3VyY2VFcnJvckJhc2UoKnRoaXMp
OwotICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLX0KLQotUmVzb3VyY2VFcnJv
cjo6b3BlcmF0b3IgTlNFcnJvciAqKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbnNFcnJvcigpOwot
fQotCi0jZWxzZQotCiBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKE5TRXJyb3IgKm5zRXJy
b3IpCiAgICAgOiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQogICAgICwgbV9wbGF0Zm9ybUVycm9y
KG5zRXJyb3IpCkBAIC0zMTIsNiArMTgyLDQgQEAgUmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgQ0ZF
cnJvclJlZigpIGNvbnN0CiAgICAgcmV0dXJuIGNmRXJyb3IoKTsKIH0KIAotI2VuZGlmIC8vIFVT
RShDRk5FVFdPUkspCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KaW5k
ZXggY2RiZTAyNThkNDAxMjFmMzE0MGI0ZjQ3OTQwY2ZiOTNmZTc3MTk2NC4uNjJlNzdiYjYxMjg4
NzMyZGEyOWFlZGQ3MjYyYjQwNGExMzA5MjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KQEAgLTU3LDE2
ICs1Nyw2IEBACiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaWYgX19oYXNfaW5jbHVkZSg8Q0ZO
ZXR3b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4pCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxD
b25uZWN0aW9uUHJpdi5oPgotI2VuZGlmCi10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxDb25uZWN0aW9u
KiBDRlVSTENvbm5lY3Rpb25SZWY7Ci1leHRlcm4gIkMiIHsKLUNGRGljdGlvbmFyeVJlZiBfQ0ZV
UkxDb25uZWN0aW9uQ29weVRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmKTsKLX0KLSNlbmRp
ZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiQ0ZOZXR3
b3JrU1BJLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKQEAgLTg4
LDkgKzc4LDcgQEAgLShpZClfaW5pdFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0
IGRlbGVnYXRlOihpZClkZWxlZ2F0ZSB1c2VzQ2FjaGU6KEIKIEBlbmQKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewotICAgIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotICAgIAorCiBzdGF0aWMgdm9pZCBh
cHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcihSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiB7CiAgICAgU3RyaW5nIGF1dGhlbnRpY2F0aW9u
SGVhZGVyID0gIkJhc2ljICIgKyBiYXNlNjRFbmNvZGUoU3RyaW5nKGNyZWRlbnRpYWwudXNlcigp
ICsgIjoiICsgY3JlZGVudGlhbC5wYXNzd29yZCgpKS51dGY4KCkpOwpAQCAtMjY5LDEyICsyNTcs
NiBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAgICAgICAgIFtjb25uZWN0aW9uKCkg
c2V0RGVsZWdhdGVRdWV1ZTpvcGVyYXRpb25RdWV1ZUZvckFzeW5jQ2xpZW50cygpXTsKICAgICAg
ICAgc2NoZWR1bGVkID0gdHJ1ZTsKICAgICB9Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIGVsc2Ug
ewotICAgICAgICBbY29ubmVjdGlvbigpIHNjaGVkdWxlSW5SdW5Mb29wOldlYlRocmVhZE5TUnVu
TG9vcCgpIGZvck1vZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGVdOwotICAgICAgICBzY2hlZHVsZWQg
PSB0cnVlOwotICAgIH0KLSNlbmRpZgogCiAgICAgLy8gU3RhcnQgdGhlIGNvbm5lY3Rpb24gaWYg
d2UgZGlkIHNjaGVkdWxlIHdpdGggYXQgbGVhc3Qgb25lIHJ1bmxvb3AuCiAgICAgLy8gV2UgY2Fu
J3Qgc3RhcnQgdGhlIGNvbm5lY3Rpb24gdW50aWwgd2UgaGF2ZSBvbmUgcnVubG9vcCBzY2hlZHVs
ZWQuCkBAIC0zMTQsOCArMjk2LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXRE
ZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzKQogICAgICAgICBbZC0+bV9jb25uZWN0aW9uIHNldERl
ZmVyc0NhbGxiYWNrczpkZWZlcnNdOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQotCiB2b2lkIFJl
c291cmNlSGFuZGxlOjpzY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7CiAgICAgTlNSdW5M
b29wICpydW5Mb29wID0gcGFpci5uc1J1bkxvb3AoKTsKQEAgLTMzNCw4ICszMTQsNiBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKICAgICAgICAg
W2QtPm1fY29ubmVjdGlvbi5nZXQoKSB1bnNjaGVkdWxlRnJvbVJ1bkxvb3A6cnVuTG9vcCBmb3JN
b2RlOihOU1N0cmluZyAqKXBhaXIubW9kZSgpXTsKIH0KIAotI2VuZGlmCi0KIGlkIFJlc291cmNl
SGFuZGxlOjptYWtlRGVsZWdhdGUoYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSkKIHsK
ICAgICBBU1NFUlQoIWQtPm1fZGVsZWdhdGUpOwpAQCAtNzI0LDI3ICs3MDIsMTQgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShOU0NhY2hlZFVSTFJlc3Bv
bnNlICpyZXNwb25zZSkKIAogICAgIFsoaWQpZGVsZWdhdGUoKSBjb250aW51ZVdpbGxDYWNoZVJl
c3BvbnNlOnJlc3BvbnNlXTsKIH0KLSAgICAKLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLSAg
ICAKKwogI2lmIEVOQUJMRShXRUJfVElNSU5HKQogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICAK
LXZvaWQgUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKENGVVJMQ29ubmVj
dGlvblJlZiBjb25uZWN0aW9uLCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZykKLXsKLSAgICBj
b3B5VGltaW5nRGF0YSgoX19icmlkZ2UgTlNEaWN0aW9uYXJ5KilhZG9wdENGKF9DRlVSTENvbm5l
Y3Rpb25Db3B5VGltaW5nRGF0YShjb25uZWN0aW9uKSkuZ2V0KCksIHRpbWluZyk7Ci19Ci0gICAg
Ci0jZWxzZQotICAgIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0Rh
dGEoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uLCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWlu
ZykKIHsKICAgICBjb3B5VGltaW5nRGF0YShbY29ubmVjdGlvbiBfdGltaW5nRGF0YV0sIHRpbWlu
Zyk7CiB9Ci0gICAgCi0jZW5kaWYKLSAgICAKKwogI2VuZGlmIC8vIEVOQUJMRShXRUJfVElNSU5H
KQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KaW5kZXggNjk0ZTUz
YzRhNTczMjIyMGQ0NDYxZGMxMGY2MGRkOTg0YWE4Nzk2ZC4uZTc3MDI0NWRmZDUwMWIxNGIwZTYx
YzEwNzdjNzFiMzA4NDEyZjFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQpAQCAtMzcsMjkgKzM3LDYg
QEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1S
ZXNvdXJjZVJlcXVlc3Q6OlJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVlc3QgKm5zUmVxdWVzdCkK
LSAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoKQotICAgICwgbV9jZlJlcXVlc3QoW25zUmVxdWVz
dCBfQ0ZVUkxSZXF1ZXN0XSkKLSAgICAsIG1fbnNSZXF1ZXN0KG5zUmVxdWVzdCkKLXsKLX0KLQot
dm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZU5TVVJMUmVxdWVzdCgpCi17Ci0gICAgaWYgKG1f
Y2ZSZXF1ZXN0KQotICAgICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VSTFJlcXVlc3Qg
YWxsb2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDptX2NmUmVxdWVzdC5nZXQoKV0pOwotfQotCi12
b2lkIFJlc291cmNlUmVxdWVzdDo6YXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwoKQotewotICAg
IC8vIEhhY2sgYmVjYXVzZSBNYWlsIGNoZWNrcyBmb3IgdGhpcyBwcm9wZXJ0eSB0byBkZXRlY3Qg
ZGF0YSAvIGFyY2hpdmUgbG9hZHMKLSAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0
eShjZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSksIENGU1RSKCJXZWJEYXRhUmVxdWVz
dCIpLCBDRlNUUigiIikpOwotfQotCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlUmVzcG9uc2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCmluZGV4IDZmYTAwZTI0MzVlODNlNzlmOTdkNDMw
ODYyZGIwYjQxZDM2NjUzN2IuLmNkZjc4OWQ2OWE3ZjdmNWZkMGZlYTk2MzU1N2Q2ZDdkYzE3OWJk
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlUmVzcG9uc2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQpAQCAtNzEsMzYgKzcxLDYgQEAgdm9pZCBSZXNvdXJj
ZVJlc3BvbnNlOjppbml0TlNVUkxSZXNwb25zZSgpIGNvbnN0CiAgICAgW21fbnNSZXNwb25zZS5n
ZXQoKSBfc2V0TUlNRVR5cGU6KE5TU3RyaW5nICopbV9taW1lVHlwZV07CiB9CiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQotCi1OU1VSTFJlc3BvbnNlICpSZXNvdXJjZVJlc3BvbnNlOjpuc1VSTFJlc3Bv
bnNlKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fbnNSZXNwb25zZSAmJiAhbV9jZlJlc3BvbnNlICYm
ICFtX2lzTnVsbCkgewotICAgICAgICBpbml0TlNVUkxSZXNwb25zZSgpOwotICAgICAgICBtX2Nm
UmVzcG9uc2UgPSBbbV9uc1Jlc3BvbnNlLmdldCgpIF9DRlVSTFJlc3BvbnNlXTsKLSAgICAgICAg
cmV0dXJuIG1fbnNSZXNwb25zZS5nZXQoKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fY2ZSZXNwb25z
ZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGlmICghbV9uc1Jlc3BvbnNlKQotICAgICAg
ICBtX25zUmVzcG9uc2UgPSBbTlNVUkxSZXNwb25zZSBfcmVzcG9uc2VXaXRoQ0ZVUkxSZXNwb25z
ZTptX2NmUmVzcG9uc2UuZ2V0KCldOwotCi0gICAgcmV0dXJuIG1fbnNSZXNwb25zZS5nZXQoKTsK
LX0KLQotUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlKiBu
c1Jlc3BvbnNlKQotICAgIDogbV9pbml0TGV2ZWwoVW5pbml0aWFsaXplZCkKLSAgICAsIG1fcGxh
dGZvcm1SZXNwb25zZUlzVXBUb0RhdGUodHJ1ZSkKLSAgICAsIG1fY2ZSZXNwb25zZShbbnNSZXNw
b25zZSBfQ0ZVUkxSZXNwb25zZV0pCi0gICAgLCBtX25zUmVzcG9uc2UobnNSZXNwb25zZSkKLXsK
LSAgICBtX2lzTnVsbCA9ICFuc1Jlc3BvbnNlOwotfQotCi0jZWxzZQotCiBzdGF0aWMgTlNTdHJp
bmcqIGNvbnN0IGNvbW1vbkhlYWRlckZpZWxkc1tdID0gewogICAgIEAiQWdlIiwgQCJDYWNoZS1D
b250cm9sIiwgQCJDb250ZW50LVR5cGUiLCBAIkRhdGUiLCBAIkV0YWciLCBAIkV4cGlyZXMiLCBA
Ikxhc3QtTW9kaWZpZWQiLCBAIlByYWdtYSIKIH07CkBAIC0xODksNyArMTU5LDUgQEAgYm9vbCBS
ZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
YSwgY29uc3QgUmVzb3VyY2UKICAgICByZXR1cm4gYS5uc1VSTFJlc3BvbnNlKCkgPT0gYi5uc1VS
TFJlc3BvbnNlKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvU3luY2hyb25vdXNMb2FkZXJDbGllbnQubW0KaW5kZXggMDE0NGJkOTNh
NzBhNDQ5ODhlMDU2YzhlYjg5ODk3NDlmMTVjMmI1OC4uNjVmNzZkZjEzYjljOGY5NjY3OGZmODhl
ZGY3YzM2MzcxZTkzMGUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvU3luY2hyb25vdXNMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvU3luY2hyb25vdXNMb2FkZXJDbGllbnQubW0KQEAgLTI2LDgg
KzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTeW5jaHJvbm91c0xvYWRl
ckNsaWVudC5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbmNsdWRlICJBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwxNCArMzYsMTAg
QEAgdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFJlc291cmNlSGFuZGxlKiwKICAgICBbY2hhbGxlbmdlLnNlbmRlcigpIGNvbnRp
bnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2Uu
bnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKIH0KIAotI2lmICFVU0UoQ0ZORVRXT1JL
KQogUmVzb3VyY2VFcnJvciBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6cGxhdGZvcm1CYWRSZXNw
b25zZUVycm9yKCkKIHsKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gZXJyb3IgPSBhZG9wdE5TKFtb
TlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJM
RXJyb3JCYWRTZXJ2ZXJSZXNwb25zZSB1c2VySW5mbzpuaWxdKTsKICAgICByZXR1cm4gZXJyb3Iu
Z2V0KCk7CiB9Ci0jZW5kaWYKIAogfQotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgKaW5kZXggNGY0MTU1ZWFmZDk0NWIx
Yjg2MmQyOWNlODk2ZGNhZGNkYTFjNDI2Ni4uMmYxMTZhZDZhMzEwMjUwYTY3N2NjZWExNGY3N2Qy
ODEwZTZhOGU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaApA
QCAtMjYsMTggKzI2LDE4IEBACiAjaWZuZGVmIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdh
dGVfaAogI2RlZmluZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKIAotI2lmICFV
U0UoQ0ZORVRXT1JLKQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUhhbmRs
ZTsKIH0KIAotQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIDogTlNP
YmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiB7CitAcHJvdG9jb2wgV2ViQ29yZVJlc291
cmNlTG9hZGVyRGVsZWdhdGUKKy0gKHZvaWQpZGV0YWNoSGFuZGxlOworQGVuZAorCitAaW50ZXJm
YWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25u
ZWN0aW9uRGVsZWdhdGUsIFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRlPiB7CiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqIG1faGFuZGxlOwogfQogLSAoaWQpaW5pdFdpdGhIYW5kbGU6
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiloYW5kbGU7Ci0tICh2b2lkKWRldGFjaEhhbmRsZTsK
IEBlbmQKIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogI2VuZGlmIC8vIFdlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzRGVsZWdhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVs
ZWdhdGUubW0KaW5kZXggZTE3Y2I5ZDIwZWQ3ZGJkNTE3OTNjMzY0ZWIzMmMxNTg5NWViYTUzYS4u
NTI0YWZlM2ZhOTc2MWZhZTcwY2RkOWU2YzRlZjAxZWFkY2M5NGJkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNE
ZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaCIK
IAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25NYWMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIK
QEAgLTU0LDcgKzUyLDcgQEAgLSAoaWQpaW5pdFdpdGhIYW5kbGU6KFJlc291cmNlSGFuZGxlKilo
YW5kbGUKIAogLSAodm9pZClkZXRhY2hIYW5kbGUKIHsKLSAgICBtX2hhbmRsZSA9IDA7CisgICAg
bV9oYW5kbGUgPSBudWxscHRyOwogfQogCiAtIChOU1VSTFJlcXVlc3QgKiljb25uZWN0aW9uOihO
U1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIHdpbGxTZW5kUmVxdWVzdDooTlNVUkxSZXF1ZXN0
ICopbmV3UmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJlY3RS
ZXNwb25zZQpAQCAtMjg4LDYgKzI4NiwzIEBAIC0gKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKiljb25u
ZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIHdpbGxDYWNoZVJlc3BvCiB9CiAK
IEBlbmQKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCmluZGV4IGU3
NDBhYTU5YmVkNjNiYWI5MDc2ZjA3OTNhYjNkMDNkZTAwMmIwNTEuLmM1N2FjYWUxNDE4YzExNmZj
Zjc3NzBmNThhZDRjOTFjODFlNDhjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCkBAIC0yNiw4ICsyNiw3IEBA
CiAjaWZuZGVmIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9o
CiAjZGVmaW5lIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9o
CiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQorI2luY2x1ZGUgIldlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzRGVsZWdhdGUuaCIKICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtMzUsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIH0KIAotQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25uZWN0aW9u
RGVsZWdhdGU+IHsKK0BpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlLCBXZWJDb3Jl
UmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZT4gewogICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiBt
X2hhbmRsZTsKIAogICAgIC8vIFN5bmNocm9ub3VzIGRlbGVnYXRlcyBvbiBvcGVyYXRpb24gcXVl
dWUgd2FpdCB1bnRpbCBtYWluIHRocmVhZCBzZW5kcyBhbiBhc3luY2hyb25vdXMgcmVzcG9uc2Uu
CkBAIC00Niw3ICs0NSw2IEBAIGNsYXNzIFJlc291cmNlSGFuZGxlOwogfQogCiAtIChpZClpbml0
V2l0aEhhbmRsZTooV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKWhhbmRsZTsKLS0gKHZvaWQpZGV0
YWNoSGFuZGxlOwogLSAodm9pZCljb250aW51ZVdpbGxTZW5kUmVxdWVzdDooTlNVUkxSZXF1ZXN0
ICopbmV3UmVxdWVzdDsKIC0gKHZvaWQpY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2U7CiAjaWYg
VVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKQEAgLTU5LDUgKzU3LDQgQEAgY2xh
c3MgUmVzb3VyY2VIYW5kbGU7CiAKIEBlbmQKIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQog
I2VuZGlmIC8vIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUubW0KaW5kZXggOTMzN2QxMzQ5MGFiODA5Yzc4M2UxNTU4Y2ZiNzYxMGJiODFj
MTU5Yi4uYzFkNjMwYjZiM2M2MTRkZjNkNDI5Yzk3ZTA1MjhiMDc4MzkwZThjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZS5tbQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJX
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCIKIAotI2lmICFV
U0UoQ0ZORVRXT1JLKQotCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2lt
cG9ydCAiQXV0aGVudGljYXRpb25NYWMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTM0NSw2
ICszNDMsMyBAQCAtIChCT09MKWNvbm5lY3Rpb25TaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZToo
TlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgogfQogCiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNF
KENGTkVUV09SSykKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCmluZGV4IDBmYWJmOTM5ODkzNmIzMTI5Mzky
MjExMGM5NzI1YWNhNDY5MzJkZWUuLmNkNWJiNDQ3ZDdjNDNhOWVmMTc3YmEyZGEyNTZiNmRiYmU1
NjY3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVVUkxSZXNwb25zZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KQEAgLTMyNSw3ICszMjUsNiBAQCB2b2lkIGFkanVz
dE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQogfQogI2Vu
ZGlmCiAKLSNpZiAhVVNFKENGTkVUV09SSykKIE5TVVJMUmVzcG9uc2UgKnN5bnRoZXNpemVSZWRp
cmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uLCBOU1VS
TFJlcXVlc3QgKm5ld1JlcXVlc3QsIE5TVVJMUmVzcG9uc2UgKnJlZGlyZWN0UmVzcG9uc2UpCiB7
CiAgICAgaWYgKHJlZGlyZWN0UmVzcG9uc2UpCkBAIC0zMzksNiArMzM4LDUgQEAgTlNVUkxSZXNw
b25zZSAqc3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeShOU1VSTENvbm5lY3Rp
b24gKmNvbm5lY3Rpb24KICAgICBOU0RpY3Rpb25hcnkgKnN5bnRoZXNpemVkUmVzcG9uc2VIZWFk
ZXJGaWVsZHMgPSBAeyBAIkxvY2F0aW9uIjogW1tuZXdSZXF1ZXN0IFVSTF0gYWJzb2x1dGVTdHJp
bmddLCBAIkNhY2hlLUNvbnRyb2wiOiBAIm5vLXN0b3JlIiB9OwogICAgIHJldHVybiBbW1tOU0hU
VFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6W1tjb25uZWN0aW9uIGN1cnJlbnRSZXF1
ZXN0XSBVUkxdIHN0YXR1c0NvZGU6MzAyIEhUVFBWZXJzaW9uOihOU1N0cmluZyAqKWtDRkhUVFBW
ZXJzaW9uMV8xIGhlYWRlckZpZWxkczpzeW50aGVzaXplZFJlc3BvbnNlSGVhZGVyRmllbGRzXSBh
dXRvcmVsZWFzZV07CiB9Ci0jZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3BpL2NvY29hL05TVVJMRG93bmxvYWRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NwaS9jb2NvYS9OU1VSTERvd25sb2FkU1BJLmgKaW5kZXggM2YzYTNiY2I4ZWM2NDhk
NGFlNWE3MDE3NWE3NTY1MTdmODVkZDBkNS4uMTE3Y2QzNmNmN2MxNWYwMWU3YWNlYTc5ZDBkZDg1
NmFhMDg5NjQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29h
L05TVVJMRG93bmxvYWRTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29j
b2EvTlNVUkxEb3dubG9hZFNQSS5oCkBAIC0yOSw2ICsyOSwxNCBAQAogCiAjaW1wb3J0IDxGb3Vu
ZGF0aW9uL05TVVJMRG93bmxvYWQuaD4KIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisj
aW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMRG93bmxvYWRQcml2YXRlLmg+CisjZWxzZQorQGludGVy
ZmFjZSBOU1VSTERvd25sb2FkICgpCisrKGlkKV9kb3dubG9hZFdpdGhMb2FkaW5nQ29ubmVjdGlv
bjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiByZXF1ZXN0OihOU1VSTFJlcXVlc3QgKily
ZXF1ZXN0IHJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UgZGVsZWdhdGU6KGlkKWRl
bGVnYXRlIHByb3h5OihpZClwcm94eTsKK0BlbmQKKyNlbmRpZgorCiAjZWxzZQogCiBAY2xhc3Mg
TlNTdHJpbmc7CkBAIC01Niw4ICs2NCwxNiBAQAogLSAodm9pZClkb3dubG9hZDooTlNVUkxEb3du
bG9hZCAqKWRvd25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcjsKIEBlbmQK
IAorQGludGVyZmFjZSBOU1VSTERvd25sb2FkIDogTlNPYmplY3QKK0BlbmQKKwogQGludGVyZmFj
ZSBOU1VSTERvd25sb2FkICgpCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZXF1ZXN0OihOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0IGRlbGVnYXRlOihpZCA8TlNVUkxEb3dubG9hZERlbGVnYXRlPilk
ZWxlZ2F0ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3QgZGVsZWdhdGU6KG51bGxhYmxlIGlkIDxOU1VSTERvd25sb2FkRGVsZWdhdGU+KWRl
bGVnYXRlOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVzdW1lRGF0YTooTlNEYXRhICopcmVz
dW1lRGF0YSBkZWxlZ2F0ZToobnVsbGFibGUgaWQgPE5TVVJMRG93bmxvYWREZWxlZ2F0ZT4pZGVs
ZWdhdGUgcGF0aDooTlNTdHJpbmcgKilwYXRoOworLSAodm9pZClzZXREZXN0aW5hdGlvbjooTlNT
dHJpbmcgKilwYXRoIGFsbG93T3ZlcndyaXRlOihCT09MKWFsbG93T3ZlcndyaXRlOworQHByb3Bl
cnR5IChudWxsYWJsZSwgcmVhZG9ubHksIGNvcHkpIE5TRGF0YSAqcmVzdW1lRGF0YTsKK0Bwcm9w
ZXJ0eSBCT09MIGRlbGV0ZXNGaWxlVXBvbkZhaWx1cmU7CisrKGlkKV9kb3dubG9hZFdpdGhMb2Fk
aW5nQ29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiByZXF1ZXN0OihOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0IHJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UgZGVs
ZWdhdGU6KGlkKWRlbGVnYXRlIHByb3h5OihpZClwcm94eTsKIEBlbmQKIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQppbmRleCA2ODBmNjllY2U1MDZmNjZhMzg5ODFh
ZWI4MmI2MDUwYmRmM2VkN2Y4Li42OGNmNjVhMzJhYTUzY2E2OGYyZTMzOWRiOGE2MzY4NDYzMmYz
YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0KQEAgLTQwLDExICs0MCw2
IEBACiAKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKIAotI2lmIFVTRShDRk5FVFdPUksp
Ci0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+Ci0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZV
UkxDb25uZWN0aW9uLmg+Ci0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBj
bGFzcyBOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZVByb3h5OwpAQCAtNjAsMTUgKzU1LDYgQEAgLSAo
aWQpX2luaXRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rp
b24KIC0gKGlkKV9pbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKICAgICAg
ICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCiAgICAgICAgICAgICAgZGlyZWN0b3J5OihO
U1N0cmluZyAqKWRpcmVjdG9yeTsKLQotI2lmIFVTRShDRk5FVFdPUkspCi0tIChpZClfaW5pdFdp
dGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOihDRlVSTENvbm5lY3Rpb25SZWYpY29ubmVjdGlvbgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJl
cXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6KENGVVJMUmVzcG9u
c2VSZWYpcmVzcG9uc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlk
KWRlbGVnYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3h5OihOU1VSTENv
bm5lY3Rpb25EZWxlZ2F0ZVByb3h5ICopcHJveHk7Ci0jZW5kaWYKLQogQGVuZAogCiBAaW50ZXJm
YWNlIFdlYkRvd25sb2FkSW50ZXJuYWwgOiBOU09iamVjdCA8TlNVUkxEb3dubG9hZERlbGVnYXRl
PgpAQCAtMjQyLDE4ICsyMjgsNiBAQCAtIChpZClfaW5pdFdpdGhMb2FkaW5nQ29ubmVjdGlvbjoo
TlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgogICAgIHJldHVybiBbc3VwZXIgX2luaXRXaXRo
TG9hZGluZ0Nvbm5lY3Rpb246Y29ubmVjdGlvbiByZXF1ZXN0OnJlcXVlc3QgcmVzcG9uc2U6cmVz
cG9uc2UgZGVsZWdhdGU6X3dlYkludGVybmFsIHByb3h5OnByb3h5XTsKIH0KIAotI2lmIFVTRShD
Rk5FVFdPUkspCi0tIChpZClfaW5pdFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOihDRlVSTENv
bm5lY3Rpb25SZWYpY29ubmVjdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzcG9uc2U6KENGVVJMUmVzcG9uc2VSZWYpcmVzcG9uc2UKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByb3h5OihOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZVByb3h5ICopcHJveHkKLXsK
LSAgICBbc2VsZiBfc2V0UmVhbERlbGVnYXRlOmRlbGVnYXRlXTsKLSAgICByZXR1cm4gW3N1cGVy
IF9pbml0V2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246Y29ubmVjdGlvbiByZXF1ZXN0OnJlcXVl
c3QgcmVzcG9uc2U6cmVzcG9uc2UgZGVsZWdhdGU6X3dlYkludGVybmFsIHByb3h5OnByb3h5XTsK
LX0KLSNlbmRpZgotCiAtIChpZClfaW5pdFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0CiAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQogICAgICAgICAgICAgIGRp
cmVjdG9yeTooTlNTdHJpbmcgKilkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9X
ZWJEb3dubG9hZEludGVybmFsLmgKaW5kZXggOWIyZjM5NTg1ZDk0YThmNWIwNWQzMzMwYWNiODEy
MzdiZDBkYjk2OS4uYzFkMjE5MjYxOTUyYTQ2N2NiM2E2OWFiNjFhNTg5NGI4YTAzYWQzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZEludGVybmFsLmgKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZEludGVybmFsLmgKQEAgLTI4LDEw
ICsyOCw2IEBACiAgCiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvV2ViRG93bmxvYWQuaD4KIAotI2lm
IFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uLmg+Ci0j
ZW5kaWYKLSAKIEBpbnRlcmZhY2UgV2ViRG93bmxvYWQgKFdlYkRvd25sb2FkQ3JlYXRpb24pCiAr
KGlkKV9kb3dubG9hZFdpdGhMb2FkaW5nQ29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29u
bmVjdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3QKQEAgLTQyLDEzICszOCw0IEBACiArKGlkKV9kb3dubG9hZFdpdGhSZXF1ZXN0
OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClk
ZWxlZ2F0ZQogICAgICAgICAgICAgICAgIGRpcmVjdG9yeTooTlNTdHJpbmcgKilkaXJlY3Rvcnk7
Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotKyAoaWQpX2Rvd25sb2FkV2l0aExvYWRpbmdDRlVSTENv
bm5lY3Rpb246KENGVVJMQ29ubmVjdGlvblJlZiljb25uZWN0aW9uCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJlcXVlc3QKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJl
c3BvbnNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVs
ZWdhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3h5OihpZClwcm94
eTsKLSNlbmRpZgotCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
YktpdFZlcnNpb25DaGVja3MuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lv
bkNoZWNrcy5oCmluZGV4IGM4MTEyMDEyNWQ0ZGZiNjkzMWFmZWQ0MWVkMTAwMTliZjA3YmZkZjQu
LmI1MzMzNTRjMzcxMmJmMDY3OWYzOTg2M2JhZWI1ZTEyZTNkYjM3NGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5oCkBAIC03Miw2ICs3Miw3IEBACiAj
ZGVmaW5lIFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfQ1NTX0FUVFJJQlVURV9TRVRURVJTX0lH
Tk9SSU5HX1BSSU9SSVRZIDIyMzkgLy8gaU9TIDYuMAogI2RlZmluZSBXRUJLSVRfRklSU1RfVkVS
U0lPTl9XSVRIX1lPVVRVQkVfRU1CRURfSUZSQU1FX1RSQU5TRk9STSAyMjM5IC8vIGlPUyA2LjAK
ICNkZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSE9VVF9MRUdBQ1lfQkFDS0dST1VORFNJ
WkVfU0hPUlRIQU5EX0JFSEFWSU9SIDI2NjUgLy8gaU9TIDcuMAorI2RlZmluZSBXRUJLSVRfRklS
U1RfVkVSU0lPTl9XSVRIX0xPQURJTkdfRFVSSU5HX0NPTU1PTl9SVU5MT09QX01PREVTIDI2NjUg
Ly8gaU9TIDcuMAogI2RlZmluZSBXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0lOU0VDVVJFX0NP
TlRFTlRfQkxPQ0tJTkcgMzQ1NAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQppbmRleCBkMmVhZjk0MzU5M2Q5OTdjMDNiN2I2MDc3MTZkYjUxODI1YzljZGM4Li43MjU5
OThmYjIyMjEzOWU3Mjg4MDk2MDg4ZjkwOTgxOGI3MGI4NTY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpA
QCAtMzAxLDEzICszMDEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqIGRvYwogCiAgICAgUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSA9IG1haW5SZXNvdXJjZUxvYWRlci0+aGFuZGxlKCk7CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIEFTU0VSVChbV2ViRG93bmxvYWQgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjpyZXF1ZXN0OnJl
c3BvbnNlOmRlbGVnYXRlOnByb3h5OildKTsKLSAgICBhdXRvIGNvbm5lY3Rpb24gPSBoYW5kbGUt
PnJlbGVhc2VDb25uZWN0aW9uRm9yRG93bmxvYWQoKTsKLSAgICBbV2ViRG93bmxvYWQgX2Rvd25s
b2FkV2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246Y29ubmVjdGlvbi5nZXQoKSByZXF1ZXN0OnJl
cXVlc3QuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSByZXNwb25zZTpyZXNwb25zZS5jZlVS
TFJlc3BvbnNlKCkgZGVsZWdhdGU6W3dlYlZpZXcgZG93bmxvYWREZWxlZ2F0ZV0gcHJveHk6bmls
XTsKLSNlbHNlCiAgICAgW1dlYkRvd25sb2FkIF9kb3dubG9hZFdpdGhMb2FkaW5nQ29ubmVjdGlv
bjpoYW5kbGUtPmNvbm5lY3Rpb24oKSByZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0
ZUhUVFBCb2R5KSByZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkgZGVsZWdhdGU6W3dl
YlZpZXcgZG93bmxvYWREZWxlZ2F0ZV0gcHJveHk6bmlsXTsKLSNlbmRpZgogfQogCiBib29sIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNo
ZShEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBpbnQgbGVuZ3RoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1t
CmluZGV4IDE0YzFiYzZjNmI2MWVlNWM2Y2M4NDY2MTVjNDg5ZDNhZDRlNGMxMzIuLjRkMmI4ZTky
M2QzMzg1YTE2NTdkZTk2NTM2ZGE5ZWJkYzBjOGYwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTExNywx
MyArMTE3LDYgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElO
SVQoQ3Vyc29yKTsKICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBJTklUKEdldERl
ZmF1bHRIVFRQQ29va2llU3RvcmFnZSk7Ci0gICAgSU5JVChDb3B5Q3JlZGVudGlhbEZyb21DRlBl
cnNpc3RlbnRTdG9yYWdlKTsKLSAgICBJTklUKFNldENGVVJMUmVxdWVzdFNob3VsZENvbnRlbnRT
bmlmZik7Ci0gICAgSU5JVChTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pOwotI2VuZGlmCi0KICNp
ZiAhUExBVEZPUk0oSU9TKQogICAgIElOSVQoU3BlZWNoU3ludGhlc2lzR2V0Vm9pY2VJZGVudGlm
aWVycyk7CiAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXREZWZhdWx0Vm9pY2VJZGVudGlmaWVy
Rm9yTG9jYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1t
CmluZGV4IDAxMGZhOGI3NzcyOWQwYzRlYWU2YjQ5ZjkzMWRlMDQ5MjZkM2NiMjcuLjQyOGFmYjcz
YjY3MWI0NDY2MDY2YTk4YzVjNDk4ZjhiMzA4YjliMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAtMTc2Niw3ICsxNzY2LDcgQEAgKyAodm9pZClf
Y2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbgogKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2Fk
ZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9s
aWN5CiB7CiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3Jh
Z2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tp
ZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7IC8vIFdpbGwgZmFpbCB3aGVu
IGJ1aWxkaW5nIHdpdGhvdXQgVVNFKENGTkVUV09SSykgYW5kIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQu
CisgICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNhbGxlZCBi
ZWZvcmVoYW5kLgogICAgIFdLU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdl
LmdldCgpLCBwb2xpY3kpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5k
ZXggY2RhM2Y1ODhlODZiNjZjNGM0ZmZlZDY2MzkxMzhmODQ2ZGQ4MzE5Yi4uYzliNWNhZGRjMmU3
ZGQ2NGFmM2QyYWVlNjNhYTY3MGIwNTc1Y2ZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQpAQCAtMTAyOCwxMiArMTAyOCwxMyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXph
dGlvbldpdGhGcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdAog
CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBOU1J1bkxvb3AgKnJ1bkxvb3AgPSBbTlNSdW5Mb29w
IG1haW5SdW5Mb29wXTsKLQorI2Vsc2UKKyAgICBOU1J1bkxvb3AgKnJ1bkxvb3AgPSBXZWJUaHJl
YWROU1J1bkxvb3AoKTsKKyNlbmRpZgogICAgIGlmIChXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VC
S0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9MT0FESU5HX0RVUklOR19DT01NT05fUlVOTE9PUF9NT0RF
UykpCiAgICAgICAgIFtzZWxmIHNjaGVkdWxlSW5SdW5Mb29wOnJ1bkxvb3AgZm9yTW9kZTooTlNT
dHJpbmcgKilrQ0ZSdW5Mb29wQ29tbW9uTW9kZXNdOwogICAgIGVsc2UKICAgICAgICAgW3NlbGYg
c2NoZWR1bGVJblJ1bkxvb3A6cnVuTG9vcCBmb3JNb2RlOk5TRGVmYXVsdFJ1bkxvb3BNb2RlXTsK
LSNlbmRpZgogCiAgICAgW3NlbGYgX2FkZFRvQWxsV2ViVmlld3NTZXRdOwogICAgIApAQCAtNjYx
OCwyOSArNjYxOSwxOSBAQCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJQZW5k
aW5nUHVibGljKQogCi0jaWYgIVBMQVRGT1JNKElPUykKIC0gKHZvaWQpc2NoZWR1bGVJblJ1bkxv
b3A6KE5TUnVuTG9vcCAqKXJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKiltb2RlCiB7Ci0jaWYg
VVNFKENGTkVUV09SSykKLSAgICBDRlJ1bkxvb3BSZWYgc2NoZWR1bGVQYWlyUnVuTG9vcCA9IFty
dW5Mb29wIGdldENGUnVuTG9vcF07Ci0jZWxzZQogICAgIE5TUnVuTG9vcCAqc2NoZWR1bGVQYWly
UnVuTG9vcCA9IHJ1bkxvb3A7Ci0jZW5kaWYKICAgICBpZiAocnVuTG9vcCAmJiBtb2RlKQogICAg
ICAgICBjb3JlKHNlbGYpLT5hZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUoc2No
ZWR1bGVQYWlyUnVuTG9vcCwgKENGU3RyaW5nUmVmKW1vZGUpKTsKIH0KIAogLSAodm9pZCl1bnNj
aGVkdWxlRnJvbVJ1bkxvb3A6KE5TUnVuTG9vcCAqKXJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcg
Kiltb2RlCiB7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBDRlJ1bkxvb3BSZWYgc2NoZWR1bGVQ
YWlyUnVuTG9vcCA9IFtydW5Mb29wIGdldENGUnVuTG9vcF07Ci0jZWxzZQogICAgIE5TUnVuTG9v
cCAqc2NoZWR1bGVQYWlyUnVuTG9vcCA9IHJ1bkxvb3A7Ci0jZW5kaWYKICAgICBpZiAocnVuTG9v
cCAmJiBtb2RlKQogICAgICAgICBjb3JlKHNlbGYpLT5yZW1vdmVTY2hlZHVsZVBhaXIoU2NoZWR1
bGVQYWlyOjpjcmVhdGUoc2NoZWR1bGVQYWlyUnVuTG9vcCwgKENGU3RyaW5nUmVmKW1vZGUpKTsK
IH0KLSNlbmRpZgogCiBzdGF0aWMgQk9PTCBmaW5kU3RyaW5nKE5TVmlldyA8V2ViRG9jdW1lbnRT
ZWFyY2hpbmc+ICpzZWFyY2hWaWV3LCBOU1N0cmluZyAqc3RyaW5nLCBXZWJGaW5kT3B0aW9ucyBv
cHRpb25zKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmlu
ZGV4IDc5NmMwZjQyYTc2OTlmMTg2ZjBlNGMwMzdkMTE0NjdjNDZiMTAyOTQuLmY0MzA0OTk2NDVk
N2Y5NTAwN2MxY2JhMGU5Y2ZhYzAxOThjZjNjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXdQcml2YXRlLmgKQEAgLTE5OCwxMCArMTk4LDggQEAgdHlwZWRlZiBlbnVtIHsK
IAogQGludGVyZmFjZSBXZWJWaWV3IChXZWJQZW5kaW5nUHVibGljKQogCi0jaWYgIVRBUkdFVF9P
U19JUEhPTkUKIC0gKHZvaWQpc2NoZWR1bGVJblJ1bkxvb3A6KE5TUnVuTG9vcCAqKXJ1bkxvb3Ag
Zm9yTW9kZTooTlNTdHJpbmcgKiltb2RlOwogLSAodm9pZCl1bnNjaGVkdWxlRnJvbVJ1bkxvb3A6
KE5TUnVuTG9vcCAqKXJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKiltb2RlOwotI2VuZGlmCiAK
IC0gKEJPT0wpZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooV2ViRmluZE9w
dGlvbnMpb3B0aW9uczsKIC0gKERPTVJhbmdlICopRE9NUmFuZ2VPZlN0cmluZzooTlNTdHJpbmcg
KilzdHJpbmcgcmVsYXRpdmVUbzooRE9NUmFuZ2UgKilwcmV2aW91c1JhbmdlIG9wdGlvbnM6KFdl
YkZpbmRPcHRpb25zKW9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuaAppbmRleCA4MDVmYTI3ZDU2MDFiZGZmYTFmYmU0YjhlZmZiM2VjNDVhY2FkMTdi
Li4yN2VmM2JkMDAzN2E3NmEwMTE2ODgxY2IzOGUxNDFiZGZjYjg5N2E3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKQEAgLTk0LDEyICs5NCw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJheShXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSosIENGQXJyYXlSZWYpIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENhY2hlUmVz
cG9uc2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VS
ZWYpIG92ZXJyaWRlOwotI2Vsc2UKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VB
c3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKikgb3Zl
cnJpZGU7CiAjZW5kaWYKLSNlbmRpZgogI2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCiAK
ICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDE5YWJjOWFiZmYw
NTdiZjAzZjUyYTg5N2JhNTQ2YThlOWVlYmMxYWUuLjhlOGU3NDRlMzM5MTcyNTFkNmQ3MzIxNjkz
NzdjN2NlMDMzMmI4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
Ojppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZQogCiAgICAgc2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24ocGFyYW1l
dGVycy5jYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbik7CiAKLSNpZiBQTEFURk9S
TShNQUMpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2Vzc2lv
blRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRl
bnRpZmllcik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCmluZGV4IGYzYzZlY2JiYjAxYTE2MDI5ZjhkZWNmOWM0
YzFjMzhhMDI3YWMwNzkuLjNkNjI1YzhlMjZiZmY3ZGU0OGJmN2E1ZjFmMDQwOThiODhjNmZjMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9h
ZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xv
YWRNYWMubW0KQEAgLTM0LDE4ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLXZvaWQgTmV0d29ya0xv
YWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQotewotICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxl
LCBoYW5kbGUgPT0gbV9oYW5kbGUpOwotCi0gICAgbV9jbGllbnQud2lsbENhY2hlUmVzcG9uc2VB
c3luYyhjZlJlc3BvbnNlKTsKLQotICAgIG1faGFuZGxlLT5jb250aW51ZVdpbGxDYWNoZVJlc3Bv
bnNlKGNmUmVzcG9uc2UpOwotfQotCi0jZWxpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKKyNpZiAh
VVNFKE5FVFdPUktfU0VTU0lPTikKIAogdm9pZCBOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9u
c2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBOU0NhY2hlZFVSTFJlc3BvbnNlICpuc1Jl
c3BvbnNlKQogewpAQCAtNTYsNiArNDUsNiBAQCB2b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVS
ZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIE5TQ2FjaGVkVVJMUmVzcAogICAg
IG1faGFuZGxlLT5jb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKG5zUmVzcG9uc2UpOwogfQogCi0j
ZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8gIVVTRShORVRXT1JLX1NFU1NJT04p
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fk
cy9Eb3dubG9hZC5oCmluZGV4IDYzMDU4MGYzNTE3MGUyYTNlNDljZjU3YjAzODM5MjUxZGNjYzgx
MTIuLmI4ZGI2ZTFlMWVhY2JkN2RhYzQ2ODExNGM3MjA0ZTJjZWNkOWMzOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgKQEAgLTQ4LDEwICs0OCw2IEBAIE9C
SkNfQ0xBU1MgV0tEb3dubG9hZEFzRGVsZWdhdGU7CiAjaW5jbHVkZSA8bWVtb3J5PgogI2VuZGlm
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTERvd25sb2Fk
UHJpdi5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRGF0YVJlZmVyZW5jZTsK
IH0KQEAgLTEwNSwxMCArMTAxLDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmFpbChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVE
YXRhKTsKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3Vt
ZURhdGEpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBEb3dubG9hZEF1dGhlbnRpY2F0aW9u
Q2xpZW50KiBhdXRoZW50aWNhdGlvbkNsaWVudCgpOwotI2VuZGlmCi0KICAgICAvLyBBdXRoZW50
aWNhdGlvbgogICAgIHN0YXRpYyB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKTsK
ICAgICBzdGF0aWMgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRp
YWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKQEAgLTE0MiwxMCAr
MTM0LDYgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8V0tEb3dubG9hZEFzRGVsZWdhdGU+IG1f
ZGVsZWdhdGU7CiAjZW5kaWYKICNlbmRpZgotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgUmV0YWlu
UHRyPENGVVJMRG93bmxvYWRSZWY+IG1fZG93bmxvYWQ7Ci0gICAgUmVmUHRyPERvd25sb2FkQXV0
aGVudGljYXRpb25DbGllbnQ+IG1fYXV0aGVudGljYXRpb25DbGllbnQ7Ci0jZW5kaWYKICNpZiBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ+IG1fZG93bmxvYWRDbGllbnQ7CiAgICAgUmVmUHRyPFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlPiBtX3Jlc291cmNlSGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDBlODBlNjIwMzg0YzE3ODAxNzAxMzg2MWY3NTIwOGU3NWI1Y2Mw
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQorKysgL2Rldi9udWxs
CkBAIC0xLDE5NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1w
b3J0ICJEb3dubG9hZC5oIgotCi0jaWYgUExBVEZPUk0oSU9TKSAmJiAhVVNFKE5FVFdPUktfU0VT
U0lPTikKLQotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgotI2ltcG9ydCA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVz
cG9uc2UuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbXBvcnQgPHd0Zi9SdW5Mb29w
Lmg+Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMRG93bmxv
YWQuaD4KLSNlbmRpZgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotLy8gRklYTUU6IElmIHBvc3NpYmxlLCB3ZSBz
aG91bGQgY29uc2lkZXIgbW92aW5nIHNvbWUgY2FsbGJhY2tzIG9mZiB0aGUgbWFpbiB0aHJlYWQg
b3IgYXQgbGVhc3QKLS8vIG1ha2luZyB0aGVtIGFzeW5jaG9ub3VzIGNhbGxzLgotc3RhdGljIHZv
aWQgZGlzcGF0Y2hPbk1haW5UaHJlYWQodm9pZCheYmxvY2spKCkpCi17Ci0gICAgaWYgKFJ1bkxv
b3A6OmlzTWFpbigpKSB7Ci0gICAgICAgIGJsb2NrKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGJsb2NrKTsK
LX0KLQotc3RhdGljIGlubGluZSBEb3dubG9hZCogdG9Eb3dubG9hZChjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb3dubG9hZCo+KGNvbnN0X2Nhc3Q8
dm9pZCo+KGNsaWVudEluZm8pKTsKLX0KLQotc3RhdGljIHZvaWQgc2V0VXBEb3dubG9hZENsaWVu
dChDRlVSTERvd25sb2FkQ2xpZW50JiBjbGllbnQsIERvd25sb2FkJiBkb3dubG9hZCkKLXsKLSAg
ICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOwotICAgIGNsaWVudC5jbGllbnRJ
bmZvID0gJmRvd25sb2FkOwotCi0gICAgY2xpZW50LmRpZFN0YXJ0ID0gW10oQ0ZVUkxEb3dubG9h
ZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRo
cmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlkU3RhcnQoKTsK
LSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC53aWxsU2VuZFJlcXVlc3QgPSBbXShD
RlVSTERvd25sb2FkUmVmLCBDRlVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgQ0ZVUkxSZXNwb25zZVJl
ZiwgY29uc3Qgdm9pZCopIC0+IENGVVJMUmVxdWVzdFJlZiB7Ci0gICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxDRlVSTFJlcXVlc3RSZWY+KENGUmV0YWluKHJlcXVlc3QpKTsKLSAgICB9OwotCi0g
ICAgY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZSA9IFtdKENGVVJMRG93bmxvYWRSZWYsIENGVVJM
UmVzcG9uc2VSZWYgcmVzcG9uc2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAg
ZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5m
byktPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0K
LSAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRkluZGV4
IGxlbmd0aCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFp
blRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlkUmVjZWl2
ZURhdGEobGVuZ3RoKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC5zaG91bGRE
ZWNvZGVEYXRhT2ZNSU1FVHlwZSA9IFtdKENGVVJMRG93bmxvYWRSZWYsIENGU3RyaW5nUmVmIGVu
Y29kaW5nVHlwZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgLT4gQm9vbGVhbiB7Ci0gICAgICAg
IF9fYmxvY2sgQk9PTCByZXR1cm5WYWx1ZSA9IE5POwotICAgICAgICBkaXNwYXRjaE9uTWFpblRo
cmVhZCheewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB0b0Rvd25sb2FkKGNsaWVudEluZm8p
LT5zaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShlbmNvZGluZ1R5cGUpOwotICAgICAg
ICB9KTsKLSAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwotICAgIH07Ci0KLSAgICBjbGllbnQu
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkT2JqZWN0TmFtZSA9IFtdKENGVVJMRG93bmxv
YWRSZWYgZG93bmxvYWRSZWYsIENGU3RyaW5nUmVmIG9iamVjdE5hbWUsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAg
IGJvb2wgYWxsb3dPdmVyd3JpdGU7Ci0gICAgICAgICAgICBTdHJpbmcgZGVzdGluYXRpb24gPSB0
b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZShvYmplY3ROYW1lLCBhbGxvd092ZXJ3cml0ZSk7Ci0gICAgICAgICAgICBpZiAoIWRlc3Rp
bmF0aW9uLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIENGVVJMRG93bmxvYWRTZXREZXN0aW5h
dGlvbihkb3dubG9hZFJlZiwgcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlZj4oW05TVVJMIGZpbGVV
UkxXaXRoUGF0aDpkZXN0aW5hdGlvbl0pLCBhbGxvd092ZXJ3cml0ZSk7Ci0gICAgICAgIH0pOwot
ICAgIH07Ci0KLSAgICBjbGllbnQuZGlkQ3JlYXRlRGVzdGluYXRpb24gPSBbXShDRlVSTERvd25s
b2FkUmVmLCBDRlVSTFJlZiBwYXRoLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAg
IGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVudElu
Zm8pLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihDRlVSTEdldFN0cmluZyhwYXRoKSk7Ci0gICAgICAg
IH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkRmluaXNoID0gW10oQ0ZVUkxEb3dubG9hZFJl
ZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVh
ZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlkRmluaXNoKCk7Ci0g
ICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkRmFpbCA9IFtdKENGVVJMRG93bmxv
YWRSZWYgZG93bmxvYWRSZWYsIENGRXJyb3JSZWYgZXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIGF1dG8g
cmVzdW1lRGF0YSA9IGFkb3B0Q0YoQ0ZVUkxEb3dubG9hZENvcHlSZXN1bWVEYXRhKGRvd25sb2Fk
UmVmKSk7Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRGYWlsKGVycm9y
LCBJUEM6OkRhdGFSZWZlcmVuY2UocmVzdW1lRGF0YSA/IENGRGF0YUdldEJ5dGVQdHIocmVzdW1l
RGF0YS5nZXQoKSkgOiBudWxscHRyLCByZXN1bWVEYXRhID8gQ0ZEYXRhR2V0TGVuZ3RoKHJlc3Vt
ZURhdGEuZ2V0KCkpIDogMCkpOwotICAgICAgICB9KTsKLSAgICB9OwotfQotI2VuZGlmIC8vIFVT
RShDRk5FVFdPUkspCi0KLXZvaWQgRG93bmxvYWQ6OnN0YXJ0KCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJikKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpzdGFydFdpdGhIYW5k
bGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCi17Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBDRlVSTERvd25sb2FkQ2xpZW50IGNsaWVu
dDsKLSAgICBzZXRVcERvd25sb2FkQ2xpZW50KGNsaWVudCwgKnRoaXMpOwotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Rl
cHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgIG1fZG93bmxvYWQgPSBhZG9wdENGKENGVVJMRG93
bmxvYWRDcmVhdGVBbmRTdGFydFdpdGhMb2FkaW5nQ29ubmVjdGlvbihOVUxMLCBoYW5kbGUtPnJl
bGVhc2VDb25uZWN0aW9uRm9yRG93bmxvYWQoKS5nZXQoKSwgbV9yZXF1ZXN0LmNmVVJMUmVxdWVz
dChVcGRhdGVIVFRQQm9keSksIHJlc3BvbnNlLmNmVVJMUmVzcG9uc2UoKSwgJmNsaWVudCkpOwot
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotI2VuZGlmCi19Ci0KLXZvaWQgRG93bmxvYWQ6OmNhbmNlbCgpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlz
aCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVjZWl2
ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVu
dGlhbCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVj
ZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25s
b2FkOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRS
ZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25s
b2FkOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCmluZGV4IDljN2Q5NTMz
ODVlZjYzYTY2ZGY3NTYyNzE4ZWM4YTc2ZDdkZmI5NjUuLjRmZTUzYWM2NTRjMGUwMGRjMmNjZTk4
ODk5ZGY2MDAzNGRiYmY4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3du
bG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3du
bG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCkBAIC0yNiwxMCArMjYsMTEgQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiRG93bmxvYWQuaCIKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVT
RShORVRXT1JLX1NFU1NJT04pCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoTkVUV09SS19T
RVNTSU9OKQogCiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uTWFjLmg+CisjaW1wb3J0IDxXZWJDb3JlL05T
VVJMRG93bmxvYWRTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuaD4KQEAgLTM3LDE0ICszOCw2IEBACiAjaW1wb3J0ICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW1wb3J0ICJXZWJQYWdlLmgiCiAKLUBpbnRlcmZhY2UgTlNVUkxEb3dubG9hZCAo
V2ViTlNVUkxEb3dubG9hZERldGFpbHMpCi0rKGlkKV9kb3dubG9hZFdpdGhMb2FkaW5nQ29ubmVj
dGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcm94eTooaWQpcHJveHk7Ci1AZW5kCi0KIEBpbnRlcmZhY2UgV0tEb3dubG9hZEFzRGVs
ZWdhdGUgOiBOU09iamVjdCA8TlNVUkxEb3dubG9hZERlbGVnYXRlPiB7CiAgICAgV2ViS2l0OjpE
b3dubG9hZCogX2Rvd25sb2FkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDZhZjMxN2VkY2NjYjNmMzc4
ZWQ4OTQ5MWM0YWRmN2I2Y2ViMWJiZTkuLmVkMDVmZjYyNWJiMjkwYmI5ZmY4ZTMyNzhiMDJhZGZj
Y2Q1YjA1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKICAgICBlbmNvZGVyIDw8IHRleHRDaGVja2VyU3RhdGU7CiAgICAgZW5jb2RlciA8
PCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOwogICAgIGVuY29kZXIgPDwgZGVmYXVsdFJlcXVl
c3RUaW1lb3V0SW50ZXJ2YWw7Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUksp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW5jb2RlciA8PCB1aVByb2Nlc3NCdW5kbGVJZGVu
dGlmaWVyOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0yMzAsNyArMjMwLDcgQEAg
Ym9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERl
Y29kZXImIGRlY29kZXIsIFdlYlByb2MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5kZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVU
V09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKaW5kZXggMmY4MGM2M2Q3ODM1NDkwOWVlYWQ1MmU2OGI0ZjgyOWMxYzE3
OTU2Mi4uMDMzNTAxMTAyYzRhZmQ4ZTQ0NmFmZjc3YTAxYzQwNzA1ZDQ2ZDhkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
CkBAIC0xMjEsNyArMTIxLDcgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMg
ewogCiAgICAgZG91YmxlIGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsOwogCi0jaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
U3RyaW5nIHVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXI7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQppbmRl
eCBkZmZiM2UwNjNkNTZhZGExN2Q1Y2Q1NGNmZTE1ZTAzMDk4YzVhZTE1Li5kMGQ0YzcwODUxZGU5
OThhYjllZDI5YjVlODA5MTFmOTJmZGM2YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQpAQCAtMzksMTAgKzM5LDYg
QEAKICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9S
ZXNvdXJjZVJlcXVlc3QuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5ldHdv
cmsvQ0ZVUkxSZXF1ZXN0Lmg+Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCiAjaW1wb3J0IDxXZWJDb3JlL0FWRm91bmRhdGlvblNQSS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgpAQCAtNTcsMzYgKzUzLDYgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBJUEMgewogCi0jaWYgVVNFKENG
TkVUV09SSykKLXZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0
Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlc291cmNlUmVxdWVzdCkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiByZXF1
ZXN0VG9TZXJpYWxpemUgPSByZXNvdXJjZVJlcXVlc3QuY2ZVUkxSZXF1ZXN0KERvTm90VXBkYXRl
SFRUUEJvZHkpOwotCi0gICAgYm9vbCByZXF1ZXN0SXNQcmVzZW50ID0gcmVxdWVzdFRvU2VyaWFs
aXplOwotICAgIGVuY29kZXIgPDwgcmVxdWVzdElzUHJlc2VudDsKLQotICAgIGlmICghcmVxdWVz
dElzUHJlc2VudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gV2UgZG9uJ3Qgc2VuZCBIVFRQ
IGJvZHkgb3ZlciBJUEMgZm9yIGJldHRlciBwZXJmb3JtYW5jZS4KLSAgICAvLyBBbHNvLCBpdCdz
IG5vdCBhbHdheXMgcG9zc2libGUgdG8gZG8sIGFzIHN0cmVhbXMgY2FuIG9ubHkgYmUgY3JlYXRl
ZCBpbiBwcm9jZXNzIHRoYXQgZG9lcyBuZXR3b3JraW5nLgotICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IHJlcXVlc3RIVFRQQm9keSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0
Qm9keShyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCkpKTsKLSAgICBSZXRhaW5QdHI8Q0ZSZWFkU3Ry
ZWFtUmVmPiByZXF1ZXN0SFRUUEJvZHlTdHJlYW0gPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlI
VFRQUmVxdWVzdEJvZHlTdHJlYW0ocmVxdWVzdFRvU2VyaWFsaXplLmdldCgpKSk7Ci0gICAgaWYg
KHJlcXVlc3RIVFRQQm9keSB8fCByZXF1ZXN0SFRUUEJvZHlTdHJlYW0pIHsKLSAgICAgICAgQ0ZN
dXRhYmxlVVJMUmVxdWVzdFJlZiBtdXRhYmxlUmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZU11
dGFibGVDb3B5KDAsIHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSk7Ci0gICAgICAgIHJlcXVlc3RU
b1NlcmlhbGl6ZSA9IGFkb3B0Q0YobXV0YWJsZVJlcXVlc3QpOwotICAgICAgICBDRlVSTFJlcXVl
c3RTZXRIVFRQUmVxdWVzdEJvZHkobXV0YWJsZVJlcXVlc3QsIG5pbCk7Ci0gICAgICAgIENGVVJM
UmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9keVN0cmVhbShtdXRhYmxlUmVxdWVzdCwgbmlsKTsKLSAg
ICB9Ci0KLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRD
RihXS0NGVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlcXVlc3RU
b1NlcmlhbGl6ZS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpKTsKLSAgICBJUEM6OmVu
Y29kZShlbmNvZGVyLCBkaWN0aW9uYXJ5LmdldCgpKTsKLQotICAgIC8vIFRoZSBmYWxsYmFjayBh
cnJheSBpcyBwYXJ0IG9mIENGVVJMUmVxdWVzdCwgYnV0IGl0IGlzIG5vdCBlbmNvZGVkIGJ5IFdL
Q0ZVUkxSZXF1ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24uCi0gICAgZW5jb2Rl
ciA8PCByZXNvdXJjZVJlcXVlc3QucmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0Zh
bGxiYWNrQXJyYXkoKTsKLSAgICBlbmNvZGVyLmVuY29kZUVudW0ocmVzb3VyY2VSZXF1ZXN0LnJl
cXVlc3RlcigpKTsKLX0KLSNlbHNlCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0
Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7CiAgICAgUmV0YWluUHRyPE5TVVJMUmVx
dWVzdD4gcmVxdWVzdFRvU2VyaWFsaXplID0gcmVzb3VyY2VSZXF1ZXN0Lm5zVVJMUmVxdWVzdChE
b05vdFVwZGF0ZUhUVFBCb2R5KTsKQEAgLTExMiw3ICs3OCw2IEBAIHZvaWQgQXJndW1lbnRDb2Rl
cjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyJiBl
bmNvZGVyCiAgICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QucmVzcG9uc2VDb250ZW50RGlz
cG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoKTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0o
cmVzb3VyY2VSZXF1ZXN0LnJlcXVlc3RlcigpKTsKIH0KLSNlbmRpZgogCiBib29sIEFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVjb2Rl
ciYgZGVjb2RlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7CkBAIC0xMjks
MjAgKzk0LDEyIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQ
bGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyCiAgICAgaWYgKCFJUEM6OmRlY29k
ZShkZWNvZGVyLCBkaWN0aW9uYXJ5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWYgVVNF
KENGTkVUV09SSykKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBjZlVSTFJlcXVlc3Qg
PSBhZG9wdENGKFdLQ3JlYXRlQ0ZVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0
aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7Ci0gICAgaWYg
KCFjZlVSTFJlcXVlc3QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJlc291cmNlUmVx
dWVzdCA9IFJlc291cmNlUmVxdWVzdChjZlVSTFJlcXVlc3QuZ2V0KCkpOwotI2Vsc2UKICAgICBS
ZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJlcXVlc3QgPSBXS05TVVJMUmVxdWVzdEZyb21T
ZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJUEM6OnRva2VuTnVs
bFR5cGVSZWYoKSk7CiAgICAgaWYgKCFuc1VSTFJlcXVlc3QpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIHJlc291cmNlUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChuc1VSTFJlcXVlc3Qu
Z2V0KCkpOwotI2VuZGlmCi0gICAgCisKICAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUNvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNjYzBiNmNmNGZmZTU1NDFjYmFjMjg3Y2E3OGJhNGZj
ZWY1NmJkZTkuLmY0MjY2MGFiMzA4MzE4MDA5OGMxN2VmZTMwNWQ2NDQ1ZDNmOGExNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTY3Miw3ICs2NzIsNiBAQAogCQkyREE5NDRBMjE4ODRFNEYwMDBFRDg2REIgLyogV2ViUGxhdGZv
cm1Ub3VjaFBvaW50SU9TLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEQTk0NDlCMTg4NEU0RjAwMEVEODZEQiAvKiBXZWJQbGF0Zm9ybVRvdWNoUG9p
bnRJT1MuY3BwICovOyB9OwogCQkyREE5NDRBMzE4ODRFNEYwMDBFRDg2REIgLyogV2ViVG91Y2hF
dmVudElPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyREE5NDQ5QzE4ODRFNEYwMDBFRDg2REIgLyogV2ViVG91Y2hFdmVudElPUy5jcHAgKi87IH07
CiAJCTJEQTk0NEE0MTg4NEU0RjAwMEVEODZEQiAvKiBHZXN0dXJlVHlwZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NDlEMTg4NEU0RjAwMEVE
ODZEQiAvKiBHZXN0dXJlVHlwZXMuaCAqLzsgfTsKLQkJMkRBOTQ0QTcxODg0RTk0ODAwRUQ4NkRC
IC8qIERvd25sb2FkSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkRBOTQ0QTYxODg0RTk0ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9TLm1tICovOyB9
OwogCQkyREE5NDRBRDE4ODRFOUJBMDBFRDg2REIgLyogVGV4dENoZWNrZXJJT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDRBOTE4ODRFOUJB
MDBFRDg2REIgLyogVGV4dENoZWNrZXJJT1MubW0gKi87IH07CiAJCTJEQTk0NEFGMTg4NEU5QkEw
MEVEODZEQiAvKiBXZWJQYWdlUHJveHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDRBQjE4ODRFOUJBMDBFRDg2REIgLyogV2ViUGFnZVBy
b3h5SU9TLm1tICovOyB9OwogCQkyREE5NDRCMDE4ODRFOUJBMDBFRDg2REIgLyogV2ViUHJvY2Vz
c1Byb3h5SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkRBOTQ0QUMxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlByb2Nlc3NQcm94eUlPUy5tbSAqLzsg
fTsKQEAgLTI4MzMsNyArMjgzMiw2IEBACiAJCTJEQTk0NDlCMTg4NEU0RjAwMEVEODZEQiAvKiBX
ZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcDsgcGF0aCA9IGlvcy9XZWJQbGF0
Zm9ybVRvdWNoUG9pbnRJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREE5
NDQ5QzE4ODRFNEYwMDBFRDg2REIgLyogV2ViVG91Y2hFdmVudElPUy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJUb3VjaEV2ZW50SU9TLmNwcDsgcGF0aCA9IGlv
cy9XZWJUb3VjaEV2ZW50SU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRB
OTQ0OUQxODg0RTRGMDAwRUQ4NkRCIC8qIEdlc3R1cmVUeXBlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBHZXN0dXJlVHlwZXMuaDsgcGF0aCA9IGlvcy9HZXN0dXJlVHlwZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRBOTQ0QTYxODg0RTk0ODAwRUQ4NkRC
IC8qIERvd25sb2FkSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gRG93bmxvYWRJT1MubW07IHBhdGggPSBEb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREE5NDRBOTE4ODRFOUJBMDBFRDg2REIgLyog
VGV4dENoZWNrZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBUZXh0Q2hlY2tlcklPUy5tbTsgcGF0aCA9IGlvcy9UZXh0Q2hlY2tlcklPUy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0QUIxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlBh
Z2VQcm94eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdl
YlBhZ2VQcm94eUlPUy5tbTsgcGF0aCA9IGlvcy9XZWJQYWdlUHJveHlJT1MubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQTk0NEFDMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQcm9j
ZXNzUHJveHlJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBX
ZWJQcm9jZXNzUHJveHlJT1MubW07IHBhdGggPSBpb3MvV2ViUHJvY2Vzc1Byb3h5SU9TLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTE0OCw3ICs1MTQ2LDYgQEAKIAkJMkRBOTQ0
QTUxODg0RTkzQzAwRUQ4NkRCIC8qIGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJMkRBOTQ0QTYxODg0RTk0ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9T
Lm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpAQCAtOTUxNiw3ICs5NTEzLDYgQEAKIAkJCQk1MThFOEYwNzE2QjIwOTM3MDBFOTE0MjkgLyog
RG93bmxvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4RThGMDkxNkIyMDkzNzAwRTkxNDI5
IC8qIERvd25sb2FkQXV0aGVudGljYXRpb25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTFERjYzMTIxOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50Lm1tIGluIFNvdXJjZXMg
Ki8sCi0JCQkJMkRBOTQ0QTcxODg0RTk0ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9TLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTE4RThGMEQxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkTWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4RThGMEIxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2Fk
TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RDRDQjEyODhBQUE3MDBDRkQwOEMg
LyogRG93bmxvYWRQcm94eS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
aW5kZXggNWRlYzM3YWU1ZTVmYzY1NTc5MzVkMzFhY2EyMmVhYzVhNjE5MGMwMS4uOWI4MmM4Mzkw
MDUyNzgyYmZlMWQ2MmRkMzlkNTNjY2JjYzIyZWIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
QEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRKYXZhU2NyaXB0Q2Fu
QWNjZXNzQ2xpcGJvYXJkKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdQogdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94eSogcGFn
ZUdyb3VwLCBib29sIGVuYWJsZWQpCiB7CiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTog
VGhpcyB0ZXN0LW9ubHkgZnVuY3Rpb24gZG9lc24ndCB3b3JrIHdpdGggTmV0d29ya1Byb2Nlc3Ms
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1Mjc0Pi4KLSNpZiBQ
TEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCisjaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIGlmIChlbmFibGVkKQogICAgICAgICBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25J
RDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZh
Y2UubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggMDNmMjg4MjMwMjExMzZmZTA4ZGQyZjczYzU0YWJiMzVm
MzNiOGU4Zi4uYzcxODViZmU1MjQ4NWQ5OTFiZDAyYmJlMTc3NWE4OGI4M2VlOTExNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lz
dGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtMTIxLDEzICsxMjEsNiBAQCB2b2lk
IEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgICAgIElOSVQoV2luZG93U2V0
QWxwaGEpOwogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
ICAgICAgICBJTklUKEdldERlZmF1bHRIVFRQQ29va2llU3RvcmFnZSk7Ci0gICAgICAgIElOSVQo
Q29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFnZSk7Ci0gICAgICAgIElOSVQoU2V0
Q0ZVUkxSZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZmKTsKLSAgICAgICAgSU5JVChTZXRSZXF1ZXN0
U3RvcmFnZVNlc3Npb24pOwotI2VuZGlmCi0KICNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICBJ
TklUKFNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMpOwogICAgICAgICBJTklUKFNw
ZWVjaFN5bnRoZXNpc0dldERlZmF1bHRWb2ljZUlkZW50aWZpZXJGb3JMb2NhbGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMDNjNTI0MzdhMDAyNWM0MjE3
ZjFkMzZhNjgyOTIyNTFiNjUyODZmNy4uZTAzMDgxNjEwMjE1MmY4OTY0MDM4ZWYwZjcxMzkyN2Fi
MzcyMWEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0z
MTcsNyArMzE3LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBpZiAocGFyYW1ldGVy
cy5zaG91bGRVc2VGb250U21vb3RoaW5nKQogICAgICAgICBzZXRTaG91bGRVc2VGb250U21vb3Ro
aW5nKHRydWUpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgU2Vzc2lvblRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKHBh
cmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CiAjZW5kaWYKIApAQCAtNDU3LDE0
ICs0NTcsMTQgQEAgdm9pZCBXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdl
ZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQpCiAKIHZvaWQgV2ViUHJvY2Vzczo6ZW5z
dXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoU09VUCkKKyNpZiBQTEFURk9S
TShDT0NPQSkgfHwgVVNFKFNPVVApCiAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5z
dXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQpOwogI2VuZGlmCiB9CiAKIHZvaWQg
V2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Np
b25JRCkKIHsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNP
VVApCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIFNlc3Npb25UcmFja2Vy
OjpkZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQpOwogI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267564</attachid>
            <date>2015-12-17 09:00:51 -0800</date>
            <delta_ts>2015-12-17 09:49:52 -0800</delta_ts>
            <desc>Patch to find build errors (fix WebDownload on iOS)</desc>
            <filename>bug-137936-20151217090013.patch</filename>
            <type>text/plain</type>
            <size>131174</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE4YmM0YTczMTU0ODcyYTg1OTc1NjNm
YWE0MDRlYzg0NjMyM2RhODAuLjE2YzdjYzM4YjU4NWJiMTU3ODFjOGRiOWMyZjU4MjMwYjkxYmRh
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTItMTcgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgVVNFKENGTkVUV09SSykrUExBVEZPUk0o
Q09DT0EpIGNvZGUgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM3OTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxNS0xMi0xNiAgQW5kcmVhcyBLbGluZyAg
PGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgR2l2ZSBrZXJuZWwgVk0gc29tZSBoaW50cyBh
Ym91dCBub24tbGl2ZSBtZW1vcnktY2FjaGVkIHJlc291cmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0ODdl
YTUxYTY3MjEwMzFlMzY0MGU2NjQzODYzZGE0ZmFiZDMwNjIxLi43M2M5MjlhOWNmNjcwYTQ3Mjcy
NjI4MTU0ZGE0NTMxNGEyNWE4ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMyIEBACisyMDE1
LTEyLTE3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIFVTRShDRk5FVFdPUkspK1BMQVRGT1JNKENPQ09BKSBjb2RlIHBhdGgKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzkzNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbW9zdCBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9t
YWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NoZWR1bGVBbGwp
OiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJy
YXkpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvbWFjL1BhZ2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6YWRkU2NoZWR1bGVQYWlyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJl
bW92ZVNjaGVkdWxlUGFpcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJl
Z2lzdGVyTWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVWaWRlb0xheWVyR3Jhdml0eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
aW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2Uu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNGKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvcHlDb29raWVzRm9yVVJMV2l0aEZpcnN0UGFydHlVUkwpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlQ29va2llcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5k
bGluZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0OjpSZXNvdXJjZVJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0OjpjYWNoZVBhcnRpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OnNldENhY2hlUGFydGl0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9uc2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6YWRkVG9IVFRQSGVhZGVyTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmg6
CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjplbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1E
YXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRp
YWxDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnRvTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVu
Y2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6bnNDcmVkZW50aWFs
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OmlzRW1wdHkpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29j
b2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZTo6ZW5jb2RpbmdSZXF1aXJl
c1BsYXRmb3JtRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnR5cGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpuc1NwYWNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVlc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJl
c291cmNlUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3Mv
UXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1t
OgorICAgICAgICAoLVtXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIGRldGFjaEhh
bmRsZV0pOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjp+UXVpY2tMb29rSGFu
ZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1Nl
dCk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdh
dGUgaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViUmVz
b3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSBfc2VuZERpZFJlY2VpdmVSZXNwb25zZUlmTmVj
ZXNzYXJ5XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29r
RGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YUFycmF5Ol0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlk
UmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJl
c291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdh
dGUgY29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UXVpY2tMb29rSGFuZGxlOjpkaWRSZWNlaXZlRGF0YUFycmF5KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW06IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6OnNldEF1dGhlbnRpY2F0aW9uQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjphdXRoZW50aWNhdGlvbkNsaWVudCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y29va2llU3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW06CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTlNF
cnJvckZyb21SZXNvdXJjZUVycm9yQmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om5zRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgTlNFcnJvciAqKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Om9wZXJhdGlvblF1ZXVlRm9yQXN5bmNDbGllbnRzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWxlZ2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xv
YWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50
OjpwbGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1t
OgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIGRldGFjaEhhbmRs
ZV0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW06CisgICAg
ICAgIChXZWJDb3JlOjpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvY29jb2EvTlNVUkxEb3dubG9hZFNQSS5oOgor
CiAyMDE1LTEyLTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgTWFrZSBTZXNzaW9uSUQgdXNlIGludEhhc2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRl
eCBlNWQyODM3ZTlhNjBjY2NjNjEwZDU5MzA1MDNjZWY4ZjFmYWM1ZDg3Li44NWRkOWFhYzg2ZDUx
NzY1ZjM2NDQ1YjhlNGY1ZjBkY2IxMjIyM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjcgQEAKKzIwMTUtMTItMTcgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW1vdmUgVVNFKENGTkVUV09SSykrUExBVEZPUk0oQ09DT0EpIGNvZGUgcGF0aAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3OTM2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dl
YkRvd25sb2FkLmg6CisgICAgICAgICogTWlzYy9XZWJEb3dubG9hZC5tbToKKyAgICAgICAgKiBN
aXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaDoKKyAgICAgICAgKiBNaXNjL1dlYktpdFZlcnNpb25D
aGVja3MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNlTG9h
ZFRvRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2Vi
Q29yZVN5c3RlbUludGVyZmFjZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3NldEN1cnJlbnROZXR3b3Jr
TG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZy
YW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2NoZWR1bGVJblJ1bkxv
b3A6Zm9yTW9kZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKGZpbmRTdHJpbmcpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxNS0xMi0xNiAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIFtGZXRjaCBB
UEldIEFkZCBmZXRjaCBBUEkgY29tcGlsZSB0aW1lIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlMzQ1Y2Ey
YTdhYmM2MjgzMTliMDg4ZTMzNTRlMmQ2MzcxOWZjOTc1Li4wZDlmNDQ4Y2Y1NTcwMjc1ZDE0MmYz
NzU1ZDIxNzg1ZDBhZTk5YWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTUtMTIt
MTcgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
VVNFKENGTkVUV09SSykrUExBVEZPUk0oQ09DT0EpIGNvZGUgcGF0aAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3OTM2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyk6IERlbGV0ZWQu
CisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAqIFNoYXJl
ZC9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJl
ZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVz
dD46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVz
b3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAg
ICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpp
bml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpk
ZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisKIDIwMTUtMTItMTYgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQcm9ncmVzcyB0b3dh
cmRzIGltcGxlbWVudGluZyBkb3dubG9hZHMgd2l0aCBOZXR3b3JrU2Vzc2lvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgK
aW5kZXggNTkxODE4YzNiZGI4MmJhOWMyYjVhYTU5YTZkZWI2NGIzMzAxMGM5ZS4uNjI2NGY4ODc3
YWFmMTg1YTZiYWZjZDg4NDNkMWM1MmZhOWIwNGJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC01NDUsOSAr
NTQ1LDYgQEAKICNpZiBQTEFURk9STShJT1MpCiAKICNkZWZpbmUgSEFWRV9SRUFETElORSAxCi0j
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNkZWZpbmUgVVNFX0NGTkVUV09SSyAxCi0jZW5k
aWYKICNkZWZpbmUgVVNFX1VJS0lUX0VESVRJTkcgMQogI2RlZmluZSBVU0VfV0VCX1RIUkVBRCAx
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBjMDlkM2Q5NGYzMWE2OWM2ODg3ZDI3NTQwMjQ4NTI2OTkxYmE4Y2NkLi43ZTFlODI2
NDRkNTg0ZWY2NTc5N2E4ZDcyZjI4NTNjYWVjNGEyY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzc0LDcgKzI3NzQsNiBA
QAogCQk3RTY2RTIzNDE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFU
Qy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U2NkUy
MzIxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCAqLzsgfTsK
IAkJN0U2NkUyMzQxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJU
Qy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U2NkUy
MzIxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oICovOyB9
OwogCQk3RTdERTFGRDE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTdERTFGQzE5
NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gKi87IH07Ci0JCTdFN0RF
MjAyMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTdERTIwMTE5NUNFRkNEMDAzNTM2
M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tICovOyB9OwogCQk3RThGQURDNDE5OUE5NUIxMDA3
MTQ5NjggLyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOEZBREMzMTk5QTk1QjEwMDcxNDk2OCAvKiBTdWJy
ZXNvdXJjZUxvYWRlckNvY29hLm1tICovOyB9OwogCQk3RTk5QUY1MTBCMTM4NDY0NjhGQjAxQTUg
LyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOTlBRjUyMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5k
b3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwICovOyB9OwogCQk3RTk5QUY1MzBCMTM4NDY0NjhG
QjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTk5QUY1NDBCMTM4NDY0NjhGQjAxQTUgLyog
V2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjg1LDcgKzEwMjg0LDYgQEAKIAkJN0U2NkUyMzIx
NkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTY2RTIzMjE3RTZFQjZDMDBGN0U3RkYgLyogV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3RTdERTFGQzE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVl
c3RDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0U3REUyMDExOTVDRUZD
RDAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdElPUy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0U4RkFEQzMxOTlBOTVCMTAwNzE0OTY4IC8qIFN1YnJlc291cmNlTG9h
ZGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdWJy
ZXNvdXJjZUxvYWRlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTk5
QUY1MjBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd0ZvY3VzQWxsb3dlZElu
ZGljYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFOTlBRjU0MEIxMzg0
NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjU2Nyw3ICsxNjU2NSw2IEBACiAJCQkJNDQyQUY3
QTgxMDJDRERFQTAwOEZENEQzIC8qIFF1aWNrTG9vay5tbSAqLywKIAkJCQlBMTBEQkY0NjE4Rjky
MzE3MDAwRDcwQzYgLyogUXVpY2tMb29rSGFuZGxlQ2xpZW50LmggKi8sCiAJCQkJN0U0MjhDRTQx
M0UzNDA3RjAwM0I2NjFDIC8qIFJlc291cmNlSGFuZGxlSU9TLm1tICovLAotCQkJCTdFN0RFMjAx
MTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gKi8sCiAJCQkJNDRBMjBE
QjgwRjg0MTY2QzAwQjNFMUZFIC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5oICovLAogCQkJCTQ0
NEQ0RTIxMEY3MDhCMkUwMDMxNThFMCAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0gKi8sCiAJ
CQkpOwpAQCAtMzA3ODQsNyArMzA3ODEsNiBAQAogCQkJCTUxNEM3NjdDMENFOTIzQTEwMDdFRjND
RCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDZF
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3RTdERTFGRDE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2Eu
bW0gaW4gU291cmNlcyAqLywKLQkJCQk3RTdERTIwMjE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3Vy
Y2VSZXF1ZXN0SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTMwQ0U5MjM0RTAwN0VG
M0NEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjdF
MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3RUU2ODQ3MTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZUNGTmV0
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApp
bmRleCA1NTEwMzkxYmQzM2QzYTM2NjcxNTZlODQ1ZmEzMTMxMWMzZjZmOWYzLi45ZGJlMTgzZTY5
ZWNiNWRlMWY1NTViN2U1OGNlNDhkNzgzZGRlMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaApAQCAtNTYsNiArNTYsMTAgQEAKICNpbmNsdWRlICJRdWlja0xvb2suaCIK
ICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFp
ci5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OwpAQCAtMTQ0LDcgKzE0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0
aW9uJik7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGluZzsgfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgICAgICB2b2lkIHNjaGVkdWxlKFNjaGVkdWxlUGFpciYpOwogICAg
ICAgICB2b2lkIHVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDBkODFmZjViYTI4YTIxMDRkNTI4YWVj
ZmJiYmU3MzU2Y2EyM2I2NzguLjk2MTNlMzAxYjgzMTdlYWU4MTUyY2YzZThmMDc2YzRkMzljMWQ3
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNzI0LDcg
KzcyNCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKICAgICBjYW5jZWwoKTsKIH0KIAotI2lmIFBMQVRG
T1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2No
ZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuaAppbmRleCAwMjdhYzA4ZjIzMjMxZDQwNzg3ZDEzMDI1NjI2MzMyYjkyNmY0MGZhLi44
NTIwMTE3NTRmN2I5MTQ2NzU1MmM4YjVjYTliMTk3NzE3OTllZWE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgd2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCk7CiAKLSNpZiBQTEFURk9STShN
QUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzY2hlZHVsZShXVEY6OlNjaGVkdWxl
UGFpciYpOwogICAgIHZvaWQgdW5zY2hlZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpOwogI2VuZGlm
CkBAIC0xNTcsMTIgKzE1Nyw5IEBAIHByb3RlY3RlZDoKIAogICAgIGNvbnN0IFJlc291cmNlTG9h
ZGVyT3B0aW9ucyYgb3B0aW9ucygpIHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCi0jaWYgUExBVEZP
Uk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZp
cnR1YWwgTlNDYWNoZWRVUkxSZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5k
bGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNpZiBQTEFURk9S
TShDT0NPQSkgJiYgVVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFsIENGQ2FjaGVkVVJMUmVzcG9u
c2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmKSBvdmVycmlkZTsKLSNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVx
dWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
ZGlyZWN0UmVzcG9uc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5oCmluZGV4IDY5YTI0MjI5NzIxZmY2Y2E5ODk5M2E2OTk3NzAxOGZlZWQ4ZDVjZDguLmVmYWNk
ZDhkMTMyNDJhMDY0NDM5YWI3MjkwMGIxOTRjY2JjMDE0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03MywxMiArNzMsOSBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2aXJ0dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKndpbGxDYWNoZVJlc3Bv
bnNlKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSopIG92ZXJyaWRlOwogI2Vu
ZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBD
RkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwg
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7Ci0jZW5kaWYKIAogI2lmIFVTRShORVRX
T1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNEYXRh
QXJyYXkoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCmluZGV4IDdlNzRmMjBmOTcyYjA3OGZlODYy
YjU4MWMyODliZWVlNWQwYTEyYzguLmIyNjE0NGJkMjA1ZjFmNmE3NjZhZWViNTI3ZmNlZjNmOTYy
ZTE3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2Fk
ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJN
YWMuY3BwCkBAIC0zMyw4ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFBM
QVRGT1JNKE1BQykKLQogc3RhdGljIHZvaWQgc2NoZWR1bGVBbGwoY29uc3QgUmVzb3VyY2VMb2Fk
ZXJNYXAmIGxvYWRlcnMsIFNjaGVkdWxlUGFpciYgcGFpcikKIHsKICAgICBWZWN0b3I8UmVmUHRy
PFJlc291cmNlTG9hZGVyPj4gbG9hZGVyc0NvcHk7CkBAIC02OSw2ICs2Nyw0IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OnVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQogICAgIHVuc2NoZWR1
bGVBbGwobV9tdWx0aXBhcnRTdWJyZXNvdXJjZUxvYWRlcnMsIHBhaXIpOwogfQogCi0jZW5kaWYK
LQogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMv
UmVzb3VyY2VMb2FkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNl
TG9hZGVyTWFjLm1tCmluZGV4IGJiOWIxNGU4MTRiNWIyMzljNzdlNTFhNGRiZjE3Y2Q2NTFjMjZm
MDMuLjhhMzI4ZWU1ZmYyODgxZThjMzQ0NmViNTg4NGNlMmU1YjIyZmNmYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQpAQCAtMzYsMTkgKzM2
LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLQotQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZiBSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UoUmVz
b3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQotewot
ICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MoKSA9PSBEb05vdFNlbmRDYWxsYmFj
a3MpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgUmV0YWluUHRyPE5TQ2FjaGVkVVJM
UmVzcG9uc2U+IG5zQ2FjaGVkUmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNDYWNoZWRVUkxSZXNwb25z
ZSBhbGxvY10gX2luaXRXaXRoQ0ZDYWNoZWRVUkxSZXNwb25zZTpjYWNoZWRSZXNwb25zZV0pOwot
ICAgIHJldHVybiBbZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9j
dW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCBuc0NhY2hlZFJlc3BvbnNlLmdldCgpKSBfQ0ZD
YWNoZWRVUkxSZXNwb25zZV07Ci19Ci0KLSNlbHNlCi0KIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFJl
c291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVk
VVJMUmVzcG9uc2UqIHJlc3BvbnNlKQogewogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxs
YmFja3MoKSA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBAIC01Niw4ICs0Myw2IEBAIE5TQ2FjaGVk
VVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhh
bmRsZSosIE5TQ2FjaGVkCiAgICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLndpbGxD
YWNoZVJlc3BvbnNlKGRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIoKSwgcmVzcG9uc2UpOwog
fQogCi0jZW5kaWYKLQogI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKIAog
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFB
cnJheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCmluZGV4IDUyNTEwOGZjYTVlZThhODQz
MTRhNmQxMDVhZjRhNmQxMzU0MjRlN2YuLmY1YzUxZjlhYmZhYTdjNzU3NTAyYzJhY2U4MDgzOWNk
NmViMjc5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQpAQCAtMzQsMTIgKzM0LDE2
IEBACiAjaW1wb3J0ICJGcmFtZVRyZWUuaCIKICNpbXBvcnQgIk1haW5GcmFtZS5oIgogCisjaWYg
UExBVEZPUk0oSU9TKQorI2ltcG9ydCAiV2ViQ29yZVRocmVhZC5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewotI2lm
IFVTRShDRk5FVFdPUkspCi0gICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRl
KFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBnZXRDRlJ1bkxvb3BdLCBrQ0ZSdW5Mb29wQ29t
bW9uTW9kZXMpKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVk
dWxlUGFpcjo6Y3JlYXRlKFdlYlRocmVhZE5TUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9k
ZXMpKTsKICNlbHNlCiAgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFtO
U1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpKTsKICNlbmRp
ZgpAQCAtNTEsMTQgKzU1LDEyIEBAIHZvaWQgUGFnZTo6YWRkU2NoZWR1bGVQYWlyKFJlZjxTY2hl
ZHVsZVBhaXI+JiYgcGFpcikKICAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNjaGVkdWxlUGFpckhhc2hTZXQ+KCk7CiAgICAgbV9zY2hlZHVsZWRSdW5M
b29wUGFpcnMtPmFkZChwYWlyLnB0cigpKTsKIAotI2lmICFQTEFURk9STShJT1MpCiAgICAgZm9y
IChGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRv
Y3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCiAgICAgICAg
ICAgICBkb2N1bWVudExvYWRlci0+c2NoZWR1bGUocGFpcik7CiAgICAgICAgIGlmIChEb2N1bWVu
dExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlcigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNjaGVkdWxlKHBhaXIp
OwogICAgIH0KLSNlbmRpZgogCiAgICAgLy8gRklYTUU6IG1ha2UgU2hhcmVkVGltZXJNYWMgdXNl
IHRoZXNlIFNjaGVkdWxlUGFpcnMuCiB9CkBAIC03MSwxNCArNzMsMTIgQEAgdm9pZCBQYWdlOjpy
ZW1vdmVTY2hlZHVsZVBhaXIoUmVmPFNjaGVkdWxlUGFpcj4mJiBwYWlyKQogCiAgICAgbV9zY2hl
ZHVsZWRSdW5Mb29wUGFpcnMtPnJlbW92ZShwYWlyLnB0cigpKTsKIAotI2lmICFQTEFURk9STShJ
T1MpCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoRG9jdW1l
bnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+dW5zY2hlZHVsZShwYWlyKTsKICAgICAg
ICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5w
cm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+
dW5zY2hlZHVsZShwYWlyKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDk4MGU0MzFmNmQyYzE0NmY1YmMxMWI5NzJlYzY5ZjYw
MzU3YzhiNTguLjBhYTE4ZmQxYjVjZmI5NzA0ZGNhZDI1NDc2YzYxZmE5NmU1OTU0MTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtOTksMTAgKzk5LDYgQEAKICNpbXBvcnQgPFZpZGVvVG9v
bGJveC9WaWRlb1Rvb2xib3guaD4KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbmNs
dWRlICJDRk5TVVJMQ29ubmVjdGlvblNQSS5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9STShJT1Mp
CiAjaW5jbHVkZSA8T3BlbkdMRVMvRVMzL2dsZXh0Lmg+CiAjZW5kaWYKQEAgLTQyMSw1OCArNDE3
LDYgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUHVsbERlbGVnYXRlUXVldWUoKQog
fQogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotY2xhc3MgV2ViQ29yZU5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3JlTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudD4sIHB1YmxpYyBBdXRoZW50aWNhdGlvbkNsaWVu
dCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUNsaWVudD4gY3JlYXRlKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNo
YWxsZW5nZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29yZU5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQoY2hhbGxlbmdlKSk7Ci0gICAgfQotCi0gICAg
dXNpbmcgUmVmQ291bnRlZDxXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVu
dD46OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQ2xpZW50Pjo6ZGVyZWY7Ci0KLXByaXZhdGU6Ci0gICAgV2ViQ29yZU5TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
Y2hhbGxlbmdlKQotICAgICAgICA6IG1fY2hhbGxlbmdlKGNoYWxsZW5nZSkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX2NoYWxsZW5nZSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlZkF1
dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBkZXJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSB1c2VDcmVkZW50aWFsOmNyZWRlbnRpYWwubnND
cmVkZW50aWFsKCkgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCld
OwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0
aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIGNvbnRpbnVlV2l0aG91dENyZWRl
bnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAg
fQotCi0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFtbbV9jaGFsbGVuZ2Ug
c2VuZGVyXSBjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07
Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1
bHRIYW5kbGluZyhjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBpZiAoW1ttX2NoYWxsZW5nZSBzZW5kZXJdIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IocGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OildKQotICAgICAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIHBlcmZvcm1EZWZhdWx0SGFu
ZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAg
fQotCi0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChbW21f
Y2hhbGxlbmdlIHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZWplY3RQcm90
ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6KV0pCi0gICAgICAgICAgICBbW21f
Y2hhbGxlbmdlIHNlbmRlcl0gcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hh
bGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gbV9jaGFsbGVuZ2U7Ci19OwotI2VuZGlmCi0KIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShN
ZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkp
CkBAIC0xNzg4LDEzICsxNzMyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKIAogYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yUmVzcG9uc2VU
b0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIG5z
Q2hhbGxlbmdlKQogewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgUmVmUHRyPFdlYkNvcmVOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50PiBjbGllbnQgPSBXZWJDb3JlTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDo6Y3JlYXRlKG5zQ2hhbGxlbmdlKTsKLSAgICBSZXRh
aW5QdHI8Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmPiBjZkNoYWxsZW5nZSA9IGFkb3B0Q0YoW25zQ2hh
bGxlbmdlIF9jcmVhdGVDRkF1dGhDaGFsbGVuZ2VdKTsKLSAgICBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSBjaGFsbGVuZ2UoY2ZDaGFsbGVuZ2UuZ2V0KCksIGNsaWVudC5nZXQoKSk7Ci0jZWxzZQog
ICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZShuc0NoYWxsZW5nZSk7Ci0jZW5k
aWYKIAogICAgIHJldHVybiBwbGF5ZXIoKS0+c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQppbmRleCA0ZTMw
MzY2ZDRlYjdmYWIxODhkZTRjYWU5MGY5ZDU1MTFmOTA2ZGFiLi4wOWQ1OWM3MTI4MDgzMWQ1ZTc0
NTU4MDI1ZDc0NGRhMzgzMjUwOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQpAQCAtNTEsMTMgKzUxLDYg
QEAgV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrQ0ZVUkxSZXF1ZXN0QWxsb3dBbGxQb3N0Q2FjaGlu
ZykoQ0ZVUkxSZXF1ZXN0UmVmKTsKIFdFQkNPUkVfRVhQT1JUIENGQXJyYXlSZWYgKCp3a0NvcHlO
U1VSTFJlc3BvbnNlQ2VydGlmaWNhdGVDaGFpbikoTlNVUkxSZXNwb25zZSopOwogV0VCQ09SRV9F
WFBPUlQgQ0ZTdHJpbmdFbmNvZGluZyAoKndrR2V0V2ViRGVmYXVsdENGU3RyaW5nRW5jb2Rpbmcp
KHZvaWQpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLVdFQkNPUkVfRVhQT1JUIENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWYgKCp3a0dldERlZmF1bHRIVFRQQ29va2llU3RvcmFnZSkoKTsKLVdFQkNPUkVf
RVhQT1JUIFdLQ0ZVUkxDcmVkZW50aWFsUmVmICgqd2tDb3B5Q3JlZGVudGlhbEZyb21DRlBlcnNp
c3RlbnRTdG9yYWdlKShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2UpOwot
V0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q0ZVUkxSZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZm
KShDRk11dGFibGVVUkxSZXF1ZXN0UmVmLCBib29sKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3
a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbikoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiwgQ0ZNdXRh
YmxlVVJMUmVxdWVzdFJlZik7Ci0jZW5kaWYKLQogV0VCQ09SRV9FWFBPUlQgQ0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZiAoKndrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKShDRlN0cmluZ1JlZik7
CiBXRUJDT1JFX0VYUE9SVCBOU1VSTFJlcXVlc3QqICgqd2tDb3B5UmVxdWVzdFdpdGhTdG9yYWdl
U2Vzc2lvbikoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiwgTlNVUkxSZXF1ZXN0Kik7CiBXRUJDT1JF
X0VYUE9SVCBDRkhUVFBDb29raWVTdG9yYWdlUmVmICgqd2tDb3B5SFRUUENvb2tpZVN0b3JhZ2Up
KENGVVJMU3RvcmFnZVNlc3Npb25SZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3Mvd2FrL1dlYkNvcmVUaHJlYWQuaAppbmRleCBlZmI4ZDdhNDg2MGQwMDNmZjNkN2EwZTNhMWFh
ZDM3MjJkN2ZjOGVmLi42Mzc3YjhlNWRkZmU4ZDk4ZTFiZDBlYjEyMzczMTUxNzk0YmQ0MGFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQuaApA
QCAtODEsNyArODEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgV2ViVGhyZWFkU2hvdWxkWWllbGQo
dm9pZCkgeyByZXR1cm4gd2ViVGhyZWFkU2hvdWxkWWllbGQ7IH0KIHN0YXRpYyBpbmxpbmUgdm9p
ZCBXZWJUaHJlYWRTZXRTaG91bGRZaWVsZCgpIHsgd2ViVGhyZWFkU2hvdWxkWWllbGQgPSB0cnVl
OyB9CiAKIFdFQkNPUkVfRVhQT1JUIENGUnVuTG9vcFJlZiBXZWJUaHJlYWRSdW5Mb29wKHZvaWQp
OwotTlNSdW5Mb29wKiBXZWJUaHJlYWROU1J1bkxvb3Aodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBO
U1J1bkxvb3AqIFdlYlRocmVhZE5TUnVuTG9vcCh2b2lkKTsKIFdlYlRocmVhZENvbnRleHQgKldl
YlRocmVhZEN1cnJlbnRDb250ZXh0KHZvaWQpOwogYm9vbCBXZWJUaHJlYWRDb250ZXh0SXNDdXJy
ZW50KHZvaWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UuaAppbmRleCA2MGI0ODkwNTczYWQ2YTg1ZDNiMGEzNzNjYzhjYTI1
ZmYzOWYwMjExLi5iNjU2NjEzMDdkMDYyYmQwYTk3Y2QxN2QxZGJhOGExMmY3ZGRlODU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLmgKQEAgLTI1NiwxMiArMjU2LDYgQEAgZXh0ZXJuIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0dl
dENGVVJMUmVzcG9uc2VIVFRQUmVzcG9uc2UpKENGVVJMUmVzcG9uc2VSZWYpOwogZXh0ZXJuIENG
U3RyaW5nUmVmICgqd2tDb3B5Q0ZVUkxSZXNwb25zZVN1Z2dlc3RlZEZpbGVuYW1lKShDRlVSTFJl
c3BvbnNlUmVmKTsKIGV4dGVybiB2b2lkICgqd2tTZXRDRlVSTFJlc3BvbnNlTUlNRVR5cGUpKENG
VVJMUmVzcG9uc2VSZWYsIENGU3RyaW5nUmVmIG1pbWVUeXBlKTsKIAotI2lmIFVTRShDRk5FVFdP
UkspCi1leHRlcm4gQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiAoKndrR2V0RGVmYXVsdEhUVFBDb29r
aWVTdG9yYWdlKSgpOwotZXh0ZXJuIFdLQ0ZVUkxDcmVkZW50aWFsUmVmICgqd2tDb3B5Q3JlZGVu
dGlhbEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90
ZWN0aW9uU3BhY2UpOwotZXh0ZXJuIHZvaWQgKCp3a1NldENGVVJMUmVxdWVzdFNob3VsZENvbnRl
bnRTbmlmZikoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiwgYm9vbCk7Ci1leHRlcm4gdm9pZCAoKndr
U2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBDRk11dGFi
bGVVUkxSZXF1ZXN0UmVmKTsKLSNlbmRpZgogI2lmICFQTEFURk9STShJT1MpCiBleHRlcm4gdm9p
ZCAoKndrU2V0TWV0YWRhdGFVUkwpKE5TU3RyaW5nICp1cmxTdHJpbmcsIE5TU3RyaW5nICpyZWZl
cnJlciwgTlNTdHJpbmcgKnBhdGgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDE4OGY0MTI4MTIz
YTk2MDhhZGJmZmNjYmY2OWI4ZGFmMzAwMWNiYzcuLjAzMzkwY2U2OWM1YmZjZWYzYWI1MWU2YTE5
NjM3NDUwNmViYWVhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC04OCwxMyArODgsNiBAQCB2b2lkICgqd2tT
ZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJv
eHlIb3N0LCBDRk51bQogdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0
cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJp
bmcpOwogQ0ZIVFRQTWVzc2FnZVJlZiAoKndrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJl
YWRTdHJlYW1SZWYsIENGVVJMUmVmIHJlc3BvbnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3Qs
IENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiAoKndrR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKSgpOwotV0tDRlVS
TENyZWRlbnRpYWxSZWYgKCp3a0NvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2Up
KENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSk7Ci12b2lkICgqd2tTZXRD
RlVSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYpKENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIGJv
b2wpOwotdm9pZCAoKndrU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNz
aW9uUmVmLCBDRk11dGFibGVVUkxSZXF1ZXN0UmVmKTsKLSNlbmRpZgotCiB2b2lkKiB3a0dldEh5
cGhlbmF0aW9uTG9jYXRpb25CZWZvcmVJbmRleDsKIAogYm9vbCAoKndrRXhlY3V0YWJsZVdhc0xp
bmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZCkodm9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcAppbmRleCA5M2M0
ZGRiYTQ4ZjlmZGIzNzFiOTVjYzI5NzBkYWM4Y2U4NTliYzM4Li4wMTI2ZGM3OTQ4MzFmNGFmZjZj
YWMxMjljMDJlOThjZWVlYzlkMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAK
IAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykgJiYg
IVBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25DRi5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFByb3RlY3Rpb25TcGFjZVByaXYu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggNTNlMjRjZDFlYWJmNzBiOGExZWMx
ZGI0YjY3ZjgzYzU4Yjk4MGM3MC4uMDkyMzkyZWUyNDc0Zjk0MTk2N2IxOTc5ZjRiNzJlZWU2NWEz
ZjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuaApAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2b2lkIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxDb25u
ZWN0aW9uICpjb25uZWN0aW9uKCkgY29uc3Q7CiAgICAgaWQgbWFrZURlbGVnYXRlKGJvb2wpOwpA
QCAtMjE2LDcgKzIxNiw3IEBAIHB1YmxpYzoKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29udGludWVXaWxsQ2FjaGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmKTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykK
KyNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2ls
bENhY2hlUmVzcG9uc2UoTlNDYWNoZWRVUkxSZXNwb25zZSAqKTsKICNlbmRpZgogCkBAIC0yMzYs
MTAgKzIzNiw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ0ZTdHJpbmdS
ZWYgc3luY2hyb25vdXNMb2FkUnVuTG9vcE1vZGUoKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
SU9TKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAgIHN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVm
IGNyZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwotI2VuZGlmCi0KICAgICB0eXBlZGVmIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+ICgq
QnVpbHRpbkNvbnN0cnVjdG9yKShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291
cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQnVpbHRp
bkNvbnN0cnVjdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvdG9jb2wsIEJ1aWx0aW5Db25zdHJ1
Y3Rvcik7CiAKQEAgLTI3NiwxMSArMjcyLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVD
RlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91
bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvciwgQ0ZEaWN0aW9uYXJ5UmVmIGNsaWVu
dFByb3BlcnRpZXMpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQ0ZORVRX
T1JLKQorI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGNyZWF0ZU5TVVJMQ29ubmVjdGlvbihp
ZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRD
b250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvcik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KElPUykgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQgY3Jl
YXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1bGluZ0JlaGF2aW9yLCBOU0Rp
Y3Rpb25hcnkgKmNvbm5lY3Rpb25Qcm9wZXJ0aWVzKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
CmluZGV4IDYxMjNmMTRhY2EyNDg0YmU0MmE2ZGYxMDBhZjNhYWMzMTliZDJkOWYuLjdhZTczY2Y3
MWRjMTE1ZjQwMWYyMDBiM2M0ODFmODg0OTc5YzczOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC0x
MzYsMTEgKzEzNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVzb3VyY2VSZXF1
ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZTsKICNlbmRpZgotI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAgICAgUmV0YWluUHRyPE5TVVJMQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgICAgICBS
ZXRhaW5QdHI8aWQ+IG1fZGVsZWdhdGU7Ci0jZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAgICAgYm9vbCBtX3N0YXJ0V2hlblNjaGVkdWxlZDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoQ0ZORVRXT1JLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAKaW5kZXggNzg4M2U0NjkxMTVkZTMy
Nzk0YzFiMmE0N2RiYjUwMzA4ZTEwOGVjOS4uZjg3NDVkNTQzYTkwOGM4MzMyY2E4YWYyZjlhMjE2
ZTk5NjllZGJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9BdXRoZW50aWNhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCkBAIC01MywxMyArNTMsOCBAQCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNw
YWNlJiBwcm90ZWN0aQogCiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNmQ2hhbGxlbmdlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50
KiBhdXRoZW50aWNhdGlvbkNsaWVudCkKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICA6IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShQcm90ZWN0aW9uU3BhY2UoQ0ZVUkxBdXRoQ2hhbGxlbmdl
R2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ3JlZGVudGlhbChDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRl
bnRpYWwoY2ZDaGFsbGVuZ2UpKSwKLSNlbHNlCiAgICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUJhc2UoY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2ZDaGFsbGVu
Z2UpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlKENGVVJMQXV0aENo
YWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbChjZkNoYWxsZW5nZSkpLAotI2VuZGlmCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJldmlv
dXNGYWlsdXJlQ291bnQoY2ZDaGFsbGVuZ2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChDRlVSTFJlc3BvbnNlUmVmKUNGVVJMQXV0aENoYWxsZW5nZUdldEZhaWx1cmVSZXNw
b25zZShjZkNoYWxsZW5nZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZV
UkxBdXRoQ2hhbGxlbmdlR2V0RXJyb3IoY2ZDaGFsbGVuZ2UpKQpAQCAtOTMsMTQgKzg4LDEwIEBA
IENGVVJMQXV0aENoYWxsZW5nZVJlZiBjcmVhdGVDRihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYgY29yZUNoYWxsZW5nZSkKIHsKICAgICAvLyBGSVhNRTogV2h5IG5vdCBjYWNoZSBDRlVS
TEF1dGhDaGFsbGVuZ2VSZWYgaW4gbV9jZkNoYWxsZW5nZT8gRm91bmRhdGlvbiBjb3VudGVycGFy
dCBkb2VzIHRoYXQuCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBDRlVSTEF1dGhDaGFsbGVu
Z2VSZWYgcmVzdWx0ID0gQ0ZVUkxBdXRoQ2hhbGxlbmdlQ3JlYXRlKDAsIGNvcmVDaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlKCkuY2ZTcGFjZSgpLCBjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVu
dGlhbCgpLmNmQ3JlZGVudGlhbCgpLAotI2Vsc2UKICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50
aWFsUmVmPiBjcmVkZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3Bv
c2VkQ3JlZGVudGlhbCgpKSk7CiAgICAgUmV0YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNlUmVm
PiBwcm90ZWN0aW9uU3BhY2UgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvdGVj
dGlvblNwYWNlKCkpKTsKIAogICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiByZXN1bHQgPSBDRlVS
TEF1dGhDaGFsbGVuZ2VDcmVhdGUoMCwgcHJvdGVjdGlvblNwYWNlLmdldCgpLCBjcmVkZW50aWFs
LmdldCgpLAotI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29yZUNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvcmVDaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuY2ZV
UkxSZXNwb25zZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
cmVDaGFsbGVuZ2UuZXJyb3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCmluZGV4IDk0N2ZiM2JmOWJlMjZmYjI3ZGI2
OTA0ZjBjZWRkM2U5ZTg3M2Q0MTguLmRhNGEwNjRmNzVhMDc3NmVjZDM1ZmQ2NmVmOGI4MDY1MWE1
MDUwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29v
a2llSmFyQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
Q29va2llSmFyQ0ZOZXQuY3BwCkBAIC00Miw3ICs0Miw3IEBACiAjaW5jbHVkZSA8d2luZG93cy5o
PgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXSU4pIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gMTA5MCkKKyNpZiBQTEFURk9STShXSU4pCiBl
bnVtIHsKICAgICBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9t
TWFpbkRvY3VtZW50RG9tYWluID0gMwogfTsKQEAgLTEwNSwxMyArMTA1LDkgQEAgc3RhdGljIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBjb3B5Q29va2llc0ZvclVSTFdpdGhGaXJzdFBhcnR5VVJMKGNv
bnN0IE5ldHdvcmtTdG8KIHsKICAgICBib29sIHNlY3VyZSA9IHVybC5wcm90b2NvbElzKCJodHRw
cyIpOwogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMCkKLSAgICByZXR1cm4gYWRvcHRDRihfQ0ZI
VFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9yVVJMV2l0aE1haW5Eb2N1bWVudFVSTChzZXNz
aW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsLmNyZWF0ZUNGVVJMKCkuZ2V0KCksIGZpcnN0
UGFydHkuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgc2VjdXJlKSk7Ci0jZWxzZQogICAgIC8vIF9DRkhU
VFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkxXaXRoTWFpbkRvY3VtZW50VVJMIGlzIG5v
dCBhdmFpbGFibGUgb24gb3RoZXIgcGxhdGZvcm1zLgogICAgIFVOVVNFRF9QQVJBTShmaXJzdFBh
cnR5KTsKICAgICByZXR1cm4gYWRvcHRDRihDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNG
b3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHVybC5jcmVhdGVDRlVSTCgpLmdl
dCgpLCBzZWN1cmUpKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgQ0ZBcnJheVJlZiBjcmVhdGVDb29r
aWVzKENGRGljdGlvbmFyeVJlZiBoZWFkZXJGaWVsZHMsIENGVVJMUmVmIHVybCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VD
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxT
dG9yYWdlQ0ZOZXQuY3BwCmluZGV4IDU2MDkyNTk3YWFjY2QyNzczZjY5OGIzNWJkNGZjNzE1ODcy
YzQwZTQuLjY5ZTMzMmMxM2IxNzBiYmIyOTkzZWE0YzFkNTc1ODg3YmU2ZWY1NTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VD
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50
aWFsU3RvcmFnZUNGTmV0LmNwcApAQCAtMzMsNDIgKzMzLDE4IEBACiAjaW5jbHVkZSAiUHJvdGVj
dGlvblNwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgUExBVEZPUk0o
Q09DT0EpCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2VsaWYgUExBVEZP
Uk0oV0lOKQorI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykK
LSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZS5oPgotI2VuZGlmCi0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ3JlZGVudGlhbCBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0
RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNw
YWNlKQogewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRp
YWxSZWY+IGNyZWRlbnRpYWxDRiA9IGFkb3B0Q0Yod2tDb3B5Q3JlZGVudGlhbEZyb21DRlBlcnNp
c3RlbnRTdG9yYWdlKHByb3RlY3Rpb25TcGFjZS5jZlNwYWNlKCkpKTsKLSAgICByZXR1cm4gQ3Jl
ZGVudGlhbChjcmVkZW50aWFsQ0YuZ2V0KCkpOwotI2Vsc2UKICAgICBSZXRhaW5QdHI8Q0ZVUkxQ
cm90ZWN0aW9uU3BhY2VSZWY+IHByb3RlY3Rpb25TcGFjZUNGID0gYWRvcHRDRihjcmVhdGVDRihw
cm90ZWN0aW9uU3BhY2UpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVk
ZW50aWFsQ0YgPSBhZG9wdENGKHdrQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFn
ZShwcm90ZWN0aW9uU3BhY2VDRi5nZXQoKSkpOwogICAgIHJldHVybiBjb3JlKGNyZWRlbnRpYWxD
Ri5nZXQoKSk7Ci0jZW5kaWYKLX0KLQotI2lmIFBMQVRGT1JNKElPUykKLXZvaWQgQ3JlZGVudGlh
bFN0b3JhZ2U6OnNhdmVUb1BlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYg
cHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQotewotICAgIFJl
dGFpblB0cjxDRlVSTENyZWRlbnRpYWxTdG9yYWdlUmVmPiBzdG9yYWdlQ0YgPSBhZG9wdENGKENG
VVJMQ3JlZGVudGlhbFN0b3JhZ2VDcmVhdGUoMCkpOwotCi0gICAgaWYgKGNyZWRlbnRpYWwucGVy
c2lzdGVuY2UoKSA9PSBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSB7Ci0gICAgICAgIENyZWRl
bnRpYWwgc2Vzc2lvbkNyZWRlbnRpYWwoY3JlZGVudGlhbCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNl
Rm9yU2Vzc2lvbik7Ci0gICAgICAgIENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VTZXREZWZhdWx0Q3Jl
ZGVudGlhbEZvclByb3RlY3Rpb25TcGFjZShzdG9yYWdlQ0YuZ2V0KCksIHNlc3Npb25DcmVkZW50
aWFsLmNmQ3JlZGVudGlhbCgpLCBwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKTsKLSAgICB9IGVs
c2UKLSAgICAgICAgQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9y
UHJvdGVjdGlvblNwYWNlKHN0b3JhZ2VDRi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwo
KSwgcHJvdGVjdGlvblNwYWNlLmNmU3BhY2UoKSk7CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VFcnJvci5oCmluZGV4IDE3MDNjYzkxZjY4YjJhNWU2NGY4NzkyM2NlNmZiYTFkMjdk
ZDI0MWQuLjFiNGFkNzMwNjZjNzcxOGEwY2E1MTQ1MDBlZWQ0ZjdjNGQ5MTQ0ODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCkBA
IC02MSwxNiArNjEsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIENGRXJyb3JSZWYg
Y2ZFcnJvcigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIENGRXJyb3JSZWYo
KSBjb25zdDsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaWYgUExBVEZPUk0oV0lOKQorI2lmIFVT
RShDRk5FVFdPUkspICYmIFBMQVRGT1JNKFdJTikKICAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0
cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNv
bnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24sIENGRGF0YVJlZiBjZXJ0aWZpY2F0ZSk7
CiAgICAgUENDRVJUX0NPTlRFWFQgY2VydGlmaWNhdGUoKSBjb25zdDsKICAgICB2b2lkIHNldENl
cnRpZmljYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUVycm9yKENGU3RyZWFt
RXJyb3IgZXJyb3IpOwotICAgIENGU3RyZWFtRXJyb3IgY2ZTdHJlYW1FcnJvcigpIGNvbnN0Owot
ICAgIG9wZXJhdG9yIENGU3RyZWFtRXJyb3IoKSBjb25zdDsKLSNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvcihOU0Vycm9yICopOwpA
QCAtODgsOSArODMsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kYXRhSXNVcFRvRGF0ZTsKICNp
ZiBVU0UoQ0ZORVRXT1JLKQogICAgIG11dGFibGUgUmV0YWluUHRyPENGRXJyb3JSZWY+IG1fcGxh
dGZvcm1FcnJvcjsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtdXRhYmxlIFJldGFpblB0cjxO
U0Vycm9yPiBtX3BsYXRmb3JtTlNFcnJvcjsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikKICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX2NlcnRpZmljYXRlOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAK
aW5kZXggMTMxZmJiMDQ2MTE3MDZmNjRkODUwYTFjNTBlMDVlMTRhMmM2ZTEzMy4uYTQ3Yjg5ODJk
NTZlY2U0NjNmNDVjZWQwZTk0MGZhNDY2MjNiYjJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMTc3LDUy
ICsxNzcsNiBAQCBSZXNvdXJjZUVycm9yOjpvcGVyYXRvciBDRkVycm9yUmVmKCkgY29uc3QKICAg
ICByZXR1cm4gY2ZFcnJvcigpOwogfQogCi0vLyBGSVhNRTogT25jZSA8cmRhcjovL3Byb2JsZW0v
NTA1MDg0MT4gaXMgZml4ZWQgd2UgY2FuIHJlbW92ZSB0aGlzIGNvbnN0cnVjdG9yLgotUmVzb3Vy
Y2VFcnJvcjo6UmVzb3VyY2VFcnJvcihDRlN0cmVhbUVycm9yIGVycm9yKQotICAgIDogbV9kYXRh
SXNVcFRvRGF0ZSh0cnVlKQotewotICAgIG1faXNOdWxsID0gZmFsc2U7Ci0gICAgbV9lcnJvckNv
ZGUgPSBlcnJvci5lcnJvcjsKLQotICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKLSAgICBjYXNl
IGtDRlN0cmVhbUVycm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9t
RXJyb3JEb21haW4iOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluUE9TSVg6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiI7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5NYWNPU1N0YXR1czoKLSAg
ICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotfQotCi1DRlN0cmVhbUVycm9yIFJlc291cmNlRXJyb3I6OmNmU3RyZWFtRXJyb3Io
KSBjb25zdAotewotICAgIGxhenlJbml0KCk7Ci0KLSAgICBDRlN0cmVhbUVycm9yIHJlc3VsdDsK
LSAgICByZXN1bHQuZXJyb3IgPSBtX2Vycm9yQ29kZTsKLQotICAgIGlmIChtX2RvbWFpbiA9PSAi
TlNDdXN0b21FcnJvckRvbWFpbiIpCi0gICAgICAgIHJlc3VsdC5kb21haW4gPSBrQ0ZTdHJlYW1F
cnJvckRvbWFpbkN1c3RvbTsKLSAgICBlbHNlIGlmIChtX2RvbWFpbiA9PSAiTlNQT1NJWEVycm9y
RG9tYWluIikKLSAgICAgICAgcmVzdWx0LmRvbWFpbiA9IGtDRlN0cmVhbUVycm9yRG9tYWluUE9T
SVg7Ci0gICAgZWxzZSBpZiAobV9kb21haW4gPT0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiIpCi0g
ICAgICAgIHJlc3VsdC5kb21haW4gPSBrQ0ZTdHJlYW1FcnJvckRvbWFpbk1hY09TU3RhdHVzOwot
ICAgIGVsc2UgewotICAgICAgICByZXN1bHQuZG9tYWluID0ga0NGU3RyZWFtRXJyb3JEb21haW5D
dXN0b207Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLVJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENGU3RyZWFtRXJyb3IoKSBj
b25zdAotewotICAgIHJldHVybiBjZlN0cmVhbUVycm9yKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApp
bmRleCA1YzE0MjA3ZDQxYWEzNmY3OTBiZWVjN2MzM2Y0N2JmMmE3YzdkMjUxLi41ZGYxZDAwZDYz
ZWRlOWNjMmEyNDJmMWQyYTQyNzU0Nzc3MmNkNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAg
LTUzLDE2ICs1Myw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oIgot
I2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
I2luY2x1ZGUgIldlYkNvcmVVUkxSZXNwb25zZS5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRlVS
TENvbm5lY3Rpb25Qcml2Lmg+Ci0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdFByaXYu
aD4KLSNlbmRpZgotI2VuZGlmCi0KICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2ViS2l0
U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2luY2x1ZGUgPHByb2Nl
c3MuaD4KQEAgLTIxOSwxNCArMjA5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZV
UkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wKICAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShwcm9wZXJ0aWVzRGljdGlvbmFyeS5nZXQoKSwga0NGVVJMQ29u
bmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMsIHN0cmVhbVByb3BlcnRpZXMpOwogICAgIENG
UmVsZWFzZShzdHJlYW1Qcm9wZXJ0aWVzKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlm
IChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcykKLSAgICAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdh
dGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZSh0aGlzKSk7Ci0gICAgZWxzZQotICAgICAgICBkLT5tX2Nvbm5lY3Rp
b25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUodGhpcykpOwotI2Vsc2UKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxl
Z2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGUodGhpcykpOwotI2VuZGlmCiAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUt
PnNldHVwUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAogICAgIENGVVJMQ29ubmVjdGlvbkNsaWVu
dF9WNiBjbGllbnQgPSBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+bWFrZUNvbm5lY3Rpb25DbGll
bnQoKTsKQEAgLTM2OCwxMiArMzUxLDkgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxl
UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2gKIAogICAg
IGlmICghZC0+bV91c2VyLmlzTnVsbCgpICYmICFkLT5tX3Bhc3MuaXNOdWxsKCkpIHsKICAgICAg
ICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihD
RlVSTENyZWRlbnRpYWxDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZC0+bV91c2VyLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGQtPm1fcGFzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwLCBr
Q0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IENyZWRlbnRpYWwoY2ZDcmVkZW50aWFsLmdl
dCgpKTsKLSNlbHNlCisKICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gY29yZShjZkNy
ZWRlbnRpYWwuZ2V0KCkpOwotI2VuZGlmCi0gICAgICAgIAorCiAgICAgICAgIFVSTCB1cmxUb1N0
b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXND
b2RlKCkgPT0gNDAxKQogICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGNoYWxsZW5nZS5mYWlsdXJl
UmVzcG9uc2UoKS51cmwoKTsKQEAgLTQwMiwxMiArMzgyLDggQEAgYm9vbCBSZXNvdXJjZUhhbmRs
ZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2gKICAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGNyZWRlbnRpYWwgYmFjaywg
cG9zc2libHkgYWRkaW5nIGl0IGFzIGEgZGVmYXVsdCBmb3IgdGhpcyBkaXJlY3RvcnkuCiAgICAg
ICAgICAgICAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFs
U3RvcmFnZSgpLnNldChjcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIGNo
YWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKSk7CiAgICAgICAgICAgICAgICAgfQotI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgICAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRl
bnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBj
aGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2Vsc2UKICAgICAgICAgICAgICAg
ICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNy
ZWF0ZUNGKGNyZWRlbnRpYWwpKTsKICAgICAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VD
cmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFs
bGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2VuZGlmCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ1NywyMCArNDMzLDEy
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlCiAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFn
ZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLnNldCh3ZWJDcmVkZW50aWFsLCBjaGFsbGVu
Z2UucHJvdGVjdGlvblNwYWNlKCksIHVybFRvU3RvcmUpOwogCiAgICAgICAgIGlmIChkLT5tX2Nv
bm5lY3Rpb24pIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgIENGVVJMQ29ubmVj
dGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCB3ZWJDcmVkZW50aWFsLmNm
Q3JlZGVudGlhbCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2Vsc2UK
ICAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9
IGFkb3B0Q0YoY3JlYXRlQ0Yod2ViQ3JlZGVudGlhbCkpOwogICAgICAgICAgICAgQ0ZVUkxDb25u
ZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5n
ZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRpZgogICAgICAg
ICB9CiAgICAgfSBlbHNlIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKLSNpZiBQTEFURk9STShDT0NP
QSkKLSAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24u
Z2V0KCksIGNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFs
bGVuZ2VSZWYoKSk7Ci0jZWxzZQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVm
PiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKICAgICAgICAg
Q0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3Jl
ZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRp
ZgogICAgIH0KIAogICAgIGNsZWFyQXV0aGVudGljYXRpb24oKTsKQEAgLTYxMSwzMCArNTc5LDYg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVm
ZXJzKQogICAgICAgICBDRlVSTENvbm5lY3Rpb25SZXN1bWUoZC0+bV9jb25uZWN0aW9uLmdldCgp
KTsKIH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2NoZWR1
bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQotewotICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gcGFp
ci5ydW5Mb29wKCk7Ci0gICAgaWYgKCFydW5Mb29wKQotICAgICAgICByZXR1cm47Ci0KLSAgICBD
RlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29wKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwg
cnVuTG9vcCwgcGFpci5tb2RlKCkpOwotICAgIGlmIChkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCkg
ewotICAgICAgICBDRlVSTENvbm5lY3Rpb25TdGFydChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOwot
ICAgICAgICBkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCA9IGZhbHNlOwotICAgIH0KLX0KLQotdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCi17Ci0gICAg
Q0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBwYWlyLnJ1bkxvb3AoKTsKLSAgICBpZiAoIXJ1bkxvb3Ap
Ci0gICAgICAgIHJldHVybjsKLQotICAgIENGVVJMQ29ubmVjdGlvblVuc2NoZWR1bGVGcm9tUnVu
TG9vcChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIHJ1bkxvb3AsIHBhaXIubW9kZSgpKTsKLX0KLSNl
bmRpZgotCiBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIFJlc291cmNlSGFuZGxlOjpjdXJyZW50UmVx
dWVzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGQtPm1fY3VycmVudFJlcXVlc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAppbmRleCA0Zjdh
NzkyOWYxYjExZDg4NGQ4ZDA0NzY4MjExMmFkYjY2ZTliYmQ1Li5hMWUxMzgwOWU0NzhiZWY0ZmVh
ZTczODBkMmFjZGNlYTRkYTExMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogCi0jaWYgUExB
VEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2VuZGlm
Ci0KICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dl
YktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA4YTVlZjA5MDRkM2E2
MjVkMzU2MDdjNmE2NzdlZDZlZWZkOWE2Yzc5Li4xZDBkN2QwMjUyMDMzN2NkMjcwZWRiZGY0MTc4
MjZiNTE4ZjY4OGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTYzLDEyICs2Myw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgfQogICAgICAgICAKICNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZVJlcXVlc3QoTlNVUkxS
ZXF1ZXN0ICopOwotICAgICAgICB2b2lkIHVwZGF0ZU5TVVJMUmVxdWVzdCgpOwotICAgICAgICB2
b2lkIGNsZWFyT3JVcGRhdGVOU1VSTFJlcXVlc3QoKTsKLSNlbmRpZgotCiAgICAgICAgIFJlc291
cmNlUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0KQogICAgICAgICAgICAgOiBSZXNv
dXJjZVJlcXVlc3RCYXNlKCkKICAgICAgICAgICAgICwgbV9jZlJlcXVlc3QoY2ZSZXF1ZXN0KQpA
QCAtODgsMTEgKzgyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGFwcGx5
V2ViQXJjaGl2ZUhhY2tGb3JNYWlsKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotICAgICAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURh
dGEoKSBjb25zdCB7IHJldHVybiBtX2h0dHBCb2R5IHx8IG1fY2ZSZXF1ZXN0OyB9Ci0jZWxzZQog
ICAgICAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVy
biBtX2h0dHBCb2R5IHx8IG1fbnNSZXF1ZXN0OyB9Ci0jZW5kaWYKICAgICAgICAgV0VCQ09SRV9F
WFBPUlQgTlNVUkxSZXF1ZXN0ICpuc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kpIGNv
bnN0OwogCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDRlN0cmluZ1JlZiBpc1VzZXJJ
bml0aWF0ZWRLZXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggYWNjMWQ0NTY5NzVjYzEyZjM5YTMzOGRiYjI0
Mzk0MWU1N2MyNmQxYS4uYjc5ZjdjNDBlZDBjOTRkMWNiZWM5ZTU2ODYzYWM5ZTU2NDFiOTg4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJl
c3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlc3BvbnNlLmgKQEAgLTUzLDkgKzUzLDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9p
c051bGwgPSAhY2ZSZXNwb25zZTsKICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgV0VC
Q09SRV9FWFBPUlQgUmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlICopOwotI2VuZGlmCiAj
ZWxzZQogICAgIFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkKICAg
ICAgICAgOiBtX2luaXRMZXZlbChVbmluaXRpYWxpemVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3Bw
CmluZGV4IDRiYWU3NGU4MzgxNmMxOTRlZGMxNTRkODRjMmRlOGY2ZGQxNmZjOTUuLjFhYTgzN2Zj
NzJiNzgyM2VhN2JkZThjYjkwNjM5OGZlYTc1ZDVhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5j
cHAKQEAgLTMzLDEwICszMyw2IEBACiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVzcG9uc2VQ
cml2Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
Ci0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIENGU3RyaW5nUmVmIGNvbnN0IGNvbW1vbkhlYWRlckZpZWxk
c1tdID0gewpAQCAtNDYsMTMgKzQyLDkgQEAgc3RhdGljIENGU3RyaW5nUmVmIGNvbnN0IGNvbW1v
bkhlYWRlckZpZWxkc1tdID0gewogQ0ZVUkxSZXNwb25zZVJlZiBSZXNvdXJjZVJlc3BvbnNlOjpj
ZlVSTFJlc3BvbnNlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051
bGwpIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgbnNVUkxSZXNwb25zZSgpOwotI2Vs
c2UKICAgICAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBtX3VybC5jcmVhdGVDRlVSTCgp
OwogICAgICAgICAvLyBGSVhNRTogVGhpcyBjcmVhdGVzIGEgdmVyeSBpbmNvbXBsZXRlIENGVVJM
UmVzcG9uc2UsIHdoaWNoIGRvZXMgbm90IGV2ZW4gaGF2ZSBhIHN0YXR1cyBjb2RlLgogICAgICAg
ICBtX2NmUmVzcG9uc2UgPSBhZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJsLmdldCgp
LCBtX21pbWVUeXBlLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXhwZWN0ZWRD
b250ZW50TGVuZ3RoLCBtX3RleHRFbmNvZGluZ05hbWUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOwotI2VuZGlmCiAgICAgfQogCiAg
ICAgcmV0dXJuIG1fY2ZSZXNwb25zZS5nZXQoKTsKQEAgLTExNSw5ICsxMDcsNiBAQCB2b2lkIFJl
c291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoSW5pdExldmVsIGluaXRMZXZlbCkKIAog
Q2VydGlmaWNhdGVJbmZvIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZv
KCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICByZXR1cm4gQ2VydGlmaWNhdGVJ
bmZvKGFkb3B0Q0Yod2tDb3B5TlNVUkxSZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4obnNVUkxSZXNw
b25zZSgpKSkpOwotI2VuZGlmCiAgICAgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRp
YWxDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50
aWFsQ29jb2EuaAppbmRleCBmMmNkOTYzMmMyMGU2NTU3MGRhY2U5YjljMDkxMTA3NzZkNzZlMzE3
Li45NDM0ZDNhN2ExYTUwYjU1ZDU4ZDkwYzZlZGM1MmUyN2Q2MDk1OWY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29h
LmgKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQmFzZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi10eXBlZGVmIGNv
bnN0IHN0cnVjdCBfQ0ZVUkxDcmVkZW50aWFsKiBDRlVSTENyZWRlbnRpYWxSZWY7Ci0jZW5kaWYK
LQogT0JKQ19DTEFTUyBOU1VSTENyZWRlbnRpYWw7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTUyLDE4ICs0OCwxMiBAQCBwdWJsaWM6CiAKICAgICBDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRp
YWwmLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBl
eHBsaWNpdCBDcmVkZW50aWFsKENGVVJMQ3JlZGVudGlhbFJlZik7Ci0jZW5kaWYKICAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBDcmVkZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCiAgICAgYm9vbCBlbmNvZGlu
Z1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9uc0NyZWRlbnRpYWwgJiYg
ZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YShtX25zQ3JlZGVudGlhbC5nZXQoKSk7IH0KIAot
I2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNmQ3JlZGVudGlhbCgp
IGNvbnN0OwotI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxDcmVkZW50aWFsICpuc0Ny
ZWRlbnRpYWwoKSBjb25zdDsKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25z
dCBDcmVkZW50aWFsJiwgY29uc3QgQ3JlZGVudGlhbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbQppbmRleCBk
Njk2MWI2NjUyYTBmYWQyYjFkODZlMTg4NWFmNTI1MTI4OWEyMzcxLi43ZTA1YzQ2M2E1NWFlM2Ni
Mjg5NjU2YmExMzFkOWUyMjQwYzAwNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbQpAQCAtMjYsMTMgKzI2
LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQ3JlZGVudGlhbENvY29hLmgiCiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotQGludGVyZmFjZSBOU1VSTENyZWRlbnRpYWwgKFdlYkRldGFp
bHMpCi0tIChpZClfaW5pdFdpdGhDRlVSTENyZWRlbnRpYWw6KENGVVJMQ3JlZGVudGlhbFJlZilj
cmVkZW50aWFsOwotLSAoQ0ZVUkxDcmVkZW50aWFsUmVmKSBfQ0ZVUkxDcmVkZW50aWFsOwotQGVu
ZAotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE5TVVJMQ3JlZGVudGlh
bFBlcnNpc3RlbmNlIHRvTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UoQ3JlZGVudGlhbFBlcnNp
c3RlbmNlIHBlcnNpc3RlbmNlKQpAQCAtODQsMjYgKzc3LDEyIEBAIENyZWRlbnRpYWw6OkNyZWRl
bnRpYWwoY29uc3QgQ3JlZGVudGlhbCYgb3JpZ2luYWwsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBw
ZXJzaXN0CiAgICAgfQogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNyZWRlbnRpYWw6OkNyZWRl
bnRpYWwoQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWRlbnRpYWwpCi0gICAgOiBDcmVkZW50aWFsKGFk
b3B0TlMoW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIF9pbml0V2l0aENGVVJMQ3JlZGVudGlhbDpj
cmVkZW50aWFsXSkuZ2V0KCkpCi17Ci19Ci0jZW5kaWYKLQogQ3JlZGVudGlhbDo6Q3JlZGVudGlh
bChOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpCiAgICAgOiBDcmVkZW50aWFsQmFzZShjcmVk
ZW50aWFsLnVzZXIsIGNyZWRlbnRpYWwucGFzc3dvcmQsIHRvQ3JlZGVudGlhbFBlcnNpc3RlbmNl
KGNyZWRlbnRpYWwucGVyc2lzdGVuY2UpKQogICAgICwgbV9uc0NyZWRlbnRpYWwoY3JlZGVudGlh
bCkKIHsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi1DRlVSTENyZWRlbnRpYWxSZWYgQ3JlZGVu
dGlhbDo6Y2ZDcmVkZW50aWFsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW25zQ3JlZGVudGlhbCgp
IF9DRlVSTENyZWRlbnRpYWxdOwotfQotI2VuZGlmCi0KIE5TVVJMQ3JlZGVudGlhbCAqQ3JlZGVu
dGlhbDo6bnNDcmVkZW50aWFsKCkgY29uc3QKIHsKICAgICBpZiAobV9uc0NyZWRlbnRpYWwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rp
b25TcGFjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1By
b3RlY3Rpb25TcGFjZUNvY29hLmgKaW5kZXggNzQ4ODJkN2E4OGI3ODMxYjQxNGY5MGRmNzFkMTVk
ODkyNDRlMjE1Mi4uYjg2YWIwM2Q0ZmYzMjM1MzQwM2ZmMDdmYWE4MTgxZTUyOTgwZjdjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9u
U3BhY2VDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UHJvdGVjdGlvblNwYWNlQ29jb2EuaApAQCAtMjksMTAgKzI5LDYgQEAKICNpbmNsdWRlICJQcm90
ZWN0aW9uU3BhY2VCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNF
KENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IF9DRlVSTFByb3RlY3Rpb25TcGFjZSogQ0ZVUkxQ
cm90ZWN0aW9uU3BhY2VSZWY7Ci0jZW5kaWYKLQogT0JKQ19DTEFTUyBOU1VSTFByb3RlY3Rpb25T
cGFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsOSArNDMsNiBAQCBwdWJsaWM6CiAK
ICAgICBQcm90ZWN0aW9uU3BhY2UoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIGRlbGV0
ZWRWYWx1ZSkgOiBQcm90ZWN0aW9uU3BhY2VCYXNlKGRlbGV0ZWRWYWx1ZSkgeyB9CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIGV4cGxpY2l0IFByb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rp
b25TcGFjZVJlZik7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBQcm90ZWN0
aW9uU3BhY2UoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKik7CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0
Zm9ybUNvbXBhcmUoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBhLCBjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmIGIpOwpAQCAtNTgsOSArNTEsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KCkgY29uc3Q7CiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotICAgIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNmU3BhY2UoKSBjb25zdDsKLSNlbmRp
ZgogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUHJvdGVjdGlvblNwYWNlICpuc1NwYWNlKCkgY29u
c3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5tbQppbmRleCBhZjRjNGUwNTc2
OGMwOGY2M2I2ZGEwZGE5OTkzNDc4NWExM2ZiOGEzLi5kYjFmYjUxYmY5OTAyN2JjMmYzNTMwYTVk
NTE4YjBmZjdiNzg2MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0KQEAgLTI2LDIyICsy
Niw4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlByb3RlY3Rpb25TcGFjZUNvY29h
LmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQGludGVyZmFjZSBOU1VSTFByb3RlY3Rpb25TcGFj
ZSAoV2ViRGV0YWlscykKLS0gKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKSBfQ0ZVUkxQcm90ZWN0
aW9uU3BhY2U7Ci0tIChpZClfaW5pdFdpdGhDRlVSTFByb3RlY3Rpb25TcGFjZTooQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VSZWYpY2ZQcm90U3BhY2U7Ci1AZW5kCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLVByb3RlY3Rpb25TcGFjZTo6UHJvdGVjdGlv
blNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHNwYWNlKQotICAgIDogUHJvdGVjdGlvblNw
YWNlKGFkb3B0TlMoW1tOU1VSTFByb3RlY3Rpb25TcGFjZSBhbGxvY10gX2luaXRXaXRoQ0ZVUkxQ
cm90ZWN0aW9uU3BhY2U6c3BhY2VdKS5nZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBzdGF0aWMgUHJv
dGVjdGlvblNwYWNlU2VydmVyVHlwZSB0eXBlKE5TVVJMUHJvdGVjdGlvblNwYWNlICpzcGFjZSkK
IHsKICAgICBpZiAoW3NwYWNlIGlzUHJveHldKSB7CkBAIC0xMDUsMTMgKzkxLDYgQEAgUHJvdGVj
dGlvblNwYWNlOjpQcm90ZWN0aW9uU3BhY2UoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKnNwYWNlKQog
ICAgIG1fbnNTcGFjZSA9IHNwYWNlOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJMUHJv
dGVjdGlvblNwYWNlUmVmIFByb3RlY3Rpb25TcGFjZTo6Y2ZTcGFjZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIFtuc1NwYWNlKCkgX0NGVVJMUHJvdGVjdGlvblNwYWNlXTsKLX0KLSNlbmRpZgotCiBO
U1VSTFByb3RlY3Rpb25TcGFjZSAqUHJvdGVjdGlvblNwYWNlOjpuc1NwYWNlKCkgY29uc3QKIHsK
ICAgICBpZiAobV9uc1NwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggM2IxYjBh
MmY4NzQ3NDdiMzhhMmM4MzgwZmI2NTU5ODZiZGViOWVjYy4uOWY1ZDAyYWI2NWJjOGNhNDMyYzgy
NDI4NGU4YmRjMDFhYjdhMzk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBAIC01Mywx
NSArNTMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBOU1VSTFJlcXVlc3QgKlJlc291cmNlUmVx
dWVzdDo6bnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNvbnN0
CiB7CiAgICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KGJvZHlQb2xpY3kpOwotI2lmIFVTRShDRk5F
VFdPUkspCi0gICAgaWYgKCFtX25zUmVxdWVzdCkKLSAgICAgICAgY29uc3RfY2FzdDxSZXNvdXJj
ZVJlcXVlc3QqPih0aGlzKS0+dXBkYXRlTlNVUkxSZXF1ZXN0KCk7Ci0jZW5kaWYKICAgICByZXR1
cm4gW1ttX25zUmVxdWVzdC5nZXQoKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAotI2lmICFV
U0UoQ0ZORVRXT1JLKQotCiBDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJl
cXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9keVBvbGljeSkgY29uc3QKIHsKICAgICByZXR1
cm4gW25zVVJMUmVxdWVzdChib2R5UG9saWN5KSBfQ0ZVUkxSZXF1ZXN0XTsKQEAgLTIyMiw4ICsy
MTYsNiBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24oQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbikKICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMo
d2tDb3B5UmVxdWVzdFdpdGhTdG9yYWdlU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbiwgbV9uc1JlcXVl
c3QuZ2V0KCkpKTsKIH0KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAppbmRleCAwZDdlODI1ZWYyYjEx
ODg2YjM4ZGJiM2NiOTNlMDAwYjhiZDJlZWU1Li5kMTNmY2ZjZWNlNTYzMzUxNTA5M2QyMTAyMjk0
NzhkMmQ5MzlkNjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9RdWlja0xvb2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2suaApAQCAtNDQsMTEgKzQ0LDYgQEAgT0JKQ19DTEFTUyBOU1VSTFJlcXVlc3Q7
CiBPQkpDX0NMQVNTIE5TVVJMUmVzcG9uc2U7CiBPQkpDX0NMQVNTIFFMUHJldmlld0NvbnZlcnRl
cjsKIAotI2lmIFVTRShDRk5FVFdPUkspCi10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxSZXNwb25zZSog
Q0ZVUkxSZXNwb25zZVJlZjsKLXR5cGVkZWYgc3RydWN0IF9DRlVSTENvbm5lY3Rpb24qIENGVVJM
Q29ubmVjdGlvblJlZjsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFF1
aWNrTG9va0hhbmRsZUNsaWVudDsKQEAgLTgyLDkgKzc3LDYgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3VsZENyZWF0ZUZvck1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0
ZShSZXNvdXJjZUhhbmRsZSosIE5TVVJMQ29ubmVjdGlvbiAqLCBOU1VSTFJlc3BvbnNlICosIGlk
IGRlbGVnYXRlKTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VIYW5kbGUqLCBTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqLCBDRlVSTFJlc3BvbnNlUmVmKTsK
LSNlbmRpZgogICAgIC8vIEZJWE1FOiBVc2Ugb2YgUmVzb3VyY2VMb2FkZXIgaGVyZSBpcyBhIHBs
YXRmb3JtIHZpb2xhdGlvbi4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogCkBAIC05Niw5ICs4OCw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRpZEZhaWwoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVzcG9uc2Ug
Km5zUmVzcG9uc2UoKTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJMUmVzcG9uc2VSZWYg
Y2ZSZXNwb25zZSgpOwotI2VuZGlmCiAKICAgICB2b2lkIHNldENsaWVudChQYXNzUmVmUHRyPFF1
aWNrTG9va0hhbmRsZUNsaWVudD4gY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQppbmRl
eCAxN2VkODY0NmE1OTQ0YTBmMDFlZDU2ODcwOTdkOTdjYWM3MjA4NGY0Li5kZTA0MDRlMjAyNTlj
ZTcxMWY4ODZlNjFkNzlkOGYwNTUzMThiMzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbXBv
cnQgIkZpbGVTeXN0ZW1JT1MuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk5TRmls
ZU1hbmFnZXJTUEkuaCIKLSNpbXBvcnQgIlF1aWNrTG9va1NvZnRMaW5rLmgiCiAjaW1wb3J0ICJS
ZXNvdXJjZUVycm9yLmgiCiAjaW1wb3J0ICJSZXNvdXJjZUhhbmRsZS5oIgogI2ltcG9ydCAiUmVz
b3VyY2VMb2FkZXIuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oIgog
I2ltcG9ydCAiU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LmgiCisjaW1wb3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgiCiAjaW1wb3J0
ICJXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC00NiwxNCArNDYsNyBAQAog
I2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvbi5o
PgotCi1AaW50ZXJmYWNlIE5TVVJMUmVzcG9uc2UgKFF1aWNrTG9va0RldGFpbHMpCi0rKE5TVVJM
UmVzcG9uc2UgKilfcmVzcG9uc2VXaXRoQ0ZVUkxSZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJlZily
ZXNwb25zZTsKLS0oQ0ZVUkxSZXNwb25zZVJlZilfQ0ZVUkxSZXNwb25zZTsKLUBlbmQKLSNlbmRp
ZgorI2ltcG9ydCAiUXVpY2tMb29rU29mdExpbmsuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKQEAgLTE5Miw4MyArMTg1LDcgQEAgY29uc3QgY2hhciogV2ViQ29yZTo6UUxQcmV2aWV3
UHJvdG9jb2woKQogICAgIHJldHVybiBwcmV2aWV3UHJvdG9jb2wuZ2V0KCkuZGF0YSgpOwogfQog
Ci0jaWYgVVNFKENGTkVUV09SSykKLS8vIFRoZSB3YXkgUXVpY2tMb29rIHdvcmtzIGlzIHdlIHBh
c3MgaXQgYW4gTlNVUkxDb25uZWN0aW9uRGVsZWdhdGUgY2FsbGJhY2sgb2JqZWN0IGF0IGNyZWF0
aW9uCi0vLyB0aW1lLiBUaGVuIHdlIHBhc3MgaXQgYWxsIHRoZSBkYXRhIGFzIHdlIHJlY2VpdmUg
aXQuIE9uY2Ugd2UndmUgZG93bmxvYWRlZCB0aGUgZnVsbCBVUkwsCi0vLyBRdWlja0xvb2sgdHVy
bnMgYXJvdW5kIGFuZCBzZW5kIHVzLCB0aHJvdWdoIHRoaXMgZGVsZWdhdGUsIHRoZSBIVE1MIHZl
cnNpb24gb2YgdGhlIGZpbGUgd2hpY2ggd2UKLS8vIHBhc3Mgb24gdG8gV2ViQ29yZS4gVGhlIGZs
YWcgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciBpbiBRdWlja0xvb2tIYW5kbGUg
ZGVjaWRlcwotLy8gd2hldGhlciB0byBwYXNzIHRoZSBkYXRhIHRvIFF1aWNrTG9vayBvciBXZWJD
b3JlLgotLy8KLS8vIFRoaXMgd29ya3MgZmluZSB3aGVuIHVzaW5nIE5TIEFQSXMsIGJ1dCB3aGVu
IHVzaW5nIENGTmV0d29yaywgd2UgZG9uJ3QgaGF2ZSBhIE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LgotLy8gU28gd2UgY3JlYXRlIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgYXMgYW4gaW50
ZXJtZWRpYXRlIGRlbGVnYXRlIG9iamVjdCBhbmQgcGFzcyBpdCB0bwotLy8gUUxQcmV2aWV3Q29u
dmVydGVyLiBUaGUgcHJveHkgZGVsZWdhdGUgdGhlbiBmb3J3YXJkcyB0aGUgbWVzc2FnZXMgb24g
dG8gdGhlIENGTmV0d29yayBjb2RlLgotQGludGVyZmFjZSBXZWJRdWlja0xvb2tIYW5kbGVBc0Rl
bGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiB7Ci0gICAgUmVmUHRy
PFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZT4gbV9jb25u
ZWN0aW9uRGVsZWdhdGU7Ci19Ci0KLS0gKGlkKWluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRlOihT
eW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqKWNvbm5lY3Rp
b25EZWxlZ2F0ZTsKLS0gKHZvaWQpY2xlYXJIYW5kbGU7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlv
biBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlCi0tIChpZClpbml0V2l0aENvbm5lY3Rpb25E
ZWxlZ2F0ZTooU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
Kiljb25uZWN0aW9uRGVsZWdhdGUKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlm
ICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9
IGNvbm5lY3Rpb25EZWxlZ2F0ZTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZCljb25u
ZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhQXJyYXk6
KE5TQXJyYXkgKilkYXRhQXJyYXkKLXsKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0g
ICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExPRyhO
ZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGFBcnJh
eSgpIik7Ci0gICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZFJlY2VpdmVEYXRhQXJyYXkocmVp
bnRlcnByZXRfY2FzdDxDRkFycmF5UmVmPihkYXRhQXJyYXkpKTsKLX0KLQotLSAodm9pZCljb25u
ZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhOihOU0Rh
dGEgKilkYXRhIGxlbmd0aFJlY2VpdmVkOihsb25nIGxvbmcpbGVuZ3RoUmVjZWl2ZWQKLXsKLSAg
ICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0
ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxl
QXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEoKSAtIGRhdGEgbGVuZ3RoID0gJWxkIiwgKGxvbmcp
W2RhdGEgbGVuZ3RoXSk7Ci0KLSAgICAvLyBRdWlja0xvb2sgY29kZSBzZW5kcyB1cyBhIG5pbCBk
YXRhIGF0IHRpbWVzLiBUaGUgY2hlY2sgYmVsb3cgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbgot
ICAgIC8vIFJlc291cmNlSGFuZGxlTWFjLmNwcCBhZGRlZCBmb3IgYSBkaWZmZXJlbnQgYnVnLgot
ICAgIGlmICghW2RhdGEgbGVuZ3RoXSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fY29ubmVjdGlv
bkRlbGVnYXRlLT5kaWRSZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oZGF0
YSksIHN0YXRpY19jYXN0PGludD4obGVuZ3RoUmVjZWl2ZWQpKTsKLX0KLQotLSAodm9pZCljb25u
ZWN0aW9uRGlkRmluaXNoTG9hZGluZzooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgotewot
ICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBpZiAoIW1fY29ubmVjdGlvbkRlbGVn
YXRlKQotICAgICAgICByZXR1cm47Ci0gICAgTE9HKE5ldHdvcmssICJXZWJRdWlja0xvb2tIYW5k
bGVBc0RlbGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nKCkiKTsKLSAgICBtX2Nvbm5lY3Rpb25EZWxl
Z2F0ZS0+ZGlkRmluaXNoTG9hZGluZygpOwotfQotCi0tICh2b2lkKWNvbm5lY3Rpb246KE5TVVJM
Q29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9y
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIGlmICghbV9jb25uZWN0aW9u
RGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBMT0coTmV0d29yaywgIldlYlF1aWNrTG9v
a0hhbmRsZUFzRGVsZWdhdGU6OmRpZEZhaWwoKSIpOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRl
LT5kaWRGYWlsKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZFcnJvclJlZj4oZXJyb3IpKTsKLX0KLQotLSAo
dm9pZCljbGVhckhhbmRsZQotewotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlID0gbnVsbHB0cjsK
LX0KLUBlbmQKLSNlbmRpZgotCi1AaW50ZXJmYWNlIFdlYlJlc291cmNlTG9hZGVyUXVpY2tMb29r
RGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25uZWN0aW9uRGVsZWdhdGU+IHsKK0BpbnRlcmZh
Y2UgV2ViUmVzb3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENv
bm5lY3Rpb25EZWxlZ2F0ZSwgV2ViQ29yZVJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsKICAgICBS
ZWZQdHI8UmVzb3VyY2VMb2FkZXI+IF9yZXNvdXJjZUxvYWRlcjsKICAgICBCT09MIF9oYXNTZW50
RGlkUmVjZWl2ZVJlc3BvbnNlOwogICAgIEJPT0wgX2hhc0ZhaWxlZDsKQEAgLTM1OSw3ICsyNzYs
NyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlk
RmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycgogICAgIF9yZXNvdXJjZUxvYWRlci0+ZGlkRmFp
bChSZXNvdXJjZUVycm9yKGVycm9yKSk7CiB9CiAKLS0gKHZvaWQpY2xlYXJIYW5kbGUKKy0gKHZv
aWQpZGV0YWNoSGFuZGxlCiB7CiAgICAgX3Jlc291cmNlTG9hZGVyID0gbnVsbHB0cjsKICAgICBf
cXVpY2tMb29rSGFuZGxlID0gbnVsbHB0cjsKQEAgLTQxNSwyNiArMzMyLDYgQEAgc3RkOjp1bmlx
dWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwKICAgICByZXR1cm4gV1RGOjptb3ZlKHF1aWNrTG9va0hhbmRsZSk7CiB9
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4g
UXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgU3luY2hyb25v
dXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKiBjb25uZWN0aW9uRGVsZWdh
dGUsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKLXsKLSAgICBBU1NFUlRfQVJHKGhhbmRs
ZSwgaGFuZGxlKTsKLSAgICBpZiAoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5yZXF1ZXN0ZXIoKSAh
PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbiB8fCAhW1FMUHJldmlld0dldFN1cHBv
cnRlZE1JTUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAqKUNGVVJMUmVzcG9u
c2VHZXRNSU1FVHlwZShjZlJlc3BvbnNlKV0pCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSA9IFtOU1VSTFJlc3BvbnNlIF9yZXNwb25zZVdp
dGhDRlVSTFJlc3BvbnNlOmNmUmVzcG9uc2VdOwotICAgIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVs
ZWdhdGUgKmRlbGVnYXRlID0gW1tbV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6Y29ubmVjdGlvbkRlbGVnYXRlXSBhdXRvcmVsZWFz
ZV07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gcXVpY2tMb29rSGFuZGxl
KG5ldyBRdWlja0xvb2tIYW5kbGUoW2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0
KERvTm90VXBkYXRlSFRUUEJvZHkpIFVSTF0sIG5pbCwgbnNSZXNwb25zZSwgZGVsZWdhdGUpKTsK
LSAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRDcmVhdGVRdWlja0xvb2tIYW5kbGUoKnF1aWNrTG9v
a0hhbmRsZSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShxdWlja0xvb2tIYW5kbGUpOwotfQotCi1D
RlVSTFJlc3BvbnNlUmVmIFF1aWNrTG9va0hhbmRsZTo6Y2ZSZXNwb25zZSgpCi17Ci0gICAgcmV0
dXJuIFttX25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdOwotfQotI2VuZGlmCi0KIGJvb2wgUXVp
Y2tMb29rSGFuZGxlOjpzaG91bGRDcmVhdGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogewogICAgIHJldHVybiBbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkg
Y29udGFpbnNPYmplY3Q6bWltZVR5cGVdOwpAQCAtNTAwLDcgKzM5Nyw3IEBAIFF1aWNrTG9va0hh
bmRsZTo6flF1aWNrTG9va0hhbmRsZSgpCiAgICAgTE9HKE5ldHdvcmssICJRdWlja0xvb2tIYW5k
bGU6On5RdWlja0xvb2tIYW5kbGUoKSIpOwogICAgIG1fY29udmVydGVyID0gbnVsbHB0cjsKIAot
ICAgIFttX2RlbGVnYXRlIGNsZWFySGFuZGxlXTsKKyAgICBbbV9kZWxlZ2F0ZSBkZXRhY2hIYW5k
bGVdOwogfQogCiBTdHJpbmcgUXVpY2tMb29rSGFuZGxlOjpwcmV2aWV3RmlsZU5hbWUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3Vy
Y2VIYW5kbGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNv
dXJjZUhhbmRsZUlPUy5tbQppbmRleCA2NjdiOWIxODY2NzQ0MGRlYmZlZmRhMTgwNWI4NGNiNTQ3
ODRjNTc5Li5iNzI5ZjBmMzYyMTlkYzQxZjNhZGViMzE5NDIxZmY5NjU3ZjQ4MWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhh
bmRsZUlPUy5tbQpAQCAtMSwzOSArMSBAQAotLy8KLS8vICBSZXNvdXJjZUhhbmRsZUlQaG9uZS5t
bQotLy8gIFdlYkNvcmUKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSZXNvdXJj
ZUhhbmRsZUludGVybmFsLmgiCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi0jaW1wb3J0IDxDRk5l
dHdvcmsvQ0ZTb2NrZXRTdHJlYW1Qcml2Lmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVx
dWVzdFByaXZhdGUuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRl
U1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQotewotICAgIE5TU3RyaW5nICpob3N0ID0gcmVxdWVzdC51cmwoKS5ob3N0KCk7Ci0gICAg
TlNBcnJheSAqY2VydEFycmF5ID0gW05TVVJMUmVxdWVzdCBhbGxvd3NTcGVjaWZpY0hUVFBTQ2Vy
dGlmaWNhdGVGb3JIb3N0Omhvc3RdOwotICAgIEJPT0wgYWxsb3dzQW55Q2VydGlmaWNhdGUgPSBb
TlNVUkxSZXF1ZXN0IGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVGb3JIb3N0Omhvc3RdOwotICAg
IGlmICghY2VydEFycmF5ICYmICFhbGxvd3NBbnlDZXJ0aWZpY2F0ZSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHNzbFByb3BzID0gQ0ZEaWN0aW9uYXJ5
Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBpZiAo
Y2VydEFycmF5KQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzc2xQcm9wcywgX2tDRlN0
cmVhbVNTTFRydXN0ZWRMZWFmQ2VydGlmaWNhdGVzLCAoQ0ZUeXBlUmVmKSBjZXJ0QXJyYXkpOwot
Ci0gICAgaWYgKGFsbG93c0FueUNlcnRpZmljYXRlKQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShzc2xQcm9wcywga0NGU3RyZWFtU1NMVmFsaWRhdGVzQ2VydGlmaWNhdGVDaGFpbiwga0NG
Qm9vbGVhbkZhbHNlKTsKLSAgICByZXR1cm4gc3NsUHJvcHM7Ci19Ci0KLX0KLQotI2VuZGlmCisv
LyBSZW1vdmUgbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1Jlc291cmNlUmVxdWVzdElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1Jlc291cmNlUmVxdWVzdElPUy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggN2I3ZGM2YmU2MzQ1Y2M1Njk2YTFlYzZlYmQwMDMyZjMyMzRkZmIwMC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5oIgotCi0jaWYg
UExBVEZPUk0oSU9TKQotCi1AaW50ZXJmYWNlIE5TVVJMUmVxdWVzdCAoV2ViTlNVUkxSZXF1ZXN0
RGV0YWlscykKLS0gKENGVVJMUmVxdWVzdFJlZilfQ0ZVUkxSZXF1ZXN0OwotLSAoaWQpX2luaXRX
aXRoQ0ZVUkxSZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdDsKLUBlbmQKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VSZXF1ZXN0OjpS
ZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QpCi0gICAgOiBSZXNvdXJjZVJl
cXVlc3RCYXNlKCkKLSAgICAsIG1fY2ZSZXF1ZXN0KFtuc1JlcXVlc3QgX0NGVVJMUmVxdWVzdF0p
Ci0gICAgLCBtX25zUmVxdWVzdChuc1JlcXVlc3QpCi17Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1
ZXN0Ojp1cGRhdGVOU1VSTFJlcXVlc3QoKQotewotICAgIGlmIChtX2NmUmVxdWVzdCkKLSAgICAg
ICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gX2lu
aXRXaXRoQ0ZVUkxSZXF1ZXN0Om1fY2ZSZXF1ZXN0LmdldCgpXSk7Ci19Ci0KLXZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0OjpjbGVhck9yVXBkYXRlTlNVUkxSZXF1ZXN0KCkKLXsKLSAgICAvLyBUaGVyZSBp
cyBjbGllbnQgY29kZSB0aGF0IGV4dGVuZHMgTlNVUkxSZXF1ZXN0IGFuZCBleHBlY3RzIHRvIGdl
dCBiYWNrLCBpbiB0aGUgZGVsZWdhdGUKLSAgICAvLyBjYWxsYmFja3MsIGFuIG9iamVjdCBvZiB0
aGUgc2FtZSB0eXBlIHRoYXQgdGhleSBwYXNzZWQgaW50byBXZWJLaXQuIFRvIGtlZXAgdGhlbiBy
dW5uaW5nLCB3ZQotICAgIC8vIGNyZWF0ZSBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSBhbmQg
cmV0dXJuIHRoYXQuIFNlZSA8cmRhcjovLzk4NDM1ODI+LgotICAgIC8vIEFsc28sIGRldmVsb3Bl
cnMgcmVhbGx5IHJlYWxseSB3YW50IGFuIE5TTXV0YWJsZVVSTFJlcXVlc3Qgc28gdHJ5IHRvIGNy
ZWF0ZSBhbgotICAgIC8vIE5TTXV0YWJsZVVSTFJlcXVlc3QgaW5zdGVhZCBvZiBOU1VSTFJlcXVl
c3QuCi0gICAgc3RhdGljIENsYXNzIG5zVVJMUmVxdWVzdENsYXNzID0gW05TVVJMUmVxdWVzdCBj
bGFzc107Ci0gICAgc3RhdGljIENsYXNzIG5zTXV0YWJsZVVSTFJlcXVlc3RDbGFzcyA9IFtOU011
dGFibGVVUkxSZXF1ZXN0IGNsYXNzXTsKLSAgICBDbGFzcyByZXF1ZXN0Q2xhc3MgPSBbbV9uc1Jl
cXVlc3QuZ2V0KCkgY2xhc3NdOwotCi0gICAgaWYgKCFtX2NmUmVxdWVzdCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKHJlcXVlc3RDbGFzcyAmJiByZXF1ZXN0Q2xhc3MgIT0gbnNVUkxSZXF1
ZXN0Q2xhc3MgJiYgcmVxdWVzdENsYXNzICE9IG5zTXV0YWJsZVVSTFJlcXVlc3RDbGFzcykKLSAg
ICAgICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKFtbcmVxdWVzdENsYXNzIGFsbG9jXSBfaW5pdFdp
dGhDRlVSTFJlcXVlc3Q6bV9jZlJlcXVlc3QuZ2V0KCldKTsKLSAgICBlbHNlCi0gICAgICAgIG1f
bnNSZXF1ZXN0ID0gbnVsbHB0cjsKLX0KLQotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25N
YWMubW0KaW5kZXggZTM4YjAzODdkZTA0NmM3YzAxNTc0M2Q3YmI3ZWEzNmU0MDkzODAyMi4uYTgy
YTU1YzMzODgzN2Q3MGUyZTFhNWIwMzJjNzJiYzkzMzY5OGUxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0K
QEAgLTMyLDE4ICszMiwxMiBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUHJvdGVjdGlvblNwYWNl
Lmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCAiQ0ZOU1VSTENvbm5lY3Rpb25TUEku
aCIKLSNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFjZSBXZWJD
b3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciA6IE5TT2JqZWN0IDxOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyPgogewogICAgIEF1dGhlbnRpY2F0aW9uQ2xp
ZW50KiBtX2NsaWVudDsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJMQXV0aENoYWxsZW5n
ZVJlZiBtX2NmQ2hhbGxlbmdlOwotI2VuZGlmCiB9CiAtIChpZClpbml0V2l0aEF1dGhlbnRpY2F0
aW9uQ2xpZW50OihBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50OwogLSAoQXV0aGVudGljYXRp
b25DbGllbnQqKWNsaWVudDsKQEAgLTg5LDQ3ICs4MywxMCBAQCAtICh2b2lkKWNhbmNlbEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxl
bmdlCiAgICAgICAgIG1fY2xpZW50LT5yZWNlaXZlZENhbmNlbGxhdGlvbihjb3JlKGNoYWxsZW5n
ZSkpOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLS0gKHZvaWQpc2V0Q0ZDaGFsbGVuZ2U6KENG
VVJMQXV0aENoYWxsZW5nZVJlZiljaGFsbGVuZ2UKLXsKLSAgICBtX2NmQ2hhbGxlbmdlID0gY2hh
bGxlbmdlOwotfQotCi0tIChDRlVSTEF1dGhDaGFsbGVuZ2VSZWYpY2ZDaGFsbGVuZ2UKLXsKLSAg
ICByZXR1cm4gbV9jZkNoYWxsZW5nZTsKLX0KLSNlbmRpZgotCiBAZW5kCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
IGNvcmUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbWFjQ2hhbGxlbmdlKQotewotICAg
IFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyICpjaGFsbGVuZ2VT
ZW5kZXIgPSAoV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIqKSBb
bWFjQ2hhbGxlbmdlIHNlbmRlcl07Ci0gICAgcmV0dXJuIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFtjaGFsbGVuZ2VTZW5kZXIgY2ZDaGFsbGVuZ2VdLCBbY2hhbGxlbmdlU2VuZGVyIGNsaWVudF0p
OwotfQotCi1OU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICptYWMoY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UpCi17Ci0gICAgQXV0aGVudGljYXRpb25DbGll
bnQqIGF1dGhDbGllbnQgPSBjb3JlQ2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7Ci0g
ICAgUmV0YWluUHRyPFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVy
PiBjaGFsbGVuZ2VTZW5kZXIgPSBhZG9wdE5TKFtbV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50
QXNDaGFsbGVuZ2VTZW5kZXIgYWxsb2NdIGluaXRXaXRoQXV0aGVudGljYXRpb25DbGllbnQ6YXV0
aENsaWVudF0pOwotICAgIFJldGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IGF1dGhDaGFs
bGVuZ2UgPSBjb3JlQ2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpOwotICAgIGlmICgh
YXV0aENoYWxsZW5nZSkKLSAgICAgICAgYXV0aENoYWxsZW5nZSA9IGFkb3B0Q0YoY3JlYXRlQ0Yo
Y29yZUNoYWxsZW5nZSkpOwotICAgIFtjaGFsbGVuZ2VTZW5kZXIuZ2V0KCkgc2V0Q0ZDaGFsbGVu
Z2U6YXV0aENoYWxsZW5nZS5nZXQoKV07Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIHJldHVybiBb
W05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgX2NyZWF0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRm9yQ0ZBdXRoQ2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2UuZ2V0KCkgc2VuZGVyOmNoYWxsZW5n
ZVNlbmRlci5nZXQoKV0gYXV0b3JlbGVhc2VdOwotI2Vsc2UKLSAgICByZXR1cm4gW1tOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIF9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZUZvckNGQXV0aENo
YWxsZW5nZTphdXRoQ2hhbGxlbmdlLmdldCgpIHNlbmRlcjpjaGFsbGVuZ2VTZW5kZXIuZ2V0KCld
IGF1dG9yZWxlYXNlXTsKLSNlbmRpZgotfQotCi0jZWxzZQotCiBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90
ZWN0aW9uU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzRmFp
bHVyZUNvdW50LApAQCAtMjAzLDYgKzE2MCw0IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNv
cmUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbWFjQ2hhbGxlbmdlKQogICAgIHJldHVy
biBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtYWNDaGFsbGVuZ2UpOwogfQogCi0jZW5kaWYgLy8g
VVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCmluZGV4IDE2ZDEw
ZTIwNzAwNDFhODdlNDYzY2VmMjQ3NGMzYzQ4OWRkM2ZhZWEuLjgyZDRmNWZlMjUyYThlY2JlZTc2
YjI3YTQyMmY1MTczNzQyODBhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KQEAgLTMxLDggKzMxLDYgQEAKICNpbXBvcnQg
Ik5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkNvb2tpZS5oIgogI2ltcG9y
dCAiQ29va2llU3RvcmFnZS5oIgogI2ltcG9ydCAiVVJMLmgiCkBAIC0yMDAsMTIgKzE5OCw2IEBA
IHZvaWQgZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24pCiAgICAgd2tEZWxldGVBbGxIVFRQQ29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5n
ZXQoKSk7CiB9CiAKLX0KLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KIHN0YXRpYyBOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKICAgICBhdXRvIGNvb2tpZVN0
b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KaW5k
ZXggOWViYzg1NGRjZGI0OGQ1N2U4ZjgyODY5NDQyNGVjZDQ5YjczMzZlYy4uZjBhNGYzYWY3NjQx
NWNiMjZjMjk0YmQ4MTM5MTNmZTIyMzNiMzc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KQEAg
LTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDcmVkZW50aWFs
U3RvcmFnZS5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbmNsdWRlICJBdXRoZW50aWNh
dGlvbk1hYy5oIgogI2luY2x1ZGUgIkNyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9u
U3BhY2UuaCIKQEAgLTUyLDUgKzUwLDMgQEAgdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6c2F2ZVRv
UGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW8KICNlbmRp
ZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRh
U3RyZWFtTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0
YVN0cmVhbU1hYy5oCmluZGV4IGRiODFjNjY4N2M0MjJlNWVjYmMzNjkwZTIzNDVhZjgyMjRhZDA2
YzYuLmUyYzhiODk2YThhMjQ4OTdiMTJmMDJlNDdlYjA1NTExZDliZDQwYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1N
YWMuaApAQCAtMjksOCArMjksNiBAQAogI2lmbmRlZiBGb3JtRGF0YVN0cmVhbU1hY19oCiAjZGVm
aW5lIEZvcm1EYXRhU3RyZWFtTWFjX2gKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMUmVxdWVzdCog
Q0ZVUkxSZXF1ZXN0UmVmOwpAQCAtNDksNiArNDcsNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogCiAj
ZW5kaWYgLy8gRm9ybURhdGFTdHJlYW1NYWNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQppbmRleCBiNTczNGY5
OGVkZmJmMTEzNWUxN2Q0YjdlYmMyOWNjNTVmZTA0MzUxLi43YjdkMWQzYTE1ZTM5NTc0M2M5NDQ5
MTgzNGMzMjk4ZTIzY2ZhMThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQpAQCAtMjksOCArMjksNiBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJGb3JtRGF0YVN0cmVhbU1hYy5oIgogCi0jaWYg
IVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkZvcm1EYXRhLmgiCiAjaW1wb3J0ICJGb3JtRGF0
YVN0cmVhbUNGTmV0LmgiCiAjaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNTIsNSArNTAs
MyBAQCBGb3JtRGF0YSogaHR0cEJvZHlGcm9tU3RyZWFtKE5TSW5wdXRTdHJlYW0gKnN0cmVhbSkK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUksp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUVycm9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VFcnJvck1hYy5tbQppbmRleCBmN2M4NjRjZTNiNTA5OWZlMDJmMTY5NjlhY2UzOTdmNjgyZTgz
ZGJhLi5mYjc3NjZmNTc2YjJmYmMxNjM4MjVmZmE5MjI4YzMyNWY4ODA5ZmQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JN
YWMubW0KQEAgLTMxLDEwICszMSw2IEBACiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRkVycm9y
Lmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotI2lmIFBMQVRGT1JNKElP
UykgJiYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQgPENGTmV0d29yay9DRlNvY2tldFN0cmVhbVBy
aXYuaD4KLSNlbmRpZgotCiBAaW50ZXJmYWNlIE5TRXJyb3IgKFdlYkV4dHJhcykKIC0gKE5TU3Ry
aW5nICopX3dlYl9sb2NhbGl6ZWREZXNjcmlwdGlvbjsKIEBlbmQKQEAgLTkxLDg1ICs4Nyw2IEBA
IC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKIAogQGVuZAogCi0KLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotc3RhdGljIE5TRXJyb3IgKk5TRXJyb3JGcm9tQ0ZFcnJvcihDRkVy
cm9yUmVmIGNmRXJyb3IsIE5TVVJMICp1cmwpCi17Ci0gICAgQ0ZJbmRleCBlcnJDb2RlID0gQ0ZF
cnJvckdldENvZGUoY2ZFcnJvcik7Ci0gICAgaWYgKENGRXF1YWwoQ0ZFcnJvckdldERvbWFpbihj
ZkVycm9yKSwga0NGRXJyb3JEb21haW5DRk5ldHdvcmspICYmIGVyckNvZGUgPD0ga0NGVVJMRXJy
b3JVbmtub3duICYmIGVyckNvZGUgPiAtNDAwMCkgewotICAgICAgICAvLyBUaGlzIGlzIGFuIFVS
TCBlcnJvciBhbmQgbmVlZHMgdG8gYmUgdHJhbnNsYXRlZCB0byB0aGUgTlNVUkxFcnJvckRvbWFp
bgotICAgICAgICBpZCBrZXlzWzEwXSwgdmFsdWVzWzEwXTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5
UmVmIHVzZXJJbmZvID0gQ0ZFcnJvckNvcHlVc2VySW5mbyhjZkVycm9yKTsKLSAgICAgICAgTlNF
cnJvciAqcmVzdWx0OwotICAgICAgICBOU0ludGVnZXIgY291bnQgPSAwOwotCi0gICAgICAgIGlm
ICh1cmwpIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxF
cnJvcktleTsKLSAgICAgICAgICAgIHZhbHVlc1tjb3VudF0gPSB1cmw7Ci0gICAgICAgICAgICBj
b3VudCArKzsKLQotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFpbGluZ1VS
TFN0cmluZ0Vycm9yS2V5OwotICAgICAgICAgICAgdmFsdWVzW2NvdW50XSA9IFt1cmwgYWJzb2x1
dGVTdHJpbmddOwotICAgICAgICAgICAgY291bnQgKys7Ci0gICAgICAgIH0KLQotICAgICAgICB2
YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZFcnJv
ckxvY2FsaXplZERlc2NyaXB0aW9uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsK
LSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleTsKLSAg
ICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVzW2NvdW50XSA9
IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGRXJyb3JMb2NhbGl6ZWRGYWls
dXJlUmVhc29uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAg
IGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk7Ci0gICAgICAg
ICAgICBjb3VudCArKzsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQp
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRkVycm9yTG9jYWxpemVkUmVjb3ZlcnlT
dWdnZXN0aW9uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAg
IGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25FcnJvcktleTsKLSAg
ICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRl
Y2xhcmF0aW9ucyIKLSAgICAgICAgaWYgKHVzZXJJbmZvICYmICh2YWx1ZXNbY291bnRdID0gKGlk
KUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNTTFBlZXJD
ZXJ0aWZpY2F0ZXMpKSAhPSBuaWwpIHsKLSAgICAgICAgICAgIC8vIE5lZWQgdG8gdHJhbnNsYXRl
IHRoZSBjZXJ0Ci0gICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvclBlZXJDZXJ0aWZp
Y2F0ZUNoYWluS2V5IjsKLSAgICAgICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgICAgICB2YWx1
ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBfa0NGU3RyZWFt
UHJvcGVydHlTU0xDbGllbnRDZXJ0aWZpY2F0ZXMpOwotICAgICAgICAgICAgaWYgKHZhbHVlc1tj
b3VudF0pIHsKLSAgICAgICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvckNsaWVudENl
cnRpZmljYXRlQ2hhaW5LZXkiOwotICAgICAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZh
bHVlKHVzZXJJbmZvLCBfa0NGU3RyZWFtUHJvcGVydHlTU0xDbGllbnRDZXJ0aWZpY2F0ZVN0YXRl
KTsKLSAgICAgICAgICAgIGlmICh2YWx1ZXNbY291bnRdKSB7Ci0gICAgICAgICAgICAgICAga2V5
c1tjb3VudF0gPSBAIk5TRXJyb3JDbGllbnRDZXJ0aWZpY2F0ZVN0YXRlS2V5IjsKLSAgICAgICAg
ICAgICAgICBjb3VudCArKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHBvcAotCi0gICAgICAgIGlmICh1c2VySW5mbyAmJiAodmFsdWVzW2NvdW50
XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGU3RyZWFtUHJvcGVydHlT
U0xQZWVyVHJ1c3QpKSAhPSBuaWwpIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNVUkxF
cnJvckZhaWxpbmdVUkxQZWVyVHJ1c3RFcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50Kys7Ci0g
ICAgICAgIH0KLQotICAgICAgICBrZXlzW2NvdW50XSA9IE5TVW5kZXJseWluZ0Vycm9yS2V5Owot
ICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKWNmRXJyb3I7Ci0gICAgICAgIGNvdW50ICsrOwot
Ci0gICAgICAgIHJlc3VsdCA9IFtXZWJDdXN0b21OU1VSTEVycm9yIGVycm9yV2l0aERvbWFpbjpO
U1VSTEVycm9yRG9tYWluIGNvZGU6KGVyckNvZGUgPT0ga0NGVVJMRXJyb3JVbmtub3duID8gKENG
SW5kZXgpTlNVUkxFcnJvclVua25vd24gOiBlcnJDb2RlKSB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5
IGRpY3Rpb25hcnlXaXRoT2JqZWN0czp2YWx1ZXMgZm9yS2V5czprZXlzIGNvdW50OmNvdW50XV07
Ci0gICAgICAgIGlmICh1c2VySW5mbykKLSAgICAgICAgICAgIENGUmVsZWFzZSh1c2VySW5mbyk7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIHJldHVybiAoTlNFcnJvciAqKWNm
RXJyb3I7Ci19Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTkzLDUzICsxMTAsNiBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZU5TRXJyb3JGcm9tUmVzb3VyY2VFcnJvckJhc2UoY29u
c3QgUmVzb3VyY2VFcnJvcgogICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5p
dFdpdGhEb21haW46cmVzb3VyY2VFcnJvci5kb21haW4oKSBjb2RlOnJlc291cmNlRXJyb3IuZXJy
b3JDb2RlKCkgdXNlckluZm86dXNlckluZm8uZ2V0KCldKTsKIH0KIAotI2lmIFVTRShDRk5FVFdP
UkspCi0KLVJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoTlNFcnJvciAqZXJyb3IpCi0gICAg
OiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQotICAgICwgbV9wbGF0Zm9ybUVycm9yKHJlaW50ZXJw
cmV0X2Nhc3Q8Q0ZFcnJvclJlZj4oZXJyb3IpKQotewotICAgIG1faXNOdWxsID0gIWVycm9yOwot
ICAgIGlmICghbV9pc051bGwpCi0gICAgICAgIG1faXNUaW1lb3V0ID0gW2Vycm9yIGNvZGVdID09
IE5TVVJMRXJyb3JUaW1lZE91dDsKLX0KLQotTlNFcnJvciAqUmVzb3VyY2VFcnJvcjo6bnNFcnJv
cigpIGNvbnN0Ci17Ci0gICAgaWYgKG1faXNOdWxsKSB7Ci0gICAgICAgIEFTU0VSVCghbV9wbGF0
Zm9ybUVycm9yKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICBpZiAobV9wbGF0
Zm9ybU5TRXJyb3IpCi0gICAgICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLQot
ICAgIGlmIChtX3BsYXRmb3JtRXJyb3IpIHsKLSAgICAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG1f
cGxhdGZvcm1FcnJvci5nZXQoKTsKLSAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
dXNlckluZm8gPSBhZG9wdENGKENGRXJyb3JDb3B5VXNlckluZm8oZXJyb3IpKTsKLSNpZiBQTEFU
Rk9STShJT1MpCi0gICAgICAgIG1fcGxhdGZvcm1OU0Vycm9yID0gTlNFcnJvckZyb21DRkVycm9y
KGVycm9yLCAoTlNVUkwgKilbKE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvLmdldCgpIG9iamVjdEZv
cktleTooaWQpIGtDRlVSTEVycm9yRmFpbGluZ1VSTEVycm9yS2V5XSk7Ci0gICAgICAgIC8vIElm
IE5TRXJyb3JGcm9tQ0ZFcnJvciBjcmVhdGVkIGEgbmV3IE5TRXJyb3IgZm9yIHVzLCByZXR1cm4g
dGhhdC4KLSAgICAgICAgaWYgKG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpICE9IChOU0Vycm9yICop
ZXJyb3IpCi0gICAgICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCk7Ci0KLSAg
ICAgICAgLy8gT3RoZXJ3aXNlIGZhbGwgdGhyb3VnaCB0byBjcmVhdGUgYSBuZXcgTlNFcnJvciBm
cm9tIHRoZSBDRkVycm9yLgotI2VuZGlmCi0gICAgICAgIG1fcGxhdGZvcm1OU0Vycm9yID0gYWRv
cHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOihOU1N0cmluZyAqKUNGRXJyb3JH
ZXREb21haW4oZXJyb3IpIGNvZGU6Q0ZFcnJvckdldENvZGUoZXJyb3IpIHVzZXJJbmZvOihOU0Rp
Y3Rpb25hcnkgKil1c2VySW5mby5nZXQoKV0pOwotICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU5T
RXJyb3IuZ2V0KCk7Ci0gICAgfQotCi0gICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBjcmVhdGVOU0Vy
cm9yRnJvbVJlc291cmNlRXJyb3JCYXNlKCp0aGlzKTsKLSAgICByZXR1cm4gbV9wbGF0Zm9ybU5T
RXJyb3IuZ2V0KCk7Ci19Ci0KLVJlc291cmNlRXJyb3I6Om9wZXJhdG9yIE5TRXJyb3IgKigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG5zRXJyb3IoKTsKLX0KLQotI2Vsc2UKLQogUmVzb3VyY2VFcnJv
cjo6UmVzb3VyY2VFcnJvcihOU0Vycm9yICpuc0Vycm9yKQogICAgIDogbV9kYXRhSXNVcFRvRGF0
ZShmYWxzZSkKICAgICAsIG1fcGxhdGZvcm1FcnJvcihuc0Vycm9yKQpAQCAtMzEyLDYgKzE4Miw0
IEBAIFJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENGRXJyb3JSZWYoKSBjb25zdAogICAgIHJldHVy
biBjZkVycm9yKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCmluZGV4IGNkYmUwMjU4ZDQwMTIxZjMxNDBiNGY0
Nzk0MGNmYjkzZmU3NzE5NjQuLjYyZTc3YmI2MTI4ODczMmRhMjlhZWRkNzI2MmI0MDRhMTMwOTI1
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlSGFuZGxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlSGFuZGxlTWFjLm1tCkBAIC01NywxNiArNTcsNiBAQAogI2ltcG9ydCA8d3RmL3Rl
eHQvQmFzZTY0Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotI2lmIF9faGFzX2luY2x1ZGUoPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb25Qcml2
Lmg+KQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4KLSNlbmRpZgot
dHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQ29ubmVjdGlvbiogQ0ZVUkxDb25uZWN0aW9uUmVmOwotZXh0
ZXJuICJDIiB7Ci1DRkRpY3Rpb25hcnlSZWYgX0NGVVJMQ29ubmVjdGlvbkNvcHlUaW1pbmdEYXRh
KENGVVJMQ29ubmVjdGlvblJlZik7Ci19Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogI2lm
IFBMQVRGT1JNKElPUykKICNpbXBvcnQgIkNGTmV0d29ya1NQSS5oIgogI2ltcG9ydCAiUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCkBAIC04OCw5ICs3OCw3IEBAIC0oaWQpX2luaXRXaXRo
UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUgdXNl
c0NhY2hlOihCCiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLSNpZiAhVVNFKENG
TkVUV09SSykKLSAgICAKKwogc3RhdGljIHZvaWQgYXBwbHlCYXNpY0F1dGhvcml6YXRpb25IZWFk
ZXIoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFs
KQogewogICAgIFN0cmluZyBhdXRoZW50aWNhdGlvbkhlYWRlciA9ICJCYXNpYyAiICsgYmFzZTY0
RW5jb2RlKFN0cmluZyhjcmVkZW50aWFsLnVzZXIoKSArICI6IiArIGNyZWRlbnRpYWwucGFzc3dv
cmQoKSkudXRmOCgpKTsKQEAgLTI2OSwxMiArMjU3LDYgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6
c3RhcnQoKQogICAgICAgICBbY29ubmVjdGlvbigpIHNldERlbGVnYXRlUXVldWU6b3BlcmF0aW9u
UXVldWVGb3JBc3luY0NsaWVudHMoKV07CiAgICAgICAgIHNjaGVkdWxlZCA9IHRydWU7CiAgICAg
fQotI2lmIFBMQVRGT1JNKElPUykKLSAgICBlbHNlIHsKLSAgICAgICAgW2Nvbm5lY3Rpb24oKSBz
Y2hlZHVsZUluUnVuTG9vcDpXZWJUaHJlYWROU1J1bkxvb3AoKSBmb3JNb2RlOk5TRGVmYXVsdFJ1
bkxvb3BNb2RlXTsKLSAgICAgICAgc2NoZWR1bGVkID0gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKIAog
ICAgIC8vIFN0YXJ0IHRoZSBjb25uZWN0aW9uIGlmIHdlIGRpZCBzY2hlZHVsZSB3aXRoIGF0IGxl
YXN0IG9uZSBydW5sb29wLgogICAgIC8vIFdlIGNhbid0IHN0YXJ0IHRoZSBjb25uZWN0aW9uIHVu
dGlsIHdlIGhhdmUgb25lIHJ1bmxvb3Agc2NoZWR1bGVkLgpAQCAtMzE0LDggKzI5Niw2IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykK
ICAgICAgICAgW2QtPm1fY29ubmVjdGlvbiBzZXREZWZlcnNDYWxsYmFja3M6ZGVmZXJzXTsKIH0K
IAotI2lmIFBMQVRGT1JNKE1BQykKLQogdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUoU2No
ZWR1bGVQYWlyJiBwYWlyKQogewogICAgIE5TUnVuTG9vcCAqcnVuTG9vcCA9IHBhaXIubnNSdW5M
b29wKCk7CkBAIC0zMzQsOCArMzE0LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVs
ZShTY2hlZHVsZVBhaXImIHBhaXIpCiAgICAgICAgIFtkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkgdW5z
Y2hlZHVsZUZyb21SdW5Mb29wOnJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKilwYWlyLm1vZGUo
KV07CiB9CiAKLSNlbmRpZgotCiBpZCBSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKGJvb2wg
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKCFkLT5tX2RlbGVnYXRl
KTsKQEAgLTcyNCwyNyArNzAyLDE0IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2ls
bENhY2hlUmVzcG9uc2UoTlNDYWNoZWRVUkxSZXNwb25zZSAqcmVzcG9uc2UpCiAKICAgICBbKGlk
KWRlbGVnYXRlKCkgY29udGludWVXaWxsQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9Ci0gICAg
Ci0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0gICAgCisKICNpZiBFTkFCTEUoV0VCX1RJTUlO
RykKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgCi12b2lkIFJlc291cmNlSGFuZGxlOjpnZXRD
b25uZWN0aW9uVGltaW5nRGF0YShDRlVSTENvbm5lY3Rpb25SZWYgY29ubmVjdGlvbiwgUmVzb3Vy
Y2VMb2FkVGltaW5nJiB0aW1pbmcpCi17Ci0gICAgY29weVRpbWluZ0RhdGEoKF9fYnJpZGdlIE5T
RGljdGlvbmFyeSopYWRvcHRDRihfQ0ZVUkxDb25uZWN0aW9uQ29weVRpbWluZ0RhdGEoY29ubmVj
dGlvbikpLmdldCgpLCB0aW1pbmcpOwotfQotICAgIAotI2Vsc2UKLSAgICAKIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqY29ubmVj
dGlvbiwgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcpCiB7CiAgICAgY29weVRpbWluZ0RhdGEo
W2Nvbm5lY3Rpb24gX3RpbWluZ0RhdGFdLCB0aW1pbmcpOwogfQotICAgIAotI2VuZGlmCi0gICAg
CisKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1RJTUlORykKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VSZXF1ZXN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VSZXF1ZXN0TWFjLm1tCmluZGV4IDY5NGU1M2M0YTU3MzIyMjBkNDQ2MWRjMTBmNjBkZDk4
NGFhODc5NmQuLmU3NzAyNDVkZmQ1MDFiMTRiMGU2MWMxMDc3YzcxYjMwODQxMmYxZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVz
dE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZVJlcXVlc3RNYWMubW0KQEAgLTM3LDI5ICszNyw2IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VSZXF1ZXN0OjpSZXNvdXJjZVJl
cXVlc3QoTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QpCi0gICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNl
KCkKLSAgICAsIG1fY2ZSZXF1ZXN0KFtuc1JlcXVlc3QgX0NGVVJMUmVxdWVzdF0pCi0gICAgLCBt
X25zUmVxdWVzdChuc1JlcXVlc3QpCi17Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRh
dGVOU1VSTFJlcXVlc3QoKQotewotICAgIGlmIChtX2NmUmVxdWVzdCkKLSAgICAgICAgbV9uc1Jl
cXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVl
c3Q6bV9jZlJlcXVlc3QuZ2V0KCldKTsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmFwcGx5
V2ViQXJjaGl2ZUhhY2tGb3JNYWlsKCkKLXsKLSAgICAvLyBIYWNrIGJlY2F1c2UgTWFpbCBjaGVj
a3MgZm9yIHRoaXMgcHJvcGVydHkgdG8gZGV0ZWN0IGRhdGEgLyBhcmNoaXZlIGxvYWRzCi0gICAg
X0NGVVJMUmVxdWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZVUkxSZXF1ZXN0KERvTm90VXBkYXRl
SFRUUEJvZHkpLCBDRlNUUigiV2ViRGF0YVJlcXVlc3QiKSwgQ0ZTVFIoIiIpKTsKLX0KLQotI2Vu
ZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5t
bQppbmRleCA2ZmEwMGUyNDM1ZTgzZTc5Zjk3ZDQzMDg2MmRiMGI0MWQzNjY1MzdiLi5jZGY3ODlk
NjlhN2Y3ZjVmZDBmZWE5NjM1NTdkNmQ3ZGMxNzliZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0K
QEAgLTcxLDM2ICs3MSw2IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6aW5pdE5TVVJMUmVzcG9u
c2UoKSBjb25zdAogICAgIFttX25zUmVzcG9uc2UuZ2V0KCkgX3NldE1JTUVUeXBlOihOU1N0cmlu
ZyAqKW1fbWltZVR5cGVdOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLQotTlNVUkxSZXNwb25z
ZSAqUmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFt
X25zUmVzcG9uc2UgJiYgIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051bGwpIHsKLSAgICAgICAgaW5p
dE5TVVJMUmVzcG9uc2UoKTsKLSAgICAgICAgbV9jZlJlc3BvbnNlID0gW21fbnNSZXNwb25zZS5n
ZXQoKSBfQ0ZVUkxSZXNwb25zZV07Ci0gICAgICAgIHJldHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7
Ci0gICAgfQotCi0gICAgaWYgKCFtX2NmUmVzcG9uc2UpCi0gICAgICAgIHJldHVybiBuaWw7Ci0K
LSAgICBpZiAoIW1fbnNSZXNwb25zZSkKLSAgICAgICAgbV9uc1Jlc3BvbnNlID0gW05TVVJMUmVz
cG9uc2UgX3Jlc3BvbnNlV2l0aENGVVJMUmVzcG9uc2U6bV9jZlJlc3BvbnNlLmdldCgpXTsKLQot
ICAgIHJldHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7Ci19Ci0KLVJlc291cmNlUmVzcG9uc2U6OlJl
c291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSogbnNSZXNwb25zZSkKLSAgICA6IG1faW5pdExl
dmVsKFVuaW5pdGlhbGl6ZWQpCi0gICAgLCBtX3BsYXRmb3JtUmVzcG9uc2VJc1VwVG9EYXRlKHRy
dWUpCi0gICAgLCBtX2NmUmVzcG9uc2UoW25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdKQotICAg
ICwgbV9uc1Jlc3BvbnNlKG5zUmVzcG9uc2UpCi17Ci0gICAgbV9pc051bGwgPSAhbnNSZXNwb25z
ZTsKLX0KLQotI2Vsc2UKLQogc3RhdGljIE5TU3RyaW5nKiBjb25zdCBjb21tb25IZWFkZXJGaWVs
ZHNbXSA9IHsKICAgICBAIkFnZSIsIEAiQ2FjaGUtQ29udHJvbCIsIEAiQ29udGVudC1UeXBlIiwg
QCJEYXRlIiwgQCJFdGFnIiwgQCJFeHBpcmVzIiwgQCJMYXN0LU1vZGlmaWVkIiwgQCJQcmFnbWEi
CiB9OwpAQCAtMTg5LDcgKzE1OSw1IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1D
b21wYXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlCiAgICAgcmV0
dXJuIGEubnNVUkxSZXNwb25zZSgpID09IGIubnNVUkxSZXNwb25zZSgpOwogfQogCi0jZW5kaWYg
Ly8gVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNs
aWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50Lm1tCmluZGV4IDAxNDRiZDkzYTcwYTQ0OTg4ZTA1NmM4ZWI4OTg5NzQ5ZjE1
YzJiNTguLjY1Zjc2ZGYxM2I5YzhmOTY2NzhmZjg4ZWRmN2MzNjM3MWU5MzBlMjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVy
Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50Lm1tCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCIKIAotI2lmICFVU0UoQ0ZO
RVRXT1JLKQotCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzgsMTQgKzM2LDEwIEBAIHZvaWQgU3luY2hyb25vdXNMb2FkZXJD
bGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSos
CiAgICAgW2NoYWxsZW5nZS5zZW5kZXIoKSBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6Y2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKV07CiB9CiAKLSNpZiAhVVNFKENGTkVUV09SSykKIFJlc291cmNlRXJyb3IgU3luY2hyb25v
dXNMb2FkZXJDbGllbnQ6OnBsYXRmb3JtQmFkUmVzcG9uc2VFcnJvcigpCiB7CiAgICAgUmV0YWlu
UHRyPE5TRXJyb3I+IGVycm9yID0gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9t
YWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yQmFkU2VydmVyUmVzcG9uc2UgdXNl
ckluZm86bmlsXSk7CiAgICAgcmV0dXJuIGVycm9yLmdldCgpOwogfQotI2VuZGlmCiAKIH0KLQot
I2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNE
ZWxlZ2F0ZS5oCmluZGV4IDRmNDE1NWVhZmQ5NDViMWI4NjJkMjljZTg5NmRjYWRjZGExYzQyNjYu
LjJmMTE2YWQ2YTMxMDI1MGE2NzdjY2VhMTRmNzdkMjgxMGU2YThlOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
RGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgKQEAgLTI2LDE4ICsyNiwxOCBAQAogI2lmbmRl
ZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKICNkZWZpbmUgV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiB9CiAKLUBpbnRlcmZhY2UgV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxl
Z2F0ZT4geworQHByb3RvY29sIFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRlCistICh2b2lk
KWRldGFjaEhhbmRsZTsKK0BlbmQKKworQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlLCBXZWJDb3JlUmVz
b3VyY2VMb2FkZXJEZWxlZ2F0ZT4gewogICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiBtX2hh
bmRsZTsKIH0KIC0gKGlkKWluaXRXaXRoSGFuZGxlOihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSop
aGFuZGxlOwotLSAodm9pZClkZXRhY2hIYW5kbGU7CiBAZW5kCiAKLSNlbmRpZiAvLyAhVVNFKENG
TkVUV09SSykKICNlbmRpZiAvLyBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCmluZGV4IGUxN2NiOWQyMGVk
N2RiZDUxNzkzYzM2NGViMzJjMTU4OTVlYmE1M2EuLjUyNGFmZTNmYTk3NjFmYWU3MGNkZDllNmM0
ZWYwMWVhZGNjOTRiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0
ZS5tbQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQog
I2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0
aW9uTWFjLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC01NCw3ICs1Miw3IEBAIC0gKGlkKWlu
aXRXaXRoSGFuZGxlOihSZXNvdXJjZUhhbmRsZSopaGFuZGxlCiAKIC0gKHZvaWQpZGV0YWNoSGFu
ZGxlCiB7Ci0gICAgbV9oYW5kbGUgPSAwOworICAgIG1faGFuZGxlID0gbnVsbHB0cjsKIH0KIAog
LSAoTlNVUkxSZXF1ZXN0ICopY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlv
biB3aWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKW5ld1JlcXVlc3QgcmVkaXJlY3RSZXNw
b25zZTooTlNVUkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2UKQEAgLTI4OCw2ICsyODYsMyBA
QCAtIChOU0NhY2hlZFVSTFJlc3BvbnNlICopY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICop
Y29ubmVjdGlvbiB3aWxsQ2FjaGVSZXNwbwogfQogCiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENG
TkVUV09SSykKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09w
ZXJhdGlvblF1ZXVlRGVsZWdhdGUuaAppbmRleCBlNzQwYWE1OWJlZDYzYmFiOTA3NmYwNzkzYWIz
ZDAzZGUwMDJiMDUxLi5jNTdhY2FlMTQxOGMxMTZmY2Y3NzcwZjU4YWQ0YzkxYzgxZTQ4Y2MyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUuaApAQCAtMjYsOCArMjYsNyBAQAogI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaAogI2RlZmluZSBXZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaAogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0K
KyNpbmNsdWRlICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgiCiAjaW5jbHVkZSA8
ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTM1
LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiB9
CiAKLUBpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiB7CitAaW50ZXJmYWNlIFdl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxO
U1VSTENvbm5lY3Rpb25EZWxlZ2F0ZSwgV2ViQ29yZVJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsK
ICAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSogbV9oYW5kbGU7CiAKICAgICAvLyBTeW5jaHJv
bm91cyBkZWxlZ2F0ZXMgb24gb3BlcmF0aW9uIHF1ZXVlIHdhaXQgdW50aWwgbWFpbiB0aHJlYWQg
c2VuZHMgYW4gYXN5bmNocm9ub3VzIHJlc3BvbnNlLgpAQCAtNDYsNyArNDUsNiBAQCBjbGFzcyBS
ZXNvdXJjZUhhbmRsZTsKIH0KIAogLSAoaWQpaW5pdFdpdGhIYW5kbGU6KFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlKiloYW5kbGU7Ci0tICh2b2lkKWRldGFjaEhhbmRsZTsKIC0gKHZvaWQpY29udGlu
dWVXaWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKW5ld1JlcXVlc3Q7CiAtICh2b2lkKWNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhf
Q0FMTEJBQ0spCkBAIC01OSw1ICs1Nyw0IEBAIGNsYXNzIFJlc291cmNlSGFuZGxlOwogCiBAZW5k
CiAKLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKICNlbmRpZiAvLyBXZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IDkzMzdk
MTM0OTBhYjgwOWM3ODNlMTU1OGNmYjc2MTBiYjgxYzE1OWIuLmMxZDYzMGI2YjNjNjE0ZGYzZDQy
OWM5N2UwNTI4YjA3ODM5MGU4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTI2LDggKzI2LDYgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAi
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgi
CiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC0zNDUsNiArMzQzLDMgQEAgLSAoQk9PTCljb25uZWN0
aW9uU2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U6KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rp
b24KIH0KIAogQGVuZAotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25z
ZS5tbQppbmRleCAwZmFiZjkzOTg5MzZiMzEyOTM5MjIxMTBjOTcyNWFjYTQ2OTMyZGVlLi5jZDVi
YjQ0N2Q3YzQzYTllZjE3N2JhMmRhMjU2YjZkYmJlNTY2NzY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1t
CkBAIC0zMjUsNyArMzI1LDYgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJM
UmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKIH0KICNlbmRpZgogCi0jaWYgIVVTRShDRk5FVFdPUksp
CiBOU1VSTFJlc3BvbnNlICpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KE5T
VVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgTlNVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0LCBOU1VS
TFJlc3BvbnNlICpyZWRpcmVjdFJlc3BvbnNlKQogewogICAgIGlmIChyZWRpcmVjdFJlc3BvbnNl
KQpAQCAtMzM5LDYgKzMzOCw1IEBAIE5TVVJMUmVzcG9uc2UgKnN5bnRoZXNpemVSZWRpcmVjdFJl
c3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uCiAgICAgTlNEaWN0
aW9uYXJ5ICpzeW50aGVzaXplZFJlc3BvbnNlSGVhZGVyRmllbGRzID0gQHsgQCJMb2NhdGlvbiI6
IFtbbmV3UmVxdWVzdCBVUkxdIGFic29sdXRlU3RyaW5nXSwgQCJDYWNoZS1Db250cm9sIjogQCJu
by1zdG9yZSIgfTsKICAgICByZXR1cm4gW1tbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRX
aXRoVVJMOltbY29ubmVjdGlvbiBjdXJyZW50UmVxdWVzdF0gVVJMXSBzdGF0dXNDb2RlOjMwMiBI
VFRQVmVyc2lvbjooTlNTdHJpbmcgKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6c3lu
dGhlc2l6ZWRSZXNwb25zZUhlYWRlckZpZWxkc10gYXV0b3JlbGVhc2VdOwogfQotI2VuZGlmCiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9OU1VSTERv
d25sb2FkU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvTlNVUkxEb3du
bG9hZFNQSS5oCmluZGV4IDNmM2EzYmNiOGVjNjQ4ZDRhZTVhNzAxNzVhNzU2NTE3Zjg1ZGQwZDUu
LjJlZTY4NDA4NDdjNmIzNTI4MTE4NjhjM2YxZmRmZmRhMmQ3YmNlOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9OU1VSTERvd25sb2FkU1BJLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL05TVVJMRG93bmxvYWRTUEkuaApAQCAt
MjksNiArMjksMTQgQEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTERvd25sb2FkLmg+CiAK
KyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTERv
d25sb2FkUHJpdmF0ZS5oPgorI2Vsc2UKK0BpbnRlcmZhY2UgTlNVUkxEb3dubG9hZCAoKQorKyhp
ZClfZG93bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5l
Y3Rpb24gcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZXNwb25zZTooTlNVUkxSZXNw
b25zZSAqKXJlc3BvbnNlIGRlbGVnYXRlOihpZClkZWxlZ2F0ZSBwcm94eTooaWQpcHJveHk7CitA
ZW5kCisjZW5kaWYKKwogI2Vsc2UKIAogQGNsYXNzIE5TU3RyaW5nOwpAQCAtNTYsOCArNjQsMTkg
QEAKIC0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0
aEVycm9yOihOU0Vycm9yICopZXJyb3I7CiBAZW5kCiAKKyNpZm5kZWYgV2ViS2l0X1dlYkRvd25s
b2FkX2gKKy8qIEFsc28gZGVmaW5lZCBpbiA8V2ViS2l0L1dlYkRvd25sb2FkLmg+LiAqLworQGlu
dGVyZmFjZSBOU1VSTERvd25sb2FkIDogTlNPYmplY3QKK0BlbmQKKyNlbmRpZgorCiBAaW50ZXJm
YWNlIE5TVVJMRG93bmxvYWQgKCkKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFJlcXVlc3Q6KE5T
VVJMUmVxdWVzdCAqKXJlcXVlc3QgZGVsZWdhdGU6KGlkIDxOU1VSTERvd25sb2FkRGVsZWdhdGU+
KWRlbGVnYXRlOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVzdW1lRGF0YTooTlNEYXRhICop
cmVzdW1lRGF0YSBkZWxlZ2F0ZTooaWQgPE5TVVJMRG93bmxvYWREZWxlZ2F0ZT4pZGVsZWdhdGUg
cGF0aDooTlNTdHJpbmcgKilwYXRoOworLSAodm9pZClzZXREZXN0aW5hdGlvbjooTlNTdHJpbmcg
KilwYXRoIGFsbG93T3ZlcndyaXRlOihCT09MKWFsbG93T3ZlcndyaXRlOworQHByb3BlcnR5IChy
ZWFkb25seSwgY29weSkgTlNEYXRhICpyZXN1bWVEYXRhOworQHByb3BlcnR5IEJPT0wgZGVsZXRl
c0ZpbGVVcG9uRmFpbHVyZTsKKysoaWQpX2Rvd25sb2FkV2l0aExvYWRpbmdDb25uZWN0aW9uOihO
U1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3QgcmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBkZWxlZ2F0ZTooaWQpZGVsZWdh
dGUgcHJveHk6KGlkKXByb3h5OwogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2Vi
RG93bmxvYWQuaAppbmRleCBlMjQyZTZkYjljOTdmODhkYmE4YjFlMGFmZWFhODc0YWM1MWZiNTQ5
Li5jYWE1NTcwYTU2MGUzM2YxZmI5Zjg5YWJiODg1YzJkMTM1MzgyODQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJEb3dubG9hZC5oCkBAIC0yNiw2ICsyNiw5IEBACiAgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKKyNpZm5kZWYgV2ViRG93bmxvYWRfaAorI2RlZmluZSBXZWJEb3dubG9hZF9oCisKICNpZiAh
VEFSR0VUX09TX0lQSE9ORSB8fCAoZGVmaW5lZCBVU0VfQVBQTEVfSU5URVJOQUxfU0RLICYmIFVT
RV9BUFBMRV9JTlRFUk5BTF9TREspCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMRG93bmxvYWQu
aD4KICNlbHNlCkBAIC03OCwzICs4MSw1IEBACiAtIChOU1dpbmRvdyAqKWRvd25sb2FkV2luZG93
Rm9yQXV0aGVudGljYXRpb25TaGVldDooV2ViRG93bmxvYWQgKilkb3dubG9hZDsKIAogQGVuZAor
CisjZW5kaWYgLyogV2ViRG93bmxvYWRfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJEb3dubG9hZC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxv
YWQubW0KaW5kZXggNjgwZjY5ZWNlNTA2ZjY2YTM4OTgxYWViODJiNjA1MGJkZjNlZDdmOC4uNjhj
ZjY1YTMyYWE1M2NhNjhmMmUzMzlkYjhhNjM2ODQ2MzJmM2M0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9N
aXNjL1dlYkRvd25sb2FkLm1tCkBAIC00MCwxMSArNDAsNiBAQAogCiAjaW1wb3J0ICJXZWJUeXBl
c0ludGVybmFsLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NG
TmV0d29yay5oPgotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvbi5oPgotI2VuZGlm
Ci0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAY2xhc3MgTlNVUkxDb25uZWN0aW9uRGVs
ZWdhdGVQcm94eTsKQEAgLTYwLDE1ICs1NSw2IEBAIC0gKGlkKV9pbml0V2l0aExvYWRpbmdDb25u
ZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCiAtIChpZClfaW5pdFdpdGhSZXF1
ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClk
ZWxlZ2F0ZQogICAgICAgICAgICAgIGRpcmVjdG9yeTooTlNTdHJpbmcgKilkaXJlY3Rvcnk7Ci0K
LSNpZiBVU0UoQ0ZORVRXT1JLKQotLSAoaWQpX2luaXRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlv
bjooQ0ZVUkxDb25uZWN0aW9uUmVmKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3Q6KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNlCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm94eTooTlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eSAq
KXByb3h5OwotI2VuZGlmCi0KIEBlbmQKIAogQGludGVyZmFjZSBXZWJEb3dubG9hZEludGVybmFs
IDogTlNPYmplY3QgPE5TVVJMRG93bmxvYWREZWxlZ2F0ZT4KQEAgLTI0MiwxOCArMjI4LDYgQEAg
LSAoaWQpX2luaXRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5l
Y3Rpb24KICAgICByZXR1cm4gW3N1cGVyIF9pbml0V2l0aExvYWRpbmdDb25uZWN0aW9uOmNvbm5l
Y3Rpb24gcmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJlc3BvbnNlIGRlbGVnYXRlOl93ZWJJbnRl
cm5hbCBwcm94eTpwcm94eV07CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotLSAoaWQpX2luaXRX
aXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjooQ0ZVUkxDb25uZWN0aW9uUmVmKWNvbm5lY3Rpb24K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6KENGVVJMUmVxdWVzdFJlZily
ZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOihDRlVSTFJlc3Bv
bnNlUmVmKXJlc3BvbnNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihp
ZClkZWxlZ2F0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eTooTlNVUkxD
b25uZWN0aW9uRGVsZWdhdGVQcm94eSAqKXByb3h5Ci17Ci0gICAgW3NlbGYgX3NldFJlYWxEZWxl
Z2F0ZTpkZWxlZ2F0ZV07Ci0gICAgcmV0dXJuIFtzdXBlciBfaW5pdFdpdGhMb2FkaW5nQ0ZVUkxD
b25uZWN0aW9uOmNvbm5lY3Rpb24gcmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJlc3BvbnNlIGRl
bGVnYXRlOl93ZWJJbnRlcm5hbCBwcm94eTpwcm94eV07Ci19Ci0jZW5kaWYKLQogLSAoaWQpX2lu
aXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogICAgICAgICAgICAgICBkZWxl
Z2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAgICBkaXJlY3Rvcnk6KE5TU3RyaW5nICopZGly
ZWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkSW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oCmlu
ZGV4IDliMmYzOTU4NWQ5NGE4ZjViMDVkMzMzMGFjYjgxMjM3YmQwZGI5NjkuLmMxZDIxOTI2MTk1
MmE0NjdjYjNhNjlhYjYxYTU4OTRiOGEwM2FkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01p
c2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oCkBAIC0yOCwxMCArMjgsNiBAQAogIAogI2ltcG9ydCA8
V2ViS2l0TGVnYWN5L1dlYkRvd25sb2FkLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9y
dCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvbi5oPgotI2VuZGlmCi0gCiBAaW50ZXJmYWNlIFdl
YkRvd25sb2FkIChXZWJEb3dubG9hZENyZWF0aW9uKQogKyhpZClfZG93bmxvYWRXaXRoTG9hZGlu
Z0Nvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CkBAIC00MiwxMyAr
MzgsNCBAQAogKyhpZClfZG93bmxvYWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVz
dAogICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAgICAg
ICBkaXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5OwotCi0jaWYgVVNFKENGTkVUV09SSykK
LSsgKGlkKV9kb3dubG9hZFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOihDRlVSTENvbm5lY3Rp
b25SZWYpY29ubmVjdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3Q6KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNwb25zZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm94eTooaWQpcHJveHk7Ci0jZW5kaWYKLQogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmggYi9T
b3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdFZlcnNpb25DaGVja3MuaAppbmRleCBjODExMjAx
MjVkNGRmYjY5MzFhZmVkNDFlZDEwMDE5YmYwN2JmZGY0Li5iNTMzMzU0YzM3MTJiZjA2NzlmMzk4
NjNiYWViNWUxMmUzZGIzNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
YktpdFZlcnNpb25DaGVja3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdFZl
cnNpb25DaGVja3MuaApAQCAtNzIsNiArNzIsNyBAQAogI2RlZmluZSBXRUJLSVRfRklSU1RfVkVS
U0lPTl9XSVRIX0NTU19BVFRSSUJVVEVfU0VUVEVSU19JR05PUklOR19QUklPUklUWSAyMjM5IC8v
IGlPUyA2LjAKICNkZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9ZT1VUVUJFX0VNQkVE
X0lGUkFNRV9UUkFOU0ZPUk0gMjIzOSAvLyBpT1MgNi4wCiAjZGVmaW5lIFdFQktJVF9GSVJTVF9W
RVJTSU9OX1dJVEhPVVRfTEVHQUNZX0JBQ0tHUk9VTkRTSVpFX1NIT1JUSEFORF9CRUhBVklPUiAy
NjY1IC8vIGlPUyA3LjAKKyNkZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9MT0FESU5H
X0RVUklOR19DT01NT05fUlVOTE9PUF9NT0RFUyAyNjY1IC8vIGlPUyA3LjAKICNkZWZpbmUgV0VC
S0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9JTlNFQ1VSRV9DT05URU5UX0JMT0NLSU5HIDM0NTQKICNl
bmRpZiAvLyBQTEFURk9STShJT1MpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggZDJlYWY5NDM1OTNk
OTk3YzAzYjdiNjA3NzE2ZGI1MTgyNWM5Y2RjOC4uNzI1OTk4ZmIyMjIxMzllNzI4ODA5NjA4OGY5
MDk4MThiNzBiODU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTMwMSwxMyArMzAxLDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2Fk
KERvY3VtZW50TG9hZGVyKiBkb2MKIAogICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBtYWlu
UmVzb3VyY2VMb2FkZXItPmhhbmRsZSgpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBBU1NF
UlQoW1dlYkRvd25sb2FkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkV2l0
aExvYWRpbmdDRlVSTENvbm5lY3Rpb246cmVxdWVzdDpyZXNwb25zZTpkZWxlZ2F0ZTpwcm94eTop
XSk7Ci0gICAgYXV0byBjb25uZWN0aW9uID0gaGFuZGxlLT5yZWxlYXNlQ29ubmVjdGlvbkZvckRv
d25sb2FkKCk7Ci0gICAgW1dlYkRvd25sb2FkIF9kb3dubG9hZFdpdGhMb2FkaW5nQ0ZVUkxDb25u
ZWN0aW9uOmNvbm5lY3Rpb24uZ2V0KCkgcmVxdWVzdDpyZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRh
dGVIVFRQQm9keSkgcmVzcG9uc2U6cmVzcG9uc2UuY2ZVUkxSZXNwb25zZSgpIGRlbGVnYXRlOlt3
ZWJWaWV3IGRvd25sb2FkRGVsZWdhdGVdIHByb3h5Om5pbF07Ci0jZWxzZQogICAgIFtXZWJEb3du
bG9hZCBfZG93bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246aGFuZGxlLT5jb25uZWN0aW9uKCkg
cmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkgcmVzcG9uc2U6cmVz
cG9uc2UubnNVUkxSZXNwb25zZSgpIGRlbGVnYXRlOlt3ZWJWaWV3IGRvd25sb2FkRGVsZWdhdGVd
IHByb3h5Om5pbF07Ci0jZW5kaWYKIH0KIAogYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgaW50IGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCAxNGMxYmM2YzZiNjFlZTVj
NmNjODQ2NjE1YzQ4OWQzYWQ0ZTRjMTMyLi40ZDJiOGU5MjNkMzM4NWExNjU3ZGU5NjUzNmRhOWVi
ZGMwYzhmMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC0xMTcsMTMgKzExNyw2IEBAIHZvaWQgSW5pdFdl
YkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBJTklUKEN1cnNvcik7CiAjZW5kaWYKIAot
I2lmIFVTRShDRk5FVFdPUkspCi0gICAgSU5JVChHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2Up
OwotICAgIElOSVQoQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFnZSk7Ci0gICAg
SU5JVChTZXRDRlVSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYpOwotICAgIElOSVQoU2V0UmVx
dWVzdFN0b3JhZ2VTZXNzaW9uKTsKLSNlbmRpZgotCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBJ
TklUKFNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMpOwogICAgIElOSVQoU3BlZWNo
U3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQppbmRleCAwMTBmYThiNzc3MjlkMGM0
ZWFlNmI0OWY5MzFkZTA0OTI2ZDNjYjI3Li40MjhhZmI3M2I2NzFiNDQ2NjA2NmE5OGM1YzQ5OGY4
YjMwOGI5YjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMu
bW0KQEAgLTE3NjYsNyArMTc2Niw3IEBAICsgKHZvaWQpX2NsZWFyTmV0d29ya0xvYWRlclNlc3Np
b24KICsgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBv
bGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQogewogICAgIFJldGFpblB0cjxD
RkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJU
KGNvb2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBidWlsZGluZyB3aXRob3V0IFVTRShD
Rk5FVFdPUkspIGFuZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nl
c3Npb24oKSB3YXMgbm90IGNhbGxlZCBiZWZvcmVoYW5kLgorICAgIEFTU0VSVChjb29raWVTdG9y
YWdlKTsgLy8gV2lsbCBmYWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05l
d1Rlc3RpbmdTZXNzaW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KICAgICBXS1NldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGNkYTNmNTg4ZTg2YjY2YzRjNGZm
ZWQ2NjM5MTM4Zjg0NmRkODMxOWIuLmM5YjVjYWRkYzJlN2RkNjRhZjNkMmFlZTYzYWE2NzBiMDU3
NWNmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTEwMjgsMTIgKzEw
MjgsMTMgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOihOU1N0
cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKIAogI2lmICFQTEFURk9STShJT1MpCiAg
ICAgTlNSdW5Mb29wICpydW5Mb29wID0gW05TUnVuTG9vcCBtYWluUnVuTG9vcF07Ci0KKyNlbHNl
CisgICAgTlNSdW5Mb29wICpydW5Mb29wID0gV2ViVGhyZWFkTlNSdW5Mb29wKCk7CisjZW5kaWYK
ICAgICBpZiAoV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhf
TE9BRElOR19EVVJJTkdfQ09NTU9OX1JVTkxPT1BfTU9ERVMpKQogICAgICAgICBbc2VsZiBzY2hl
ZHVsZUluUnVuTG9vcDpydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopa0NGUnVuTG9vcENvbW1v
bk1vZGVzXTsKICAgICBlbHNlCiAgICAgICAgIFtzZWxmIHNjaGVkdWxlSW5SdW5Mb29wOnJ1bkxv
b3AgZm9yTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZV07Ci0jZW5kaWYKIAogICAgIFtzZWxmIF9h
ZGRUb0FsbFdlYlZpZXdzU2V0XTsKICAgICAKQEAgLTY2MTgsMjkgKzY2MTksMTkgQEAgQGVuZAog
CiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViUGVuZGluZ1B1YmxpYykKIAotI2lmICFQTEFU
Rk9STShJT1MpCiAtICh2b2lkKXNjaGVkdWxlSW5SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29w
IGZvck1vZGU6KE5TU3RyaW5nICopbW9kZQogewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZS
dW5Mb29wUmVmIHNjaGVkdWxlUGFpclJ1bkxvb3AgPSBbcnVuTG9vcCBnZXRDRlJ1bkxvb3BdOwot
I2Vsc2UKICAgICBOU1J1bkxvb3AgKnNjaGVkdWxlUGFpclJ1bkxvb3AgPSBydW5Mb29wOwotI2Vu
ZGlmCiAgICAgaWYgKHJ1bkxvb3AgJiYgbW9kZSkKICAgICAgICAgY29yZShzZWxmKS0+YWRkU2No
ZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHNjaGVkdWxlUGFpclJ1bkxvb3AsIChDRlN0
cmluZ1JlZiltb2RlKSk7CiB9CiAKIC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5Mb29wOihOU1J1
bkxvb3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZQogewotI2lmIFVTRShDRk5F
VFdPUkspCi0gICAgQ0ZSdW5Mb29wUmVmIHNjaGVkdWxlUGFpclJ1bkxvb3AgPSBbcnVuTG9vcCBn
ZXRDRlJ1bkxvb3BdOwotI2Vsc2UKICAgICBOU1J1bkxvb3AgKnNjaGVkdWxlUGFpclJ1bkxvb3Ag
PSBydW5Mb29wOwotI2VuZGlmCiAgICAgaWYgKHJ1bkxvb3AgJiYgbW9kZSkKICAgICAgICAgY29y
ZShzZWxmKS0+cmVtb3ZlU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHNjaGVkdWxl
UGFpclJ1bkxvb3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CiB9Ci0jZW5kaWYKIAogc3RhdGljIEJP
T0wgZmluZFN0cmluZyhOU1ZpZXcgPFdlYkRvY3VtZW50U2VhcmNoaW5nPiAqc2VhcmNoVmlldywg
TlNTdHJpbmcgKnN0cmluZywgV2ViRmluZE9wdGlvbnMgb3B0aW9ucykKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCA3OTZjMGY0MmE3Njk5ZjE4NmYw
ZTRjMDM3ZDExNDY3YzQ2YjEwMjk0Li5mNDMwNDk5NjQ1ZDdmOTUwMDdjMWNiYTBlOWNmYWMwMTk4
Y2YzYzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBA
IC0xOTgsMTAgKzE5OCw4IEBAIHR5cGVkZWYgZW51bSB7CiAKIEBpbnRlcmZhY2UgV2ViVmlldyAo
V2ViUGVuZGluZ1B1YmxpYykKIAotI2lmICFUQVJHRVRfT1NfSVBIT05FCiAtICh2b2lkKXNjaGVk
dWxlSW5SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9k
ZTsKIC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZv
ck1vZGU6KE5TU3RyaW5nICopbW9kZTsKLSNlbmRpZgogCiAtIChCT09MKWZpbmRTdHJpbmc6KE5T
U3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KFdlYkZpbmRPcHRpb25zKW9wdGlvbnM7CiAtIChET01S
YW5nZSAqKURPTVJhbmdlT2ZTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHJlbGF0aXZlVG86KERP
TVJhbmdlICopcHJldmlvdXNSYW5nZSBvcHRpb25zOihXZWJGaW5kT3B0aW9ucylvcHRpb25zOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKaW5kZXggODA1ZmEy
N2Q1NjAxYmRmZmExZmJlNGI4ZWZmYjNlYzQ1YWNhZDE3Yi4uMjdlZjNiZDAwMzdhNzZhMDExNjg4
MWNiMzhlMTQxYmRmY2I4OTdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5oCkBAIC05NCwxMiArOTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhQXJyYXkoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBDRkFycmF5UmVm
KSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotI2lmIFVTRShDRk5FVFdP
UkspCi0gICAgdmlydHVhbCB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKLSNlbHNlCiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlICopIG92ZXJyaWRlOwogI2VuZGlmCi0jZW5kaWYK
ICNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BB
Q0VfQVVUSF9DQUxMQkFDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAppbmRleCAxOWFiYzlhYmZmMDU3YmYwM2Y1MmE4OTdiYTU0NmE4ZTll
ZWJjMWFlLi44ZThlNzQ0ZTMzOTE3MjUxZDZkNzMyMTY5Mzc3YzdjZTAzMzJiODZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0x
OTgsNyArMTk4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9j
ZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWUKIAogICAgIHNldENhbkhhbmRs
ZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKHBhcmFtZXRlcnMuY2FuSGFuZGxlSFRUUFNTZXJ2
ZXJUcnVzdEV2YWx1YXRpb24pOwogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JL
KQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFNlc3Npb25UcmFja2VyOjpzZXRJZGVudGlmaWVy
QmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5t
bQppbmRleCBmM2M2ZWNiYmIwMWExNjAyOWY4ZGVjZjljNGMxYzM4YTAyN2FjMDc5Li4zZDYyNWM4
ZTI2YmZmN2RlNDhiZjdhNWYxZjA0MDk4Yjg4YzZmYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCkBAIC0zNCwxOCArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotCi12b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNwb25zZUFz
eW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2ZSZXNw
b25zZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsK
LQotICAgIG1fY2xpZW50LndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoY2ZSZXNwb25zZSk7Ci0KLSAg
ICBtX2hhbmRsZS0+Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShjZlJlc3BvbnNlKTsKLX0KLQot
I2VsaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCisjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAK
IHZvaWQgTmV0d29ya0xvYWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSwgTlNDYWNoZWRVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkKIHsKQEAgLTU2LDYgKzQ1
LDYgQEAgdm9pZCBOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBOU0NhY2hlZFVSTFJlc3AKICAgICBtX2hhbmRsZS0+Y29udGludWVXaWxs
Q2FjaGVSZXNwb25zZShuc1Jlc3BvbnNlKTsKIH0KIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JL
KQorI2VuZGlmIC8vICFVU0UoTkVUV09SS19TRVNTSU9OKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAppbmRleCA2MzA1
ODBmMzUxNzBlMmEzZTQ5Y2Y1N2IwMzgzOTI1MWRjY2M4MTEyLi5iOGRiNmUxZTFlYWNiZDdkYWM0
NjgxMTRjNzIwNGUyY2VjZDljMzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
RG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fk
cy9Eb3dubG9hZC5oCkBAIC00OCwxMCArNDgsNiBAQCBPQkpDX0NMQVNTIFdLRG93bmxvYWRBc0Rl
bGVnYXRlOwogI2luY2x1ZGUgPG1lbW9yeT4KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykK
LSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxEb3dubG9hZFByaXYuaD4KLSNlbmRpZgotCiBuYW1l
c3BhY2UgSVBDIHsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CkBAIC0xMDUsMTAgKzEwMSw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSk7CiAgICAgdm9pZCBkaWRDYW5j
ZWwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsKIAotI2lmIFVTRShDRk5F
VFdPUkspCi0gICAgRG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0aGVudGljYXRpb25D
bGllbnQoKTsKLSNlbmRpZgotCiAgICAgLy8gQXV0aGVudGljYXRpb24KICAgICBzdGF0aWMgdm9p
ZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik7CiAgICAgc3RhdGljIHZvaWQgcmVjZWl2
ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJik7CkBAIC0xNDIsMTAgKzEzNCw2IEBAIHByaXZhdGU6CiAgICAg
UmV0YWluUHRyPFdLRG93bmxvYWRBc0RlbGVnYXRlPiBtX2RlbGVnYXRlOwogI2VuZGlmCiAjZW5k
aWYKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIFJldGFpblB0cjxDRlVSTERvd25sb2FkUmVmPiBt
X2Rvd25sb2FkOwotICAgIFJlZlB0cjxEb3dubG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50PiBtX2F1
dGhlbnRpY2F0aW9uQ2xpZW50OwotI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShFRkwpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50
PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZT4g
bV9yZXNvdXJjZUhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3du
bG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fk
cy9pb3MvRG93bmxvYWRJT1MubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwZTgw
ZTYyMDM4NGMxNzgwMTcwMTM4NjFmNzUyMDhlNzViNWNjMDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fk
cy9pb3MvRG93bmxvYWRJT1MubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxOTYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRG93bmxvYWQuaCIKLQotI2lm
IFBMQVRGT1JNKElPUykgJiYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0KLSNpbXBvcnQgIkRhdGFS
ZWZlcmVuY2UuaCIKLSNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRs
ZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Ci0jaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgotCi0jaWYgVVNFKENGTkVUV09S
SykKLSNpbXBvcnQgPENGTmV0d29yay9DRlVSTERvd25sb2FkLmg+Ci0jZW5kaWYKLQotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0jaWYgVVNFKENGTkVU
V09SSykKLS8vIEZJWE1FOiBJZiBwb3NzaWJsZSwgd2Ugc2hvdWxkIGNvbnNpZGVyIG1vdmluZyBz
b21lIGNhbGxiYWNrcyBvZmYgdGhlIG1haW4gdGhyZWFkIG9yIGF0IGxlYXN0Ci0vLyBtYWtpbmcg
dGhlbSBhc3luY2hvbm91cyBjYWxscy4KLXN0YXRpYyB2b2lkIGRpc3BhdGNoT25NYWluVGhyZWFk
KHZvaWQoXmJsb2NrKSgpKQotewotICAgIGlmIChSdW5Mb29wOjppc01haW4oKSkgewotICAgICAg
ICBibG9jaygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZGlzcGF0Y2hfc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBibG9jayk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRG93
bmxvYWQqIHRvRG93bmxvYWQoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RG93bmxvYWQqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci19
Ci0KLXN0YXRpYyB2b2lkIHNldFVwRG93bmxvYWRDbGllbnQoQ0ZVUkxEb3dubG9hZENsaWVudCYg
Y2xpZW50LCBEb3dubG9hZCYgZG93bmxvYWQpCi17Ci0gICAgbWVtc2V0KCZjbGllbnQsIDAsIHNp
emVvZihjbGllbnQpKTsKLSAgICBjbGllbnQuY2xpZW50SW5mbyA9ICZkb3dubG9hZDsKLQotICAg
IGNsaWVudC5kaWRTdGFydCA9IFtdKENGVVJMRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRv
RG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFN0YXJ0KCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0K
LSAgICBjbGllbnQud2lsbFNlbmRSZXF1ZXN0ID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZVUkxS
ZXF1ZXN0UmVmIHJlcXVlc3QsIENGVVJMUmVzcG9uc2VSZWYsIGNvbnN0IHZvaWQqKSAtPiBDRlVS
TFJlcXVlc3RSZWYgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZVUkxSZXF1ZXN0UmVm
PihDRlJldGFpbihyZXF1ZXN0KSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC5kaWRSZWNlaXZlUmVz
cG9uc2UgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57
Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRSZWNlaXZlUmVzcG9uc2Uo
cmVzcG9uc2UpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZFJlY2VpdmVE
YXRhID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZJbmRleCBsZW5ndGgsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAg
IHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFJlY2VpdmVEYXRhKGxlbmd0aCk7Ci0gICAgICAg
IH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuc2hvdWxkRGVjb2RlRGF0YU9mTUlNRVR5cGUgPSBb
XShDRlVSTERvd25sb2FkUmVmLCBDRlN0cmluZ1JlZiBlbmNvZGluZ1R5cGUsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pIC0+IEJvb2xlYW4gewotICAgICAgICBfX2Jsb2NrIEJPT0wgcmV0dXJuVmFs
dWUgPSBOTzsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHJl
dHVyblZhbHVlID0gdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+c2hvdWxkRGVjb2RlU291cmNlRGF0
YU9mTUlNRVR5cGUoZW5jb2RpbmdUeXBlKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZE9iamVjdE5hbWUgPSBbXShDRlVSTERvd25sb2FkUmVmIGRvd25sb2FkUmVmLCBDRlN0
cmluZ1JlZiBvYmplY3ROYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRp
c3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICBib29sIGFsbG93T3ZlcndyaXRlOwot
ICAgICAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUob2JqZWN0TmFtZSwgYWxsb3dP
dmVyd3JpdGUpOwotICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKLSAgICAg
ICAgICAgICAgICBDRlVSTERvd25sb2FkU2V0RGVzdGluYXRpb24oZG93bmxvYWRSZWYsIHJlaW50
ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZGVzdGluYXRpb25d
KSwgYWxsb3dPdmVyd3JpdGUpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRp
ZENyZWF0ZURlc3RpbmF0aW9uID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZVUkxSZWYgcGF0aCwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZChe
ewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlkQ3JlYXRlRGVzdGluYXRp
b24oQ0ZVUkxHZXRTdHJpbmcocGF0aCkpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xp
ZW50LmRpZEZpbmlzaCA9IFtdKENGVVJMRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93
bmxvYWQoY2xpZW50SW5mbyktPmRpZEZpbmlzaCgpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0g
ICAgY2xpZW50LmRpZEZhaWwgPSBbXShDRlVSTERvd25sb2FkUmVmIGRvd25sb2FkUmVmLCBDRkVy
cm9yUmVmIGVycm9yLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNo
T25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICBhdXRvIHJlc3VtZURhdGEgPSBhZG9wdENGKENG
VVJMRG93bmxvYWRDb3B5UmVzdW1lRGF0YShkb3dubG9hZFJlZikpOwotICAgICAgICAgICAgdG9E
b3dubG9hZChjbGllbnRJbmZvKS0+ZGlkRmFpbChlcnJvciwgSVBDOjpEYXRhUmVmZXJlbmNlKHJl
c3VtZURhdGEgPyBDRkRhdGFHZXRCeXRlUHRyKHJlc3VtZURhdGEuZ2V0KCkpIDogbnVsbHB0ciwg
cmVzdW1lRGF0YSA/IENGRGF0YUdldExlbmd0aChyZXN1bWVEYXRhLmdldCgpKSA6IDApKTsKLSAg
ICAgICAgfSk7Ci0gICAgfTsKLX0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCi12b2lkIERv
d25sb2FkOjpzdGFydCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3du
bG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotI2lmIFVTRShDRk5FVFdP
UkspCi0gICAgQ0ZVUkxEb3dubG9hZENsaWVudCBjbGllbnQ7Ci0gICAgc2V0VXBEb3dubG9hZENs
aWVudChjbGllbnQsICp0aGlzKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIK
LSAgICBtX2Rvd25sb2FkID0gYWRvcHRDRihDRlVSTERvd25sb2FkQ3JlYXRlQW5kU3RhcnRXaXRo
TG9hZGluZ0Nvbm5lY3Rpb24oTlVMTCwgaGFuZGxlLT5yZWxlYXNlQ29ubmVjdGlvbkZvckRvd25s
b2FkKCkuZ2V0KCksIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpLCByZXNw
b25zZS5jZlVSTFJlc3BvbnNlKCksICZjbGllbnQpKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwb3AKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgotfQotCi12b2lkIERv
d25sb2FkOjpjYW5jZWwoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93
bmxvYWQ6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1EaWRGaW5pc2goKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVX
aXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRDYW5jZWxsYXRp
b24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRI
YW5kbGluZyhjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRDaGFsbGVuZ2VS
ZWplY3Rpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25s
b2Fkcy9tYWMvRG93bmxvYWRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRz
L21hYy9Eb3dubG9hZE1hYy5tbQppbmRleCA5YzdkOTUzMzg1ZWY2M2E2NmRmNzU2MjcxOGVjOGE3
NmQ3ZGZiOTY1Li40ZmU1M2FjNjU0YzBlMDBkYzJjY2U5ODg5OWRmNjAwMzRkYmJmOGU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5t
bQpAQCAtMjYsMTAgKzI2LDExIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkRvd25s
b2FkLmgiCiAKLSNpZiBQTEFURk9STShNQUMpICYmICFVU0UoTkVUV09SS19TRVNTSU9OKQorI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKE5FVFdPUktfU0VTU0lPTikKIAogI2ltcG9ydCA8V2Vi
Q29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50
aWNhdGlvbk1hYy5oPgorI2ltcG9ydCA8V2ViQ29yZS9OU1VSTERvd25sb2FkU1BJLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNl
SGFuZGxlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+CkBAIC0z
NywxNCArMzgsNiBAQAogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiV2ViUGFn
ZS5oIgogCi1AaW50ZXJmYWNlIE5TVVJMRG93bmxvYWQgKFdlYk5TVVJMRG93bmxvYWREZXRhaWxz
KQotKyhpZClfZG93bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAq
KWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OihOU1VSTFJl
cXVlc3QgKilyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTooTlNV
UkxSZXNwb25zZSAqKXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClk
ZWxlZ2F0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6KGlkKXByb3h5Owot
QGVuZAotCiBAaW50ZXJmYWNlIFdLRG93bmxvYWRBc0RlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJM
RG93bmxvYWREZWxlZ2F0ZT4gewogICAgIFdlYktpdDo6RG93bmxvYWQqIF9kb3dubG9hZDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAppbmRleCA2YWYzMTdlZGNjY2IzZjM3OGVkODk0OTFjNGFkZjdiNmNlYjFiYmU5
Li5lZDA1ZmY2MjViYjI5MGJiOWZmOGUzMjc4YjAyYWRmY2NkNWIwNTRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpl
bmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8
PCB0ZXh0Q2hlY2tlclN0YXRlOwogICAgIGVuY29kZXIgPDwgZnVsbEtleWJvYXJkQWNjZXNzRW5h
YmxlZDsKICAgICBlbmNvZGVyIDw8IGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsOwotI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcjsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKENPQ09BKQpAQCAtMjMwLDcgKzIzMCw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9j
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlk
ZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDJm
ODBjNjNkNzgzNTQ5MDllZWFkNTJlNjhiNGY4MjljMWMxNzk1NjIuLjAzMzUwMTEwMmM0YWZkOGU0
NDZhZmY3N2EwMWM0MDcwNWQ0NmQ4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTIxLDcgKzEyMSw3IEBAIHN0
cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIGRvdWJsZSBkZWZhdWx0
UmVxdWVzdFRpbWVvdXRJbnRlcnZhbDsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFN0cmluZyB1aVByb2Nlc3NCdW5kbGVJ
ZGVudGlmaWVyOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9t
YWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KaW5kZXggZGZmYjNlMDYzZDU2YWRhMTdkNWNk
NTRjZmUxNWUwMzA5OGM1YWUxNS4uZDBkNGM3MDg1MWRlOTk4YWI5ZWQyOWI1ZTgwOTExZjkyZmRj
NmIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1l
bnRDb2RlcnNNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNNYWMubW0KQEAgLTM5LDEwICszOSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Jl
c291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdC5oPgotI2Vu
ZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogI2ltcG9ydCA8V2Vi
Q29yZS9BVkZvdW5kYXRpb25TUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQuaD4KQEAgLTU3LDM2ICs1Myw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgSVBDIHsKIAotI2lmIFVTRShDRk5FVFdPUkspCi12b2lkIEFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCi17Ci0g
ICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gcmVxdWVzdFRvU2VyaWFsaXplID0gcmVzb3Vy
Y2VSZXF1ZXN0LmNmVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKLQotICAgIGJvb2wg
cmVxdWVzdElzUHJlc2VudCA9IHJlcXVlc3RUb1NlcmlhbGl6ZTsKLSAgICBlbmNvZGVyIDw8IHJl
cXVlc3RJc1ByZXNlbnQ7Ci0KLSAgICBpZiAoIXJlcXVlc3RJc1ByZXNlbnQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIFdlIGRvbid0IHNlbmQgSFRUUCBib2R5IG92ZXIgSVBDIGZvciBiZXR0
ZXIgcGVyZm9ybWFuY2UuCi0gICAgLy8gQWxzbywgaXQncyBub3QgYWx3YXlzIHBvc3NpYmxlIHRv
IGRvLCBhcyBzdHJlYW1zIGNhbiBvbmx5IGJlIGNyZWF0ZWQgaW4gcHJvY2VzcyB0aGF0IGRvZXMg
bmV0d29ya2luZy4KLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByZXF1ZXN0SFRUUEJvZHkgPSBh
ZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdEJvZHkocmVxdWVzdFRvU2VyaWFsaXpl
LmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gcmVxdWVzdEhUVFBCb2R5
U3RyZWFtID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5U3RyZWFtKHJl
cXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSkpOwotICAgIGlmIChyZXF1ZXN0SFRUUEJvZHkgfHwgcmVx
dWVzdEhUVFBCb2R5U3RyZWFtKSB7Ci0gICAgICAgIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgbXV0
YWJsZVJlcXVlc3QgPSBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgwLCByZXF1ZXN0VG9T
ZXJpYWxpemUuZ2V0KCkpOwotICAgICAgICByZXF1ZXN0VG9TZXJpYWxpemUgPSBhZG9wdENGKG11
dGFibGVSZXF1ZXN0KTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RCb2R5KG11
dGFibGVSZXF1ZXN0LCBuaWwpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdEJv
ZHlTdHJlYW0obXV0YWJsZVJlcXVlc3QsIG5pbCk7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeSA9IGFkb3B0Q0YoV0tDRlVSTFJlcXVlc3RDcmVhdGVT
ZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCksIElQQzo6
dG9rZW5OdWxsVHlwZVJlZigpKSk7Ci0gICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZGljdGlvbmFy
eS5nZXQoKSk7Ci0KLSAgICAvLyBUaGUgZmFsbGJhY2sgYXJyYXkgaXMgcGFydCBvZiBDRlVSTFJl
cXVlc3QsIGJ1dCBpdCBpcyBub3QgZW5jb2RlZCBieSBXS0NGVVJMUmVxdWVzdENyZWF0ZVNlcmlh
bGl6YWJsZVJlcHJlc2VudGF0aW9uLgotICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXF1ZXN0LnJl
c3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KCk7Ci0gICAgZW5j
b2Rlci5lbmNvZGVFbnVtKHJlc291cmNlUmVxdWVzdC5yZXF1ZXN0ZXIoKSk7Ci19Ci0jZWxzZQog
dm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShB
cmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0KQogewogICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlcXVlc3RUb1NlcmlhbGl6
ZSA9IHJlc291cmNlUmVxdWVzdC5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSk7CkBA
IC0xMTIsNyArNzgsNiBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5j
b2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcgogICAgIGVuY29kZXIgPDwg
cmVzb3VyY2VSZXF1ZXN0LnJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFj
a0FycmF5KCk7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHJlc291cmNlUmVxdWVzdC5yZXF1ZXN0
ZXIoKSk7CiB9Ci0jZW5kaWYKIAogYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46
OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewpAQCAtMTI5LDIwICs5NCwxMiBAQCBib29sIEFyZ3Vt
ZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlcgogICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGljdGlvbmFyeSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgUmV0YWlu
UHRyPENGVVJMUmVxdWVzdFJlZj4gY2ZVUkxSZXF1ZXN0ID0gYWRvcHRDRihXS0NyZWF0ZUNGVVJM
UmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJ
UEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOwotICAgIGlmICghY2ZVUkxSZXF1ZXN0KQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXNvdXJjZVJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3Qo
Y2ZVUkxSZXF1ZXN0LmdldCgpKTsKLSNlbHNlCiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4g
bnNVUkxSZXF1ZXN0ID0gV0tOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRp
b24oZGljdGlvbmFyeS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpOwogICAgIGlmICgh
bnNVUkxSZXF1ZXN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXNvdXJjZVJlcXVl
c3QgPSBSZXNvdXJjZVJlcXVlc3QobnNVUkxSZXF1ZXN0LmdldCgpKTsKLSNlbmRpZgotICAgIAor
CiAgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0Zh
bGxiYWNrQXJyYXk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZUNvbnRlbnREaXNw
b3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBjY2MwYjZjZjRmZmU1NTQxY2JhYzI4N2NhNzhiYTRmY2VmNTZiZGU5Li5mNDI2NjBhYjMwODMx
ODAwOThjMTdlZmUzMDVkNjQ0NWQzZjhhMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NzIsNyArNjcyLDYgQEAKIAkJMkRB
OTQ0QTIxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYlBsYXRmb3JtVG91Y2hQb2ludElPUy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDQ5QjE4ODRF
NEYwMDBFRDg2REIgLyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcCAqLzsgfTsKIAkJMkRB
OTQ0QTMxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYlRvdWNoRXZlbnRJT1MuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0OUMxODg0RTRGMDAwRUQ4
NkRCIC8qIFdlYlRvdWNoRXZlbnRJT1MuY3BwICovOyB9OwogCQkyREE5NDRBNDE4ODRFNEYwMDBF
RDg2REIgLyogR2VzdHVyZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyREE5NDQ5RDE4ODRFNEYwMDBFRDg2REIgLyogR2VzdHVyZVR5cGVzLmgg
Ki87IH07Ci0JCTJEQTk0NEE3MTg4NEU5NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEE2MTg4NEU5
NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5tbSAqLzsgfTsKIAkJMkRBOTQ0QUQxODg0RTlCQTAw
RUQ4NkRCIC8qIFRleHRDaGVja2VySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0QTkxODg0RTlCQTAwRUQ4NkRCIC8qIFRleHRDaGVja2Vy
SU9TLm1tICovOyB9OwogCQkyREE5NDRBRjE4ODRFOUJBMDBFRDg2REIgLyogV2ViUGFnZVByb3h5
SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRB
OTQ0QUIxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlBhZ2VQcm94eUlPUy5tbSAqLzsgfTsKIAkJMkRB
OTQ0QjAxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlByb2Nlc3NQcm94eUlPUy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEFDMTg4NEU5QkEwMEVE
ODZEQiAvKiBXZWJQcm9jZXNzUHJveHlJT1MubW0gKi87IH07CkBAIC0yODMzLDcgKzI4MzIsNiBA
QAogCQkyREE5NDQ5QjE4ODRFNEYwMDBFRDg2REIgLyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9T
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlBsYXRmb3JtVG91
Y2hQb2ludElPUy5jcHA7IHBhdGggPSBpb3MvV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0OUMxODg0RTRGMDAwRUQ4NkRCIC8q
IFdlYlRvdWNoRXZlbnRJT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViVG91Y2hFdmVudElPUy5jcHA7IHBhdGggPSBpb3MvV2ViVG91Y2hFdmVudElPUy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQTk0NDlEMTg4NEU0RjAwMEVEODZEQiAv
KiBHZXN0dXJlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR2VzdHVy
ZVR5cGVzLmg7IHBhdGggPSBpb3MvR2VzdHVyZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTJEQTk0NEE2MTg4NEU5NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERvd25sb2FkSU9TLm1tOyBwYXRo
ID0gRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkRBOTQ0QTkxODg0RTlCQTAwRUQ4NkRCIC8qIFRleHRDaGVja2VySU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGV4dENoZWNrZXJJT1MubW07IHBh
dGggPSBpb3MvVGV4dENoZWNrZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJEQTk0NEFCMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQYWdlUHJveHlJT1MubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJQYWdlUHJveHlJT1MubW07IHBhdGgg
PSBpb3MvV2ViUGFnZVByb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
REE5NDRBQzE4ODRFOUJBMDBFRDg2REIgLyogV2ViUHJvY2Vzc1Byb3h5SU9TLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViUHJvY2Vzc1Byb3h5SU9TLm1tOyBw
YXRoID0gaW9zL1dlYlByb2Nlc3NQcm94eUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTUxNDgsNyArNTE0Niw2IEBACiAJCTJEQTk0NEE1MTg4NEU5M0MwMEVEODZEQiAvKiBp
b3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTJEQTk0
NEE2MTg4NEU5NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5tbSAqLywKIAkJCSk7CiAJCQluYW1l
ID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTk1MTYsNyArOTUxMyw2IEBA
CiAJCQkJNTE4RThGMDcxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxOEU4RjA5MTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZEF1dGhlbnRpY2F0
aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExREY2MzEyMThFMEI3QzgwMDNBM0Uy
QSAvKiBEb3dubG9hZENsaWVudC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTJEQTk0NEE3MTg4NEU5
NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxOEU4RjBE
MTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUx
OEU4RjBCMTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFCN0Q0Q0IxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDVkZWMzN2FlNWU1ZmM2NTU3
OTM1ZDMxYWNhMjJlYWM1YTYxOTBjMDEuLjliODJjODM5MDA1Mjc4MmJmZTFkNjJkZDM5ZDUzY2Ni
Y2MyMmViMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0yODcsNyArMjg3LDcgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChXZWJQYWdl
R3JvdXBQcm94eSogcGFnZUdyb3UKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgYm9vbCBlbmFibGVkKQog
ewogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFRoaXMgdGVzdC1vbmx5IGZ1bmN0aW9u
IGRvZXNuJ3Qgd29yayB3aXRoIE5ldHdvcmtQcm9jZXNzLCA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExNTI3ND4uCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShD
Rk5FVFdPUkspIHx8IFVTRShTT1VQKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkK
ICAgICBpZiAoZW5hYmxlZCkKICAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5z
dXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9u
SUQoKSk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4
IDAzZjI4ODIzMDIxMTM2ZmUwOGRkMmY3M2M1NGFiYjM1ZjMzYjhlOGYuLmM3MTg1YmZlNTI0ODVk
OTkxYmQwMmJiZTE3NzVhODhiODNlZTkxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRl
cmZhY2UubW0KQEAgLTEyMSwxMyArMTIxLDYgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVy
ZmFjZSh2b2lkKQogICAgICAgICBJTklUKFdpbmRvd1NldEFscGhhKTsKICNlbmRpZiAvLyAhUExB
VEZPUk0oSU9TKQogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICAgICAgSU5JVChHZXREZWZhdWx0
SFRUUENvb2tpZVN0b3JhZ2UpOwotICAgICAgICBJTklUKENvcHlDcmVkZW50aWFsRnJvbUNGUGVy
c2lzdGVudFN0b3JhZ2UpOwotICAgICAgICBJTklUKFNldENGVVJMUmVxdWVzdFNob3VsZENvbnRl
bnRTbmlmZik7Ci0gICAgICAgIElOSVQoU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKTsKLSNlbmRp
ZgotCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXRW
b2ljZUlkZW50aWZpZXJzKTsKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXREZWZhdWx0
Vm9pY2VJZGVudGlmaWVyRm9yTG9jYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDAzYzUyNDM3YTAwMjVjNDIxN2YxZDM2YTY4MjkyMjUxYjY1Mjg2Zjcu
LmUwMzA4MTYxMDIxNTJmODk2NDAzOGVmMGY3MTM5MjdhYjM3MjFhMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgV2Vi
UHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlRm9udFNtb290aGlu
ZykKICAgICAgICAgc2V0U2hvdWxkVXNlRm9udFNtb290aGluZyh0cnVlKTsKIAotI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFNl
c3Npb25UcmFja2VyOjpzZXRJZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRs
ZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKQEAgLTQ1NywxNCArNDU3LDE0IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6ZnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRBY2Nl
c3NFbmFibGVkKQogCiB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENG
TkVUV09SSykgfHwgVVNFKFNPVVApCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQog
ICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oc2Vzc2lvbklEKTsKICNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0jaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQorI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoU09VUCkKICAgICBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oc2Vzc2lv
bklEKTsKICNlbmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267567</attachid>
            <date>2015-12-17 09:49:59 -0800</date>
            <delta_ts>2015-12-17 10:47:37 -0800</delta_ts>
            <desc>Patch to find build errors (fix WebDownload on iOS) v2</desc>
            <filename>bug-137936-20151217094920.patch</filename>
            <type>text/plain</type>
            <size>131167</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE4YmM0YTczMTU0ODcyYTg1OTc1NjNm
YWE0MDRlYzg0NjMyM2RhODAuLjE2YzdjYzM4YjU4NWJiMTU3ODFjOGRiOWMyZjU4MjMwYjkxYmRh
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTItMTcgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgVVNFKENGTkVUV09SSykrUExBVEZPUk0o
Q09DT0EpIGNvZGUgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM3OTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxNS0xMi0xNiAgQW5kcmVhcyBLbGluZyAg
PGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgR2l2ZSBrZXJuZWwgVk0gc29tZSBoaW50cyBh
Ym91dCBub24tbGl2ZSBtZW1vcnktY2FjaGVkIHJlc291cmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0ODdl
YTUxYTY3MjEwMzFlMzY0MGU2NjQzODYzZGE0ZmFiZDMwNjIxLi43M2M5MjlhOWNmNjcwYTQ3Mjcy
NjI4MTU0ZGE0NTMxNGEyNWE4ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMyIEBACisyMDE1
LTEyLTE3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIFVTRShDRk5FVFdPUkspK1BMQVRGT1JNKENPQ09BKSBjb2RlIHBhdGgKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzkzNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbW9zdCBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9t
YWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NoZWR1bGVBbGwp
OiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJy
YXkpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvbWFjL1BhZ2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6YWRkU2NoZWR1bGVQYWlyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJl
bW92ZVNjaGVkdWxlUGFpcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJl
Z2lzdGVyTWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVWaWRlb0xheWVyR3Jhdml0eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
aW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2Uu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNGKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvcHlDb29raWVzRm9yVVJMV2l0aEZpcnN0UGFydHlVUkwpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlQ29va2llcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5k
bGluZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0OjpSZXNvdXJjZVJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0OjpjYWNoZVBhcnRpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OnNldENhY2hlUGFydGl0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9uc2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6YWRkVG9IVFRQSGVhZGVyTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmg6
CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjplbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1E
YXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRp
YWxDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnRvTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVu
Y2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6bnNDcmVkZW50aWFs
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OmlzRW1wdHkpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29j
b2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZTo6ZW5jb2RpbmdSZXF1aXJl
c1BsYXRmb3JtRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnR5cGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpuc1NwYWNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVlc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJl
c291cmNlUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3Mv
UXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1t
OgorICAgICAgICAoLVtXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIGRldGFjaEhh
bmRsZV0pOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjp+UXVpY2tMb29rSGFu
ZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1Nl
dCk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdh
dGUgaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViUmVz
b3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSBfc2VuZERpZFJlY2VpdmVSZXNwb25zZUlmTmVj
ZXNzYXJ5XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29r
RGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YUFycmF5Ol0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlk
UmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJl
c291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdh
dGUgY29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UXVpY2tMb29rSGFuZGxlOjpkaWRSZWNlaXZlRGF0YUFycmF5KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW06IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6OnNldEF1dGhlbnRpY2F0aW9uQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjphdXRoZW50aWNhdGlvbkNsaWVudCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y29va2llU3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW06CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTlNF
cnJvckZyb21SZXNvdXJjZUVycm9yQmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om5zRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgTlNFcnJvciAqKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Om9wZXJhdGlvblF1ZXVlRm9yQXN5bmNDbGllbnRzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWxlZ2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xv
YWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50
OjpwbGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1t
OgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIGRldGFjaEhhbmRs
ZV0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW06CisgICAg
ICAgIChXZWJDb3JlOjpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvY29jb2EvTlNVUkxEb3dubG9hZFNQSS5oOgor
CiAyMDE1LTEyLTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgTWFrZSBTZXNzaW9uSUQgdXNlIGludEhhc2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRl
eCBlNWQyODM3ZTlhNjBjY2NjNjEwZDU5MzA1MDNjZWY4ZjFmYWM1ZDg3Li44NWRkOWFhYzg2ZDUx
NzY1ZjM2NDQ1YjhlNGY1ZjBkY2IxMjIyM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjcgQEAKKzIwMTUtMTItMTcgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW1vdmUgVVNFKENGTkVUV09SSykrUExBVEZPUk0oQ09DT0EpIGNvZGUgcGF0aAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3OTM2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dl
YkRvd25sb2FkLmg6CisgICAgICAgICogTWlzYy9XZWJEb3dubG9hZC5tbToKKyAgICAgICAgKiBN
aXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaDoKKyAgICAgICAgKiBNaXNjL1dlYktpdFZlcnNpb25D
aGVja3MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNlTG9h
ZFRvRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2Vi
Q29yZVN5c3RlbUludGVyZmFjZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3NldEN1cnJlbnROZXR3b3Jr
TG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZy
YW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2NoZWR1bGVJblJ1bkxv
b3A6Zm9yTW9kZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKGZpbmRTdHJpbmcpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxNS0xMi0xNiAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIFtGZXRjaCBB
UEldIEFkZCBmZXRjaCBBUEkgY29tcGlsZSB0aW1lIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlMzQ1Y2Ey
YTdhYmM2MjgzMTliMDg4ZTMzNTRlMmQ2MzcxOWZjOTc1Li4wZDlmNDQ4Y2Y1NTcwMjc1ZDE0MmYz
NzU1ZDIxNzg1ZDBhZTk5YWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTUtMTIt
MTcgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
VVNFKENGTkVUV09SSykrUExBVEZPUk0oQ09DT0EpIGNvZGUgcGF0aAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3OTM2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyk6IERlbGV0ZWQu
CisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAqIFNoYXJl
ZC9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJl
ZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVz
dD46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVz
b3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAg
ICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpp
bml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpk
ZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisKIDIwMTUtMTItMTYgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQcm9ncmVzcyB0b3dh
cmRzIGltcGxlbWVudGluZyBkb3dubG9hZHMgd2l0aCBOZXR3b3JrU2Vzc2lvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgK
aW5kZXggNTkxODE4YzNiZGI4MmJhOWMyYjVhYTU5YTZkZWI2NGIzMzAxMGM5ZS4uNjI2NGY4ODc3
YWFmMTg1YTZiYWZjZDg4NDNkMWM1MmZhOWIwNGJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC01NDUsOSAr
NTQ1LDYgQEAKICNpZiBQTEFURk9STShJT1MpCiAKICNkZWZpbmUgSEFWRV9SRUFETElORSAxCi0j
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNkZWZpbmUgVVNFX0NGTkVUV09SSyAxCi0jZW5k
aWYKICNkZWZpbmUgVVNFX1VJS0lUX0VESVRJTkcgMQogI2RlZmluZSBVU0VfV0VCX1RIUkVBRCAx
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBjMDlkM2Q5NGYzMWE2OWM2ODg3ZDI3NTQwMjQ4NTI2OTkxYmE4Y2NkLi43ZTFlODI2
NDRkNTg0ZWY2NTc5N2E4ZDcyZjI4NTNjYWVjNGEyY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzc0LDcgKzI3NzQsNiBA
QAogCQk3RTY2RTIzNDE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFU
Qy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U2NkUy
MzIxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCAqLzsgfTsK
IAkJN0U2NkUyMzQxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJU
Qy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U2NkUy
MzIxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oICovOyB9
OwogCQk3RTdERTFGRDE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTdERTFGQzE5
NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gKi87IH07Ci0JCTdFN0RF
MjAyMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTdERTIwMTE5NUNFRkNEMDAzNTM2
M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tICovOyB9OwogCQk3RThGQURDNDE5OUE5NUIxMDA3
MTQ5NjggLyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOEZBREMzMTk5QTk1QjEwMDcxNDk2OCAvKiBTdWJy
ZXNvdXJjZUxvYWRlckNvY29hLm1tICovOyB9OwogCQk3RTk5QUY1MTBCMTM4NDY0NjhGQjAxQTUg
LyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOTlBRjUyMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5k
b3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwICovOyB9OwogCQk3RTk5QUY1MzBCMTM4NDY0NjhG
QjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTk5QUY1NDBCMTM4NDY0NjhGQjAxQTUgLyog
V2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjg1LDcgKzEwMjg0LDYgQEAKIAkJN0U2NkUyMzIx
NkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTY2RTIzMjE3RTZFQjZDMDBGN0U3RkYgLyogV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3RTdERTFGQzE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVl
c3RDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0U3REUyMDExOTVDRUZD
RDAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdElPUy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0U4RkFEQzMxOTlBOTVCMTAwNzE0OTY4IC8qIFN1YnJlc291cmNlTG9h
ZGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdWJy
ZXNvdXJjZUxvYWRlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTk5
QUY1MjBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd0ZvY3VzQWxsb3dlZElu
ZGljYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFOTlBRjU0MEIxMzg0
NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjU2Nyw3ICsxNjU2NSw2IEBACiAJCQkJNDQyQUY3
QTgxMDJDRERFQTAwOEZENEQzIC8qIFF1aWNrTG9vay5tbSAqLywKIAkJCQlBMTBEQkY0NjE4Rjky
MzE3MDAwRDcwQzYgLyogUXVpY2tMb29rSGFuZGxlQ2xpZW50LmggKi8sCiAJCQkJN0U0MjhDRTQx
M0UzNDA3RjAwM0I2NjFDIC8qIFJlc291cmNlSGFuZGxlSU9TLm1tICovLAotCQkJCTdFN0RFMjAx
MTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gKi8sCiAJCQkJNDRBMjBE
QjgwRjg0MTY2QzAwQjNFMUZFIC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5oICovLAogCQkJCTQ0
NEQ0RTIxMEY3MDhCMkUwMDMxNThFMCAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0gKi8sCiAJ
CQkpOwpAQCAtMzA3ODQsNyArMzA3ODEsNiBAQAogCQkJCTUxNEM3NjdDMENFOTIzQTEwMDdFRjND
RCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDZF
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3RTdERTFGRDE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2Eu
bW0gaW4gU291cmNlcyAqLywKLQkJCQk3RTdERTIwMjE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3Vy
Y2VSZXF1ZXN0SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTMwQ0U5MjM0RTAwN0VG
M0NEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjdF
MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3RUU2ODQ3MTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZUNGTmV0
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApp
bmRleCA1NTEwMzkxYmQzM2QzYTM2NjcxNTZlODQ1ZmEzMTMxMWMzZjZmOWYzLi45ZGJlMTgzZTY5
ZWNiNWRlMWY1NTViN2U1OGNlNDhkNzgzZGRlMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaApAQCAtNTYsNiArNTYsMTAgQEAKICNpbmNsdWRlICJRdWlja0xvb2suaCIK
ICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFp
ci5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OwpAQCAtMTQ0LDcgKzE0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0
aW9uJik7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGluZzsgfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgICAgICB2b2lkIHNjaGVkdWxlKFNjaGVkdWxlUGFpciYpOwogICAg
ICAgICB2b2lkIHVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDBkODFmZjViYTI4YTIxMDRkNTI4YWVj
ZmJiYmU3MzU2Y2EyM2I2NzguLjk2MTNlMzAxYjgzMTdlYWU4MTUyY2YzZThmMDc2YzRkMzljMWQ3
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNzI0LDcg
KzcyNCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKICAgICBjYW5jZWwoKTsKIH0KIAotI2lmIFBMQVRG
T1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2No
ZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuaAppbmRleCAwMjdhYzA4ZjIzMjMxZDQwNzg3ZDEzMDI1NjI2MzMyYjkyNmY0MGZhLi44
NTIwMTE3NTRmN2I5MTQ2NzU1MmM4YjVjYTliMTk3NzE3OTllZWE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgd2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCk7CiAKLSNpZiBQTEFURk9STShN
QUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzY2hlZHVsZShXVEY6OlNjaGVkdWxl
UGFpciYpOwogICAgIHZvaWQgdW5zY2hlZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpOwogI2VuZGlm
CkBAIC0xNTcsMTIgKzE1Nyw5IEBAIHByb3RlY3RlZDoKIAogICAgIGNvbnN0IFJlc291cmNlTG9h
ZGVyT3B0aW9ucyYgb3B0aW9ucygpIHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCi0jaWYgUExBVEZP
Uk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZp
cnR1YWwgTlNDYWNoZWRVUkxSZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5k
bGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNpZiBQTEFURk9S
TShDT0NPQSkgJiYgVVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFsIENGQ2FjaGVkVVJMUmVzcG9u
c2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmKSBvdmVycmlkZTsKLSNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVx
dWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
ZGlyZWN0UmVzcG9uc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5oCmluZGV4IDY5YTI0MjI5NzIxZmY2Y2E5ODk5M2E2OTk3NzAxOGZlZWQ4ZDVjZDguLmVmYWNk
ZDhkMTMyNDJhMDY0NDM5YWI3MjkwMGIxOTRjY2JjMDE0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03MywxMiArNzMsOSBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2aXJ0dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKndpbGxDYWNoZVJlc3Bv
bnNlKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSopIG92ZXJyaWRlOwogI2Vu
ZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBD
RkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwg
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7Ci0jZW5kaWYKIAogI2lmIFVTRShORVRX
T1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNEYXRh
QXJyYXkoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCmluZGV4IDdlNzRmMjBmOTcyYjA3OGZlODYy
YjU4MWMyODliZWVlNWQwYTEyYzguLmIyNjE0NGJkMjA1ZjFmNmE3NjZhZWViNTI3ZmNlZjNmOTYy
ZTE3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2Fk
ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJN
YWMuY3BwCkBAIC0zMyw4ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFBM
QVRGT1JNKE1BQykKLQogc3RhdGljIHZvaWQgc2NoZWR1bGVBbGwoY29uc3QgUmVzb3VyY2VMb2Fk
ZXJNYXAmIGxvYWRlcnMsIFNjaGVkdWxlUGFpciYgcGFpcikKIHsKICAgICBWZWN0b3I8UmVmUHRy
PFJlc291cmNlTG9hZGVyPj4gbG9hZGVyc0NvcHk7CkBAIC02OSw2ICs2Nyw0IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OnVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQogICAgIHVuc2NoZWR1
bGVBbGwobV9tdWx0aXBhcnRTdWJyZXNvdXJjZUxvYWRlcnMsIHBhaXIpOwogfQogCi0jZW5kaWYK
LQogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMv
UmVzb3VyY2VMb2FkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNl
TG9hZGVyTWFjLm1tCmluZGV4IGJiOWIxNGU4MTRiNWIyMzljNzdlNTFhNGRiZjE3Y2Q2NTFjMjZm
MDMuLjhhMzI4ZWU1ZmYyODgxZThjMzQ0NmViNTg4NGNlMmU1YjIyZmNmYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQpAQCAtMzYsMTkgKzM2
LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLQotQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZiBSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UoUmVz
b3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQotewot
ICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MoKSA9PSBEb05vdFNlbmRDYWxsYmFj
a3MpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgUmV0YWluUHRyPE5TQ2FjaGVkVVJM
UmVzcG9uc2U+IG5zQ2FjaGVkUmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNDYWNoZWRVUkxSZXNwb25z
ZSBhbGxvY10gX2luaXRXaXRoQ0ZDYWNoZWRVUkxSZXNwb25zZTpjYWNoZWRSZXNwb25zZV0pOwot
ICAgIHJldHVybiBbZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9j
dW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCBuc0NhY2hlZFJlc3BvbnNlLmdldCgpKSBfQ0ZD
YWNoZWRVUkxSZXNwb25zZV07Ci19Ci0KLSNlbHNlCi0KIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFJl
c291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVk
VVJMUmVzcG9uc2UqIHJlc3BvbnNlKQogewogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxs
YmFja3MoKSA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBAIC01Niw4ICs0Myw2IEBAIE5TQ2FjaGVk
VVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhh
bmRsZSosIE5TQ2FjaGVkCiAgICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLndpbGxD
YWNoZVJlc3BvbnNlKGRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIoKSwgcmVzcG9uc2UpOwog
fQogCi0jZW5kaWYKLQogI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKIAog
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFB
cnJheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCmluZGV4IDUyNTEwOGZjYTVlZThhODQz
MTRhNmQxMDVhZjRhNmQxMzU0MjRlN2YuLmY1YzUxZjlhYmZhYTdjNzU3NTAyYzJhY2U4MDgzOWNk
NmViMjc5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQpAQCAtMzQsMTIgKzM0LDE2
IEBACiAjaW1wb3J0ICJGcmFtZVRyZWUuaCIKICNpbXBvcnQgIk1haW5GcmFtZS5oIgogCisjaWYg
UExBVEZPUk0oSU9TKQorI2ltcG9ydCAiV2ViQ29yZVRocmVhZC5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewotI2lm
IFVTRShDRk5FVFdPUkspCi0gICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRl
KFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBnZXRDRlJ1bkxvb3BdLCBrQ0ZSdW5Mb29wQ29t
bW9uTW9kZXMpKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVk
dWxlUGFpcjo6Y3JlYXRlKFdlYlRocmVhZE5TUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9k
ZXMpKTsKICNlbHNlCiAgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFtO
U1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpKTsKICNlbmRp
ZgpAQCAtNTEsMTQgKzU1LDEyIEBAIHZvaWQgUGFnZTo6YWRkU2NoZWR1bGVQYWlyKFJlZjxTY2hl
ZHVsZVBhaXI+JiYgcGFpcikKICAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNjaGVkdWxlUGFpckhhc2hTZXQ+KCk7CiAgICAgbV9zY2hlZHVsZWRSdW5M
b29wUGFpcnMtPmFkZChwYWlyLnB0cigpKTsKIAotI2lmICFQTEFURk9STShJT1MpCiAgICAgZm9y
IChGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRv
Y3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCiAgICAgICAg
ICAgICBkb2N1bWVudExvYWRlci0+c2NoZWR1bGUocGFpcik7CiAgICAgICAgIGlmIChEb2N1bWVu
dExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlcigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNjaGVkdWxlKHBhaXIp
OwogICAgIH0KLSNlbmRpZgogCiAgICAgLy8gRklYTUU6IG1ha2UgU2hhcmVkVGltZXJNYWMgdXNl
IHRoZXNlIFNjaGVkdWxlUGFpcnMuCiB9CkBAIC03MSwxNCArNzMsMTIgQEAgdm9pZCBQYWdlOjpy
ZW1vdmVTY2hlZHVsZVBhaXIoUmVmPFNjaGVkdWxlUGFpcj4mJiBwYWlyKQogCiAgICAgbV9zY2hl
ZHVsZWRSdW5Mb29wUGFpcnMtPnJlbW92ZShwYWlyLnB0cigpKTsKIAotI2lmICFQTEFURk9STShJ
T1MpCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoRG9jdW1l
bnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+dW5zY2hlZHVsZShwYWlyKTsKICAgICAg
ICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5w
cm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+
dW5zY2hlZHVsZShwYWlyKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDk4MGU0MzFmNmQyYzE0NmY1YmMxMWI5NzJlYzY5ZjYw
MzU3YzhiNTguLjBhYTE4ZmQxYjVjZmI5NzA0ZGNhZDI1NDc2YzYxZmE5NmU1OTU0MTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtOTksMTAgKzk5LDYgQEAKICNpbXBvcnQgPFZpZGVvVG9v
bGJveC9WaWRlb1Rvb2xib3guaD4KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbmNs
dWRlICJDRk5TVVJMQ29ubmVjdGlvblNQSS5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9STShJT1Mp
CiAjaW5jbHVkZSA8T3BlbkdMRVMvRVMzL2dsZXh0Lmg+CiAjZW5kaWYKQEAgLTQyMSw1OCArNDE3
LDYgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUHVsbERlbGVnYXRlUXVldWUoKQog
fQogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotY2xhc3MgV2ViQ29yZU5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3JlTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudD4sIHB1YmxpYyBBdXRoZW50aWNhdGlvbkNsaWVu
dCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUNsaWVudD4gY3JlYXRlKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNo
YWxsZW5nZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29yZU5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQoY2hhbGxlbmdlKSk7Ci0gICAgfQotCi0gICAg
dXNpbmcgUmVmQ291bnRlZDxXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVu
dD46OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQ2xpZW50Pjo6ZGVyZWY7Ci0KLXByaXZhdGU6Ci0gICAgV2ViQ29yZU5TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
Y2hhbGxlbmdlKQotICAgICAgICA6IG1fY2hhbGxlbmdlKGNoYWxsZW5nZSkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX2NoYWxsZW5nZSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlZkF1
dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBkZXJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSB1c2VDcmVkZW50aWFsOmNyZWRlbnRpYWwubnND
cmVkZW50aWFsKCkgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCld
OwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0
aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIGNvbnRpbnVlV2l0aG91dENyZWRl
bnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAg
fQotCi0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFtbbV9jaGFsbGVuZ2Ug
c2VuZGVyXSBjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07
Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1
bHRIYW5kbGluZyhjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBpZiAoW1ttX2NoYWxsZW5nZSBzZW5kZXJdIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IocGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OildKQotICAgICAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIHBlcmZvcm1EZWZhdWx0SGFu
ZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAg
fQotCi0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChbW21f
Y2hhbGxlbmdlIHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZWplY3RQcm90
ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6KV0pCi0gICAgICAgICAgICBbW21f
Y2hhbGxlbmdlIHNlbmRlcl0gcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hh
bGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gbV9jaGFsbGVuZ2U7Ci19OwotI2VuZGlmCi0KIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShN
ZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkp
CkBAIC0xNzg4LDEzICsxNzMyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKIAogYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yUmVzcG9uc2VU
b0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIG5z
Q2hhbGxlbmdlKQogewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgUmVmUHRyPFdlYkNvcmVOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50PiBjbGllbnQgPSBXZWJDb3JlTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDo6Y3JlYXRlKG5zQ2hhbGxlbmdlKTsKLSAgICBSZXRh
aW5QdHI8Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmPiBjZkNoYWxsZW5nZSA9IGFkb3B0Q0YoW25zQ2hh
bGxlbmdlIF9jcmVhdGVDRkF1dGhDaGFsbGVuZ2VdKTsKLSAgICBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSBjaGFsbGVuZ2UoY2ZDaGFsbGVuZ2UuZ2V0KCksIGNsaWVudC5nZXQoKSk7Ci0jZWxzZQog
ICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZShuc0NoYWxsZW5nZSk7Ci0jZW5k
aWYKIAogICAgIHJldHVybiBwbGF5ZXIoKS0+c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQppbmRleCA0ZTMw
MzY2ZDRlYjdmYWIxODhkZTRjYWU5MGY5ZDU1MTFmOTA2ZGFiLi4wOWQ1OWM3MTI4MDgzMWQ1ZTc0
NTU4MDI1ZDc0NGRhMzgzMjUwOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQpAQCAtNTEsMTMgKzUxLDYg
QEAgV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrQ0ZVUkxSZXF1ZXN0QWxsb3dBbGxQb3N0Q2FjaGlu
ZykoQ0ZVUkxSZXF1ZXN0UmVmKTsKIFdFQkNPUkVfRVhQT1JUIENGQXJyYXlSZWYgKCp3a0NvcHlO
U1VSTFJlc3BvbnNlQ2VydGlmaWNhdGVDaGFpbikoTlNVUkxSZXNwb25zZSopOwogV0VCQ09SRV9F
WFBPUlQgQ0ZTdHJpbmdFbmNvZGluZyAoKndrR2V0V2ViRGVmYXVsdENGU3RyaW5nRW5jb2Rpbmcp
KHZvaWQpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLVdFQkNPUkVfRVhQT1JUIENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWYgKCp3a0dldERlZmF1bHRIVFRQQ29va2llU3RvcmFnZSkoKTsKLVdFQkNPUkVf
RVhQT1JUIFdLQ0ZVUkxDcmVkZW50aWFsUmVmICgqd2tDb3B5Q3JlZGVudGlhbEZyb21DRlBlcnNp
c3RlbnRTdG9yYWdlKShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2UpOwot
V0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q0ZVUkxSZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZm
KShDRk11dGFibGVVUkxSZXF1ZXN0UmVmLCBib29sKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3
a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbikoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiwgQ0ZNdXRh
YmxlVVJMUmVxdWVzdFJlZik7Ci0jZW5kaWYKLQogV0VCQ09SRV9FWFBPUlQgQ0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZiAoKndrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKShDRlN0cmluZ1JlZik7
CiBXRUJDT1JFX0VYUE9SVCBOU1VSTFJlcXVlc3QqICgqd2tDb3B5UmVxdWVzdFdpdGhTdG9yYWdl
U2Vzc2lvbikoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiwgTlNVUkxSZXF1ZXN0Kik7CiBXRUJDT1JF
X0VYUE9SVCBDRkhUVFBDb29raWVTdG9yYWdlUmVmICgqd2tDb3B5SFRUUENvb2tpZVN0b3JhZ2Up
KENGVVJMU3RvcmFnZVNlc3Npb25SZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3Mvd2FrL1dlYkNvcmVUaHJlYWQuaAppbmRleCBlZmI4ZDdhNDg2MGQwMDNmZjNkN2EwZTNhMWFh
ZDM3MjJkN2ZjOGVmLi42Mzc3YjhlNWRkZmU4ZDk4ZTFiZDBlYjEyMzczMTUxNzk0YmQ0MGFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQuaApA
QCAtODEsNyArODEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgV2ViVGhyZWFkU2hvdWxkWWllbGQo
dm9pZCkgeyByZXR1cm4gd2ViVGhyZWFkU2hvdWxkWWllbGQ7IH0KIHN0YXRpYyBpbmxpbmUgdm9p
ZCBXZWJUaHJlYWRTZXRTaG91bGRZaWVsZCgpIHsgd2ViVGhyZWFkU2hvdWxkWWllbGQgPSB0cnVl
OyB9CiAKIFdFQkNPUkVfRVhQT1JUIENGUnVuTG9vcFJlZiBXZWJUaHJlYWRSdW5Mb29wKHZvaWQp
OwotTlNSdW5Mb29wKiBXZWJUaHJlYWROU1J1bkxvb3Aodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBO
U1J1bkxvb3AqIFdlYlRocmVhZE5TUnVuTG9vcCh2b2lkKTsKIFdlYlRocmVhZENvbnRleHQgKldl
YlRocmVhZEN1cnJlbnRDb250ZXh0KHZvaWQpOwogYm9vbCBXZWJUaHJlYWRDb250ZXh0SXNDdXJy
ZW50KHZvaWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UuaAppbmRleCA2MGI0ODkwNTczYWQ2YTg1ZDNiMGEzNzNjYzhjYTI1
ZmYzOWYwMjExLi5iNjU2NjEzMDdkMDYyYmQwYTk3Y2QxN2QxZGJhOGExMmY3ZGRlODU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLmgKQEAgLTI1NiwxMiArMjU2LDYgQEAgZXh0ZXJuIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0dl
dENGVVJMUmVzcG9uc2VIVFRQUmVzcG9uc2UpKENGVVJMUmVzcG9uc2VSZWYpOwogZXh0ZXJuIENG
U3RyaW5nUmVmICgqd2tDb3B5Q0ZVUkxSZXNwb25zZVN1Z2dlc3RlZEZpbGVuYW1lKShDRlVSTFJl
c3BvbnNlUmVmKTsKIGV4dGVybiB2b2lkICgqd2tTZXRDRlVSTFJlc3BvbnNlTUlNRVR5cGUpKENG
VVJMUmVzcG9uc2VSZWYsIENGU3RyaW5nUmVmIG1pbWVUeXBlKTsKIAotI2lmIFVTRShDRk5FVFdP
UkspCi1leHRlcm4gQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiAoKndrR2V0RGVmYXVsdEhUVFBDb29r
aWVTdG9yYWdlKSgpOwotZXh0ZXJuIFdLQ0ZVUkxDcmVkZW50aWFsUmVmICgqd2tDb3B5Q3JlZGVu
dGlhbEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90
ZWN0aW9uU3BhY2UpOwotZXh0ZXJuIHZvaWQgKCp3a1NldENGVVJMUmVxdWVzdFNob3VsZENvbnRl
bnRTbmlmZikoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiwgYm9vbCk7Ci1leHRlcm4gdm9pZCAoKndr
U2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBDRk11dGFi
bGVVUkxSZXF1ZXN0UmVmKTsKLSNlbmRpZgogI2lmICFQTEFURk9STShJT1MpCiBleHRlcm4gdm9p
ZCAoKndrU2V0TWV0YWRhdGFVUkwpKE5TU3RyaW5nICp1cmxTdHJpbmcsIE5TU3RyaW5nICpyZWZl
cnJlciwgTlNTdHJpbmcgKnBhdGgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDE4OGY0MTI4MTIz
YTk2MDhhZGJmZmNjYmY2OWI4ZGFmMzAwMWNiYzcuLjAzMzkwY2U2OWM1YmZjZWYzYWI1MWU2YTE5
NjM3NDUwNmViYWVhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC04OCwxMyArODgsNiBAQCB2b2lkICgqd2tT
ZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJv
eHlIb3N0LCBDRk51bQogdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0
cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJp
bmcpOwogQ0ZIVFRQTWVzc2FnZVJlZiAoKndrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJl
YWRTdHJlYW1SZWYsIENGVVJMUmVmIHJlc3BvbnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3Qs
IENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiAoKndrR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKSgpOwotV0tDRlVS
TENyZWRlbnRpYWxSZWYgKCp3a0NvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2Up
KENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSk7Ci12b2lkICgqd2tTZXRD
RlVSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYpKENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIGJv
b2wpOwotdm9pZCAoKndrU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNz
aW9uUmVmLCBDRk11dGFibGVVUkxSZXF1ZXN0UmVmKTsKLSNlbmRpZgotCiB2b2lkKiB3a0dldEh5
cGhlbmF0aW9uTG9jYXRpb25CZWZvcmVJbmRleDsKIAogYm9vbCAoKndrRXhlY3V0YWJsZVdhc0xp
bmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZCkodm9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcAppbmRleCA5M2M0
ZGRiYTQ4ZjlmZGIzNzFiOTVjYzI5NzBkYWM4Y2U4NTliYzM4Li4wMTI2ZGM3OTQ4MzFmNGFmZjZj
YWMxMjljMDJlOThjZWVlYzlkMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAK
IAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykgJiYg
IVBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25DRi5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFByb3RlY3Rpb25TcGFjZVByaXYu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggNTNlMjRjZDFlYWJmNzBiOGExZWMx
ZGI0YjY3ZjgzYzU4Yjk4MGM3MC4uMDkyMzkyZWUyNDc0Zjk0MTk2N2IxOTc5ZjRiNzJlZWU2NWEz
ZjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuaApAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2b2lkIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxDb25u
ZWN0aW9uICpjb25uZWN0aW9uKCkgY29uc3Q7CiAgICAgaWQgbWFrZURlbGVnYXRlKGJvb2wpOwpA
QCAtMjE2LDcgKzIxNiw3IEBAIHB1YmxpYzoKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29udGludWVXaWxsQ2FjaGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmKTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykK
KyNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2ls
bENhY2hlUmVzcG9uc2UoTlNDYWNoZWRVUkxSZXNwb25zZSAqKTsKICNlbmRpZgogCkBAIC0yMzYs
MTAgKzIzNiw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ0ZTdHJpbmdS
ZWYgc3luY2hyb25vdXNMb2FkUnVuTG9vcE1vZGUoKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
SU9TKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAgIHN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVm
IGNyZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwotI2VuZGlmCi0KICAgICB0eXBlZGVmIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+ICgq
QnVpbHRpbkNvbnN0cnVjdG9yKShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291
cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQnVpbHRp
bkNvbnN0cnVjdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvdG9jb2wsIEJ1aWx0aW5Db25zdHJ1
Y3Rvcik7CiAKQEAgLTI3NiwxMSArMjcyLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVD
RlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91
bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvciwgQ0ZEaWN0aW9uYXJ5UmVmIGNsaWVu
dFByb3BlcnRpZXMpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQ0ZORVRX
T1JLKQorI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGNyZWF0ZU5TVVJMQ29ubmVjdGlvbihp
ZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRD
b250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvcik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KElPUykgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQgY3Jl
YXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1bGluZ0JlaGF2aW9yLCBOU0Rp
Y3Rpb25hcnkgKmNvbm5lY3Rpb25Qcm9wZXJ0aWVzKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
CmluZGV4IDYxMjNmMTRhY2EyNDg0YmU0MmE2ZGYxMDBhZjNhYWMzMTliZDJkOWYuLjdhZTczY2Y3
MWRjMTE1ZjQwMWYyMDBiM2M0ODFmODg0OTc5YzczOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC0x
MzYsMTEgKzEzNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVzb3VyY2VSZXF1
ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZTsKICNlbmRpZgotI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAgICAgUmV0YWluUHRyPE5TVVJMQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgICAgICBS
ZXRhaW5QdHI8aWQ+IG1fZGVsZWdhdGU7Ci0jZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAgICAgYm9vbCBtX3N0YXJ0V2hlblNjaGVkdWxlZDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoQ0ZORVRXT1JLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAKaW5kZXggNzg4M2U0NjkxMTVkZTMy
Nzk0YzFiMmE0N2RiYjUwMzA4ZTEwOGVjOS4uZjg3NDVkNTQzYTkwOGM4MzMyY2E4YWYyZjlhMjE2
ZTk5NjllZGJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9BdXRoZW50aWNhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCkBAIC01MywxMyArNTMsOCBAQCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNw
YWNlJiBwcm90ZWN0aQogCiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNmQ2hhbGxlbmdlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50
KiBhdXRoZW50aWNhdGlvbkNsaWVudCkKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICA6IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShQcm90ZWN0aW9uU3BhY2UoQ0ZVUkxBdXRoQ2hhbGxlbmdl
R2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ3JlZGVudGlhbChDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRl
bnRpYWwoY2ZDaGFsbGVuZ2UpKSwKLSNlbHNlCiAgICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUJhc2UoY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2ZDaGFsbGVu
Z2UpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlKENGVVJMQXV0aENo
YWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbChjZkNoYWxsZW5nZSkpLAotI2VuZGlmCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJldmlv
dXNGYWlsdXJlQ291bnQoY2ZDaGFsbGVuZ2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChDRlVSTFJlc3BvbnNlUmVmKUNGVVJMQXV0aENoYWxsZW5nZUdldEZhaWx1cmVSZXNw
b25zZShjZkNoYWxsZW5nZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZV
UkxBdXRoQ2hhbGxlbmdlR2V0RXJyb3IoY2ZDaGFsbGVuZ2UpKQpAQCAtOTMsMTQgKzg4LDEwIEBA
IENGVVJMQXV0aENoYWxsZW5nZVJlZiBjcmVhdGVDRihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYgY29yZUNoYWxsZW5nZSkKIHsKICAgICAvLyBGSVhNRTogV2h5IG5vdCBjYWNoZSBDRlVS
TEF1dGhDaGFsbGVuZ2VSZWYgaW4gbV9jZkNoYWxsZW5nZT8gRm91bmRhdGlvbiBjb3VudGVycGFy
dCBkb2VzIHRoYXQuCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBDRlVSTEF1dGhDaGFsbGVu
Z2VSZWYgcmVzdWx0ID0gQ0ZVUkxBdXRoQ2hhbGxlbmdlQ3JlYXRlKDAsIGNvcmVDaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlKCkuY2ZTcGFjZSgpLCBjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVu
dGlhbCgpLmNmQ3JlZGVudGlhbCgpLAotI2Vsc2UKICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50
aWFsUmVmPiBjcmVkZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3Bv
c2VkQ3JlZGVudGlhbCgpKSk7CiAgICAgUmV0YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNlUmVm
PiBwcm90ZWN0aW9uU3BhY2UgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvdGVj
dGlvblNwYWNlKCkpKTsKIAogICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiByZXN1bHQgPSBDRlVS
TEF1dGhDaGFsbGVuZ2VDcmVhdGUoMCwgcHJvdGVjdGlvblNwYWNlLmdldCgpLCBjcmVkZW50aWFs
LmdldCgpLAotI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29yZUNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvcmVDaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuY2ZV
UkxSZXNwb25zZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
cmVDaGFsbGVuZ2UuZXJyb3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCmluZGV4IDk0N2ZiM2JmOWJlMjZmYjI3ZGI2
OTA0ZjBjZWRkM2U5ZTg3M2Q0MTguLmRhNGEwNjRmNzVhMDc3NmVjZDM1ZmQ2NmVmOGI4MDY1MWE1
MDUwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29v
a2llSmFyQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
Q29va2llSmFyQ0ZOZXQuY3BwCkBAIC00Miw3ICs0Miw3IEBACiAjaW5jbHVkZSA8d2luZG93cy5o
PgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXSU4pIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gMTA5MCkKKyNpZiBQTEFURk9STShXSU4pCiBl
bnVtIHsKICAgICBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9t
TWFpbkRvY3VtZW50RG9tYWluID0gMwogfTsKQEAgLTEwNSwxMyArMTA1LDkgQEAgc3RhdGljIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBjb3B5Q29va2llc0ZvclVSTFdpdGhGaXJzdFBhcnR5VVJMKGNv
bnN0IE5ldHdvcmtTdG8KIHsKICAgICBib29sIHNlY3VyZSA9IHVybC5wcm90b2NvbElzKCJodHRw
cyIpOwogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMCkKLSAgICByZXR1cm4gYWRvcHRDRihfQ0ZI
VFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9yVVJMV2l0aE1haW5Eb2N1bWVudFVSTChzZXNz
aW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsLmNyZWF0ZUNGVVJMKCkuZ2V0KCksIGZpcnN0
UGFydHkuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgc2VjdXJlKSk7Ci0jZWxzZQogICAgIC8vIF9DRkhU
VFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkxXaXRoTWFpbkRvY3VtZW50VVJMIGlzIG5v
dCBhdmFpbGFibGUgb24gb3RoZXIgcGxhdGZvcm1zLgogICAgIFVOVVNFRF9QQVJBTShmaXJzdFBh
cnR5KTsKICAgICByZXR1cm4gYWRvcHRDRihDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNG
b3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHVybC5jcmVhdGVDRlVSTCgpLmdl
dCgpLCBzZWN1cmUpKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgQ0ZBcnJheVJlZiBjcmVhdGVDb29r
aWVzKENGRGljdGlvbmFyeVJlZiBoZWFkZXJGaWVsZHMsIENGVVJMUmVmIHVybCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VD
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxT
dG9yYWdlQ0ZOZXQuY3BwCmluZGV4IDU2MDkyNTk3YWFjY2QyNzczZjY5OGIzNWJkNGZjNzE1ODcy
YzQwZTQuLjY5ZTMzMmMxM2IxNzBiYmIyOTkzZWE0YzFkNTc1ODg3YmU2ZWY1NTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VD
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50
aWFsU3RvcmFnZUNGTmV0LmNwcApAQCAtMzMsNDIgKzMzLDE4IEBACiAjaW5jbHVkZSAiUHJvdGVj
dGlvblNwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgUExBVEZPUk0o
Q09DT0EpCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2VsaWYgUExBVEZP
Uk0oV0lOKQorI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykK
LSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZS5oPgotI2VuZGlmCi0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ3JlZGVudGlhbCBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0
RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNw
YWNlKQogewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRp
YWxSZWY+IGNyZWRlbnRpYWxDRiA9IGFkb3B0Q0Yod2tDb3B5Q3JlZGVudGlhbEZyb21DRlBlcnNp
c3RlbnRTdG9yYWdlKHByb3RlY3Rpb25TcGFjZS5jZlNwYWNlKCkpKTsKLSAgICByZXR1cm4gQ3Jl
ZGVudGlhbChjcmVkZW50aWFsQ0YuZ2V0KCkpOwotI2Vsc2UKICAgICBSZXRhaW5QdHI8Q0ZVUkxQ
cm90ZWN0aW9uU3BhY2VSZWY+IHByb3RlY3Rpb25TcGFjZUNGID0gYWRvcHRDRihjcmVhdGVDRihw
cm90ZWN0aW9uU3BhY2UpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVk
ZW50aWFsQ0YgPSBhZG9wdENGKHdrQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFn
ZShwcm90ZWN0aW9uU3BhY2VDRi5nZXQoKSkpOwogICAgIHJldHVybiBjb3JlKGNyZWRlbnRpYWxD
Ri5nZXQoKSk7Ci0jZW5kaWYKLX0KLQotI2lmIFBMQVRGT1JNKElPUykKLXZvaWQgQ3JlZGVudGlh
bFN0b3JhZ2U6OnNhdmVUb1BlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYg
cHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQotewotICAgIFJl
dGFpblB0cjxDRlVSTENyZWRlbnRpYWxTdG9yYWdlUmVmPiBzdG9yYWdlQ0YgPSBhZG9wdENGKENG
VVJMQ3JlZGVudGlhbFN0b3JhZ2VDcmVhdGUoMCkpOwotCi0gICAgaWYgKGNyZWRlbnRpYWwucGVy
c2lzdGVuY2UoKSA9PSBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSB7Ci0gICAgICAgIENyZWRl
bnRpYWwgc2Vzc2lvbkNyZWRlbnRpYWwoY3JlZGVudGlhbCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNl
Rm9yU2Vzc2lvbik7Ci0gICAgICAgIENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VTZXREZWZhdWx0Q3Jl
ZGVudGlhbEZvclByb3RlY3Rpb25TcGFjZShzdG9yYWdlQ0YuZ2V0KCksIHNlc3Npb25DcmVkZW50
aWFsLmNmQ3JlZGVudGlhbCgpLCBwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKTsKLSAgICB9IGVs
c2UKLSAgICAgICAgQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9y
UHJvdGVjdGlvblNwYWNlKHN0b3JhZ2VDRi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwo
KSwgcHJvdGVjdGlvblNwYWNlLmNmU3BhY2UoKSk7CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VFcnJvci5oCmluZGV4IDE3MDNjYzkxZjY4YjJhNWU2NGY4NzkyM2NlNmZiYTFkMjdk
ZDI0MWQuLjFiNGFkNzMwNjZjNzcxOGEwY2E1MTQ1MDBlZWQ0ZjdjNGQ5MTQ0ODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCkBA
IC02MSwxNiArNjEsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIENGRXJyb3JSZWYg
Y2ZFcnJvcigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIENGRXJyb3JSZWYo
KSBjb25zdDsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaWYgUExBVEZPUk0oV0lOKQorI2lmIFVT
RShDRk5FVFdPUkspICYmIFBMQVRGT1JNKFdJTikKICAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0
cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNv
bnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24sIENGRGF0YVJlZiBjZXJ0aWZpY2F0ZSk7
CiAgICAgUENDRVJUX0NPTlRFWFQgY2VydGlmaWNhdGUoKSBjb25zdDsKICAgICB2b2lkIHNldENl
cnRpZmljYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUVycm9yKENGU3RyZWFt
RXJyb3IgZXJyb3IpOwotICAgIENGU3RyZWFtRXJyb3IgY2ZTdHJlYW1FcnJvcigpIGNvbnN0Owot
ICAgIG9wZXJhdG9yIENGU3RyZWFtRXJyb3IoKSBjb25zdDsKLSNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvcihOU0Vycm9yICopOwpA
QCAtODgsOSArODMsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kYXRhSXNVcFRvRGF0ZTsKICNp
ZiBVU0UoQ0ZORVRXT1JLKQogICAgIG11dGFibGUgUmV0YWluUHRyPENGRXJyb3JSZWY+IG1fcGxh
dGZvcm1FcnJvcjsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtdXRhYmxlIFJldGFpblB0cjxO
U0Vycm9yPiBtX3BsYXRmb3JtTlNFcnJvcjsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikKICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX2NlcnRpZmljYXRlOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAK
aW5kZXggMTMxZmJiMDQ2MTE3MDZmNjRkODUwYTFjNTBlMDVlMTRhMmM2ZTEzMy4uYTQ3Yjg5ODJk
NTZlY2U0NjNmNDVjZWQwZTk0MGZhNDY2MjNiYjJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMTc3LDUy
ICsxNzcsNiBAQCBSZXNvdXJjZUVycm9yOjpvcGVyYXRvciBDRkVycm9yUmVmKCkgY29uc3QKICAg
ICByZXR1cm4gY2ZFcnJvcigpOwogfQogCi0vLyBGSVhNRTogT25jZSA8cmRhcjovL3Byb2JsZW0v
NTA1MDg0MT4gaXMgZml4ZWQgd2UgY2FuIHJlbW92ZSB0aGlzIGNvbnN0cnVjdG9yLgotUmVzb3Vy
Y2VFcnJvcjo6UmVzb3VyY2VFcnJvcihDRlN0cmVhbUVycm9yIGVycm9yKQotICAgIDogbV9kYXRh
SXNVcFRvRGF0ZSh0cnVlKQotewotICAgIG1faXNOdWxsID0gZmFsc2U7Ci0gICAgbV9lcnJvckNv
ZGUgPSBlcnJvci5lcnJvcjsKLQotICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKLSAgICBjYXNl
IGtDRlN0cmVhbUVycm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9t
RXJyb3JEb21haW4iOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluUE9TSVg6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiI7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5NYWNPU1N0YXR1czoKLSAg
ICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotfQotCi1DRlN0cmVhbUVycm9yIFJlc291cmNlRXJyb3I6OmNmU3RyZWFtRXJyb3Io
KSBjb25zdAotewotICAgIGxhenlJbml0KCk7Ci0KLSAgICBDRlN0cmVhbUVycm9yIHJlc3VsdDsK
LSAgICByZXN1bHQuZXJyb3IgPSBtX2Vycm9yQ29kZTsKLQotICAgIGlmIChtX2RvbWFpbiA9PSAi
TlNDdXN0b21FcnJvckRvbWFpbiIpCi0gICAgICAgIHJlc3VsdC5kb21haW4gPSBrQ0ZTdHJlYW1F
cnJvckRvbWFpbkN1c3RvbTsKLSAgICBlbHNlIGlmIChtX2RvbWFpbiA9PSAiTlNQT1NJWEVycm9y
RG9tYWluIikKLSAgICAgICAgcmVzdWx0LmRvbWFpbiA9IGtDRlN0cmVhbUVycm9yRG9tYWluUE9T
SVg7Ci0gICAgZWxzZSBpZiAobV9kb21haW4gPT0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiIpCi0g
ICAgICAgIHJlc3VsdC5kb21haW4gPSBrQ0ZTdHJlYW1FcnJvckRvbWFpbk1hY09TU3RhdHVzOwot
ICAgIGVsc2UgewotICAgICAgICByZXN1bHQuZG9tYWluID0ga0NGU3RyZWFtRXJyb3JEb21haW5D
dXN0b207Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLVJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENGU3RyZWFtRXJyb3IoKSBj
b25zdAotewotICAgIHJldHVybiBjZlN0cmVhbUVycm9yKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApp
bmRleCA1YzE0MjA3ZDQxYWEzNmY3OTBiZWVjN2MzM2Y0N2JmMmE3YzdkMjUxLi41ZGYxZDAwZDYz
ZWRlOWNjMmEyNDJmMWQyYTQyNzU0Nzc3MmNkNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAg
LTUzLDE2ICs1Myw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oIgot
I2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
I2luY2x1ZGUgIldlYkNvcmVVUkxSZXNwb25zZS5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRlVS
TENvbm5lY3Rpb25Qcml2Lmg+Ci0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdFByaXYu
aD4KLSNlbmRpZgotI2VuZGlmCi0KICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2ViS2l0
U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2luY2x1ZGUgPHByb2Nl
c3MuaD4KQEAgLTIxOSwxNCArMjA5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZV
UkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wKICAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShwcm9wZXJ0aWVzRGljdGlvbmFyeS5nZXQoKSwga0NGVVJMQ29u
bmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMsIHN0cmVhbVByb3BlcnRpZXMpOwogICAgIENG
UmVsZWFzZShzdHJlYW1Qcm9wZXJ0aWVzKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlm
IChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcykKLSAgICAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdh
dGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZSh0aGlzKSk7Ci0gICAgZWxzZQotICAgICAgICBkLT5tX2Nvbm5lY3Rp
b25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUodGhpcykpOwotI2Vsc2UKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxl
Z2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGUodGhpcykpOwotI2VuZGlmCiAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUt
PnNldHVwUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAogICAgIENGVVJMQ29ubmVjdGlvbkNsaWVu
dF9WNiBjbGllbnQgPSBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+bWFrZUNvbm5lY3Rpb25DbGll
bnQoKTsKQEAgLTM2OCwxMiArMzUxLDkgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxl
UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2gKIAogICAg
IGlmICghZC0+bV91c2VyLmlzTnVsbCgpICYmICFkLT5tX3Bhc3MuaXNOdWxsKCkpIHsKICAgICAg
ICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihD
RlVSTENyZWRlbnRpYWxDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZC0+bV91c2VyLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGQtPm1fcGFzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwLCBr
Q0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IENyZWRlbnRpYWwoY2ZDcmVkZW50aWFsLmdl
dCgpKTsKLSNlbHNlCisKICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gY29yZShjZkNy
ZWRlbnRpYWwuZ2V0KCkpOwotI2VuZGlmCi0gICAgICAgIAorCiAgICAgICAgIFVSTCB1cmxUb1N0
b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXND
b2RlKCkgPT0gNDAxKQogICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGNoYWxsZW5nZS5mYWlsdXJl
UmVzcG9uc2UoKS51cmwoKTsKQEAgLTQwMiwxMiArMzgyLDggQEAgYm9vbCBSZXNvdXJjZUhhbmRs
ZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2gKICAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGNyZWRlbnRpYWwgYmFjaywg
cG9zc2libHkgYWRkaW5nIGl0IGFzIGEgZGVmYXVsdCBmb3IgdGhpcyBkaXJlY3RvcnkuCiAgICAg
ICAgICAgICAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFs
U3RvcmFnZSgpLnNldChjcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIGNo
YWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKSk7CiAgICAgICAgICAgICAgICAgfQotI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgICAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRl
bnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBj
aGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2Vsc2UKICAgICAgICAgICAgICAg
ICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNy
ZWF0ZUNGKGNyZWRlbnRpYWwpKTsKICAgICAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VD
cmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFs
bGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2VuZGlmCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ1NywyMCArNDMzLDEy
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlCiAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFn
ZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLnNldCh3ZWJDcmVkZW50aWFsLCBjaGFsbGVu
Z2UucHJvdGVjdGlvblNwYWNlKCksIHVybFRvU3RvcmUpOwogCiAgICAgICAgIGlmIChkLT5tX2Nv
bm5lY3Rpb24pIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgIENGVVJMQ29ubmVj
dGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCB3ZWJDcmVkZW50aWFsLmNm
Q3JlZGVudGlhbCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2Vsc2UK
ICAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9
IGFkb3B0Q0YoY3JlYXRlQ0Yod2ViQ3JlZGVudGlhbCkpOwogICAgICAgICAgICAgQ0ZVUkxDb25u
ZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5n
ZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRpZgogICAgICAg
ICB9CiAgICAgfSBlbHNlIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKLSNpZiBQTEFURk9STShDT0NP
QSkKLSAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24u
Z2V0KCksIGNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFs
bGVuZ2VSZWYoKSk7Ci0jZWxzZQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVm
PiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKICAgICAgICAg
Q0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3Jl
ZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRp
ZgogICAgIH0KIAogICAgIGNsZWFyQXV0aGVudGljYXRpb24oKTsKQEAgLTYxMSwzMCArNTc5LDYg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVm
ZXJzKQogICAgICAgICBDRlVSTENvbm5lY3Rpb25SZXN1bWUoZC0+bV9jb25uZWN0aW9uLmdldCgp
KTsKIH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2NoZWR1
bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQotewotICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gcGFp
ci5ydW5Mb29wKCk7Ci0gICAgaWYgKCFydW5Mb29wKQotICAgICAgICByZXR1cm47Ci0KLSAgICBD
RlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29wKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwg
cnVuTG9vcCwgcGFpci5tb2RlKCkpOwotICAgIGlmIChkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCkg
ewotICAgICAgICBDRlVSTENvbm5lY3Rpb25TdGFydChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOwot
ICAgICAgICBkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCA9IGZhbHNlOwotICAgIH0KLX0KLQotdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCi17Ci0gICAg
Q0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBwYWlyLnJ1bkxvb3AoKTsKLSAgICBpZiAoIXJ1bkxvb3Ap
Ci0gICAgICAgIHJldHVybjsKLQotICAgIENGVVJMQ29ubmVjdGlvblVuc2NoZWR1bGVGcm9tUnVu
TG9vcChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIHJ1bkxvb3AsIHBhaXIubW9kZSgpKTsKLX0KLSNl
bmRpZgotCiBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIFJlc291cmNlSGFuZGxlOjpjdXJyZW50UmVx
dWVzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGQtPm1fY3VycmVudFJlcXVlc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAppbmRleCA0Zjdh
NzkyOWYxYjExZDg4NGQ4ZDA0NzY4MjExMmFkYjY2ZTliYmQ1Li5hMWUxMzgwOWU0NzhiZWY0ZmVh
ZTczODBkMmFjZGNlYTRkYTExMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogCi0jaWYgUExB
VEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2VuZGlm
Ci0KICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dl
YktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA4YTVlZjA5MDRkM2E2
MjVkMzU2MDdjNmE2NzdlZDZlZWZkOWE2Yzc5Li4xZDBkN2QwMjUyMDMzN2NkMjcwZWRiZGY0MTc4
MjZiNTE4ZjY4OGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTYzLDEyICs2Myw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgfQogICAgICAgICAKICNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZVJlcXVlc3QoTlNVUkxS
ZXF1ZXN0ICopOwotICAgICAgICB2b2lkIHVwZGF0ZU5TVVJMUmVxdWVzdCgpOwotICAgICAgICB2
b2lkIGNsZWFyT3JVcGRhdGVOU1VSTFJlcXVlc3QoKTsKLSNlbmRpZgotCiAgICAgICAgIFJlc291
cmNlUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0KQogICAgICAgICAgICAgOiBSZXNv
dXJjZVJlcXVlc3RCYXNlKCkKICAgICAgICAgICAgICwgbV9jZlJlcXVlc3QoY2ZSZXF1ZXN0KQpA
QCAtODgsMTEgKzgyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGFwcGx5
V2ViQXJjaGl2ZUhhY2tGb3JNYWlsKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotICAgICAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURh
dGEoKSBjb25zdCB7IHJldHVybiBtX2h0dHBCb2R5IHx8IG1fY2ZSZXF1ZXN0OyB9Ci0jZWxzZQog
ICAgICAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVy
biBtX2h0dHBCb2R5IHx8IG1fbnNSZXF1ZXN0OyB9Ci0jZW5kaWYKICAgICAgICAgV0VCQ09SRV9F
WFBPUlQgTlNVUkxSZXF1ZXN0ICpuc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kpIGNv
bnN0OwogCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDRlN0cmluZ1JlZiBpc1VzZXJJ
bml0aWF0ZWRLZXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggYWNjMWQ0NTY5NzVjYzEyZjM5YTMzOGRiYjI0
Mzk0MWU1N2MyNmQxYS4uYjc5ZjdjNDBlZDBjOTRkMWNiZWM5ZTU2ODYzYWM5ZTU2NDFiOTg4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJl
c3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlc3BvbnNlLmgKQEAgLTUzLDkgKzUzLDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9p
c051bGwgPSAhY2ZSZXNwb25zZTsKICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgV0VC
Q09SRV9FWFBPUlQgUmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlICopOwotI2VuZGlmCiAj
ZWxzZQogICAgIFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkKICAg
ICAgICAgOiBtX2luaXRMZXZlbChVbmluaXRpYWxpemVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3Bw
CmluZGV4IDRiYWU3NGU4MzgxNmMxOTRlZGMxNTRkODRjMmRlOGY2ZGQxNmZjOTUuLjFhYTgzN2Zj
NzJiNzgyM2VhN2JkZThjYjkwNjM5OGZlYTc1ZDVhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5j
cHAKQEAgLTMzLDEwICszMyw2IEBACiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVzcG9uc2VQ
cml2Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
Ci0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIENGU3RyaW5nUmVmIGNvbnN0IGNvbW1vbkhlYWRlckZpZWxk
c1tdID0gewpAQCAtNDYsMTMgKzQyLDkgQEAgc3RhdGljIENGU3RyaW5nUmVmIGNvbnN0IGNvbW1v
bkhlYWRlckZpZWxkc1tdID0gewogQ0ZVUkxSZXNwb25zZVJlZiBSZXNvdXJjZVJlc3BvbnNlOjpj
ZlVSTFJlc3BvbnNlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051
bGwpIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgbnNVUkxSZXNwb25zZSgpOwotI2Vs
c2UKICAgICAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBtX3VybC5jcmVhdGVDRlVSTCgp
OwogICAgICAgICAvLyBGSVhNRTogVGhpcyBjcmVhdGVzIGEgdmVyeSBpbmNvbXBsZXRlIENGVVJM
UmVzcG9uc2UsIHdoaWNoIGRvZXMgbm90IGV2ZW4gaGF2ZSBhIHN0YXR1cyBjb2RlLgogICAgICAg
ICBtX2NmUmVzcG9uc2UgPSBhZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJsLmdldCgp
LCBtX21pbWVUeXBlLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXhwZWN0ZWRD
b250ZW50TGVuZ3RoLCBtX3RleHRFbmNvZGluZ05hbWUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOwotI2VuZGlmCiAgICAgfQogCiAg
ICAgcmV0dXJuIG1fY2ZSZXNwb25zZS5nZXQoKTsKQEAgLTExNSw5ICsxMDcsNiBAQCB2b2lkIFJl
c291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoSW5pdExldmVsIGluaXRMZXZlbCkKIAog
Q2VydGlmaWNhdGVJbmZvIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZv
KCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICByZXR1cm4gQ2VydGlmaWNhdGVJ
bmZvKGFkb3B0Q0Yod2tDb3B5TlNVUkxSZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4obnNVUkxSZXNw
b25zZSgpKSkpOwotI2VuZGlmCiAgICAgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRp
YWxDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50
aWFsQ29jb2EuaAppbmRleCBmMmNkOTYzMmMyMGU2NTU3MGRhY2U5YjljMDkxMTA3NzZkNzZlMzE3
Li45NDM0ZDNhN2ExYTUwYjU1ZDU4ZDkwYzZlZGM1MmUyN2Q2MDk1OWY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29h
LmgKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQmFzZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi10eXBlZGVmIGNv
bnN0IHN0cnVjdCBfQ0ZVUkxDcmVkZW50aWFsKiBDRlVSTENyZWRlbnRpYWxSZWY7Ci0jZW5kaWYK
LQogT0JKQ19DTEFTUyBOU1VSTENyZWRlbnRpYWw7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTUyLDE4ICs0OCwxMiBAQCBwdWJsaWM6CiAKICAgICBDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRp
YWwmLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBl
eHBsaWNpdCBDcmVkZW50aWFsKENGVVJMQ3JlZGVudGlhbFJlZik7Ci0jZW5kaWYKICAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBDcmVkZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCiAgICAgYm9vbCBlbmNvZGlu
Z1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9uc0NyZWRlbnRpYWwgJiYg
ZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YShtX25zQ3JlZGVudGlhbC5nZXQoKSk7IH0KIAot
I2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNmQ3JlZGVudGlhbCgp
IGNvbnN0OwotI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxDcmVkZW50aWFsICpuc0Ny
ZWRlbnRpYWwoKSBjb25zdDsKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25z
dCBDcmVkZW50aWFsJiwgY29uc3QgQ3JlZGVudGlhbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbQppbmRleCBk
Njk2MWI2NjUyYTBmYWQyYjFkODZlMTg4NWFmNTI1MTI4OWEyMzcxLi43ZTA1YzQ2M2E1NWFlM2Ni
Mjg5NjU2YmExMzFkOWUyMjQwYzAwNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbQpAQCAtMjYsMTMgKzI2
LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQ3JlZGVudGlhbENvY29hLmgiCiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotQGludGVyZmFjZSBOU1VSTENyZWRlbnRpYWwgKFdlYkRldGFp
bHMpCi0tIChpZClfaW5pdFdpdGhDRlVSTENyZWRlbnRpYWw6KENGVVJMQ3JlZGVudGlhbFJlZilj
cmVkZW50aWFsOwotLSAoQ0ZVUkxDcmVkZW50aWFsUmVmKSBfQ0ZVUkxDcmVkZW50aWFsOwotQGVu
ZAotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE5TVVJMQ3JlZGVudGlh
bFBlcnNpc3RlbmNlIHRvTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UoQ3JlZGVudGlhbFBlcnNp
c3RlbmNlIHBlcnNpc3RlbmNlKQpAQCAtODQsMjYgKzc3LDEyIEBAIENyZWRlbnRpYWw6OkNyZWRl
bnRpYWwoY29uc3QgQ3JlZGVudGlhbCYgb3JpZ2luYWwsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBw
ZXJzaXN0CiAgICAgfQogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNyZWRlbnRpYWw6OkNyZWRl
bnRpYWwoQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWRlbnRpYWwpCi0gICAgOiBDcmVkZW50aWFsKGFk
b3B0TlMoW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIF9pbml0V2l0aENGVVJMQ3JlZGVudGlhbDpj
cmVkZW50aWFsXSkuZ2V0KCkpCi17Ci19Ci0jZW5kaWYKLQogQ3JlZGVudGlhbDo6Q3JlZGVudGlh
bChOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpCiAgICAgOiBDcmVkZW50aWFsQmFzZShjcmVk
ZW50aWFsLnVzZXIsIGNyZWRlbnRpYWwucGFzc3dvcmQsIHRvQ3JlZGVudGlhbFBlcnNpc3RlbmNl
KGNyZWRlbnRpYWwucGVyc2lzdGVuY2UpKQogICAgICwgbV9uc0NyZWRlbnRpYWwoY3JlZGVudGlh
bCkKIHsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi1DRlVSTENyZWRlbnRpYWxSZWYgQ3JlZGVu
dGlhbDo6Y2ZDcmVkZW50aWFsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW25zQ3JlZGVudGlhbCgp
IF9DRlVSTENyZWRlbnRpYWxdOwotfQotI2VuZGlmCi0KIE5TVVJMQ3JlZGVudGlhbCAqQ3JlZGVu
dGlhbDo6bnNDcmVkZW50aWFsKCkgY29uc3QKIHsKICAgICBpZiAobV9uc0NyZWRlbnRpYWwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rp
b25TcGFjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1By
b3RlY3Rpb25TcGFjZUNvY29hLmgKaW5kZXggNzQ4ODJkN2E4OGI3ODMxYjQxNGY5MGRmNzFkMTVk
ODkyNDRlMjE1Mi4uYjg2YWIwM2Q0ZmYzMjM1MzQwM2ZmMDdmYWE4MTgxZTUyOTgwZjdjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9u
U3BhY2VDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UHJvdGVjdGlvblNwYWNlQ29jb2EuaApAQCAtMjksMTAgKzI5LDYgQEAKICNpbmNsdWRlICJQcm90
ZWN0aW9uU3BhY2VCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNF
KENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IF9DRlVSTFByb3RlY3Rpb25TcGFjZSogQ0ZVUkxQ
cm90ZWN0aW9uU3BhY2VSZWY7Ci0jZW5kaWYKLQogT0JKQ19DTEFTUyBOU1VSTFByb3RlY3Rpb25T
cGFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsOSArNDMsNiBAQCBwdWJsaWM6CiAK
ICAgICBQcm90ZWN0aW9uU3BhY2UoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIGRlbGV0
ZWRWYWx1ZSkgOiBQcm90ZWN0aW9uU3BhY2VCYXNlKGRlbGV0ZWRWYWx1ZSkgeyB9CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIGV4cGxpY2l0IFByb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rp
b25TcGFjZVJlZik7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBQcm90ZWN0
aW9uU3BhY2UoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKik7CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0
Zm9ybUNvbXBhcmUoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBhLCBjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmIGIpOwpAQCAtNTgsOSArNTEsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KCkgY29uc3Q7CiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotICAgIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNmU3BhY2UoKSBjb25zdDsKLSNlbmRp
ZgogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUHJvdGVjdGlvblNwYWNlICpuc1NwYWNlKCkgY29u
c3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5tbQppbmRleCBhZjRjNGUwNTc2
OGMwOGY2M2I2ZGEwZGE5OTkzNDc4NWExM2ZiOGEzLi5kYjFmYjUxYmY5OTAyN2JjMmYzNTMwYTVk
NTE4YjBmZjdiNzg2MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0KQEAgLTI2LDIyICsy
Niw4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlByb3RlY3Rpb25TcGFjZUNvY29h
LmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQGludGVyZmFjZSBOU1VSTFByb3RlY3Rpb25TcGFj
ZSAoV2ViRGV0YWlscykKLS0gKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKSBfQ0ZVUkxQcm90ZWN0
aW9uU3BhY2U7Ci0tIChpZClfaW5pdFdpdGhDRlVSTFByb3RlY3Rpb25TcGFjZTooQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VSZWYpY2ZQcm90U3BhY2U7Ci1AZW5kCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLVByb3RlY3Rpb25TcGFjZTo6UHJvdGVjdGlv
blNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHNwYWNlKQotICAgIDogUHJvdGVjdGlvblNw
YWNlKGFkb3B0TlMoW1tOU1VSTFByb3RlY3Rpb25TcGFjZSBhbGxvY10gX2luaXRXaXRoQ0ZVUkxQ
cm90ZWN0aW9uU3BhY2U6c3BhY2VdKS5nZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBzdGF0aWMgUHJv
dGVjdGlvblNwYWNlU2VydmVyVHlwZSB0eXBlKE5TVVJMUHJvdGVjdGlvblNwYWNlICpzcGFjZSkK
IHsKICAgICBpZiAoW3NwYWNlIGlzUHJveHldKSB7CkBAIC0xMDUsMTMgKzkxLDYgQEAgUHJvdGVj
dGlvblNwYWNlOjpQcm90ZWN0aW9uU3BhY2UoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKnNwYWNlKQog
ICAgIG1fbnNTcGFjZSA9IHNwYWNlOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJMUHJv
dGVjdGlvblNwYWNlUmVmIFByb3RlY3Rpb25TcGFjZTo6Y2ZTcGFjZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIFtuc1NwYWNlKCkgX0NGVVJMUHJvdGVjdGlvblNwYWNlXTsKLX0KLSNlbmRpZgotCiBO
U1VSTFByb3RlY3Rpb25TcGFjZSAqUHJvdGVjdGlvblNwYWNlOjpuc1NwYWNlKCkgY29uc3QKIHsK
ICAgICBpZiAobV9uc1NwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggM2IxYjBh
MmY4NzQ3NDdiMzhhMmM4MzgwZmI2NTU5ODZiZGViOWVjYy4uOWY1ZDAyYWI2NWJjOGNhNDMyYzgy
NDI4NGU4YmRjMDFhYjdhMzk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBAIC01Mywx
NSArNTMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBOU1VSTFJlcXVlc3QgKlJlc291cmNlUmVx
dWVzdDo6bnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNvbnN0
CiB7CiAgICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KGJvZHlQb2xpY3kpOwotI2lmIFVTRShDRk5F
VFdPUkspCi0gICAgaWYgKCFtX25zUmVxdWVzdCkKLSAgICAgICAgY29uc3RfY2FzdDxSZXNvdXJj
ZVJlcXVlc3QqPih0aGlzKS0+dXBkYXRlTlNVUkxSZXF1ZXN0KCk7Ci0jZW5kaWYKICAgICByZXR1
cm4gW1ttX25zUmVxdWVzdC5nZXQoKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAotI2lmICFV
U0UoQ0ZORVRXT1JLKQotCiBDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJl
cXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9keVBvbGljeSkgY29uc3QKIHsKICAgICByZXR1
cm4gW25zVVJMUmVxdWVzdChib2R5UG9saWN5KSBfQ0ZVUkxSZXF1ZXN0XTsKQEAgLTIyMiw4ICsy
MTYsNiBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24oQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbikKICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMo
d2tDb3B5UmVxdWVzdFdpdGhTdG9yYWdlU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbiwgbV9uc1JlcXVl
c3QuZ2V0KCkpKTsKIH0KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAppbmRleCAwZDdlODI1ZWYyYjEx
ODg2YjM4ZGJiM2NiOTNlMDAwYjhiZDJlZWU1Li5kMTNmY2ZjZWNlNTYzMzUxNTA5M2QyMTAyMjk0
NzhkMmQ5MzlkNjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9RdWlja0xvb2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2suaApAQCAtNDQsMTEgKzQ0LDYgQEAgT0JKQ19DTEFTUyBOU1VSTFJlcXVlc3Q7
CiBPQkpDX0NMQVNTIE5TVVJMUmVzcG9uc2U7CiBPQkpDX0NMQVNTIFFMUHJldmlld0NvbnZlcnRl
cjsKIAotI2lmIFVTRShDRk5FVFdPUkspCi10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxSZXNwb25zZSog
Q0ZVUkxSZXNwb25zZVJlZjsKLXR5cGVkZWYgc3RydWN0IF9DRlVSTENvbm5lY3Rpb24qIENGVVJM
Q29ubmVjdGlvblJlZjsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFF1
aWNrTG9va0hhbmRsZUNsaWVudDsKQEAgLTgyLDkgKzc3LDYgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3VsZENyZWF0ZUZvck1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0
ZShSZXNvdXJjZUhhbmRsZSosIE5TVVJMQ29ubmVjdGlvbiAqLCBOU1VSTFJlc3BvbnNlICosIGlk
IGRlbGVnYXRlKTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VIYW5kbGUqLCBTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqLCBDRlVSTFJlc3BvbnNlUmVmKTsK
LSNlbmRpZgogICAgIC8vIEZJWE1FOiBVc2Ugb2YgUmVzb3VyY2VMb2FkZXIgaGVyZSBpcyBhIHBs
YXRmb3JtIHZpb2xhdGlvbi4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogCkBAIC05Niw5ICs4OCw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRpZEZhaWwoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVzcG9uc2Ug
Km5zUmVzcG9uc2UoKTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJMUmVzcG9uc2VSZWYg
Y2ZSZXNwb25zZSgpOwotI2VuZGlmCiAKICAgICB2b2lkIHNldENsaWVudChQYXNzUmVmUHRyPFF1
aWNrTG9va0hhbmRsZUNsaWVudD4gY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQppbmRl
eCAxN2VkODY0NmE1OTQ0YTBmMDFlZDU2ODcwOTdkOTdjYWM3MjA4NGY0Li5kZTA0MDRlMjAyNTlj
ZTcxMWY4ODZlNjFkNzlkOGYwNTUzMThiMzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbXBv
cnQgIkZpbGVTeXN0ZW1JT1MuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk5TRmls
ZU1hbmFnZXJTUEkuaCIKLSNpbXBvcnQgIlF1aWNrTG9va1NvZnRMaW5rLmgiCiAjaW1wb3J0ICJS
ZXNvdXJjZUVycm9yLmgiCiAjaW1wb3J0ICJSZXNvdXJjZUhhbmRsZS5oIgogI2ltcG9ydCAiUmVz
b3VyY2VMb2FkZXIuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oIgog
I2ltcG9ydCAiU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LmgiCisjaW1wb3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgiCiAjaW1wb3J0
ICJXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC00NiwxNCArNDYsNyBAQAog
I2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvbi5o
PgotCi1AaW50ZXJmYWNlIE5TVVJMUmVzcG9uc2UgKFF1aWNrTG9va0RldGFpbHMpCi0rKE5TVVJM
UmVzcG9uc2UgKilfcmVzcG9uc2VXaXRoQ0ZVUkxSZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJlZily
ZXNwb25zZTsKLS0oQ0ZVUkxSZXNwb25zZVJlZilfQ0ZVUkxSZXNwb25zZTsKLUBlbmQKLSNlbmRp
ZgorI2ltcG9ydCAiUXVpY2tMb29rU29mdExpbmsuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKQEAgLTE5Miw4MyArMTg1LDcgQEAgY29uc3QgY2hhciogV2ViQ29yZTo6UUxQcmV2aWV3
UHJvdG9jb2woKQogICAgIHJldHVybiBwcmV2aWV3UHJvdG9jb2wuZ2V0KCkuZGF0YSgpOwogfQog
Ci0jaWYgVVNFKENGTkVUV09SSykKLS8vIFRoZSB3YXkgUXVpY2tMb29rIHdvcmtzIGlzIHdlIHBh
c3MgaXQgYW4gTlNVUkxDb25uZWN0aW9uRGVsZWdhdGUgY2FsbGJhY2sgb2JqZWN0IGF0IGNyZWF0
aW9uCi0vLyB0aW1lLiBUaGVuIHdlIHBhc3MgaXQgYWxsIHRoZSBkYXRhIGFzIHdlIHJlY2VpdmUg
aXQuIE9uY2Ugd2UndmUgZG93bmxvYWRlZCB0aGUgZnVsbCBVUkwsCi0vLyBRdWlja0xvb2sgdHVy
bnMgYXJvdW5kIGFuZCBzZW5kIHVzLCB0aHJvdWdoIHRoaXMgZGVsZWdhdGUsIHRoZSBIVE1MIHZl
cnNpb24gb2YgdGhlIGZpbGUgd2hpY2ggd2UKLS8vIHBhc3Mgb24gdG8gV2ViQ29yZS4gVGhlIGZs
YWcgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciBpbiBRdWlja0xvb2tIYW5kbGUg
ZGVjaWRlcwotLy8gd2hldGhlciB0byBwYXNzIHRoZSBkYXRhIHRvIFF1aWNrTG9vayBvciBXZWJD
b3JlLgotLy8KLS8vIFRoaXMgd29ya3MgZmluZSB3aGVuIHVzaW5nIE5TIEFQSXMsIGJ1dCB3aGVu
IHVzaW5nIENGTmV0d29yaywgd2UgZG9uJ3QgaGF2ZSBhIE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LgotLy8gU28gd2UgY3JlYXRlIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgYXMgYW4gaW50
ZXJtZWRpYXRlIGRlbGVnYXRlIG9iamVjdCBhbmQgcGFzcyBpdCB0bwotLy8gUUxQcmV2aWV3Q29u
dmVydGVyLiBUaGUgcHJveHkgZGVsZWdhdGUgdGhlbiBmb3J3YXJkcyB0aGUgbWVzc2FnZXMgb24g
dG8gdGhlIENGTmV0d29yayBjb2RlLgotQGludGVyZmFjZSBXZWJRdWlja0xvb2tIYW5kbGVBc0Rl
bGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiB7Ci0gICAgUmVmUHRy
PFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZT4gbV9jb25u
ZWN0aW9uRGVsZWdhdGU7Ci19Ci0KLS0gKGlkKWluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRlOihT
eW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqKWNvbm5lY3Rp
b25EZWxlZ2F0ZTsKLS0gKHZvaWQpY2xlYXJIYW5kbGU7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlv
biBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlCi0tIChpZClpbml0V2l0aENvbm5lY3Rpb25E
ZWxlZ2F0ZTooU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
Kiljb25uZWN0aW9uRGVsZWdhdGUKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlm
ICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9
IGNvbm5lY3Rpb25EZWxlZ2F0ZTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZCljb25u
ZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhQXJyYXk6
KE5TQXJyYXkgKilkYXRhQXJyYXkKLXsKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0g
ICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExPRyhO
ZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGFBcnJh
eSgpIik7Ci0gICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZFJlY2VpdmVEYXRhQXJyYXkocmVp
bnRlcnByZXRfY2FzdDxDRkFycmF5UmVmPihkYXRhQXJyYXkpKTsKLX0KLQotLSAodm9pZCljb25u
ZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhOihOU0Rh
dGEgKilkYXRhIGxlbmd0aFJlY2VpdmVkOihsb25nIGxvbmcpbGVuZ3RoUmVjZWl2ZWQKLXsKLSAg
ICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0
ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxl
QXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEoKSAtIGRhdGEgbGVuZ3RoID0gJWxkIiwgKGxvbmcp
W2RhdGEgbGVuZ3RoXSk7Ci0KLSAgICAvLyBRdWlja0xvb2sgY29kZSBzZW5kcyB1cyBhIG5pbCBk
YXRhIGF0IHRpbWVzLiBUaGUgY2hlY2sgYmVsb3cgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbgot
ICAgIC8vIFJlc291cmNlSGFuZGxlTWFjLmNwcCBhZGRlZCBmb3IgYSBkaWZmZXJlbnQgYnVnLgot
ICAgIGlmICghW2RhdGEgbGVuZ3RoXSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fY29ubmVjdGlv
bkRlbGVnYXRlLT5kaWRSZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oZGF0
YSksIHN0YXRpY19jYXN0PGludD4obGVuZ3RoUmVjZWl2ZWQpKTsKLX0KLQotLSAodm9pZCljb25u
ZWN0aW9uRGlkRmluaXNoTG9hZGluZzooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgotewot
ICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBpZiAoIW1fY29ubmVjdGlvbkRlbGVn
YXRlKQotICAgICAgICByZXR1cm47Ci0gICAgTE9HKE5ldHdvcmssICJXZWJRdWlja0xvb2tIYW5k
bGVBc0RlbGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nKCkiKTsKLSAgICBtX2Nvbm5lY3Rpb25EZWxl
Z2F0ZS0+ZGlkRmluaXNoTG9hZGluZygpOwotfQotCi0tICh2b2lkKWNvbm5lY3Rpb246KE5TVVJM
Q29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9y
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIGlmICghbV9jb25uZWN0aW9u
RGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBMT0coTmV0d29yaywgIldlYlF1aWNrTG9v
a0hhbmRsZUFzRGVsZWdhdGU6OmRpZEZhaWwoKSIpOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRl
LT5kaWRGYWlsKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZFcnJvclJlZj4oZXJyb3IpKTsKLX0KLQotLSAo
dm9pZCljbGVhckhhbmRsZQotewotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlID0gbnVsbHB0cjsK
LX0KLUBlbmQKLSNlbmRpZgotCi1AaW50ZXJmYWNlIFdlYlJlc291cmNlTG9hZGVyUXVpY2tMb29r
RGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25uZWN0aW9uRGVsZWdhdGU+IHsKK0BpbnRlcmZh
Y2UgV2ViUmVzb3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENv
bm5lY3Rpb25EZWxlZ2F0ZSwgV2ViQ29yZVJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsKICAgICBS
ZWZQdHI8UmVzb3VyY2VMb2FkZXI+IF9yZXNvdXJjZUxvYWRlcjsKICAgICBCT09MIF9oYXNTZW50
RGlkUmVjZWl2ZVJlc3BvbnNlOwogICAgIEJPT0wgX2hhc0ZhaWxlZDsKQEAgLTM1OSw3ICsyNzYs
NyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlk
RmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycgogICAgIF9yZXNvdXJjZUxvYWRlci0+ZGlkRmFp
bChSZXNvdXJjZUVycm9yKGVycm9yKSk7CiB9CiAKLS0gKHZvaWQpY2xlYXJIYW5kbGUKKy0gKHZv
aWQpZGV0YWNoSGFuZGxlCiB7CiAgICAgX3Jlc291cmNlTG9hZGVyID0gbnVsbHB0cjsKICAgICBf
cXVpY2tMb29rSGFuZGxlID0gbnVsbHB0cjsKQEAgLTQxNSwyNiArMzMyLDYgQEAgc3RkOjp1bmlx
dWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwKICAgICByZXR1cm4gV1RGOjptb3ZlKHF1aWNrTG9va0hhbmRsZSk7CiB9
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4g
UXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgU3luY2hyb25v
dXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKiBjb25uZWN0aW9uRGVsZWdh
dGUsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKLXsKLSAgICBBU1NFUlRfQVJHKGhhbmRs
ZSwgaGFuZGxlKTsKLSAgICBpZiAoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5yZXF1ZXN0ZXIoKSAh
PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbiB8fCAhW1FMUHJldmlld0dldFN1cHBv
cnRlZE1JTUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAqKUNGVVJMUmVzcG9u
c2VHZXRNSU1FVHlwZShjZlJlc3BvbnNlKV0pCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSA9IFtOU1VSTFJlc3BvbnNlIF9yZXNwb25zZVdp
dGhDRlVSTFJlc3BvbnNlOmNmUmVzcG9uc2VdOwotICAgIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVs
ZWdhdGUgKmRlbGVnYXRlID0gW1tbV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6Y29ubmVjdGlvbkRlbGVnYXRlXSBhdXRvcmVsZWFz
ZV07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gcXVpY2tMb29rSGFuZGxl
KG5ldyBRdWlja0xvb2tIYW5kbGUoW2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0
KERvTm90VXBkYXRlSFRUUEJvZHkpIFVSTF0sIG5pbCwgbnNSZXNwb25zZSwgZGVsZWdhdGUpKTsK
LSAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRDcmVhdGVRdWlja0xvb2tIYW5kbGUoKnF1aWNrTG9v
a0hhbmRsZSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShxdWlja0xvb2tIYW5kbGUpOwotfQotCi1D
RlVSTFJlc3BvbnNlUmVmIFF1aWNrTG9va0hhbmRsZTo6Y2ZSZXNwb25zZSgpCi17Ci0gICAgcmV0
dXJuIFttX25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdOwotfQotI2VuZGlmCi0KIGJvb2wgUXVp
Y2tMb29rSGFuZGxlOjpzaG91bGRDcmVhdGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogewogICAgIHJldHVybiBbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkg
Y29udGFpbnNPYmplY3Q6bWltZVR5cGVdOwpAQCAtNTAwLDcgKzM5Nyw3IEBAIFF1aWNrTG9va0hh
bmRsZTo6flF1aWNrTG9va0hhbmRsZSgpCiAgICAgTE9HKE5ldHdvcmssICJRdWlja0xvb2tIYW5k
bGU6On5RdWlja0xvb2tIYW5kbGUoKSIpOwogICAgIG1fY29udmVydGVyID0gbnVsbHB0cjsKIAot
ICAgIFttX2RlbGVnYXRlIGNsZWFySGFuZGxlXTsKKyAgICBbbV9kZWxlZ2F0ZSBkZXRhY2hIYW5k
bGVdOwogfQogCiBTdHJpbmcgUXVpY2tMb29rSGFuZGxlOjpwcmV2aWV3RmlsZU5hbWUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3Vy
Y2VIYW5kbGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNv
dXJjZUhhbmRsZUlPUy5tbQppbmRleCA2NjdiOWIxODY2NzQ0MGRlYmZlZmRhMTgwNWI4NGNiNTQ3
ODRjNTc5Li5iNzI5ZjBmMzYyMTlkYzQxZjNhZGViMzE5NDIxZmY5NjU3ZjQ4MWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhh
bmRsZUlPUy5tbQpAQCAtMSwzOSArMSBAQAotLy8KLS8vICBSZXNvdXJjZUhhbmRsZUlQaG9uZS5t
bQotLy8gIFdlYkNvcmUKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSZXNvdXJj
ZUhhbmRsZUludGVybmFsLmgiCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi0jaW1wb3J0IDxDRk5l
dHdvcmsvQ0ZTb2NrZXRTdHJlYW1Qcml2Lmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVx
dWVzdFByaXZhdGUuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRl
U1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQotewotICAgIE5TU3RyaW5nICpob3N0ID0gcmVxdWVzdC51cmwoKS5ob3N0KCk7Ci0gICAg
TlNBcnJheSAqY2VydEFycmF5ID0gW05TVVJMUmVxdWVzdCBhbGxvd3NTcGVjaWZpY0hUVFBTQ2Vy
dGlmaWNhdGVGb3JIb3N0Omhvc3RdOwotICAgIEJPT0wgYWxsb3dzQW55Q2VydGlmaWNhdGUgPSBb
TlNVUkxSZXF1ZXN0IGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVGb3JIb3N0Omhvc3RdOwotICAg
IGlmICghY2VydEFycmF5ICYmICFhbGxvd3NBbnlDZXJ0aWZpY2F0ZSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHNzbFByb3BzID0gQ0ZEaWN0aW9uYXJ5
Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBpZiAo
Y2VydEFycmF5KQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzc2xQcm9wcywgX2tDRlN0
cmVhbVNTTFRydXN0ZWRMZWFmQ2VydGlmaWNhdGVzLCAoQ0ZUeXBlUmVmKSBjZXJ0QXJyYXkpOwot
Ci0gICAgaWYgKGFsbG93c0FueUNlcnRpZmljYXRlKQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShzc2xQcm9wcywga0NGU3RyZWFtU1NMVmFsaWRhdGVzQ2VydGlmaWNhdGVDaGFpbiwga0NG
Qm9vbGVhbkZhbHNlKTsKLSAgICByZXR1cm4gc3NsUHJvcHM7Ci19Ci0KLX0KLQotI2VuZGlmCisv
LyBSZW1vdmUgbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1Jlc291cmNlUmVxdWVzdElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1Jlc291cmNlUmVxdWVzdElPUy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggN2I3ZGM2YmU2MzQ1Y2M1Njk2YTFlYzZlYmQwMDMyZjMyMzRkZmIwMC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5oIgotCi0jaWYg
UExBVEZPUk0oSU9TKQotCi1AaW50ZXJmYWNlIE5TVVJMUmVxdWVzdCAoV2ViTlNVUkxSZXF1ZXN0
RGV0YWlscykKLS0gKENGVVJMUmVxdWVzdFJlZilfQ0ZVUkxSZXF1ZXN0OwotLSAoaWQpX2luaXRX
aXRoQ0ZVUkxSZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdDsKLUBlbmQKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VSZXF1ZXN0OjpS
ZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QpCi0gICAgOiBSZXNvdXJjZVJl
cXVlc3RCYXNlKCkKLSAgICAsIG1fY2ZSZXF1ZXN0KFtuc1JlcXVlc3QgX0NGVVJMUmVxdWVzdF0p
Ci0gICAgLCBtX25zUmVxdWVzdChuc1JlcXVlc3QpCi17Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1
ZXN0Ojp1cGRhdGVOU1VSTFJlcXVlc3QoKQotewotICAgIGlmIChtX2NmUmVxdWVzdCkKLSAgICAg
ICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gX2lu
aXRXaXRoQ0ZVUkxSZXF1ZXN0Om1fY2ZSZXF1ZXN0LmdldCgpXSk7Ci19Ci0KLXZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0OjpjbGVhck9yVXBkYXRlTlNVUkxSZXF1ZXN0KCkKLXsKLSAgICAvLyBUaGVyZSBp
cyBjbGllbnQgY29kZSB0aGF0IGV4dGVuZHMgTlNVUkxSZXF1ZXN0IGFuZCBleHBlY3RzIHRvIGdl
dCBiYWNrLCBpbiB0aGUgZGVsZWdhdGUKLSAgICAvLyBjYWxsYmFja3MsIGFuIG9iamVjdCBvZiB0
aGUgc2FtZSB0eXBlIHRoYXQgdGhleSBwYXNzZWQgaW50byBXZWJLaXQuIFRvIGtlZXAgdGhlbiBy
dW5uaW5nLCB3ZQotICAgIC8vIGNyZWF0ZSBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSBhbmQg
cmV0dXJuIHRoYXQuIFNlZSA8cmRhcjovLzk4NDM1ODI+LgotICAgIC8vIEFsc28sIGRldmVsb3Bl
cnMgcmVhbGx5IHJlYWxseSB3YW50IGFuIE5TTXV0YWJsZVVSTFJlcXVlc3Qgc28gdHJ5IHRvIGNy
ZWF0ZSBhbgotICAgIC8vIE5TTXV0YWJsZVVSTFJlcXVlc3QgaW5zdGVhZCBvZiBOU1VSTFJlcXVl
c3QuCi0gICAgc3RhdGljIENsYXNzIG5zVVJMUmVxdWVzdENsYXNzID0gW05TVVJMUmVxdWVzdCBj
bGFzc107Ci0gICAgc3RhdGljIENsYXNzIG5zTXV0YWJsZVVSTFJlcXVlc3RDbGFzcyA9IFtOU011
dGFibGVVUkxSZXF1ZXN0IGNsYXNzXTsKLSAgICBDbGFzcyByZXF1ZXN0Q2xhc3MgPSBbbV9uc1Jl
cXVlc3QuZ2V0KCkgY2xhc3NdOwotCi0gICAgaWYgKCFtX2NmUmVxdWVzdCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKHJlcXVlc3RDbGFzcyAmJiByZXF1ZXN0Q2xhc3MgIT0gbnNVUkxSZXF1
ZXN0Q2xhc3MgJiYgcmVxdWVzdENsYXNzICE9IG5zTXV0YWJsZVVSTFJlcXVlc3RDbGFzcykKLSAg
ICAgICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKFtbcmVxdWVzdENsYXNzIGFsbG9jXSBfaW5pdFdp
dGhDRlVSTFJlcXVlc3Q6bV9jZlJlcXVlc3QuZ2V0KCldKTsKLSAgICBlbHNlCi0gICAgICAgIG1f
bnNSZXF1ZXN0ID0gbnVsbHB0cjsKLX0KLQotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25N
YWMubW0KaW5kZXggZTM4YjAzODdkZTA0NmM3YzAxNTc0M2Q3YmI3ZWEzNmU0MDkzODAyMi4uYTgy
YTU1YzMzODgzN2Q3MGUyZTFhNWIwMzJjNzJiYzkzMzY5OGUxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0K
QEAgLTMyLDE4ICszMiwxMiBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUHJvdGVjdGlvblNwYWNl
Lmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCAiQ0ZOU1VSTENvbm5lY3Rpb25TUEku
aCIKLSNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFjZSBXZWJD
b3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciA6IE5TT2JqZWN0IDxOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyPgogewogICAgIEF1dGhlbnRpY2F0aW9uQ2xp
ZW50KiBtX2NsaWVudDsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJMQXV0aENoYWxsZW5n
ZVJlZiBtX2NmQ2hhbGxlbmdlOwotI2VuZGlmCiB9CiAtIChpZClpbml0V2l0aEF1dGhlbnRpY2F0
aW9uQ2xpZW50OihBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50OwogLSAoQXV0aGVudGljYXRp
b25DbGllbnQqKWNsaWVudDsKQEAgLTg5LDQ3ICs4MywxMCBAQCAtICh2b2lkKWNhbmNlbEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxl
bmdlCiAgICAgICAgIG1fY2xpZW50LT5yZWNlaXZlZENhbmNlbGxhdGlvbihjb3JlKGNoYWxsZW5n
ZSkpOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLS0gKHZvaWQpc2V0Q0ZDaGFsbGVuZ2U6KENG
VVJMQXV0aENoYWxsZW5nZVJlZiljaGFsbGVuZ2UKLXsKLSAgICBtX2NmQ2hhbGxlbmdlID0gY2hh
bGxlbmdlOwotfQotCi0tIChDRlVSTEF1dGhDaGFsbGVuZ2VSZWYpY2ZDaGFsbGVuZ2UKLXsKLSAg
ICByZXR1cm4gbV9jZkNoYWxsZW5nZTsKLX0KLSNlbmRpZgotCiBAZW5kCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
IGNvcmUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbWFjQ2hhbGxlbmdlKQotewotICAg
IFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyICpjaGFsbGVuZ2VT
ZW5kZXIgPSAoV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIqKSBb
bWFjQ2hhbGxlbmdlIHNlbmRlcl07Ci0gICAgcmV0dXJuIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFtjaGFsbGVuZ2VTZW5kZXIgY2ZDaGFsbGVuZ2VdLCBbY2hhbGxlbmdlU2VuZGVyIGNsaWVudF0p
OwotfQotCi1OU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICptYWMoY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UpCi17Ci0gICAgQXV0aGVudGljYXRpb25DbGll
bnQqIGF1dGhDbGllbnQgPSBjb3JlQ2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7Ci0g
ICAgUmV0YWluUHRyPFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVy
PiBjaGFsbGVuZ2VTZW5kZXIgPSBhZG9wdE5TKFtbV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50
QXNDaGFsbGVuZ2VTZW5kZXIgYWxsb2NdIGluaXRXaXRoQXV0aGVudGljYXRpb25DbGllbnQ6YXV0
aENsaWVudF0pOwotICAgIFJldGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IGF1dGhDaGFs
bGVuZ2UgPSBjb3JlQ2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpOwotICAgIGlmICgh
YXV0aENoYWxsZW5nZSkKLSAgICAgICAgYXV0aENoYWxsZW5nZSA9IGFkb3B0Q0YoY3JlYXRlQ0Yo
Y29yZUNoYWxsZW5nZSkpOwotICAgIFtjaGFsbGVuZ2VTZW5kZXIuZ2V0KCkgc2V0Q0ZDaGFsbGVu
Z2U6YXV0aENoYWxsZW5nZS5nZXQoKV07Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIHJldHVybiBb
W05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgX2NyZWF0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRm9yQ0ZBdXRoQ2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2UuZ2V0KCkgc2VuZGVyOmNoYWxsZW5n
ZVNlbmRlci5nZXQoKV0gYXV0b3JlbGVhc2VdOwotI2Vsc2UKLSAgICByZXR1cm4gW1tOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIF9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZUZvckNGQXV0aENo
YWxsZW5nZTphdXRoQ2hhbGxlbmdlLmdldCgpIHNlbmRlcjpjaGFsbGVuZ2VTZW5kZXIuZ2V0KCld
IGF1dG9yZWxlYXNlXTsKLSNlbmRpZgotfQotCi0jZWxzZQotCiBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90
ZWN0aW9uU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzRmFp
bHVyZUNvdW50LApAQCAtMjAzLDYgKzE2MCw0IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNv
cmUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbWFjQ2hhbGxlbmdlKQogICAgIHJldHVy
biBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtYWNDaGFsbGVuZ2UpOwogfQogCi0jZW5kaWYgLy8g
VVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCmluZGV4IDE2ZDEw
ZTIwNzAwNDFhODdlNDYzY2VmMjQ3NGMzYzQ4OWRkM2ZhZWEuLjgyZDRmNWZlMjUyYThlY2JlZTc2
YjI3YTQyMmY1MTczNzQyODBhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KQEAgLTMxLDggKzMxLDYgQEAKICNpbXBvcnQg
Ik5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkNvb2tpZS5oIgogI2ltcG9y
dCAiQ29va2llU3RvcmFnZS5oIgogI2ltcG9ydCAiVVJMLmgiCkBAIC0yMDAsMTIgKzE5OCw2IEBA
IHZvaWQgZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24pCiAgICAgd2tEZWxldGVBbGxIVFRQQ29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5n
ZXQoKSk7CiB9CiAKLX0KLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KIHN0YXRpYyBOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKICAgICBhdXRvIGNvb2tpZVN0
b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KaW5k
ZXggOWViYzg1NGRjZGI0OGQ1N2U4ZjgyODY5NDQyNGVjZDQ5YjczMzZlYy4uZjBhNGYzYWY3NjQx
NWNiMjZjMjk0YmQ4MTM5MTNmZTIyMzNiMzc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KQEAg
LTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDcmVkZW50aWFs
U3RvcmFnZS5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbmNsdWRlICJBdXRoZW50aWNh
dGlvbk1hYy5oIgogI2luY2x1ZGUgIkNyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9u
U3BhY2UuaCIKQEAgLTUyLDUgKzUwLDMgQEAgdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6c2F2ZVRv
UGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW8KICNlbmRp
ZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRh
U3RyZWFtTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0
YVN0cmVhbU1hYy5oCmluZGV4IGRiODFjNjY4N2M0MjJlNWVjYmMzNjkwZTIzNDVhZjgyMjRhZDA2
YzYuLmUyYzhiODk2YThhMjQ4OTdiMTJmMDJlNDdlYjA1NTExZDliZDQwYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1N
YWMuaApAQCAtMjksOCArMjksNiBAQAogI2lmbmRlZiBGb3JtRGF0YVN0cmVhbU1hY19oCiAjZGVm
aW5lIEZvcm1EYXRhU3RyZWFtTWFjX2gKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMUmVxdWVzdCog
Q0ZVUkxSZXF1ZXN0UmVmOwpAQCAtNDksNiArNDcsNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogCiAj
ZW5kaWYgLy8gRm9ybURhdGFTdHJlYW1NYWNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQppbmRleCBiNTczNGY5
OGVkZmJmMTEzNWUxN2Q0YjdlYmMyOWNjNTVmZTA0MzUxLi43YjdkMWQzYTE1ZTM5NTc0M2M5NDQ5
MTgzNGMzMjk4ZTIzY2ZhMThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQpAQCAtMjksOCArMjksNiBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJGb3JtRGF0YVN0cmVhbU1hYy5oIgogCi0jaWYg
IVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkZvcm1EYXRhLmgiCiAjaW1wb3J0ICJGb3JtRGF0
YVN0cmVhbUNGTmV0LmgiCiAjaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNTIsNSArNTAs
MyBAQCBGb3JtRGF0YSogaHR0cEJvZHlGcm9tU3RyZWFtKE5TSW5wdXRTdHJlYW0gKnN0cmVhbSkK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUksp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUVycm9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VFcnJvck1hYy5tbQppbmRleCBmN2M4NjRjZTNiNTA5OWZlMDJmMTY5NjlhY2UzOTdmNjgyZTgz
ZGJhLi5mYjc3NjZmNTc2YjJmYmMxNjM4MjVmZmE5MjI4YzMyNWY4ODA5ZmQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JN
YWMubW0KQEAgLTMxLDEwICszMSw2IEBACiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRkVycm9y
Lmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotI2lmIFBMQVRGT1JNKElP
UykgJiYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQgPENGTmV0d29yay9DRlNvY2tldFN0cmVhbVBy
aXYuaD4KLSNlbmRpZgotCiBAaW50ZXJmYWNlIE5TRXJyb3IgKFdlYkV4dHJhcykKIC0gKE5TU3Ry
aW5nICopX3dlYl9sb2NhbGl6ZWREZXNjcmlwdGlvbjsKIEBlbmQKQEAgLTkxLDg1ICs4Nyw2IEBA
IC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKIAogQGVuZAogCi0KLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotc3RhdGljIE5TRXJyb3IgKk5TRXJyb3JGcm9tQ0ZFcnJvcihDRkVy
cm9yUmVmIGNmRXJyb3IsIE5TVVJMICp1cmwpCi17Ci0gICAgQ0ZJbmRleCBlcnJDb2RlID0gQ0ZF
cnJvckdldENvZGUoY2ZFcnJvcik7Ci0gICAgaWYgKENGRXF1YWwoQ0ZFcnJvckdldERvbWFpbihj
ZkVycm9yKSwga0NGRXJyb3JEb21haW5DRk5ldHdvcmspICYmIGVyckNvZGUgPD0ga0NGVVJMRXJy
b3JVbmtub3duICYmIGVyckNvZGUgPiAtNDAwMCkgewotICAgICAgICAvLyBUaGlzIGlzIGFuIFVS
TCBlcnJvciBhbmQgbmVlZHMgdG8gYmUgdHJhbnNsYXRlZCB0byB0aGUgTlNVUkxFcnJvckRvbWFp
bgotICAgICAgICBpZCBrZXlzWzEwXSwgdmFsdWVzWzEwXTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5
UmVmIHVzZXJJbmZvID0gQ0ZFcnJvckNvcHlVc2VySW5mbyhjZkVycm9yKTsKLSAgICAgICAgTlNF
cnJvciAqcmVzdWx0OwotICAgICAgICBOU0ludGVnZXIgY291bnQgPSAwOwotCi0gICAgICAgIGlm
ICh1cmwpIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxF
cnJvcktleTsKLSAgICAgICAgICAgIHZhbHVlc1tjb3VudF0gPSB1cmw7Ci0gICAgICAgICAgICBj
b3VudCArKzsKLQotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFpbGluZ1VS
TFN0cmluZ0Vycm9yS2V5OwotICAgICAgICAgICAgdmFsdWVzW2NvdW50XSA9IFt1cmwgYWJzb2x1
dGVTdHJpbmddOwotICAgICAgICAgICAgY291bnQgKys7Ci0gICAgICAgIH0KLQotICAgICAgICB2
YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZFcnJv
ckxvY2FsaXplZERlc2NyaXB0aW9uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsK
LSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleTsKLSAg
ICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVzW2NvdW50XSA9
IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGRXJyb3JMb2NhbGl6ZWRGYWls
dXJlUmVhc29uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAg
IGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk7Ci0gICAgICAg
ICAgICBjb3VudCArKzsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQp
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRkVycm9yTG9jYWxpemVkUmVjb3ZlcnlT
dWdnZXN0aW9uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAg
IGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25FcnJvcktleTsKLSAg
ICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRl
Y2xhcmF0aW9ucyIKLSAgICAgICAgaWYgKHVzZXJJbmZvICYmICh2YWx1ZXNbY291bnRdID0gKGlk
KUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNTTFBlZXJD
ZXJ0aWZpY2F0ZXMpKSAhPSBuaWwpIHsKLSAgICAgICAgICAgIC8vIE5lZWQgdG8gdHJhbnNsYXRl
IHRoZSBjZXJ0Ci0gICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvclBlZXJDZXJ0aWZp
Y2F0ZUNoYWluS2V5IjsKLSAgICAgICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgICAgICB2YWx1
ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBfa0NGU3RyZWFt
UHJvcGVydHlTU0xDbGllbnRDZXJ0aWZpY2F0ZXMpOwotICAgICAgICAgICAgaWYgKHZhbHVlc1tj
b3VudF0pIHsKLSAgICAgICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvckNsaWVudENl
cnRpZmljYXRlQ2hhaW5LZXkiOwotICAgICAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZh
bHVlKHVzZXJJbmZvLCBfa0NGU3RyZWFtUHJvcGVydHlTU0xDbGllbnRDZXJ0aWZpY2F0ZVN0YXRl
KTsKLSAgICAgICAgICAgIGlmICh2YWx1ZXNbY291bnRdKSB7Ci0gICAgICAgICAgICAgICAga2V5
c1tjb3VudF0gPSBAIk5TRXJyb3JDbGllbnRDZXJ0aWZpY2F0ZVN0YXRlS2V5IjsKLSAgICAgICAg
ICAgICAgICBjb3VudCArKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHBvcAotCi0gICAgICAgIGlmICh1c2VySW5mbyAmJiAodmFsdWVzW2NvdW50
XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGU3RyZWFtUHJvcGVydHlT
U0xQZWVyVHJ1c3QpKSAhPSBuaWwpIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNVUkxF
cnJvckZhaWxpbmdVUkxQZWVyVHJ1c3RFcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50Kys7Ci0g
ICAgICAgIH0KLQotICAgICAgICBrZXlzW2NvdW50XSA9IE5TVW5kZXJseWluZ0Vycm9yS2V5Owot
ICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKWNmRXJyb3I7Ci0gICAgICAgIGNvdW50ICsrOwot
Ci0gICAgICAgIHJlc3VsdCA9IFtXZWJDdXN0b21OU1VSTEVycm9yIGVycm9yV2l0aERvbWFpbjpO
U1VSTEVycm9yRG9tYWluIGNvZGU6KGVyckNvZGUgPT0ga0NGVVJMRXJyb3JVbmtub3duID8gKENG
SW5kZXgpTlNVUkxFcnJvclVua25vd24gOiBlcnJDb2RlKSB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5
IGRpY3Rpb25hcnlXaXRoT2JqZWN0czp2YWx1ZXMgZm9yS2V5czprZXlzIGNvdW50OmNvdW50XV07
Ci0gICAgICAgIGlmICh1c2VySW5mbykKLSAgICAgICAgICAgIENGUmVsZWFzZSh1c2VySW5mbyk7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIHJldHVybiAoTlNFcnJvciAqKWNm
RXJyb3I7Ci19Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTkzLDUzICsxMTAsNiBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZU5TRXJyb3JGcm9tUmVzb3VyY2VFcnJvckJhc2UoY29u
c3QgUmVzb3VyY2VFcnJvcgogICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5p
dFdpdGhEb21haW46cmVzb3VyY2VFcnJvci5kb21haW4oKSBjb2RlOnJlc291cmNlRXJyb3IuZXJy
b3JDb2RlKCkgdXNlckluZm86dXNlckluZm8uZ2V0KCldKTsKIH0KIAotI2lmIFVTRShDRk5FVFdP
UkspCi0KLVJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoTlNFcnJvciAqZXJyb3IpCi0gICAg
OiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQotICAgICwgbV9wbGF0Zm9ybUVycm9yKHJlaW50ZXJw
cmV0X2Nhc3Q8Q0ZFcnJvclJlZj4oZXJyb3IpKQotewotICAgIG1faXNOdWxsID0gIWVycm9yOwot
ICAgIGlmICghbV9pc051bGwpCi0gICAgICAgIG1faXNUaW1lb3V0ID0gW2Vycm9yIGNvZGVdID09
IE5TVVJMRXJyb3JUaW1lZE91dDsKLX0KLQotTlNFcnJvciAqUmVzb3VyY2VFcnJvcjo6bnNFcnJv
cigpIGNvbnN0Ci17Ci0gICAgaWYgKG1faXNOdWxsKSB7Ci0gICAgICAgIEFTU0VSVCghbV9wbGF0
Zm9ybUVycm9yKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICBpZiAobV9wbGF0
Zm9ybU5TRXJyb3IpCi0gICAgICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLQot
ICAgIGlmIChtX3BsYXRmb3JtRXJyb3IpIHsKLSAgICAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG1f
cGxhdGZvcm1FcnJvci5nZXQoKTsKLSAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
dXNlckluZm8gPSBhZG9wdENGKENGRXJyb3JDb3B5VXNlckluZm8oZXJyb3IpKTsKLSNpZiBQTEFU
Rk9STShJT1MpCi0gICAgICAgIG1fcGxhdGZvcm1OU0Vycm9yID0gTlNFcnJvckZyb21DRkVycm9y
KGVycm9yLCAoTlNVUkwgKilbKE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvLmdldCgpIG9iamVjdEZv
cktleTooaWQpIGtDRlVSTEVycm9yRmFpbGluZ1VSTEVycm9yS2V5XSk7Ci0gICAgICAgIC8vIElm
IE5TRXJyb3JGcm9tQ0ZFcnJvciBjcmVhdGVkIGEgbmV3IE5TRXJyb3IgZm9yIHVzLCByZXR1cm4g
dGhhdC4KLSAgICAgICAgaWYgKG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpICE9IChOU0Vycm9yICop
ZXJyb3IpCi0gICAgICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCk7Ci0KLSAg
ICAgICAgLy8gT3RoZXJ3aXNlIGZhbGwgdGhyb3VnaCB0byBjcmVhdGUgYSBuZXcgTlNFcnJvciBm
cm9tIHRoZSBDRkVycm9yLgotI2VuZGlmCi0gICAgICAgIG1fcGxhdGZvcm1OU0Vycm9yID0gYWRv
cHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOihOU1N0cmluZyAqKUNGRXJyb3JH
ZXREb21haW4oZXJyb3IpIGNvZGU6Q0ZFcnJvckdldENvZGUoZXJyb3IpIHVzZXJJbmZvOihOU0Rp
Y3Rpb25hcnkgKil1c2VySW5mby5nZXQoKV0pOwotICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU5T
RXJyb3IuZ2V0KCk7Ci0gICAgfQotCi0gICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBjcmVhdGVOU0Vy
cm9yRnJvbVJlc291cmNlRXJyb3JCYXNlKCp0aGlzKTsKLSAgICByZXR1cm4gbV9wbGF0Zm9ybU5T
RXJyb3IuZ2V0KCk7Ci19Ci0KLVJlc291cmNlRXJyb3I6Om9wZXJhdG9yIE5TRXJyb3IgKigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG5zRXJyb3IoKTsKLX0KLQotI2Vsc2UKLQogUmVzb3VyY2VFcnJv
cjo6UmVzb3VyY2VFcnJvcihOU0Vycm9yICpuc0Vycm9yKQogICAgIDogbV9kYXRhSXNVcFRvRGF0
ZShmYWxzZSkKICAgICAsIG1fcGxhdGZvcm1FcnJvcihuc0Vycm9yKQpAQCAtMzEyLDYgKzE4Miw0
IEBAIFJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENGRXJyb3JSZWYoKSBjb25zdAogICAgIHJldHVy
biBjZkVycm9yKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCmluZGV4IGNkYmUwMjU4ZDQwMTIxZjMxNDBiNGY0
Nzk0MGNmYjkzZmU3NzE5NjQuLjYyZTc3YmI2MTI4ODczMmRhMjlhZWRkNzI2MmI0MDRhMTMwOTI1
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlSGFuZGxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlSGFuZGxlTWFjLm1tCkBAIC01NywxNiArNTcsNiBAQAogI2ltcG9ydCA8d3RmL3Rl
eHQvQmFzZTY0Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotI2lmIF9faGFzX2luY2x1ZGUoPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb25Qcml2
Lmg+KQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4KLSNlbmRpZgot
dHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQ29ubmVjdGlvbiogQ0ZVUkxDb25uZWN0aW9uUmVmOwotZXh0
ZXJuICJDIiB7Ci1DRkRpY3Rpb25hcnlSZWYgX0NGVVJMQ29ubmVjdGlvbkNvcHlUaW1pbmdEYXRh
KENGVVJMQ29ubmVjdGlvblJlZik7Ci19Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogI2lm
IFBMQVRGT1JNKElPUykKICNpbXBvcnQgIkNGTmV0d29ya1NQSS5oIgogI2ltcG9ydCAiUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCkBAIC04OCw5ICs3OCw3IEBAIC0oaWQpX2luaXRXaXRo
UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUgdXNl
c0NhY2hlOihCCiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLSNpZiAhVVNFKENG
TkVUV09SSykKLSAgICAKKwogc3RhdGljIHZvaWQgYXBwbHlCYXNpY0F1dGhvcml6YXRpb25IZWFk
ZXIoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFs
KQogewogICAgIFN0cmluZyBhdXRoZW50aWNhdGlvbkhlYWRlciA9ICJCYXNpYyAiICsgYmFzZTY0
RW5jb2RlKFN0cmluZyhjcmVkZW50aWFsLnVzZXIoKSArICI6IiArIGNyZWRlbnRpYWwucGFzc3dv
cmQoKSkudXRmOCgpKTsKQEAgLTI2OSwxMiArMjU3LDYgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6
c3RhcnQoKQogICAgICAgICBbY29ubmVjdGlvbigpIHNldERlbGVnYXRlUXVldWU6b3BlcmF0aW9u
UXVldWVGb3JBc3luY0NsaWVudHMoKV07CiAgICAgICAgIHNjaGVkdWxlZCA9IHRydWU7CiAgICAg
fQotI2lmIFBMQVRGT1JNKElPUykKLSAgICBlbHNlIHsKLSAgICAgICAgW2Nvbm5lY3Rpb24oKSBz
Y2hlZHVsZUluUnVuTG9vcDpXZWJUaHJlYWROU1J1bkxvb3AoKSBmb3JNb2RlOk5TRGVmYXVsdFJ1
bkxvb3BNb2RlXTsKLSAgICAgICAgc2NoZWR1bGVkID0gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKIAog
ICAgIC8vIFN0YXJ0IHRoZSBjb25uZWN0aW9uIGlmIHdlIGRpZCBzY2hlZHVsZSB3aXRoIGF0IGxl
YXN0IG9uZSBydW5sb29wLgogICAgIC8vIFdlIGNhbid0IHN0YXJ0IHRoZSBjb25uZWN0aW9uIHVu
dGlsIHdlIGhhdmUgb25lIHJ1bmxvb3Agc2NoZWR1bGVkLgpAQCAtMzE0LDggKzI5Niw2IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykK
ICAgICAgICAgW2QtPm1fY29ubmVjdGlvbiBzZXREZWZlcnNDYWxsYmFja3M6ZGVmZXJzXTsKIH0K
IAotI2lmIFBMQVRGT1JNKE1BQykKLQogdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUoU2No
ZWR1bGVQYWlyJiBwYWlyKQogewogICAgIE5TUnVuTG9vcCAqcnVuTG9vcCA9IHBhaXIubnNSdW5M
b29wKCk7CkBAIC0zMzQsOCArMzE0LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVs
ZShTY2hlZHVsZVBhaXImIHBhaXIpCiAgICAgICAgIFtkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkgdW5z
Y2hlZHVsZUZyb21SdW5Mb29wOnJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKilwYWlyLm1vZGUo
KV07CiB9CiAKLSNlbmRpZgotCiBpZCBSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKGJvb2wg
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKCFkLT5tX2RlbGVnYXRl
KTsKQEAgLTcyNCwyNyArNzAyLDE0IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2ls
bENhY2hlUmVzcG9uc2UoTlNDYWNoZWRVUkxSZXNwb25zZSAqcmVzcG9uc2UpCiAKICAgICBbKGlk
KWRlbGVnYXRlKCkgY29udGludWVXaWxsQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9Ci0gICAg
Ci0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0gICAgCisKICNpZiBFTkFCTEUoV0VCX1RJTUlO
RykKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgCi12b2lkIFJlc291cmNlSGFuZGxlOjpnZXRD
b25uZWN0aW9uVGltaW5nRGF0YShDRlVSTENvbm5lY3Rpb25SZWYgY29ubmVjdGlvbiwgUmVzb3Vy
Y2VMb2FkVGltaW5nJiB0aW1pbmcpCi17Ci0gICAgY29weVRpbWluZ0RhdGEoKF9fYnJpZGdlIE5T
RGljdGlvbmFyeSopYWRvcHRDRihfQ0ZVUkxDb25uZWN0aW9uQ29weVRpbWluZ0RhdGEoY29ubmVj
dGlvbikpLmdldCgpLCB0aW1pbmcpOwotfQotICAgIAotI2Vsc2UKLSAgICAKIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqY29ubmVj
dGlvbiwgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcpCiB7CiAgICAgY29weVRpbWluZ0RhdGEo
W2Nvbm5lY3Rpb24gX3RpbWluZ0RhdGFdLCB0aW1pbmcpOwogfQotICAgIAotI2VuZGlmCi0gICAg
CisKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1RJTUlORykKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VSZXF1ZXN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VSZXF1ZXN0TWFjLm1tCmluZGV4IDY5NGU1M2M0YTU3MzIyMjBkNDQ2MWRjMTBmNjBkZDk4
NGFhODc5NmQuLmU3NzAyNDVkZmQ1MDFiMTRiMGU2MWMxMDc3YzcxYjMwODQxMmYxZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVz
dE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZVJlcXVlc3RNYWMubW0KQEAgLTM3LDI5ICszNyw2IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VSZXF1ZXN0OjpSZXNvdXJjZVJl
cXVlc3QoTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QpCi0gICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNl
KCkKLSAgICAsIG1fY2ZSZXF1ZXN0KFtuc1JlcXVlc3QgX0NGVVJMUmVxdWVzdF0pCi0gICAgLCBt
X25zUmVxdWVzdChuc1JlcXVlc3QpCi17Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRh
dGVOU1VSTFJlcXVlc3QoKQotewotICAgIGlmIChtX2NmUmVxdWVzdCkKLSAgICAgICAgbV9uc1Jl
cXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVl
c3Q6bV9jZlJlcXVlc3QuZ2V0KCldKTsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmFwcGx5
V2ViQXJjaGl2ZUhhY2tGb3JNYWlsKCkKLXsKLSAgICAvLyBIYWNrIGJlY2F1c2UgTWFpbCBjaGVj
a3MgZm9yIHRoaXMgcHJvcGVydHkgdG8gZGV0ZWN0IGRhdGEgLyBhcmNoaXZlIGxvYWRzCi0gICAg
X0NGVVJMUmVxdWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZVUkxSZXF1ZXN0KERvTm90VXBkYXRl
SFRUUEJvZHkpLCBDRlNUUigiV2ViRGF0YVJlcXVlc3QiKSwgQ0ZTVFIoIiIpKTsKLX0KLQotI2Vu
ZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5t
bQppbmRleCA2ZmEwMGUyNDM1ZTgzZTc5Zjk3ZDQzMDg2MmRiMGI0MWQzNjY1MzdiLi5jZGY3ODlk
NjlhN2Y3ZjVmZDBmZWE5NjM1NTdkNmQ3ZGMxNzliZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0K
QEAgLTcxLDM2ICs3MSw2IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6aW5pdE5TVVJMUmVzcG9u
c2UoKSBjb25zdAogICAgIFttX25zUmVzcG9uc2UuZ2V0KCkgX3NldE1JTUVUeXBlOihOU1N0cmlu
ZyAqKW1fbWltZVR5cGVdOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLQotTlNVUkxSZXNwb25z
ZSAqUmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFt
X25zUmVzcG9uc2UgJiYgIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051bGwpIHsKLSAgICAgICAgaW5p
dE5TVVJMUmVzcG9uc2UoKTsKLSAgICAgICAgbV9jZlJlc3BvbnNlID0gW21fbnNSZXNwb25zZS5n
ZXQoKSBfQ0ZVUkxSZXNwb25zZV07Ci0gICAgICAgIHJldHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7
Ci0gICAgfQotCi0gICAgaWYgKCFtX2NmUmVzcG9uc2UpCi0gICAgICAgIHJldHVybiBuaWw7Ci0K
LSAgICBpZiAoIW1fbnNSZXNwb25zZSkKLSAgICAgICAgbV9uc1Jlc3BvbnNlID0gW05TVVJMUmVz
cG9uc2UgX3Jlc3BvbnNlV2l0aENGVVJMUmVzcG9uc2U6bV9jZlJlc3BvbnNlLmdldCgpXTsKLQot
ICAgIHJldHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7Ci19Ci0KLVJlc291cmNlUmVzcG9uc2U6OlJl
c291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSogbnNSZXNwb25zZSkKLSAgICA6IG1faW5pdExl
dmVsKFVuaW5pdGlhbGl6ZWQpCi0gICAgLCBtX3BsYXRmb3JtUmVzcG9uc2VJc1VwVG9EYXRlKHRy
dWUpCi0gICAgLCBtX2NmUmVzcG9uc2UoW25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdKQotICAg
ICwgbV9uc1Jlc3BvbnNlKG5zUmVzcG9uc2UpCi17Ci0gICAgbV9pc051bGwgPSAhbnNSZXNwb25z
ZTsKLX0KLQotI2Vsc2UKLQogc3RhdGljIE5TU3RyaW5nKiBjb25zdCBjb21tb25IZWFkZXJGaWVs
ZHNbXSA9IHsKICAgICBAIkFnZSIsIEAiQ2FjaGUtQ29udHJvbCIsIEAiQ29udGVudC1UeXBlIiwg
QCJEYXRlIiwgQCJFdGFnIiwgQCJFeHBpcmVzIiwgQCJMYXN0LU1vZGlmaWVkIiwgQCJQcmFnbWEi
CiB9OwpAQCAtMTg5LDcgKzE1OSw1IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1D
b21wYXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlCiAgICAgcmV0
dXJuIGEubnNVUkxSZXNwb25zZSgpID09IGIubnNVUkxSZXNwb25zZSgpOwogfQogCi0jZW5kaWYg
Ly8gVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNs
aWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50Lm1tCmluZGV4IDAxNDRiZDkzYTcwYTQ0OTg4ZTA1NmM4ZWI4OTg5NzQ5ZjE1
YzJiNTguLjY1Zjc2ZGYxM2I5YzhmOTY2NzhmZjg4ZWRmN2MzNjM3MWU5MzBlMjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVy
Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50Lm1tCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCIKIAotI2lmICFVU0UoQ0ZO
RVRXT1JLKQotCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzgsMTQgKzM2LDEwIEBAIHZvaWQgU3luY2hyb25vdXNMb2FkZXJD
bGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSos
CiAgICAgW2NoYWxsZW5nZS5zZW5kZXIoKSBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6Y2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKV07CiB9CiAKLSNpZiAhVVNFKENGTkVUV09SSykKIFJlc291cmNlRXJyb3IgU3luY2hyb25v
dXNMb2FkZXJDbGllbnQ6OnBsYXRmb3JtQmFkUmVzcG9uc2VFcnJvcigpCiB7CiAgICAgUmV0YWlu
UHRyPE5TRXJyb3I+IGVycm9yID0gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9t
YWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yQmFkU2VydmVyUmVzcG9uc2UgdXNl
ckluZm86bmlsXSk7CiAgICAgcmV0dXJuIGVycm9yLmdldCgpOwogfQotI2VuZGlmCiAKIH0KLQot
I2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNE
ZWxlZ2F0ZS5oCmluZGV4IDRmNDE1NWVhZmQ5NDViMWI4NjJkMjljZTg5NmRjYWRjZGExYzQyNjYu
LjJmMTE2YWQ2YTMxMDI1MGE2NzdjY2VhMTRmNzdkMjgxMGU2YThlOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
RGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgKQEAgLTI2LDE4ICsyNiwxOCBAQAogI2lmbmRl
ZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKICNkZWZpbmUgV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiB9CiAKLUBpbnRlcmZhY2UgV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxl
Z2F0ZT4geworQHByb3RvY29sIFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRlCistICh2b2lk
KWRldGFjaEhhbmRsZTsKK0BlbmQKKworQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlLCBXZWJDb3JlUmVz
b3VyY2VMb2FkZXJEZWxlZ2F0ZT4gewogICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiBtX2hh
bmRsZTsKIH0KIC0gKGlkKWluaXRXaXRoSGFuZGxlOihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSop
aGFuZGxlOwotLSAodm9pZClkZXRhY2hIYW5kbGU7CiBAZW5kCiAKLSNlbmRpZiAvLyAhVVNFKENG
TkVUV09SSykKICNlbmRpZiAvLyBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCmluZGV4IGUxN2NiOWQyMGVk
N2RiZDUxNzkzYzM2NGViMzJjMTU4OTVlYmE1M2EuLjUyNGFmZTNmYTk3NjFmYWU3MGNkZDllNmM0
ZWYwMWVhZGNjOTRiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0
ZS5tbQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQog
I2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0
aW9uTWFjLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC01NCw3ICs1Miw3IEBAIC0gKGlkKWlu
aXRXaXRoSGFuZGxlOihSZXNvdXJjZUhhbmRsZSopaGFuZGxlCiAKIC0gKHZvaWQpZGV0YWNoSGFu
ZGxlCiB7Ci0gICAgbV9oYW5kbGUgPSAwOworICAgIG1faGFuZGxlID0gbnVsbHB0cjsKIH0KIAog
LSAoTlNVUkxSZXF1ZXN0ICopY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlv
biB3aWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKW5ld1JlcXVlc3QgcmVkaXJlY3RSZXNw
b25zZTooTlNVUkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2UKQEAgLTI4OCw2ICsyODYsMyBA
QCAtIChOU0NhY2hlZFVSTFJlc3BvbnNlICopY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICop
Y29ubmVjdGlvbiB3aWxsQ2FjaGVSZXNwbwogfQogCiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENG
TkVUV09SSykKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09w
ZXJhdGlvblF1ZXVlRGVsZWdhdGUuaAppbmRleCBlNzQwYWE1OWJlZDYzYmFiOTA3NmYwNzkzYWIz
ZDAzZGUwMDJiMDUxLi5jNTdhY2FlMTQxOGMxMTZmY2Y3NzcwZjU4YWQ0YzkxYzgxZTQ4Y2MyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUuaApAQCAtMjYsOCArMjYsNyBAQAogI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaAogI2RlZmluZSBXZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaAogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0K
KyNpbmNsdWRlICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgiCiAjaW5jbHVkZSA8
ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTM1
LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiB9
CiAKLUBpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiB7CitAaW50ZXJmYWNlIFdl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxO
U1VSTENvbm5lY3Rpb25EZWxlZ2F0ZSwgV2ViQ29yZVJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsK
ICAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSogbV9oYW5kbGU7CiAKICAgICAvLyBTeW5jaHJv
bm91cyBkZWxlZ2F0ZXMgb24gb3BlcmF0aW9uIHF1ZXVlIHdhaXQgdW50aWwgbWFpbiB0aHJlYWQg
c2VuZHMgYW4gYXN5bmNocm9ub3VzIHJlc3BvbnNlLgpAQCAtNDYsNyArNDUsNiBAQCBjbGFzcyBS
ZXNvdXJjZUhhbmRsZTsKIH0KIAogLSAoaWQpaW5pdFdpdGhIYW5kbGU6KFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlKiloYW5kbGU7Ci0tICh2b2lkKWRldGFjaEhhbmRsZTsKIC0gKHZvaWQpY29udGlu
dWVXaWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKW5ld1JlcXVlc3Q7CiAtICh2b2lkKWNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhf
Q0FMTEJBQ0spCkBAIC01OSw1ICs1Nyw0IEBAIGNsYXNzIFJlc291cmNlSGFuZGxlOwogCiBAZW5k
CiAKLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKICNlbmRpZiAvLyBXZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IDkzMzdk
MTM0OTBhYjgwOWM3ODNlMTU1OGNmYjc2MTBiYjgxYzE1OWIuLmMxZDYzMGI2YjNjNjE0ZGYzZDQy
OWM5N2UwNTI4YjA3ODM5MGU4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTI2LDggKzI2LDYgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAi
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgi
CiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC0zNDUsNiArMzQzLDMgQEAgLSAoQk9PTCljb25uZWN0
aW9uU2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U6KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rp
b24KIH0KIAogQGVuZAotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25z
ZS5tbQppbmRleCAwZmFiZjkzOTg5MzZiMzEyOTM5MjIxMTBjOTcyNWFjYTQ2OTMyZGVlLi5jZDVi
YjQ0N2Q3YzQzYTllZjE3N2JhMmRhMjU2YjZkYmJlNTY2NzY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1t
CkBAIC0zMjUsNyArMzI1LDYgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJM
UmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKIH0KICNlbmRpZgogCi0jaWYgIVVTRShDRk5FVFdPUksp
CiBOU1VSTFJlc3BvbnNlICpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KE5T
VVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgTlNVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0LCBOU1VS
TFJlc3BvbnNlICpyZWRpcmVjdFJlc3BvbnNlKQogewogICAgIGlmIChyZWRpcmVjdFJlc3BvbnNl
KQpAQCAtMzM5LDYgKzMzOCw1IEBAIE5TVVJMUmVzcG9uc2UgKnN5bnRoZXNpemVSZWRpcmVjdFJl
c3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uCiAgICAgTlNEaWN0
aW9uYXJ5ICpzeW50aGVzaXplZFJlc3BvbnNlSGVhZGVyRmllbGRzID0gQHsgQCJMb2NhdGlvbiI6
IFtbbmV3UmVxdWVzdCBVUkxdIGFic29sdXRlU3RyaW5nXSwgQCJDYWNoZS1Db250cm9sIjogQCJu
by1zdG9yZSIgfTsKICAgICByZXR1cm4gW1tbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRX
aXRoVVJMOltbY29ubmVjdGlvbiBjdXJyZW50UmVxdWVzdF0gVVJMXSBzdGF0dXNDb2RlOjMwMiBI
VFRQVmVyc2lvbjooTlNTdHJpbmcgKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6c3lu
dGhlc2l6ZWRSZXNwb25zZUhlYWRlckZpZWxkc10gYXV0b3JlbGVhc2VdOwogfQotI2VuZGlmCiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9OU1VSTERv
d25sb2FkU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvTlNVUkxEb3du
bG9hZFNQSS5oCmluZGV4IDNmM2EzYmNiOGVjNjQ4ZDRhZTVhNzAxNzVhNzU2NTE3Zjg1ZGQwZDUu
LjQ5ZjkwMjUxODljZDIyZDhkYWI2MTJhOWI3Yzc4OTUzMjZmMTEzNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9OU1VSTERvd25sb2FkU1BJLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL05TVVJMRG93bmxvYWRTUEkuaApAQCAt
MjksNiArMjksMTQgQEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTERvd25sb2FkLmg+CiAK
KyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTERv
d25sb2FkUHJpdmF0ZS5oPgorI2Vsc2UKK0BpbnRlcmZhY2UgTlNVUkxEb3dubG9hZCAoKQorKyhp
ZClfZG93bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5l
Y3Rpb24gcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZXNwb25zZTooTlNVUkxSZXNw
b25zZSAqKXJlc3BvbnNlIGRlbGVnYXRlOihpZClkZWxlZ2F0ZSBwcm94eTooaWQpcHJveHk7CitA
ZW5kCisjZW5kaWYKKwogI2Vsc2UKIAogQGNsYXNzIE5TU3RyaW5nOwpAQCAtNTYsOCArNjQsMTkg
QEAKIC0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0
aEVycm9yOihOU0Vycm9yICopZXJyb3I7CiBAZW5kCiAKKyNpZm5kZWYgV2ViRG93bmxvYWRfaAor
LyogQWxzbyBkZWZpbmVkIGluIDxXZWJLaXQvV2ViRG93bmxvYWQuaD4uICovCitAaW50ZXJmYWNl
IE5TVVJMRG93bmxvYWQgOiBOU09iamVjdAorQGVuZAorI2VuZGlmCisKIEBpbnRlcmZhY2UgTlNV
UkxEb3dubG9hZCAoKQogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1
ZXN0ICopcmVxdWVzdCBkZWxlZ2F0ZTooaWQgPE5TVVJMRG93bmxvYWREZWxlZ2F0ZT4pZGVsZWdh
dGU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZXN1bWVEYXRhOihOU0RhdGEgKilyZXN1bWVE
YXRhIGRlbGVnYXRlOihpZCA8TlNVUkxEb3dubG9hZERlbGVnYXRlPilkZWxlZ2F0ZSBwYXRoOihO
U1N0cmluZyAqKXBhdGg7CistICh2b2lkKXNldERlc3RpbmF0aW9uOihOU1N0cmluZyAqKXBhdGgg
YWxsb3dPdmVyd3JpdGU6KEJPT0wpYWxsb3dPdmVyd3JpdGU7CitAcHJvcGVydHkgKHJlYWRvbmx5
LCBjb3B5KSBOU0RhdGEgKnJlc3VtZURhdGE7CitAcHJvcGVydHkgQk9PTCBkZWxldGVzRmlsZVVw
b25GYWlsdXJlOworKyhpZClfZG93bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29u
bmVjdGlvbiAqKWNvbm5lY3Rpb24gcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZXNw
b25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIGRlbGVnYXRlOihpZClkZWxlZ2F0ZSBwcm94
eTooaWQpcHJveHk7CiBAZW5kCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9h
ZC5oCmluZGV4IGUyNDJlNmRiOWM5N2Y4OGRiYThiMWUwYWZlYWE4NzRhYzUxZmI1NDkuLmNhYTU1
NzBhNTYwZTMzZjFmYjlmODlhYmI4ODVjMmQxMzUzODI4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNj
L1dlYkRvd25sb2FkLmgKQEAgLTI2LDYgKzI2LDkgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2lm
bmRlZiBXZWJEb3dubG9hZF9oCisjZGVmaW5lIFdlYkRvd25sb2FkX2gKKwogI2lmICFUQVJHRVRf
T1NfSVBIT05FIHx8IChkZWZpbmVkIFVTRV9BUFBMRV9JTlRFUk5BTF9TREsgJiYgVVNFX0FQUExF
X0lOVEVSTkFMX1NESykKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxEb3dubG9hZC5oPgogI2Vs
c2UKQEAgLTc4LDMgKzgxLDUgQEAKIC0gKE5TV2luZG93ICopZG93bmxvYWRXaW5kb3dGb3JBdXRo
ZW50aWNhdGlvblNoZWV0OihXZWJEb3dubG9hZCAqKWRvd25sb2FkOwogCiBAZW5kCisKKyNlbmRp
ZiAvKiBXZWJEb3dubG9hZF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNj
L1dlYkRvd25sb2FkLm1tIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQpp
bmRleCA2ODBmNjllY2U1MDZmNjZhMzg5ODFhZWI4MmI2MDUwYmRmM2VkN2Y4Li42OGNmNjVhMzJh
YTUzY2E2OGYyZTMzOWRiOGE2MzY4NDYzMmYzYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2Vi
RG93bmxvYWQubW0KQEAgLTQwLDExICs0MCw2IEBACiAKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJu
YWwuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZOZXR3b3Jr
Lmg+Ci0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uLmg+Ci0jZW5kaWYKLQogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBjbGFzcyBOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZVBy
b3h5OwpAQCAtNjAsMTUgKzU1LDYgQEAgLSAoaWQpX2luaXRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246
KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KIC0gKGlkKV9pbml0V2l0aFJlcXVlc3Q6KE5T
VVJMUmVxdWVzdCAqKXJlcXVlc3QKICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRl
CiAgICAgICAgICAgICAgZGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeTsKLQotI2lmIFVT
RShDRk5FVFdPUkspCi0tIChpZClfaW5pdFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOihDRlVS
TENvbm5lY3Rpb25SZWYpY29ubmVjdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzcG9uc2U6KENGVVJMUmVzcG9uc2VSZWYpcmVzcG9uc2UKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByb3h5OihOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZVByb3h5ICopcHJveHk7
Ci0jZW5kaWYKLQogQGVuZAogCiBAaW50ZXJmYWNlIFdlYkRvd25sb2FkSW50ZXJuYWwgOiBOU09i
amVjdCA8TlNVUkxEb3dubG9hZERlbGVnYXRlPgpAQCAtMjQyLDE4ICsyMjgsNiBAQCAtIChpZClf
aW5pdFdpdGhMb2FkaW5nQ29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgog
ICAgIHJldHVybiBbc3VwZXIgX2luaXRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246Y29ubmVjdGlvbiBy
ZXF1ZXN0OnJlcXVlc3QgcmVzcG9uc2U6cmVzcG9uc2UgZGVsZWdhdGU6X3dlYkludGVybmFsIHBy
b3h5OnByb3h5XTsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0tIChpZClfaW5pdFdpdGhMb2Fk
aW5nQ0ZVUkxDb25uZWN0aW9uOihDRlVSTENvbm5lY3Rpb25SZWYpY29ubmVjdGlvbgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJlcXVlc3QK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6KENGVVJMUmVzcG9uc2VSZWYp
cmVzcG9uc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVn
YXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3h5OihOU1VSTENvbm5lY3Rp
b25EZWxlZ2F0ZVByb3h5ICopcHJveHkKLXsKLSAgICBbc2VsZiBfc2V0UmVhbERlbGVnYXRlOmRl
bGVnYXRlXTsKLSAgICByZXR1cm4gW3N1cGVyIF9pbml0V2l0aExvYWRpbmdDRlVSTENvbm5lY3Rp
b246Y29ubmVjdGlvbiByZXF1ZXN0OnJlcXVlc3QgcmVzcG9uc2U6cmVzcG9uc2UgZGVsZWdhdGU6
X3dlYkludGVybmFsIHByb3h5OnByb3h5XTsKLX0KLSNlbmRpZgotCiAtIChpZClfaW5pdFdpdGhS
ZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiAgICAgICAgICAgICAgIGRlbGVnYXRlOihp
ZClkZWxlZ2F0ZQogICAgICAgICAgICAgIGRpcmVjdG9yeTooTlNTdHJpbmcgKilkaXJlY3RvcnkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5o
IGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZEludGVybmFsLmgKaW5kZXggOWIy
ZjM5NTg1ZDk0YThmNWIwNWQzMzMwYWNiODEyMzdiZDBkYjk2OS4uYzFkMjE5MjYxOTUyYTQ2N2Ni
M2E2OWFiNjFhNTg5NGI4YTAzYWQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlz
Yy9XZWJEb3dubG9hZEludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJE
b3dubG9hZEludGVybmFsLmgKQEAgLTI4LDEwICsyOCw2IEBACiAgCiAjaW1wb3J0IDxXZWJLaXRM
ZWdhY3kvV2ViRG93bmxvYWQuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5l
dHdvcmsvQ0ZVUkxDb25uZWN0aW9uLmg+Ci0jZW5kaWYKLSAKIEBpbnRlcmZhY2UgV2ViRG93bmxv
YWQgKFdlYkRvd25sb2FkQ3JlYXRpb24pCiArKGlkKV9kb3dubG9hZFdpdGhMb2FkaW5nQ29ubmVj
dGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKQEAgLTQyLDEzICszOCw0IEBA
CiArKGlkKV9kb3dubG9hZFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiAgICAg
ICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQogICAgICAgICAgICAgICAgIGRpcmVj
dG9yeTooTlNTdHJpbmcgKilkaXJlY3Rvcnk7Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotKyAoaWQp
X2Rvd25sb2FkV2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246KENGVVJMQ29ubmVjdGlvblJlZilj
b25uZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDooQ0ZV
UkxSZXF1ZXN0UmVmKXJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByb3h5OihpZClwcm94eTsKLSNlbmRpZgotCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdFZlcnNpb25DaGVja3MuaCBiL1NvdXJjZS9X
ZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5oCmluZGV4IGM4MTEyMDEyNWQ0ZGZi
NjkzMWFmZWQ0MWVkMTAwMTliZjA3YmZkZjQuLmI1MzMzNTRjMzcxMmJmMDY3OWYzOTg2M2JhZWI1
ZTEyZTNkYjM3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVy
c2lvbkNoZWNrcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNo
ZWNrcy5oCkBAIC03Miw2ICs3Miw3IEBACiAjZGVmaW5lIFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJ
VEhfQ1NTX0FUVFJJQlVURV9TRVRURVJTX0lHTk9SSU5HX1BSSU9SSVRZIDIyMzkgLy8gaU9TIDYu
MAogI2RlZmluZSBXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX1lPVVRVQkVfRU1CRURfSUZSQU1F
X1RSQU5TRk9STSAyMjM5IC8vIGlPUyA2LjAKICNkZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05f
V0lUSE9VVF9MRUdBQ1lfQkFDS0dST1VORFNJWkVfU0hPUlRIQU5EX0JFSEFWSU9SIDI2NjUgLy8g
aU9TIDcuMAorI2RlZmluZSBXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0xPQURJTkdfRFVSSU5H
X0NPTU1PTl9SVU5MT09QX01PREVTIDI2NjUgLy8gaU9TIDcuMAogI2RlZmluZSBXRUJLSVRfRklS
U1RfVkVSU0lPTl9XSVRIX0lOU0VDVVJFX0NPTlRFTlRfQkxPQ0tJTkcgMzQ1NAogI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBkMmVhZjk0MzU5M2Q5OTdjMDNi
N2I2MDc3MTZkYjUxODI1YzljZGM4Li43MjU5OThmYjIyMjEzOWU3Mjg4MDk2MDg4ZjkwOTgxOGI3
MGI4NTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMzAxLDEzICszMDEsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1l
bnRMb2FkZXIqIGRvYwogCiAgICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IG1haW5SZXNvdXJj
ZUxvYWRlci0+aGFuZGxlKCk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIEFTU0VSVChbV2Vi
RG93bmxvYWQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWRXaXRoTG9hZGlu
Z0NGVVJMQ29ubmVjdGlvbjpyZXF1ZXN0OnJlc3BvbnNlOmRlbGVnYXRlOnByb3h5OildKTsKLSAg
ICBhdXRvIGNvbm5lY3Rpb24gPSBoYW5kbGUtPnJlbGVhc2VDb25uZWN0aW9uRm9yRG93bmxvYWQo
KTsKLSAgICBbV2ViRG93bmxvYWQgX2Rvd25sb2FkV2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246
Y29ubmVjdGlvbi5nZXQoKSByZXF1ZXN0OnJlcXVlc3QuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBC
b2R5KSByZXNwb25zZTpyZXNwb25zZS5jZlVSTFJlc3BvbnNlKCkgZGVsZWdhdGU6W3dlYlZpZXcg
ZG93bmxvYWREZWxlZ2F0ZV0gcHJveHk6bmlsXTsKLSNlbHNlCiAgICAgW1dlYkRvd25sb2FkIF9k
b3dubG9hZFdpdGhMb2FkaW5nQ29ubmVjdGlvbjpoYW5kbGUtPmNvbm5lY3Rpb24oKSByZXF1ZXN0
OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSByZXNwb25zZTpyZXNwb25zZS5u
c1VSTFJlc3BvbnNlKCkgZGVsZWdhdGU6W3dlYlZpZXcgZG93bmxvYWREZWxlZ2F0ZV0gcHJveHk6
bmlsXTsKLSNlbmRpZgogfQogCiBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBpbnQgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDE0YzFiYzZjNmI2MWVlNWM2Y2M4NDY2
MTVjNDg5ZDNhZDRlNGMxMzIuLjRkMmI4ZTkyM2QzMzg1YTE2NTdkZTk2NTM2ZGE5ZWJkYzBjOGYw
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3Rl
bUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0KQEAgLTExNywxMyArMTE3LDYgQEAgdm9pZCBJbml0V2ViQ29yZVN5
c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQoQ3Vyc29yKTsKICNlbmRpZgogCi0jaWYgVVNF
KENGTkVUV09SSykKLSAgICBJTklUKEdldERlZmF1bHRIVFRQQ29va2llU3RvcmFnZSk7Ci0gICAg
SU5JVChDb3B5Q3JlZGVudGlhbEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKTsKLSAgICBJTklUKFNl
dENGVVJMUmVxdWVzdFNob3VsZENvbnRlbnRTbmlmZik7Ci0gICAgSU5JVChTZXRSZXF1ZXN0U3Rv
cmFnZVNlc3Npb24pOwotI2VuZGlmCi0KICNpZiAhUExBVEZPUk0oSU9TKQogICAgIElOSVQoU3Bl
ZWNoU3ludGhlc2lzR2V0Vm9pY2VJZGVudGlmaWVycyk7CiAgICAgSU5JVChTcGVlY2hTeW50aGVz
aXNHZXREZWZhdWx0Vm9pY2VJZGVudGlmaWVyRm9yTG9jYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IDAxMGZhOGI3NzcyOWQwYzRlYWU2YjQ5
ZjkzMWRlMDQ5MjZkM2NiMjcuLjQyOGFmYjczYjY3MWI0NDY2MDY2YTk4YzVjNDk4ZjhiMzA4Yjli
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAt
MTc2Niw3ICsxNzY2LDcgQEAgKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbgogKyAo
dm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihO
U0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5CiB7CiAgICAgUmV0YWluUHRyPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
ZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2ll
U3RvcmFnZSk7IC8vIFdpbGwgZmFpbCB3aGVuIGJ1aWxkaW5nIHdpdGhvdXQgVVNFKENGTkVUV09S
SykgYW5kIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigp
IHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCisgICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOyAv
LyBXaWxsIGZhaWwgd2hlbiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGlu
Z1Nlc3Npb24oKSB3YXMgbm90IGNhbGxlZCBiZWZvcmVoYW5kLgogICAgIFdLU2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggY2RhM2Y1ODhlODZiNjZjNGM0ZmZlZDY2Mzkx
MzhmODQ2ZGQ4MzE5Yi4uYzliNWNhZGRjMmU3ZGQ2NGFmM2QyYWVlNjNhYTY3MGIwNTc1Y2ZkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTAyOCwxMiArMTAyOCwxMyBA
QCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6KE5TU3RyaW5nICop
ZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdAogCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBOU1J1
bkxvb3AgKnJ1bkxvb3AgPSBbTlNSdW5Mb29wIG1haW5SdW5Mb29wXTsKLQorI2Vsc2UKKyAgICBO
U1J1bkxvb3AgKnJ1bkxvb3AgPSBXZWJUaHJlYWROU1J1bkxvb3AoKTsKKyNlbmRpZgogICAgIGlm
IChXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9MT0FESU5H
X0RVUklOR19DT01NT05fUlVOTE9PUF9NT0RFUykpCiAgICAgICAgIFtzZWxmIHNjaGVkdWxlSW5S
dW5Mb29wOnJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKilrQ0ZSdW5Mb29wQ29tbW9uTW9kZXNd
OwogICAgIGVsc2UKICAgICAgICAgW3NlbGYgc2NoZWR1bGVJblJ1bkxvb3A6cnVuTG9vcCBmb3JN
b2RlOk5TRGVmYXVsdFJ1bkxvb3BNb2RlXTsKLSNlbmRpZgogCiAgICAgW3NlbGYgX2FkZFRvQWxs
V2ViVmlld3NTZXRdOwogICAgIApAQCAtNjYxOCwyOSArNjYxOSwxOSBAQCBAZW5kCiAKIEBpbXBs
ZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJQZW5kaW5nUHVibGljKQogCi0jaWYgIVBMQVRGT1JNKElP
UykKIC0gKHZvaWQpc2NoZWR1bGVJblJ1bkxvb3A6KE5TUnVuTG9vcCAqKXJ1bkxvb3AgZm9yTW9k
ZTooTlNTdHJpbmcgKiltb2RlCiB7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBDRlJ1bkxvb3BS
ZWYgc2NoZWR1bGVQYWlyUnVuTG9vcCA9IFtydW5Mb29wIGdldENGUnVuTG9vcF07Ci0jZWxzZQog
ICAgIE5TUnVuTG9vcCAqc2NoZWR1bGVQYWlyUnVuTG9vcCA9IHJ1bkxvb3A7Ci0jZW5kaWYKICAg
ICBpZiAocnVuTG9vcCAmJiBtb2RlKQogICAgICAgICBjb3JlKHNlbGYpLT5hZGRTY2hlZHVsZVBh
aXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUoc2NoZWR1bGVQYWlyUnVuTG9vcCwgKENGU3RyaW5nUmVm
KW1vZGUpKTsKIH0KIAogLSAodm9pZCl1bnNjaGVkdWxlRnJvbVJ1bkxvb3A6KE5TUnVuTG9vcCAq
KXJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKiltb2RlCiB7Ci0jaWYgVVNFKENGTkVUV09SSykK
LSAgICBDRlJ1bkxvb3BSZWYgc2NoZWR1bGVQYWlyUnVuTG9vcCA9IFtydW5Mb29wIGdldENGUnVu
TG9vcF07Ci0jZWxzZQogICAgIE5TUnVuTG9vcCAqc2NoZWR1bGVQYWlyUnVuTG9vcCA9IHJ1bkxv
b3A7Ci0jZW5kaWYKICAgICBpZiAocnVuTG9vcCAmJiBtb2RlKQogICAgICAgICBjb3JlKHNlbGYp
LT5yZW1vdmVTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUoc2NoZWR1bGVQYWlyUnVu
TG9vcCwgKENGU3RyaW5nUmVmKW1vZGUpKTsKIH0KLSNlbmRpZgogCiBzdGF0aWMgQk9PTCBmaW5k
U3RyaW5nKE5TVmlldyA8V2ViRG9jdW1lbnRTZWFyY2hpbmc+ICpzZWFyY2hWaWV3LCBOU1N0cmlu
ZyAqc3RyaW5nLCBXZWJGaW5kT3B0aW9ucyBvcHRpb25zKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDc5NmMwZjQyYTc2OTlmMTg2ZjBlNGMwMzdk
MTE0NjdjNDZiMTAyOTQuLmY0MzA0OTk2NDVkN2Y5NTAwN2MxY2JhMGU5Y2ZhYzAxOThjZjNjMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKQEAgLTE5OCwx
MCArMTk4LDggQEAgdHlwZWRlZiBlbnVtIHsKIAogQGludGVyZmFjZSBXZWJWaWV3IChXZWJQZW5k
aW5nUHVibGljKQogCi0jaWYgIVRBUkdFVF9PU19JUEhPTkUKIC0gKHZvaWQpc2NoZWR1bGVJblJ1
bkxvb3A6KE5TUnVuTG9vcCAqKXJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKiltb2RlOwogLSAo
dm9pZCl1bnNjaGVkdWxlRnJvbVJ1bkxvb3A6KE5TUnVuTG9vcCAqKXJ1bkxvb3AgZm9yTW9kZToo
TlNTdHJpbmcgKiltb2RlOwotI2VuZGlmCiAKIC0gKEJPT0wpZmluZFN0cmluZzooTlNTdHJpbmcg
KilzdHJpbmcgb3B0aW9uczooV2ViRmluZE9wdGlvbnMpb3B0aW9uczsKIC0gKERPTVJhbmdlICop
RE9NUmFuZ2VPZlN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgcmVsYXRpdmVUbzooRE9NUmFuZ2Ug
KilwcmV2aW91c1JhbmdlIG9wdGlvbnM6KFdlYkZpbmRPcHRpb25zKW9wdGlvbnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCA4MDVmYTI3ZDU2MDFi
ZGZmYTFmYmU0YjhlZmZiM2VjNDVhY2FkMTdiLi4yN2VmM2JkMDAzN2E3NmEwMTE2ODgxY2IzOGUx
NDFiZGZjYjg5N2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmgKQEAgLTk0LDEyICs5NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGFBcnJheShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENGQXJyYXlSZWYpIG92ZXJy
aWRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaWYgVVNFKENGTkVUV09SSykKLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwotI2Vsc2UKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSos
IE5TQ2FjaGVkVVJMUmVzcG9uc2UgKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNlbmRpZgogI2VuZGlm
IC8vIFVTRShORVRXT1JLX1NFU1NJT04pCiAKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRI
X0NBTExCQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IDE5YWJjOWFiZmYwNTdiZjAzZjUyYTg5N2JhNTQ2YThlOWVlYmMxYWUu
LjhlOGU3NDRlMzM5MTcyNTFkNmQ3MzIxNjkzNzdjN2NlMDMzMmI4NmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE5OCw3ICsx
OTgsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29u
c3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZQogCiAgICAgc2V0Q2FuSGFuZGxlSFRUUFNT
ZXJ2ZXJUcnVzdEV2YWx1YXRpb24ocGFyYW1ldGVycy5jYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0
RXZhbHVhdGlvbik7CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCisjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgU2Vzc2lvblRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKHBh
cmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCmluZGV4
IGYzYzZlY2JiYjAxYTE2MDI5ZjhkZWNmOWM0YzFjMzhhMDI3YWMwNzkuLjNkNjI1YzhlMjZiZmY3
ZGU0OGJmN2E1ZjFmMDQwOThiODhjNmZjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0KQEAgLTM0LDE4ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotI2lmIFVTRShD
Rk5FVFdPUkspCi0KLXZvaWQgTmV0d29ya0xvYWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQot
ewotICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOwotCi0gICAg
bV9jbGllbnQud2lsbENhY2hlUmVzcG9uc2VBc3luYyhjZlJlc3BvbnNlKTsKLQotICAgIG1faGFu
ZGxlLT5jb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKGNmUmVzcG9uc2UpOwotfQotCi0jZWxpZiAh
VVNFKE5FVFdPUktfU0VTU0lPTikKKyNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKIAogdm9pZCBO
ZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxl
LCBOU0NhY2hlZFVSTFJlc3BvbnNlICpuc1Jlc3BvbnNlKQogewpAQCAtNTYsNiArNDUsNiBAQCB2
b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIE5TQ2FjaGVkVVJMUmVzcAogICAgIG1faGFuZGxlLT5jb250aW51ZVdpbGxDYWNoZVJl
c3BvbnNlKG5zUmVzcG9uc2UpOwogfQogCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCisjZW5k
aWYgLy8gIVVTRShORVRXT1JLX1NFU1NJT04pCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmluZGV4IDYzMDU4MGYzNTE3
MGUyYTNlNDljZjU3YjAzODM5MjUxZGNjYzgxMTIuLmI4ZGI2ZTFlMWVhY2JkN2RhYzQ2ODExNGM3
MjA0ZTJjZWNkOWMzOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9h
ZHMvRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25s
b2FkLmgKQEAgLTQ4LDEwICs0OCw2IEBAIE9CSkNfQ0xBU1MgV0tEb3dubG9hZEFzRGVsZWdhdGU7
CiAjaW5jbHVkZSA8bWVtb3J5PgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2luY2x1
ZGUgPENGTmV0d29yay9DRlVSTERvd25sb2FkUHJpdi5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBJ
UEMgewogY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KQEAgLTEwNSwxMCArMTAxLDYgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsKICAgICB2b2lkIGRpZENhbmNlbChjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOwogCi0jaWYgVVNFKENGTkVUV09SSykK
LSAgICBEb3dubG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoZW50aWNhdGlvbkNsaWVudCgp
OwotI2VuZGlmCi0KICAgICAvLyBBdXRoZW50aWNhdGlvbgogICAgIHN0YXRpYyB2b2lkIHJlY2Vp
dmVkQ3JlZGVudGlhbChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNv
bnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKTsKICAgICBzdGF0aWMgdm9pZCByZWNlaXZlZFJlcXVl
c3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKTsKQEAgLTE0MiwxMCArMTM0LDYgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5Q
dHI8V0tEb3dubG9hZEFzRGVsZWdhdGU+IG1fZGVsZWdhdGU7CiAjZW5kaWYKICNlbmRpZgotI2lm
IFVTRShDRk5FVFdPUkspCi0gICAgUmV0YWluUHRyPENGVVJMRG93bmxvYWRSZWY+IG1fZG93bmxv
YWQ7Ci0gICAgUmVmUHRyPERvd25sb2FkQXV0aGVudGljYXRpb25DbGllbnQ+IG1fYXV0aGVudGlj
YXRpb25DbGllbnQ7Ci0jZW5kaWYKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ+IG1fZG93
bmxvYWRDbGllbnQ7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlSGFuZGxlPiBtX3Jlc291
cmNlSGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9p
b3MvRG93bmxvYWRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL2lvcy9E
b3dubG9hZElPUy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDBlODBlNjIwMzg0
YzE3ODAxNzAxMzg2MWY3NTIwOGU3NWI1Y2MwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL2lvcy9E
b3dubG9hZElPUy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE5NiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJEb3dubG9hZC5oIgotCi0jaWYgUExBVEZP
Uk0oSU9TKSAmJiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLQotI2ltcG9ydCAiRGF0YVJlZmVyZW5j
ZS5oIgotI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KLSNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2lt
cG9ydCA8Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWQuaD4KLSNlbmRpZgotCi11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQot
Ly8gRklYTUU6IElmIHBvc3NpYmxlLCB3ZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIHNvbWUgY2Fs
bGJhY2tzIG9mZiB0aGUgbWFpbiB0aHJlYWQgb3IgYXQgbGVhc3QKLS8vIG1ha2luZyB0aGVtIGFz
eW5jaG9ub3VzIGNhbGxzLgotc3RhdGljIHZvaWQgZGlzcGF0Y2hPbk1haW5UaHJlYWQodm9pZChe
YmxvY2spKCkpCi17Ci0gICAgaWYgKFJ1bkxvb3A6OmlzTWFpbigpKSB7Ci0gICAgICAgIGJsb2Nr
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIGJsb2NrKTsKLX0KLQotc3RhdGljIGlubGluZSBEb3dubG9hZCog
dG9Eb3dubG9hZChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxEb3dubG9hZCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLX0KLQotc3Rh
dGljIHZvaWQgc2V0VXBEb3dubG9hZENsaWVudChDRlVSTERvd25sb2FkQ2xpZW50JiBjbGllbnQs
IERvd25sb2FkJiBkb3dubG9hZCkKLXsKLSAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNs
aWVudCkpOwotICAgIGNsaWVudC5jbGllbnRJbmZvID0gJmRvd25sb2FkOwotCi0gICAgY2xpZW50
LmRpZFN0YXJ0ID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykg
ewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9h
ZChjbGllbnRJbmZvKS0+ZGlkU3RhcnQoKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNs
aWVudC53aWxsU2VuZFJlcXVlc3QgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlVSTFJlcXVlc3RS
ZWYgcmVxdWVzdCwgQ0ZVUkxSZXNwb25zZVJlZiwgY29uc3Qgdm9pZCopIC0+IENGVVJMUmVxdWVz
dFJlZiB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlVSTFJlcXVlc3RSZWY+KENGUmV0
YWluKHJlcXVlc3QpKTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZSA9
IFtdKENGVVJMRG93bmxvYWRSZWYsIENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAg
ICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25z
ZSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEgPSBb
XShDRlVSTERvd25sb2FkUmVmLCBDRkluZGV4IGxlbmd0aCwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3du
bG9hZChjbGllbnRJbmZvKS0+ZGlkUmVjZWl2ZURhdGEobGVuZ3RoKTsKLSAgICAgICAgfSk7Ci0g
ICAgfTsKLQotICAgIGNsaWVudC5zaG91bGREZWNvZGVEYXRhT2ZNSU1FVHlwZSA9IFtdKENGVVJM
RG93bmxvYWRSZWYsIENGU3RyaW5nUmVmIGVuY29kaW5nVHlwZSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykgLT4gQm9vbGVhbiB7Ci0gICAgICAgIF9fYmxvY2sgQk9PTCByZXR1cm5WYWx1ZSA9IE5P
OwotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgcmV0dXJuVmFs
dWUgPSB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5zaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1F
VHlwZShlbmNvZGluZ1R5cGUpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHJldHVyblZh
bHVlOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
T2JqZWN0TmFtZSA9IFtdKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWRSZWYsIENGU3RyaW5nUmVm
IG9iamVjdE5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hP
bk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIGJvb2wgYWxsb3dPdmVyd3JpdGU7Ci0gICAgICAg
ICAgICBTdHJpbmcgZGVzdGluYXRpb24gPSB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShvYmplY3ROYW1lLCBhbGxvd092ZXJ3cml0
ZSk7Ci0gICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQotICAgICAgICAgICAg
ICAgIENGVVJMRG93bmxvYWRTZXREZXN0aW5hdGlvbihkb3dubG9hZFJlZiwgcmVpbnRlcnByZXRf
Y2FzdDxDRlVSTFJlZj4oW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpkZXN0aW5hdGlvbl0pLCBhbGxv
d092ZXJ3cml0ZSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkQ3JlYXRl
RGVzdGluYXRpb24gPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlVSTFJlZiBwYXRoLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAg
ICAgICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihDRlVS
TEdldFN0cmluZyhwYXRoKSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlk
RmluaXNoID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewot
ICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChj
bGllbnRJbmZvKS0+ZGlkRmluaXNoKCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGll
bnQuZGlkRmFpbCA9IFtdKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWRSZWYsIENGRXJyb3JSZWYg
ZXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5U
aHJlYWQoXnsKLSAgICAgICAgICAgIGF1dG8gcmVzdW1lRGF0YSA9IGFkb3B0Q0YoQ0ZVUkxEb3du
bG9hZENvcHlSZXN1bWVEYXRhKGRvd25sb2FkUmVmKSk7Ci0gICAgICAgICAgICB0b0Rvd25sb2Fk
KGNsaWVudEluZm8pLT5kaWRGYWlsKGVycm9yLCBJUEM6OkRhdGFSZWZlcmVuY2UocmVzdW1lRGF0
YSA/IENGRGF0YUdldEJ5dGVQdHIocmVzdW1lRGF0YS5nZXQoKSkgOiBudWxscHRyLCByZXN1bWVE
YXRhID8gQ0ZEYXRhR2V0TGVuZ3RoKHJlc3VtZURhdGEuZ2V0KCkpIDogMCkpOwotICAgICAgICB9
KTsKLSAgICB9OwotfQotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KLXZvaWQgRG93bmxvYWQ6
OnN0YXJ0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpy
ZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIERvd25sb2FkOjpzdGFydFdpdGhIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17Ci0jaWYgVVNFKENGTkVUV09SSykKLSAg
ICBDRlVSTERvd25sb2FkQ2xpZW50IGNsaWVudDsKLSAgICBzZXRVcERvd25sb2FkQ2xpZW50KGNs
aWVudCwgKnRoaXMpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgIG1f
ZG93bmxvYWQgPSBhZG9wdENGKENGVVJMRG93bmxvYWRDcmVhdGVBbmRTdGFydFdpdGhMb2FkaW5n
Q29ubmVjdGlvbihOVUxMLCBoYW5kbGUtPnJlbGVhc2VDb25uZWN0aW9uRm9yRG93bmxvYWQoKS5n
ZXQoKSwgbV9yZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSksIHJlc3BvbnNlLmNm
VVJMUmVzcG9uc2UoKSwgJmNsaWVudCkpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAot
I2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCi19Ci0KLXZvaWQgRG93bmxvYWQ6
OmNhbmNlbCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6
cGxhdGZvcm1JbnZhbGlkYXRlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lk
IERvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRD
cmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5n
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlv
bihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21h
Yy9Eb3dubG9hZE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvbWFjL0Rv
d25sb2FkTWFjLm1tCmluZGV4IDljN2Q5NTMzODVlZjYzYTY2ZGY3NTYyNzE4ZWM4YTc2ZDdkZmI5
NjUuLjRmZTUzYWM2NTRjMGUwMGRjMmNjZTk4ODk5ZGY2MDAzNGRiYmY4ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCkBAIC0y
NiwxMCArMjYsMTEgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRG93bmxvYWQuaCIK
IAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShORVRXT1JLX1NFU1NJT04pCisjaWYgUExBVEZP
Uk0oQ09DT0EpICYmICFVU0UoTkVUV09SS19TRVNTSU9OKQogCiAjaW1wb3J0IDxXZWJDb3JlL0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9u
TWFjLmg+CisjaW1wb3J0IDxXZWJDb3JlL05TVVJMRG93bmxvYWRTUEkuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KQEAgLTM3LDE0ICsz
OCw2IEBACiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJXZWJQYWdlLmgiCiAK
LUBpbnRlcmZhY2UgTlNVUkxEb3dubG9hZCAoV2ViTlNVUkxEb3dubG9hZERldGFpbHMpCi0rKGlk
KV9kb3dubG9hZFdpdGhMb2FkaW5nQ29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVj
dGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOihOU1VSTFJlc3Bv
bnNlICopcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eTooaWQpcHJveHk7Ci1AZW5kCi0K
IEBpbnRlcmZhY2UgV0tEb3dubG9hZEFzRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxEb3dubG9h
ZERlbGVnYXRlPiB7CiAgICAgV2ViS2l0OjpEb3dubG9hZCogX2Rvd25sb2FkOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCmluZGV4IDZhZjMxN2VkY2NjYjNmMzc4ZWQ4OTQ5MWM0YWRmN2I2Y2ViMWJiZTkuLmVkMDVm
ZjYyNWJiMjkwYmI5ZmY4ZTMyNzhiMDJhZGZjY2Q1YjA1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTEw
NSw3ICsxMDUsNyBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJ
UEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHRleHRD
aGVja2VyU3RhdGU7CiAgICAgZW5jb2RlciA8PCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOwog
ICAgIGVuY29kZXIgPDwgZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWw7Ci0jaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW5j
b2RlciA8PCB1aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwogI2VuZGlmCiAjaWYgUExBVEZPUk0o
Q09DT0EpCkBAIC0yMzAsNyArMjMwLDcgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlYlByb2MKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5kZWZh
dWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBQ
TEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmll
cikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggMmY4MGM2M2Q3
ODM1NDkwOWVlYWQ1MmU2OGI0ZjgyOWMxYzE3OTU2Mi4uMDMzNTAxMTAyYzRhZmQ4ZTQ0NmFmZjc3
YTAxYzQwNzA1ZDQ2ZDhkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xMjEsNyArMTIxLDcgQEAgc3RydWN0IFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgZG91YmxlIGRlZmF1bHRSZXF1ZXN0
VGltZW91dEludGVydmFsOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUksp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU3RyaW5nIHVpUHJvY2Vzc0J1bmRsZUlkZW50aWZp
ZXI7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJD
b3JlQXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNv
cmVBcmd1bWVudENvZGVyc01hYy5tbQppbmRleCBkZmZiM2UwNjNkNTZhZGExN2Q1Y2Q1NGNmZTE1
ZTAzMDk4YzVhZTE1Li5kMGQ0YzcwODUxZGU5OThhYjllZDI5YjVlODA5MTFmOTJmZGM2YjM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVy
c01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENv
ZGVyc01hYy5tbQpAQCAtMzksMTAgKzM5LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VF
cnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KIAotI2lmIFVTRShD
Rk5FVFdPUkspCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0Lmg+Ci0jZW5kaWYKLQog
I2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW1wb3J0IDxXZWJDb3JlL0FW
Rm91bmRhdGlvblNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dC5oPgpAQCAtNTcsMzYgKzUzLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBJUEMgewogCi0jaWYgVVNFKENGTkVUV09SSykKLXZvaWQgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKLXsKLSAgICBSZXRh
aW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiByZXF1ZXN0VG9TZXJpYWxpemUgPSByZXNvdXJjZVJlcXVl
c3QuY2ZVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpOwotCi0gICAgYm9vbCByZXF1ZXN0
SXNQcmVzZW50ID0gcmVxdWVzdFRvU2VyaWFsaXplOwotICAgIGVuY29kZXIgPDwgcmVxdWVzdElz
UHJlc2VudDsKLQotICAgIGlmICghcmVxdWVzdElzUHJlc2VudCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgLy8gV2UgZG9uJ3Qgc2VuZCBIVFRQIGJvZHkgb3ZlciBJUEMgZm9yIGJldHRlciBwZXJm
b3JtYW5jZS4KLSAgICAvLyBBbHNvLCBpdCdzIG5vdCBhbHdheXMgcG9zc2libGUgdG8gZG8sIGFz
IHN0cmVhbXMgY2FuIG9ubHkgYmUgY3JlYXRlZCBpbiBwcm9jZXNzIHRoYXQgZG9lcyBuZXR3b3Jr
aW5nLgotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJlcXVlc3RIVFRQQm9keSA9IGFkb3B0Q0Yo
Q0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keShyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCkp
KTsKLSAgICBSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVmPiByZXF1ZXN0SFRUUEJvZHlTdHJlYW0g
PSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdEJvZHlTdHJlYW0ocmVxdWVzdFRv
U2VyaWFsaXplLmdldCgpKSk7Ci0gICAgaWYgKHJlcXVlc3RIVFRQQm9keSB8fCByZXF1ZXN0SFRU
UEJvZHlTdHJlYW0pIHsKLSAgICAgICAgQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBtdXRhYmxlUmVx
dWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIHJlcXVlc3RUb1NlcmlhbGl6
ZS5nZXQoKSk7Ci0gICAgICAgIHJlcXVlc3RUb1NlcmlhbGl6ZSA9IGFkb3B0Q0YobXV0YWJsZVJl
cXVlc3QpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdEJvZHkobXV0YWJsZVJl
cXVlc3QsIG5pbCk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9keVN0cmVh
bShtdXRhYmxlUmVxdWVzdCwgbmlsKTsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRihXS0NGVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6
YWJsZVJlcHJlc2VudGF0aW9uKHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSwgSVBDOjp0b2tlbk51
bGxUeXBlUmVmKCkpKTsKLSAgICBJUEM6OmVuY29kZShlbmNvZGVyLCBkaWN0aW9uYXJ5LmdldCgp
KTsKLQotICAgIC8vIFRoZSBmYWxsYmFjayBhcnJheSBpcyBwYXJ0IG9mIENGVVJMUmVxdWVzdCwg
YnV0IGl0IGlzIG5vdCBlbmNvZGVkIGJ5IFdLQ0ZVUkxSZXF1ZXN0Q3JlYXRlU2VyaWFsaXphYmxl
UmVwcmVzZW50YXRpb24uCi0gICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QucmVzcG9uc2VD
b250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoKTsKLSAgICBlbmNvZGVyLmVu
Y29kZUVudW0ocmVzb3VyY2VSZXF1ZXN0LnJlcXVlc3RlcigpKTsKLX0KLSNlbHNlCiB2b2lkIEFy
Z3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3Qp
CiB7CiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdFRvU2VyaWFsaXplID0gcmVz
b3VyY2VSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKQEAgLTExMiw3
ICs3OCw2IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0
Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyCiAgICAgZW5jb2RlciA8PCByZXNvdXJj
ZVJlcXVlc3QucmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXko
KTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0ocmVzb3VyY2VSZXF1ZXN0LnJlcXVlc3RlcigpKTsK
IH0KLSNlbmRpZgogCiBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2Rl
UGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXNvdXJjZVJlcXVlc3QpCiB7CkBAIC0xMjksMjAgKzk0LDEyIEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyJiBk
ZWNvZGVyCiAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkaWN0aW9uYXJ5KSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBSZXRhaW5QdHI8Q0ZV
UkxSZXF1ZXN0UmVmPiBjZlVSTFJlcXVlc3QgPSBhZG9wdENGKFdLQ3JlYXRlQ0ZVUkxSZXF1ZXN0
RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9r
ZW5OdWxsVHlwZVJlZigpKSk7Ci0gICAgaWYgKCFjZlVSTFJlcXVlc3QpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJlc291cmNlUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChjZlVSTFJl
cXVlc3QuZ2V0KCkpOwotI2Vsc2UKICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJl
cXVlc3QgPSBXS05TVVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0
aW9uYXJ5LmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSk7CiAgICAgaWYgKCFuc1VSTFJl
cXVlc3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJlc291cmNlUmVxdWVzdCA9IFJl
c291cmNlUmVxdWVzdChuc1VSTFJlcXVlc3QuZ2V0KCkpOwotI2VuZGlmCi0gICAgCisKICAgICBW
ZWN0b3I8U3RyaW5nPiByZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tB
cnJheTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9u
RW5jb2RpbmdGYWxsYmFja0FycmF5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNjYzBi
NmNmNGZmZTU1NDFjYmFjMjg3Y2E3OGJhNGZjZWY1NmJkZTkuLmY0MjY2MGFiMzA4MzE4MDA5OGMx
N2VmZTMwNWQ2NDQ1ZDNmOGExNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY3Miw3ICs2NzIsNiBAQAogCQkyREE5NDRBMjE4
ODRFNEYwMDBFRDg2REIgLyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NDlCMTg4NEU0RjAwMEVE
ODZEQiAvKiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1MuY3BwICovOyB9OwogCQkyREE5NDRBMzE4
ODRFNEYwMDBFRDg2REIgLyogV2ViVG91Y2hFdmVudElPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDQ5QzE4ODRFNEYwMDBFRDg2REIgLyog
V2ViVG91Y2hFdmVudElPUy5jcHAgKi87IH07CiAJCTJEQTk0NEE0MTg4NEU0RjAwMEVEODZEQiAv
KiBHZXN0dXJlVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJEQTk0NDlEMTg4NEU0RjAwMEVEODZEQiAvKiBHZXN0dXJlVHlwZXMuaCAqLzsgfTsK
LQkJMkRBOTQ0QTcxODg0RTk0ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0QTYxODg0RTk0ODAwRUQ4
NkRCIC8qIERvd25sb2FkSU9TLm1tICovOyB9OwogCQkyREE5NDRBRDE4ODRFOUJBMDBFRDg2REIg
LyogVGV4dENoZWNrZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyREE5NDRBOTE4ODRFOUJBMDBFRDg2REIgLyogVGV4dENoZWNrZXJJT1MubW0g
Ki87IH07CiAJCTJEQTk0NEFGMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQYWdlUHJveHlJT1MubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDRBQjE4
ODRFOUJBMDBFRDg2REIgLyogV2ViUGFnZVByb3h5SU9TLm1tICovOyB9OwogCQkyREE5NDRCMDE4
ODRFOUJBMDBFRDg2REIgLyogV2ViUHJvY2Vzc1Byb3h5SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0QUMxODg0RTlCQTAwRUQ4NkRCIC8q
IFdlYlByb2Nlc3NQcm94eUlPUy5tbSAqLzsgfTsKQEAgLTI4MzMsNyArMjgzMiw2IEBACiAJCTJE
QTk0NDlCMTg4NEU0RjAwMEVEODZEQiAvKiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1MuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50
SU9TLmNwcDsgcGF0aCA9IGlvcy9XZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyREE5NDQ5QzE4ODRFNEYwMDBFRDg2REIgLyogV2ViVG91
Y2hFdmVudElPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJU
b3VjaEV2ZW50SU9TLmNwcDsgcGF0aCA9IGlvcy9XZWJUb3VjaEV2ZW50SU9TLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0OUQxODg0RTRGMDAwRUQ4NkRCIC8qIEdlc3R1
cmVUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHZXN0dXJlVHlwZXMu
aDsgcGF0aCA9IGlvcy9HZXN0dXJlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMkRBOTQ0QTYxODg0RTk0ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9TLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRG93bmxvYWRJT1MubW07IHBhdGggPSBEb3du
bG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
REE5NDRBOTE4ODRFOUJBMDBFRDg2REIgLyogVGV4dENoZWNrZXJJT1MubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXh0Q2hlY2tlcklPUy5tbTsgcGF0aCA9IGlv
cy9UZXh0Q2hlY2tlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0
QUIxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlBhZ2VQcm94eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlBhZ2VQcm94eUlPUy5tbTsgcGF0aCA9IGlvcy9X
ZWJQYWdlUHJveHlJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQTk0NEFD
MTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQcm9jZXNzUHJveHlJT1MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJQcm9jZXNzUHJveHlJT1MubW07IHBhdGggPSBp
b3MvV2ViUHJvY2Vzc1Byb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTE0OCw3ICs1MTQ2LDYgQEAKIAkJMkRBOTQ0QTUxODg0RTkzQzAwRUQ4NkRCIC8qIGlvcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMkRBOTQ0QTYxODg0
RTk0ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9TLm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSBpb3M7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTUxNiw3ICs5NTEzLDYgQEAKIAkJCQk1
MThFOEYwNzE2QjIwOTM3MDBFOTE0MjkgLyogRG93bmxvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTE4RThGMDkxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkQXV0aGVudGljYXRpb25DbGll
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFERjYzMTIxOEUwQjdDODAwM0EzRTJBIC8qIERv
d25sb2FkQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMkRBOTQ0QTcxODg0RTk0ODAwRUQ4
NkRCIC8qIERvd25sb2FkSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4RThGMEQxNkIyMDkz
NzAwRTkxNDI5IC8qIERvd25sb2FkTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4RThGMEIx
NkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQUI3RDRDQjEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNWRlYzM3YWU1ZTVmYzY1NTc5MzVkMzFh
Y2EyMmVhYzVhNjE5MGMwMS4uOWI4MmM4MzkwMDUyNzgyYmZlMWQ2MmRkMzlkNTNjY2JjYzIyZWIy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIEluamVj
dGVkQnVuZGxlOjpzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKFdlYlBhZ2VHcm91cFBy
b3h5KiBwYWdlR3JvdQogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBib29sIGVuYWJsZWQpCiB7CiAgICAg
Ly8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVGhpcyB0ZXN0LW9ubHkgZnVuY3Rpb24gZG9lc24n
dCB3b3JrIHdpdGggTmV0d29ya1Byb2Nlc3MsIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE1Mjc0Pi4KLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09S
SykgfHwgVVNFKFNPVVApCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIGlm
IChlbmFibGVkKQogICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsK
ICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggMDNmMjg4
MjMwMjExMzZmZTA4ZGQyZjczYzU0YWJiMzVmMzNiOGU4Zi4uYzcxODViZmU1MjQ4NWQ5OTFiZDAy
YmJlMTc3NWE4OGI4M2VlOTExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5t
bQpAQCAtMTIxLDEzICsxMjEsNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZv
aWQpCiAgICAgICAgIElOSVQoV2luZG93U2V0QWxwaGEpOwogI2VuZGlmIC8vICFQTEFURk9STShJ
T1MpCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgICAgICBJTklUKEdldERlZmF1bHRIVFRQQ29v
a2llU3RvcmFnZSk7Ci0gICAgICAgIElOSVQoQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50
U3RvcmFnZSk7Ci0gICAgICAgIElOSVQoU2V0Q0ZVUkxSZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZm
KTsKLSAgICAgICAgSU5JVChTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24pOwotI2VuZGlmCi0KICNp
ZiAhUExBVEZPUk0oSU9TKQogICAgICAgICBJTklUKFNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRl
bnRpZmllcnMpOwogICAgICAgICBJTklUKFNwZWVjaFN5bnRoZXNpc0dldERlZmF1bHRWb2ljZUlk
ZW50aWZpZXJGb3JMb2NhbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggMDNjNTI0MzdhMDAyNWM0MjE3ZjFkMzZhNjgyOTIyNTFiNjUyODZmNy4uZTAzMDgx
NjEwMjE1MmY4OTY0MDM4ZWYwZjcxMzkyN2FiMzcyMWEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBXZWJQcm9jZXNz
Ojppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRVc2VGb250U21vb3RoaW5nKQogICAg
ICAgICBzZXRTaG91bGRVc2VGb250U21vb3RoaW5nKHRydWUpOwogCi0jaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2Vzc2lvblRy
YWNrZXI6OnNldElkZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRp
Zmllcik7CiAjZW5kaWYKIApAQCAtNDU3LDE0ICs0NTcsMTQgQEAgdm9pZCBXZWJQcm9jZXNzOjpm
dWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJs
ZWQpCiAKIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNz
aW9uSUQgc2Vzc2lvbklEKQogewotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JL
KSB8fCBVU0UoU09VUCkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVApCiAgICAgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNz
aW9uSUQpOwogI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSNpZiBQTEFURk9STShDT0NPQSkg
fHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVT
RShTT1VQKQogICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQpOwog
I2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267569</attachid>
            <date>2015-12-17 10:47:42 -0800</date>
            <delta_ts>2015-12-26 04:21:08 -0800</delta_ts>
            <desc>Patch to find build errors (fix DownloadMac.mm on iOS)</desc>
            <filename>bug-137936-20151217104704.patch</filename>
            <type>text/plain</type>
            <size>131237</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE4YmM0YTczMTU0ODcyYTg1OTc1NjNm
YWE0MDRlYzg0NjMyM2RhODAuLjE2YzdjYzM4YjU4NWJiMTU3ODFjOGRiOWMyZjU4MjMwYjkxYmRh
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTItMTcgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgVVNFKENGTkVUV09SSykrUExBVEZPUk0o
Q09DT0EpIGNvZGUgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM3OTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxNS0xMi0xNiAgQW5kcmVhcyBLbGluZyAg
PGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgR2l2ZSBrZXJuZWwgVk0gc29tZSBoaW50cyBh
Ym91dCBub24tbGl2ZSBtZW1vcnktY2FjaGVkIHJlc291cmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0ODdl
YTUxYTY3MjEwMzFlMzY0MGU2NjQzODYzZGE0ZmFiZDMwNjIxLi43M2M5MjlhOWNmNjcwYTQ3Mjcy
NjI4MTU0ZGE0NTMxNGEyNWE4ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMyIEBACisyMDE1
LTEyLTE3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIFVTRShDRk5FVFdPUkspK1BMQVRGT1JNKENPQ09BKSBjb2RlIHBhdGgKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzkzNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbW9zdCBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9t
YWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NoZWR1bGVBbGwp
OiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJy
YXkpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvbWFjL1BhZ2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6YWRkU2NoZWR1bGVQYWlyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJl
bW92ZVNjaGVkdWxlUGFpcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJl
Z2lzdGVyTWVkaWFFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVWaWRlb0xheWVyR3Jhdml0eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
aW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2Uu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNGKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvcHlDb29raWVzRm9yVVJMV2l0aEZpcnN0UGFydHlVUkwpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlQ29va2llcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5k
bGluZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0OjpSZXNvdXJjZVJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0OjpjYWNoZVBhcnRpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OnNldENhY2hlUGFydGl0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9uc2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6YWRkVG9IVFRQSGVhZGVyTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmg6
CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjplbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1E
YXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRp
YWxDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnRvTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVu
Y2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6bnNDcmVkZW50aWFs
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OmlzRW1wdHkpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29j
b2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZTo6ZW5jb2RpbmdSZXF1aXJl
c1BsYXRmb3JtRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnR5cGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpuc1NwYWNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVlc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJl
c291cmNlUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3Mv
UXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1t
OgorICAgICAgICAoLVtXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIGRldGFjaEhh
bmRsZV0pOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjp+UXVpY2tMb29rSGFu
ZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1Nl
dCk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdh
dGUgaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViUmVz
b3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSBfc2VuZERpZFJlY2VpdmVSZXNwb25zZUlmTmVj
ZXNzYXJ5XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29r
RGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YUFycmF5Ol0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlk
UmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJl
c291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdh
dGUgY29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UXVpY2tMb29rSGFuZGxlOjpkaWRSZWNlaXZlRGF0YUFycmF5KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW06IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6OnNldEF1dGhlbnRpY2F0aW9uQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjphdXRoZW50aWNhdGlvbkNsaWVudCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y29va2llU3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW06CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTlNF
cnJvckZyb21SZXNvdXJjZUVycm9yQmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om5zRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgTlNFcnJvciAqKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Om9wZXJhdGlvblF1ZXVlRm9yQXN5bmNDbGllbnRzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWxlZ2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xv
YWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50
OjpwbGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1t
OgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIGRldGFjaEhhbmRs
ZV0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW06CisgICAg
ICAgIChXZWJDb3JlOjpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvY29jb2EvTlNVUkxEb3dubG9hZFNQSS5oOgor
CiAyMDE1LTEyLTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgTWFrZSBTZXNzaW9uSUQgdXNlIGludEhhc2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRl
eCBlNWQyODM3ZTlhNjBjY2NjNjEwZDU5MzA1MDNjZWY4ZjFmYWM1ZDg3Li44NWRkOWFhYzg2ZDUx
NzY1ZjM2NDQ1YjhlNGY1ZjBkY2IxMjIyM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjcgQEAKKzIwMTUtMTItMTcgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW1vdmUgVVNFKENGTkVUV09SSykrUExBVEZPUk0oQ09DT0EpIGNvZGUgcGF0aAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3OTM2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dl
YkRvd25sb2FkLmg6CisgICAgICAgICogTWlzYy9XZWJEb3dubG9hZC5tbToKKyAgICAgICAgKiBN
aXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaDoKKyAgICAgICAgKiBNaXNjL1dlYktpdFZlcnNpb25D
aGVja3MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNlTG9h
ZFRvRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2Vi
Q29yZVN5c3RlbUludGVyZmFjZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3NldEN1cnJlbnROZXR3b3Jr
TG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZy
YW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2NoZWR1bGVJblJ1bkxv
b3A6Zm9yTW9kZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKGZpbmRTdHJpbmcpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxNS0xMi0xNiAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIFtGZXRjaCBB
UEldIEFkZCBmZXRjaCBBUEkgY29tcGlsZSB0aW1lIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlMzQ1Y2Ey
YTdhYmM2MjgzMTliMDg4ZTMzNTRlMmQ2MzcxOWZjOTc1Li4wZDlmNDQ4Y2Y1NTcwMjc1ZDE0MmYz
NzU1ZDIxNzg1ZDBhZTk5YWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTUtMTIt
MTcgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
VVNFKENGTkVUV09SSykrUExBVEZPUk0oQ09DT0EpIGNvZGUgcGF0aAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3OTM2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyk6IERlbGV0ZWQu
CisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAqIFNoYXJl
ZC9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJl
ZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVz
dD46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVz
b3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAg
ICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpp
bml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpk
ZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisKIDIwMTUtMTItMTYgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQcm9ncmVzcyB0b3dh
cmRzIGltcGxlbWVudGluZyBkb3dubG9hZHMgd2l0aCBOZXR3b3JrU2Vzc2lvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgK
aW5kZXggNTkxODE4YzNiZGI4MmJhOWMyYjVhYTU5YTZkZWI2NGIzMzAxMGM5ZS4uNjI2NGY4ODc3
YWFmMTg1YTZiYWZjZDg4NDNkMWM1MmZhOWIwNGJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC01NDUsOSAr
NTQ1LDYgQEAKICNpZiBQTEFURk9STShJT1MpCiAKICNkZWZpbmUgSEFWRV9SRUFETElORSAxCi0j
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNkZWZpbmUgVVNFX0NGTkVUV09SSyAxCi0jZW5k
aWYKICNkZWZpbmUgVVNFX1VJS0lUX0VESVRJTkcgMQogI2RlZmluZSBVU0VfV0VCX1RIUkVBRCAx
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBjMDlkM2Q5NGYzMWE2OWM2ODg3ZDI3NTQwMjQ4NTI2OTkxYmE4Y2NkLi43ZTFlODI2
NDRkNTg0ZWY2NTc5N2E4ZDcyZjI4NTNjYWVjNGEyY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzc0LDcgKzI3NzQsNiBA
QAogCQk3RTY2RTIzNDE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFU
Qy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U2NkUy
MzIxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCAqLzsgfTsK
IAkJN0U2NkUyMzQxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJU
Qy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U2NkUy
MzIxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oICovOyB9
OwogCQk3RTdERTFGRDE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTdERTFGQzE5
NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gKi87IH07Ci0JCTdFN0RF
MjAyMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTdERTIwMTE5NUNFRkNEMDAzNTM2
M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tICovOyB9OwogCQk3RThGQURDNDE5OUE5NUIxMDA3
MTQ5NjggLyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOEZBREMzMTk5QTk1QjEwMDcxNDk2OCAvKiBTdWJy
ZXNvdXJjZUxvYWRlckNvY29hLm1tICovOyB9OwogCQk3RTk5QUY1MTBCMTM4NDY0NjhGQjAxQTUg
LyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOTlBRjUyMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5k
b3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwICovOyB9OwogCQk3RTk5QUY1MzBCMTM4NDY0NjhG
QjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTk5QUY1NDBCMTM4NDY0NjhGQjAxQTUgLyog
V2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjg1LDcgKzEwMjg0LDYgQEAKIAkJN0U2NkUyMzIx
NkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTY2RTIzMjE3RTZFQjZDMDBGN0U3RkYgLyogV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3RTdERTFGQzE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVl
c3RDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0U3REUyMDExOTVDRUZD
RDAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdElPUy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0U4RkFEQzMxOTlBOTVCMTAwNzE0OTY4IC8qIFN1YnJlc291cmNlTG9h
ZGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdWJy
ZXNvdXJjZUxvYWRlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTk5
QUY1MjBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd0ZvY3VzQWxsb3dlZElu
ZGljYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFOTlBRjU0MEIxMzg0
NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjU2Nyw3ICsxNjU2NSw2IEBACiAJCQkJNDQyQUY3
QTgxMDJDRERFQTAwOEZENEQzIC8qIFF1aWNrTG9vay5tbSAqLywKIAkJCQlBMTBEQkY0NjE4Rjky
MzE3MDAwRDcwQzYgLyogUXVpY2tMb29rSGFuZGxlQ2xpZW50LmggKi8sCiAJCQkJN0U0MjhDRTQx
M0UzNDA3RjAwM0I2NjFDIC8qIFJlc291cmNlSGFuZGxlSU9TLm1tICovLAotCQkJCTdFN0RFMjAx
MTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gKi8sCiAJCQkJNDRBMjBE
QjgwRjg0MTY2QzAwQjNFMUZFIC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5oICovLAogCQkJCTQ0
NEQ0RTIxMEY3MDhCMkUwMDMxNThFMCAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0gKi8sCiAJ
CQkpOwpAQCAtMzA3ODQsNyArMzA3ODEsNiBAQAogCQkJCTUxNEM3NjdDMENFOTIzQTEwMDdFRjND
RCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDZF
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3RTdERTFGRDE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2Eu
bW0gaW4gU291cmNlcyAqLywKLQkJCQk3RTdERTIwMjE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3Vy
Y2VSZXF1ZXN0SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTMwQ0U5MjM0RTAwN0VG
M0NEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjdF
MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3RUU2ODQ3MTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZUNGTmV0
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApp
bmRleCA1NTEwMzkxYmQzM2QzYTM2NjcxNTZlODQ1ZmEzMTMxMWMzZjZmOWYzLi45ZGJlMTgzZTY5
ZWNiNWRlMWY1NTViN2U1OGNlNDhkNzgzZGRlMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaApAQCAtNTYsNiArNTYsMTAgQEAKICNpbmNsdWRlICJRdWlja0xvb2suaCIK
ICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFp
ci5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OwpAQCAtMTQ0LDcgKzE0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0
aW9uJik7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGluZzsgfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgICAgICB2b2lkIHNjaGVkdWxlKFNjaGVkdWxlUGFpciYpOwogICAg
ICAgICB2b2lkIHVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDBkODFmZjViYTI4YTIxMDRkNTI4YWVj
ZmJiYmU3MzU2Y2EyM2I2NzguLjk2MTNlMzAxYjgzMTdlYWU4MTUyY2YzZThmMDc2YzRkMzljMWQ3
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNzI0LDcg
KzcyNCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKICAgICBjYW5jZWwoKTsKIH0KIAotI2lmIFBMQVRG
T1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2No
ZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuaAppbmRleCAwMjdhYzA4ZjIzMjMxZDQwNzg3ZDEzMDI1NjI2MzMyYjkyNmY0MGZhLi44
NTIwMTE3NTRmN2I5MTQ2NzU1MmM4YjVjYTliMTk3NzE3OTllZWE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgd2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCk7CiAKLSNpZiBQTEFURk9STShN
QUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzY2hlZHVsZShXVEY6OlNjaGVkdWxl
UGFpciYpOwogICAgIHZvaWQgdW5zY2hlZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpOwogI2VuZGlm
CkBAIC0xNTcsMTIgKzE1Nyw5IEBAIHByb3RlY3RlZDoKIAogICAgIGNvbnN0IFJlc291cmNlTG9h
ZGVyT3B0aW9ucyYgb3B0aW9ucygpIHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCi0jaWYgUExBVEZP
Uk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZp
cnR1YWwgTlNDYWNoZWRVUkxSZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5k
bGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNpZiBQTEFURk9S
TShDT0NPQSkgJiYgVVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFsIENGQ2FjaGVkVVJMUmVzcG9u
c2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmKSBvdmVycmlkZTsKLSNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVx
dWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
ZGlyZWN0UmVzcG9uc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5oCmluZGV4IDY5YTI0MjI5NzIxZmY2Y2E5ODk5M2E2OTk3NzAxOGZlZWQ4ZDVjZDguLmVmYWNk
ZDhkMTMyNDJhMDY0NDM5YWI3MjkwMGIxOTRjY2JjMDE0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03MywxMiArNzMsOSBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2aXJ0dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKndpbGxDYWNoZVJlc3Bv
bnNlKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSopIG92ZXJyaWRlOwogI2Vu
ZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBD
RkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwg
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7Ci0jZW5kaWYKIAogI2lmIFVTRShORVRX
T1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNEYXRh
QXJyYXkoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCmluZGV4IDdlNzRmMjBmOTcyYjA3OGZlODYy
YjU4MWMyODliZWVlNWQwYTEyYzguLmIyNjE0NGJkMjA1ZjFmNmE3NjZhZWViNTI3ZmNlZjNmOTYy
ZTE3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2Fk
ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJN
YWMuY3BwCkBAIC0zMyw4ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFBM
QVRGT1JNKE1BQykKLQogc3RhdGljIHZvaWQgc2NoZWR1bGVBbGwoY29uc3QgUmVzb3VyY2VMb2Fk
ZXJNYXAmIGxvYWRlcnMsIFNjaGVkdWxlUGFpciYgcGFpcikKIHsKICAgICBWZWN0b3I8UmVmUHRy
PFJlc291cmNlTG9hZGVyPj4gbG9hZGVyc0NvcHk7CkBAIC02OSw2ICs2Nyw0IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OnVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQogICAgIHVuc2NoZWR1
bGVBbGwobV9tdWx0aXBhcnRTdWJyZXNvdXJjZUxvYWRlcnMsIHBhaXIpOwogfQogCi0jZW5kaWYK
LQogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMv
UmVzb3VyY2VMb2FkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNl
TG9hZGVyTWFjLm1tCmluZGV4IGJiOWIxNGU4MTRiNWIyMzljNzdlNTFhNGRiZjE3Y2Q2NTFjMjZm
MDMuLjhhMzI4ZWU1ZmYyODgxZThjMzQ0NmViNTg4NGNlMmU1YjIyZmNmYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQpAQCAtMzYsMTkgKzM2
LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLQotQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZiBSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UoUmVz
b3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQotewot
ICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MoKSA9PSBEb05vdFNlbmRDYWxsYmFj
a3MpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgUmV0YWluUHRyPE5TQ2FjaGVkVVJM
UmVzcG9uc2U+IG5zQ2FjaGVkUmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNDYWNoZWRVUkxSZXNwb25z
ZSBhbGxvY10gX2luaXRXaXRoQ0ZDYWNoZWRVUkxSZXNwb25zZTpjYWNoZWRSZXNwb25zZV0pOwot
ICAgIHJldHVybiBbZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9j
dW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCBuc0NhY2hlZFJlc3BvbnNlLmdldCgpKSBfQ0ZD
YWNoZWRVUkxSZXNwb25zZV07Ci19Ci0KLSNlbHNlCi0KIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFJl
c291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVk
VVJMUmVzcG9uc2UqIHJlc3BvbnNlKQogewogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxs
YmFja3MoKSA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBAIC01Niw4ICs0Myw2IEBAIE5TQ2FjaGVk
VVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhh
bmRsZSosIE5TQ2FjaGVkCiAgICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLndpbGxD
YWNoZVJlc3BvbnNlKGRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIoKSwgcmVzcG9uc2UpOwog
fQogCi0jZW5kaWYKLQogI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKIAog
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFB
cnJheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCmluZGV4IDUyNTEwOGZjYTVlZThhODQz
MTRhNmQxMDVhZjRhNmQxMzU0MjRlN2YuLmY1YzUxZjlhYmZhYTdjNzU3NTAyYzJhY2U4MDgzOWNk
NmViMjc5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQpAQCAtMzQsMTIgKzM0LDE2
IEBACiAjaW1wb3J0ICJGcmFtZVRyZWUuaCIKICNpbXBvcnQgIk1haW5GcmFtZS5oIgogCisjaWYg
UExBVEZPUk0oSU9TKQorI2ltcG9ydCAiV2ViQ29yZVRocmVhZC5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewotI2lm
IFVTRShDRk5FVFdPUkspCi0gICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRl
KFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBnZXRDRlJ1bkxvb3BdLCBrQ0ZSdW5Mb29wQ29t
bW9uTW9kZXMpKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVk
dWxlUGFpcjo6Y3JlYXRlKFdlYlRocmVhZE5TUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9k
ZXMpKTsKICNlbHNlCiAgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFtO
U1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpKTsKICNlbmRp
ZgpAQCAtNTEsMTQgKzU1LDEyIEBAIHZvaWQgUGFnZTo6YWRkU2NoZWR1bGVQYWlyKFJlZjxTY2hl
ZHVsZVBhaXI+JiYgcGFpcikKICAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNjaGVkdWxlUGFpckhhc2hTZXQ+KCk7CiAgICAgbV9zY2hlZHVsZWRSdW5M
b29wUGFpcnMtPmFkZChwYWlyLnB0cigpKTsKIAotI2lmICFQTEFURk9STShJT1MpCiAgICAgZm9y
IChGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRv
Y3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCiAgICAgICAg
ICAgICBkb2N1bWVudExvYWRlci0+c2NoZWR1bGUocGFpcik7CiAgICAgICAgIGlmIChEb2N1bWVu
dExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlcigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNjaGVkdWxlKHBhaXIp
OwogICAgIH0KLSNlbmRpZgogCiAgICAgLy8gRklYTUU6IG1ha2UgU2hhcmVkVGltZXJNYWMgdXNl
IHRoZXNlIFNjaGVkdWxlUGFpcnMuCiB9CkBAIC03MSwxNCArNzMsMTIgQEAgdm9pZCBQYWdlOjpy
ZW1vdmVTY2hlZHVsZVBhaXIoUmVmPFNjaGVkdWxlUGFpcj4mJiBwYWlyKQogCiAgICAgbV9zY2hl
ZHVsZWRSdW5Mb29wUGFpcnMtPnJlbW92ZShwYWlyLnB0cigpKTsKIAotI2lmICFQTEFURk9STShJ
T1MpCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoRG9jdW1l
bnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+dW5zY2hlZHVsZShwYWlyKTsKICAgICAg
ICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5w
cm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+
dW5zY2hlZHVsZShwYWlyKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDk4MGU0MzFmNmQyYzE0NmY1YmMxMWI5NzJlYzY5ZjYw
MzU3YzhiNTguLjBhYTE4ZmQxYjVjZmI5NzA0ZGNhZDI1NDc2YzYxZmE5NmU1OTU0MTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtOTksMTAgKzk5LDYgQEAKICNpbXBvcnQgPFZpZGVvVG9v
bGJveC9WaWRlb1Rvb2xib3guaD4KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbmNs
dWRlICJDRk5TVVJMQ29ubmVjdGlvblNQSS5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9STShJT1Mp
CiAjaW5jbHVkZSA8T3BlbkdMRVMvRVMzL2dsZXh0Lmg+CiAjZW5kaWYKQEAgLTQyMSw1OCArNDE3
LDYgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUHVsbERlbGVnYXRlUXVldWUoKQog
fQogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotY2xhc3MgV2ViQ29yZU5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3JlTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudD4sIHB1YmxpYyBBdXRoZW50aWNhdGlvbkNsaWVu
dCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUNsaWVudD4gY3JlYXRlKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNo
YWxsZW5nZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29yZU5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQoY2hhbGxlbmdlKSk7Ci0gICAgfQotCi0gICAg
dXNpbmcgUmVmQ291bnRlZDxXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVu
dD46OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQ2xpZW50Pjo6ZGVyZWY7Ci0KLXByaXZhdGU6Ci0gICAgV2ViQ29yZU5TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
Y2hhbGxlbmdlKQotICAgICAgICA6IG1fY2hhbGxlbmdlKGNoYWxsZW5nZSkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX2NoYWxsZW5nZSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlZkF1
dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBkZXJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSB1c2VDcmVkZW50aWFsOmNyZWRlbnRpYWwubnND
cmVkZW50aWFsKCkgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCld
OwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0
aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIGNvbnRpbnVlV2l0aG91dENyZWRl
bnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAg
fQotCi0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFtbbV9jaGFsbGVuZ2Ug
c2VuZGVyXSBjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07
Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1
bHRIYW5kbGluZyhjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBpZiAoW1ttX2NoYWxsZW5nZSBzZW5kZXJdIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IocGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OildKQotICAgICAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIHBlcmZvcm1EZWZhdWx0SGFu
ZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAg
fQotCi0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChbW21f
Y2hhbGxlbmdlIHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZWplY3RQcm90
ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6KV0pCi0gICAgICAgICAgICBbW21f
Y2hhbGxlbmdlIHNlbmRlcl0gcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hh
bGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gbV9jaGFsbGVuZ2U7Ci19OwotI2VuZGlmCi0KIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShN
ZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkp
CkBAIC0xNzg4LDEzICsxNzMyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKIAogYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yUmVzcG9uc2VU
b0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIG5z
Q2hhbGxlbmdlKQogewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgUmVmUHRyPFdlYkNvcmVOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50PiBjbGllbnQgPSBXZWJDb3JlTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDo6Y3JlYXRlKG5zQ2hhbGxlbmdlKTsKLSAgICBSZXRh
aW5QdHI8Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmPiBjZkNoYWxsZW5nZSA9IGFkb3B0Q0YoW25zQ2hh
bGxlbmdlIF9jcmVhdGVDRkF1dGhDaGFsbGVuZ2VdKTsKLSAgICBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSBjaGFsbGVuZ2UoY2ZDaGFsbGVuZ2UuZ2V0KCksIGNsaWVudC5nZXQoKSk7Ci0jZWxzZQog
ICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZShuc0NoYWxsZW5nZSk7Ci0jZW5k
aWYKIAogICAgIHJldHVybiBwbGF5ZXIoKS0+c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQppbmRleCA0ZTMw
MzY2ZDRlYjdmYWIxODhkZTRjYWU5MGY5ZDU1MTFmOTA2ZGFiLi4wOWQ1OWM3MTI4MDgzMWQ1ZTc0
NTU4MDI1ZDc0NGRhMzgzMjUwOWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQpAQCAtNTEsMTMgKzUxLDYg
QEAgV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrQ0ZVUkxSZXF1ZXN0QWxsb3dBbGxQb3N0Q2FjaGlu
ZykoQ0ZVUkxSZXF1ZXN0UmVmKTsKIFdFQkNPUkVfRVhQT1JUIENGQXJyYXlSZWYgKCp3a0NvcHlO
U1VSTFJlc3BvbnNlQ2VydGlmaWNhdGVDaGFpbikoTlNVUkxSZXNwb25zZSopOwogV0VCQ09SRV9F
WFBPUlQgQ0ZTdHJpbmdFbmNvZGluZyAoKndrR2V0V2ViRGVmYXVsdENGU3RyaW5nRW5jb2Rpbmcp
KHZvaWQpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLVdFQkNPUkVfRVhQT1JUIENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWYgKCp3a0dldERlZmF1bHRIVFRQQ29va2llU3RvcmFnZSkoKTsKLVdFQkNPUkVf
RVhQT1JUIFdLQ0ZVUkxDcmVkZW50aWFsUmVmICgqd2tDb3B5Q3JlZGVudGlhbEZyb21DRlBlcnNp
c3RlbnRTdG9yYWdlKShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2UpOwot
V0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q0ZVUkxSZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZm
KShDRk11dGFibGVVUkxSZXF1ZXN0UmVmLCBib29sKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3
a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbikoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiwgQ0ZNdXRh
YmxlVVJMUmVxdWVzdFJlZik7Ci0jZW5kaWYKLQogV0VCQ09SRV9FWFBPUlQgQ0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZiAoKndrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKShDRlN0cmluZ1JlZik7
CiBXRUJDT1JFX0VYUE9SVCBOU1VSTFJlcXVlc3QqICgqd2tDb3B5UmVxdWVzdFdpdGhTdG9yYWdl
U2Vzc2lvbikoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiwgTlNVUkxSZXF1ZXN0Kik7CiBXRUJDT1JF
X0VYUE9SVCBDRkhUVFBDb29raWVTdG9yYWdlUmVmICgqd2tDb3B5SFRUUENvb2tpZVN0b3JhZ2Up
KENGVVJMU3RvcmFnZVNlc3Npb25SZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3Mvd2FrL1dlYkNvcmVUaHJlYWQuaAppbmRleCBlZmI4ZDdhNDg2MGQwMDNmZjNkN2EwZTNhMWFh
ZDM3MjJkN2ZjOGVmLi42Mzc3YjhlNWRkZmU4ZDk4ZTFiZDBlYjEyMzczMTUxNzk0YmQ0MGFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQuaApA
QCAtODEsNyArODEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgV2ViVGhyZWFkU2hvdWxkWWllbGQo
dm9pZCkgeyByZXR1cm4gd2ViVGhyZWFkU2hvdWxkWWllbGQ7IH0KIHN0YXRpYyBpbmxpbmUgdm9p
ZCBXZWJUaHJlYWRTZXRTaG91bGRZaWVsZCgpIHsgd2ViVGhyZWFkU2hvdWxkWWllbGQgPSB0cnVl
OyB9CiAKIFdFQkNPUkVfRVhQT1JUIENGUnVuTG9vcFJlZiBXZWJUaHJlYWRSdW5Mb29wKHZvaWQp
OwotTlNSdW5Mb29wKiBXZWJUaHJlYWROU1J1bkxvb3Aodm9pZCk7CitXRUJDT1JFX0VYUE9SVCBO
U1J1bkxvb3AqIFdlYlRocmVhZE5TUnVuTG9vcCh2b2lkKTsKIFdlYlRocmVhZENvbnRleHQgKldl
YlRocmVhZEN1cnJlbnRDb250ZXh0KHZvaWQpOwogYm9vbCBXZWJUaHJlYWRDb250ZXh0SXNDdXJy
ZW50KHZvaWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UuaAppbmRleCA2MGI0ODkwNTczYWQ2YTg1ZDNiMGEzNzNjYzhjYTI1
ZmYzOWYwMjExLi5iNjU2NjEzMDdkMDYyYmQwYTk3Y2QxN2QxZGJhOGExMmY3ZGRlODU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLmgKQEAgLTI1NiwxMiArMjU2LDYgQEAgZXh0ZXJuIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0dl
dENGVVJMUmVzcG9uc2VIVFRQUmVzcG9uc2UpKENGVVJMUmVzcG9uc2VSZWYpOwogZXh0ZXJuIENG
U3RyaW5nUmVmICgqd2tDb3B5Q0ZVUkxSZXNwb25zZVN1Z2dlc3RlZEZpbGVuYW1lKShDRlVSTFJl
c3BvbnNlUmVmKTsKIGV4dGVybiB2b2lkICgqd2tTZXRDRlVSTFJlc3BvbnNlTUlNRVR5cGUpKENG
VVJMUmVzcG9uc2VSZWYsIENGU3RyaW5nUmVmIG1pbWVUeXBlKTsKIAotI2lmIFVTRShDRk5FVFdP
UkspCi1leHRlcm4gQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiAoKndrR2V0RGVmYXVsdEhUVFBDb29r
aWVTdG9yYWdlKSgpOwotZXh0ZXJuIFdLQ0ZVUkxDcmVkZW50aWFsUmVmICgqd2tDb3B5Q3JlZGVu
dGlhbEZyb21DRlBlcnNpc3RlbnRTdG9yYWdlKShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90
ZWN0aW9uU3BhY2UpOwotZXh0ZXJuIHZvaWQgKCp3a1NldENGVVJMUmVxdWVzdFNob3VsZENvbnRl
bnRTbmlmZikoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiwgYm9vbCk7Ci1leHRlcm4gdm9pZCAoKndr
U2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBDRk11dGFi
bGVVUkxSZXF1ZXN0UmVmKTsKLSNlbmRpZgogI2lmICFQTEFURk9STShJT1MpCiBleHRlcm4gdm9p
ZCAoKndrU2V0TWV0YWRhdGFVUkwpKE5TU3RyaW5nICp1cmxTdHJpbmcsIE5TU3RyaW5nICpyZWZl
cnJlciwgTlNTdHJpbmcgKnBhdGgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDE4OGY0MTI4MTIz
YTk2MDhhZGJmZmNjYmY2OWI4ZGFmMzAwMWNiYzcuLjAzMzkwY2U2OWM1YmZjZWYzYWI1MWU2YTE5
NjM3NDUwNmViYWVhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC04OCwxMyArODgsNiBAQCB2b2lkICgqd2tT
ZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJv
eHlIb3N0LCBDRk51bQogdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0
cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJp
bmcpOwogQ0ZIVFRQTWVzc2FnZVJlZiAoKndrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJl
YWRTdHJlYW1SZWYsIENGVVJMUmVmIHJlc3BvbnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3Qs
IENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiAoKndrR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKSgpOwotV0tDRlVS
TENyZWRlbnRpYWxSZWYgKCp3a0NvcHlDcmVkZW50aWFsRnJvbUNGUGVyc2lzdGVudFN0b3JhZ2Up
KENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSk7Ci12b2lkICgqd2tTZXRD
RlVSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYpKENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIGJv
b2wpOwotdm9pZCAoKndrU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKShDRlVSTFN0b3JhZ2VTZXNz
aW9uUmVmLCBDRk11dGFibGVVUkxSZXF1ZXN0UmVmKTsKLSNlbmRpZgotCiB2b2lkKiB3a0dldEh5
cGhlbmF0aW9uTG9jYXRpb25CZWZvcmVJbmRleDsKIAogYm9vbCAoKndrRXhlY3V0YWJsZVdhc0xp
bmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZCkodm9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcAppbmRleCA5M2M0
ZGRiYTQ4ZjlmZGIzNzFiOTVjYzI5NzBkYWM4Y2U4NTliYzM4Li4wMTI2ZGM3OTQ4MzFmNGFmZjZj
YWMxMjljMDJlOThjZWVlYzlkMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAK
IAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykgJiYg
IVBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25DRi5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFByb3RlY3Rpb25TcGFjZVByaXYu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggNTNlMjRjZDFlYWJmNzBiOGExZWMx
ZGI0YjY3ZjgzYzU4Yjk4MGM3MC4uMDkyMzkyZWUyNDc0Zjk0MTk2N2IxOTc5ZjRiNzJlZWU2NWEz
ZjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuaApAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2b2lkIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxDb25u
ZWN0aW9uICpjb25uZWN0aW9uKCkgY29uc3Q7CiAgICAgaWQgbWFrZURlbGVnYXRlKGJvb2wpOwpA
QCAtMjE2LDcgKzIxNiw3IEBAIHB1YmxpYzoKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29udGludWVXaWxsQ2FjaGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmKTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykK
KyNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2ls
bENhY2hlUmVzcG9uc2UoTlNDYWNoZWRVUkxSZXNwb25zZSAqKTsKICNlbmRpZgogCkBAIC0yMzYs
MTAgKzIzNiw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ0ZTdHJpbmdS
ZWYgc3luY2hyb25vdXNMb2FkUnVuTG9vcE1vZGUoKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
SU9TKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAgIHN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVm
IGNyZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwotI2VuZGlmCi0KICAgICB0eXBlZGVmIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+ICgq
QnVpbHRpbkNvbnN0cnVjdG9yKShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291
cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQnVpbHRp
bkNvbnN0cnVjdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvdG9jb2wsIEJ1aWx0aW5Db25zdHJ1
Y3Rvcik7CiAKQEAgLTI3NiwxMSArMjcyLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVD
RlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91
bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvciwgQ0ZEaWN0aW9uYXJ5UmVmIGNsaWVu
dFByb3BlcnRpZXMpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQ0ZORVRX
T1JLKQorI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGNyZWF0ZU5TVVJMQ29ubmVjdGlvbihp
ZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRD
b250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvcik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KElPUykgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQgY3Jl
YXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1bGluZ0JlaGF2aW9yLCBOU0Rp
Y3Rpb25hcnkgKmNvbm5lY3Rpb25Qcm9wZXJ0aWVzKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
CmluZGV4IDYxMjNmMTRhY2EyNDg0YmU0MmE2ZGYxMDBhZjNhYWMzMTliZDJkOWYuLjdhZTczY2Y3
MWRjMTE1ZjQwMWYyMDBiM2M0ODFmODg0OTc5YzczOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC0x
MzYsMTEgKzEzNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVzb3VyY2VSZXF1
ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZTsKICNlbmRpZgotI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAgICAgUmV0YWluUHRyPE5TVVJMQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgICAgICBS
ZXRhaW5QdHI8aWQ+IG1fZGVsZWdhdGU7Ci0jZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAgICAgYm9vbCBtX3N0YXJ0V2hlblNjaGVkdWxlZDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoQ0ZORVRXT1JLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAKaW5kZXggNzg4M2U0NjkxMTVkZTMy
Nzk0YzFiMmE0N2RiYjUwMzA4ZTEwOGVjOS4uZjg3NDVkNTQzYTkwOGM4MzMyY2E4YWYyZjlhMjE2
ZTk5NjllZGJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9BdXRoZW50aWNhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCkBAIC01MywxMyArNTMsOCBAQCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNw
YWNlJiBwcm90ZWN0aQogCiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNmQ2hhbGxlbmdlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50
KiBhdXRoZW50aWNhdGlvbkNsaWVudCkKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICA6IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShQcm90ZWN0aW9uU3BhY2UoQ0ZVUkxBdXRoQ2hhbGxlbmdl
R2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ3JlZGVudGlhbChDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRl
bnRpYWwoY2ZDaGFsbGVuZ2UpKSwKLSNlbHNlCiAgICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUJhc2UoY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2ZDaGFsbGVu
Z2UpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlKENGVVJMQXV0aENo
YWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbChjZkNoYWxsZW5nZSkpLAotI2VuZGlmCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJldmlv
dXNGYWlsdXJlQ291bnQoY2ZDaGFsbGVuZ2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChDRlVSTFJlc3BvbnNlUmVmKUNGVVJMQXV0aENoYWxsZW5nZUdldEZhaWx1cmVSZXNw
b25zZShjZkNoYWxsZW5nZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZV
UkxBdXRoQ2hhbGxlbmdlR2V0RXJyb3IoY2ZDaGFsbGVuZ2UpKQpAQCAtOTMsMTQgKzg4LDEwIEBA
IENGVVJMQXV0aENoYWxsZW5nZVJlZiBjcmVhdGVDRihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYgY29yZUNoYWxsZW5nZSkKIHsKICAgICAvLyBGSVhNRTogV2h5IG5vdCBjYWNoZSBDRlVS
TEF1dGhDaGFsbGVuZ2VSZWYgaW4gbV9jZkNoYWxsZW5nZT8gRm91bmRhdGlvbiBjb3VudGVycGFy
dCBkb2VzIHRoYXQuCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBDRlVSTEF1dGhDaGFsbGVu
Z2VSZWYgcmVzdWx0ID0gQ0ZVUkxBdXRoQ2hhbGxlbmdlQ3JlYXRlKDAsIGNvcmVDaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlKCkuY2ZTcGFjZSgpLCBjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVu
dGlhbCgpLmNmQ3JlZGVudGlhbCgpLAotI2Vsc2UKICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50
aWFsUmVmPiBjcmVkZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3Bv
c2VkQ3JlZGVudGlhbCgpKSk7CiAgICAgUmV0YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNlUmVm
PiBwcm90ZWN0aW9uU3BhY2UgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvdGVj
dGlvblNwYWNlKCkpKTsKIAogICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiByZXN1bHQgPSBDRlVS
TEF1dGhDaGFsbGVuZ2VDcmVhdGUoMCwgcHJvdGVjdGlvblNwYWNlLmdldCgpLCBjcmVkZW50aWFs
LmdldCgpLAotI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29yZUNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvcmVDaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuY2ZV
UkxSZXNwb25zZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
cmVDaGFsbGVuZ2UuZXJyb3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCmluZGV4IDk0N2ZiM2JmOWJlMjZmYjI3ZGI2
OTA0ZjBjZWRkM2U5ZTg3M2Q0MTguLmRhNGEwNjRmNzVhMDc3NmVjZDM1ZmQ2NmVmOGI4MDY1MWE1
MDUwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29v
a2llSmFyQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
Q29va2llSmFyQ0ZOZXQuY3BwCkBAIC00Miw3ICs0Miw3IEBACiAjaW5jbHVkZSA8d2luZG93cy5o
PgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXSU4pIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gMTA5MCkKKyNpZiBQTEFURk9STShXSU4pCiBl
bnVtIHsKICAgICBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9t
TWFpbkRvY3VtZW50RG9tYWluID0gMwogfTsKQEAgLTEwNSwxMyArMTA1LDkgQEAgc3RhdGljIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBjb3B5Q29va2llc0ZvclVSTFdpdGhGaXJzdFBhcnR5VVJMKGNv
bnN0IE5ldHdvcmtTdG8KIHsKICAgICBib29sIHNlY3VyZSA9IHVybC5wcm90b2NvbElzKCJodHRw
cyIpOwogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMCkKLSAgICByZXR1cm4gYWRvcHRDRihfQ0ZI
VFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9yVVJMV2l0aE1haW5Eb2N1bWVudFVSTChzZXNz
aW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsLmNyZWF0ZUNGVVJMKCkuZ2V0KCksIGZpcnN0
UGFydHkuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgc2VjdXJlKSk7Ci0jZWxzZQogICAgIC8vIF9DRkhU
VFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkxXaXRoTWFpbkRvY3VtZW50VVJMIGlzIG5v
dCBhdmFpbGFibGUgb24gb3RoZXIgcGxhdGZvcm1zLgogICAgIFVOVVNFRF9QQVJBTShmaXJzdFBh
cnR5KTsKICAgICByZXR1cm4gYWRvcHRDRihDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNG
b3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHVybC5jcmVhdGVDRlVSTCgpLmdl
dCgpLCBzZWN1cmUpKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgQ0ZBcnJheVJlZiBjcmVhdGVDb29r
aWVzKENGRGljdGlvbmFyeVJlZiBoZWFkZXJGaWVsZHMsIENGVVJMUmVmIHVybCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VD
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxT
dG9yYWdlQ0ZOZXQuY3BwCmluZGV4IDU2MDkyNTk3YWFjY2QyNzczZjY5OGIzNWJkNGZjNzE1ODcy
YzQwZTQuLjY5ZTMzMmMxM2IxNzBiYmIyOTkzZWE0YzFkNTc1ODg3YmU2ZWY1NTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VD
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50
aWFsU3RvcmFnZUNGTmV0LmNwcApAQCAtMzMsNDIgKzMzLDE4IEBACiAjaW5jbHVkZSAiUHJvdGVj
dGlvblNwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgUExBVEZPUk0o
Q09DT0EpCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2VsaWYgUExBVEZP
Uk0oV0lOKQorI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykK
LSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZS5oPgotI2VuZGlmCi0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ3JlZGVudGlhbCBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0
RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNw
YWNlKQogewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRp
YWxSZWY+IGNyZWRlbnRpYWxDRiA9IGFkb3B0Q0Yod2tDb3B5Q3JlZGVudGlhbEZyb21DRlBlcnNp
c3RlbnRTdG9yYWdlKHByb3RlY3Rpb25TcGFjZS5jZlNwYWNlKCkpKTsKLSAgICByZXR1cm4gQ3Jl
ZGVudGlhbChjcmVkZW50aWFsQ0YuZ2V0KCkpOwotI2Vsc2UKICAgICBSZXRhaW5QdHI8Q0ZVUkxQ
cm90ZWN0aW9uU3BhY2VSZWY+IHByb3RlY3Rpb25TcGFjZUNGID0gYWRvcHRDRihjcmVhdGVDRihw
cm90ZWN0aW9uU3BhY2UpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVk
ZW50aWFsQ0YgPSBhZG9wdENGKHdrQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFn
ZShwcm90ZWN0aW9uU3BhY2VDRi5nZXQoKSkpOwogICAgIHJldHVybiBjb3JlKGNyZWRlbnRpYWxD
Ri5nZXQoKSk7Ci0jZW5kaWYKLX0KLQotI2lmIFBMQVRGT1JNKElPUykKLXZvaWQgQ3JlZGVudGlh
bFN0b3JhZ2U6OnNhdmVUb1BlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYg
cHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQotewotICAgIFJl
dGFpblB0cjxDRlVSTENyZWRlbnRpYWxTdG9yYWdlUmVmPiBzdG9yYWdlQ0YgPSBhZG9wdENGKENG
VVJMQ3JlZGVudGlhbFN0b3JhZ2VDcmVhdGUoMCkpOwotCi0gICAgaWYgKGNyZWRlbnRpYWwucGVy
c2lzdGVuY2UoKSA9PSBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSB7Ci0gICAgICAgIENyZWRl
bnRpYWwgc2Vzc2lvbkNyZWRlbnRpYWwoY3JlZGVudGlhbCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNl
Rm9yU2Vzc2lvbik7Ci0gICAgICAgIENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VTZXREZWZhdWx0Q3Jl
ZGVudGlhbEZvclByb3RlY3Rpb25TcGFjZShzdG9yYWdlQ0YuZ2V0KCksIHNlc3Npb25DcmVkZW50
aWFsLmNmQ3JlZGVudGlhbCgpLCBwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKTsKLSAgICB9IGVs
c2UKLSAgICAgICAgQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9y
UHJvdGVjdGlvblNwYWNlKHN0b3JhZ2VDRi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwo
KSwgcHJvdGVjdGlvblNwYWNlLmNmU3BhY2UoKSk7CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VFcnJvci5oCmluZGV4IDE3MDNjYzkxZjY4YjJhNWU2NGY4NzkyM2NlNmZiYTFkMjdk
ZDI0MWQuLjFiNGFkNzMwNjZjNzcxOGEwY2E1MTQ1MDBlZWQ0ZjdjNGQ5MTQ0ODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCkBA
IC02MSwxNiArNjEsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIENGRXJyb3JSZWYg
Y2ZFcnJvcigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIENGRXJyb3JSZWYo
KSBjb25zdDsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaWYgUExBVEZPUk0oV0lOKQorI2lmIFVT
RShDRk5FVFdPUkspICYmIFBMQVRGT1JNKFdJTikKICAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0
cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNv
bnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24sIENGRGF0YVJlZiBjZXJ0aWZpY2F0ZSk7
CiAgICAgUENDRVJUX0NPTlRFWFQgY2VydGlmaWNhdGUoKSBjb25zdDsKICAgICB2b2lkIHNldENl
cnRpZmljYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUVycm9yKENGU3RyZWFt
RXJyb3IgZXJyb3IpOwotICAgIENGU3RyZWFtRXJyb3IgY2ZTdHJlYW1FcnJvcigpIGNvbnN0Owot
ICAgIG9wZXJhdG9yIENGU3RyZWFtRXJyb3IoKSBjb25zdDsKLSNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvcihOU0Vycm9yICopOwpA
QCAtODgsOSArODMsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kYXRhSXNVcFRvRGF0ZTsKICNp
ZiBVU0UoQ0ZORVRXT1JLKQogICAgIG11dGFibGUgUmV0YWluUHRyPENGRXJyb3JSZWY+IG1fcGxh
dGZvcm1FcnJvcjsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtdXRhYmxlIFJldGFpblB0cjxO
U0Vycm9yPiBtX3BsYXRmb3JtTlNFcnJvcjsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikKICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX2NlcnRpZmljYXRlOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAK
aW5kZXggMTMxZmJiMDQ2MTE3MDZmNjRkODUwYTFjNTBlMDVlMTRhMmM2ZTEzMy4uYTQ3Yjg5ODJk
NTZlY2U0NjNmNDVjZWQwZTk0MGZhNDY2MjNiYjJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMTc3LDUy
ICsxNzcsNiBAQCBSZXNvdXJjZUVycm9yOjpvcGVyYXRvciBDRkVycm9yUmVmKCkgY29uc3QKICAg
ICByZXR1cm4gY2ZFcnJvcigpOwogfQogCi0vLyBGSVhNRTogT25jZSA8cmRhcjovL3Byb2JsZW0v
NTA1MDg0MT4gaXMgZml4ZWQgd2UgY2FuIHJlbW92ZSB0aGlzIGNvbnN0cnVjdG9yLgotUmVzb3Vy
Y2VFcnJvcjo6UmVzb3VyY2VFcnJvcihDRlN0cmVhbUVycm9yIGVycm9yKQotICAgIDogbV9kYXRh
SXNVcFRvRGF0ZSh0cnVlKQotewotICAgIG1faXNOdWxsID0gZmFsc2U7Ci0gICAgbV9lcnJvckNv
ZGUgPSBlcnJvci5lcnJvcjsKLQotICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKLSAgICBjYXNl
IGtDRlN0cmVhbUVycm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9t
RXJyb3JEb21haW4iOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluUE9TSVg6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiI7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5NYWNPU1N0YXR1czoKLSAg
ICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotfQotCi1DRlN0cmVhbUVycm9yIFJlc291cmNlRXJyb3I6OmNmU3RyZWFtRXJyb3Io
KSBjb25zdAotewotICAgIGxhenlJbml0KCk7Ci0KLSAgICBDRlN0cmVhbUVycm9yIHJlc3VsdDsK
LSAgICByZXN1bHQuZXJyb3IgPSBtX2Vycm9yQ29kZTsKLQotICAgIGlmIChtX2RvbWFpbiA9PSAi
TlNDdXN0b21FcnJvckRvbWFpbiIpCi0gICAgICAgIHJlc3VsdC5kb21haW4gPSBrQ0ZTdHJlYW1F
cnJvckRvbWFpbkN1c3RvbTsKLSAgICBlbHNlIGlmIChtX2RvbWFpbiA9PSAiTlNQT1NJWEVycm9y
RG9tYWluIikKLSAgICAgICAgcmVzdWx0LmRvbWFpbiA9IGtDRlN0cmVhbUVycm9yRG9tYWluUE9T
SVg7Ci0gICAgZWxzZSBpZiAobV9kb21haW4gPT0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiIpCi0g
ICAgICAgIHJlc3VsdC5kb21haW4gPSBrQ0ZTdHJlYW1FcnJvckRvbWFpbk1hY09TU3RhdHVzOwot
ICAgIGVsc2UgewotICAgICAgICByZXN1bHQuZG9tYWluID0ga0NGU3RyZWFtRXJyb3JEb21haW5D
dXN0b207Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLVJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENGU3RyZWFtRXJyb3IoKSBj
b25zdAotewotICAgIHJldHVybiBjZlN0cmVhbUVycm9yKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApp
bmRleCA1YzE0MjA3ZDQxYWEzNmY3OTBiZWVjN2MzM2Y0N2JmMmE3YzdkMjUxLi41ZGYxZDAwZDYz
ZWRlOWNjMmEyNDJmMWQyYTQyNzU0Nzc3MmNkNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAg
LTUzLDE2ICs1Myw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oIgot
I2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
I2luY2x1ZGUgIldlYkNvcmVVUkxSZXNwb25zZS5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRlVS
TENvbm5lY3Rpb25Qcml2Lmg+Ci0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdFByaXYu
aD4KLSNlbmRpZgotI2VuZGlmCi0KICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2ViS2l0
U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2luY2x1ZGUgPHByb2Nl
c3MuaD4KQEAgLTIxOSwxNCArMjA5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZV
UkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wKICAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShwcm9wZXJ0aWVzRGljdGlvbmFyeS5nZXQoKSwga0NGVVJMQ29u
bmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMsIHN0cmVhbVByb3BlcnRpZXMpOwogICAgIENG
UmVsZWFzZShzdHJlYW1Qcm9wZXJ0aWVzKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlm
IChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcykKLSAgICAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdh
dGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZSh0aGlzKSk7Ci0gICAgZWxzZQotICAgICAgICBkLT5tX2Nvbm5lY3Rp
b25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUodGhpcykpOwotI2Vsc2UKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxl
Z2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGUodGhpcykpOwotI2VuZGlmCiAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUt
PnNldHVwUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAogICAgIENGVVJMQ29ubmVjdGlvbkNsaWVu
dF9WNiBjbGllbnQgPSBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+bWFrZUNvbm5lY3Rpb25DbGll
bnQoKTsKQEAgLTM2OCwxMiArMzUxLDkgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxl
UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2gKIAogICAg
IGlmICghZC0+bV91c2VyLmlzTnVsbCgpICYmICFkLT5tX3Bhc3MuaXNOdWxsKCkpIHsKICAgICAg
ICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihD
RlVSTENyZWRlbnRpYWxDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZC0+bV91c2VyLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGQtPm1fcGFzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwLCBr
Q0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IENyZWRlbnRpYWwoY2ZDcmVkZW50aWFsLmdl
dCgpKTsKLSNlbHNlCisKICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gY29yZShjZkNy
ZWRlbnRpYWwuZ2V0KCkpOwotI2VuZGlmCi0gICAgICAgIAorCiAgICAgICAgIFVSTCB1cmxUb1N0
b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXND
b2RlKCkgPT0gNDAxKQogICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGNoYWxsZW5nZS5mYWlsdXJl
UmVzcG9uc2UoKS51cmwoKTsKQEAgLTQwMiwxMiArMzgyLDggQEAgYm9vbCBSZXNvdXJjZUhhbmRs
ZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2gKICAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGNyZWRlbnRpYWwgYmFjaywg
cG9zc2libHkgYWRkaW5nIGl0IGFzIGEgZGVmYXVsdCBmb3IgdGhpcyBkaXJlY3RvcnkuCiAgICAg
ICAgICAgICAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFs
U3RvcmFnZSgpLnNldChjcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIGNo
YWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKSk7CiAgICAgICAgICAgICAgICAgfQotI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgICAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRl
bnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBj
aGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2Vsc2UKICAgICAgICAgICAgICAg
ICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNy
ZWF0ZUNGKGNyZWRlbnRpYWwpKTsKICAgICAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VD
cmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFs
bGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2VuZGlmCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ1NywyMCArNDMzLDEy
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlCiAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFn
ZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLnNldCh3ZWJDcmVkZW50aWFsLCBjaGFsbGVu
Z2UucHJvdGVjdGlvblNwYWNlKCksIHVybFRvU3RvcmUpOwogCiAgICAgICAgIGlmIChkLT5tX2Nv
bm5lY3Rpb24pIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgIENGVVJMQ29ubmVj
dGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCB3ZWJDcmVkZW50aWFsLmNm
Q3JlZGVudGlhbCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2Vsc2UK
ICAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9
IGFkb3B0Q0YoY3JlYXRlQ0Yod2ViQ3JlZGVudGlhbCkpOwogICAgICAgICAgICAgQ0ZVUkxDb25u
ZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5n
ZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRpZgogICAgICAg
ICB9CiAgICAgfSBlbHNlIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKLSNpZiBQTEFURk9STShDT0NP
QSkKLSAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24u
Z2V0KCksIGNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFs
bGVuZ2VSZWYoKSk7Ci0jZWxzZQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVm
PiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKICAgICAgICAg
Q0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3Jl
ZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRp
ZgogICAgIH0KIAogICAgIGNsZWFyQXV0aGVudGljYXRpb24oKTsKQEAgLTYxMSwzMCArNTc5LDYg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVm
ZXJzKQogICAgICAgICBDRlVSTENvbm5lY3Rpb25SZXN1bWUoZC0+bV9jb25uZWN0aW9uLmdldCgp
KTsKIH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2NoZWR1
bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQotewotICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gcGFp
ci5ydW5Mb29wKCk7Ci0gICAgaWYgKCFydW5Mb29wKQotICAgICAgICByZXR1cm47Ci0KLSAgICBD
RlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29wKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwg
cnVuTG9vcCwgcGFpci5tb2RlKCkpOwotICAgIGlmIChkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCkg
ewotICAgICAgICBDRlVSTENvbm5lY3Rpb25TdGFydChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOwot
ICAgICAgICBkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCA9IGZhbHNlOwotICAgIH0KLX0KLQotdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCi17Ci0gICAg
Q0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBwYWlyLnJ1bkxvb3AoKTsKLSAgICBpZiAoIXJ1bkxvb3Ap
Ci0gICAgICAgIHJldHVybjsKLQotICAgIENGVVJMQ29ubmVjdGlvblVuc2NoZWR1bGVGcm9tUnVu
TG9vcChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIHJ1bkxvb3AsIHBhaXIubW9kZSgpKTsKLX0KLSNl
bmRpZgotCiBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIFJlc291cmNlSGFuZGxlOjpjdXJyZW50UmVx
dWVzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGQtPm1fY3VycmVudFJlcXVlc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAppbmRleCA0Zjdh
NzkyOWYxYjExZDg4NGQ4ZDA0NzY4MjExMmFkYjY2ZTliYmQ1Li5hMWUxMzgwOWU0NzhiZWY0ZmVh
ZTczODBkMmFjZGNlYTRkYTExMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogCi0jaWYgUExB
VEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2VuZGlm
Ci0KICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dl
YktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA4YTVlZjA5MDRkM2E2
MjVkMzU2MDdjNmE2NzdlZDZlZWZkOWE2Yzc5Li4xZDBkN2QwMjUyMDMzN2NkMjcwZWRiZGY0MTc4
MjZiNTE4ZjY4OGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTYzLDEyICs2Myw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgfQogICAgICAgICAKICNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZVJlcXVlc3QoTlNVUkxS
ZXF1ZXN0ICopOwotICAgICAgICB2b2lkIHVwZGF0ZU5TVVJMUmVxdWVzdCgpOwotICAgICAgICB2
b2lkIGNsZWFyT3JVcGRhdGVOU1VSTFJlcXVlc3QoKTsKLSNlbmRpZgotCiAgICAgICAgIFJlc291
cmNlUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0KQogICAgICAgICAgICAgOiBSZXNv
dXJjZVJlcXVlc3RCYXNlKCkKICAgICAgICAgICAgICwgbV9jZlJlcXVlc3QoY2ZSZXF1ZXN0KQpA
QCAtODgsMTEgKzgyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGFwcGx5
V2ViQXJjaGl2ZUhhY2tGb3JNYWlsKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotICAgICAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURh
dGEoKSBjb25zdCB7IHJldHVybiBtX2h0dHBCb2R5IHx8IG1fY2ZSZXF1ZXN0OyB9Ci0jZWxzZQog
ICAgICAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVy
biBtX2h0dHBCb2R5IHx8IG1fbnNSZXF1ZXN0OyB9Ci0jZW5kaWYKICAgICAgICAgV0VCQ09SRV9F
WFBPUlQgTlNVUkxSZXF1ZXN0ICpuc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kpIGNv
bnN0OwogCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDRlN0cmluZ1JlZiBpc1VzZXJJ
bml0aWF0ZWRLZXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggYWNjMWQ0NTY5NzVjYzEyZjM5YTMzOGRiYjI0
Mzk0MWU1N2MyNmQxYS4uYjc5ZjdjNDBlZDBjOTRkMWNiZWM5ZTU2ODYzYWM5ZTU2NDFiOTg4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJl
c3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlc3BvbnNlLmgKQEAgLTUzLDkgKzUzLDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9p
c051bGwgPSAhY2ZSZXNwb25zZTsKICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgV0VC
Q09SRV9FWFBPUlQgUmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlICopOwotI2VuZGlmCiAj
ZWxzZQogICAgIFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkKICAg
ICAgICAgOiBtX2luaXRMZXZlbChVbmluaXRpYWxpemVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3Bw
CmluZGV4IDRiYWU3NGU4MzgxNmMxOTRlZGMxNTRkODRjMmRlOGY2ZGQxNmZjOTUuLjFhYTgzN2Zj
NzJiNzgyM2VhN2JkZThjYjkwNjM5OGZlYTc1ZDVhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5j
cHAKQEAgLTMzLDEwICszMyw2IEBACiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVzcG9uc2VQ
cml2Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
Ci0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIENGU3RyaW5nUmVmIGNvbnN0IGNvbW1vbkhlYWRlckZpZWxk
c1tdID0gewpAQCAtNDYsMTMgKzQyLDkgQEAgc3RhdGljIENGU3RyaW5nUmVmIGNvbnN0IGNvbW1v
bkhlYWRlckZpZWxkc1tdID0gewogQ0ZVUkxSZXNwb25zZVJlZiBSZXNvdXJjZVJlc3BvbnNlOjpj
ZlVSTFJlc3BvbnNlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051
bGwpIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgbnNVUkxSZXNwb25zZSgpOwotI2Vs
c2UKICAgICAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBtX3VybC5jcmVhdGVDRlVSTCgp
OwogICAgICAgICAvLyBGSVhNRTogVGhpcyBjcmVhdGVzIGEgdmVyeSBpbmNvbXBsZXRlIENGVVJM
UmVzcG9uc2UsIHdoaWNoIGRvZXMgbm90IGV2ZW4gaGF2ZSBhIHN0YXR1cyBjb2RlLgogICAgICAg
ICBtX2NmUmVzcG9uc2UgPSBhZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJsLmdldCgp
LCBtX21pbWVUeXBlLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXhwZWN0ZWRD
b250ZW50TGVuZ3RoLCBtX3RleHRFbmNvZGluZ05hbWUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOwotI2VuZGlmCiAgICAgfQogCiAg
ICAgcmV0dXJuIG1fY2ZSZXNwb25zZS5nZXQoKTsKQEAgLTExNSw5ICsxMDcsNiBAQCB2b2lkIFJl
c291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoSW5pdExldmVsIGluaXRMZXZlbCkKIAog
Q2VydGlmaWNhdGVJbmZvIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZv
KCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICByZXR1cm4gQ2VydGlmaWNhdGVJ
bmZvKGFkb3B0Q0Yod2tDb3B5TlNVUkxSZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4obnNVUkxSZXNw
b25zZSgpKSkpOwotI2VuZGlmCiAgICAgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRp
YWxDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50
aWFsQ29jb2EuaAppbmRleCBmMmNkOTYzMmMyMGU2NTU3MGRhY2U5YjljMDkxMTA3NzZkNzZlMzE3
Li45NDM0ZDNhN2ExYTUwYjU1ZDU4ZDkwYzZlZGM1MmUyN2Q2MDk1OWY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29h
LmgKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQmFzZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi10eXBlZGVmIGNv
bnN0IHN0cnVjdCBfQ0ZVUkxDcmVkZW50aWFsKiBDRlVSTENyZWRlbnRpYWxSZWY7Ci0jZW5kaWYK
LQogT0JKQ19DTEFTUyBOU1VSTENyZWRlbnRpYWw7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTUyLDE4ICs0OCwxMiBAQCBwdWJsaWM6CiAKICAgICBDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRp
YWwmLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBl
eHBsaWNpdCBDcmVkZW50aWFsKENGVVJMQ3JlZGVudGlhbFJlZik7Ci0jZW5kaWYKICAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBDcmVkZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCiAgICAgYm9vbCBlbmNvZGlu
Z1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9uc0NyZWRlbnRpYWwgJiYg
ZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YShtX25zQ3JlZGVudGlhbC5nZXQoKSk7IH0KIAot
I2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNmQ3JlZGVudGlhbCgp
IGNvbnN0OwotI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxDcmVkZW50aWFsICpuc0Ny
ZWRlbnRpYWwoKSBjb25zdDsKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25z
dCBDcmVkZW50aWFsJiwgY29uc3QgQ3JlZGVudGlhbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbQppbmRleCBk
Njk2MWI2NjUyYTBmYWQyYjFkODZlMTg4NWFmNTI1MTI4OWEyMzcxLi43ZTA1YzQ2M2E1NWFlM2Ni
Mjg5NjU2YmExMzFkOWUyMjQwYzAwNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbQpAQCAtMjYsMTMgKzI2
LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQ3JlZGVudGlhbENvY29hLmgiCiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotQGludGVyZmFjZSBOU1VSTENyZWRlbnRpYWwgKFdlYkRldGFp
bHMpCi0tIChpZClfaW5pdFdpdGhDRlVSTENyZWRlbnRpYWw6KENGVVJMQ3JlZGVudGlhbFJlZilj
cmVkZW50aWFsOwotLSAoQ0ZVUkxDcmVkZW50aWFsUmVmKSBfQ0ZVUkxDcmVkZW50aWFsOwotQGVu
ZAotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE5TVVJMQ3JlZGVudGlh
bFBlcnNpc3RlbmNlIHRvTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UoQ3JlZGVudGlhbFBlcnNp
c3RlbmNlIHBlcnNpc3RlbmNlKQpAQCAtODQsMjYgKzc3LDEyIEBAIENyZWRlbnRpYWw6OkNyZWRl
bnRpYWwoY29uc3QgQ3JlZGVudGlhbCYgb3JpZ2luYWwsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBw
ZXJzaXN0CiAgICAgfQogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNyZWRlbnRpYWw6OkNyZWRl
bnRpYWwoQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWRlbnRpYWwpCi0gICAgOiBDcmVkZW50aWFsKGFk
b3B0TlMoW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIF9pbml0V2l0aENGVVJMQ3JlZGVudGlhbDpj
cmVkZW50aWFsXSkuZ2V0KCkpCi17Ci19Ci0jZW5kaWYKLQogQ3JlZGVudGlhbDo6Q3JlZGVudGlh
bChOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpCiAgICAgOiBDcmVkZW50aWFsQmFzZShjcmVk
ZW50aWFsLnVzZXIsIGNyZWRlbnRpYWwucGFzc3dvcmQsIHRvQ3JlZGVudGlhbFBlcnNpc3RlbmNl
KGNyZWRlbnRpYWwucGVyc2lzdGVuY2UpKQogICAgICwgbV9uc0NyZWRlbnRpYWwoY3JlZGVudGlh
bCkKIHsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi1DRlVSTENyZWRlbnRpYWxSZWYgQ3JlZGVu
dGlhbDo6Y2ZDcmVkZW50aWFsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW25zQ3JlZGVudGlhbCgp
IF9DRlVSTENyZWRlbnRpYWxdOwotfQotI2VuZGlmCi0KIE5TVVJMQ3JlZGVudGlhbCAqQ3JlZGVu
dGlhbDo6bnNDcmVkZW50aWFsKCkgY29uc3QKIHsKICAgICBpZiAobV9uc0NyZWRlbnRpYWwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rp
b25TcGFjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1By
b3RlY3Rpb25TcGFjZUNvY29hLmgKaW5kZXggNzQ4ODJkN2E4OGI3ODMxYjQxNGY5MGRmNzFkMTVk
ODkyNDRlMjE1Mi4uYjg2YWIwM2Q0ZmYzMjM1MzQwM2ZmMDdmYWE4MTgxZTUyOTgwZjdjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9u
U3BhY2VDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UHJvdGVjdGlvblNwYWNlQ29jb2EuaApAQCAtMjksMTAgKzI5LDYgQEAKICNpbmNsdWRlICJQcm90
ZWN0aW9uU3BhY2VCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNF
KENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IF9DRlVSTFByb3RlY3Rpb25TcGFjZSogQ0ZVUkxQ
cm90ZWN0aW9uU3BhY2VSZWY7Ci0jZW5kaWYKLQogT0JKQ19DTEFTUyBOU1VSTFByb3RlY3Rpb25T
cGFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsOSArNDMsNiBAQCBwdWJsaWM6CiAK
ICAgICBQcm90ZWN0aW9uU3BhY2UoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIGRlbGV0
ZWRWYWx1ZSkgOiBQcm90ZWN0aW9uU3BhY2VCYXNlKGRlbGV0ZWRWYWx1ZSkgeyB9CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIGV4cGxpY2l0IFByb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rp
b25TcGFjZVJlZik7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBQcm90ZWN0
aW9uU3BhY2UoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKik7CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0
Zm9ybUNvbXBhcmUoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBhLCBjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmIGIpOwpAQCAtNTgsOSArNTEsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KCkgY29uc3Q7CiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotICAgIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNmU3BhY2UoKSBjb25zdDsKLSNlbmRp
ZgogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUHJvdGVjdGlvblNwYWNlICpuc1NwYWNlKCkgY29u
c3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5tbQppbmRleCBhZjRjNGUwNTc2
OGMwOGY2M2I2ZGEwZGE5OTkzNDc4NWExM2ZiOGEzLi5kYjFmYjUxYmY5OTAyN2JjMmYzNTMwYTVk
NTE4YjBmZjdiNzg2MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0KQEAgLTI2LDIyICsy
Niw4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlByb3RlY3Rpb25TcGFjZUNvY29h
LmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQGludGVyZmFjZSBOU1VSTFByb3RlY3Rpb25TcGFj
ZSAoV2ViRGV0YWlscykKLS0gKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKSBfQ0ZVUkxQcm90ZWN0
aW9uU3BhY2U7Ci0tIChpZClfaW5pdFdpdGhDRlVSTFByb3RlY3Rpb25TcGFjZTooQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VSZWYpY2ZQcm90U3BhY2U7Ci1AZW5kCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLVByb3RlY3Rpb25TcGFjZTo6UHJvdGVjdGlv
blNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHNwYWNlKQotICAgIDogUHJvdGVjdGlvblNw
YWNlKGFkb3B0TlMoW1tOU1VSTFByb3RlY3Rpb25TcGFjZSBhbGxvY10gX2luaXRXaXRoQ0ZVUkxQ
cm90ZWN0aW9uU3BhY2U6c3BhY2VdKS5nZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBzdGF0aWMgUHJv
dGVjdGlvblNwYWNlU2VydmVyVHlwZSB0eXBlKE5TVVJMUHJvdGVjdGlvblNwYWNlICpzcGFjZSkK
IHsKICAgICBpZiAoW3NwYWNlIGlzUHJveHldKSB7CkBAIC0xMDUsMTMgKzkxLDYgQEAgUHJvdGVj
dGlvblNwYWNlOjpQcm90ZWN0aW9uU3BhY2UoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKnNwYWNlKQog
ICAgIG1fbnNTcGFjZSA9IHNwYWNlOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJMUHJv
dGVjdGlvblNwYWNlUmVmIFByb3RlY3Rpb25TcGFjZTo6Y2ZTcGFjZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIFtuc1NwYWNlKCkgX0NGVVJMUHJvdGVjdGlvblNwYWNlXTsKLX0KLSNlbmRpZgotCiBO
U1VSTFByb3RlY3Rpb25TcGFjZSAqUHJvdGVjdGlvblNwYWNlOjpuc1NwYWNlKCkgY29uc3QKIHsK
ICAgICBpZiAobV9uc1NwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggM2IxYjBh
MmY4NzQ3NDdiMzhhMmM4MzgwZmI2NTU5ODZiZGViOWVjYy4uOWY1ZDAyYWI2NWJjOGNhNDMyYzgy
NDI4NGU4YmRjMDFhYjdhMzk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBAIC01Mywx
NSArNTMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBOU1VSTFJlcXVlc3QgKlJlc291cmNlUmVx
dWVzdDo6bnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNvbnN0
CiB7CiAgICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KGJvZHlQb2xpY3kpOwotI2lmIFVTRShDRk5F
VFdPUkspCi0gICAgaWYgKCFtX25zUmVxdWVzdCkKLSAgICAgICAgY29uc3RfY2FzdDxSZXNvdXJj
ZVJlcXVlc3QqPih0aGlzKS0+dXBkYXRlTlNVUkxSZXF1ZXN0KCk7Ci0jZW5kaWYKICAgICByZXR1
cm4gW1ttX25zUmVxdWVzdC5nZXQoKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAotI2lmICFV
U0UoQ0ZORVRXT1JLKQotCiBDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJl
cXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9keVBvbGljeSkgY29uc3QKIHsKICAgICByZXR1
cm4gW25zVVJMUmVxdWVzdChib2R5UG9saWN5KSBfQ0ZVUkxSZXF1ZXN0XTsKQEAgLTIyMiw4ICsy
MTYsNiBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24oQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbikKICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMo
d2tDb3B5UmVxdWVzdFdpdGhTdG9yYWdlU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbiwgbV9uc1JlcXVl
c3QuZ2V0KCkpKTsKIH0KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAppbmRleCAwZDdlODI1ZWYyYjEx
ODg2YjM4ZGJiM2NiOTNlMDAwYjhiZDJlZWU1Li5kMTNmY2ZjZWNlNTYzMzUxNTA5M2QyMTAyMjk0
NzhkMmQ5MzlkNjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9RdWlja0xvb2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2suaApAQCAtNDQsMTEgKzQ0LDYgQEAgT0JKQ19DTEFTUyBOU1VSTFJlcXVlc3Q7
CiBPQkpDX0NMQVNTIE5TVVJMUmVzcG9uc2U7CiBPQkpDX0NMQVNTIFFMUHJldmlld0NvbnZlcnRl
cjsKIAotI2lmIFVTRShDRk5FVFdPUkspCi10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxSZXNwb25zZSog
Q0ZVUkxSZXNwb25zZVJlZjsKLXR5cGVkZWYgc3RydWN0IF9DRlVSTENvbm5lY3Rpb24qIENGVVJM
Q29ubmVjdGlvblJlZjsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFF1
aWNrTG9va0hhbmRsZUNsaWVudDsKQEAgLTgyLDkgKzc3LDYgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3VsZENyZWF0ZUZvck1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0
ZShSZXNvdXJjZUhhbmRsZSosIE5TVVJMQ29ubmVjdGlvbiAqLCBOU1VSTFJlc3BvbnNlICosIGlk
IGRlbGVnYXRlKTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VIYW5kbGUqLCBTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqLCBDRlVSTFJlc3BvbnNlUmVmKTsK
LSNlbmRpZgogICAgIC8vIEZJWE1FOiBVc2Ugb2YgUmVzb3VyY2VMb2FkZXIgaGVyZSBpcyBhIHBs
YXRmb3JtIHZpb2xhdGlvbi4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogCkBAIC05Niw5ICs4OCw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRpZEZhaWwoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVzcG9uc2Ug
Km5zUmVzcG9uc2UoKTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJMUmVzcG9uc2VSZWYg
Y2ZSZXNwb25zZSgpOwotI2VuZGlmCiAKICAgICB2b2lkIHNldENsaWVudChQYXNzUmVmUHRyPFF1
aWNrTG9va0hhbmRsZUNsaWVudD4gY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQppbmRl
eCAxN2VkODY0NmE1OTQ0YTBmMDFlZDU2ODcwOTdkOTdjYWM3MjA4NGY0Li5kZTA0MDRlMjAyNTlj
ZTcxMWY4ODZlNjFkNzlkOGYwNTUzMThiMzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbXBv
cnQgIkZpbGVTeXN0ZW1JT1MuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk5TRmls
ZU1hbmFnZXJTUEkuaCIKLSNpbXBvcnQgIlF1aWNrTG9va1NvZnRMaW5rLmgiCiAjaW1wb3J0ICJS
ZXNvdXJjZUVycm9yLmgiCiAjaW1wb3J0ICJSZXNvdXJjZUhhbmRsZS5oIgogI2ltcG9ydCAiUmVz
b3VyY2VMb2FkZXIuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oIgog
I2ltcG9ydCAiU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LmgiCisjaW1wb3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgiCiAjaW1wb3J0
ICJXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC00NiwxNCArNDYsNyBAQAog
I2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvbi5o
PgotCi1AaW50ZXJmYWNlIE5TVVJMUmVzcG9uc2UgKFF1aWNrTG9va0RldGFpbHMpCi0rKE5TVVJM
UmVzcG9uc2UgKilfcmVzcG9uc2VXaXRoQ0ZVUkxSZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJlZily
ZXNwb25zZTsKLS0oQ0ZVUkxSZXNwb25zZVJlZilfQ0ZVUkxSZXNwb25zZTsKLUBlbmQKLSNlbmRp
ZgorI2ltcG9ydCAiUXVpY2tMb29rU29mdExpbmsuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKQEAgLTE5Miw4MyArMTg1LDcgQEAgY29uc3QgY2hhciogV2ViQ29yZTo6UUxQcmV2aWV3
UHJvdG9jb2woKQogICAgIHJldHVybiBwcmV2aWV3UHJvdG9jb2wuZ2V0KCkuZGF0YSgpOwogfQog
Ci0jaWYgVVNFKENGTkVUV09SSykKLS8vIFRoZSB3YXkgUXVpY2tMb29rIHdvcmtzIGlzIHdlIHBh
c3MgaXQgYW4gTlNVUkxDb25uZWN0aW9uRGVsZWdhdGUgY2FsbGJhY2sgb2JqZWN0IGF0IGNyZWF0
aW9uCi0vLyB0aW1lLiBUaGVuIHdlIHBhc3MgaXQgYWxsIHRoZSBkYXRhIGFzIHdlIHJlY2VpdmUg
aXQuIE9uY2Ugd2UndmUgZG93bmxvYWRlZCB0aGUgZnVsbCBVUkwsCi0vLyBRdWlja0xvb2sgdHVy
bnMgYXJvdW5kIGFuZCBzZW5kIHVzLCB0aHJvdWdoIHRoaXMgZGVsZWdhdGUsIHRoZSBIVE1MIHZl
cnNpb24gb2YgdGhlIGZpbGUgd2hpY2ggd2UKLS8vIHBhc3Mgb24gdG8gV2ViQ29yZS4gVGhlIGZs
YWcgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciBpbiBRdWlja0xvb2tIYW5kbGUg
ZGVjaWRlcwotLy8gd2hldGhlciB0byBwYXNzIHRoZSBkYXRhIHRvIFF1aWNrTG9vayBvciBXZWJD
b3JlLgotLy8KLS8vIFRoaXMgd29ya3MgZmluZSB3aGVuIHVzaW5nIE5TIEFQSXMsIGJ1dCB3aGVu
IHVzaW5nIENGTmV0d29yaywgd2UgZG9uJ3QgaGF2ZSBhIE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LgotLy8gU28gd2UgY3JlYXRlIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgYXMgYW4gaW50
ZXJtZWRpYXRlIGRlbGVnYXRlIG9iamVjdCBhbmQgcGFzcyBpdCB0bwotLy8gUUxQcmV2aWV3Q29u
dmVydGVyLiBUaGUgcHJveHkgZGVsZWdhdGUgdGhlbiBmb3J3YXJkcyB0aGUgbWVzc2FnZXMgb24g
dG8gdGhlIENGTmV0d29yayBjb2RlLgotQGludGVyZmFjZSBXZWJRdWlja0xvb2tIYW5kbGVBc0Rl
bGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiB7Ci0gICAgUmVmUHRy
PFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZT4gbV9jb25u
ZWN0aW9uRGVsZWdhdGU7Ci19Ci0KLS0gKGlkKWluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRlOihT
eW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqKWNvbm5lY3Rp
b25EZWxlZ2F0ZTsKLS0gKHZvaWQpY2xlYXJIYW5kbGU7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlv
biBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlCi0tIChpZClpbml0V2l0aENvbm5lY3Rpb25E
ZWxlZ2F0ZTooU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
Kiljb25uZWN0aW9uRGVsZWdhdGUKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlm
ICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9
IGNvbm5lY3Rpb25EZWxlZ2F0ZTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZCljb25u
ZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhQXJyYXk6
KE5TQXJyYXkgKilkYXRhQXJyYXkKLXsKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0g
ICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExPRyhO
ZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGFBcnJh
eSgpIik7Ci0gICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZFJlY2VpdmVEYXRhQXJyYXkocmVp
bnRlcnByZXRfY2FzdDxDRkFycmF5UmVmPihkYXRhQXJyYXkpKTsKLX0KLQotLSAodm9pZCljb25u
ZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhOihOU0Rh
dGEgKilkYXRhIGxlbmd0aFJlY2VpdmVkOihsb25nIGxvbmcpbGVuZ3RoUmVjZWl2ZWQKLXsKLSAg
ICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0
ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxl
QXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEoKSAtIGRhdGEgbGVuZ3RoID0gJWxkIiwgKGxvbmcp
W2RhdGEgbGVuZ3RoXSk7Ci0KLSAgICAvLyBRdWlja0xvb2sgY29kZSBzZW5kcyB1cyBhIG5pbCBk
YXRhIGF0IHRpbWVzLiBUaGUgY2hlY2sgYmVsb3cgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbgot
ICAgIC8vIFJlc291cmNlSGFuZGxlTWFjLmNwcCBhZGRlZCBmb3IgYSBkaWZmZXJlbnQgYnVnLgot
ICAgIGlmICghW2RhdGEgbGVuZ3RoXSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fY29ubmVjdGlv
bkRlbGVnYXRlLT5kaWRSZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oZGF0
YSksIHN0YXRpY19jYXN0PGludD4obGVuZ3RoUmVjZWl2ZWQpKTsKLX0KLQotLSAodm9pZCljb25u
ZWN0aW9uRGlkRmluaXNoTG9hZGluZzooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgotewot
ICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBpZiAoIW1fY29ubmVjdGlvbkRlbGVn
YXRlKQotICAgICAgICByZXR1cm47Ci0gICAgTE9HKE5ldHdvcmssICJXZWJRdWlja0xvb2tIYW5k
bGVBc0RlbGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nKCkiKTsKLSAgICBtX2Nvbm5lY3Rpb25EZWxl
Z2F0ZS0+ZGlkRmluaXNoTG9hZGluZygpOwotfQotCi0tICh2b2lkKWNvbm5lY3Rpb246KE5TVVJM
Q29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9y
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIGlmICghbV9jb25uZWN0aW9u
RGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBMT0coTmV0d29yaywgIldlYlF1aWNrTG9v
a0hhbmRsZUFzRGVsZWdhdGU6OmRpZEZhaWwoKSIpOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRl
LT5kaWRGYWlsKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZFcnJvclJlZj4oZXJyb3IpKTsKLX0KLQotLSAo
dm9pZCljbGVhckhhbmRsZQotewotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlID0gbnVsbHB0cjsK
LX0KLUBlbmQKLSNlbmRpZgotCi1AaW50ZXJmYWNlIFdlYlJlc291cmNlTG9hZGVyUXVpY2tMb29r
RGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25uZWN0aW9uRGVsZWdhdGU+IHsKK0BpbnRlcmZh
Y2UgV2ViUmVzb3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENv
bm5lY3Rpb25EZWxlZ2F0ZSwgV2ViQ29yZVJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsKICAgICBS
ZWZQdHI8UmVzb3VyY2VMb2FkZXI+IF9yZXNvdXJjZUxvYWRlcjsKICAgICBCT09MIF9oYXNTZW50
RGlkUmVjZWl2ZVJlc3BvbnNlOwogICAgIEJPT0wgX2hhc0ZhaWxlZDsKQEAgLTM1OSw3ICsyNzYs
NyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlk
RmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycgogICAgIF9yZXNvdXJjZUxvYWRlci0+ZGlkRmFp
bChSZXNvdXJjZUVycm9yKGVycm9yKSk7CiB9CiAKLS0gKHZvaWQpY2xlYXJIYW5kbGUKKy0gKHZv
aWQpZGV0YWNoSGFuZGxlCiB7CiAgICAgX3Jlc291cmNlTG9hZGVyID0gbnVsbHB0cjsKICAgICBf
cXVpY2tMb29rSGFuZGxlID0gbnVsbHB0cjsKQEAgLTQxNSwyNiArMzMyLDYgQEAgc3RkOjp1bmlx
dWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwKICAgICByZXR1cm4gV1RGOjptb3ZlKHF1aWNrTG9va0hhbmRsZSk7CiB9
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4g
UXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgU3luY2hyb25v
dXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKiBjb25uZWN0aW9uRGVsZWdh
dGUsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKLXsKLSAgICBBU1NFUlRfQVJHKGhhbmRs
ZSwgaGFuZGxlKTsKLSAgICBpZiAoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5yZXF1ZXN0ZXIoKSAh
PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbiB8fCAhW1FMUHJldmlld0dldFN1cHBv
cnRlZE1JTUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAqKUNGVVJMUmVzcG9u
c2VHZXRNSU1FVHlwZShjZlJlc3BvbnNlKV0pCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSA9IFtOU1VSTFJlc3BvbnNlIF9yZXNwb25zZVdp
dGhDRlVSTFJlc3BvbnNlOmNmUmVzcG9uc2VdOwotICAgIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVs
ZWdhdGUgKmRlbGVnYXRlID0gW1tbV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6Y29ubmVjdGlvbkRlbGVnYXRlXSBhdXRvcmVsZWFz
ZV07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gcXVpY2tMb29rSGFuZGxl
KG5ldyBRdWlja0xvb2tIYW5kbGUoW2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0
KERvTm90VXBkYXRlSFRUUEJvZHkpIFVSTF0sIG5pbCwgbnNSZXNwb25zZSwgZGVsZWdhdGUpKTsK
LSAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRDcmVhdGVRdWlja0xvb2tIYW5kbGUoKnF1aWNrTG9v
a0hhbmRsZSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShxdWlja0xvb2tIYW5kbGUpOwotfQotCi1D
RlVSTFJlc3BvbnNlUmVmIFF1aWNrTG9va0hhbmRsZTo6Y2ZSZXNwb25zZSgpCi17Ci0gICAgcmV0
dXJuIFttX25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdOwotfQotI2VuZGlmCi0KIGJvb2wgUXVp
Y2tMb29rSGFuZGxlOjpzaG91bGRDcmVhdGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogewogICAgIHJldHVybiBbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkg
Y29udGFpbnNPYmplY3Q6bWltZVR5cGVdOwpAQCAtNTAwLDcgKzM5Nyw3IEBAIFF1aWNrTG9va0hh
bmRsZTo6flF1aWNrTG9va0hhbmRsZSgpCiAgICAgTE9HKE5ldHdvcmssICJRdWlja0xvb2tIYW5k
bGU6On5RdWlja0xvb2tIYW5kbGUoKSIpOwogICAgIG1fY29udmVydGVyID0gbnVsbHB0cjsKIAot
ICAgIFttX2RlbGVnYXRlIGNsZWFySGFuZGxlXTsKKyAgICBbbV9kZWxlZ2F0ZSBkZXRhY2hIYW5k
bGVdOwogfQogCiBTdHJpbmcgUXVpY2tMb29rSGFuZGxlOjpwcmV2aWV3RmlsZU5hbWUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3Vy
Y2VIYW5kbGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNv
dXJjZUhhbmRsZUlPUy5tbQppbmRleCA2NjdiOWIxODY2NzQ0MGRlYmZlZmRhMTgwNWI4NGNiNTQ3
ODRjNTc5Li5iNzI5ZjBmMzYyMTlkYzQxZjNhZGViMzE5NDIxZmY5NjU3ZjQ4MWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhh
bmRsZUlPUy5tbQpAQCAtMSwzOSArMSBAQAotLy8KLS8vICBSZXNvdXJjZUhhbmRsZUlQaG9uZS5t
bQotLy8gIFdlYkNvcmUKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSZXNvdXJj
ZUhhbmRsZUludGVybmFsLmgiCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi0jaW1wb3J0IDxDRk5l
dHdvcmsvQ0ZTb2NrZXRTdHJlYW1Qcml2Lmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVx
dWVzdFByaXZhdGUuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRl
U1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQotewotICAgIE5TU3RyaW5nICpob3N0ID0gcmVxdWVzdC51cmwoKS5ob3N0KCk7Ci0gICAg
TlNBcnJheSAqY2VydEFycmF5ID0gW05TVVJMUmVxdWVzdCBhbGxvd3NTcGVjaWZpY0hUVFBTQ2Vy
dGlmaWNhdGVGb3JIb3N0Omhvc3RdOwotICAgIEJPT0wgYWxsb3dzQW55Q2VydGlmaWNhdGUgPSBb
TlNVUkxSZXF1ZXN0IGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVGb3JIb3N0Omhvc3RdOwotICAg
IGlmICghY2VydEFycmF5ICYmICFhbGxvd3NBbnlDZXJ0aWZpY2F0ZSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHNzbFByb3BzID0gQ0ZEaWN0aW9uYXJ5
Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBpZiAo
Y2VydEFycmF5KQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzc2xQcm9wcywgX2tDRlN0
cmVhbVNTTFRydXN0ZWRMZWFmQ2VydGlmaWNhdGVzLCAoQ0ZUeXBlUmVmKSBjZXJ0QXJyYXkpOwot
Ci0gICAgaWYgKGFsbG93c0FueUNlcnRpZmljYXRlKQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShzc2xQcm9wcywga0NGU3RyZWFtU1NMVmFsaWRhdGVzQ2VydGlmaWNhdGVDaGFpbiwga0NG
Qm9vbGVhbkZhbHNlKTsKLSAgICByZXR1cm4gc3NsUHJvcHM7Ci19Ci0KLX0KLQotI2VuZGlmCisv
LyBSZW1vdmUgbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1Jlc291cmNlUmVxdWVzdElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1Jlc291cmNlUmVxdWVzdElPUy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggN2I3ZGM2YmU2MzQ1Y2M1Njk2YTFlYzZlYmQwMDMyZjMyMzRkZmIwMC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5oIgotCi0jaWYg
UExBVEZPUk0oSU9TKQotCi1AaW50ZXJmYWNlIE5TVVJMUmVxdWVzdCAoV2ViTlNVUkxSZXF1ZXN0
RGV0YWlscykKLS0gKENGVVJMUmVxdWVzdFJlZilfQ0ZVUkxSZXF1ZXN0OwotLSAoaWQpX2luaXRX
aXRoQ0ZVUkxSZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdDsKLUBlbmQKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VSZXF1ZXN0OjpS
ZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QpCi0gICAgOiBSZXNvdXJjZVJl
cXVlc3RCYXNlKCkKLSAgICAsIG1fY2ZSZXF1ZXN0KFtuc1JlcXVlc3QgX0NGVVJMUmVxdWVzdF0p
Ci0gICAgLCBtX25zUmVxdWVzdChuc1JlcXVlc3QpCi17Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1
ZXN0Ojp1cGRhdGVOU1VSTFJlcXVlc3QoKQotewotICAgIGlmIChtX2NmUmVxdWVzdCkKLSAgICAg
ICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gX2lu
aXRXaXRoQ0ZVUkxSZXF1ZXN0Om1fY2ZSZXF1ZXN0LmdldCgpXSk7Ci19Ci0KLXZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0OjpjbGVhck9yVXBkYXRlTlNVUkxSZXF1ZXN0KCkKLXsKLSAgICAvLyBUaGVyZSBp
cyBjbGllbnQgY29kZSB0aGF0IGV4dGVuZHMgTlNVUkxSZXF1ZXN0IGFuZCBleHBlY3RzIHRvIGdl
dCBiYWNrLCBpbiB0aGUgZGVsZWdhdGUKLSAgICAvLyBjYWxsYmFja3MsIGFuIG9iamVjdCBvZiB0
aGUgc2FtZSB0eXBlIHRoYXQgdGhleSBwYXNzZWQgaW50byBXZWJLaXQuIFRvIGtlZXAgdGhlbiBy
dW5uaW5nLCB3ZQotICAgIC8vIGNyZWF0ZSBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSBhbmQg
cmV0dXJuIHRoYXQuIFNlZSA8cmRhcjovLzk4NDM1ODI+LgotICAgIC8vIEFsc28sIGRldmVsb3Bl
cnMgcmVhbGx5IHJlYWxseSB3YW50IGFuIE5TTXV0YWJsZVVSTFJlcXVlc3Qgc28gdHJ5IHRvIGNy
ZWF0ZSBhbgotICAgIC8vIE5TTXV0YWJsZVVSTFJlcXVlc3QgaW5zdGVhZCBvZiBOU1VSTFJlcXVl
c3QuCi0gICAgc3RhdGljIENsYXNzIG5zVVJMUmVxdWVzdENsYXNzID0gW05TVVJMUmVxdWVzdCBj
bGFzc107Ci0gICAgc3RhdGljIENsYXNzIG5zTXV0YWJsZVVSTFJlcXVlc3RDbGFzcyA9IFtOU011
dGFibGVVUkxSZXF1ZXN0IGNsYXNzXTsKLSAgICBDbGFzcyByZXF1ZXN0Q2xhc3MgPSBbbV9uc1Jl
cXVlc3QuZ2V0KCkgY2xhc3NdOwotCi0gICAgaWYgKCFtX2NmUmVxdWVzdCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKHJlcXVlc3RDbGFzcyAmJiByZXF1ZXN0Q2xhc3MgIT0gbnNVUkxSZXF1
ZXN0Q2xhc3MgJiYgcmVxdWVzdENsYXNzICE9IG5zTXV0YWJsZVVSTFJlcXVlc3RDbGFzcykKLSAg
ICAgICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKFtbcmVxdWVzdENsYXNzIGFsbG9jXSBfaW5pdFdp
dGhDRlVSTFJlcXVlc3Q6bV9jZlJlcXVlc3QuZ2V0KCldKTsKLSAgICBlbHNlCi0gICAgICAgIG1f
bnNSZXF1ZXN0ID0gbnVsbHB0cjsKLX0KLQotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25N
YWMubW0KaW5kZXggZTM4YjAzODdkZTA0NmM3YzAxNTc0M2Q3YmI3ZWEzNmU0MDkzODAyMi4uYTgy
YTU1YzMzODgzN2Q3MGUyZTFhNWIwMzJjNzJiYzkzMzY5OGUxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0K
QEAgLTMyLDE4ICszMiwxMiBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUHJvdGVjdGlvblNwYWNl
Lmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCAiQ0ZOU1VSTENvbm5lY3Rpb25TUEku
aCIKLSNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFjZSBXZWJD
b3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciA6IE5TT2JqZWN0IDxOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyPgogewogICAgIEF1dGhlbnRpY2F0aW9uQ2xp
ZW50KiBtX2NsaWVudDsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJMQXV0aENoYWxsZW5n
ZVJlZiBtX2NmQ2hhbGxlbmdlOwotI2VuZGlmCiB9CiAtIChpZClpbml0V2l0aEF1dGhlbnRpY2F0
aW9uQ2xpZW50OihBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50OwogLSAoQXV0aGVudGljYXRp
b25DbGllbnQqKWNsaWVudDsKQEAgLTg5LDQ3ICs4MywxMCBAQCAtICh2b2lkKWNhbmNlbEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxl
bmdlCiAgICAgICAgIG1fY2xpZW50LT5yZWNlaXZlZENhbmNlbGxhdGlvbihjb3JlKGNoYWxsZW5n
ZSkpOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLS0gKHZvaWQpc2V0Q0ZDaGFsbGVuZ2U6KENG
VVJMQXV0aENoYWxsZW5nZVJlZiljaGFsbGVuZ2UKLXsKLSAgICBtX2NmQ2hhbGxlbmdlID0gY2hh
bGxlbmdlOwotfQotCi0tIChDRlVSTEF1dGhDaGFsbGVuZ2VSZWYpY2ZDaGFsbGVuZ2UKLXsKLSAg
ICByZXR1cm4gbV9jZkNoYWxsZW5nZTsKLX0KLSNlbmRpZgotCiBAZW5kCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
IGNvcmUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbWFjQ2hhbGxlbmdlKQotewotICAg
IFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyICpjaGFsbGVuZ2VT
ZW5kZXIgPSAoV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIqKSBb
bWFjQ2hhbGxlbmdlIHNlbmRlcl07Ci0gICAgcmV0dXJuIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFtjaGFsbGVuZ2VTZW5kZXIgY2ZDaGFsbGVuZ2VdLCBbY2hhbGxlbmdlU2VuZGVyIGNsaWVudF0p
OwotfQotCi1OU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICptYWMoY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UpCi17Ci0gICAgQXV0aGVudGljYXRpb25DbGll
bnQqIGF1dGhDbGllbnQgPSBjb3JlQ2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7Ci0g
ICAgUmV0YWluUHRyPFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVy
PiBjaGFsbGVuZ2VTZW5kZXIgPSBhZG9wdE5TKFtbV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50
QXNDaGFsbGVuZ2VTZW5kZXIgYWxsb2NdIGluaXRXaXRoQXV0aGVudGljYXRpb25DbGllbnQ6YXV0
aENsaWVudF0pOwotICAgIFJldGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IGF1dGhDaGFs
bGVuZ2UgPSBjb3JlQ2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpOwotICAgIGlmICgh
YXV0aENoYWxsZW5nZSkKLSAgICAgICAgYXV0aENoYWxsZW5nZSA9IGFkb3B0Q0YoY3JlYXRlQ0Yo
Y29yZUNoYWxsZW5nZSkpOwotICAgIFtjaGFsbGVuZ2VTZW5kZXIuZ2V0KCkgc2V0Q0ZDaGFsbGVu
Z2U6YXV0aENoYWxsZW5nZS5nZXQoKV07Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIHJldHVybiBb
W05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgX2NyZWF0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRm9yQ0ZBdXRoQ2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2UuZ2V0KCkgc2VuZGVyOmNoYWxsZW5n
ZVNlbmRlci5nZXQoKV0gYXV0b3JlbGVhc2VdOwotI2Vsc2UKLSAgICByZXR1cm4gW1tOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIF9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZUZvckNGQXV0aENo
YWxsZW5nZTphdXRoQ2hhbGxlbmdlLmdldCgpIHNlbmRlcjpjaGFsbGVuZ2VTZW5kZXIuZ2V0KCld
IGF1dG9yZWxlYXNlXTsKLSNlbmRpZgotfQotCi0jZWxzZQotCiBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90
ZWN0aW9uU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzRmFp
bHVyZUNvdW50LApAQCAtMjAzLDYgKzE2MCw0IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNv
cmUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbWFjQ2hhbGxlbmdlKQogICAgIHJldHVy
biBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtYWNDaGFsbGVuZ2UpOwogfQogCi0jZW5kaWYgLy8g
VVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCmluZGV4IDE2ZDEw
ZTIwNzAwNDFhODdlNDYzY2VmMjQ3NGMzYzQ4OWRkM2ZhZWEuLjgyZDRmNWZlMjUyYThlY2JlZTc2
YjI3YTQyMmY1MTczNzQyODBhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KQEAgLTMxLDggKzMxLDYgQEAKICNpbXBvcnQg
Ik5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkNvb2tpZS5oIgogI2ltcG9y
dCAiQ29va2llU3RvcmFnZS5oIgogI2ltcG9ydCAiVVJMLmgiCkBAIC0yMDAsMTIgKzE5OCw2IEBA
IHZvaWQgZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24pCiAgICAgd2tEZWxldGVBbGxIVFRQQ29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5n
ZXQoKSk7CiB9CiAKLX0KLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KIHN0YXRpYyBOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKICAgICBhdXRvIGNvb2tpZVN0
b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KaW5k
ZXggOWViYzg1NGRjZGI0OGQ1N2U4ZjgyODY5NDQyNGVjZDQ5YjczMzZlYy4uZjBhNGYzYWY3NjQx
NWNiMjZjMjk0YmQ4MTM5MTNmZTIyMzNiMzc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KQEAg
LTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDcmVkZW50aWFs
U3RvcmFnZS5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbmNsdWRlICJBdXRoZW50aWNh
dGlvbk1hYy5oIgogI2luY2x1ZGUgIkNyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9u
U3BhY2UuaCIKQEAgLTUyLDUgKzUwLDMgQEAgdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6c2F2ZVRv
UGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW8KICNlbmRp
ZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRh
U3RyZWFtTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0
YVN0cmVhbU1hYy5oCmluZGV4IGRiODFjNjY4N2M0MjJlNWVjYmMzNjkwZTIzNDVhZjgyMjRhZDA2
YzYuLmUyYzhiODk2YThhMjQ4OTdiMTJmMDJlNDdlYjA1NTExZDliZDQwYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1N
YWMuaApAQCAtMjksOCArMjksNiBAQAogI2lmbmRlZiBGb3JtRGF0YVN0cmVhbU1hY19oCiAjZGVm
aW5lIEZvcm1EYXRhU3RyZWFtTWFjX2gKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMUmVxdWVzdCog
Q0ZVUkxSZXF1ZXN0UmVmOwpAQCAtNDksNiArNDcsNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogCiAj
ZW5kaWYgLy8gRm9ybURhdGFTdHJlYW1NYWNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQppbmRleCBiNTczNGY5
OGVkZmJmMTEzNWUxN2Q0YjdlYmMyOWNjNTVmZTA0MzUxLi43YjdkMWQzYTE1ZTM5NTc0M2M5NDQ5
MTgzNGMzMjk4ZTIzY2ZhMThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQpAQCAtMjksOCArMjksNiBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJGb3JtRGF0YVN0cmVhbU1hYy5oIgogCi0jaWYg
IVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkZvcm1EYXRhLmgiCiAjaW1wb3J0ICJGb3JtRGF0
YVN0cmVhbUNGTmV0LmgiCiAjaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNTIsNSArNTAs
MyBAQCBGb3JtRGF0YSogaHR0cEJvZHlGcm9tU3RyZWFtKE5TSW5wdXRTdHJlYW0gKnN0cmVhbSkK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUksp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUVycm9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VFcnJvck1hYy5tbQppbmRleCBmN2M4NjRjZTNiNTA5OWZlMDJmMTY5NjlhY2UzOTdmNjgyZTgz
ZGJhLi5mYjc3NjZmNTc2YjJmYmMxNjM4MjVmZmE5MjI4YzMyNWY4ODA5ZmQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JN
YWMubW0KQEAgLTMxLDEwICszMSw2IEBACiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRkVycm9y
Lmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotI2lmIFBMQVRGT1JNKElP
UykgJiYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQgPENGTmV0d29yay9DRlNvY2tldFN0cmVhbVBy
aXYuaD4KLSNlbmRpZgotCiBAaW50ZXJmYWNlIE5TRXJyb3IgKFdlYkV4dHJhcykKIC0gKE5TU3Ry
aW5nICopX3dlYl9sb2NhbGl6ZWREZXNjcmlwdGlvbjsKIEBlbmQKQEAgLTkxLDg1ICs4Nyw2IEBA
IC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKIAogQGVuZAogCi0KLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotc3RhdGljIE5TRXJyb3IgKk5TRXJyb3JGcm9tQ0ZFcnJvcihDRkVy
cm9yUmVmIGNmRXJyb3IsIE5TVVJMICp1cmwpCi17Ci0gICAgQ0ZJbmRleCBlcnJDb2RlID0gQ0ZF
cnJvckdldENvZGUoY2ZFcnJvcik7Ci0gICAgaWYgKENGRXF1YWwoQ0ZFcnJvckdldERvbWFpbihj
ZkVycm9yKSwga0NGRXJyb3JEb21haW5DRk5ldHdvcmspICYmIGVyckNvZGUgPD0ga0NGVVJMRXJy
b3JVbmtub3duICYmIGVyckNvZGUgPiAtNDAwMCkgewotICAgICAgICAvLyBUaGlzIGlzIGFuIFVS
TCBlcnJvciBhbmQgbmVlZHMgdG8gYmUgdHJhbnNsYXRlZCB0byB0aGUgTlNVUkxFcnJvckRvbWFp
bgotICAgICAgICBpZCBrZXlzWzEwXSwgdmFsdWVzWzEwXTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5
UmVmIHVzZXJJbmZvID0gQ0ZFcnJvckNvcHlVc2VySW5mbyhjZkVycm9yKTsKLSAgICAgICAgTlNF
cnJvciAqcmVzdWx0OwotICAgICAgICBOU0ludGVnZXIgY291bnQgPSAwOwotCi0gICAgICAgIGlm
ICh1cmwpIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxF
cnJvcktleTsKLSAgICAgICAgICAgIHZhbHVlc1tjb3VudF0gPSB1cmw7Ci0gICAgICAgICAgICBj
b3VudCArKzsKLQotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFpbGluZ1VS
TFN0cmluZ0Vycm9yS2V5OwotICAgICAgICAgICAgdmFsdWVzW2NvdW50XSA9IFt1cmwgYWJzb2x1
dGVTdHJpbmddOwotICAgICAgICAgICAgY291bnQgKys7Ci0gICAgICAgIH0KLQotICAgICAgICB2
YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZFcnJv
ckxvY2FsaXplZERlc2NyaXB0aW9uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsK
LSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleTsKLSAg
ICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVzW2NvdW50XSA9
IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGRXJyb3JMb2NhbGl6ZWRGYWls
dXJlUmVhc29uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAg
IGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk7Ci0gICAgICAg
ICAgICBjb3VudCArKzsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQp
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRkVycm9yTG9jYWxpemVkUmVjb3ZlcnlT
dWdnZXN0aW9uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAg
IGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25FcnJvcktleTsKLSAg
ICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRl
Y2xhcmF0aW9ucyIKLSAgICAgICAgaWYgKHVzZXJJbmZvICYmICh2YWx1ZXNbY291bnRdID0gKGlk
KUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNTTFBlZXJD
ZXJ0aWZpY2F0ZXMpKSAhPSBuaWwpIHsKLSAgICAgICAgICAgIC8vIE5lZWQgdG8gdHJhbnNsYXRl
IHRoZSBjZXJ0Ci0gICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvclBlZXJDZXJ0aWZp
Y2F0ZUNoYWluS2V5IjsKLSAgICAgICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgICAgICB2YWx1
ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBfa0NGU3RyZWFt
UHJvcGVydHlTU0xDbGllbnRDZXJ0aWZpY2F0ZXMpOwotICAgICAgICAgICAgaWYgKHZhbHVlc1tj
b3VudF0pIHsKLSAgICAgICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvckNsaWVudENl
cnRpZmljYXRlQ2hhaW5LZXkiOwotICAgICAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZh
bHVlKHVzZXJJbmZvLCBfa0NGU3RyZWFtUHJvcGVydHlTU0xDbGllbnRDZXJ0aWZpY2F0ZVN0YXRl
KTsKLSAgICAgICAgICAgIGlmICh2YWx1ZXNbY291bnRdKSB7Ci0gICAgICAgICAgICAgICAga2V5
c1tjb3VudF0gPSBAIk5TRXJyb3JDbGllbnRDZXJ0aWZpY2F0ZVN0YXRlS2V5IjsKLSAgICAgICAg
ICAgICAgICBjb3VudCArKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHBvcAotCi0gICAgICAgIGlmICh1c2VySW5mbyAmJiAodmFsdWVzW2NvdW50
XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGU3RyZWFtUHJvcGVydHlT
U0xQZWVyVHJ1c3QpKSAhPSBuaWwpIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNVUkxF
cnJvckZhaWxpbmdVUkxQZWVyVHJ1c3RFcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50Kys7Ci0g
ICAgICAgIH0KLQotICAgICAgICBrZXlzW2NvdW50XSA9IE5TVW5kZXJseWluZ0Vycm9yS2V5Owot
ICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKWNmRXJyb3I7Ci0gICAgICAgIGNvdW50ICsrOwot
Ci0gICAgICAgIHJlc3VsdCA9IFtXZWJDdXN0b21OU1VSTEVycm9yIGVycm9yV2l0aERvbWFpbjpO
U1VSTEVycm9yRG9tYWluIGNvZGU6KGVyckNvZGUgPT0ga0NGVVJMRXJyb3JVbmtub3duID8gKENG
SW5kZXgpTlNVUkxFcnJvclVua25vd24gOiBlcnJDb2RlKSB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5
IGRpY3Rpb25hcnlXaXRoT2JqZWN0czp2YWx1ZXMgZm9yS2V5czprZXlzIGNvdW50OmNvdW50XV07
Ci0gICAgICAgIGlmICh1c2VySW5mbykKLSAgICAgICAgICAgIENGUmVsZWFzZSh1c2VySW5mbyk7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIHJldHVybiAoTlNFcnJvciAqKWNm
RXJyb3I7Ci19Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTkzLDUzICsxMTAsNiBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZU5TRXJyb3JGcm9tUmVzb3VyY2VFcnJvckJhc2UoY29u
c3QgUmVzb3VyY2VFcnJvcgogICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5p
dFdpdGhEb21haW46cmVzb3VyY2VFcnJvci5kb21haW4oKSBjb2RlOnJlc291cmNlRXJyb3IuZXJy
b3JDb2RlKCkgdXNlckluZm86dXNlckluZm8uZ2V0KCldKTsKIH0KIAotI2lmIFVTRShDRk5FVFdP
UkspCi0KLVJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoTlNFcnJvciAqZXJyb3IpCi0gICAg
OiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQotICAgICwgbV9wbGF0Zm9ybUVycm9yKHJlaW50ZXJw
cmV0X2Nhc3Q8Q0ZFcnJvclJlZj4oZXJyb3IpKQotewotICAgIG1faXNOdWxsID0gIWVycm9yOwot
ICAgIGlmICghbV9pc051bGwpCi0gICAgICAgIG1faXNUaW1lb3V0ID0gW2Vycm9yIGNvZGVdID09
IE5TVVJMRXJyb3JUaW1lZE91dDsKLX0KLQotTlNFcnJvciAqUmVzb3VyY2VFcnJvcjo6bnNFcnJv
cigpIGNvbnN0Ci17Ci0gICAgaWYgKG1faXNOdWxsKSB7Ci0gICAgICAgIEFTU0VSVCghbV9wbGF0
Zm9ybUVycm9yKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICBpZiAobV9wbGF0
Zm9ybU5TRXJyb3IpCi0gICAgICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLQot
ICAgIGlmIChtX3BsYXRmb3JtRXJyb3IpIHsKLSAgICAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG1f
cGxhdGZvcm1FcnJvci5nZXQoKTsKLSAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
dXNlckluZm8gPSBhZG9wdENGKENGRXJyb3JDb3B5VXNlckluZm8oZXJyb3IpKTsKLSNpZiBQTEFU
Rk9STShJT1MpCi0gICAgICAgIG1fcGxhdGZvcm1OU0Vycm9yID0gTlNFcnJvckZyb21DRkVycm9y
KGVycm9yLCAoTlNVUkwgKilbKE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvLmdldCgpIG9iamVjdEZv
cktleTooaWQpIGtDRlVSTEVycm9yRmFpbGluZ1VSTEVycm9yS2V5XSk7Ci0gICAgICAgIC8vIElm
IE5TRXJyb3JGcm9tQ0ZFcnJvciBjcmVhdGVkIGEgbmV3IE5TRXJyb3IgZm9yIHVzLCByZXR1cm4g
dGhhdC4KLSAgICAgICAgaWYgKG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpICE9IChOU0Vycm9yICop
ZXJyb3IpCi0gICAgICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCk7Ci0KLSAg
ICAgICAgLy8gT3RoZXJ3aXNlIGZhbGwgdGhyb3VnaCB0byBjcmVhdGUgYSBuZXcgTlNFcnJvciBm
cm9tIHRoZSBDRkVycm9yLgotI2VuZGlmCi0gICAgICAgIG1fcGxhdGZvcm1OU0Vycm9yID0gYWRv
cHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOihOU1N0cmluZyAqKUNGRXJyb3JH
ZXREb21haW4oZXJyb3IpIGNvZGU6Q0ZFcnJvckdldENvZGUoZXJyb3IpIHVzZXJJbmZvOihOU0Rp
Y3Rpb25hcnkgKil1c2VySW5mby5nZXQoKV0pOwotICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU5T
RXJyb3IuZ2V0KCk7Ci0gICAgfQotCi0gICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBjcmVhdGVOU0Vy
cm9yRnJvbVJlc291cmNlRXJyb3JCYXNlKCp0aGlzKTsKLSAgICByZXR1cm4gbV9wbGF0Zm9ybU5T
RXJyb3IuZ2V0KCk7Ci19Ci0KLVJlc291cmNlRXJyb3I6Om9wZXJhdG9yIE5TRXJyb3IgKigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG5zRXJyb3IoKTsKLX0KLQotI2Vsc2UKLQogUmVzb3VyY2VFcnJv
cjo6UmVzb3VyY2VFcnJvcihOU0Vycm9yICpuc0Vycm9yKQogICAgIDogbV9kYXRhSXNVcFRvRGF0
ZShmYWxzZSkKICAgICAsIG1fcGxhdGZvcm1FcnJvcihuc0Vycm9yKQpAQCAtMzEyLDYgKzE4Miw0
IEBAIFJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENGRXJyb3JSZWYoKSBjb25zdAogICAgIHJldHVy
biBjZkVycm9yKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCmluZGV4IGNkYmUwMjU4ZDQwMTIxZjMxNDBiNGY0
Nzk0MGNmYjkzZmU3NzE5NjQuLjYyZTc3YmI2MTI4ODczMmRhMjlhZWRkNzI2MmI0MDRhMTMwOTI1
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlSGFuZGxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlSGFuZGxlTWFjLm1tCkBAIC01NywxNiArNTcsNiBAQAogI2ltcG9ydCA8d3RmL3Rl
eHQvQmFzZTY0Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotI2lmIF9faGFzX2luY2x1ZGUoPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb25Qcml2
Lmg+KQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4KLSNlbmRpZgot
dHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQ29ubmVjdGlvbiogQ0ZVUkxDb25uZWN0aW9uUmVmOwotZXh0
ZXJuICJDIiB7Ci1DRkRpY3Rpb25hcnlSZWYgX0NGVVJMQ29ubmVjdGlvbkNvcHlUaW1pbmdEYXRh
KENGVVJMQ29ubmVjdGlvblJlZik7Ci19Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogI2lm
IFBMQVRGT1JNKElPUykKICNpbXBvcnQgIkNGTmV0d29ya1NQSS5oIgogI2ltcG9ydCAiUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCkBAIC04OCw5ICs3OCw3IEBAIC0oaWQpX2luaXRXaXRo
UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUgdXNl
c0NhY2hlOihCCiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLSNpZiAhVVNFKENG
TkVUV09SSykKLSAgICAKKwogc3RhdGljIHZvaWQgYXBwbHlCYXNpY0F1dGhvcml6YXRpb25IZWFk
ZXIoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFs
KQogewogICAgIFN0cmluZyBhdXRoZW50aWNhdGlvbkhlYWRlciA9ICJCYXNpYyAiICsgYmFzZTY0
RW5jb2RlKFN0cmluZyhjcmVkZW50aWFsLnVzZXIoKSArICI6IiArIGNyZWRlbnRpYWwucGFzc3dv
cmQoKSkudXRmOCgpKTsKQEAgLTI2OSwxMiArMjU3LDYgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6
c3RhcnQoKQogICAgICAgICBbY29ubmVjdGlvbigpIHNldERlbGVnYXRlUXVldWU6b3BlcmF0aW9u
UXVldWVGb3JBc3luY0NsaWVudHMoKV07CiAgICAgICAgIHNjaGVkdWxlZCA9IHRydWU7CiAgICAg
fQotI2lmIFBMQVRGT1JNKElPUykKLSAgICBlbHNlIHsKLSAgICAgICAgW2Nvbm5lY3Rpb24oKSBz
Y2hlZHVsZUluUnVuTG9vcDpXZWJUaHJlYWROU1J1bkxvb3AoKSBmb3JNb2RlOk5TRGVmYXVsdFJ1
bkxvb3BNb2RlXTsKLSAgICAgICAgc2NoZWR1bGVkID0gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKIAog
ICAgIC8vIFN0YXJ0IHRoZSBjb25uZWN0aW9uIGlmIHdlIGRpZCBzY2hlZHVsZSB3aXRoIGF0IGxl
YXN0IG9uZSBydW5sb29wLgogICAgIC8vIFdlIGNhbid0IHN0YXJ0IHRoZSBjb25uZWN0aW9uIHVu
dGlsIHdlIGhhdmUgb25lIHJ1bmxvb3Agc2NoZWR1bGVkLgpAQCAtMzE0LDggKzI5Niw2IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykK
ICAgICAgICAgW2QtPm1fY29ubmVjdGlvbiBzZXREZWZlcnNDYWxsYmFja3M6ZGVmZXJzXTsKIH0K
IAotI2lmIFBMQVRGT1JNKE1BQykKLQogdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUoU2No
ZWR1bGVQYWlyJiBwYWlyKQogewogICAgIE5TUnVuTG9vcCAqcnVuTG9vcCA9IHBhaXIubnNSdW5M
b29wKCk7CkBAIC0zMzQsOCArMzE0LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVs
ZShTY2hlZHVsZVBhaXImIHBhaXIpCiAgICAgICAgIFtkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkgdW5z
Y2hlZHVsZUZyb21SdW5Mb29wOnJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKilwYWlyLm1vZGUo
KV07CiB9CiAKLSNlbmRpZgotCiBpZCBSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKGJvb2wg
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKCFkLT5tX2RlbGVnYXRl
KTsKQEAgLTcyNCwyNyArNzAyLDE0IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2ls
bENhY2hlUmVzcG9uc2UoTlNDYWNoZWRVUkxSZXNwb25zZSAqcmVzcG9uc2UpCiAKICAgICBbKGlk
KWRlbGVnYXRlKCkgY29udGludWVXaWxsQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9Ci0gICAg
Ci0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0gICAgCisKICNpZiBFTkFCTEUoV0VCX1RJTUlO
RykKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgCi12b2lkIFJlc291cmNlSGFuZGxlOjpnZXRD
b25uZWN0aW9uVGltaW5nRGF0YShDRlVSTENvbm5lY3Rpb25SZWYgY29ubmVjdGlvbiwgUmVzb3Vy
Y2VMb2FkVGltaW5nJiB0aW1pbmcpCi17Ci0gICAgY29weVRpbWluZ0RhdGEoKF9fYnJpZGdlIE5T
RGljdGlvbmFyeSopYWRvcHRDRihfQ0ZVUkxDb25uZWN0aW9uQ29weVRpbWluZ0RhdGEoY29ubmVj
dGlvbikpLmdldCgpLCB0aW1pbmcpOwotfQotICAgIAotI2Vsc2UKLSAgICAKIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqY29ubmVj
dGlvbiwgUmVzb3VyY2VMb2FkVGltaW5nJiB0aW1pbmcpCiB7CiAgICAgY29weVRpbWluZ0RhdGEo
W2Nvbm5lY3Rpb24gX3RpbWluZ0RhdGFdLCB0aW1pbmcpOwogfQotICAgIAotI2VuZGlmCi0gICAg
CisKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1RJTUlORykKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VSZXF1ZXN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VSZXF1ZXN0TWFjLm1tCmluZGV4IDY5NGU1M2M0YTU3MzIyMjBkNDQ2MWRjMTBmNjBkZDk4
NGFhODc5NmQuLmU3NzAyNDVkZmQ1MDFiMTRiMGU2MWMxMDc3YzcxYjMwODQxMmYxZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVz
dE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZVJlcXVlc3RNYWMubW0KQEAgLTM3LDI5ICszNyw2IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VSZXF1ZXN0OjpSZXNvdXJjZVJl
cXVlc3QoTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QpCi0gICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNl
KCkKLSAgICAsIG1fY2ZSZXF1ZXN0KFtuc1JlcXVlc3QgX0NGVVJMUmVxdWVzdF0pCi0gICAgLCBt
X25zUmVxdWVzdChuc1JlcXVlc3QpCi17Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRh
dGVOU1VSTFJlcXVlc3QoKQotewotICAgIGlmIChtX2NmUmVxdWVzdCkKLSAgICAgICAgbV9uc1Jl
cXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVl
c3Q6bV9jZlJlcXVlc3QuZ2V0KCldKTsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmFwcGx5
V2ViQXJjaGl2ZUhhY2tGb3JNYWlsKCkKLXsKLSAgICAvLyBIYWNrIGJlY2F1c2UgTWFpbCBjaGVj
a3MgZm9yIHRoaXMgcHJvcGVydHkgdG8gZGV0ZWN0IGRhdGEgLyBhcmNoaXZlIGxvYWRzCi0gICAg
X0NGVVJMUmVxdWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZVUkxSZXF1ZXN0KERvTm90VXBkYXRl
SFRUUEJvZHkpLCBDRlNUUigiV2ViRGF0YVJlcXVlc3QiKSwgQ0ZTVFIoIiIpKTsKLX0KLQotI2Vu
ZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5t
bQppbmRleCA2ZmEwMGUyNDM1ZTgzZTc5Zjk3ZDQzMDg2MmRiMGI0MWQzNjY1MzdiLi5jZGY3ODlk
NjlhN2Y3ZjVmZDBmZWE5NjM1NTdkNmQ3ZGMxNzliZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0K
QEAgLTcxLDM2ICs3MSw2IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6aW5pdE5TVVJMUmVzcG9u
c2UoKSBjb25zdAogICAgIFttX25zUmVzcG9uc2UuZ2V0KCkgX3NldE1JTUVUeXBlOihOU1N0cmlu
ZyAqKW1fbWltZVR5cGVdOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLQotTlNVUkxSZXNwb25z
ZSAqUmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFt
X25zUmVzcG9uc2UgJiYgIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051bGwpIHsKLSAgICAgICAgaW5p
dE5TVVJMUmVzcG9uc2UoKTsKLSAgICAgICAgbV9jZlJlc3BvbnNlID0gW21fbnNSZXNwb25zZS5n
ZXQoKSBfQ0ZVUkxSZXNwb25zZV07Ci0gICAgICAgIHJldHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7
Ci0gICAgfQotCi0gICAgaWYgKCFtX2NmUmVzcG9uc2UpCi0gICAgICAgIHJldHVybiBuaWw7Ci0K
LSAgICBpZiAoIW1fbnNSZXNwb25zZSkKLSAgICAgICAgbV9uc1Jlc3BvbnNlID0gW05TVVJMUmVz
cG9uc2UgX3Jlc3BvbnNlV2l0aENGVVJMUmVzcG9uc2U6bV9jZlJlc3BvbnNlLmdldCgpXTsKLQot
ICAgIHJldHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7Ci19Ci0KLVJlc291cmNlUmVzcG9uc2U6OlJl
c291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSogbnNSZXNwb25zZSkKLSAgICA6IG1faW5pdExl
dmVsKFVuaW5pdGlhbGl6ZWQpCi0gICAgLCBtX3BsYXRmb3JtUmVzcG9uc2VJc1VwVG9EYXRlKHRy
dWUpCi0gICAgLCBtX2NmUmVzcG9uc2UoW25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdKQotICAg
ICwgbV9uc1Jlc3BvbnNlKG5zUmVzcG9uc2UpCi17Ci0gICAgbV9pc051bGwgPSAhbnNSZXNwb25z
ZTsKLX0KLQotI2Vsc2UKLQogc3RhdGljIE5TU3RyaW5nKiBjb25zdCBjb21tb25IZWFkZXJGaWVs
ZHNbXSA9IHsKICAgICBAIkFnZSIsIEAiQ2FjaGUtQ29udHJvbCIsIEAiQ29udGVudC1UeXBlIiwg
QCJEYXRlIiwgQCJFdGFnIiwgQCJFeHBpcmVzIiwgQCJMYXN0LU1vZGlmaWVkIiwgQCJQcmFnbWEi
CiB9OwpAQCAtMTg5LDcgKzE1OSw1IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1D
b21wYXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlCiAgICAgcmV0
dXJuIGEubnNVUkxSZXNwb25zZSgpID09IGIubnNVUkxSZXNwb25zZSgpOwogfQogCi0jZW5kaWYg
Ly8gVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNs
aWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50Lm1tCmluZGV4IDAxNDRiZDkzYTcwYTQ0OTg4ZTA1NmM4ZWI4OTg5NzQ5ZjE1
YzJiNTguLjY1Zjc2ZGYxM2I5YzhmOTY2NzhmZjg4ZWRmN2MzNjM3MWU5MzBlMjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVy
Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50Lm1tCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCIKIAotI2lmICFVU0UoQ0ZO
RVRXT1JLKQotCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzgsMTQgKzM2LDEwIEBAIHZvaWQgU3luY2hyb25vdXNMb2FkZXJD
bGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSos
CiAgICAgW2NoYWxsZW5nZS5zZW5kZXIoKSBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6Y2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKV07CiB9CiAKLSNpZiAhVVNFKENGTkVUV09SSykKIFJlc291cmNlRXJyb3IgU3luY2hyb25v
dXNMb2FkZXJDbGllbnQ6OnBsYXRmb3JtQmFkUmVzcG9uc2VFcnJvcigpCiB7CiAgICAgUmV0YWlu
UHRyPE5TRXJyb3I+IGVycm9yID0gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9t
YWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yQmFkU2VydmVyUmVzcG9uc2UgdXNl
ckluZm86bmlsXSk7CiAgICAgcmV0dXJuIGVycm9yLmdldCgpOwogfQotI2VuZGlmCiAKIH0KLQot
I2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNE
ZWxlZ2F0ZS5oCmluZGV4IDRmNDE1NWVhZmQ5NDViMWI4NjJkMjljZTg5NmRjYWRjZGExYzQyNjYu
LjJmMTE2YWQ2YTMxMDI1MGE2NzdjY2VhMTRmNzdkMjgxMGU2YThlOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
RGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgKQEAgLTI2LDE4ICsyNiwxOCBAQAogI2lmbmRl
ZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKICNkZWZpbmUgV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiB9CiAKLUBpbnRlcmZhY2UgV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxl
Z2F0ZT4geworQHByb3RvY29sIFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRlCistICh2b2lk
KWRldGFjaEhhbmRsZTsKK0BlbmQKKworQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlLCBXZWJDb3JlUmVz
b3VyY2VMb2FkZXJEZWxlZ2F0ZT4gewogICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiBtX2hh
bmRsZTsKIH0KIC0gKGlkKWluaXRXaXRoSGFuZGxlOihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSop
aGFuZGxlOwotLSAodm9pZClkZXRhY2hIYW5kbGU7CiBAZW5kCiAKLSNlbmRpZiAvLyAhVVNFKENG
TkVUV09SSykKICNlbmRpZiAvLyBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCmluZGV4IGUxN2NiOWQyMGVk
N2RiZDUxNzkzYzM2NGViMzJjMTU4OTVlYmE1M2EuLjUyNGFmZTNmYTk3NjFmYWU3MGNkZDllNmM0
ZWYwMWVhZGNjOTRiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0
ZS5tbQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQog
I2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0
aW9uTWFjLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC01NCw3ICs1Miw3IEBAIC0gKGlkKWlu
aXRXaXRoSGFuZGxlOihSZXNvdXJjZUhhbmRsZSopaGFuZGxlCiAKIC0gKHZvaWQpZGV0YWNoSGFu
ZGxlCiB7Ci0gICAgbV9oYW5kbGUgPSAwOworICAgIG1faGFuZGxlID0gbnVsbHB0cjsKIH0KIAog
LSAoTlNVUkxSZXF1ZXN0ICopY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlv
biB3aWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKW5ld1JlcXVlc3QgcmVkaXJlY3RSZXNw
b25zZTooTlNVUkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2UKQEAgLTI4OCw2ICsyODYsMyBA
QCAtIChOU0NhY2hlZFVSTFJlc3BvbnNlICopY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICop
Y29ubmVjdGlvbiB3aWxsQ2FjaGVSZXNwbwogfQogCiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENG
TkVUV09SSykKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09w
ZXJhdGlvblF1ZXVlRGVsZWdhdGUuaAppbmRleCBlNzQwYWE1OWJlZDYzYmFiOTA3NmYwNzkzYWIz
ZDAzZGUwMDJiMDUxLi5jNTdhY2FlMTQxOGMxMTZmY2Y3NzcwZjU4YWQ0YzkxYzgxZTQ4Y2MyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUuaApAQCAtMjYsOCArMjYsNyBAQAogI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaAogI2RlZmluZSBXZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaAogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0K
KyNpbmNsdWRlICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgiCiAjaW5jbHVkZSA8
ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTM1
LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiB9
CiAKLUBpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiB7CitAaW50ZXJmYWNlIFdl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxO
U1VSTENvbm5lY3Rpb25EZWxlZ2F0ZSwgV2ViQ29yZVJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsK
ICAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSogbV9oYW5kbGU7CiAKICAgICAvLyBTeW5jaHJv
bm91cyBkZWxlZ2F0ZXMgb24gb3BlcmF0aW9uIHF1ZXVlIHdhaXQgdW50aWwgbWFpbiB0aHJlYWQg
c2VuZHMgYW4gYXN5bmNocm9ub3VzIHJlc3BvbnNlLgpAQCAtNDYsNyArNDUsNiBAQCBjbGFzcyBS
ZXNvdXJjZUhhbmRsZTsKIH0KIAogLSAoaWQpaW5pdFdpdGhIYW5kbGU6KFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlKiloYW5kbGU7Ci0tICh2b2lkKWRldGFjaEhhbmRsZTsKIC0gKHZvaWQpY29udGlu
dWVXaWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKW5ld1JlcXVlc3Q7CiAtICh2b2lkKWNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhf
Q0FMTEJBQ0spCkBAIC01OSw1ICs1Nyw0IEBAIGNsYXNzIFJlc291cmNlSGFuZGxlOwogCiBAZW5k
CiAKLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKICNlbmRpZiAvLyBXZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IDkzMzdk
MTM0OTBhYjgwOWM3ODNlMTU1OGNmYjc2MTBiYjgxYzE1OWIuLmMxZDYzMGI2YjNjNjE0ZGYzZDQy
OWM5N2UwNTI4YjA3ODM5MGU4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTI2LDggKzI2LDYgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAi
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgi
CiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC0zNDUsNiArMzQzLDMgQEAgLSAoQk9PTCljb25uZWN0
aW9uU2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U6KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rp
b24KIH0KIAogQGVuZAotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25z
ZS5tbQppbmRleCAwZmFiZjkzOTg5MzZiMzEyOTM5MjIxMTBjOTcyNWFjYTQ2OTMyZGVlLi5jZDVi
YjQ0N2Q3YzQzYTllZjE3N2JhMmRhMjU2YjZkYmJlNTY2NzY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1t
CkBAIC0zMjUsNyArMzI1LDYgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJM
UmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKIH0KICNlbmRpZgogCi0jaWYgIVVTRShDRk5FVFdPUksp
CiBOU1VSTFJlc3BvbnNlICpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KE5T
VVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgTlNVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0LCBOU1VS
TFJlc3BvbnNlICpyZWRpcmVjdFJlc3BvbnNlKQogewogICAgIGlmIChyZWRpcmVjdFJlc3BvbnNl
KQpAQCAtMzM5LDYgKzMzOCw1IEBAIE5TVVJMUmVzcG9uc2UgKnN5bnRoZXNpemVSZWRpcmVjdFJl
c3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uCiAgICAgTlNEaWN0
aW9uYXJ5ICpzeW50aGVzaXplZFJlc3BvbnNlSGVhZGVyRmllbGRzID0gQHsgQCJMb2NhdGlvbiI6
IFtbbmV3UmVxdWVzdCBVUkxdIGFic29sdXRlU3RyaW5nXSwgQCJDYWNoZS1Db250cm9sIjogQCJu
by1zdG9yZSIgfTsKICAgICByZXR1cm4gW1tbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRX
aXRoVVJMOltbY29ubmVjdGlvbiBjdXJyZW50UmVxdWVzdF0gVVJMXSBzdGF0dXNDb2RlOjMwMiBI
VFRQVmVyc2lvbjooTlNTdHJpbmcgKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6c3lu
dGhlc2l6ZWRSZXNwb25zZUhlYWRlckZpZWxkc10gYXV0b3JlbGVhc2VdOwogfQotI2VuZGlmCiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9OU1VSTERv
d25sb2FkU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvTlNVUkxEb3du
bG9hZFNQSS5oCmluZGV4IDNmM2EzYmNiOGVjNjQ4ZDRhZTVhNzAxNzVhNzU2NTE3Zjg1ZGQwZDUu
LjMwYzI4ZTczMjk4YjI3M2I4NDFlYTgxNDlhZDIyYzE2MzNhN2FjNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9OU1VSTERvd25sb2FkU1BJLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL05TVVJMRG93bmxvYWRTUEkuaApAQCAt
MjksNiArMjksMTQgQEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTERvd25sb2FkLmg+CiAK
KyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTERv
d25sb2FkUHJpdmF0ZS5oPgorI2Vsc2UKK0BpbnRlcmZhY2UgTlNVUkxEb3dubG9hZCAoKQorKyhp
ZClfZG93bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5l
Y3Rpb24gcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZXNwb25zZTooTlNVUkxSZXNw
b25zZSAqKXJlc3BvbnNlIGRlbGVnYXRlOihpZClkZWxlZ2F0ZSBwcm94eTooaWQpcHJveHk7CitA
ZW5kCisjZW5kaWYKKwogI2Vsc2UKIAogQGNsYXNzIE5TU3RyaW5nOwpAQCAtNTYsOCArNjQsMjIg
QEAKIC0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0
aEVycm9yOihOU0Vycm9yICopZXJyb3I7CiBAZW5kCiAKKyNpZm5kZWYgV2ViRG93bmxvYWRfaAor
LyogQWxzbyBkZWZpbmVkIGluIDxXZWJLaXQvV2ViRG93bmxvYWQuaD4uICovCitAaW50ZXJmYWNl
IE5TVVJMRG93bmxvYWQgOiBOU09iamVjdAorQGVuZAorI2VuZGlmCisKIEBpbnRlcmZhY2UgTlNV
UkxEb3dubG9hZCAoKQogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1
ZXN0ICopcmVxdWVzdCBkZWxlZ2F0ZTooaWQgPE5TVVJMRG93bmxvYWREZWxlZ2F0ZT4pZGVsZWdh
dGU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZXN1bWVEYXRhOihOU0RhdGEgKilyZXN1bWVE
YXRhIGRlbGVnYXRlOihpZCA8TlNVUkxEb3dubG9hZERlbGVnYXRlPilkZWxlZ2F0ZSBwYXRoOihO
U1N0cmluZyAqKXBhdGg7CistICh2b2lkKWNhbmNlbDsKKy0gKHZvaWQpc2V0RGVzdGluYXRpb246
KE5TU3RyaW5nICopcGF0aCBhbGxvd092ZXJ3cml0ZTooQk9PTClhbGxvd092ZXJ3cml0ZTsKK0Bw
cm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TVVJMUmVxdWVzdCAqcmVxdWVzdDsKK0Bwcm9wZXJ0
eSAocmVhZG9ubHksIGNvcHkpIE5TRGF0YSAqcmVzdW1lRGF0YTsKK0Bwcm9wZXJ0eSBCT09MIGRl
bGV0ZXNGaWxlVXBvbkZhaWx1cmU7CisKKysoaWQpX2Rvd25sb2FkV2l0aExvYWRpbmdDb25uZWN0
aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3QgcmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBkZWxlZ2F0ZTooaWQp
ZGVsZWdhdGUgcHJveHk6KGlkKXByb3h5OwogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL01p
c2MvV2ViRG93bmxvYWQuaAppbmRleCBlMjQyZTZkYjljOTdmODhkYmE4YjFlMGFmZWFhODc0YWM1
MWZiNTQ5Li5jYWE1NTcwYTU2MGUzM2YxZmI5Zjg5YWJiODg1YzJkMTM1MzgyODQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkLmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZC5oCkBAIC0yNiw2ICsyNiw5IEBACiAgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKKyNpZm5kZWYgV2ViRG93bmxvYWRfaAorI2RlZmluZSBXZWJEb3dubG9hZF9oCisK
ICNpZiAhVEFSR0VUX09TX0lQSE9ORSB8fCAoZGVmaW5lZCBVU0VfQVBQTEVfSU5URVJOQUxfU0RL
ICYmIFVTRV9BUFBMRV9JTlRFUk5BTF9TREspCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMRG93
bmxvYWQuaD4KICNlbHNlCkBAIC03OCwzICs4MSw1IEBACiAtIChOU1dpbmRvdyAqKWRvd25sb2Fk
V2luZG93Rm9yQXV0aGVudGljYXRpb25TaGVldDooV2ViRG93bmxvYWQgKilkb3dubG9hZDsKIAog
QGVuZAorCisjZW5kaWYgLyogV2ViRG93bmxvYWRfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2Vi
RG93bmxvYWQubW0KaW5kZXggNjgwZjY5ZWNlNTA2ZjY2YTM4OTgxYWViODJiNjA1MGJkZjNlZDdm
OC4uNjhjZjY1YTMyYWE1M2NhNjhmMmUzMzlkYjhhNjM2ODQ2MzJmM2M0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tCkBAIC00MCwxMSArNDAsNiBAQAogCiAjaW1wb3J0ICJX
ZWJUeXBlc0ludGVybmFsLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3
b3JrL0NGTmV0d29yay5oPgotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvbi5oPgot
I2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAY2xhc3MgTlNVUkxDb25uZWN0
aW9uRGVsZWdhdGVQcm94eTsKQEAgLTYwLDE1ICs1NSw2IEBAIC0gKGlkKV9pbml0V2l0aExvYWRp
bmdDb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCiAtIChpZClfaW5pdFdp
dGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiAgICAgICAgICAgICAgIGRlbGVnYXRl
OihpZClkZWxlZ2F0ZQogICAgICAgICAgICAgIGRpcmVjdG9yeTooTlNTdHJpbmcgKilkaXJlY3Rv
cnk7Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotLSAoaWQpX2luaXRXaXRoTG9hZGluZ0NGVVJMQ29u
bmVjdGlvbjooQ0ZVUkxDb25uZWN0aW9uUmVmKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3Q6KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eTooTlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQ
cm94eSAqKXByb3h5OwotI2VuZGlmCi0KIEBlbmQKIAogQGludGVyZmFjZSBXZWJEb3dubG9hZElu
dGVybmFsIDogTlNPYmplY3QgPE5TVVJMRG93bmxvYWREZWxlZ2F0ZT4KQEAgLTI0MiwxOCArMjI4
LDYgQEAgLSAoaWQpX2luaXRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAq
KWNvbm5lY3Rpb24KICAgICByZXR1cm4gW3N1cGVyIF9pbml0V2l0aExvYWRpbmdDb25uZWN0aW9u
OmNvbm5lY3Rpb24gcmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJlc3BvbnNlIGRlbGVnYXRlOl93
ZWJJbnRlcm5hbCBwcm94eTpwcm94eV07CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotLSAoaWQp
X2luaXRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjooQ0ZVUkxDb25uZWN0aW9uUmVmKWNvbm5l
Y3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6KENGVVJMUmVxdWVz
dFJlZilyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOihDRlVS
TFJlc3BvbnNlUmVmKXJlc3BvbnNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVn
YXRlOihpZClkZWxlZ2F0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eToo
TlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eSAqKXByb3h5Ci17Ci0gICAgW3NlbGYgX3NldFJl
YWxEZWxlZ2F0ZTpkZWxlZ2F0ZV07Ci0gICAgcmV0dXJuIFtzdXBlciBfaW5pdFdpdGhMb2FkaW5n
Q0ZVUkxDb25uZWN0aW9uOmNvbm5lY3Rpb24gcmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJlc3Bv
bnNlIGRlbGVnYXRlOl93ZWJJbnRlcm5hbCBwcm94eTpwcm94eV07Ci19Ci0jZW5kaWYKLQogLSAo
aWQpX2luaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogICAgICAgICAgICAg
ICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAgICBkaXJlY3Rvcnk6KE5TU3RyaW5n
ICopZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25s
b2FkSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWRJbnRlcm5h
bC5oCmluZGV4IDliMmYzOTU4NWQ5NGE4ZjViMDVkMzMzMGFjYjgxMjM3YmQwZGI5NjkuLmMxZDIx
OTI2MTk1MmE0NjdjYjNhNjlhYjYxYTU4OTRiOGEwM2FkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oCkBAIC0yOCwxMCArMjgsNiBAQAogIAogI2lt
cG9ydCA8V2ViS2l0TGVnYWN5L1dlYkRvd25sb2FkLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
I2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvbi5oPgotI2VuZGlmCi0gCiBAaW50ZXJm
YWNlIFdlYkRvd25sb2FkIChXZWJEb3dubG9hZENyZWF0aW9uKQogKyhpZClfZG93bmxvYWRXaXRo
TG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CkBAIC00
MiwxMyArMzgsNCBAQAogKyhpZClfZG93bmxvYWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdAogICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAg
ICAgICAgICBkaXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5OwotCi0jaWYgVVNFKENGTkVU
V09SSykKLSsgKGlkKV9kb3dubG9hZFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOihDRlVSTENv
bm5lY3Rpb25SZWYpY29ubmVjdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3Q6KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNwb25zZQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eTooaWQpcHJveHk7Ci0jZW5kaWYKLQogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tz
LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdFZlcnNpb25DaGVja3MuaAppbmRleCBj
ODExMjAxMjVkNGRmYjY5MzFhZmVkNDFlZDEwMDE5YmYwN2JmZGY0Li5iNTMzMzU0YzM3MTJiZjA2
NzlmMzk4NjNiYWViNWUxMmUzZGIzNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9N
aXNjL1dlYktpdFZlcnNpb25DaGVja3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
YktpdFZlcnNpb25DaGVja3MuaApAQCAtNzIsNiArNzIsNyBAQAogI2RlZmluZSBXRUJLSVRfRklS
U1RfVkVSU0lPTl9XSVRIX0NTU19BVFRSSUJVVEVfU0VUVEVSU19JR05PUklOR19QUklPUklUWSAy
MjM5IC8vIGlPUyA2LjAKICNkZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9ZT1VUVUJF
X0VNQkVEX0lGUkFNRV9UUkFOU0ZPUk0gMjIzOSAvLyBpT1MgNi4wCiAjZGVmaW5lIFdFQktJVF9G
SVJTVF9WRVJTSU9OX1dJVEhPVVRfTEVHQUNZX0JBQ0tHUk9VTkRTSVpFX1NIT1JUSEFORF9CRUhB
VklPUiAyNjY1IC8vIGlPUyA3LjAKKyNkZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9M
T0FESU5HX0RVUklOR19DT01NT05fUlVOTE9PUF9NT0RFUyAyNjY1IC8vIGlPUyA3LjAKICNkZWZp
bmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9JTlNFQ1VSRV9DT05URU5UX0JMT0NLSU5HIDM0
NTQKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggZDJlYWY5
NDM1OTNkOTk3YzAzYjdiNjA3NzE2ZGI1MTgyNWM5Y2RjOC4uNzI1OTk4ZmIyMjIxMzllNzI4ODA5
NjA4OGY5MDk4MThiNzBiODU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTMwMSwxMyArMzAxLDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2MKIAogICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUg
PSBtYWluUmVzb3VyY2VMb2FkZXItPmhhbmRsZSgpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLSAg
ICBBU1NFUlQoW1dlYkRvd25sb2FkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25s
b2FkV2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246cmVxdWVzdDpyZXNwb25zZTpkZWxlZ2F0ZTpw
cm94eTopXSk7Ci0gICAgYXV0byBjb25uZWN0aW9uID0gaGFuZGxlLT5yZWxlYXNlQ29ubmVjdGlv
bkZvckRvd25sb2FkKCk7Ci0gICAgW1dlYkRvd25sb2FkIF9kb3dubG9hZFdpdGhMb2FkaW5nQ0ZV
UkxDb25uZWN0aW9uOmNvbm5lY3Rpb24uZ2V0KCkgcmVxdWVzdDpyZXF1ZXN0LmNmVVJMUmVxdWVz
dChVcGRhdGVIVFRQQm9keSkgcmVzcG9uc2U6cmVzcG9uc2UuY2ZVUkxSZXNwb25zZSgpIGRlbGVn
YXRlOlt3ZWJWaWV3IGRvd25sb2FkRGVsZWdhdGVdIHByb3h5Om5pbF07Ci0jZWxzZQogICAgIFtX
ZWJEb3dubG9hZCBfZG93bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246aGFuZGxlLT5jb25uZWN0
aW9uKCkgcmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkgcmVzcG9u
c2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpIGRlbGVnYXRlOlt3ZWJWaWV3IGRvd25sb2FkRGVs
ZWdhdGVdIHByb3h5Om5pbF07Ci0jZW5kaWYKIH0KIAogYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgaW50IGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCAxNGMxYmM2YzZi
NjFlZTVjNmNjODQ2NjE1YzQ4OWQzYWQ0ZTRjMTMyLi40ZDJiOGU5MjNkMzM4NWExNjU3ZGU5NjUz
NmRhOWViZGMwYzhmMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC0xMTcsMTMgKzExNyw2IEBAIHZvaWQg
SW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBJTklUKEN1cnNvcik7CiAjZW5k
aWYKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgSU5JVChHZXREZWZhdWx0SFRUUENvb2tpZVN0
b3JhZ2UpOwotICAgIElOSVQoQ29weUNyZWRlbnRpYWxGcm9tQ0ZQZXJzaXN0ZW50U3RvcmFnZSk7
Ci0gICAgSU5JVChTZXRDRlVSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYpOwotICAgIElOSVQo
U2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKTsKLSNlbmRpZgotCiAjaWYgIVBMQVRGT1JNKElPUykK
ICAgICBJTklUKFNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMpOwogICAgIElOSVQo
U3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQppbmRleCAwMTBmYThiNzc3
MjlkMGM0ZWFlNmI0OWY5MzFkZTA0OTI2ZDNjYjI3Li40MjhhZmI3M2I2NzFiNDQ2NjA2NmE5OGM1
YzQ5OGY4YjMwOGI5YjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZXMubW0KQEAgLTE3NjYsNyArMTc2Niw3IEBAICsgKHZvaWQpX2NsZWFyTmV0d29ya0xvYWRl
clNlc3Npb24KICsgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFj
Y2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQogewogICAgIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7Ci0gICAg
QVNTRVJUKGNvb2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBidWlsZGluZyB3aXRob3V0
IFVTRShDRk5FVFdPUkspIGFuZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVz
dGluZ1Nlc3Npb24oKSB3YXMgbm90IGNhbGxlZCBiZWZvcmVoYW5kLgorICAgIEFTU0VSVChjb29r
aWVTdG9yYWdlKTsgLy8gV2lsbCBmYWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0
Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KICAgICBX
S1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGNkYTNmNTg4ZTg2YjY2
YzRjNGZmZWQ2NjM5MTM4Zjg0NmRkODMxOWIuLmM5YjVjYWRkYzJlN2RkNjRhZjNkMmFlZTYzYWE2
NzBiMDU3NWNmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTEwMjgs
MTIgKzEwMjgsMTMgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1l
OihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKIAogI2lmICFQTEFURk9STShJ
T1MpCiAgICAgTlNSdW5Mb29wICpydW5Mb29wID0gW05TUnVuTG9vcCBtYWluUnVuTG9vcF07Ci0K
KyNlbHNlCisgICAgTlNSdW5Mb29wICpydW5Mb29wID0gV2ViVGhyZWFkTlNSdW5Mb29wKCk7Cisj
ZW5kaWYKICAgICBpZiAoV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9O
X1dJVEhfTE9BRElOR19EVVJJTkdfQ09NTU9OX1JVTkxPT1BfTU9ERVMpKQogICAgICAgICBbc2Vs
ZiBzY2hlZHVsZUluUnVuTG9vcDpydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopa0NGUnVuTG9v
cENvbW1vbk1vZGVzXTsKICAgICBlbHNlCiAgICAgICAgIFtzZWxmIHNjaGVkdWxlSW5SdW5Mb29w
OnJ1bkxvb3AgZm9yTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZV07Ci0jZW5kaWYKIAogICAgIFtz
ZWxmIF9hZGRUb0FsbFdlYlZpZXdzU2V0XTsKICAgICAKQEAgLTY2MTgsMjkgKzY2MTksMTkgQEAg
QGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViUGVuZGluZ1B1YmxpYykKIAotI2lm
ICFQTEFURk9STShJT1MpCiAtICh2b2lkKXNjaGVkdWxlSW5SdW5Mb29wOihOU1J1bkxvb3AgKily
dW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZQogewotI2lmIFVTRShDRk5FVFdPUkspCi0g
ICAgQ0ZSdW5Mb29wUmVmIHNjaGVkdWxlUGFpclJ1bkxvb3AgPSBbcnVuTG9vcCBnZXRDRlJ1bkxv
b3BdOwotI2Vsc2UKICAgICBOU1J1bkxvb3AgKnNjaGVkdWxlUGFpclJ1bkxvb3AgPSBydW5Mb29w
OwotI2VuZGlmCiAgICAgaWYgKHJ1bkxvb3AgJiYgbW9kZSkKICAgICAgICAgY29yZShzZWxmKS0+
YWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHNjaGVkdWxlUGFpclJ1bkxvb3As
IChDRlN0cmluZ1JlZiltb2RlKSk7CiB9CiAKIC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5Mb29w
OihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZQogewotI2lmIFVT
RShDRk5FVFdPUkspCi0gICAgQ0ZSdW5Mb29wUmVmIHNjaGVkdWxlUGFpclJ1bkxvb3AgPSBbcnVu
TG9vcCBnZXRDRlJ1bkxvb3BdOwotI2Vsc2UKICAgICBOU1J1bkxvb3AgKnNjaGVkdWxlUGFpclJ1
bkxvb3AgPSBydW5Mb29wOwotI2VuZGlmCiAgICAgaWYgKHJ1bkxvb3AgJiYgbW9kZSkKICAgICAg
ICAgY29yZShzZWxmKS0+cmVtb3ZlU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHNj
aGVkdWxlUGFpclJ1bkxvb3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CiB9Ci0jZW5kaWYKIAogc3Rh
dGljIEJPT0wgZmluZFN0cmluZyhOU1ZpZXcgPFdlYkRvY3VtZW50U2VhcmNoaW5nPiAqc2VhcmNo
VmlldywgTlNTdHJpbmcgKnN0cmluZywgV2ViRmluZE9wdGlvbnMgb3B0aW9ucykKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCA3OTZjMGY0MmE3Njk5
ZjE4NmYwZTRjMDM3ZDExNDY3YzQ2YjEwMjk0Li5mNDMwNDk5NjQ1ZDdmOTUwMDdjMWNiYTBlOWNm
YWMwMTk4Y2YzYzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oCkBAIC0xOTgsMTAgKzE5OCw4IEBAIHR5cGVkZWYgZW51bSB7CiAKIEBpbnRlcmZhY2UgV2Vi
VmlldyAoV2ViUGVuZGluZ1B1YmxpYykKIAotI2lmICFUQVJHRVRfT1NfSVBIT05FCiAtICh2b2lk
KXNjaGVkdWxlSW5SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5n
ICopbW9kZTsKIC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5Mb29wOihOU1J1bkxvb3AgKilydW5M
b29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZTsKLSNlbmRpZgogCiAtIChCT09MKWZpbmRTdHJp
bmc6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KFdlYkZpbmRPcHRpb25zKW9wdGlvbnM7CiAt
IChET01SYW5nZSAqKURPTVJhbmdlT2ZTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHJlbGF0aXZl
VG86KERPTVJhbmdlICopcHJldmlvdXNSYW5nZSBvcHRpb25zOihXZWJGaW5kT3B0aW9ucylvcHRp
b25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKaW5kZXgg
ODA1ZmEyN2Q1NjAxYmRmZmExZmJlNGI4ZWZmYjNlYzQ1YWNhZDE3Yi4uMjdlZjNiZDAwMzdhNzZh
MDExNjg4MWNiMzhlMTQxYmRmY2I4OTdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5oCkBAIC05NCwxMiArOTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBDRkFy
cmF5UmVmKSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotI2lmIFVTRShD
Rk5FVFdPUkspCi0gICAgdmlydHVhbCB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlQXN5bmMoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKLSNl
bHNlCiAgICAgdmlydHVhbCB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlICopIG92ZXJyaWRlOwogI2VuZGlmCi0j
ZW5kaWYKICNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQogCiAjaWYgVVNFKFBST1RFQ1RJ
T05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAxOWFiYzlhYmZmMDU3YmYwM2Y1MmE4OTdiYTU0
NmE4ZTllZWJjMWFlLi44ZThlNzQ0ZTMzOTE3MjUxZDZkNzMyMTY5Mzc3YzdjZTAzMzJiODZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWUKIAogICAgIHNldENh
bkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKHBhcmFtZXRlcnMuY2FuSGFuZGxlSFRU
UFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24pOwogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFNlc3Npb25UcmFja2VyOjpzZXRJZGVu
dGlmaWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpOwogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3Jr
TG9hZE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9h
ZE1hYy5tbQppbmRleCBmM2M2ZWNiYmIwMWExNjAyOWY4ZGVjZjljNGMxYzM4YTAyN2FjMDc5Li4z
ZDYyNWM4ZTI2YmZmN2RlNDhiZjdhNWYxZjA0MDk4Yjg4YzZmYzE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCkBAIC0zNCwx
OCArMzQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi12b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNw
b25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYg
Y2ZSZXNwb25zZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFu
ZGxlKTsKLQotICAgIG1fY2xpZW50LndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoY2ZSZXNwb25zZSk7
Ci0KLSAgICBtX2hhbmRsZS0+Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShjZlJlc3BvbnNlKTsK
LX0KLQotI2VsaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCisjaWYgIVVTRShORVRXT1JLX1NFU1NJ
T04pCiAKIHZvaWQgTmV0d29ya0xvYWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwgTlNDYWNoZWRVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkKIHsKQEAgLTU2
LDYgKzQ1LDYgQEAgdm9pZCBOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNv
dXJjZUhhbmRsZSogaGFuZGxlLCBOU0NhY2hlZFVSTFJlc3AKICAgICBtX2hhbmRsZS0+Y29udGlu
dWVXaWxsQ2FjaGVSZXNwb25zZShuc1Jlc3BvbnNlKTsKIH0KIAotI2VuZGlmIC8vICFVU0UoQ0ZO
RVRXT1JLKQorI2VuZGlmIC8vICFVU0UoTkVUV09SS19TRVNTSU9OKQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93
bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAppbmRl
eCA2MzA1ODBmMzUxNzBlMmEzZTQ5Y2Y1N2IwMzgzOTI1MWRjY2M4MTEyLi5iOGRiNmUxZTFlYWNi
ZDdkYWM0NjgxMTRjNzIwNGUyY2VjZDljMzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rv
d25sb2Fkcy9Eb3dubG9hZC5oCkBAIC00OCwxMCArNDgsNiBAQCBPQkpDX0NMQVNTIFdLRG93bmxv
YWRBc0RlbGVnYXRlOwogI2luY2x1ZGUgPG1lbW9yeT4KICNlbmRpZgogCi0jaWYgVVNFKENGTkVU
V09SSykKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxEb3dubG9hZFByaXYuaD4KLSNlbmRpZgot
CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CkBAIC0xMDUsMTAgKzEw
MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSk7CiAgICAgdm9pZCBk
aWRDYW5jZWwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsKIAotI2lmIFVT
RShDRk5FVFdPUkspCi0gICAgRG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0aGVudGlj
YXRpb25DbGllbnQoKTsKLSNlbmRpZgotCiAgICAgLy8gQXV0aGVudGljYXRpb24KICAgICBzdGF0
aWMgdm9pZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik7CiAgICAgc3RhdGljIHZvaWQg
cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CkBAIC0xNDIsMTAgKzEzNCw2IEBAIHByaXZhdGU6
CiAgICAgUmV0YWluUHRyPFdLRG93bmxvYWRBc0RlbGVnYXRlPiBtX2RlbGVnYXRlOwogI2VuZGlm
CiAjZW5kaWYKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIFJldGFpblB0cjxDRlVSTERvd25sb2Fk
UmVmPiBtX2Rvd25sb2FkOwotICAgIFJlZlB0cjxEb3dubG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50
PiBtX2F1dGhlbnRpY2F0aW9uQ2xpZW50OwotI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQ
TEFURk9STShFRkwpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZT4gbV9yZXNvdXJjZUhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rv
d25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQwZTgwZTYyMDM4NGMxNzgwMTcwMTM4NjFmNzUyMDhlNzViNWNjMDkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rv
d25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxOTYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRG93bmxvYWQuaCIK
LQotI2lmIFBMQVRGT1JNKElPUykgJiYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0KLSNpbXBvcnQg
IkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJj
ZUhhbmRsZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Ci0jaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgotCi0jaWYgVVNFKENG
TkVUV09SSykKLSNpbXBvcnQgPENGTmV0d29yay9DRlVSTERvd25sb2FkLmg+Ci0jZW5kaWYKLQot
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0jaWYgVVNF
KENGTkVUV09SSykKLS8vIEZJWE1FOiBJZiBwb3NzaWJsZSwgd2Ugc2hvdWxkIGNvbnNpZGVyIG1v
dmluZyBzb21lIGNhbGxiYWNrcyBvZmYgdGhlIG1haW4gdGhyZWFkIG9yIGF0IGxlYXN0Ci0vLyBt
YWtpbmcgdGhlbSBhc3luY2hvbm91cyBjYWxscy4KLXN0YXRpYyB2b2lkIGRpc3BhdGNoT25NYWlu
VGhyZWFkKHZvaWQoXmJsb2NrKSgpKQotewotICAgIGlmIChSdW5Mb29wOjppc01haW4oKSkgewot
ICAgICAgICBibG9jaygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZGlzcGF0Y2hf
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBibG9jayk7Ci19Ci0KLXN0YXRpYyBpbmxp
bmUgRG93bmxvYWQqIHRvRG93bmxvYWQoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RG93bmxvYWQqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldFVwRG93bmxvYWRDbGllbnQoQ0ZVUkxEb3dubG9hZENs
aWVudCYgY2xpZW50LCBEb3dubG9hZCYgZG93bmxvYWQpCi17Ci0gICAgbWVtc2V0KCZjbGllbnQs
IDAsIHNpemVvZihjbGllbnQpKTsKLSAgICBjbGllbnQuY2xpZW50SW5mbyA9ICZkb3dubG9hZDsK
LQotICAgIGNsaWVudC5kaWRTdGFydCA9IFtdKENGVVJMRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAg
ICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFN0YXJ0KCk7Ci0gICAgICAgIH0pOwotICAg
IH07Ci0KLSAgICBjbGllbnQud2lsbFNlbmRSZXF1ZXN0ID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwg
Q0ZVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIENGVVJMUmVzcG9uc2VSZWYsIGNvbnN0IHZvaWQqKSAt
PiBDRlVSTFJlcXVlc3RSZWYgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZVUkxSZXF1
ZXN0UmVmPihDRlJldGFpbihyZXF1ZXN0KSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC5kaWRSZWNl
aXZlUmVzcG9uc2UgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlVSTFJlc3BvbnNlUmVmIHJlc3Bv
bnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhy
ZWFkKF57Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZFJl
Y2VpdmVEYXRhID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZJbmRleCBsZW5ndGgsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAg
ICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFJlY2VpdmVEYXRhKGxlbmd0aCk7Ci0g
ICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuc2hvdWxkRGVjb2RlRGF0YU9mTUlNRVR5
cGUgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlN0cmluZ1JlZiBlbmNvZGluZ1R5cGUsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pIC0+IEJvb2xlYW4gewotICAgICAgICBfX2Jsb2NrIEJPT0wgcmV0
dXJuVmFsdWUgPSBOTzsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAg
ICAgIHJldHVyblZhbHVlID0gdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+c2hvdWxkRGVjb2RlU291
cmNlRGF0YU9mTUlNRVR5cGUoZW5jb2RpbmdUeXBlKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZE9iamVjdE5hbWUgPSBbXShDRlVSTERvd25sb2FkUmVmIGRvd25sb2FkUmVm
LCBDRlN0cmluZ1JlZiBvYmplY3ROYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAg
ICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICBib29sIGFsbG93T3Zlcndy
aXRlOwotICAgICAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gdG9Eb3dubG9hZChjbGllbnRJ
bmZvKS0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUob2JqZWN0TmFtZSwg
YWxsb3dPdmVyd3JpdGUpOwotICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkK
LSAgICAgICAgICAgICAgICBDRlVSTERvd25sb2FkU2V0RGVzdGluYXRpb24oZG93bmxvYWRSZWYs
IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZGVzdGlu
YXRpb25dKSwgYWxsb3dPdmVyd3JpdGUpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xp
ZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZVUkxSZWYg
cGF0aCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRo
cmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlkQ3JlYXRlRGVz
dGluYXRpb24oQ0ZVUkxHZXRTdHJpbmcocGF0aCkpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0g
ICAgY2xpZW50LmRpZEZpbmlzaCA9IFtdKENGVVJMRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAg
IHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZEZpbmlzaCgpOwotICAgICAgICB9KTsKLSAgICB9
OwotCi0gICAgY2xpZW50LmRpZEZhaWwgPSBbXShDRlVSTERvd25sb2FkUmVmIGRvd25sb2FkUmVm
LCBDRkVycm9yUmVmIGVycm9yLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRp
c3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICBhdXRvIHJlc3VtZURhdGEgPSBhZG9w
dENGKENGVVJMRG93bmxvYWRDb3B5UmVzdW1lRGF0YShkb3dubG9hZFJlZikpOwotICAgICAgICAg
ICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlkRmFpbChlcnJvciwgSVBDOjpEYXRhUmVmZXJl
bmNlKHJlc3VtZURhdGEgPyBDRkRhdGFHZXRCeXRlUHRyKHJlc3VtZURhdGEuZ2V0KCkpIDogbnVs
bHB0ciwgcmVzdW1lRGF0YSA/IENGRGF0YUdldExlbmd0aChyZXN1bWVEYXRhLmdldCgpKSA6IDAp
KTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLX0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCi12
b2lkIERvd25sb2FkOjpzdGFydCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9p
ZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKFJlc291cmNlSGFuZGxl
KiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotI2lmIFVTRShD
Rk5FVFdPUkspCi0gICAgQ0ZVUkxEb3dubG9hZENsaWVudCBjbGllbnQ7Ci0gICAgc2V0VXBEb3du
bG9hZENsaWVudChjbGllbnQsICp0aGlzKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNo
Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0
aW9ucyIKLSAgICBtX2Rvd25sb2FkID0gYWRvcHRDRihDRlVSTERvd25sb2FkQ3JlYXRlQW5kU3Rh
cnRXaXRoTG9hZGluZ0Nvbm5lY3Rpb24oTlVMTCwgaGFuZGxlLT5yZWxlYXNlQ29ubmVjdGlvbkZv
ckRvd25sb2FkKCkuZ2V0KCksIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkp
LCByZXNwb25zZS5jZlVSTFJlc3BvbnNlKCksICZjbGllbnQpKTsKLSNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwb3AKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgotfQotCi12
b2lkIERvd25sb2FkOjpjYW5jZWwoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgRG93bmxvYWQ6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1EaWRGaW5pc2goKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkUmVxdWVzdFRvQ29u
dGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRDYW5j
ZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURl
ZmF1bHRIYW5kbGluZyhjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRDaGFs
bGVuZ2VSZWplY3Rpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93
bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQppbmRleCA5YzdkOTUzMzg1ZWY2M2E2NmRmNzU2Mjcx
OGVjOGE3NmQ3ZGZiOTY1Li40ZmU1M2FjNjU0YzBlMDBkYzJjY2U5ODg5OWRmNjAwMzRkYmJmOGU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9h
ZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9h
ZE1hYy5tbQpAQCAtMjYsMTAgKzI2LDExIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IkRvd25sb2FkLmgiCiAKLSNpZiBQTEFURk9STShNQUMpICYmICFVU0UoTkVUV09SS19TRVNTSU9O
KQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKE5FVFdPUktfU0VTU0lPTikKIAogI2ltcG9y
dCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9B
dXRoZW50aWNhdGlvbk1hYy5oPgorI2ltcG9ydCA8V2ViQ29yZS9OU1VSTERvd25sb2FkU1BJLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jl
c291cmNlSGFuZGxlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+
CkBAIC0zNywxNCArMzgsNiBAQAogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAi
V2ViUGFnZS5oIgogCi1AaW50ZXJmYWNlIE5TVVJMRG93bmxvYWQgKFdlYk5TVVJMRG93bmxvYWRE
ZXRhaWxzKQotKyhpZClfZG93bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29ubmVj
dGlvbiAqKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OihO
U1VSTFJlcXVlc3QgKilyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25z
ZTooTlNVUkxSZXNwb25zZSAqKXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRl
OihpZClkZWxlZ2F0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6KGlkKXBy
b3h5OwotQGVuZAotCiBAaW50ZXJmYWNlIFdLRG93bmxvYWRBc0RlbGVnYXRlIDogTlNPYmplY3Qg
PE5TVVJMRG93bmxvYWREZWxlZ2F0ZT4gewogICAgIFdlYktpdDo6RG93bmxvYWQqIF9kb3dubG9h
ZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAppbmRleCA2YWYzMTdlZGNjY2IzZjM3OGVkODk0OTFjNGFkZjdiNmNl
YjFiYmU5Li5lZDA1ZmY2MjViYjI5MGJiOWZmOGUzMjc4YjAyYWRmY2NkNWIwNTRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5j
b2RlciA8PCB0ZXh0Q2hlY2tlclN0YXRlOwogICAgIGVuY29kZXIgPDwgZnVsbEtleWJvYXJkQWNj
ZXNzRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFs
OwotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcjsKICNlbmRpZgog
I2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMjMwLDcgKzIzMCw3IEBAIGJvb2wgV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBX
ZWJQcm9jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1
bmRsZUlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmlu
ZGV4IDJmODBjNjNkNzgzNTQ5MDllZWFkNTJlNjhiNGY4MjljMWMxNzk1NjIuLjAzMzUwMTEwMmM0
YWZkOGU0NDZhZmY3N2EwMWM0MDcwNWQ0NmQ4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTIxLDcgKzEyMSw3
IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIGRvdWJsZSBk
ZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbDsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBV
U0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFN0cmluZyB1aVByb2Nlc3NC
dW5kbGVJZGVudGlmaWVyOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KaW5kZXggZGZmYjNlMDYzZDU2YWRh
MTdkNWNkNTRjZmUxNWUwMzA5OGM1YWUxNS4uZDBkNGM3MDg1MWRlOTk4YWI5ZWQyOWI1ZTgwOTEx
ZjkyZmRjNmIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJD
b3JlQXJndW1lbnRDb2RlcnNNYWMubW0KQEAgLTM5LDEwICszOSw2IEBACiAjaW1wb3J0IDxXZWJD
b3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdC5o
PgotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogI2ltcG9y
dCA8V2ViQ29yZS9BVkZvdW5kYXRpb25TUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQuaD4KQEAgLTU3LDM2ICs1Myw2IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBuYW1lc3BhY2UgSVBDIHsKIAotI2lmIFVTRShDRk5FVFdPUkspCi12b2lkIEFy
Z3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3Qp
Ci17Ci0gICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gcmVxdWVzdFRvU2VyaWFsaXplID0g
cmVzb3VyY2VSZXF1ZXN0LmNmVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKLQotICAg
IGJvb2wgcmVxdWVzdElzUHJlc2VudCA9IHJlcXVlc3RUb1NlcmlhbGl6ZTsKLSAgICBlbmNvZGVy
IDw8IHJlcXVlc3RJc1ByZXNlbnQ7Ci0KLSAgICBpZiAoIXJlcXVlc3RJc1ByZXNlbnQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIC8vIFdlIGRvbid0IHNlbmQgSFRUUCBib2R5IG92ZXIgSVBDIGZv
ciBiZXR0ZXIgcGVyZm9ybWFuY2UuCi0gICAgLy8gQWxzbywgaXQncyBub3QgYWx3YXlzIHBvc3Np
YmxlIHRvIGRvLCBhcyBzdHJlYW1zIGNhbiBvbmx5IGJlIGNyZWF0ZWQgaW4gcHJvY2VzcyB0aGF0
IGRvZXMgbmV0d29ya2luZy4KLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByZXF1ZXN0SFRUUEJv
ZHkgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdEJvZHkocmVxdWVzdFRvU2Vy
aWFsaXplLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gcmVxdWVzdEhU
VFBCb2R5U3RyZWFtID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5U3Ry
ZWFtKHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSkpOwotICAgIGlmIChyZXF1ZXN0SFRUUEJvZHkg
fHwgcmVxdWVzdEhUVFBCb2R5U3RyZWFtKSB7Ci0gICAgICAgIENGTXV0YWJsZVVSTFJlcXVlc3RS
ZWYgbXV0YWJsZVJlcXVlc3QgPSBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgwLCByZXF1
ZXN0VG9TZXJpYWxpemUuZ2V0KCkpOwotICAgICAgICByZXF1ZXN0VG9TZXJpYWxpemUgPSBhZG9w
dENGKG11dGFibGVSZXF1ZXN0KTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RC
b2R5KG11dGFibGVSZXF1ZXN0LCBuaWwpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVx
dWVzdEJvZHlTdHJlYW0obXV0YWJsZVJlcXVlc3QsIG5pbCk7Ci0gICAgfQotCi0gICAgUmV0YWlu
UHRyPENGRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeSA9IGFkb3B0Q0YoV0tDRlVSTFJlcXVlc3RD
cmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCks
IElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7Ci0gICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZGlj
dGlvbmFyeS5nZXQoKSk7Ci0KLSAgICAvLyBUaGUgZmFsbGJhY2sgYXJyYXkgaXMgcGFydCBvZiBD
RlVSTFJlcXVlc3QsIGJ1dCBpdCBpcyBub3QgZW5jb2RlZCBieSBXS0NGVVJMUmVxdWVzdENyZWF0
ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uLgotICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXF1
ZXN0LnJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KCk7Ci0g
ICAgZW5jb2Rlci5lbmNvZGVFbnVtKHJlc291cmNlUmVxdWVzdC5yZXF1ZXN0ZXIoKSk7Ci19Ci0j
ZWxzZQogdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3Jt
RGF0YShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0KQogewogICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlcXVlc3RUb1Nl
cmlhbGl6ZSA9IHJlc291cmNlUmVxdWVzdC5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9k
eSk7CkBAIC0xMTIsNyArNzgsNiBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0
Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcgogICAgIGVuY29k
ZXIgPDwgcmVzb3VyY2VSZXF1ZXN0LnJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdG
YWxsYmFja0FycmF5KCk7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHJlc291cmNlUmVxdWVzdC5y
ZXF1ZXN0ZXIoKSk7CiB9Ci0jZW5kaWYKIAogYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVx
dWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlc291
cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewpAQCAtMTI5LDIwICs5NCwxMiBAQCBib29s
IEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKEFyZ3Vt
ZW50RGVjb2RlciYgZGVjb2RlcgogICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGljdGlv
bmFyeSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAg
UmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gY2ZVUkxSZXF1ZXN0ID0gYWRvcHRDRihXS0NyZWF0
ZUNGVVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5Lmdl
dCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOwotICAgIGlmICghY2ZVUkxSZXF1ZXN0KQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXNvdXJjZVJlcXVlc3QgPSBSZXNvdXJjZVJl
cXVlc3QoY2ZVUkxSZXF1ZXN0LmdldCgpKTsKLSNlbHNlCiAgICAgUmV0YWluUHRyPE5TVVJMUmVx
dWVzdD4gbnNVUkxSZXF1ZXN0ID0gV0tOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVz
ZW50YXRpb24oZGljdGlvbmFyeS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpOwogICAg
IGlmICghbnNVUkxSZXF1ZXN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXNvdXJj
ZVJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QobnNVUkxSZXF1ZXN0LmdldCgpKTsKLSNlbmRpZgot
ICAgIAorCiAgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNv
ZGluZ0ZhbGxiYWNrQXJyYXk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZUNvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBjY2MwYjZjZjRmZmU1NTQxY2JhYzI4N2NhNzhiYTRmY2VmNTZiZGU5Li5mNDI2NjBh
YjMwODMxODAwOThjMTdlZmUzMDVkNjQ0NWQzZjhhMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NzIsNyArNjcyLDYgQEAK
IAkJMkRBOTQ0QTIxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYlBsYXRmb3JtVG91Y2hQb2ludElPUy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDQ5
QjE4ODRFNEYwMDBFRDg2REIgLyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcCAqLzsgfTsK
IAkJMkRBOTQ0QTMxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYlRvdWNoRXZlbnRJT1MuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0OUMxODg0RTRG
MDAwRUQ4NkRCIC8qIFdlYlRvdWNoRXZlbnRJT1MuY3BwICovOyB9OwogCQkyREE5NDRBNDE4ODRF
NEYwMDBFRDg2REIgLyogR2VzdHVyZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDQ5RDE4ODRFNEYwMDBFRDg2REIgLyogR2VzdHVyZVR5
cGVzLmggKi87IH07Ci0JCTJEQTk0NEE3MTg4NEU5NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEE2
MTg4NEU5NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5tbSAqLzsgfTsKIAkJMkRBOTQ0QUQxODg0
RTlCQTAwRUQ4NkRCIC8qIFRleHRDaGVja2VySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0QTkxODg0RTlCQTAwRUQ4NkRCIC8qIFRleHRD
aGVja2VySU9TLm1tICovOyB9OwogCQkyREE5NDRBRjE4ODRFOUJBMDBFRDg2REIgLyogV2ViUGFn
ZVByb3h5SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkRBOTQ0QUIxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlBhZ2VQcm94eUlPUy5tbSAqLzsgfTsK
IAkJMkRBOTQ0QjAxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlByb2Nlc3NQcm94eUlPUy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEFDMTg4NEU5
QkEwMEVEODZEQiAvKiBXZWJQcm9jZXNzUHJveHlJT1MubW0gKi87IH07CkBAIC0yODMzLDcgKzI4
MzIsNiBAQAogCQkyREE5NDQ5QjE4ODRFNEYwMDBFRDg2REIgLyogV2ViUGxhdGZvcm1Ub3VjaFBv
aW50SU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlBsYXRm
b3JtVG91Y2hQb2ludElPUy5jcHA7IHBhdGggPSBpb3MvV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9T
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0OUMxODg0RTRGMDAwRUQ4
NkRCIC8qIFdlYlRvdWNoRXZlbnRJT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gV2ViVG91Y2hFdmVudElPUy5jcHA7IHBhdGggPSBpb3MvV2ViVG91Y2hFdmVudElP
Uy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQTk0NDlEMTg4NEU0RjAwMEVE
ODZEQiAvKiBHZXN0dXJlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
R2VzdHVyZVR5cGVzLmg7IHBhdGggPSBpb3MvR2VzdHVyZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTJEQTk0NEE2MTg4NEU5NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERvd25sb2FkSU9TLm1t
OyBwYXRoID0gRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkRBOTQ0QTkxODg0RTlCQTAwRUQ4NkRCIC8qIFRleHRDaGVja2VySU9TLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGV4dENoZWNrZXJJT1Mu
bW07IHBhdGggPSBpb3MvVGV4dENoZWNrZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJEQTk0NEFCMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQYWdlUHJveHlJT1MubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJQYWdlUHJveHlJT1MubW07
IHBhdGggPSBpb3MvV2ViUGFnZVByb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyREE5NDRBQzE4ODRFOUJBMDBFRDg2REIgLyogV2ViUHJvY2Vzc1Byb3h5SU9TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViUHJvY2Vzc1Byb3h5SU9T
Lm1tOyBwYXRoID0gaW9zL1dlYlByb2Nlc3NQcm94eUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTUxNDgsNyArNTE0Niw2IEBACiAJCTJEQTk0NEE1MTg4NEU5M0MwMEVEODZE
QiAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CTJEQTk0NEE2MTg4NEU5NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5tbSAqLywKIAkJCSk7CiAJ
CQluYW1lID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTk1MTYsNyArOTUx
Myw2IEBACiAJCQkJNTE4RThGMDcxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxOEU4RjA5MTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZEF1dGhl
bnRpY2F0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExREY2MzEyMThFMEI3Qzgw
MDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTJEQTk0NEE3
MTg4NEU5NDgwMEVEODZEQiAvKiBEb3dubG9hZElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUx
OEU4RjBEMTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTUxOEU4RjBCMTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZE1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUFCN0Q0Q0IxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHku
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDVkZWMzN2FlNWU1
ZmM2NTU3OTM1ZDMxYWNhMjJlYWM1YTYxOTBjMDEuLjliODJjODM5MDA1Mjc4MmJmZTFkNjJkZDM5
ZDUzY2NiY2MyMmViMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0yODcsNyArMjg3LDcg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChX
ZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3UKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFByaXZh
dGVCcm93c2luZ0VuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgYm9vbCBlbmFi
bGVkKQogewogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFRoaXMgdGVzdC1vbmx5IGZ1
bmN0aW9uIGRvZXNuJ3Qgd29yayB3aXRoIE5ldHdvcmtQcm9jZXNzLCA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTI3ND4uCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
U09VUCkKICAgICBpZiAoZW5hYmxlZCkKICAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uSUQoKSk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1t
CmluZGV4IDAzZjI4ODIzMDIxMTM2ZmUwOGRkMmY3M2M1NGFiYjM1ZjMzYjhlOGYuLmM3MTg1YmZl
NTI0ODVkOTkxYmQwMmJiZTE3NzVhODhiODNlZTkxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0
ZW1JbnRlcmZhY2UubW0KQEAgLTEyMSwxMyArMTIxLDYgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3Rl
bUludGVyZmFjZSh2b2lkKQogICAgICAgICBJTklUKFdpbmRvd1NldEFscGhhKTsKICNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TKQogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICAgICAgSU5JVChHZXRE
ZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UpOwotICAgICAgICBJTklUKENvcHlDcmVkZW50aWFsRnJv
bUNGUGVyc2lzdGVudFN0b3JhZ2UpOwotICAgICAgICBJTklUKFNldENGVVJMUmVxdWVzdFNob3Vs
ZENvbnRlbnRTbmlmZik7Ci0gICAgICAgIElOSVQoU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKTsK
LSNlbmRpZgotCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVz
aXNHZXRWb2ljZUlkZW50aWZpZXJzKTsKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXRE
ZWZhdWx0Vm9pY2VJZGVudGlmaWVyRm9yTG9jYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCmluZGV4IDAzYzUyNDM3YTAwMjVjNDIxN2YxZDM2YTY4MjkyMjUxYjY1
Mjg2ZjcuLmUwMzA4MTYxMDIxNTJmODk2NDAzOGVmMGY3MTM5MjdhYjM3MjFhMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzE3LDcgKzMxNyw3IEBAIHZv
aWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlRm9udFNt
b290aGluZykKICAgICAgICAgc2V0U2hvdWxkVXNlRm9udFNtb290aGluZyh0cnVlKTsKIAotI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIFNlc3Npb25UcmFja2VyOjpzZXRJZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vz
c0J1bmRsZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKQEAgLTQ1NywxNCArNDU3LDE0IEBAIHZvaWQg
V2ViUHJvY2Vzczo6ZnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9h
cmRBY2Nlc3NFbmFibGVkKQogCiB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwg
VVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShT
T1VQKQogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oc2Vzc2lvbklEKTsKICNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlc3Ry
b3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0jaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQorI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBVU0UoU09VUCkKICAgICBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24o
c2Vzc2lvbklEKTsKICNlbmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267925</attachid>
            <date>2015-12-26 04:21:18 -0800</date>
            <delta_ts>2015-12-26 04:21:18 -0800</delta_ts>
            <desc>Rebaseline onto r194421 (build is likely broken again)</desc>
            <filename>bug-137936-20151226042042.patch</filename>
            <type>text/plain</type>
            <size>126325</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDIwMGQzNTRhMzc2Zjc3NjRjNzJlOTll
MTY0MWUzY2I3MGNhNzg1MjAuLmM5Y2E3NDlmZmI3ZTAxNGYyZGI2ZDU5NTFlMjVjZDU0NThiYmQ5
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTItMjYgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgVVNFKENGTkVUV09SSykrUExBVEZPUk0o
Q09DT0EpIGNvZGUgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM3OTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxNS0xMi0yMiAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEZUTCBCMyBzaG91bGQgYmUgYWJsZSB0byBydW4g
cmljaGFyZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1OGM1Zjg2ZDA2YTRiM2JmMjE3ZjlkNjdiNTYyNWRlNDE2
ZjllZTFjLi4xZjI5NzcxODFmZDk2OThjNzFhMjllN2RiNTRlODY2N2FjYWI4NzhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMxIEBACisyMDE1LTEyLTI2ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHpl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFVTRShDRk5FVFdPUkspK1BMQVRGT1JNKENP
Q09BKSBjb2RlIHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNzkzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIENvdmVyZWQgYnkgbW9zdCBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2NoZWR1bGVBbGwpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9t
YWMvUmVzb3VyY2VMb2FkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6d2lsbENhY2hlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uv
bWFjL1BhZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbGF0Zm9ybUluaXRpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkU2NoZWR1bGVQYWlyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbW92ZVNjaGVkdWxlUGFpcik6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp+TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb0xheWVyR3Jhdml0eSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1Mu
bW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9B
dXRoZW50aWNhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDRik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9D
b29raWVKYXJDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3B5Q29va2llc0ZvclVSTFdp
dGhGaXJzdFBhcnR5VVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvb2tp
ZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0
b3JhZ2VDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6Z2V0
RnJvbVBlcnNpc3RlbnRTdG9yYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlRXJyb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlRXJyb3JDRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0cnlI
YW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c3RhcnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2Fu
Y2VsbGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpy
ZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6Y2FjaGVQYXJ0aXRp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpzZXRDYWNo
ZVBhcnRpdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZVJlc3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpSZXNv
dXJjZVJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVzcG9uc2VDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlOjpjZlVSTFJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFkZFRvSFRU
UEhlYWRlck1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
OjpwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oOgorICAgICAgICAoV2ViQ29yZTo6Q3Jl
ZGVudGlhbDo6ZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjp0b05TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNyZWRlbnRpYWw6Om5zQ3JlZGVudGlhbCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDcmVkZW50aWFsOjppc0VtcHR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLmg6CisgICAgICAgIChXZWJDb3Jl
OjpQcm90ZWN0aW9uU3BhY2U6OmVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjp0eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlByb3RlY3Rpb25TcGFjZTo6bnNTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6bnNVUkxSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6Y2ZVUkxSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKC1bV2ViUmVzb3Vy
Y2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSBkZXRhY2hIYW5kbGVdKToKKyAgICAgICAgKFdlYkNv
cmU6OlF1aWNrTG9va0hhbmRsZTo6flF1aWNrTG9va0hhbmRsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQpOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIGluaXRXaXRoUmVzb3VyY2VMb2Fk
ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVs
ZWdhdGUgX3NlbmREaWRSZWNlaXZlUmVzcG9uc2VJZk5lY2Vzc2FyeV0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlk
UmVjZWl2ZURhdGFBcnJheTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViUmVzb3VyY2VMb2Fk
ZXJRdWlja0xvb2tEZWxlZ2F0ZSBjb25uZWN0aW9uOmRpZFJlY2VpdmVEYXRhOmxlbmd0aFJlY2Vp
dmVkOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0Rl
bGVnYXRlIGNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlkRmFpbFdp
dGhFcnJvcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrTG9va0hhbmRsZTo6
ZGlkUmVjZWl2ZURhdGFBcnJheSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9pb3MvUmVzb3VyY2VIYW5kbGVJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9p
b3MvUmVzb3VyY2VSZXF1ZXN0SU9TLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpzZXRBdXRoZW50aWNhdGlv
bkNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTo6YXV0aGVudGljYXRpb25DbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvb2tpZVN0
b3JhZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRp
YWxTdG9yYWdlTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRh
U3RyZWFtTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJl
YW1NYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU5TRXJyb3JGcm9tUmVzb3VyY2VFcnJvckJh
c2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VF
cnJvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpwbGF0Zm9y
bUxhenlJbml0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnBs
YXRmb3JtQ29tcGFyZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Ojpuc0Vycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om9w
ZXJhdG9yIE5TRXJyb3IgKik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRpb25RdWV1
ZUZvckFzeW5jQ2xpZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6c3RhcnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6
Om1ha2VEZWxlZ2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTo6ZGVsZWdhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6
OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2U6Om5zVVJMUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9tYWMvU3luY2hyb25vdXNMb2FkZXJDbGllbnQubW06CisgICAgICAg
IChXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6cGxhdGZvcm1CYWRSZXNwb25zZUVy
cm9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc0RlbGVnYXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNEZWxlZ2F0ZSBkZXRhY2hIYW5kbGVdKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6c3ludGhlc2l6
ZVJlZGlyZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vc3BpL2NvY29hL05TVVJMRG93bmxvYWRTUEkuaDoKKwogMjAxNS0xMi0yNSAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN1YnBpeGVsIHJlbmRlcmluZzogQWRk
IHN1YnBpeGVsIHN1cHBvcnQgZm9yIG91dGxpbmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggOTk3MTQ1
YjZhZGU1Mjk1OGJlYmVmMjVkM2NiODQ3NTU5MjFkYzlmZS4uZDM1ODJlM2I3Zjc4NWY5MTg2MjYz
ZjBmNjk3ZTcxOWMyYmUwMGVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisy
MDE1LTEyLTI2ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIFVTRShDRk5FVFdPUkspK1BMQVRGT1JNKENPQ09BKSBjb2RlIHBhdGgKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzkzNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJEb3dubG9h
ZC5oOgorICAgICAgICAqIE1pc2MvV2ViRG93bmxvYWQubW06CisgICAgICAgICogTWlzYy9XZWJE
b3dubG9hZEludGVybmFsLmg6CisgICAgICAgICogTWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAg
ICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25s
b2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmll
dy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3NldEN1cnJl
bnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1vbkluaXRpYWxpemF0
aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2NoZWR1
bGVJblJ1bkxvb3A6Zm9yTW9kZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKGZpbmRTdHJpbmcpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxNS0xMi0y
MiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NGXSBSZXBsYWNl
IENGTmV0d29yay1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBjYWxscyB3aXRoIFNQSQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IDEwYTJiMjkzMzlkODU0NDFjODk0NWJlZjEyNmZlODhhZjQ3MDZjMDguLjZk
Y2QzOGI5OWJkNjk3OThkYzA1YmVhM2VmNjk5ODE4ZjE1ZGM5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxNS0xMi0yNiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSBVU0UoQ0ZORVRXT1JLKStQTEFURk9STShDT0NPQSkgY29kZSBw
YXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc5
MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW06IFJlbW92ZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxp
emVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtM
b2FkTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9u
c2VBc3luYyk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmg6CisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW06
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+
OjplbmNvZGVQbGF0Zm9ybURhdGEpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPENlcnRpZmljYXRlSW5mbz46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGVzdHJveVByaXZh
dGVCcm93c2luZ1Nlc3Npb24pOgorCiAyMDE1LTEyLTI1ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHpl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2VFcnJvciBzaG91bGQgc3RvcmUgZmFpbGlu
Z1VSTCBhcyBVUkwgaW5zdGVhZCBvZiBTdHJpbmcgdG8gYXZvaWQgcmVwYXJzaW5nIGFuZCB0byBh
ZGRyZXNzIEZJWE1FIGNvbW1lbnRzIGluIFJlc291cmNlRXJyb3JDRi5jcHAgYW5kIFJlc291cmNl
RXJyb3JNYWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGI3ZWQ1YTg4ZTE4M2U1YTlhYzYxMDQyMGFiMzg2
YmI5MWMyYTM5ODIuLjZhNDliYTdlZjFhYjNlYmNlYjFmNGFhOGMwNTdjZTlkZDRjMGYzMWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm0uaApAQCAtNTQ1LDkgKzU0NSw2IEBACiAjaWYgUExBVEZPUk0oSU9TKQogCiAjZGVm
aW5lIEhBVkVfUkVBRExJTkUgMQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jZGVmaW5l
IFVTRV9DRk5FVFdPUksgMQotI2VuZGlmCiAjZGVmaW5lIFVTRV9VSUtJVF9FRElUSU5HIDEKICNk
ZWZpbmUgVVNFX1dFQl9USFJFQUQgMQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGEyNmJmOTM1NDJkYmQ2Zjc0NWI3ZDhkYmEx
NjVjOGY4MTMwZTAxOS4uYTI5NjExNzFjY2YwMGNlZWE2ZWYxZjlkNTBiNTUxMmM1NzhkMWY4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjc3Miw3ICsyNzcyLDYgQEAKIAkJN0U2NkUyMzQxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFNjZFMjMyMTZENkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDLmggKi87IH07CiAJCTdFNjZFMjM0MTdFNkVCNkMwMEY3RTdGRiAvKiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFNjZFMjMyMTdFNkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNz
ZWRUZXh0dXJlUFZSVEMuaCAqLzsgfTsKIAkJN0U3REUxRkQxOTVDRUYyNjAwMzUzNjNCIC8qIFJl
c291cmNlUmVxdWVzdENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0U3REUxRkMxOTVDRUYyNjAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdENv
Y29hLm1tICovOyB9OwotCQk3RTdERTIwMjE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1
ZXN0SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0U3REUyMDExOTVDRUZDRDAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5tbSAqLzsgfTsK
IAkJN0U4RkFEQzQxOTlBOTVCMTAwNzE0OTY4IC8qIFN1YnJlc291cmNlTG9hZGVyQ29jb2EubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RThGQURDMzE5
OUE5NUIxMDA3MTQ5NjggLyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSAqLzsgfTsKIAkJN0U5
OUFGNTEwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTk5QUY1MjBC
MTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCAqLzsgfTsK
IAkJN0U5OUFGNTMwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U5OUFG
NTQwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDI4Miw3ICsx
MDI4MSw2IEBACiAJCTdFNjZFMjMyMTZENkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVRDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U2NkUyMzIx
N0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U3REUxRkMxOTVDRUYyNjAwMzUzNjNCIC8q
IFJlc291cmNlUmVxdWVzdENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTdFN0RFMjAxMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RJ
T1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFOEZBREMzMTk5QTk1QjEwMDcx
NDk2OCAvKiBTdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3Vz
QWxsb3dlZEluZGljYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3RTk5QUY1NDBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5k
aWNhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpbmRvd0ZvY3VzQWxs
b3dlZEluZGljYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY1NjUsNyAr
MTY1NjMsNiBAQAogCQkJCTQ0MkFGN0E4MTAyQ0RERUEwMDhGRDREMyAvKiBRdWlja0xvb2subW0g
Ki8sCiAJCQkJQTEwREJGNDYxOEY5MjMxNzAwMEQ3MEM2IC8qIFF1aWNrTG9va0hhbmRsZUNsaWVu
dC5oICovLAogCQkJCTdFNDI4Q0U0MTNFMzQwN0YwMDNCNjYxQyAvKiBSZXNvdXJjZUhhbmRsZUlP
Uy5tbSAqLywKLQkJCQk3RTdERTIwMTE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0
SU9TLm1tICovLAogCQkJCTQ0QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVz
cG9uc2VJT1MuaCAqLywKIAkJCQk0NDRENEUyMTBGNzA4QjJFMDAzMTU4RTAgLyogV2ViQ29yZVVS
TFJlc3BvbnNlSU9TLm1tICovLAogCQkJKTsKQEAgLTMwNzgyLDcgKzMwNzc5LDYgQEAKIAkJCQk1
MTRDNzY3QzBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3RUU2ODQ2RTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0
Q0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0U3REUxRkQxOTVDRUYyNjAwMzUzNjNCIC8q
IFJlc291cmNlUmVxdWVzdENvY29hLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJN0U3REUyMDIxOTVD
RUZDRDAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUxNEM3NjUzMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1MTRDNzY3RTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXNwb25z
ZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NzExMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNTUxMDM5MWJkMzNkM2EzNjY3MTU2ZTg0NWZhMzEz
MTFjM2Y2ZjlmMy4uOWRiZTE4M2U2OWVjYjVkZTFmNTU1YjdlNThjZTQ4ZDc4M2RkZTA3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTU2LDYgKzU2LDEwIEBACiAj
aW5jbHVkZSAiUXVpY2tMb29rLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2lu
Y2x1ZGUgPHd0Zi9TY2hlZHVsZVBhaXIuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdDsKQEAgLTE0NCw3ICsxNDgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGl0bGUo
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG92ZXJy
aWRlRW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlRW5jb2Rpbmc7IH0KIAotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgdm9pZCBzY2hlZHVs
ZShTY2hlZHVsZVBhaXImKTsKICAgICAgICAgdm9pZCB1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciYp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAx
YTk3M2IwZDUyM2I4ZTFmMzJmMjVhODA4OWM4Mjk4NTc0NTBlM2VjLi4zNDI5NmQxNmZjNGNjNmM0
ZGYwMDM1NmRhMjM0ZDljNDQzOTI0YjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTcyNCw3ICs3MjQsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWNl
aXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCiAgICAgY2Fu
Y2VsKCk7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAKIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggMDI3YWMwOGYyMzIzMWQ0MDc4N2Qx
MzAyNTYyNjMzMmI5MjZmNDBmYS4uODUyMDExNzU0ZjdiOTE0Njc1NTJjOGI1Y2E5YjE5NzcxNzk5
ZWVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTE0MCw3ICsx
NDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJj
ZSgpOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQg
c2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXImKTsKICAgICB2b2lkIHVuc2NoZWR1bGUoV1RGOjpT
Y2hlZHVsZVBhaXImKTsKICNlbmRpZgpAQCAtMTU3LDEyICsxNTcsOSBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMoKSB7IHJldHVybiBtX29w
dGlvbnM7IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQ
TEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxDYWNo
ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSopIG92ZXJyaWRl
OwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShDRk5FVFdPUkspCi0gICAgdmly
dHVhbCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFu
ZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7Ci0jZW5kaWYKIAogICAgIHZp
cnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCA2OWEyNDIyOTcyMWZmNmNhOTg5OTNhNjk5
NzcwMThmZWVkOGQ1Y2Q4Li5lZmFjZGQ4ZDEzMjQyYTA2NDQzOWFiNzI5MDBiMTk0Y2NiYzAxNGI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNzMsMTIg
KzczLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShD
Rk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJl
c3BvbnNlICp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVz
cG9uc2UqKSBvdmVycmlkZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQ0ZO
RVRXT1JLKQotICAgIHZpcnR1YWwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNw
b25zZShSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwot
I2VuZGlmCiAKICNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzRGF0YUFycmF5KCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNwcAppbmRl
eCA3ZTc0ZjIwZjk3MmIwNzhmZTg2MmI1ODFjMjg5YmVlZTVkMGExMmM4Li5iMjYxNDRiZDIwNWYx
ZjZhNzY2YWVlYjUyN2ZjZWYzZjk2MmUxN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNwcApAQCAtMzMsOCArMzMsNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLSNpZiBQTEFURk9STShNQUMpCi0KIHN0YXRpYyB2b2lkIHNjaGVkdWxl
QWxsKGNvbnN0IFJlc291cmNlTG9hZGVyTWFwJiBsb2FkZXJzLCBTY2hlZHVsZVBhaXImIHBhaXIp
CiB7CiAgICAgVmVjdG9yPFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4+IGxvYWRlcnNDb3B5OwpAQCAt
NjksNiArNjcsNCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp1bnNjaGVkdWxlKFNjaGVkdWxlUGFp
ciYgcGFpcikKICAgICB1bnNjaGVkdWxlQWxsKG1fbXVsdGlwYXJ0U3VicmVzb3VyY2VMb2FkZXJz
LCBwYWlyKTsKIH0KIAotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQppbmRleCBiYjliMTRlODE0YjViMjM5
Yzc3ZTUxYTRkYmYxN2NkNjUxYzI2ZjAzLi44YTMyOGVlNWZmMjg4MWU4YzM0NDZlYjU4ODRjZTJl
NWIyMmZjZmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNl
TG9hZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2Fk
ZXJNYWMubW0KQEAgLTM2LDE5ICszNiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lm
IFVTRShDRk5FVFdPUkspCi0KLUNGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VMb2FkZXI6
OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJl
ZiBjYWNoZWRSZXNwb25zZSkKLXsKLSAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tz
KCkgPT0gRG9Ob3RTZW5kQ2FsbGJhY2tzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IFJldGFpblB0cjxOU0NhY2hlZFVSTFJlc3BvbnNlPiBuc0NhY2hlZFJlc3BvbnNlID0gYWRvcHRO
UyhbW05TQ2FjaGVkVVJMUmVzcG9uc2UgYWxsb2NdIF9pbml0V2l0aENGQ2FjaGVkVVJMUmVzcG9u
c2U6Y2FjaGVkUmVzcG9uc2VdKTsKLSAgICByZXR1cm4gW2ZyYW1lTG9hZGVyKCktPmNsaWVudCgp
LndpbGxDYWNoZVJlc3BvbnNlKGRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIoKSwgbnNDYWNo
ZWRSZXNwb25zZS5nZXQoKSkgX0NGQ2FjaGVkVVJMUmVzcG9uc2VdOwotfQotCi0jZWxzZQotCiBO
U0NhY2hlZFVSTFJlc3BvbnNlKiBSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UoUmVz
b3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlKiByZXNwb25zZSkKIHsKICAgICBpZiAo
bV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzKCkgPT0gRG9Ob3RTZW5kQ2FsbGJhY2tzKQpAQCAt
NTYsOCArNDMsNiBAQCBOU0NhY2hlZFVSTFJlc3BvbnNlKiBSZXNvdXJjZUxvYWRlcjo6d2lsbENh
Y2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZAogICAgIHJldHVybiBmcmFtZUxv
YWRlcigpLT5jbGllbnQoKS53aWxsQ2FjaGVSZXNwb25zZShkb2N1bWVudExvYWRlcigpLCBpZGVu
dGlmaWVyKCksIHJlc3BvbnNlKTsKIH0KIAotI2VuZGlmCi0KICNpZiBVU0UoTkVUV09SS19DRkRB
VEFfQVJSQVlfQ0FMTEJBQ0spCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
QXJyYXkoQ0ZBcnJheVJlZiBkYXRhQXJyYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9QYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQpp
bmRleCA1MjUxMDhmY2E1ZWU4YTg0MzE0YTZkMTA1YWY0YTZkMTM1NDI0ZTdmLi5mNWM1MWY5YWJm
YWE3Yzc1NzUwMmMyYWNlODA4MzljZDZlYjI3OTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9QYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VN
YWMubW0KQEAgLTM0LDEyICszNCwxNiBAQAogI2ltcG9ydCAiRnJhbWVUcmVlLmgiCiAjaW1wb3J0
ICJNYWluRnJhbWUuaCIKIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbXBvcnQgIldlYkNvcmVUaHJl
YWQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUGFnZTo6cGxhdGZv
cm1Jbml0aWFsaXplKCkKIHsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGFkZFNjaGVkdWxlUGFp
cihTY2hlZHVsZVBhaXI6OmNyZWF0ZShbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gZ2V0Q0ZS
dW5Mb29wXSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKSk7CisjaWYgUExBVEZPUk0oSU9TKQorICAg
IGFkZFNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShXZWJUaHJlYWROU1J1bkxvb3Ao
KSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKSk7CiAjZWxzZQogICAgIGFkZFNjaGVkdWxlUGFpcihT
Y2hlZHVsZVBhaXI6OmNyZWF0ZShbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSwga0NGUnVuTG9v
cENvbW1vbk1vZGVzKSk7CiAjZW5kaWYKQEAgLTUxLDE0ICs1NSwxMiBAQCB2b2lkIFBhZ2U6OmFk
ZFNjaGVkdWxlUGFpcihSZWY8U2NoZWR1bGVQYWlyPiYmIHBhaXIpCiAgICAgICAgIG1fc2NoZWR1
bGVkUnVuTG9vcFBhaXJzID0gc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZVBhaXJIYXNoU2V0Pigp
OwogICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzLT5hZGQocGFpci5wdHIoKSk7CiAKLSNpZiAh
UExBVEZPUk0oSU9TKQogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9tYWluRnJhbWUuZ2V0KCk7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAg
aWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNjaGVkdWxlKHBhaXIp
OwogICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxv
YWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIGRvY3VtZW50
TG9hZGVyLT5zY2hlZHVsZShwYWlyKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIC8vIEZJWE1FOiBt
YWtlIFNoYXJlZFRpbWVyTWFjIHVzZSB0aGVzZSBTY2hlZHVsZVBhaXJzLgogfQpAQCAtNzEsMTQg
KzczLDEyIEBAIHZvaWQgUGFnZTo6cmVtb3ZlU2NoZWR1bGVQYWlyKFJlZjxTY2hlZHVsZVBhaXI+
JiYgcGFpcikKIAogICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzLT5yZW1vdmUocGFpci5wdHIo
KSk7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9tYWlu
RnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkp
IHsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnVu
c2NoZWR1bGUocGFpcik7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2Fk
ZXIgPSBmcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKQogICAgICAg
ICAgICAgZG9jdW1lbnRMb2FkZXItPnVuc2NoZWR1bGUocGFpcik7CiAgICAgfQotI2VuZGlmCiB9
CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAxODYzY2QyMGUx
MzdmNjlmYThmZmIxZTgyYjJhOWZkODMxNjcwYTQ5Li5hYWRkOWQ5NjJmYjFmZGYxYmQyYTlkYmU0
MjMwMTkyMTk5ZTQyMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTk5LDEwICs5OSw2
IEBACiAjaW1wb3J0IDxWaWRlb1Rvb2xib3gvVmlkZW9Ub29sYm94Lmg+CiAjZW5kaWYKIAotI2lm
IFVTRShDRk5FVFdPUkspCi0jaW5jbHVkZSAiQ0ZOU1VSTENvbm5lY3Rpb25TUEkuaCIKLSNlbmRp
ZgotCiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgPE9wZW5HTEVTL0VTMy9nbGV4dC5oPgog
I2VuZGlmCkBAIC00MjEsNTggKzQxNyw2IEBAIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2Jh
bFB1bGxEZWxlZ2F0ZVF1ZXVlKCkKIH0KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKLWNs
YXNzIFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50IDogcHVibGljIFJl
ZkNvdW50ZWQ8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+LCBwdWJs
aWMgQXV0aGVudGljYXRpb25DbGllbnQgewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2Vi
Q29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+IGNyZWF0ZShOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50KGNoYWxs
ZW5nZSkpOwotICAgIH0KLQotICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViQ29yZU5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJD
b3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudD46OmRlcmVmOwotCi1wcml2YXRl
OgotICAgIFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50KE5TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSkKLSAgICAgICAgOiBtX2NoYWxsZW5nZShj
aGFsbGVuZ2UpCi0gICAgewotICAgICAgICBBU1NFUlQobV9jaGFsbGVuZ2UpOwotICAgIH0KLQot
ICAgIHZpcnR1YWwgdm9pZCByZWZBdXRoZW50aWNhdGlvbkNsaWVudCgpIG92ZXJyaWRlIHsgcmVm
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZBdXRoZW50aWNhdGlvbkNsaWVudCgpIG92ZXJy
aWRlIHsgZGVyZWYoKTsgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRp
YWwpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gdXNlQ3Jl
ZGVudGlhbDpjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2
ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVy
XSBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bV9j
aGFsbGVuZ2UuZ2V0KCldOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNl
bGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6bV9jaGFsbGVuZ2UuZ2V0KCldOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCByZWNlaXZl
ZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKFtbbV9jaGFsbGVuZ2Ugc2VuZGVy
XSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTopXSkKLSAgICAgICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2Vu
ZGVyXSBwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bV9j
aGFsbGVuZ2UuZ2V0KCldOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENoYWxs
ZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICBpZiAoW1ttX2NoYWxsZW5nZSBzZW5kZXJdIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IocmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdl
OildKQotICAgICAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIHJlamVjdFByb3RlY3Rpb25T
cGFjZUFuZENvbnRpbnVlV2l0aENoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAgfQot
Ci0gICAgUmV0YWluUHRyPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IG1fY2hhbGxlbmdl
OwotfTsKLSNlbmRpZgotCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewog
ICAgIGlmIChpc0F2YWlsYWJsZSgpKQpAQCAtMTc4OCwxMyArMTczMiw3IEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291
cmNlKEFWQXNzZXRSCiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKiBuc0NoYWxsZW5nZSkKIHsKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
ICAgIFJlZlB0cjxXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudD4gY2xp
ZW50ID0gV2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ6OmNyZWF0ZShu
c0NoYWxsZW5nZSk7Ci0gICAgUmV0YWluUHRyPENGVVJMQXV0aENoYWxsZW5nZVJlZj4gY2ZDaGFs
bGVuZ2UgPSBhZG9wdENGKFtuc0NoYWxsZW5nZSBfY3JlYXRlQ0ZBdXRoQ2hhbGxlbmdlXSk7Ci0g
ICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlKGNmQ2hhbGxlbmdlLmdldCgpLCBj
bGllbnQuZ2V0KCkpOwotI2Vsc2UKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVu
Z2UobnNDaGFsbGVuZ2UpOwotI2VuZGlmCiAKICAgICByZXR1cm4gcGxheWVyKCktPnNob3VsZFdh
aXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLmgKaW5kZXgg
ZWZiOGQ3YTQ4NjBkMDAzZmYzZDdhMGUzYTFhYWQzNzIyZDdmYzhlZi4uNjM3N2I4ZTVkZGZlOGQ5
OGUxYmQwZWIxMjM3MzE1MTc5NGJkNDBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLmgKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIFdlYlRocmVhZFNob3VsZFlpZWxkKHZvaWQpIHsgcmV0dXJuIHdlYlRocmVhZFNob3Vs
ZFlpZWxkOyB9CiBzdGF0aWMgaW5saW5lIHZvaWQgV2ViVGhyZWFkU2V0U2hvdWxkWWllbGQoKSB7
IHdlYlRocmVhZFNob3VsZFlpZWxkID0gdHJ1ZTsgfQogCiBXRUJDT1JFX0VYUE9SVCBDRlJ1bkxv
b3BSZWYgV2ViVGhyZWFkUnVuTG9vcCh2b2lkKTsKLU5TUnVuTG9vcCogV2ViVGhyZWFkTlNSdW5M
b29wKHZvaWQpOworV0VCQ09SRV9FWFBPUlQgTlNSdW5Mb29wKiBXZWJUaHJlYWROU1J1bkxvb3Ao
dm9pZCk7CiBXZWJUaHJlYWRDb250ZXh0ICpXZWJUaHJlYWRDdXJyZW50Q29udGV4dCh2b2lkKTsK
IGJvb2wgV2ViVGhyZWFkQ29udGV4dElzQ3VycmVudCh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAKaW5k
ZXggOTNjNGRkYmE0OGY5ZmRiMzcxYjk1Y2MyOTcwZGFjOGNlODU5YmMzOC4uMDEyNmRjNzk0ODMx
ZjRhZmY2Y2FjMTI5YzAyZTk4Y2VlZWM5ZDJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuY3BwCkBAIC0yNyw3ICsy
Nyw3IEBACiAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIKIAotI2lmIFVTRShDRk5FVFdP
UkspICYmICFQTEFURk9STShDT0NPQSkKKyNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgIkF1
dGhlbnRpY2F0aW9uQ0YuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90ZWN0aW9uU3Bh
Y2VQcml2Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IDUzZTI0Y2QxZWFiZjcw
YjhhMWVjMWRiNGI2N2Y4M2M1OGI5ODBjNzAuLjA5MjM5MmVlMjQ3NGY5NDE5NjdiMTk3OWY0Yjcy
ZWVlNjVhM2Y0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmgKQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYp
OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIE5T
VVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbigpIGNvbnN0OwogICAgIGlkIG1ha2VEZWxlZ2F0ZShi
b29sKTsKQEAgLTIxNiw3ICsyMTYsNyBAQCBwdWJsaWM6CiAjaWYgVVNFKENGTkVUV09SSykKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZik7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5F
VFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb250
aW51ZVdpbGxDYWNoZVJlc3BvbnNlKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKik7CiAjZW5kaWYKIApA
QCAtMjM2LDEwICsyMzYsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENG
U3RyaW5nUmVmIHN5bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2RlKCk7CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKElPUykgJiYgVVNFKENGTkVUV09SSykKLSAgICBzdGF0aWMgQ0ZNdXRhYmxlRGljdGlv
bmFyeVJlZiBjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKLSNlbmRpZgotCiAgICAgdHlwZWRlZiBQYXNzUmVmUHRyPFJlc291cmNlSGFu
ZGxlPiAoKkJ1aWx0aW5Db25zdHJ1Y3RvcikoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
ckJ1aWx0aW5Db25zdHJ1Y3Rvcihjb25zdCBBdG9taWNTdHJpbmcmIHByb3RvY29sLCBCdWlsdGlu
Q29uc3RydWN0b3IpOwogCkBAIC0yNzYsMTEgKzI3MiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJv
b2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IsIENGRGljdGlvbmFyeVJl
ZiBjbGllbnRQcm9wZXJ0aWVzKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNF
KENGTkVUV09SSykKKyNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBjcmVhdGVOU1VSTENvbm5l
Y3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wg
c2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IpOwogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShJT1MpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKElPUykKICAgICB2
b2lkIGNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlv
ciwgTlNEaWN0aW9uYXJ5ICpjb25uZWN0aW9uUHJvcGVydGllcyk7CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVy
bmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaAppbmRleCA2MTIzZjE0YWNhMjQ4NGJlNDJhNmRmMTAwYWYzYWFjMzE5YmQyZDlmLi43
YWU3M2NmNzFkYzExNWY0MDFmMjAwYjNjNDgxZjg4NDk3OWM3MzllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwu
aApAQCAtMTM2LDExICsxMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlc291
cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OwogICAgICAgICBSZWZQdHI8UmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZT4gbV9jb25uZWN0aW9uRGVsZWdhdGU7CiAjZW5kaWYK
LSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgICAgIFJldGFpblB0cjxOU1VSTENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAg
ICAgICAgUmV0YWluUHRyPGlkPiBtX2RlbGVnYXRlOwotI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgICAgIGJvb2wgbV9zdGFydFdoZW5TY2hlZHVsZWQ7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCmluZGV4IDc4ODNlNDY5
MTE1ZGUzMjc5NGMxYjJhNDdkYmI1MDMwOGUxMDhlYzkuLmY4NzQ1ZDU0M2E5MDhjODMzMmNhOGFm
MmY5YTIxNmU5OTY5ZWRiZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcApAQCAtNTMsMTMgKzUzLDggQEAgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYgcHJvdGVjdGkKIAogQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiBjZkNoYWxsZW5nZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRoZW50aWNhdGlv
bkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQpCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
OiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UoUHJvdGVjdGlvblNwYWNlKENGVVJMQXV0aENo
YWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjZkNoYWxsZW5nZSkpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENyZWRlbnRpYWwoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvcG9z
ZWRDcmVkZW50aWFsKGNmQ2hhbGxlbmdlKSksCi0jZWxzZQogICAgIDogQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VCYXNlKGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNm
Q2hhbGxlbmdlKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZShDRlVS
TEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRlbnRpYWwoY2ZDaGFsbGVuZ2UpKSwKLSNlbmRp
ZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGVVJMQXV0aENoYWxsZW5nZUdl
dFByZXZpb3VzRmFpbHVyZUNvdW50KGNmQ2hhbGxlbmdlKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoQ0ZVUkxSZXNwb25zZVJlZilDRlVSTEF1dGhDaGFsbGVuZ2VHZXRGYWls
dXJlUmVzcG9uc2UoY2ZDaGFsbGVuZ2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENGVVJMQXV0aENoYWxsZW5nZUdldEVycm9yKGNmQ2hhbGxlbmdlKSkKQEAgLTkzLDE0ICs4
OCwxMCBAQCBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY3JlYXRlQ0YoY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UpCiB7CiAgICAgLy8gRklYTUU6IFdoeSBub3QgY2Fj
aGUgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGluIG1fY2ZDaGFsbGVuZ2U/IEZvdW5kYXRpb24gY291
bnRlcnBhcnQgZG9lcyB0aGF0LgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQ0ZVUkxBdXRo
Q2hhbGxlbmdlUmVmIHJlc3VsdCA9IENGVVJMQXV0aENoYWxsZW5nZUNyZWF0ZSgwLCBjb3JlQ2hh
bGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmNmU3BhY2UoKSwgY29yZUNoYWxsZW5nZS5wcm9wb3Nl
ZENyZWRlbnRpYWwoKS5jZkNyZWRlbnRpYWwoKSwKLSNlbHNlCiAgICAgUmV0YWluUHRyPENGVVJM
Q3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5n
ZS5wcm9wb3NlZENyZWRlbnRpYWwoKSkpOwogICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25T
cGFjZVJlZj4gcHJvdGVjdGlvblNwYWNlID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZSgpKSk7CiAKICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgcmVzdWx0
ID0gQ0ZVUkxBdXRoQ2hhbGxlbmdlQ3JlYXRlKDAsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSwgY3Jl
ZGVudGlhbC5nZXQoKSwKLSNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvcmVDaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25z
ZSgpLmNmVVJMUmVzcG9uc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb3JlQ2hhbGxlbmdlLmVycm9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAppbmRleCBlOGZkYmRkZGJhMGU3
Yzc5NjUyNTc5NDlkYmJkNTQ5YTVkY2I5NzRmLi5kYTRhMDY0Zjc1YTA3NzZlY2QzNWZkNjZlZjhi
ODA2NTFhNTA1MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0Nvb2tpZUphckNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcApAQCAtMTA1LDEzICsxMDUsOSBAQCBzdGF0aWMgUmV0
YWluUHRyPENGQXJyYXlSZWY+IGNvcHlDb29raWVzRm9yVVJMV2l0aEZpcnN0UGFydHlVUkwoY29u
c3QgTmV0d29ya1N0bwogewogICAgIGJvb2wgc2VjdXJlID0gdXJsLnByb3RvY29sSXMoImh0dHBz
Iik7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICByZXR1cm4gYWRvcHRDRihfQ0ZIVFRQQ29v
a2llU3RvcmFnZUNvcHlDb29raWVzRm9yVVJMV2l0aE1haW5Eb2N1bWVudFVSTChzZXNzaW9uLmNv
b2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsLmNyZWF0ZUNGVVJMKCkuZ2V0KCksIGZpcnN0UGFydHku
Y3JlYXRlQ0ZVUkwoKS5nZXQoKSwgc2VjdXJlKSk7Ci0jZWxzZQogICAgIC8vIF9DRkhUVFBDb29r
aWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkxXaXRoTWFpbkRvY3VtZW50VVJMIGlzIG5vdCBhdmFp
bGFibGUgb24gb3RoZXIgcGxhdGZvcm1zLgogICAgIFVOVVNFRF9QQVJBTShmaXJzdFBhcnR5KTsK
ICAgICByZXR1cm4gYWRvcHRDRihDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwo
c2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHVybC5jcmVhdGVDRlVSTCgpLmdldCgpLCBz
ZWN1cmUpKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgQ0ZBcnJheVJlZiBjcmVhdGVDb29raWVzKENG
RGljdGlvbmFyeVJlZiBoZWFkZXJGaWVsZHMsIENGVVJMUmVmIHVybCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdl
Q0ZOZXQuY3BwCmluZGV4IDU5ZmVhNTNjNTNlNDk2N2QwZWE4OTNiOTI1ZDcwNjE1MGNhNWVlZTQu
LjRkOTcxMzcyNmExYTM5NGQ3ZDY0NDYwMjk3ZWE0ZDRiZjg4ZTUxODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3Rv
cmFnZUNGTmV0LmNwcApAQCAtMzQsMTYgKzM0LDEwIEBACiAjaW5jbHVkZSAiUHJvdGVjdGlvblNw
YWNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
Ci0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2VsaWYgUExBVEZPUk0oV0lO
KQorI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2Vi
S2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNs
dWRlIDxDRk5ldHdvcmsvQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZS5oPgotI2VuZGlmCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKIHN0YXRpYyBpbmxpbmUgQ0ZVUkxDcmVkZW50aWFsUmVmIGNv
cHlDcmVkZW50aWFsRnJvbVByb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBw
cm90ZWN0aW9uU3BhY2UpCkBAIC01NCwyOCArNDgsMTAgQEAgc3RhdGljIGlubGluZSBDRlVSTENy
ZWRlbnRpYWxSZWYgY29weUNyZWRlbnRpYWxGcm9tUHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVj
dGkKIAogQ3JlZGVudGlhbCBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9y
YWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQogewotI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIGF1dG8gY3JlZGVudGlhbENGID0gYWRvcHRDRihjb3B5Q3JlZGVudGlh
bEZyb21Qcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlLmNmU3BhY2UoKSkpOwotICAgIHJl
dHVybiBDcmVkZW50aWFsKGNyZWRlbnRpYWxDRi5nZXQoKSk7Ci0jZWxzZQogICAgIGF1dG8gcHJv
dGVjdGlvblNwYWNlQ0YgPSBhZG9wdENGKGNyZWF0ZUNGKHByb3RlY3Rpb25TcGFjZSkpOwogICAg
IGF1dG8gY3JlZGVudGlhbENGID0gYWRvcHRDRihjb3B5Q3JlZGVudGlhbEZyb21Qcm90ZWN0aW9u
U3BhY2UocHJvdGVjdGlvblNwYWNlQ0YuZ2V0KCkpKTsKICAgICByZXR1cm4gY29yZShjcmVkZW50
aWFsQ0YuZ2V0KCkpOwotI2VuZGlmCi19Ci0KLSNpZiBQTEFURk9STShJT1MpCi12b2lkIENyZWRl
bnRpYWxTdG9yYWdlOjpzYXZlVG9QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmIHByb3RlY3Rpb25TcGFjZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKLXsKLSAg
ICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsU3RvcmFnZVJlZj4gc3RvcmFnZUNGID0gYWRvcHRD
RihDRlVSTENyZWRlbnRpYWxTdG9yYWdlQ3JlYXRlKDApKTsKLQotICAgIGlmIChjcmVkZW50aWFs
LnBlcnNpc3RlbmNlKCkgPT0gQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkgewotICAgICAgICBD
cmVkZW50aWFsIHNlc3Npb25DcmVkZW50aWFsKGNyZWRlbnRpYWwsIENyZWRlbnRpYWxQZXJzaXN0
ZW5jZUZvclNlc3Npb24pOwotICAgICAgICBDRlVSTENyZWRlbnRpYWxTdG9yYWdlU2V0RGVmYXVs
dENyZWRlbnRpYWxGb3JQcm90ZWN0aW9uU3BhY2Uoc3RvcmFnZUNGLmdldCgpLCBzZXNzaW9uQ3Jl
ZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgcHJvdGVjdGlvblNwYWNlLmNmU3BhY2UoKSk7Ci0gICAg
fSBlbHNlCi0gICAgICAgIENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VTZXREZWZhdWx0Q3JlZGVudGlh
bEZvclByb3RlY3Rpb25TcGFjZShzdG9yYWdlQ0YuZ2V0KCksIGNyZWRlbnRpYWwuY2ZDcmVkZW50
aWFsKCksIHByb3RlY3Rpb25TcGFjZS5jZlNwYWNlKCkpOwogfQotI2VuZGlmCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlRXJyb3IuaAppbmRleCBiMzI4YmExNzE1MDQxMGY1M2Y3NzE2NjkyMDg1MTRi
NmE3NzQ2ZjY3Li43ZWJiNWU0MjY5NGQ0NDg5ZjI3ZDAyNWQ3NzBmNzQ1MGJhMjM5ZGI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3Iu
aApAQCAtNjEsMTYgKzYxLDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBDRkVycm9y
UmVmIGNmRXJyb3IoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBvcGVyYXRvciBDRkVycm9y
UmVmKCkgY29uc3Q7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIFBMQVRGT1JNKFdJTikKKyNp
ZiBVU0UoQ0ZORVRXT1JLKSAmJiBQTEFURk9STShXSU4pCiAgICAgUmVzb3VyY2VFcnJvcihjb25z
dCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBj
b25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uLCBDRkRhdGFSZWYgY2VydGlmaWNhdGUp
OwogICAgIFBDQ0VSVF9DT05URVhUIGNlcnRpZmljYXRlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRD
ZXJ0aWZpY2F0ZShDRkRhdGFSZWYpOwogI2VuZGlmCi0gICAgUmVzb3VyY2VFcnJvcihDRlN0cmVh
bUVycm9yIGVycm9yKTsKLSAgICBDRlN0cmVhbUVycm9yIGNmU3RyZWFtRXJyb3IoKSBjb25zdDsK
LSAgICBvcGVyYXRvciBDRlN0cmVhbUVycm9yKCkgY29uc3Q7Ci0jZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IoTlNFcnJvciAqKTsK
QEAgLTg4LDkgKzgzLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZGF0YUlzVXBUb0RhdGU7CiAj
aWYgVVNFKENGTkVUV09SSykKICAgICBtdXRhYmxlIFJldGFpblB0cjxDRkVycm9yUmVmPiBtX3Bs
YXRmb3JtRXJyb3I7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbXV0YWJsZSBSZXRhaW5QdHI8
TlNFcnJvcj4gbV9wbGF0Zm9ybU5TRXJyb3I7Ci0jZW5kaWYKICNpZiBQTEFURk9STShXSU4pCiAg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9jZXJ0aWZpY2F0ZTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3Bw
CmluZGV4IDYwYmZiMzY1OTFlMDdjMWJmYmVhYjZiMWUzYjU2ZmFiOTg0Nzg0NzMuLmQyYTAyODIx
Y2UzZjVjMTZlOTViNDk5NjM2YTFkMWM0YWU0ODAyMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKQEAgLTE2OSw1
MiArMTY5LDYgQEAgUmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgQ0ZFcnJvclJlZigpIGNvbnN0CiAg
ICAgcmV0dXJuIGNmRXJyb3IoKTsKIH0KIAotLy8gRklYTUU6IE9uY2UgPHJkYXI6Ly9wcm9ibGVt
LzUwNTA4NDE+IGlzIGZpeGVkIHdlIGNhbiByZW1vdmUgdGhpcyBjb25zdHJ1Y3Rvci4KLVJlc291
cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcikKLSAgICA6IG1fZGF0
YUlzVXBUb0RhdGUodHJ1ZSkKLXsKLSAgICBtX2lzTnVsbCA9IGZhbHNlOwotICAgIG1fZXJyb3JD
b2RlID0gZXJyb3IuZXJyb3I7Ci0KLSAgICBzd2l0Y2goZXJyb3IuZG9tYWluKSB7Ci0gICAgY2Fz
ZSBrQ0ZTdHJlYW1FcnJvckRvbWFpbkN1c3RvbToKLSAgICAgICAgbV9kb21haW4gPSJOU0N1c3Rv
bUVycm9yRG9tYWluIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBrQ0ZTdHJlYW1FcnJvckRv
bWFpblBPU0lYOgotICAgICAgICBtX2RvbWFpbiA9ICJOU1BPU0lYRXJyb3JEb21haW4iOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluTWFjT1NTdGF0dXM6Ci0g
ICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiI7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLX0KLQotQ0ZTdHJlYW1FcnJvciBSZXNvdXJjZUVycm9yOjpjZlN0cmVhbUVycm9y
KCkgY29uc3QKLXsKLSAgICBsYXp5SW5pdCgpOwotCi0gICAgQ0ZTdHJlYW1FcnJvciByZXN1bHQ7
Ci0gICAgcmVzdWx0LmVycm9yID0gbV9lcnJvckNvZGU7Ci0KLSAgICBpZiAobV9kb21haW4gPT0g
Ik5TQ3VzdG9tRXJyb3JEb21haW4iKQotICAgICAgICByZXN1bHQuZG9tYWluID0ga0NGU3RyZWFt
RXJyb3JEb21haW5DdXN0b207Ci0gICAgZWxzZSBpZiAobV9kb21haW4gPT0gIk5TUE9TSVhFcnJv
ckRvbWFpbiIpCi0gICAgICAgIHJlc3VsdC5kb21haW4gPSBrQ0ZTdHJlYW1FcnJvckRvbWFpblBP
U0lYOwotICAgIGVsc2UgaWYgKG1fZG9tYWluID09ICJOU09TU3RhdHVzRXJyb3JEb21haW4iKQot
ICAgICAgICByZXN1bHQuZG9tYWluID0ga0NGU3RyZWFtRXJyb3JEb21haW5NYWNPU1N0YXR1czsK
LSAgICBlbHNlIHsKLSAgICAgICAgcmVzdWx0LmRvbWFpbiA9IGtDRlN0cmVhbUVycm9yRG9tYWlu
Q3VzdG9tOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi1SZXNvdXJjZUVycm9yOjpvcGVyYXRvciBDRlN0cmVhbUVycm9yKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gY2ZTdHJlYW1FcnJvcigpOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAK
aW5kZXggZGM3OWJjMzk5NGIyYzdlMTdiZmE5ZDM1ZThiOWY4NTEyNjc2NzU1YS4uMGFjZTAzMDE2
NDYyOTExZTVhM2U1OWU3YTlkZWI1ZTY1NmVhNTk4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBA
IC01MywxNiArNTMsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuaCIK
LSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jaWYgVVNFKENGTkVUV09SSykK
LSNpbmNsdWRlICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZV
UkxDb25uZWN0aW9uUHJpdi5oPgotI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlcXVlc3RQcml2
Lmg+Ci0jZW5kaWYKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPFdlYktp
dFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbmNsdWRlIDxwcm9j
ZXNzLmg+CkBAIC0yMjksMTQgKzIxOSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNG
VVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sCiAgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUocHJvcGVydGllc0RpY3Rpb25hcnkuZ2V0KCksIGtDRlVSTENv
bm5lY3Rpb25Tb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzLCBzdHJlYW1Qcm9wZXJ0aWVzKTsKICAgICBD
RlJlbGVhc2Uoc3RyZWFtUHJvcGVydGllcyk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBp
ZiAoZC0+bV91c2VzQXN5bmNDYWxsYmFja3MpCi0gICAgICAgIGQtPm1fY29ubmVjdGlvbkRlbGVn
YXRlID0gYWRvcHRSZWYobmV3IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUodGhpcykpOwotICAgIGVsc2UKLSAgICAgICAgZC0+bV9jb25uZWN0
aW9uRGVsZWdhdGUgPSBhZG9wdFJlZihuZXcgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlKHRoaXMpKTsKLSNlbHNlCiAgICAgZC0+bV9jb25uZWN0aW9uRGVs
ZWdhdGUgPSBhZG9wdFJlZihuZXcgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlKHRoaXMpKTsKLSNlbmRpZgogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRl
LT5zZXR1cFJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAKICAgICBDRlVSTENvbm5lY3Rpb25DbGll
bnRfVjYgY2xpZW50ID0gZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUtPm1ha2VDb25uZWN0aW9uQ2xp
ZW50KCk7CkBAIC0zNzgsMTIgKzM2MSw5IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRs
ZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoCiAKICAg
ICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNzLmlzTnVsbCgpKSB7CiAgICAg
ICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0Yo
Q0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGQtPm1fdXNlci5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwg
a0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkpOwotI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKGNmQ3JlZGVudGlhbC5n
ZXQoKSk7Ci0jZWxzZQorCiAgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IGNvcmUoY2ZD
cmVkZW50aWFsLmdldCgpKTsKLSNlbmRpZgotICAgICAgICAKKwogICAgICAgICBVUkwgdXJsVG9T
dG9yZTsKICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVz
Q29kZSgpID09IDQwMSkKICAgICAgICAgICAgIHVybFRvU3RvcmUgPSBjaGFsbGVuZ2UuZmFpbHVy
ZVJlc3BvbnNlKCkudXJsKCk7CkBAIC00MTIsMTIgKzM5Miw4IEBAIGJvb2wgUmVzb3VyY2VIYW5k
bGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBBdXRoZW50aWNh
dGlvbkNoCiAgICAgICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRoZSBjcmVkZW50aWFsIGJhY2ss
IHBvc3NpYmx5IGFkZGluZyBpdCBhcyBhIGRlZmF1bHQgZm9yIHRoaXMgZGlyZWN0b3J5LgogICAg
ICAgICAgICAgICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlh
bFN0b3JhZ2UoKS5zZXQoY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCBj
aGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkpOwogICAgICAgICAgICAgICAgIH0KLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVk
ZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwg
Y2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbHNlCiAgICAgICAgICAgICAg
ICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihj
cmVhdGVDRihjcmVkZW50aWFsKSk7CiAgICAgICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNl
Q3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hh
bGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRpZgogICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00NjcsMjAgKzQ0Mywx
MiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZQogICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3Jh
Z2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQod2ViQ3JlZGVudGlhbCwgY2hhbGxl
bmdlLnByb3RlY3Rpb25TcGFjZSgpLCB1cmxUb1N0b3JlKTsKIAogICAgICAgICBpZiAoZC0+bV9j
b25uZWN0aW9uKSB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICBDRlVSTENvbm5l
Y3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgd2ViQ3JlZGVudGlhbC5j
ZkNyZWRlbnRpYWwoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbHNl
CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwg
PSBhZG9wdENGKGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwpKTsKICAgICAgICAgICAgIENGVVJMQ29u
bmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwu
Z2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZW5kaWYKICAgICAg
ICAgfQogICAgIH0gZWxzZSBpZiAoZC0+bV9jb25uZWN0aW9uKSB7Ci0jaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9u
LmdldCgpLCBjcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hh
bGxlbmdlUmVmKCkpOwotI2Vsc2UKICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJl
Zj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRihjcmVkZW50aWFsKSk7CiAgICAgICAg
IENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNy
ZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZW5k
aWYKICAgICB9CiAKICAgICBjbGVhckF1dGhlbnRpY2F0aW9uKCk7CkBAIC02MjEsMzAgKzU4OSw2
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyhib29sIGRl
ZmVycykKICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uUmVzdW1lKGQtPm1fY29ubmVjdGlvbi5nZXQo
KSk7CiB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnNjaGVk
dWxlKFNjaGVkdWxlUGFpciYgcGFpcikKLXsKLSAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCA9IHBh
aXIucnVuTG9vcCgpOwotICAgIGlmICghcnVuTG9vcCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Q0ZVUkxDb25uZWN0aW9uU2NoZWR1bGVXaXRoUnVuTG9vcChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCks
IHJ1bkxvb3AsIHBhaXIubW9kZSgpKTsKLSAgICBpZiAoZC0+bV9zdGFydFdoZW5TY2hlZHVsZWQp
IHsKLSAgICAgICAgQ0ZVUkxDb25uZWN0aW9uU3RhcnQoZC0+bV9jb25uZWN0aW9uLmdldCgpKTsK
LSAgICAgICAgZC0+bV9zdGFydFdoZW5TY2hlZHVsZWQgPSBmYWxzZTsKLSAgICB9Ci19Ci0KLXZv
aWQgUmVzb3VyY2VIYW5kbGU6OnVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQotewotICAg
IENGUnVuTG9vcFJlZiBydW5Mb29wID0gcGFpci5ydW5Mb29wKCk7Ci0gICAgaWYgKCFydW5Mb29w
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlVSTENvbm5lY3Rpb25VbnNjaGVkdWxlRnJvbVJ1
bkxvb3AoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBydW5Mb29wLCBwYWlyLm1vZGUoKSk7Ci19Ci0j
ZW5kaWYKLQogY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBSZXNvdXJjZUhhbmRsZTo6Y3VycmVudFJl
cXVlc3QoKSBjb25zdAogewogICAgIHJldHVybiBkLT5tX2N1cnJlbnRSZXF1ZXN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKaW5kZXggMjgx
YTdiNjJlYmQ5NjJmOTA1MmIzNDM3M2Y4OGJmY2ViYmY5ZGZlNy4uMmI1Yzk2MjI1MGRjMGRiZjBk
MmRlM2MxOTdlOTg1NTAyZGE5MmE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCkBAIC0zMiwxMCArMzIsNiBAQAogI2luY2x1ZGUgIk5l
dHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKIAotI2lmIFBM
QVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRp
ZgotCiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9X
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggNmM5MjAyYjA4N2Nh
YjliNWFmM2RiMTY5ZjA1OGQ0NWYxOTlhYWE5Mi4uMzUyNjM3YzI0MjBiMDA3Mzg5ODE4ZDhlNDYz
YTczNTFhMWU1Njc1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCkBAIC02MywxMiArNjMsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIH0KICAgICAgICAgCiAjaWYgVVNFKENGTkVUV09SSykKLSNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VSZXF1ZXN0KE5TVVJM
UmVxdWVzdCAqKTsKLSAgICAgICAgdm9pZCB1cGRhdGVOU1VSTFJlcXVlc3QoKTsKLSAgICAgICAg
dm9pZCBjbGVhck9yVXBkYXRlTlNVUkxSZXF1ZXN0KCk7Ci0jZW5kaWYKLQogICAgICAgICBSZXNv
dXJjZVJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdCkKICAgICAgICAgICAgIDogUmVz
b3VyY2VSZXF1ZXN0QmFzZSgpCiAgICAgICAgICAgICAsIG1fY2ZSZXF1ZXN0KGNmUmVxdWVzdCkK
QEAgLTg4LDExICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhcHBs
eVdlYkFyY2hpdmVIYWNrRm9yTWFpbCgpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0j
aWYgVVNFKENGTkVUV09SSykKLSAgICAgICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1E
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9odHRwQm9keSB8fCBtX2NmUmVxdWVzdDsgfQotI2Vsc2UK
ICAgICAgICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9odHRwQm9keSB8fCBtX25zUmVxdWVzdDsgfQotI2VuZGlmCiAgICAgICAgIFdFQkNPUkVf
RVhQT1JUIE5TVVJMUmVxdWVzdCAqbnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5KSBj
b25zdDsKIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ0ZTdHJpbmdSZWYgaXNVc2Vy
SW5pdGlhdGVkS2V5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IGM4ZTQ2NjViZjkxZDY0OWVjMDAwZWJjMDdj
NTBlZmRlZjM5OTljZDAuLjM1ZmNhMjE0NThmNDM1ZTkwMjUyMjc0MDMwNWYyNGQyNGEyMjZjYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VS
ZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VSZXNwb25zZS5oCkBAIC01Myw5ICs1Myw2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1f
aXNOdWxsID0gIWNmUmVzcG9uc2U7CiAgICAgfQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFdF
QkNPUkVfRVhQT1JUIFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqKTsKLSNlbmRpZgog
I2Vsc2UKICAgICBSZXNvdXJjZVJlc3BvbnNlKE5TVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UpCiAg
ICAgICAgIDogbV9pbml0TGV2ZWwoVW5pbml0aWFsaXplZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNw
cAppbmRleCBiMDExYTU3ZmY0ZTRjYzJlMDc4MzY2ODRhOGM3Mzg0NDAyYjM4Y2U2Li40Mjk0ZWVk
MmVhMzJiNzI2OGQ2OTA1ZDBmNDU1ZWJhMzExYjU2M2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQu
Y3BwCkBAIC0zMywxMCArMzMsNiBAQAogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlc3BvbnNl
UHJpdi5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09B
KQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRpZgotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBDRlN0cmluZ1JlZiBjb25zdCBjb21tb25IZWFkZXJGaWVs
ZHNbXSA9IHsKQEAgLTQ2LDEzICs0Miw5IEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBjb25zdCBjb21t
b25IZWFkZXJGaWVsZHNbXSA9IHsKIENGVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VSZXNwb25zZTo6
Y2ZVUkxSZXNwb25zZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NmUmVzcG9uc2UgJiYgIW1faXNO
dWxsKSB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIG5zVVJMUmVzcG9uc2UoKTsKLSNl
bHNlCiAgICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsID0gbV91cmwuY3JlYXRlQ0ZVUkwo
KTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY3JlYXRlcyBhIHZlcnkgaW5jb21wbGV0ZSBDRlVS
TFJlc3BvbnNlLCB3aGljaCBkb2VzIG5vdCBldmVuIGhhdmUgYSBzdGF0dXMgY29kZS4KICAgICAg
ICAgbV9jZlJlc3BvbnNlID0gYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlKDAsIHVybC5nZXQo
KSwgbV9taW1lVHlwZS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBtX2V4cGVjdGVk
Q29udGVudExlbmd0aCwgbV90ZXh0RW5jb2RpbmdOYW1lLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpKTsKLSNlbmRpZgogICAgIH0KIAog
ICAgIHJldHVybiBtX2NmUmVzcG9uc2UuZ2V0KCk7CkBAIC0xMTMsMTIgKzEwNSwxMCBAQCB2b2lk
IFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoSW5pdExldmVsIGluaXRMZXZlbCkK
ICAgICBtX2luaXRMZXZlbCA9IGluaXRMZXZlbDsKIH0KIAotI2lmICFQTEFURk9STShDT0NPQSkK
IENlcnRpZmljYXRlSW5mbyBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNlcnRpZmljYXRlSW5m
bygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHsgfTsKIH0KLSNlbmRpZgogCiBTdHJpbmcgUmVzb3Vy
Y2VSZXNwb25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2Nv
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29j
b2EuaAppbmRleCBlYzgyMmU0ZWI5Y2Y1MDUxMWZkZWNmMGQ2OTg1OWM5ZTU3M2YwYjEwLi45NDM0
ZDNhN2ExYTUwYjU1ZDU4ZDkwYzZlZGM1MmUyN2Q2MDk1OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmgKQEAg
LTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQmFzZS5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW5jbHVkZSAiQ0ZOZXR3
b3JrU1BJLmgiCi0jZW5kaWYKLQogT0JKQ19DTEFTUyBOU1VSTENyZWRlbnRpYWw7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTUyLDE4ICs0OCwxMiBAQCBwdWJsaWM6CiAKICAgICBDcmVkZW50
aWFsKGNvbnN0IENyZWRlbnRpYWwmLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOwogCi0jaWYgVVNF
KENGTkVUV09SSykKLSAgICBleHBsaWNpdCBDcmVkZW50aWFsKENGVVJMQ3JlZGVudGlhbFJlZik7
Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDcmVkZW50aWFsKE5TVVJMQ3Jl
ZGVudGlhbCAqKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgpIGNvbnN0Owog
CiAgICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9uc0NyZWRlbnRpYWwgJiYgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YShtX25zQ3JlZGVu
dGlhbC5nZXQoKSk7IH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxDcmVkZW50aWFs
UmVmIGNmQ3JlZGVudGlhbCgpIGNvbnN0OwotI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNV
UkxDcmVkZW50aWFsICpuc0NyZWRlbnRpYWwoKSBjb25zdDsKIAogICAgIHN0YXRpYyBib29sIHBs
YXRmb3JtQ29tcGFyZShjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgQ3JlZGVudGlhbCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFs
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRp
YWxDb2NvYS5tbQppbmRleCBkNjk2MWI2NjUyYTBmYWQyYjFkODZlMTg4NWFmNTI1MTI4OWEyMzcx
Li43ZTA1YzQ2M2E1NWFlM2NiMjg5NjU2YmExMzFkOWUyMjQwYzAwNjM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2Nv
YS5tbQpAQCAtMjYsMTMgKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQ3Jl
ZGVudGlhbENvY29hLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQGludGVyZmFjZSBOU1VSTENy
ZWRlbnRpYWwgKFdlYkRldGFpbHMpCi0tIChpZClfaW5pdFdpdGhDRlVSTENyZWRlbnRpYWw6KENG
VVJMQ3JlZGVudGlhbFJlZiljcmVkZW50aWFsOwotLSAoQ0ZVUkxDcmVkZW50aWFsUmVmKSBfQ0ZV
UkxDcmVkZW50aWFsOwotQGVuZAotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHRvTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVu
Y2UoQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQpAQCAtODQsMjYgKzc3LDEyIEBA
IENyZWRlbnRpYWw6OkNyZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYgb3JpZ2luYWwsIENyZWRl
bnRpYWxQZXJzaXN0ZW5jZSBwZXJzaXN0CiAgICAgfQogfQogCi0jaWYgVVNFKENGTkVUV09SSykK
LUNyZWRlbnRpYWw6OkNyZWRlbnRpYWwoQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWRlbnRpYWwpCi0g
ICAgOiBDcmVkZW50aWFsKGFkb3B0TlMoW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIF9pbml0V2l0
aENGVVJMQ3JlZGVudGlhbDpjcmVkZW50aWFsXSkuZ2V0KCkpCi17Ci19Ci0jZW5kaWYKLQogQ3Jl
ZGVudGlhbDo6Q3JlZGVudGlhbChOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpCiAgICAgOiBD
cmVkZW50aWFsQmFzZShjcmVkZW50aWFsLnVzZXIsIGNyZWRlbnRpYWwucGFzc3dvcmQsIHRvQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UpKQogICAgICwgbV9uc0Ny
ZWRlbnRpYWwoY3JlZGVudGlhbCkKIHsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi1DRlVSTENy
ZWRlbnRpYWxSZWYgQ3JlZGVudGlhbDo6Y2ZDcmVkZW50aWFsKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gW25zQ3JlZGVudGlhbCgpIF9DRlVSTENyZWRlbnRpYWxdOwotfQotI2VuZGlmCi0KIE5TVVJM
Q3JlZGVudGlhbCAqQ3JlZGVudGlhbDo6bnNDcmVkZW50aWFsKCkgY29uc3QKIHsKICAgICBpZiAo
bV9uc0NyZWRlbnRpYWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLmgKaW5kZXggNzQ4ODJkN2E4OGI3
ODMxYjQxNGY5MGRmNzFkMTVkODkyNDRlMjE1Mi4uYjg2YWIwM2Q0ZmYzMjM1MzQwM2ZmMDdmYWE4
MTgxZTUyOTgwZjdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EuaApAQCAtMjksMTAgKzI5LDYg
QEAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IF9DRlVSTFByb3Rl
Y3Rpb25TcGFjZSogQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY7Ci0jZW5kaWYKLQogT0JKQ19DTEFT
UyBOU1VSTFByb3RlY3Rpb25TcGFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsOSAr
NDMsNiBAQCBwdWJsaWM6CiAKICAgICBQcm90ZWN0aW9uU3BhY2UoV1RGOjpIYXNoVGFibGVEZWxl
dGVkVmFsdWVUeXBlIGRlbGV0ZWRWYWx1ZSkgOiBQcm90ZWN0aW9uU3BhY2VCYXNlKGRlbGV0ZWRW
YWx1ZSkgeyB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGV4cGxpY2l0IFByb3RlY3Rpb25T
cGFjZShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZik7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBQcm90ZWN0aW9uU3BhY2UoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKik7CiAKICAg
ICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBhLCBj
b25zdCBQcm90ZWN0aW9uU3BhY2UmIGIpOwpAQCAtNTgsOSArNTEsNiBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIHJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KCkgY29uc3Q7
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNmU3Bh
Y2UoKSBjb25zdDsKLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUHJvdGVjdGlvblNw
YWNlICpuc1NwYWNlKCkgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5t
bQppbmRleCBhZjRjNGUwNTc2OGMwOGY2M2I2ZGEwZGE5OTkzNDc4NWExM2ZiOGEzLi5kYjFmYjUx
YmY5OTAyN2JjMmYzNTMwYTVkNTE4YjBmZjdiNzg2MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29j
b2EubW0KQEAgLTI2LDIyICsyNiw4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBy
b3RlY3Rpb25TcGFjZUNvY29hLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQGludGVyZmFjZSBO
U1VSTFByb3RlY3Rpb25TcGFjZSAoV2ViRGV0YWlscykKLS0gKENGVVJMUHJvdGVjdGlvblNwYWNl
UmVmKSBfQ0ZVUkxQcm90ZWN0aW9uU3BhY2U7Ci0tIChpZClfaW5pdFdpdGhDRlVSTFByb3RlY3Rp
b25TcGFjZTooQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpY2ZQcm90U3BhY2U7Ci1AZW5kCi0jZW5k
aWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLVByb3RlY3Rp
b25TcGFjZTo6UHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHNwYWNlKQot
ICAgIDogUHJvdGVjdGlvblNwYWNlKGFkb3B0TlMoW1tOU1VSTFByb3RlY3Rpb25TcGFjZSBhbGxv
Y10gX2luaXRXaXRoQ0ZVUkxQcm90ZWN0aW9uU3BhY2U6c3BhY2VdKS5nZXQoKSkKLXsKLX0KLSNl
bmRpZgotCiBzdGF0aWMgUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZSB0eXBlKE5TVVJMUHJvdGVj
dGlvblNwYWNlICpzcGFjZSkKIHsKICAgICBpZiAoW3NwYWNlIGlzUHJveHldKSB7CkBAIC0xMDUs
MTMgKzkxLDYgQEAgUHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9uU3BhY2UoTlNVUkxQcm90ZWN0
aW9uU3BhY2UgKnNwYWNlKQogICAgIG1fbnNTcGFjZSA9IHNwYWNlOwogfQogCi0jaWYgVVNFKENG
TkVUV09SSykKLUNGVVJMUHJvdGVjdGlvblNwYWNlUmVmIFByb3RlY3Rpb25TcGFjZTo6Y2ZTcGFj
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFtuc1NwYWNlKCkgX0NGVVJMUHJvdGVjdGlvblNwYWNl
XTsKLX0KLSNlbmRpZgotCiBOU1VSTFByb3RlY3Rpb25TcGFjZSAqUHJvdGVjdGlvblNwYWNlOjpu
c1NwYWNlKCkgY29uc3QKIHsKICAgICBpZiAobV9uc1NwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29j
b2EubW0KaW5kZXggZmNmNDkzN2MzNjBiMjJhZjhlMWJmYzlhNDUzMGJiOTFjMTcxYmI1Yy4uZjk5
NmY2MjE0ZmU0YWE4ZjRjOGJiNTFmODQyMWM3NTcyNzI0NmM1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVz
dENvY29hLm1tCkBAIC01MywxNSArNTMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBOU1VSTFJl
cXVlc3QgKlJlc291cmNlUmVxdWVzdDo6bnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5
IGJvZHlQb2xpY3kpIGNvbnN0CiB7CiAgICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KGJvZHlQb2xp
Y3kpOwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgaWYgKCFtX25zUmVxdWVzdCkKLSAgICAgICAg
Y29uc3RfY2FzdDxSZXNvdXJjZVJlcXVlc3QqPih0aGlzKS0+dXBkYXRlTlNVUkxSZXF1ZXN0KCk7
Ci0jZW5kaWYKICAgICByZXR1cm4gW1ttX25zUmVxdWVzdC5nZXQoKSByZXRhaW5dIGF1dG9yZWxl
YXNlXTsKIH0KIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiBDRlVSTFJlcXVlc3RSZWYgUmVzb3Vy
Y2VSZXF1ZXN0OjpjZlVSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9keVBvbGljeSkg
Y29uc3QKIHsKICAgICByZXR1cm4gW25zVVJMUmVxdWVzdChib2R5UG9saWN5KSBfQ0ZVUkxSZXF1
ZXN0XTsKQEAgLTIyMiw4ICsyMTYsNiBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFn
ZVNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbikKICAgICBtX25z
UmVxdWVzdCA9IGFkb3B0TlMod2tDb3B5UmVxdWVzdFdpdGhTdG9yYWdlU2Vzc2lvbihzdG9yYWdl
U2Vzc2lvbiwgbV9uc1JlcXVlc3QuZ2V0KCkpKTsKIH0KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdP
UkspCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09B
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNv
dXJjZVJlc3BvbnNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbQppbmRleCBhNmVkYTVjMzk5YTMyZjBjMjI0ODEw
ZDc5OGY4NmY3NzQ1NGEzZTlhLi44ZThkZTQ2YmQ3ZjlhODhhZTdhYWRhY2VmNmIyYzc5NDAxYjJh
ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jl
c291cmNlUmVzcG9uc2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbQpAQCAtNjcsMTMgKzY3LDggQEAgdm9p
ZCBSZXNvdXJjZVJlc3BvbnNlOjppbml0TlNVUkxSZXNwb25zZSgpIGNvbnN0CiAKIENlcnRpZmlj
YXRlSW5mbyBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpIGNvbnN0
CiB7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBBU1NFUlQobV9jZlJlc3BvbnNlKTsKLSAgICBD
RlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UgPSBtX2NmUmVzcG9uc2UuZ2V0KCk7Ci0jZWxzZQog
ICAgIEFTU0VSVChtX25zUmVzcG9uc2UpOwogICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25z
ZSA9IFttX25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdOwotI2VuZGlmCiAKICAgICBpZiAoIWNm
UmVzcG9uc2UpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMDcsMzYgKzEwMiw2IEBAIENlcnRp
ZmljYXRlSW5mbyBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpIGNv
bnN0CiAgICAgcmV0dXJuIENlcnRpZmljYXRlSW5mbyhhZG9wdENGKGNlcnRpZmljYXRlQ2hhaW4p
KTsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLU5TVVJMUmVzcG9uc2UgKlJlc291cmNlUmVz
cG9uc2U6Om5zVVJMUmVzcG9uc2UoKSBjb25zdAotewotICAgIGlmICghbV9uc1Jlc3BvbnNlICYm
ICFtX2NmUmVzcG9uc2UgJiYgIW1faXNOdWxsKSB7Ci0gICAgICAgIGluaXROU1VSTFJlc3BvbnNl
KCk7Ci0gICAgICAgIG1fY2ZSZXNwb25zZSA9IFttX25zUmVzcG9uc2UuZ2V0KCkgX0NGVVJMUmVz
cG9uc2VdOwotICAgICAgICByZXR1cm4gbV9uc1Jlc3BvbnNlLmdldCgpOwotICAgIH0KLQotICAg
IGlmICghbV9jZlJlc3BvbnNlKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgaWYgKCFtX25z
UmVzcG9uc2UpCi0gICAgICAgIG1fbnNSZXNwb25zZSA9IFtOU1VSTFJlc3BvbnNlIF9yZXNwb25z
ZVdpdGhDRlVSTFJlc3BvbnNlOm1fY2ZSZXNwb25zZS5nZXQoKV07Ci0KLSAgICByZXR1cm4gbV9u
c1Jlc3BvbnNlLmdldCgpOwotfQotCi1SZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNl
KE5TVVJMUmVzcG9uc2UqIG5zUmVzcG9uc2UpCi0gICAgOiBtX2luaXRMZXZlbChVbmluaXRpYWxp
emVkKQotICAgICwgbV9wbGF0Zm9ybVJlc3BvbnNlSXNVcFRvRGF0ZSh0cnVlKQotICAgICwgbV9j
ZlJlc3BvbnNlKFtuc1Jlc3BvbnNlIF9DRlVSTFJlc3BvbnNlXSkKLSAgICAsIG1fbnNSZXNwb25z
ZShuc1Jlc3BvbnNlKQotewotICAgIG1faXNOdWxsID0gIW5zUmVzcG9uc2U7Ci19Ci0KLSNlbHNl
Ci0KIHN0YXRpYyBOU1N0cmluZyogY29uc3QgY29tbW9uSGVhZGVyRmllbGRzW10gPSB7CiAgICAg
QCJBZ2UiLCBAIkNhY2hlLUNvbnRyb2wiLCBAIkNvbnRlbnQtVHlwZSIsIEAiRGF0ZSIsIEAiRXRh
ZyIsIEAiRXhwaXJlcyIsIEAiTGFzdC1Nb2RpZmllZCIsIEAiUHJhZ21hIgogfTsKQEAgLTIzMiw4
ICsxOTcsNiBAQCBib29sIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZQogICAgIHJldHVybiBhLm5zVVJMUmVz
cG9uc2UoKSA9PSBiLm5zVVJMUmVzcG9uc2UoKTsKIH0KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdP
UkspCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09B
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tM
b29rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaApp
bmRleCA0NDgyNGRhMDI1OGRjYzE3NGJkZTliZTc1NzZhNWZjZjIxNmMwNTk2Li4xODMwM2I2NGYx
ZWI4NmU3YmRhMTA1YTA5YWNiOGI4MmZmNWE1ZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaApAQCAtODEsOSArODEsNiBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJik7CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hh
bmRsZT4gY3JlYXRlKFJlc291cmNlSGFuZGxlKiwgTlNVUkxDb25uZWN0aW9uICosIE5TVVJMUmVz
cG9uc2UgKiwgaWQgZGVsZWdhdGUpOwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJjZUhhbmRsZSosIFN5
bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSosIENGVVJMUmVz
cG9uc2VSZWYpOwotI2VuZGlmCiAgICAgLy8gRklYTUU6IFVzZSBvZiBSZXNvdXJjZUxvYWRlciBo
ZXJlIGlzIGEgcGxhdGZvcm0gdmlvbGF0aW9uLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VMb2FkZXImLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKQEAgLTk1LDkgKzkyLDYgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmFpbCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNV
UkxSZXNwb25zZSAqbnNSZXNwb25zZSgpOwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxS
ZXNwb25zZVJlZiBjZlJlc3BvbnNlKCk7Ci0jZW5kaWYKIAogICAgIHZvaWQgc2V0Q2xpZW50KFBh
c3NSZWZQdHI8UXVpY2tMb29rSGFuZGxlQ2xpZW50PiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGll
bnQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
UXVpY2tMb29rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tM
b29rLm1tCmluZGV4IDk2ZjUwZGYwNzQwMTg0NjQwYThmM2VhNjA0MjQ1OTJmNmE1YTk2YTAuLmRl
MDQwNGUyMDI1OWNlNzExZjg4NmU2MWQ3OWQ4ZjA1NTMxOGIzNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KQEAgLTMyLDEyICszMiwx
MiBAQAogI2ltcG9ydCAiRmlsZVN5c3RlbUlPUy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2lt
cG9ydCAiTlNGaWxlTWFuYWdlclNQSS5oIgotI2ltcG9ydCAiUXVpY2tMb29rU29mdExpbmsuaCIK
ICNpbXBvcnQgIlJlc291cmNlRXJyb3IuaCIKICNpbXBvcnQgIlJlc291cmNlSGFuZGxlLmgiCiAj
aW1wb3J0ICJSZXNvdXJjZUxvYWRlci5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzSU9TLmgiCiAjaW1wb3J0ICJTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUu
aCIKICNpbXBvcnQgIldlYkNvcmVVUkxSZXNwb25zZUlPUy5oIgogI2ltcG9ydCA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTQ2LDYg
KzQ2LDggQEAKICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCisjaW1wb3J0ICJRdWlja0xvb2tTb2Z0TGluay5oIgorCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogTlNTZXQgKldlYkNvcmU6OlFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVU
eXBlc1NldCgpCkBAIC0xODMsODMgKzE4NSw3IEBAIGNvbnN0IGNoYXIqIFdlYkNvcmU6OlFMUHJl
dmlld1Byb3RvY29sKCkKICAgICByZXR1cm4gcHJldmlld1Byb3RvY29sLmdldCgpLmRhdGEoKTsK
IH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0vLyBUaGUgd2F5IFF1aWNrTG9vayB3b3JrcyBpcyB3
ZSBwYXNzIGl0IGFuIE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlIGNhbGxiYWNrIG9iamVjdCBhdCBj
cmVhdGlvbgotLy8gdGltZS4gVGhlbiB3ZSBwYXNzIGl0IGFsbCB0aGUgZGF0YSBhcyB3ZSByZWNl
aXZlIGl0LiBPbmNlIHdlJ3ZlIGRvd25sb2FkZWQgdGhlIGZ1bGwgVVJMLAotLy8gUXVpY2tMb29r
IHR1cm5zIGFyb3VuZCBhbmQgc2VuZCB1cywgdGhyb3VnaCB0aGlzIGRlbGVnYXRlLCB0aGUgSFRN
TCB2ZXJzaW9uIG9mIHRoZSBmaWxlIHdoaWNoIHdlCi0vLyBwYXNzIG9uIHRvIFdlYkNvcmUuIFRo
ZSBmbGFnIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgaW4gUXVpY2tMb29rSGFu
ZGxlIGRlY2lkZXMKLS8vIHdoZXRoZXIgdG8gcGFzcyB0aGUgZGF0YSB0byBRdWlja0xvb2sgb3Ig
V2ViQ29yZS4KLS8vCi0vLyBUaGlzIHdvcmtzIGZpbmUgd2hlbiB1c2luZyBOUyBBUElzLCBidXQg
d2hlbiB1c2luZyBDRk5ldHdvcmssIHdlIGRvbid0IGhhdmUgYSBOU1VSTENvbm5lY3Rpb25EZWxl
Z2F0ZS4KLS8vIFNvIHdlIGNyZWF0ZSBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGFzIGFu
IGludGVybWVkaWF0ZSBkZWxlZ2F0ZSBvYmplY3QgYW5kIHBhc3MgaXQgdG8KLS8vIFFMUHJldmll
d0NvbnZlcnRlci4gVGhlIHByb3h5IGRlbGVnYXRlIHRoZW4gZm9yd2FyZHMgdGhlIG1lc3NhZ2Vz
IG9uIHRvIHRoZSBDRk5ldHdvcmsgY29kZS4KLUBpbnRlcmZhY2UgV2ViUXVpY2tMb29rSGFuZGxl
QXNEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZT4gewotICAgIFJl
ZlB0cjxTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU+IG1f
Y29ubmVjdGlvbkRlbGVnYXRlOwotfQotCi0tIChpZClpbml0V2l0aENvbm5lY3Rpb25EZWxlZ2F0
ZTooU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKiljb25u
ZWN0aW9uRGVsZWdhdGU7Ci0tICh2b2lkKWNsZWFySGFuZGxlOwotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZQotLSAoaWQpaW5pdFdpdGhDb25uZWN0
aW9uRGVsZWdhdGU6KFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZSopY29ubmVjdGlvbkRlbGVnYXRlCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAg
ICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgbV9jb25uZWN0aW9uRGVsZWdh
dGUgPSBjb25uZWN0aW9uRGVsZWdhdGU7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQp
Y29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZlRGF0YUFy
cmF5OihOU0FycmF5ICopZGF0YUFycmF5Ci17Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24p
OwotICAgIGlmICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBM
T0coTmV0d29yaywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRh
QXJyYXkoKSIpOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRSZWNlaXZlRGF0YUFycmF5
KHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZBcnJheVJlZj4oZGF0YUFycmF5KSk7Ci19Ci0KLS0gKHZvaWQp
Y29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZlRGF0YToo
TlNEYXRhICopZGF0YSBsZW5ndGhSZWNlaXZlZDoobG9uZyBsb25nKWxlbmd0aFJlY2VpdmVkCi17
Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIGlmICghbV9jb25uZWN0aW9uRGVs
ZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBMT0coTmV0d29yaywgIldlYlF1aWNrTG9va0hh
bmRsZUFzRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhKCkgLSBkYXRhIGxlbmd0aCA9ICVsZCIsIChs
b25nKVtkYXRhIGxlbmd0aF0pOwotCi0gICAgLy8gUXVpY2tMb29rIGNvZGUgc2VuZHMgdXMgYSBu
aWwgZGF0YSBhdCB0aW1lcy4gVGhlIGNoZWNrIGJlbG93IGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUg
aW4KLSAgICAvLyBSZXNvdXJjZUhhbmRsZU1hYy5jcHAgYWRkZWQgZm9yIGEgZGlmZmVyZW50IGJ1
Zy4KLSAgICBpZiAoIVtkYXRhIGxlbmd0aF0pCi0gICAgICAgIHJldHVybjsKLSAgICBtX2Nvbm5l
Y3Rpb25EZWxlZ2F0ZS0+ZGlkUmVjZWl2ZURhdGEocmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+
KGRhdGEpLCBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aFJlY2VpdmVkKSk7Ci19Ci0KLS0gKHZvaWQp
Y29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24K
LXsKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb25E
ZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29r
SGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkRmluaXNoTG9hZGluZygpIik7Ci0gICAgbV9jb25uZWN0aW9u
RGVsZWdhdGUtPmRpZEZpbmlzaExvYWRpbmcoKTsKLX0KLQotLSAodm9pZCljb25uZWN0aW9uOihO
U1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKill
cnJvcgotewotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBpZiAoIW1fY29ubmVj
dGlvbkRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgTE9HKE5ldHdvcmssICJXZWJRdWlj
a0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRGYWlsKCkiKTsKLSAgICBtX2Nvbm5lY3Rpb25EZWxl
Z2F0ZS0+ZGlkRmFpbChyZWludGVycHJldF9jYXN0PENGRXJyb3JSZWY+KGVycm9yKSk7Ci19Ci0K
LS0gKHZvaWQpY2xlYXJIYW5kbGUKLXsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IG51bGxw
dHI7Ci19Ci1AZW5kCi0jZW5kaWYKLQotQGludGVyZmFjZSBXZWJSZXNvdXJjZUxvYWRlclF1aWNr
TG9va0RlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiB7CitAaW50
ZXJmYWNlIFdlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgOiBOU09iamVjdCA8TlNV
UkxDb25uZWN0aW9uRGVsZWdhdGUsIFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRlPiB7CiAg
ICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBfcmVzb3VyY2VMb2FkZXI7CiAgICAgQk9PTCBfaGFz
U2VudERpZFJlY2VpdmVSZXNwb25zZTsKICAgICBCT09MIF9oYXNGYWlsZWQ7CkBAIC0zNTAsNyAr
Mjc2LDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9u
IGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnIKICAgICBfcmVzb3VyY2VMb2FkZXItPmRp
ZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvcikpOwogfQogCi0tICh2b2lkKWNsZWFySGFuZGxlCist
ICh2b2lkKWRldGFjaEhhbmRsZQogewogICAgIF9yZXNvdXJjZUxvYWRlciA9IG51bGxwdHI7CiAg
ICAgX3F1aWNrTG9va0hhbmRsZSA9IG51bGxwdHI7CkBAIC00MDYsMjYgKzMzMiw2IEBAIHN0ZDo6
dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKFJlc291
cmNlSGFuZGxlKiBoYW5kbGUsCiAgICAgcmV0dXJuIFdURjo6bW92ZShxdWlja0xvb2tIYW5kbGUp
OwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLXN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5k
bGU+IFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSogY29ubmVjdGlvbkRl
bGVnYXRlLCBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCi17Ci0gICAgQVNTRVJUX0FSRyho
YW5kbGUsIGhhbmRsZSk7Ci0gICAgaWYgKGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkucmVxdWVzdGVy
KCkgIT0gUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1haW4gfHwgIVtRTFByZXZpZXdHZXRT
dXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilDRlVSTFJl
c3BvbnNlR2V0TUlNRVR5cGUoY2ZSZXNwb25zZSldKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIE5TVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UgPSBbTlNVUkxSZXNwb25zZSBfcmVzcG9u
c2VXaXRoQ0ZVUkxSZXNwb25zZTpjZlJlc3BvbnNlXTsKLSAgICBXZWJRdWlja0xvb2tIYW5kbGVB
c0RlbGVnYXRlICpkZWxlZ2F0ZSA9IFtbW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgYWxs
b2NdIGluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRlOmNvbm5lY3Rpb25EZWxlZ2F0ZV0gYXV0b3Jl
bGVhc2VdOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IHF1aWNrTG9va0hh
bmRsZShuZXcgUXVpY2tMb29rSGFuZGxlKFtoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLm5zVVJMUmVx
dWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSBVUkxdLCBuaWwsIG5zUmVzcG9uc2UsIGRlbGVnYXRl
KSk7Ci0gICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkQ3JlYXRlUXVpY2tMb29rSGFuZGxlKCpxdWlj
a0xvb2tIYW5kbGUpOwotICAgIHJldHVybiBXVEY6Om1vdmUocXVpY2tMb29rSGFuZGxlKTsKLX0K
LQotQ0ZVUkxSZXNwb25zZVJlZiBRdWlja0xvb2tIYW5kbGU6OmNmUmVzcG9uc2UoKQotewotICAg
IHJldHVybiBbbV9uc1Jlc3BvbnNlIF9DRlVSTFJlc3BvbnNlXTsKLX0KLSNlbmRpZgotCiBib29s
IFF1aWNrTG9va0hhbmRsZTo6c2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKIHsKICAgICByZXR1cm4gW1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1Nl
dCgpIGNvbnRhaW5zT2JqZWN0Om1pbWVUeXBlXTsKQEAgLTQ5MSw3ICszOTcsNyBAQCBRdWlja0xv
b2tIYW5kbGU6On5RdWlja0xvb2tIYW5kbGUoKQogICAgIExPRyhOZXR3b3JrLCAiUXVpY2tMb29r
SGFuZGxlOjp+UXVpY2tMb29rSGFuZGxlKCkiKTsKICAgICBtX2NvbnZlcnRlciA9IG51bGxwdHI7
CiAKLSAgICBbbV9kZWxlZ2F0ZSBjbGVhckhhbmRsZV07CisgICAgW21fZGVsZWdhdGUgZGV0YWNo
SGFuZGxlXTsKIH0KIAogU3RyaW5nIFF1aWNrTG9va0hhbmRsZTo6cHJldmlld0ZpbGVOYW1lKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jl
c291cmNlSGFuZGxlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
UmVzb3VyY2VIYW5kbGVJT1MubW0KaW5kZXggNjY3YjliMTg2Njc0NDBkZWJmZWZkYTE4MDViODRj
YjU0Nzg0YzU3OS4uYjcyOWYwZjM2MjE5ZGM0MWYzYWRlYjMxOTQyMWZmOTY1N2Y0ODFmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VIYW5k
bGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3Vy
Y2VIYW5kbGVJT1MubW0KQEAgLTEsMzkgKzEgQEAKLS8vCi0vLyAgUmVzb3VyY2VIYW5kbGVJUGhv
bmUubW0KLS8vICBXZWJDb3JlCi0vLwotLy8gIENvcHlyaWdodCAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oIgotCi0jaWYgVVNFKENGTkVUV09SSykKLQotI2ltcG9ydCA8
Q0ZOZXR3b3JrL0NGU29ja2V0U3RyZWFtUHJpdi5oPgotI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VS
TFJlcXVlc3RQcml2YXRlLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUNGTXV0YWJsZURpY3Rpb25hcnlSZWYgUmVzb3VyY2VIYW5kbGU6OmNy
ZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKLXsKLSAgICBOU1N0cmluZyAqaG9zdCA9IHJlcXVlc3QudXJsKCkuaG9zdCgpOwot
ICAgIE5TQXJyYXkgKmNlcnRBcnJheSA9IFtOU1VSTFJlcXVlc3QgYWxsb3dzU3BlY2lmaWNIVFRQ
U0NlcnRpZmljYXRlRm9ySG9zdDpob3N0XTsKLSAgICBCT09MIGFsbG93c0FueUNlcnRpZmljYXRl
ID0gW05TVVJMUmVxdWVzdCBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlRm9ySG9zdDpob3N0XTsK
LSAgICBpZiAoIWNlcnRBcnJheSAmJiAhYWxsb3dzQW55Q2VydGlmaWNhdGUpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBzc2xQcm9wcyA9IENGRGljdGlv
bmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9u
YXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAg
aWYgKGNlcnRBcnJheSkKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3NsUHJvcHMsIF9r
Q0ZTdHJlYW1TU0xUcnVzdGVkTGVhZkNlcnRpZmljYXRlcywgKENGVHlwZVJlZikgY2VydEFycmF5
KTsKLQotICAgIGlmIChhbGxvd3NBbnlDZXJ0aWZpY2F0ZSkKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUoc3NsUHJvcHMsIGtDRlN0cmVhbVNTTFZhbGlkYXRlc0NlcnRpZmljYXRlQ2hhaW4s
IGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgcmV0dXJuIHNzbFByb3BzOwotfQotCi19Ci0KLSNlbmRp
ZgorLy8gUmVtb3ZlIG1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDdiN2RjNmJlNjM0NWNjNTY5NmExZWM2ZWJkMDAzMmYzMjM0ZGZiMDAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VSZXF1ZXN0SU9TLm1tCisrKyAvZGV2L251bGwKQEAg
LTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSZXNvdXJjZVJlcXVlc3QuaCIKLQot
I2lmIFBMQVRGT1JNKElPUykKLQotQGludGVyZmFjZSBOU1VSTFJlcXVlc3QgKFdlYk5TVVJMUmVx
dWVzdERldGFpbHMpCi0tIChDRlVSTFJlcXVlc3RSZWYpX0NGVVJMUmVxdWVzdDsKLS0gKGlkKV9p
bml0V2l0aENGVVJMUmVxdWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJlcXVlc3Q7Ci1AZW5kCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIFVTRShDRk5FVFdPUkspCi0KLVJlc291cmNlUmVxdWVz
dDo6UmVzb3VyY2VSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0KQotICAgIDogUmVzb3Vy
Y2VSZXF1ZXN0QmFzZSgpCi0gICAgLCBtX2NmUmVxdWVzdChbbnNSZXF1ZXN0IF9DRlVSTFJlcXVl
c3RdKQotICAgICwgbV9uc1JlcXVlc3QobnNSZXF1ZXN0KQotewotfQotCi12b2lkIFJlc291cmNl
UmVxdWVzdDo6dXBkYXRlTlNVUkxSZXF1ZXN0KCkKLXsKLSAgICBpZiAobV9jZlJlcXVlc3QpCi0g
ICAgICAgIG1fbnNSZXF1ZXN0ID0gYWRvcHROUyhbW05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2Nd
IF9pbml0V2l0aENGVVJMUmVxdWVzdDptX2NmUmVxdWVzdC5nZXQoKV0pOwotfQotCi12b2lkIFJl
c291cmNlUmVxdWVzdDo6Y2xlYXJPclVwZGF0ZU5TVVJMUmVxdWVzdCgpCi17Ci0gICAgLy8gVGhl
cmUgaXMgY2xpZW50IGNvZGUgdGhhdCBleHRlbmRzIE5TVVJMUmVxdWVzdCBhbmQgZXhwZWN0cyB0
byBnZXQgYmFjaywgaW4gdGhlIGRlbGVnYXRlCi0gICAgLy8gY2FsbGJhY2tzLCBhbiBvYmplY3Qg
b2YgdGhlIHNhbWUgdHlwZSB0aGF0IHRoZXkgcGFzc2VkIGludG8gV2ViS2l0LiBUbyBrZWVwIHRo
ZW4gcnVubmluZywgd2UKLSAgICAvLyBjcmVhdGUgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUg
YW5kIHJldHVybiB0aGF0LiBTZWUgPHJkYXI6Ly85ODQzNTgyPi4KLSAgICAvLyBBbHNvLCBkZXZl
bG9wZXJzIHJlYWxseSByZWFsbHkgd2FudCBhbiBOU011dGFibGVVUkxSZXF1ZXN0IHNvIHRyeSB0
byBjcmVhdGUgYW4KLSAgICAvLyBOU011dGFibGVVUkxSZXF1ZXN0IGluc3RlYWQgb2YgTlNVUkxS
ZXF1ZXN0LgotICAgIHN0YXRpYyBDbGFzcyBuc1VSTFJlcXVlc3RDbGFzcyA9IFtOU1VSTFJlcXVl
c3QgY2xhc3NdOwotICAgIHN0YXRpYyBDbGFzcyBuc011dGFibGVVUkxSZXF1ZXN0Q2xhc3MgPSBb
TlNNdXRhYmxlVVJMUmVxdWVzdCBjbGFzc107Ci0gICAgQ2xhc3MgcmVxdWVzdENsYXNzID0gW21f
bnNSZXF1ZXN0LmdldCgpIGNsYXNzXTsKLQotICAgIGlmICghbV9jZlJlcXVlc3QpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChyZXF1ZXN0Q2xhc3MgJiYgcmVxdWVzdENsYXNzICE9IG5zVVJM
UmVxdWVzdENsYXNzICYmIHJlcXVlc3RDbGFzcyAhPSBuc011dGFibGVVUkxSZXF1ZXN0Q2xhc3Mp
Ci0gICAgICAgIG1fbnNSZXF1ZXN0ID0gYWRvcHROUyhbW3JlcXVlc3RDbGFzcyBhbGxvY10gX2lu
aXRXaXRoQ0ZVUkxSZXF1ZXN0Om1fY2ZSZXF1ZXN0LmdldCgpXSk7Ci0gICAgZWxzZQotICAgICAg
ICBtX25zUmVxdWVzdCA9IG51bGxwdHI7Ci19Ci0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlv
bk1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0
aW9uTWFjLm1tCmluZGV4IGUzOGIwMzg3ZGUwNDZjN2MwMTU3NDNkN2JiN2VhMzZlNDA5MzgwMjIu
LmE4MmE1NWMzMzg4MzdkNzBlMmUxYTViMDMyYzcyYmM5MzM2OThlMTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFj
Lm1tCkBAIC0zMiwxOCArMzIsMTIgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5oPgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFByb3RlY3Rpb25T
cGFjZS5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQgIkNGTlNVUkxDb25uZWN0aW9u
U1BJLmgiCi0jZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbnRlcmZhY2Ug
V2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgOiBOU09iamVjdCA8
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcj4KIHsKICAgICBBdXRoZW50aWNhdGlv
bkNsaWVudCogbV9jbGllbnQ7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBDRlVSTEF1dGhDaGFs
bGVuZ2VSZWYgbV9jZkNoYWxsZW5nZTsKLSNlbmRpZgogfQogLSAoaWQpaW5pdFdpdGhBdXRoZW50
aWNhdGlvbkNsaWVudDooQXV0aGVudGljYXRpb25DbGllbnQqKWNsaWVudDsKIC0gKEF1dGhlbnRp
Y2F0aW9uQ2xpZW50KiljbGllbnQ7CkBAIC04OSw0NyArODMsMTAgQEAgLSAodm9pZCljYW5jZWxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNo
YWxsZW5nZQogICAgICAgICBtX2NsaWVudC0+cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29yZShjaGFs
bGVuZ2UpKTsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0tICh2b2lkKXNldENGQ2hhbGxlbmdl
OihDRlVSTEF1dGhDaGFsbGVuZ2VSZWYpY2hhbGxlbmdlCi17Ci0gICAgbV9jZkNoYWxsZW5nZSA9
IGNoYWxsZW5nZTsKLX0KLQotLSAoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKWNmQ2hhbGxlbmdlCi17
Ci0gICAgcmV0dXJuIG1fY2ZDaGFsbGVuZ2U7Ci19Ci0jZW5kaWYKLQogQGVuZAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSBjb3JlKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKm1hY0NoYWxsZW5nZSkKLXsK
LSAgICBXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciAqY2hhbGxl
bmdlU2VuZGVyID0gKFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVy
KikgW21hY0NoYWxsZW5nZSBzZW5kZXJdOwotICAgIHJldHVybiBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShbY2hhbGxlbmdlU2VuZGVyIGNmQ2hhbGxlbmdlXSwgW2NoYWxsZW5nZVNlbmRlciBjbGll
bnRdKTsKLX0KLQotTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbWFjKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlKQotewotICAgIEF1dGhlbnRpY2F0aW9u
Q2xpZW50KiBhdXRoQ2xpZW50ID0gY29yZUNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgp
OwotICAgIFJldGFpblB0cjxXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNl
bmRlcj4gY2hhbGxlbmdlU2VuZGVyID0gYWRvcHROUyhbW1dlYkNvcmVBdXRoZW50aWNhdGlvbkNs
aWVudEFzQ2hhbGxlbmdlU2VuZGVyIGFsbG9jXSBpbml0V2l0aEF1dGhlbnRpY2F0aW9uQ2xpZW50
OmF1dGhDbGllbnRdKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmPiBhdXRo
Q2hhbGxlbmdlID0gY29yZUNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKTsKLSAgICBp
ZiAoIWF1dGhDaGFsbGVuZ2UpCi0gICAgICAgIGF1dGhDaGFsbGVuZ2UgPSBhZG9wdENGKGNyZWF0
ZUNGKGNvcmVDaGFsbGVuZ2UpKTsKLSAgICBbY2hhbGxlbmdlU2VuZGVyLmdldCgpIHNldENGQ2hh
bGxlbmdlOmF1dGhDaGFsbGVuZ2UuZ2V0KCldOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICByZXR1
cm4gW1tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIF9jcmVhdGVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUZvckNGQXV0aENoYWxsZW5nZTphdXRoQ2hhbGxlbmdlLmdldCgpIHNlbmRlcjpjaGFs
bGVuZ2VTZW5kZXIuZ2V0KCldIGF1dG9yZWxlYXNlXTsKLSNlbHNlCi0gICAgcmV0dXJuIFtbTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBfYXV0aGVudGljYXRpb25DaGFsbGVuZ2VGb3JDRkF1
dGhDaGFsbGVuZ2U6YXV0aENoYWxsZW5nZS5nZXQoKSBzZW5kZXI6Y2hhbGxlbmdlU2VuZGVyLmdl
dCgpXSBhdXRvcmVsZWFzZV07Ci0jZW5kaWYKLX0KLQotI2Vsc2UKLQogQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYg
cHJvdGVjdGlvblNwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3JlZGVudGlhbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBwcmV2aW91
c0ZhaWx1cmVDb3VudCwKQEAgLTIwMyw2ICsxNjAsNCBAQCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSBjb3JlKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKm1hY0NoYWxsZW5nZSkKICAgICBy
ZXR1cm4gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UobWFjQ2hhbGxlbmdlKTsKIH0KIAotI2VuZGlm
IC8vIFVTRShDRk5FVFdPUkspCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQppbmRleCAx
NmQxMGUyMDcwMDQxYTg3ZTQ2M2NlZjI0NzRjM2M0ODlkZDNmYWVhLi44MmQ0ZjVmZTI1MmE4ZWNi
ZWU3NmIyN2E0MjJmNTE3Mzc0MjgwYWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCkBAIC0zMSw4ICszMSw2IEBACiAjaW1w
b3J0ICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UuaCIKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW1wb3J0ICJDb29raWUuaCIKICNp
bXBvcnQgIkNvb2tpZVN0b3JhZ2UuaCIKICNpbXBvcnQgIlVSTC5oIgpAQCAtMjAwLDEyICsxOTgs
NiBAQCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uKQogICAgIHdrRGVsZXRlQWxsSFRUUENvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9yYWdl
KCkuZ2V0KCkpOwogfQogCi19Ci0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCiBzdGF0aWMgTlNIVFRQQ29va2llU3RvcmFnZSAqY29va2llU3RvcmFn
ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pCiB7CiAgICAgYXV0byBjb29r
aWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1t
CmluZGV4IDllYmM4NTRkY2RiNDhkNTdlOGY4Mjg2OTQ0MjRlY2Q0OWI3MzM2ZWMuLmYwYTRmM2Fm
NzY0MTVjYjI2YzI5NGJkODEzOTEzZmUyMjMzYjM3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1t
CkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3JlZGVu
dGlhbFN0b3JhZ2UuaCIKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRpb25NYWMuaCIKICNpbmNsdWRlICJDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiUHJvdGVj
dGlvblNwYWNlLmgiCkBAIC01Miw1ICs1MCwzIEBAIHZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNh
dmVUb1BlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvCiAj
ZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdP
UkspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3Jt
RGF0YVN0cmVhbU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9y
bURhdGFTdHJlYW1NYWMuaAppbmRleCBkYjgxYzY2ODdjNDIyZTVlY2JjMzY5MGUyMzQ1YWY4MjI0
YWQwNmM2Li5lMmM4Yjg5NmE4YTI0ODk3YjEyZjAyZTQ3ZWIwNTUxMWQ5YmQ0MGMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1h
Yy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3Ry
ZWFtTWFjLmgKQEAgLTI5LDggKzI5LDYgQEAKICNpZm5kZWYgRm9ybURhdGFTdHJlYW1NYWNfaAog
I2RlZmluZSBGb3JtRGF0YVN0cmVhbU1hY19oCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9DRlVSTFJlcXVl
c3QqIENGVVJMUmVxdWVzdFJlZjsKQEAgLTQ5LDYgKzQ3LDUgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykK
IAogI2VuZGlmIC8vIEZvcm1EYXRhU3RyZWFtTWFjX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0KaW5kZXggYjU3
MzRmOThlZGZiZjExMzVlMTdkNGI3ZWJjMjljYzU1ZmUwNDM1MS4uN2I3ZDFkM2ExNWUzOTU3NDNj
OTQ0OTE4MzRjMzI5OGUyM2NmYTE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0KQEAgLTI5LDggKzI5LDYg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRm9ybURhdGFTdHJlYW1NYWMuaCIKIAot
I2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW1wb3J0ICJGb3JtRGF0YS5oIgogI2ltcG9ydCAiRm9y
bURhdGFTdHJlYW1DRk5ldC5oIgogI2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTUyLDUg
KzUwLDMgQEAgRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0cmVhbShOU0lucHV0U3RyZWFtICpzdHJl
YW0pCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRX
T1JLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VFcnJvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlRXJyb3JNYWMubW0KaW5kZXggNjQxODkzODAwMDYzMzMzYzcwMWRiNTNjYWMwMDFhYjU0
OTlmNzA3Ni4uMGMyYWRhZmM3YzNjOTNlOGY5NmJhNWQzY2E1Y2ViN2M0NWY0ZjQxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVy
cm9yTWFjLm1tCkBAIC0zMSwxMCArMzEsNiBAQAogI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ0ZF
cnJvci5oPgogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKLSNpZiBQTEFURk9S
TShJT1MpICYmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZTb2NrZXRTdHJl
YW1Qcml2Lmg+Ci0jZW5kaWYKLQogQGludGVyZmFjZSBOU0Vycm9yIChXZWJFeHRyYXMpCiAtIChO
U1N0cmluZyAqKV93ZWJfbG9jYWxpemVkRGVzY3JpcHRpb247CiBAZW5kCkBAIC05MSw4NSArODcs
NiBAQCAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAKIEBlbmQKIAot
Ci0jaWYgVVNFKENGTkVUV09SSykKLXN0YXRpYyBOU0Vycm9yICpOU0Vycm9yRnJvbUNGRXJyb3Io
Q0ZFcnJvclJlZiBjZkVycm9yLCBOU1VSTCAqdXJsKQotewotICAgIENGSW5kZXggZXJyQ29kZSA9
IENGRXJyb3JHZXRDb2RlKGNmRXJyb3IpOwotICAgIGlmIChDRkVxdWFsKENGRXJyb3JHZXREb21h
aW4oY2ZFcnJvciksIGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKSAmJiBlcnJDb2RlIDw9IGtDRlVS
TEVycm9yVW5rbm93biAmJiBlcnJDb2RlID4gLTQwMDApIHsKLSAgICAgICAgLy8gVGhpcyBpcyBh
biBVUkwgZXJyb3IgYW5kIG5lZWRzIHRvIGJlIHRyYW5zbGF0ZWQgdG8gdGhlIE5TVVJMRXJyb3JE
b21haW4KLSAgICAgICAgaWQga2V5c1sxMF0sIHZhbHVlc1sxMF07Ci0gICAgICAgIENGRGljdGlv
bmFyeVJlZiB1c2VySW5mbyA9IENGRXJyb3JDb3B5VXNlckluZm8oY2ZFcnJvcik7Ci0gICAgICAg
IE5TRXJyb3IgKnJlc3VsdDsKLSAgICAgICAgTlNJbnRlZ2VyIGNvdW50ID0gMDsKLQotICAgICAg
ICBpZiAodXJsKSB7Ci0gICAgICAgICAgICBrZXlzW2NvdW50XSA9IE5TVVJMRXJyb3JGYWlsaW5n
VVJMRXJyb3JLZXk7Ci0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gdXJsOwotICAgICAgICAg
ICAgY291bnQgKys7Ci0KLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxp
bmdVUkxTdHJpbmdFcnJvcktleTsKLSAgICAgICAgICAgIHZhbHVlc1tjb3VudF0gPSBbdXJsIGFi
c29sdXRlU3RyaW5nXTsKLSAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NG
RXJyb3JMb2NhbGl6ZWREZXNjcmlwdGlvbktleSk7Ci0gICAgICAgIGlmICh2YWx1ZXNbY291bnRd
KSB7Ci0gICAgICAgICAgICBrZXlzW2NvdW50XSA9IE5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXk7
Ci0gICAgICAgICAgICBjb3VudCArKzsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlc1tjb3Vu
dF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRkVycm9yTG9jYWxpemVk
RmFpbHVyZVJlYXNvbktleSk7Ci0gICAgICAgIGlmICh2YWx1ZXNbY291bnRdKSB7Ci0gICAgICAg
ICAgICBrZXlzW2NvdW50XSA9IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OwotICAg
ICAgICAgICAgY291bnQgKys7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZXNbY291bnRdID0g
KGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZFcnJvckxvY2FsaXplZFJlY292
ZXJ5U3VnZ2VzdGlvbktleSk7Ci0gICAgICAgIGlmICh2YWx1ZXNbY291bnRdKSB7Ci0gICAgICAg
ICAgICBrZXlzW2NvdW50XSA9IE5TTG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uRXJyb3JLZXk7
Ci0gICAgICAgICAgICBjb3VudCArKzsKLSAgICAgICAgfQotCi0jcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRl
ZC1kZWNsYXJhdGlvbnMiCi0gICAgICAgIGlmICh1c2VySW5mbyAmJiAodmFsdWVzW2NvdW50XSA9
IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGU3RyZWFtUHJvcGVydHlTU0xQ
ZWVyQ2VydGlmaWNhdGVzKSkgIT0gbmlsKSB7Ci0gICAgICAgICAgICAvLyBOZWVkIHRvIHRyYW5z
bGF0ZSB0aGUgY2VydAotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBAIk5TRXJyb3JQZWVyQ2Vy
dGlmaWNhdGVDaGFpbktleSI7Ci0gICAgICAgICAgICBjb3VudCArKzsKLQotICAgICAgICAgICAg
dmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywgX2tDRlN0
cmVhbVByb3BlcnR5U1NMQ2xpZW50Q2VydGlmaWNhdGVzKTsKLSAgICAgICAgICAgIGlmICh2YWx1
ZXNbY291bnRdKSB7Ci0gICAgICAgICAgICAgICAga2V5c1tjb3VudF0gPSBAIk5TRXJyb3JDbGll
bnRDZXJ0aWZpY2F0ZUNoYWluS2V5IjsKLSAgICAgICAgICAgICAgICBjb3VudCArKzsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlH
ZXRWYWx1ZSh1c2VySW5mbywgX2tDRlN0cmVhbVByb3BlcnR5U1NMQ2xpZW50Q2VydGlmaWNhdGVT
dGF0ZSk7Ci0gICAgICAgICAgICBpZiAodmFsdWVzW2NvdW50XSkgewotICAgICAgICAgICAgICAg
IGtleXNbY291bnRdID0gQCJOU0Vycm9yQ2xpZW50Q2VydGlmaWNhdGVTdGF0ZUtleSI7Ci0gICAg
ICAgICAgICAgICAgY291bnQgKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwb3AKLQotICAgICAgICBpZiAodXNlckluZm8gJiYgKHZhbHVlc1tj
b3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRlN0cmVhbVByb3Bl
cnR5U1NMUGVlclRydXN0KSkgIT0gbmlsKSB7Ci0gICAgICAgICAgICBrZXlzW2NvdW50XSA9IE5T
VVJMRXJyb3JGYWlsaW5nVVJMUGVlclRydXN0RXJyb3JLZXk7Ci0gICAgICAgICAgICBjb3VudCsr
OwotICAgICAgICB9Ci0KLSAgICAgICAga2V5c1tjb3VudF0gPSBOU1VuZGVybHlpbmdFcnJvcktl
eTsKLSAgICAgICAgdmFsdWVzW2NvdW50XSA9IChpZCljZkVycm9yOwotICAgICAgICBjb3VudCAr
KzsKLQotICAgICAgICByZXN1bHQgPSBbV2ViQ3VzdG9tTlNVUkxFcnJvciBlcnJvcldpdGhEb21h
aW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOihlcnJDb2RlID09IGtDRlVSTEVycm9yVW5rbm93biA/
IChDRkluZGV4KU5TVVJMRXJyb3JVbmtub3duIDogZXJyQ29kZSkgdXNlckluZm86W05TRGljdGlv
bmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHM6dmFsdWVzIGZvcktleXM6a2V5cyBjb3VudDpjb3Vu
dF1dOwotICAgICAgICBpZiAodXNlckluZm8pCi0gICAgICAgICAgICBDRlJlbGVhc2UodXNlcklu
Zm8pOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICByZXR1cm4gKE5TRXJyb3Ig
KiljZkVycm9yOwotfQotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KICNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5MCw1MyArMTA3LDYgQEAgc3Rh
dGljIFJldGFpblB0cjxOU0Vycm9yPiBjcmVhdGVOU0Vycm9yRnJvbVJlc291cmNlRXJyb3JCYXNl
KGNvbnN0IFJlc291cmNlRXJyb3IKICAgICByZXR1cm4gYWRvcHROUyhbW05TRXJyb3IgYWxsb2Nd
IGluaXRXaXRoRG9tYWluOnJlc291cmNlRXJyb3IuZG9tYWluKCkgY29kZTpyZXNvdXJjZUVycm9y
LmVycm9yQ29kZSgpIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXSk7CiB9CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotCi1SZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKE5TRXJyb3IgKmVycm9yKQot
ICAgIDogbV9kYXRhSXNVcFRvRGF0ZShmYWxzZSkKLSAgICAsIG1fcGxhdGZvcm1FcnJvcihyZWlu
dGVycHJldF9jYXN0PENGRXJyb3JSZWY+KGVycm9yKSkKLXsKLSAgICBtX2lzTnVsbCA9ICFlcnJv
cjsKLSAgICBpZiAoIW1faXNOdWxsKQotICAgICAgICBtX2lzVGltZW91dCA9IFtlcnJvciBjb2Rl
XSA9PSBOU1VSTEVycm9yVGltZWRPdXQ7Ci19Ci0KLU5TRXJyb3IgKlJlc291cmNlRXJyb3I6Om5z
RXJyb3IoKSBjb25zdAotewotICAgIGlmIChtX2lzTnVsbCkgewotICAgICAgICBBU1NFUlQoIW1f
cGxhdGZvcm1FcnJvcik7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgaWYgKG1f
cGxhdGZvcm1OU0Vycm9yKQotICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCk7
Ci0KLSAgICBpZiAobV9wbGF0Zm9ybUVycm9yKSB7Ci0gICAgICAgIENGRXJyb3JSZWYgZXJyb3Ig
PSBtX3BsYXRmb3JtRXJyb3IuZ2V0KCk7Ci0gICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlS
ZWY+IHVzZXJJbmZvID0gYWRvcHRDRihDRkVycm9yQ29weVVzZXJJbmZvKGVycm9yKSk7Ci0jaWYg
UExBVEZPUk0oSU9TKQotICAgICAgICBtX3BsYXRmb3JtTlNFcnJvciA9IE5TRXJyb3JGcm9tQ0ZF
cnJvcihlcnJvciwgKE5TVVJMICopWyhOU0RpY3Rpb25hcnkgKil1c2VySW5mby5nZXQoKSBvYmpl
Y3RGb3JLZXk6KGlkKSBrQ0ZVUkxFcnJvckZhaWxpbmdVUkxFcnJvcktleV0pOwotICAgICAgICAv
LyBJZiBOU0Vycm9yRnJvbUNGRXJyb3IgY3JlYXRlZCBhIG5ldyBOU0Vycm9yIGZvciB1cywgcmV0
dXJuIHRoYXQuCi0gICAgICAgIGlmIChtX3BsYXRmb3JtTlNFcnJvci5nZXQoKSAhPSAoTlNFcnJv
ciAqKWVycm9yKQotICAgICAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOwot
Ci0gICAgICAgIC8vIE90aGVyd2lzZSBmYWxsIHRocm91Z2ggdG8gY3JlYXRlIGEgbmV3IE5TRXJy
b3IgZnJvbSB0aGUgQ0ZFcnJvci4KLSNlbmRpZgotICAgICAgICBtX3BsYXRmb3JtTlNFcnJvciA9
IGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjooTlNTdHJpbmcgKilDRkVy
cm9yR2V0RG9tYWluKGVycm9yKSBjb2RlOkNGRXJyb3JHZXRDb2RlKGVycm9yKSB1c2VySW5mbzoo
TlNEaWN0aW9uYXJ5ICopdXNlckluZm8uZ2V0KCldKTsKLSAgICAgICAgcmV0dXJuIG1fcGxhdGZv
cm1OU0Vycm9yLmdldCgpOwotICAgIH0KLQotICAgIG1fcGxhdGZvcm1OU0Vycm9yID0gY3JlYXRl
TlNFcnJvckZyb21SZXNvdXJjZUVycm9yQmFzZSgqdGhpcyk7Ci0gICAgcmV0dXJuIG1fcGxhdGZv
cm1OU0Vycm9yLmdldCgpOwotfQotCi1SZXNvdXJjZUVycm9yOjpvcGVyYXRvciBOU0Vycm9yICoo
KSBjb25zdAotewotICAgIHJldHVybiBuc0Vycm9yKCk7Ci19Ci0KLSNlbHNlCi0KIFJlc291cmNl
RXJyb3I6OlJlc291cmNlRXJyb3IoTlNFcnJvciAqbnNFcnJvcikKICAgICA6IG1fZGF0YUlzVXBU
b0RhdGUoZmFsc2UpCiAgICAgLCBtX3BsYXRmb3JtRXJyb3IobnNFcnJvcikKQEAgLTMwOSw2ICsx
NzksNCBAQCBSZXNvdXJjZUVycm9yOjpvcGVyYXRvciBDRkVycm9yUmVmKCkgY29uc3QKICAgICBy
ZXR1cm4gY2ZFcnJvcigpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQppbmRleCA3Yzk3YjJhYWUwZmQyODgxZWNm
OGJjNWEzZTc5OWQ0ZDVhMDliZTFlLi4zNzM3MjVjNjJlNzZjODkwNmMxNzQ4ZjAzNzBhOWZiODcy
ZjY3MzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9S
ZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtNTcsMTYgKzU3LDYgQEAKICNpbXBvcnQgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCi0jaWYgVVNF
KENGTkVUV09SSykKLSNpZiBfX2hhc19pbmNsdWRlKDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9u
UHJpdi5oPikKLSNpbXBvcnQgPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb25Qcml2Lmg+Ci0jZW5k
aWYKLXR5cGVkZWYgc3RydWN0IF9DRlVSTENvbm5lY3Rpb24qIENGVVJMQ29ubmVjdGlvblJlZjsK
LWV4dGVybiAiQyIgewotQ0ZEaWN0aW9uYXJ5UmVmIF9DRlVSTENvbm5lY3Rpb25Db3B5VGltaW5n
RGF0YShDRlVSTENvbm5lY3Rpb25SZWYpOwotfQotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0K
ICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJDRk5ldHdvcmtTUEkuaCIKICNpbXBvcnQgIlJ1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0lPUy5oIgpAQCAtODgsOSArNzgsNyBAQCAtKGlkKV9pbml0
V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgZGVsZWdhdGU6KGlkKWRlbGVnYXRl
IHVzZXNDYWNoZTooQgogQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi0jaWYgIVVT
RShDRk5FVFdPUkspCi0gICAgCisKIHN0YXRpYyB2b2lkIGFwcGx5QmFzaWNBdXRob3JpemF0aW9u
SGVhZGVyKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVu
dGlhbCkKIHsKICAgICBTdHJpbmcgYXV0aGVudGljYXRpb25IZWFkZXIgPSAiQmFzaWMgIiArIGJh
c2U2NEVuY29kZShTdHJpbmcoY3JlZGVudGlhbC51c2VyKCkgKyAiOiIgKyBjcmVkZW50aWFsLnBh
c3N3b3JkKCkpLnV0ZjgoKSk7CkBAIC0yNjksMTIgKzI1Nyw2IEBAIGJvb2wgUmVzb3VyY2VIYW5k
bGU6OnN0YXJ0KCkKICAgICAgICAgW2Nvbm5lY3Rpb24oKSBzZXREZWxlZ2F0ZVF1ZXVlOm9wZXJh
dGlvblF1ZXVlRm9yQXN5bmNDbGllbnRzKCldOwogICAgICAgICBzY2hlZHVsZWQgPSB0cnVlOwog
ICAgIH0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgZWxzZSB7Ci0gICAgICAgIFtjb25uZWN0aW9u
KCkgc2NoZWR1bGVJblJ1bkxvb3A6V2ViVGhyZWFkTlNSdW5Mb29wKCkgZm9yTW9kZTpOU0RlZmF1
bHRSdW5Mb29wTW9kZV07Ci0gICAgICAgIHNjaGVkdWxlZCA9IHRydWU7Ci0gICAgfQotI2VuZGlm
CiAKICAgICAvLyBTdGFydCB0aGUgY29ubmVjdGlvbiBpZiB3ZSBkaWQgc2NoZWR1bGUgd2l0aCBh
dCBsZWFzdCBvbmUgcnVubG9vcC4KICAgICAvLyBXZSBjYW4ndCBzdGFydCB0aGUgY29ubmVjdGlv
biB1bnRpbCB3ZSBoYXZlIG9uZSBydW5sb29wIHNjaGVkdWxlZC4KQEAgLTMxNCw4ICsyOTYsNiBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZl
cnMpCiAgICAgICAgIFtkLT5tX2Nvbm5lY3Rpb24gc2V0RGVmZXJzQ2FsbGJhY2tzOmRlZmVyc107
CiB9CiAKLSNpZiBQTEFURk9STShNQUMpCi0KIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxl
KFNjaGVkdWxlUGFpciYgcGFpcikKIHsKICAgICBOU1J1bkxvb3AgKnJ1bkxvb3AgPSBwYWlyLm5z
UnVuTG9vcCgpOwpAQCAtMzM0LDggKzMxNCw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnVuc2No
ZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQogICAgICAgICBbZC0+bV9jb25uZWN0aW9uLmdldCgp
IHVuc2NoZWR1bGVGcm9tUnVuTG9vcDpydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopcGFpci5t
b2RlKCldOwogfQogCi0jZW5kaWYKLQogaWQgUmVzb3VyY2VIYW5kbGU6Om1ha2VEZWxlZ2F0ZShi
b29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKQogewogICAgIEFTU0VSVCghZC0+bV9kZWxl
Z2F0ZSk7CkBAIC03MjQsMjcgKzcwMiwxNCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51
ZVdpbGxDYWNoZVJlc3BvbnNlKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKnJlc3BvbnNlKQogCiAgICAg
WyhpZClkZWxlZ2F0ZSgpIGNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2U6cmVzcG9uc2VdOwogfQot
ICAgIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotICAgIAorCiAjaWYgRU5BQkxFKFdFQl9U
SU1JTkcpCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6
Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm5lY3Rpb24sIFJl
c291cmNlTG9hZFRpbWluZyYgdGltaW5nKQotewotICAgIGNvcHlUaW1pbmdEYXRhKChfX2JyaWRn
ZSBOU0RpY3Rpb25hcnkqKWFkb3B0Q0YoX0NGVVJMQ29ubmVjdGlvbkNvcHlUaW1pbmdEYXRhKGNv
bm5lY3Rpb24pKS5nZXQoKSwgdGltaW5nKTsKLX0KLSAgICAKLSNlbHNlCi0gICAgCiB2b2lkIFJl
c291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShOU1VSTENvbm5lY3Rpb24gKmNv
bm5lY3Rpb24sIFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nKQogewogICAgIGNvcHlUaW1pbmdE
YXRhKFtjb25uZWN0aW9uIF90aW1pbmdEYXRhXSwgdGltaW5nKTsKIH0KLSAgICAKLSNlbmRpZgot
ICAgIAorCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9USU1JTkcpCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlUmVxdWVzdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlUmVxdWVzdE1hYy5tbQppbmRleCA2OTRlNTNjNGE1NzMyMjIwZDQ0NjFkYzEwZjYw
ZGQ5ODRhYTg3OTZkLi5lNzcwMjQ1ZGZkNTAxYjE0YjBlNjFjMTA3N2M3MWIzMDg0MTJmMWVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJl
cXVlc3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VSZXF1ZXN0TWFjLm1tCkBAIC0zNywyOSArMzcsNiBAQCBAZW5kCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLVJlc291cmNlUmVxdWVzdDo6UmVzb3Vy
Y2VSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0KQotICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZSgpCi0gICAgLCBtX2NmUmVxdWVzdChbbnNSZXF1ZXN0IF9DRlVSTFJlcXVlc3RdKQotICAg
ICwgbV9uc1JlcXVlc3QobnNSZXF1ZXN0KQotewotfQotCi12b2lkIFJlc291cmNlUmVxdWVzdDo6
dXBkYXRlTlNVUkxSZXF1ZXN0KCkKLXsKLSAgICBpZiAobV9jZlJlcXVlc3QpCi0gICAgICAgIG1f
bnNSZXF1ZXN0ID0gYWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gX2luaXRXaXRoQ0ZVUkxS
ZXF1ZXN0Om1fY2ZSZXF1ZXN0LmdldCgpXSk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojph
cHBseVdlYkFyY2hpdmVIYWNrRm9yTWFpbCgpCi17Ci0gICAgLy8gSGFjayBiZWNhdXNlIE1haWwg
Y2hlY2tzIGZvciB0aGlzIHByb3BlcnR5IHRvIGRldGVjdCBkYXRhIC8gYXJjaGl2ZSBsb2Fkcwot
ICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmVVJMUmVxdWVzdChEb05vdFVw
ZGF0ZUhUVFBCb2R5KSwgQ0ZTVFIoIldlYkRhdGFSZXF1ZXN0IiksIENGU1RSKCIiKSk7Ci19Ci0K
LSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvU3luY2hyb25vdXNMb2FkZXJDbGll
bnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xv
YWRlckNsaWVudC5tbQppbmRleCAwMTQ0YmQ5M2E3MGE0NDk4OGUwNTZjOGViODk4OTc0OWYxNWMy
YjU4Li42NWY3NmRmMTNiOWM4Zjk2Njc4ZmY4OGVkZjdjMzYzNzFlOTMwZTIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJv
bm91c0xvYWRlckNsaWVudC5tbQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgiCiAKLSNpZiAhVVNFKENGTkVU
V09SSykKLQogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTM4LDE0ICszNiwxMCBAQCB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xp
ZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqLAog
ICAgIFtjaGFsbGVuZ2Uuc2VuZGVyKCkgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KCldOwogfQogCi0jaWYgIVVTRShDRk5FVFdPUkspCiBSZXNvdXJjZUVycm9yIFN5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50OjpwbGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IoKQogewogICAgIFJldGFpblB0
cjxOU0Vycm9yPiBlcnJvciA9IGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFp
bjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvckJhZFNlcnZlclJlc3BvbnNlIHVzZXJJ
bmZvOm5pbF0pOwogICAgIHJldHVybiBlcnJvci5nZXQoKTsKIH0KLSNlbmRpZgogCiB9Ci0KLSNl
bmRpZiAvLyAhVVNFKENGTkVUV09SSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVs
ZWdhdGUuaAppbmRleCA0ZjQxNTVlYWZkOTQ1YjFiODYyZDI5Y2U4OTZkY2FkY2RhMWM0MjY2Li4y
ZjExNmFkNmEzMTAyNTBhNjc3Y2NlYTE0Zjc3ZDI4MTBlNmE4ZTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0Rl
bGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oCkBAIC0yNiwxOCArMjYsMTggQEAKICNpZm5kZWYg
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCiAjZGVmaW5lIFdlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzRGVsZWdhdGVfaAogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwogfQogCi1AaW50ZXJmYWNlIFdlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25uZWN0aW9uRGVsZWdh
dGU+IHsKK0Bwcm90b2NvbCBXZWJDb3JlUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZQorLSAodm9pZClk
ZXRhY2hIYW5kbGU7CitAZW5kCisKK0BpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNE
ZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZSwgV2ViQ29yZVJlc291
cmNlTG9hZGVyRGVsZWdhdGU+IHsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSogbV9oYW5k
bGU7CiB9CiAtIChpZClpbml0V2l0aEhhbmRsZTooV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKWhh
bmRsZTsKLS0gKHZvaWQpZGV0YWNoSGFuZGxlOwogQGVuZAogCi0jZW5kaWYgLy8gIVVTRShDRk5F
VFdPUkspCiAjZW5kaWYgLy8gV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc0RlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQppbmRleCBlMTdjYjlkMjBlZDdk
YmQ1MTc5M2MzNjRlYjMyYzE1ODk1ZWJhNTNhLi41MjRhZmUzZmE5NzYxZmFlNzBjZGQ5ZTZjNGVm
MDFlYWRjYzk0YmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUu
bW0KQEAgLTI2LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNp
bXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlv
bk1hYy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtNTQsNyArNTIsNyBAQCAtIChpZClpbml0
V2l0aEhhbmRsZTooUmVzb3VyY2VIYW5kbGUqKWhhbmRsZQogCiAtICh2b2lkKWRldGFjaEhhbmRs
ZQogewotICAgIG1faGFuZGxlID0gMDsKKyAgICBtX2hhbmRsZSA9IG51bGxwdHI7CiB9CiAKIC0g
KE5TVVJMUmVxdWVzdCAqKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24g
d2lsbFNlbmRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKiluZXdSZXF1ZXN0IHJlZGlyZWN0UmVzcG9u
c2U6KE5TVVJMUmVzcG9uc2UgKilyZWRpcmVjdFJlc3BvbnNlCkBAIC0yODgsNiArMjg2LDMgQEAg
LSAoTlNDYWNoZWRVUkxSZXNwb25zZSAqKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNv
bm5lY3Rpb24gd2lsbENhY2hlUmVzcG8KIH0KIAogQGVuZAotCi0jZW5kaWYgLy8gIVVTRShDRk5F
VFdPUkspCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLmgKaW5kZXggZTc0MGFhNTliZWQ2M2JhYjkwNzZmMDc5M2FiM2Qw
M2RlMDAyYjA1MS4uYzU3YWNhZTE0MThjMTE2ZmNmNzc3MGY1OGFkNGM5MWM4MWU0OGNjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlLmgKQEAgLTI2LDggKzI2LDcgQEAKICNpZm5kZWYgV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlX2gKICNkZWZpbmUgV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlX2gKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCisj
aW5jbHVkZSAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPGRp
c3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC0zNSw3
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwogfQog
Ci1AaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZT4geworQGludGVyZmFjZSBXZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgOiBOU09iamVjdCA8TlNV
UkxDb25uZWN0aW9uRGVsZWdhdGUsIFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRlPiB7CiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqIG1faGFuZGxlOwogCiAgICAgLy8gU3luY2hyb25v
dXMgZGVsZWdhdGVzIG9uIG9wZXJhdGlvbiBxdWV1ZSB3YWl0IHVudGlsIG1haW4gdGhyZWFkIHNl
bmRzIGFuIGFzeW5jaHJvbm91cyByZXNwb25zZS4KQEAgLTQ2LDcgKzQ1LDYgQEAgY2xhc3MgUmVz
b3VyY2VIYW5kbGU7CiB9CiAKIC0gKGlkKWluaXRXaXRoSGFuZGxlOihXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZSopaGFuZGxlOwotLSAodm9pZClkZXRhY2hIYW5kbGU7CiAtICh2b2lkKWNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKiluZXdSZXF1ZXN0OwogLSAodm9pZCljb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NB
TExCQUNLKQpAQCAtNTksNSArNTcsNCBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIAogQGVuZAog
Ci0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCiAjZW5kaWYgLy8gV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQppbmRleCA5MzM3ZDEz
NDkwYWI4MDljNzgzZTE1NThjZmI3NjEwYmI4MWMxNTliLi5jMWQ2MzBiNmIzYzYxNGRmM2Q0Mjlj
OTdlMDUyOGIwNzgzOTBlOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCkBAIC0yNiw4ICsyNiw2IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbk1hYy5oIgog
I2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtMzQ1LDYgKzM0MywzIEBAIC0gKEJPT0wpY29ubmVjdGlv
blNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9u
CiB9CiAKIEBlbmQKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2Uu
bW0KaW5kZXggNWUzZGI3MDMyZGM3OWVkYjUxZDk2ZWJhYzM0NThkMjJhNjAzZjMzMi4uNjIxNWNi
Y2JjNDJhZTQ5NjNjY2MyODlmN2U1NmM5NTZkZjUwNDZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQpA
QCAtMzI0LDcgKzMyNCw2IEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJl
c3BvbnNlUmVmIGNmUmVzcG9uc2UpCiB9CiAjZW5kaWYKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQog
TlNVUkxSZXNwb25zZSAqc3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeShOU1VS
TENvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIE5TVVJMUmVxdWVzdCAqbmV3UmVxdWVzdCwgTlNVUkxS
ZXNwb25zZSAqcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBpZiAocmVkaXJlY3RSZXNwb25zZSkK
QEAgLTMzOCw2ICszMzcsNSBAQCBOU1VSTFJlc3BvbnNlICpzeW50aGVzaXplUmVkaXJlY3RSZXNw
b25zZUlmTmVjZXNzYXJ5KE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbgogICAgIE5TRGljdGlv
bmFyeSAqc3ludGhlc2l6ZWRSZXNwb25zZUhlYWRlckZpZWxkcyA9IEB7IEAiTG9jYXRpb24iOiBb
W25ld1JlcXVlc3QgVVJMXSBhYnNvbHV0ZVN0cmluZ10sIEAiQ2FjaGUtQ29udHJvbCI6IEAibm8t
c3RvcmUiIH07CiAgICAgcmV0dXJuIFtbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0
aFVSTDpbW2Nvbm5lY3Rpb24gY3VycmVudFJlcXVlc3RdIFVSTF0gc3RhdHVzQ29kZTozMDIgSFRU
UFZlcnNpb246KE5TU3RyaW5nICopa0NGSFRUUFZlcnNpb24xXzEgaGVhZGVyRmllbGRzOnN5bnRo
ZXNpemVkUmVzcG9uc2VIZWFkZXJGaWVsZHNdIGF1dG9yZWxlYXNlXTsKIH0KLSNlbmRpZgogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvTlNVUkxEb3du
bG9hZFNQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL05TVVJMRG93bmxv
YWRTUEkuaAppbmRleCAzZjNhM2JjYjhlYzY0OGQ0YWU1YTcwMTc1YTc1NjUxN2Y4NWRkMGQ1Li4z
MGMyOGU3MzI5OGIyNzNiODQxZWE4MTQ5YWQyMmMxNjMzYTdhYzU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvTlNVUkxEb3dubG9hZFNQSS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9OU1VSTERvd25sb2FkU1BJLmgKQEAgLTI5
LDYgKzI5LDE0IEBACiAKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxEb3dubG9hZC5oPgogCisj
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxEb3du
bG9hZFByaXZhdGUuaD4KKyNlbHNlCitAaW50ZXJmYWNlIE5TVVJMRG93bmxvYWQgKCkKKysoaWQp
X2Rvd25sb2FkV2l0aExvYWRpbmdDb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0
aW9uIHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVzcG9uc2U6KE5TVVJMUmVzcG9u
c2UgKilyZXNwb25zZSBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUgcHJveHk6KGlkKXByb3h5OworQGVu
ZAorI2VuZGlmCisKICNlbHNlCiAKIEBjbGFzcyBOU1N0cmluZzsKQEAgLTU2LDggKzY0LDIyIEBA
CiAtICh2b2lkKWRvd25sb2FkOihOU1VSTERvd25sb2FkICopZG93bmxvYWQgZGlkRmFpbFdpdGhF
cnJvcjooTlNFcnJvciAqKWVycm9yOwogQGVuZAogCisjaWZuZGVmIFdlYkRvd25sb2FkX2gKKy8q
IEFsc28gZGVmaW5lZCBpbiA8V2ViS2l0L1dlYkRvd25sb2FkLmg+LiAqLworQGludGVyZmFjZSBO
U1VSTERvd25sb2FkIDogTlNPYmplY3QKK0BlbmQKKyNlbmRpZgorCiBAaW50ZXJmYWNlIE5TVVJM
RG93bmxvYWQgKCkKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3QgZGVsZWdhdGU6KGlkIDxOU1VSTERvd25sb2FkRGVsZWdhdGU+KWRlbGVnYXRl
OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVzdW1lRGF0YTooTlNEYXRhICopcmVzdW1lRGF0
YSBkZWxlZ2F0ZTooaWQgPE5TVVJMRG93bmxvYWREZWxlZ2F0ZT4pZGVsZWdhdGUgcGF0aDooTlNT
dHJpbmcgKilwYXRoOworLSAodm9pZCljYW5jZWw7CistICh2b2lkKXNldERlc3RpbmF0aW9uOihO
U1N0cmluZyAqKXBhdGggYWxsb3dPdmVyd3JpdGU6KEJPT0wpYWxsb3dPdmVyd3JpdGU7CitAcHJv
cGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1VSTFJlcXVlc3QgKnJlcXVlc3Q7CitAcHJvcGVydHkg
KHJlYWRvbmx5LCBjb3B5KSBOU0RhdGEgKnJlc3VtZURhdGE7CitAcHJvcGVydHkgQk9PTCBkZWxl
dGVzRmlsZVVwb25GYWlsdXJlOworCisrKGlkKV9kb3dubG9hZFdpdGhMb2FkaW5nQ29ubmVjdGlv
bjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiByZXF1ZXN0OihOU1VSTFJlcXVlc3QgKily
ZXF1ZXN0IHJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UgZGVsZWdhdGU6KGlkKWRl
bGVnYXRlIHByb3h5OihpZClwcm94eTsKIEBlbmQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNj
L1dlYkRvd25sb2FkLmgKaW5kZXggZTI0MmU2ZGI5Yzk3Zjg4ZGJhOGIxZTBhZmVhYTg3NGFjNTFm
YjU0OS4uY2FhNTU3MGE1NjBlMzNmMWZiOWY4OWFiYjg4NWMyZDEzNTM4Mjg0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL01pc2MvV2ViRG93bmxvYWQuaApAQCAtMjYsNiArMjYsOSBAQAogICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCisjaWZuZGVmIFdlYkRvd25sb2FkX2gKKyNkZWZpbmUgV2ViRG93bmxvYWRfaAorCiAj
aWYgIVRBUkdFVF9PU19JUEhPTkUgfHwgKGRlZmluZWQgVVNFX0FQUExFX0lOVEVSTkFMX1NESyAm
JiBVU0VfQVBQTEVfSU5URVJOQUxfU0RLKQogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTERvd25s
b2FkLmg+CiAjZWxzZQpAQCAtNzgsMyArODEsNSBAQAogLSAoTlNXaW5kb3cgKilkb3dubG9hZFdp
bmRvd0ZvckF1dGhlbnRpY2F0aW9uU2hlZXQ6KFdlYkRvd25sb2FkICopZG93bmxvYWQ7CiAKIEBl
bmQKKworI2VuZGlmIC8qIFdlYkRvd25sb2FkX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRv
d25sb2FkLm1tCmluZGV4IDY4MGY2OWVjZTUwNmY2NmEzODk4MWFlYjgyYjYwNTBiZGYzZWQ3Zjgu
LjY4Y2Y2NWEzMmFhNTNjYTY4ZjJlMzM5ZGI4YTYzNjg0NjMyZjNjNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJEb3dubG9hZC5tbQpAQCAtNDAsMTEgKzQwLDYgQEAKIAogI2ltcG9ydCAiV2Vi
VHlwZXNJbnRlcm5hbC5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQgPENGTmV0d29y
ay9DRk5ldHdvcmsuaD4KLSNpbXBvcnQgPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb24uaD4KLSNl
bmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGNsYXNzIE5TVVJMQ29ubmVjdGlv
bkRlbGVnYXRlUHJveHk7CkBAIC02MCwxNSArNTUsNiBAQCAtIChpZClfaW5pdFdpdGhMb2FkaW5n
Q29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgogLSAoaWQpX2luaXRXaXRo
UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogICAgICAgICAgICAgICBkZWxlZ2F0ZToo
aWQpZGVsZWdhdGUKICAgICAgICAgICAgICBkaXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5
OwotCi0jaWYgVVNFKENGTkVUV09SSykKLS0gKGlkKV9pbml0V2l0aExvYWRpbmdDRlVSTENvbm5l
Y3Rpb246KENGVVJMQ29ubmVjdGlvblJlZiljb25uZWN0aW9uCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNwb25zZQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6KE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJv
eHkgKilwcm94eTsKLSNlbmRpZgotCiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViRG93bmxvYWRJbnRl
cm5hbCA6IE5TT2JqZWN0IDxOU1VSTERvd25sb2FkRGVsZWdhdGU+CkBAIC0yNDIsMTggKzIyOCw2
IEBAIC0gKGlkKV9pbml0V2l0aExvYWRpbmdDb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKilj
b25uZWN0aW9uCiAgICAgcmV0dXJuIFtzdXBlciBfaW5pdFdpdGhMb2FkaW5nQ29ubmVjdGlvbjpj
b25uZWN0aW9uIHJlcXVlc3Q6cmVxdWVzdCByZXNwb25zZTpyZXNwb25zZSBkZWxlZ2F0ZTpfd2Vi
SW50ZXJuYWwgcHJveHk6cHJveHldOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLS0gKGlkKV9p
bml0V2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246KENGVVJMQ29ubmVjdGlvblJlZiljb25uZWN0
aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OihDRlVSTFJlcXVlc3RS
ZWYpcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTooQ0ZVUkxS
ZXNwb25zZVJlZilyZXNwb25zZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0
ZTooaWQpZGVsZWdhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6KE5T
VVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHkgKilwcm94eQotewotICAgIFtzZWxmIF9zZXRSZWFs
RGVsZWdhdGU6ZGVsZWdhdGVdOwotICAgIHJldHVybiBbc3VwZXIgX2luaXRXaXRoTG9hZGluZ0NG
VVJMQ29ubmVjdGlvbjpjb25uZWN0aW9uIHJlcXVlc3Q6cmVxdWVzdCByZXNwb25zZTpyZXNwb25z
ZSBkZWxlZ2F0ZTpfd2ViSW50ZXJuYWwgcHJveHk6cHJveHldOwotfQotI2VuZGlmCi0KIC0gKGlk
KV9pbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKICAgICAgICAgICAgICAg
ZGVsZWdhdGU6KGlkKWRlbGVnYXRlCiAgICAgICAgICAgICAgZGlyZWN0b3J5OihOU1N0cmluZyAq
KWRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9h
ZEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwu
aAppbmRleCA5YjJmMzk1ODVkOTRhOGY1YjA1ZDMzMzBhY2I4MTIzN2JkMGRiOTY5Li5jMWQyMTky
NjE5NTJhNDY3Y2IzYTY5YWI2MWE1ODk0YjhhMDNhZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9NaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9NaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaApAQCAtMjgsMTAgKzI4LDYgQEAKICAKICNpbXBv
cnQgPFdlYktpdExlZ2FjeS9XZWJEb3dubG9hZC5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNp
bXBvcnQgPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb24uaD4KLSNlbmRpZgotIAogQGludGVyZmFj
ZSBXZWJEb3dubG9hZCAoV2ViRG93bmxvYWRDcmVhdGlvbikKICsoaWQpX2Rvd25sb2FkV2l0aExv
YWRpbmdDb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdApAQCAtNDIs
MTMgKzM4LDQgQEAKICsoaWQpX2Rvd25sb2FkV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
cXVlc3QKICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCiAgICAgICAgICAg
ICAgICAgZGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeTsKLQotI2lmIFVTRShDRk5FVFdP
UkspCi0rIChpZClfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjooQ0ZVUkxDb25u
ZWN0aW9uUmVmKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzcG9uc2U6KENGVVJMUmVzcG9uc2VSZWYpcmVzcG9uc2UKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6KGlkKXByb3h5OwotI2VuZGlmCi0KIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0VmVyc2lvbkNoZWNrcy5o
IGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgKaW5kZXggYzgx
MTIwMTI1ZDRkZmI2OTMxYWZlZDQxZWQxMDAxOWJmMDdiZmRmNC4uYjUzMzM1NGMzNzEyYmYwNjc5
ZjM5ODYzYmFlYjVlMTJlM2RiMzc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlz
Yy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJL
aXRWZXJzaW9uQ2hlY2tzLmgKQEAgLTcyLDYgKzcyLDcgQEAKICNkZWZpbmUgV0VCS0lUX0ZJUlNU
X1ZFUlNJT05fV0lUSF9DU1NfQVRUUklCVVRFX1NFVFRFUlNfSUdOT1JJTkdfUFJJT1JJVFkgMjIz
OSAvLyBpT1MgNi4wCiAjZGVmaW5lIFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfWU9VVFVCRV9F
TUJFRF9JRlJBTUVfVFJBTlNGT1JNIDIyMzkgLy8gaU9TIDYuMAogI2RlZmluZSBXRUJLSVRfRklS
U1RfVkVSU0lPTl9XSVRIT1VUX0xFR0FDWV9CQUNLR1JPVU5EU0laRV9TSE9SVEhBTkRfQkVIQVZJ
T1IgMjY2NSAvLyBpT1MgNy4wCisjZGVmaW5lIFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfTE9B
RElOR19EVVJJTkdfQ09NTU9OX1JVTkxPT1BfTU9ERVMgMjY2NSAvLyBpT1MgNy4wCiAjZGVmaW5l
IFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfSU5TRUNVUkVfQ09OVEVOVF9CTE9DS0lORyAzNDU0
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGQyZWFmOTQz
NTkzZDk5N2MwM2I3YjYwNzcxNmRiNTE4MjVjOWNkYzguLjcyNTk5OGZiMjIyMTM5ZTcyODgwOTYw
ODhmOTA5ODE4YjcwYjg1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0zMDEsMTMgKzMwMSw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3du
bG9hZChEb2N1bWVudExvYWRlciogZG9jCiAKICAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0g
bWFpblJlc291cmNlTG9hZGVyLT5oYW5kbGUoKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAg
QVNTRVJUKFtXZWJEb3dubG9hZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9h
ZFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOnJlcXVlc3Q6cmVzcG9uc2U6ZGVsZWdhdGU6cHJv
eHk6KV0pOwotICAgIGF1dG8gY29ubmVjdGlvbiA9IGhhbmRsZS0+cmVsZWFzZUNvbm5lY3Rpb25G
b3JEb3dubG9hZCgpOwotICAgIFtXZWJEb3dubG9hZCBfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJM
Q29ubmVjdGlvbjpjb25uZWN0aW9uLmdldCgpIHJlcXVlc3Q6cmVxdWVzdC5jZlVSTFJlcXVlc3Qo
VXBkYXRlSFRUUEJvZHkpIHJlc3BvbnNlOnJlc3BvbnNlLmNmVVJMUmVzcG9uc2UoKSBkZWxlZ2F0
ZTpbd2ViVmlldyBkb3dubG9hZERlbGVnYXRlXSBwcm94eTpuaWxdOwotI2Vsc2UKICAgICBbV2Vi
RG93bmxvYWQgX2Rvd25sb2FkV2l0aExvYWRpbmdDb25uZWN0aW9uOmhhbmRsZS0+Y29ubmVjdGlv
bigpIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpIHJlc3BvbnNl
OnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSBkZWxlZ2F0ZTpbd2ViVmlldyBkb3dubG9hZERlbGVn
YXRlXSBwcm94eTpuaWxdOwotI2VuZGlmCiB9CiAKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGludCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlcy5tbQppbmRleCA1ZDhiZWU3NzQwNDMxYzMxMDAyMjc2NDQ5MGIwMmEzZDJk
Njg4ODlkLi5lYmNhY2E5NGIwZjExZWMyZTA1NjM5ZTQxNGM0NWEwNmZjYmMyZWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTE3NjMsNyArMTc2
Myw3IEBAICsgKHZvaWQpX2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb24KICsgKHZvaWQpX3NldEN1
cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2ll
QWNjZXB0UG9saWN5KXBvbGljeQogewogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOyAv
LyBXaWxsIGZhaWwgd2hlbiBidWlsZGluZyB3aXRob3V0IFVTRShDRk5FVFdPUkspIGFuZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNh
bGxlZCBiZWZvcmVoYW5kLgorICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBmYWls
IHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkg
d2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29v
a2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAwZTljZDMxYTM2MjIzMzZhZjRiZmIwZTdj
NzMyMjA1OGRiNjJlODhjLi40ODNkNzE0YjE4MmY4ODI4NmFiZDk3YTIyOThmZTNjOGExOWE1YzY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xMDI4LDEyICsxMDI4LDEz
IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTooTlNTdHJpbmcg
KilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0CiAKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIE5T
UnVuTG9vcCAqcnVuTG9vcCA9IFtOU1J1bkxvb3AgbWFpblJ1bkxvb3BdOwotCisjZWxzZQorICAg
IE5TUnVuTG9vcCAqcnVuTG9vcCA9IFdlYlRocmVhZE5TUnVuTG9vcCgpOworI2VuZGlmCiAgICAg
aWYgKFdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0xPQURJ
TkdfRFVSSU5HX0NPTU1PTl9SVU5MT09QX01PREVTKSkKICAgICAgICAgW3NlbGYgc2NoZWR1bGVJ
blJ1bkxvb3A6cnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKWtDRlJ1bkxvb3BDb21tb25Nb2Rl
c107CiAgICAgZWxzZQogICAgICAgICBbc2VsZiBzY2hlZHVsZUluUnVuTG9vcDpydW5Mb29wIGZv
ck1vZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGVdOwotI2VuZGlmCiAKICAgICBbc2VsZiBfYWRkVG9B
bGxXZWJWaWV3c1NldF07CiAgICAgCkBAIC02NjE4LDI5ICs2NjE5LDE5IEBAIEBlbmQKIAogQGlt
cGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlBlbmRpbmdQdWJsaWMpCiAKLSNpZiAhUExBVEZPUk0o
SU9TKQogLSAodm9pZClzY2hlZHVsZUluUnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JN
b2RlOihOU1N0cmluZyAqKW1vZGUKIHsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGUnVuTG9v
cFJlZiBzY2hlZHVsZVBhaXJSdW5Mb29wID0gW3J1bkxvb3AgZ2V0Q0ZSdW5Mb29wXTsKLSNlbHNl
CiAgICAgTlNSdW5Mb29wICpzY2hlZHVsZVBhaXJSdW5Mb29wID0gcnVuTG9vcDsKLSNlbmRpZgog
ICAgIGlmIChydW5Mb29wICYmIG1vZGUpCiAgICAgICAgIGNvcmUoc2VsZiktPmFkZFNjaGVkdWxl
UGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShzY2hlZHVsZVBhaXJSdW5Mb29wLCAoQ0ZTdHJpbmdS
ZWYpbW9kZSkpOwogfQogCiAtICh2b2lkKXVuc2NoZWR1bGVGcm9tUnVuTG9vcDooTlNSdW5Mb29w
ICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGUKIHsKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotICAgIENGUnVuTG9vcFJlZiBzY2hlZHVsZVBhaXJSdW5Mb29wID0gW3J1bkxvb3AgZ2V0Q0ZS
dW5Mb29wXTsKLSNlbHNlCiAgICAgTlNSdW5Mb29wICpzY2hlZHVsZVBhaXJSdW5Mb29wID0gcnVu
TG9vcDsKLSNlbmRpZgogICAgIGlmIChydW5Mb29wICYmIG1vZGUpCiAgICAgICAgIGNvcmUoc2Vs
ZiktPnJlbW92ZVNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShzY2hlZHVsZVBhaXJS
dW5Mb29wLCAoQ0ZTdHJpbmdSZWYpbW9kZSkpOwogfQotI2VuZGlmCiAKIHN0YXRpYyBCT09MIGZp
bmRTdHJpbmcoTlNWaWV3IDxXZWJEb2N1bWVudFNlYXJjaGluZz4gKnNlYXJjaFZpZXcsIE5TU3Ry
aW5nICpzdHJpbmcsIFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKaW5kZXggNzk2YzBmNDJhNzY5OWYxODZmMGU0YzAz
N2QxMTQ2N2M0NmIxMDI5NC4uZjQzMDQ5OTY0NWQ3Zjk1MDA3YzFjYmEwZTljZmFjMDE5OGNmM2Mw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaApAQCAtMTk4
LDEwICsxOTgsOCBAQCB0eXBlZGVmIGVudW0gewogCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlBl
bmRpbmdQdWJsaWMpCiAKLSNpZiAhVEFSR0VUX09TX0lQSE9ORQogLSAodm9pZClzY2hlZHVsZUlu
UnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGU7CiAt
ICh2b2lkKXVuc2NoZWR1bGVGcm9tUnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JNb2Rl
OihOU1N0cmluZyAqKW1vZGU7Ci0jZW5kaWYKIAogLSAoQk9PTClmaW5kU3RyaW5nOihOU1N0cmlu
ZyAqKXN0cmluZyBvcHRpb25zOihXZWJGaW5kT3B0aW9ucylvcHRpb25zOwogLSAoRE9NUmFuZ2Ug
KilET01SYW5nZU9mU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyByZWxhdGl2ZVRvOihET01SYW5n
ZSAqKXByZXZpb3VzUmFuZ2Ugb3B0aW9uczooV2ViRmluZE9wdGlvbnMpb3B0aW9uczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5o
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKaW5k
ZXggMTRlZTQyYTRmNWNhNjY2NWYzNWI4OTdkNjAwOWE3ZGNhNGRhOGZkMi4uYmRiZDVlMjRjOWQ1
MWE2NDc5Yjc1ZGQwMTQ1NGMxMmQzNzU2MmNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKQEAgLTQ5LDEwICs0OSw2IEBAIE9C
SkNfQ0xBU1MgV0tEb3dubG9hZEFzRGVsZWdhdGU7CiAjaW5jbHVkZSA8bWVtb3J5PgogI2VuZGlm
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTERvd25sb2Fk
UHJpdi5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRGF0YVJlZmVyZW5jZTsK
IH0KQEAgLTEwNiwxMCArMTAyLDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmFpbChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVE
YXRhKTsKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3Vt
ZURhdGEpOwogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBEb3dubG9hZEF1dGhlbnRpY2F0aW9u
Q2xpZW50KiBhdXRoZW50aWNhdGlvbkNsaWVudCgpOwotI2VuZGlmCi0KICAgICAvLyBBdXRoZW50
aWNhdGlvbgogICAgIHN0YXRpYyB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKTsK
ICAgICBzdGF0aWMgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRp
YWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKQEAgLTE0MywxMCAr
MTM1LDYgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8V0tEb3dubG9hZEFzRGVsZWdhdGU+IG1f
ZGVsZWdhdGU7CiAjZW5kaWYKICNlbmRpZgotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgUmV0YWlu
UHRyPENGVVJMRG93bmxvYWRSZWY+IG1fZG93bmxvYWQ7Ci0gICAgUmVmUHRyPERvd25sb2FkQXV0
aGVudGljYXRpb25DbGllbnQ+IG1fYXV0aGVudGljYXRpb25DbGllbnQ7Ci0jZW5kaWYKICNpZiBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ+IG1fZG93bmxvYWRDbGllbnQ7CiAgICAgUmVmUHRyPFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlPiBtX3Jlc291cmNlSGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbSBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1Mu
bW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwZTgwZTYyMDM4NGMxNzgwMTcwMTM4
NjFmNzUyMDhlNzViNWNjMDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3du
bG9hZElPUy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE5NiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJEb3dubG9hZC5oIgotCi0jaWYgUExBVEZPUk0o
SU9TKSAmJiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLQotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5o
IgotI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9S
ZXNvdXJjZUVycm9yLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KLSNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9y
dCA8Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWQuaD4KLSNlbmRpZgotCi11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotLy8g
RklYTUU6IElmIHBvc3NpYmxlLCB3ZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIHNvbWUgY2FsbGJh
Y2tzIG9mZiB0aGUgbWFpbiB0aHJlYWQgb3IgYXQgbGVhc3QKLS8vIG1ha2luZyB0aGVtIGFzeW5j
aG9ub3VzIGNhbGxzLgotc3RhdGljIHZvaWQgZGlzcGF0Y2hPbk1haW5UaHJlYWQodm9pZCheYmxv
Y2spKCkpCi17Ci0gICAgaWYgKFJ1bkxvb3A6OmlzTWFpbigpKSB7Ci0gICAgICAgIGJsb2NrKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIGJsb2NrKTsKLX0KLQotc3RhdGljIGlubGluZSBEb3dubG9hZCogdG9E
b3dubG9hZChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxEb3dubG9hZCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLX0KLQotc3RhdGlj
IHZvaWQgc2V0VXBEb3dubG9hZENsaWVudChDRlVSTERvd25sb2FkQ2xpZW50JiBjbGllbnQsIERv
d25sb2FkJiBkb3dubG9hZCkKLXsKLSAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVu
dCkpOwotICAgIGNsaWVudC5jbGllbnRJbmZvID0gJmRvd25sb2FkOwotCi0gICAgY2xpZW50LmRp
ZFN0YXJ0ID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewot
ICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChj
bGllbnRJbmZvKS0+ZGlkU3RhcnQoKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVu
dC53aWxsU2VuZFJlcXVlc3QgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlVSTFJlcXVlc3RSZWYg
cmVxdWVzdCwgQ0ZVUkxSZXNwb25zZVJlZiwgY29uc3Qgdm9pZCopIC0+IENGVVJMUmVxdWVzdFJl
ZiB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlVSTFJlcXVlc3RSZWY+KENGUmV0YWlu
KHJlcXVlc3QpKTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZSA9IFtd
KENGVVJMRG93bmxvYWRSZWYsIENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAg
ICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7
Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEgPSBbXShD
RlVSTERvd25sb2FkUmVmLCBDRkluZGV4IGxlbmd0aCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykg
ewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9h
ZChjbGllbnRJbmZvKS0+ZGlkUmVjZWl2ZURhdGEobGVuZ3RoKTsKLSAgICAgICAgfSk7Ci0gICAg
fTsKLQotICAgIGNsaWVudC5zaG91bGREZWNvZGVEYXRhT2ZNSU1FVHlwZSA9IFtdKENGVVJMRG93
bmxvYWRSZWYsIENGU3RyaW5nUmVmIGVuY29kaW5nVHlwZSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykgLT4gQm9vbGVhbiB7Ci0gICAgICAgIF9fYmxvY2sgQk9PTCByZXR1cm5WYWx1ZSA9IE5POwot
ICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgcmV0dXJuVmFsdWUg
PSB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5zaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlw
ZShlbmNvZGluZ1R5cGUpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHJldHVyblZhbHVl
OwotICAgIH07Ci0KLSAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkT2Jq
ZWN0TmFtZSA9IFtdKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWRSZWYsIENGU3RyaW5nUmVmIG9i
amVjdE5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1h
aW5UaHJlYWQoXnsKLSAgICAgICAgICAgIGJvb2wgYWxsb3dPdmVyd3JpdGU7Ci0gICAgICAgICAg
ICBTdHJpbmcgZGVzdGluYXRpb24gPSB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShvYmplY3ROYW1lLCBhbGxvd092ZXJ3cml0ZSk7
Ci0gICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQotICAgICAgICAgICAgICAg
IENGVVJMRG93bmxvYWRTZXREZXN0aW5hdGlvbihkb3dubG9hZFJlZiwgcmVpbnRlcnByZXRfY2Fz
dDxDRlVSTFJlZj4oW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpkZXN0aW5hdGlvbl0pLCBhbGxvd092
ZXJ3cml0ZSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkQ3JlYXRlRGVz
dGluYXRpb24gPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlVSTFJlZiBwYXRoLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAg
ICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihDRlVSTEdl
dFN0cmluZyhwYXRoKSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkRmlu
aXNoID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAg
ICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGll
bnRJbmZvKS0+ZGlkRmluaXNoKCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQu
ZGlkRmFpbCA9IFtdKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWRSZWYsIENGRXJyb3JSZWYgZXJy
b3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJl
YWQoXnsKLSAgICAgICAgICAgIGF1dG8gcmVzdW1lRGF0YSA9IGFkb3B0Q0YoQ0ZVUkxEb3dubG9h
ZENvcHlSZXN1bWVEYXRhKGRvd25sb2FkUmVmKSk7Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNs
aWVudEluZm8pLT5kaWRGYWlsKGVycm9yLCBJUEM6OkRhdGFSZWZlcmVuY2UocmVzdW1lRGF0YSA/
IENGRGF0YUdldEJ5dGVQdHIocmVzdW1lRGF0YS5nZXQoKSkgOiBudWxscHRyLCByZXN1bWVEYXRh
ID8gQ0ZEYXRhR2V0TGVuZ3RoKHJlc3VtZURhdGEuZ2V0KCkpIDogMCkpOwotICAgICAgICB9KTsK
LSAgICB9OwotfQotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KLXZvaWQgRG93bmxvYWQ6OnN0
YXJ0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZXN1
bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lk
IERvd25sb2FkOjpzdGFydFdpdGhIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBD
RlVSTERvd25sb2FkQ2xpZW50IGNsaWVudDsKLSAgICBzZXRVcERvd25sb2FkQ2xpZW50KGNsaWVu
dCwgKnRoaXMpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgIG1fZG93
bmxvYWQgPSBhZG9wdENGKENGVVJMRG93bmxvYWRDcmVhdGVBbmRTdGFydFdpdGhMb2FkaW5nQ29u
bmVjdGlvbihOVUxMLCBoYW5kbGUtPnJlbGVhc2VDb25uZWN0aW9uRm9yRG93bmxvYWQoKS5nZXQo
KSwgbV9yZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSksIHJlc3BvbnNlLmNmVVJM
UmVzcG9uc2UoKSwgJmNsaWVudCkpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotI2Vs
c2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCi19Ci0KLXZvaWQgRG93bmxvYWQ6OmNh
bmNlbCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cGxh
dGZvcm1JbnZhbGlkYXRlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERv
d25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVk
ZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
dm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBQTEFURk9S
TShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvbWFjL0Rvd25sb2FkTWFjLm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQppbmRleCA5YzdkOTUzMzg1ZWY2M2E2NmRmNzU2Mjcx
OGVjOGE3NmQ3ZGZiOTY1Li40ZmU1M2FjNjU0YzBlMDBkYzJjY2U5ODg5OWRmNjAwMzRkYmJmOGU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFj
L0Rvd25sb2FkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KQEAgLTI2LDEwICsyNiwxMSBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJEb3dubG9hZC5oIgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNF
KE5FVFdPUktfU0VTU0lPTikKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShORVRXT1JLX1NF
U1NJT04pCiAKICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNp
bXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25NYWMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTlNV
UkxEb3dubG9hZFNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJj
ZUhhbmRsZUNsaWVudC5oPgpAQCAtMzcsMTQgKzM4LDYgQEAKICNpbXBvcnQgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbXBvcnQgIldlYlBhZ2UuaCIKIAotQGludGVyZmFjZSBOU1VSTERvd25sb2FkIChX
ZWJOU1VSTERvd25sb2FkRGV0YWlscykKLSsoaWQpX2Rvd25sb2FkV2l0aExvYWRpbmdDb25uZWN0
aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByb3h5OihpZClwcm94eTsKLUBlbmQKLQogQGludGVyZmFjZSBXS0Rvd25sb2FkQXNEZWxl
Z2F0ZSA6IE5TT2JqZWN0IDxOU1VSTERvd25sb2FkRGVsZWdhdGU+IHsKICAgICBXZWJLaXQ6OkRv
d25sb2FkKiBfZG93bmxvYWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuaAppbmRleCA1NTQwZWE5MjllOGM3M2Y1YzkxNGYyZTIwOTJlMTQyMWFkNWI5YWQz
Li5kZDU4ZDRmYTFlNzdjYWM5MGRkOWYxNmQzZmQ4MDAyNzc0OThlZGY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKQEAgLTk1LDEyICs5NSw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJheShXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSosIENGQXJyYXlSZWYpIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENhY2hlUmVz
cG9uc2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VS
ZWYpIG92ZXJyaWRlOwotI2Vsc2UKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VB
c3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKikgb3Zl
cnJpZGU7CiAjZW5kaWYKLSNlbmRpZgogI2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCiAK
ICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDY5NjgwMTU5ZmNk
MDE1NmJhY2QwY2Y0OTFlMzEzODZlM2FlYTJkY2UuLmM2YTdhZjljZDg1YWNkYjQ3OTFlZWE2YjA5
YWZiMTgzODRiM2I3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
Ojppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZQogCiAgICAgc2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24ocGFyYW1l
dGVycy5jYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbik7CiAKLSNpZiBQTEFURk9S
TShNQUMpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2Vzc2lv
blRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRl
bnRpZmllcik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCmluZGV4IGYzYzZlY2JiYjAxYTE2MDI5ZjhkZWNmOWM0
YzFjMzhhMDI3YWMwNzkuLjNkNjI1YzhlMjZiZmY3ZGU0OGJmN2E1ZjFmMDQwOThiODhjNmZjMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9h
ZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xv
YWRNYWMubW0KQEAgLTM0LDE4ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLXZvaWQgTmV0d29ya0xv
YWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQotewotICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxl
LCBoYW5kbGUgPT0gbV9oYW5kbGUpOwotCi0gICAgbV9jbGllbnQud2lsbENhY2hlUmVzcG9uc2VB
c3luYyhjZlJlc3BvbnNlKTsKLQotICAgIG1faGFuZGxlLT5jb250aW51ZVdpbGxDYWNoZVJlc3Bv
bnNlKGNmUmVzcG9uc2UpOwotfQotCi0jZWxpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKKyNpZiAh
VVNFKE5FVFdPUktfU0VTU0lPTikKIAogdm9pZCBOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9u
c2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBOU0NhY2hlZFVSTFJlc3BvbnNlICpuc1Jl
c3BvbnNlKQogewpAQCAtNTYsNiArNDUsNiBAQCB2b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVS
ZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIE5TQ2FjaGVkVVJMUmVzcAogICAg
IG1faGFuZGxlLT5jb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKG5zUmVzcG9uc2UpOwogfQogCi0j
ZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8gIVVTRShORVRXT1JLX1NFU1NJT04p
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDZhZjMxN2VkY2NjYjNm
Mzc4ZWQ4OTQ5MWM0YWRmN2I2Y2ViMWJiZTkuLmVkMDVmZjYyNWJiMjkwYmI5ZmY4ZTMyNzhiMDJh
ZGZjY2Q1YjA1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHRleHRDaGVja2VyU3RhdGU7CiAgICAgZW5jb2Rl
ciA8PCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOwogICAgIGVuY29kZXIgPDwgZGVmYXVsdFJl
cXVlc3RUaW1lb3V0SW50ZXJ2YWw7Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdP
UkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW5jb2RlciA8PCB1aVByb2Nlc3NCdW5kbGVJ
ZGVudGlmaWVyOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0yMzAsNyArMjMwLDcg
QEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpBcmd1bWVu
dERlY29kZXImIGRlY29kZXIsIFdlYlByb2MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5kZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZh
bCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENG
TkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggMmY4MGM2M2Q3ODM1NDkwOWVlYWQ1MmU2OGI0ZjgyOWMx
YzE3OTU2Mi4uMDMzNTAxMTAyYzRhZmQ4ZTQ0NmFmZjc3YTAxYzQwNzA1ZDQ2ZDhkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oCkBAIC0xMjEsNyArMTIxLDcgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMgewogCiAgICAgZG91YmxlIGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsOwogCi0jaWYg
UExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgU3RyaW5nIHVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXI7CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQpp
bmRleCBkZmZiM2UwNjNkNTZhZGExN2Q1Y2Q1NGNmZTE1ZTAzMDk4YzVhZTE1Li5kMGQ0YzcwODUx
ZGU5OThhYjllZDI5YjVlODA5MTFmOTJmZGM2YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQpAQCAtMzksMTAgKzM5
LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9SZXNvdXJjZVJlcXVlc3QuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5l
dHdvcmsvQ0ZVUkxSZXF1ZXN0Lmg+Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCiAjaW1wb3J0IDxXZWJDb3JlL0FWRm91bmRhdGlvblNQSS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgpAQCAtNTcsMzYgKzUzLDYg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBJUEMgewogCi0jaWYgVVNF
KENGTkVUV09SSykKLXZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQ
bGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlc291cmNlUmVxdWVzdCkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBy
ZXF1ZXN0VG9TZXJpYWxpemUgPSByZXNvdXJjZVJlcXVlc3QuY2ZVUkxSZXF1ZXN0KERvTm90VXBk
YXRlSFRUUEJvZHkpOwotCi0gICAgYm9vbCByZXF1ZXN0SXNQcmVzZW50ID0gcmVxdWVzdFRvU2Vy
aWFsaXplOwotICAgIGVuY29kZXIgPDwgcmVxdWVzdElzUHJlc2VudDsKLQotICAgIGlmICghcmVx
dWVzdElzUHJlc2VudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gV2UgZG9uJ3Qgc2VuZCBI
VFRQIGJvZHkgb3ZlciBJUEMgZm9yIGJldHRlciBwZXJmb3JtYW5jZS4KLSAgICAvLyBBbHNvLCBp
dCdzIG5vdCBhbHdheXMgcG9zc2libGUgdG8gZG8sIGFzIHN0cmVhbXMgY2FuIG9ubHkgYmUgY3Jl
YXRlZCBpbiBwcm9jZXNzIHRoYXQgZG9lcyBuZXR3b3JraW5nLgotICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IHJlcXVlc3RIVFRQQm9keSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1
ZXN0Qm9keShyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCkpKTsKLSAgICBSZXRhaW5QdHI8Q0ZSZWFk
U3RyZWFtUmVmPiByZXF1ZXN0SFRUUEJvZHlTdHJlYW0gPSBhZG9wdENGKENGVVJMUmVxdWVzdENv
cHlIVFRQUmVxdWVzdEJvZHlTdHJlYW0ocmVxdWVzdFRvU2VyaWFsaXplLmdldCgpKSk7Ci0gICAg
aWYgKHJlcXVlc3RIVFRQQm9keSB8fCByZXF1ZXN0SFRUUEJvZHlTdHJlYW0pIHsKLSAgICAgICAg
Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBtdXRhYmxlUmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0
ZU11dGFibGVDb3B5KDAsIHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSk7Ci0gICAgICAgIHJlcXVl
c3RUb1NlcmlhbGl6ZSA9IGFkb3B0Q0YobXV0YWJsZVJlcXVlc3QpOwotICAgICAgICBDRlVSTFJl
cXVlc3RTZXRIVFRQUmVxdWVzdEJvZHkobXV0YWJsZVJlcXVlc3QsIG5pbCk7Ci0gICAgICAgIENG
VVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9keVN0cmVhbShtdXRhYmxlUmVxdWVzdCwgbmlsKTsK
LSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRv
cHRDRihXS0NGVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlcXVl
c3RUb1NlcmlhbGl6ZS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpKTsKLSAgICBJUEM6
OmVuY29kZShlbmNvZGVyLCBkaWN0aW9uYXJ5LmdldCgpKTsKLQotICAgIC8vIFRoZSBmYWxsYmFj
ayBhcnJheSBpcyBwYXJ0IG9mIENGVVJMUmVxdWVzdCwgYnV0IGl0IGlzIG5vdCBlbmNvZGVkIGJ5
IFdLQ0ZVUkxSZXF1ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24uCi0gICAgZW5j
b2RlciA8PCByZXNvdXJjZVJlcXVlc3QucmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGlu
Z0ZhbGxiYWNrQXJyYXkoKTsKLSAgICBlbmNvZGVyLmVuY29kZUVudW0ocmVzb3VyY2VSZXF1ZXN0
LnJlcXVlc3RlcigpKTsKLX0KLSNlbHNlCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1
ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7CiAgICAgUmV0YWluUHRyPE5TVVJM
UmVxdWVzdD4gcmVxdWVzdFRvU2VyaWFsaXplID0gcmVzb3VyY2VSZXF1ZXN0Lm5zVVJMUmVxdWVz
dChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKQEAgLTExMiw3ICs3OCw2IEBAIHZvaWQgQXJndW1lbnRD
b2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVy
JiBlbmNvZGVyCiAgICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QucmVzcG9uc2VDb250ZW50
RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoKTsKICAgICBlbmNvZGVyLmVuY29kZUVu
dW0ocmVzb3VyY2VSZXF1ZXN0LnJlcXVlc3RlcigpKTsKIH0KLSNlbmRpZgogCiBib29sIEFyZ3Vt
ZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7CkBAIC0x
MjksMjAgKzk0LDEyIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNv
ZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyCiAgICAgaWYgKCFJUEM6OmRl
Y29kZShkZWNvZGVyLCBkaWN0aW9uYXJ5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWYg
VVNFKENGTkVUV09SSykKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBjZlVSTFJlcXVl
c3QgPSBhZG9wdENGKFdLQ3JlYXRlQ0ZVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2Vu
dGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7Ci0gICAg
aWYgKCFjZlVSTFJlcXVlc3QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJlc291cmNl
UmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChjZlVSTFJlcXVlc3QuZ2V0KCkpOwotI2Vsc2UKICAg
ICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJlcXVlc3QgPSBXS05TVVJMUmVxdWVzdEZy
b21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJUEM6OnRva2Vu
TnVsbFR5cGVSZWYoKSk7CiAgICAgaWYgKCFuc1VSTFJlcXVlc3QpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHJlc291cmNlUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChuc1VSTFJlcXVl
c3QuZ2V0KCkpOwotI2VuZGlmCi0gICAgCisKICAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUNv
bnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE3Y2ZiMjU5NDc1YjZiZDQ3NzlhZDJiMGE3ZWI1
MzVkNWU0MWM4MDguLmIyMjI5YmQ5ZDliYjdiYTMwMmIxYTlhYTIxNDUwOWExM2Y0ZDg3MjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEwNjEsNyArMTA2MSw2IEBACiAJCTVDMTQyNzA1MUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3du
bG9hZElELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzE0MjZGNzFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWRJRC5oICovOyB9OwogCQk1QzE0Mjcw
NjFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNkY4MUMyM0Y4NDMwMEQ0MTE4MyAv
KiBEb3dubG9hZE1hbmFnZXIuY3BwICovOyB9OwogCQk1QzE0MjcwNzFDMjNGODRDMDBENDExODMg
LyogRG93bmxvYWRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzE0MjZGOTFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmgg
Ki87IH07Ci0JCTVDMTQyNzExMUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3dubG9hZElPUy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNzBEMUMyM0Y4
ODUwMEQ0MTE4MyAvKiBEb3dubG9hZElPUy5tbSAqLzsgfTsKIAkJNUMxNDI3MTIxQzIzRjg5RTAw
RDQxMTgzIC8qIERvd25sb2FkTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUMxNDI3MEYxQzIzRjg5OTAwRDQxMTgzIC8qIERvd25sb2FkTWFjLm1t
ICovOyB9OwogCQk1QzE0MjcxMzFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRDb2NvYS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNzA5MUMy
M0Y4NjkwMEQ0MTE4MyAvKiBEb3dubG9hZENvY29hLm1tICovOyB9OwogCQk1QzE0MjcxODFDMjNG
OEI3MDBENDExODMgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcxNDFDMjNGOEIwMDBENDExODMgLyog
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggKi87IH07CkBAIC0zMjQxLDcgKzMyNDAsNiBAQAogCQk1
QzE0MjZGODFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERvd25sb2FkTWFuYWdlci5jcHA7IHBhdGggPSBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI2RjkxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFu
YWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEb3dubG9hZE1hbmFnZXIu
aDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI3MDkxQzIzRjg2OTAwRDQxMTgzIC8qIERv
d25sb2FkQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBE
b3dubG9hZENvY29hLm1tOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rv
d25sb2FkQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDMTQyNzBEMUMy
M0Y4ODUwMEQ0MTE4MyAvKiBEb3dubG9hZElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IERvd25sb2FkSU9TLm1tOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUMxNDI3MEYxQzIzRjg5OTAwRDQxMTgzIC8qIERvd25sb2FkTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRG93bmxvYWRNYWMubW07IHBhdGggPSBOZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1QzE0MjcxNDFDMjNGOEIwMDBENDExODMgLyogQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbVByb3RvY29sTWFu
YWdlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3Rv
Y29sTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzE0MjcxNTFDMjNG
OEIwMDBENDExODMgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgbmFtZSA9IEN1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbjsgcGF0aCA9
IE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01ODE1LDcgKzU4MTMsNiBA
QAogCQk1QzE0MjZGMTFDMjNGODE3MDBENDExODMgLyogRG93bmxvYWRzICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk1QzE0MjcwQzFDMjNGODc3MDBENDEx
ODMgLyogaW9zICovLAogCQkJCTVDMTQyNzBCMUMyM0Y4NzEwMEQ0MTE4MyAvKiBtYWMgKi8sCiAJ
CQkJNUMxNDI3MDgxQzIzRjg1MjAwRDQxMTgzIC8qIGNvY29hICovLAogCQkJCTVDMTQyNkYzMUMy
M0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZC5jcHAgKi8sCkBAIC01ODU1LDE0ICs1ODUyLDYgQEAK
IAkJCW5hbWUgPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQk1QzE0
MjcwQzFDMjNGODc3MDBENDExODMgLyogaW9zICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0J
CQljaGlsZHJlbiA9ICgKLQkJCQk1QzE0MjcwRDFDMjNGODg1MDBENDExODMgLyogRG93bmxvYWRJ
T1MubW0gKi8sCi0JCQkpOwotCQkJbmFtZSA9IGlvczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7Ci0JCX07CiAJCTVDMTQyNzFBMUMyM0Y4QkYwMEQ0MTE4MyAvKiBDb2NvYSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05OTU4LDcgKzk5NDcsNiBAQAog
CQkJCUJDQTI4NEQ2MTQ5MkYyQzcwMDFGOTA0MiAvKiBXS0Nvbm5lY3Rpb24ubW0gaW4gU291cmNl
cyAqLywKIAkJCQlCQzRBNjI5NjE0NzMxM0EwMDA2QzY4MUEgLyogV0tDb25uZWN0aW9uUmVmLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0I0RTREMThCQkUwNDQwMDBGQ0ZDOSAvKiBXS0NvbnRl
bnRWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNUMxNDI3MTExQzIzRjg5RTAwRDQxMTgzIC8q
IERvd25sb2FkSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDQjRFNkQxOEJCRjI2QTAwMEZD
RkM5IC8qIFdLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJD
QjlFMjRDMTEyMEUxNUMwMEExMzdFMCAvKiBXS0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFFNTJGOTcxOTIwMjYzMzAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDdlN2M2NDBlMzQ2
ZDA2NTA1NzQyMWQzNzdhMjY2ZTQ4OWIzMWUxYzUuLmViMTAwOWQwMTFmNTUzYzA4ZjE5NzhiYjAx
YjUyMTJjNzA1MDAzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0yODYsNyArMjg2LDcg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChX
ZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3UKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFByaXZh
dGVCcm93c2luZ0VuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgYm9vbCBlbmFi
bGVkKQogewogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFRoaXMgdGVzdC1vbmx5IGZ1
bmN0aW9uIGRvZXNuJ3Qgd29yayB3aXRoIE5ldHdvcmtQcm9jZXNzLCA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTI3ND4uCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
U09VUCkKICAgICBpZiAoZW5hYmxlZCkKICAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uSUQoKSk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggZWJhOGZlOTc1M2QyMmZhYTEwYTJiYTcwY2M2MTI2MmY5ZDcwOWNmZi4uYTIz
MTBlZjBlMjc2NDdjZDNlM2E1ZDUwNWM5NjI2ZjE3MjU4N2E3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBXZWJQcm9j
ZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRVc2VGb250U21vb3RoaW5nKQog
ICAgICAgICBzZXRTaG91bGRVc2VGb250U21vb3RoaW5nKHRydWUpOwogCi0jaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2Vzc2lv
blRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRl
bnRpZmllcik7CiAjZW5kaWYKIApAQCAtNDYwLDE0ICs0NjAsMTQgQEAgdm9pZCBXZWJQcm9jZXNz
OjpmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0Vu
YWJsZWQpCiAKIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogewotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRX
T1JLKSB8fCBVU0UoU09VUCkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVApCiAgICAg
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihz
ZXNzaW9uSUQpOwogI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFVTRShTT1VQKQogICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQp
OwogI2VuZGlmCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>