<?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>191875</bug_id>
          
          <creation_ts>2018-11-20 21:59:19 -0800</creation_ts>
          <short_desc>[Cocoa] Create a soft-linking file for PassKit</short_desc>
          <delta_ts>2018-11-21 19:32:06 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=191899</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dino</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1480671</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-20 21:59:19 -0800</bug_when>
    <thetext>[Cocoa] Create a soft-linking file for PassKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480672</commentid>
    <comment_count>1</comment_count>
      <attachid>355384</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-20 22:01:14 -0800</bug_when>
    <thetext>Created attachment 355384
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480673</commentid>
    <comment_count>2</comment_count>
      <attachid>355385</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-20 22:05:32 -0800</bug_when>
    <thetext>Created attachment 355385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480675</commentid>
    <comment_count>3</comment_count>
      <attachid>355387</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-20 22:09:12 -0800</bug_when>
    <thetext>Created attachment 355387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480769</commentid>
    <comment_count>4</comment_count>
      <attachid>355415</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-21 08:45:10 -0800</bug_when>
    <thetext>Created attachment 355415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480786</commentid>
    <comment_count>5</comment_count>
      <attachid>355421</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-21 09:40:49 -0800</bug_when>
    <thetext>Created attachment 355421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480791</commentid>
    <comment_count>6</comment_count>
      <attachid>355424</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-21 09:58:49 -0800</bug_when>
    <thetext>Created attachment 355424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480796</commentid>
    <comment_count>7</comment_count>
      <attachid>355426</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-21 10:26:17 -0800</bug_when>
    <thetext>Created attachment 355426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480799</commentid>
    <comment_count>8</comment_count>
      <attachid>355428</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-21 10:33:36 -0800</bug_when>
    <thetext>Created attachment 355428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480808</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-21 11:03:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/46203215&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480811</commentid>
    <comment_count>10</comment_count>
      <attachid>355431</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-21 11:12:51 -0800</bug_when>
    <thetext>Created attachment 355431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480814</commentid>
    <comment_count>11</comment_count>
      <attachid>355431</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-11-21 12:01:52 -0800</bug_when>
    <thetext>Comment on attachment 355431
Patch

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

&gt; Source/WTF/wtf/Platform.h:1058
&gt; +#define USE_PASSKIT 1

I thought we were moving toward runtime switches for this kind of thing?

&gt; Source/WTF/wtf/cocoa/SoftLinking.h:2
&gt; - * Copyright (C) 2007, 2008, 2011-2015 Apple Inc. All rights reserved.
&gt; + * Copyright (C) 2007-2018 Apple Inc. All rights reserved.

Is this correct? I thought our policy was to add the current year, instead of retroactively adding years.

&gt; Source/WebKit/Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:-41
&gt; -#if PLATFORM(MAC)
&gt; -SOFT_LINK_PRIVATE_FRAMEWORK(PassKit)
&gt; -#else
&gt; -SOFT_LINK_FRAMEWORK(PassKit)
&gt; -#endif

This is good because the symbols are added to the global namespace, so they cause our unified build system problems. Moving them to headers is a better design.

&gt; Source/WebKit/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:591
&gt; -            pkContactField = getPKContactFieldPhoneNumber();
&gt; +            pkContactField = PAL::get_PassKit_PKContactFieldPhoneNumber();
&gt;              break;
&gt;  
&gt;          case WebCore::PaymentError::ContactField::EmailAddress:
&gt; -            pkContactField = getPKContactFieldEmailAddress();
&gt; +            pkContactField = PAL::get_PassKit_PKContactFieldEmailAddress();
&gt;              break;
&gt;  
&gt;          case WebCore::PaymentError::ContactField::Name:
&gt; -            pkContactField = getPKContactFieldName();
&gt; +            pkContactField = PAL::get_PassKit_PKContactFieldName();
&gt;              break;
&gt;  
&gt;          case WebCore::PaymentError::ContactField::PhoneticName:
&gt; -            pkContactField = getPKContactFieldPhoneticName();
&gt; +            pkContactField = PAL::get_PassKit_PKContactFieldPhoneticName();
&gt;              break;
&gt;  
&gt;          case WebCore::PaymentError::ContactField::PostalAddress:
&gt; -            pkContactField = getPKContactFieldPostalAddress();
&gt; +            pkContactField = PAL::get_PassKit_PKContactFieldPostalAddress();
&gt;              break;
&gt;  
&gt;          case WebCore::PaymentError::ContactField::AddressLines:
&gt; -            pkContactField = getPKContactFieldPostalAddress();
&gt; +            pkContactField = PAL::get_PassKit_PKContactFieldPostalAddress();
&gt;              postalAddressKey = getCNPostalAddressStreetKey();
&gt;              break;
&gt;  
&gt;          case WebCore::PaymentError::ContactField::SubLocality:
&gt; -            pkContactField = getPKContactFieldPostalAddress();
&gt; +            pkContactField = PAL::get_PassKit_PKContactFieldPostalAddress();

Why change the name mangling strategy?

&gt; Source/WebKit/WebKit.xcodeproj/project.pbxproj:-690
&gt; -		2D92A79821348D8500F493FD /* WebPaymentCoordinatorProxyMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AB1F77D1D1B30A9007C9BD1 /* WebPaymentCoordinatorProxyMac.mm */; };
&gt; -		2D92A79F2134B07E00F493FD /* WebPaymentCoordinatorProxyIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AB1F77B1D1B30A9007C9BD1 /* WebPaymentCoordinatorProxyIOS.mm */; };

Does this make the files disappear from the Xcode ui? I hope not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480819</commentid>
    <comment_count>12</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-21 12:34:44 -0800</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #11)
&gt; Comment on attachment 355431 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=355431&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/Platform.h:1058
&gt; &gt; +#define USE_PASSKIT 1
&gt; 
&gt; I thought we were moving toward runtime switches for this kind of thing?

I&apos;m not sure I know what kind of thing you&apos;re asking about.

I added this so I can know at compile time whether we want to use PassKit. It&apos;s a more descriptive version of (PLATFORM(MAC) &amp;&amp; PLATFORM(IOS)). There are already runtime switches for the features that use PassKit (applePayEnabled and paymentRequestEnabled).

Does that answer your question?

&gt; 
&gt; &gt; Source/WTF/wtf/cocoa/SoftLinking.h:2
&gt; &gt; - * Copyright (C) 2007, 2008, 2011-2015 Apple Inc. All rights reserved.
&gt; &gt; + * Copyright (C) 2007-2018 Apple Inc. All rights reserved.
&gt; 
&gt; Is this correct? I thought our policy was to add the current year, instead
&gt; of retroactively adding years.

I believe it&apos;s now ok to list date ranges.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:591
&gt; &gt; -            pkContactField = getPKContactFieldPhoneNumber();
&gt; &gt; +            pkContactField = PAL::get_PassKit_PKContactFieldPhoneNumber();
&gt; &gt;              break;
&gt; &gt;  
&gt; &gt;          case WebCore::PaymentError::ContactField::EmailAddress:
&gt; &gt; -            pkContactField = getPKContactFieldEmailAddress();
&gt; &gt; +            pkContactField = PAL::get_PassKit_PKContactFieldEmailAddress();
&gt; &gt;              break;
&gt; &gt;  
&gt; &gt;          case WebCore::PaymentError::ContactField::Name:
&gt; &gt; -            pkContactField = getPKContactFieldName();
&gt; &gt; +            pkContactField = PAL::get_PassKit_PKContactFieldName();
&gt; &gt;              break;
&gt; &gt;  
&gt; &gt;          case WebCore::PaymentError::ContactField::PhoneticName:
&gt; &gt; -            pkContactField = getPKContactFieldPhoneticName();
&gt; &gt; +            pkContactField = PAL::get_PassKit_PKContactFieldPhoneticName();
&gt; &gt;              break;
&gt; &gt;  
&gt; &gt;          case WebCore::PaymentError::ContactField::PostalAddress:
&gt; &gt; -            pkContactField = getPKContactFieldPostalAddress();
&gt; &gt; +            pkContactField = PAL::get_PassKit_PKContactFieldPostalAddress();
&gt; &gt;              break;
&gt; &gt;  
&gt; &gt;          case WebCore::PaymentError::ContactField::AddressLines:
&gt; &gt; -            pkContactField = getPKContactFieldPostalAddress();
&gt; &gt; +            pkContactField = PAL::get_PassKit_PKContactFieldPostalAddress();
&gt; &gt;              postalAddressKey = getCNPostalAddressStreetKey();
&gt; &gt;              break;
&gt; &gt;  
&gt; &gt;          case WebCore::PaymentError::ContactField::SubLocality:
&gt; &gt; -            pkContactField = getPKContactFieldPostalAddress();
&gt; &gt; +            pkContactField = PAL::get_PassKit_PKContactFieldPostalAddress();
&gt; 
&gt; Why change the name mangling strategy?

SOFT_LINK_CLASS_FOR_HEADER creates slightly wordier getter functions than the old SOFT_LINK_CLASS did. I could create better names by adding #defines to PassKitSoftLink.h, but I didn&apos;t feel strongly about doing that.

&gt; 
&gt; &gt; Source/WebKit/WebKit.xcodeproj/project.pbxproj:-690
&gt; &gt; -		2D92A79821348D8500F493FD /* WebPaymentCoordinatorProxyMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AB1F77D1D1B30A9007C9BD1 /* WebPaymentCoordinatorProxyMac.mm */; };
&gt; &gt; -		2D92A79F2134B07E00F493FD /* WebPaymentCoordinatorProxyIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AB1F77B1D1B30A9007C9BD1 /* WebPaymentCoordinatorProxyIOS.mm */; };
&gt; 
&gt; Does this make the files disappear from the Xcode ui? I hope not.

It does not.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480820</commentid>
    <comment_count>13</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-21 12:36:40 -0800</bug_when>
    <thetext>(In reply to Andy Estes from comment #12)
&gt; (In reply to Myles C. Maxfield from comment #11)
&gt; &gt; Comment on attachment 355431 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=355431&amp;action=review 
&gt; &gt; 
&gt; &gt; &gt; Source/WTF/wtf/cocoa/SoftLinking.h:2
&gt; &gt; &gt; - * Copyright (C) 2007, 2008, 2011-2015 Apple Inc. All rights reserved.
&gt; &gt; &gt; + * Copyright (C) 2007-2018 Apple Inc. All rights reserved.
&gt; &gt; 
&gt; &gt; Is this correct? I thought our policy was to add the current year, instead
&gt; &gt; of retroactively adding years.
&gt; 
&gt; I believe it&apos;s now ok to list date ranges.

More specifically, I believe it&apos;s now ok to collapse all years into a single range.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480821</commentid>
    <comment_count>14</comment_count>
      <attachid>355431</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-21 12:48:28 -0800</bug_when>
    <thetext>Comment on attachment 355431
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:591
&gt;&gt;&gt; +            pkContactField = PAL::get_PassKit_PKContactFieldPostalAddress();
&gt;&gt; 
&gt;&gt; Why change the name mangling strategy?
&gt; 
&gt; SOFT_LINK_CLASS_FOR_HEADER creates slightly wordier getter functions than the old SOFT_LINK_CLASS did. I could create better names by adding #defines to PassKitSoftLink.h, but I didn&apos;t feel strongly about doing that.

Actually, I wonder if SOFT_LINK_CLASS_FOR_HEADER is being overly conservative with its naming. Objective-C classes already must coexist in a global namespace, so I&apos;m not sure we really need to prepend the framework name to these class getters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480829</commentid>
    <comment_count>15</comment_count>
      <attachid>355437</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-21 13:54:24 -0800</bug_when>
    <thetext>Created attachment 355437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480858</commentid>
    <comment_count>16</comment_count>
      <attachid>355446</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-11-21 16:45:24 -0800</bug_when>
    <thetext>Created attachment 355446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480869</commentid>
    <comment_count>17</comment_count>
      <attachid>355446</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-21 18:12:11 -0800</bug_when>
    <thetext>Comment on attachment 355446
Patch

Clearing flags on attachment: 355446

Committed r238434: &lt;https://trac.webkit.org/changeset/238434&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480870</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-21 18:12:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355384</attachid>
            <date>2018-11-20 22:01:14 -0800</date>
            <delta_ts>2018-11-20 22:05:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191875-20181120220113.patch</filename>
            <type>text/plain</type>
            <size>51574</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQxMWQ5ZGVmOGIxMzhiNzExMTYwMWFh
YmVjYTM1OGQ4MTAxMDJhNzcuLjQxZWQzNjEzZDQxMTNjZTM5NTliMjA4ZDJmZmMzYmM3NjU5YmZh
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUg
Zm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MTg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL2NvY29hL1NvZnRMaW5raW5nLmg6CisKIDIwMTgtMTEtMTQgIEtlaXRoIFJvbGxp
biAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCAjZW5kIHZzLiAjZW5kaWYgdHlw
by4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwZjc0ZjdhMTlhOTQyMWNmNmNlMzMzYzFmMDY3ZmE2YWVlZTRlOGI3
Li5kY2MzZjI0NDcwZjMxNTYzZWYyMGJiM2VkNGZhYWI0ZWM0ZWUwMGUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBhc3NL
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg3
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9k
dWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydCk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50
TWVyY2hhbnRTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50TWVyY2hh
bnRTZXNzaW9uOjpmcm9tSlMpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUNvY29hOjpwYWludEFwcGxlUGF5QnV0dG9uKToKKwogMjAxOC0xMS0yMCAgRGVhbiBK
YWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZpbmcgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmUgZnJvbSBXZWJMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMGVkZWU1YzNh
YzhkZTI4NTA2NDUxNzY1ZTIwMTUwYmFlOGMzODlmNy4uMWE0MTg4Zjc1NDBjYWFjM2U3NTc1YWFi
ZGMxNTUxM2VlOGQ3NDJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2Nv
YV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOiBBZGRlZC4K
KyAgICAgICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tOiBBZGRlZC4KKyAgICAgICAg
KiBwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaDoKKwogMjAxOC0xMS0xNyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBSZW1vdmUgYWxsIHVz
YWdlcyBvZiBVSUl0ZW1Qcm92aWRlciwgVUlJdGVtUHJvdmlkZXJSZWFkaW5nLCBhbmQgcmVsYXRl
ZCBjbGFzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZlOGUzZTRkOGEwOWUxYmUzZjljYjU1ZmM3OTk0MTAyNTFk
YWI5NjUuLjMzZmY1NzA4NjViZjkyZTRkZGQxOGNkYTg4ZDE3ZmNiMDg4YzkyN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzcgQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBh
c3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MTg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRDb250YWN0Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPjo6
ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0
aG9kPjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgaW52YWxpZGF0ZV0pOgorICAgICAgICAoLVtX
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyOmRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246XSk6CisgICAg
ICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkQXV0aG9yaXplUGF5bWVudDpoYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFBheW1lbnRN
ZXRob2Q6aGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRT
ZWxlY3RTaGlwcGluZ01ldGhvZDpoYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyOmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDpoYW5kbGVyOl0pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVu
dHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXApOgorICAgICAg
ICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKToKKyAgICAgICAgKFdlYktpdDo6dG9Q
S1NoaXBwaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29t
cGxldGVQYXltZW50U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0
ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUF2
YWlsYWJsZVBheW1lbnROZXR3b3Jrcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2lv
cy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5t
bToKKwogMjAxOC0xMS0yMCAgSmVmZiBNaWxsZXIgIDxqZWZmbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV0dXJuIG51bGxwdHIgaW1tZWRpYXRlbHkgaWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0IGlu
IHRoZSBIYXNoTWFwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvU29mdExpbmtp
bmcuaCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1NvZnRMaW5raW5nLmgKaW5kZXggNmFlZWRhZTRh
NjYzMzQ1NzYwNmJhN2UxY2JlZmZmNWVhNjNjMDgyZi4uZGQ2ZTc5YmM2ZWJlNTU5NjkxOGE2MGQ5
MWE4MjZkZTFkZDhiNmZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvU29mdExp
bmtpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Tb2Z0TGlua2luZy5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMS0yMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzQwLDkgKzM0MCw5IEBACiAgICAgfSBcCiAgICAgfQogCi0jZGVmaW5lIFNPRlRf
TElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrKSBc
CisjZGVmaW5lIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChmdW5j
dGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBleHBvcnQpIFwKICAgICBuYW1lc3BhY2UgZnVuY3Rp
b25OYW1lc3BhY2UgeyBcCi0gICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KGJvb2wgaXNPcHRp
b25hbCA9IGZhbHNlKTsgXAorICAgIGV4cG9ydCB2b2lkKiBmcmFtZXdvcmsjI0xpYnJhcnkoYm9v
bCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCiAgICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KGJv
b2wgaXNPcHRpb25hbCkgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgdm9pZCogZnJhbWV3b3Jr
TGlicmFyeTsgXApAQCAtMzU2LDkgKzM1NiwxMiBAQAogICAgIH0gXAogICAgIH0KIAotI2RlZmlu
ZSBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFj
ZSwgZnJhbWV3b3JrKSBcCisjZGVmaW5lIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShm
dW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrKSBcCisgICAgU09GVF9MSU5LX0ZSQU1FV09SS19G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssICkKKwor
I2RlZmluZSBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBleHBvcnQpIFwKICAgICBuYW1lc3BhY2Ug
ZnVuY3Rpb25OYW1lc3BhY2UgeyBcCi0gICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KGJvb2wg
aXNPcHRpb25hbCA9IGZhbHNlKTsgXAorICAgIGV4cG9ydCB2b2lkKiBmcmFtZXdvcmsjI0xpYnJh
cnkoYm9vbCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCiAgICAgdm9pZCogZnJhbWV3b3JrIyNMaWJy
YXJ5KGJvb2wgaXNPcHRpb25hbCkgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgdm9pZCogZnJh
bWV3b3JrTGlicmFyeTsgXApAQCAtMzcyLDYgKzM3NSw5IEBACiAgICAgfSBcCiAgICAgfQogCisj
ZGVmaW5lIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19GT1JfU09VUkNFKGZ1bmN0aW9uTmFt
ZXNwYWNlLCBmcmFtZXdvcmspIFwKKyAgICBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCApCisKICNk
ZWZpbmUgU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1l
d29yaywgY2xhc3NOYW1lKSBcCiAgICAgQGNsYXNzIGNsYXNzTmFtZTsgXAogICAgIG5hbWVzcGFj
ZSBmdW5jdGlvbk5hbWVzcGFjZSB7IFwKQEAgLTM4MywxMSArMzg5LDExIEBACiAgICAgfSBcCiAg
ICAgfQogCi0jZGVmaW5lIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNw
YWNlLCBmcmFtZXdvcmssIGNsYXNzTmFtZSkgXAorI2RlZmluZSBTT0ZUX0xJTktfQ0xBU1NfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBjbGFzc05h
bWUsIGV4cG9ydCkgXAogICAgIEBjbGFzcyBjbGFzc05hbWU7IFwKICAgICBuYW1lc3BhY2UgZnVu
Y3Rpb25OYW1lc3BhY2UgeyBcCiAgICAgc3RhdGljIENsYXNzIGluaXQjI2NsYXNzTmFtZSgpOyBc
Ci0gICAgQ2xhc3MgKCpnZXRfIyNmcmFtZXdvcmsjI18jI2NsYXNzTmFtZSMjQ2xhc3MpKCkgPSBp
bml0IyNjbGFzc05hbWU7IFwKKyAgICBleHBvcnQgQ2xhc3MgKCpnZXRfIyNmcmFtZXdvcmsjI18j
I2NsYXNzTmFtZSMjQ2xhc3MpKCkgPSBpbml0IyNjbGFzc05hbWU7IFwKICAgICBzdGF0aWMgQ2xh
c3MgY2xhc3MjI2NsYXNzTmFtZTsgXAogICAgIFwKICAgICBzdGF0aWMgQ2xhc3MgY2xhc3NOYW1l
IyNGdW5jdGlvbigpIFwKQEAgLTQwOCw2ICs0MTQsOSBAQAogICAgIH0gXAogICAgIH0KIAorI2Rl
ZmluZSBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrLCBjbGFzc05hbWUpIFwKKyAgICBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VY
UE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBjbGFzc05hbWUsICkKKwogI2RlZmlu
ZSBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSkgXAogICAgIFdURl9FWFRFUk5fQ19CRUdJ
TiBcCiAgICAgZXh0ZXJuIGNvbnN0IHZhcmlhYmxlVHlwZSB2YXJpYWJsZU5hbWU7IFwKQEAgLTQ4
OSwxMyArNDk4LDEzIEBACiAgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWVzcGFjZTo6c29mdExp
bmsjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlck5hbWVzOyBcCiAgICAgfQogCi0j
ZGVmaW5lIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNwYWNlLCBm
cmFtZXdvcmssIGZ1bmN0aW9uTmFtZSwgcmVzdWx0VHlwZSwgcGFyYW1ldGVyRGVjbGFyYXRpb25z
LCBwYXJhbWV0ZXJOYW1lcykgXAorI2RlZmluZSBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUs
IHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMsIGV4cG9y
dCkgXAogICAgIFdURl9FWFRFUk5fQ19CRUdJTiBcCiAgICAgcmVzdWx0VHlwZSBmdW5jdGlvbk5h
bWUgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCiAgICAgV1RGX0VYVEVSTl9DX0VORCBcCiAgICAg
bmFtZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAogICAgIHN0YXRpYyByZXN1bHRUeXBlIGlu
aXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9uczsgXAotICAg
IHJlc3VsdFR5cGUgKCpzb2Z0TGluayMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUpIHBhcmFtZXRl
ckRlY2xhcmF0aW9ucyA9IGluaXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lOyBcCisgICAgZXhw
b3J0IHJlc3VsdFR5cGUoKnNvZnRMaW5rIyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSkgcGFyYW1l
dGVyRGVjbGFyYXRpb25zID0gaW5pdCMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWU7IFwKICAgICBz
dGF0aWMgcmVzdWx0VHlwZSBpbml0IyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSBwYXJhbWV0ZXJE
ZWNsYXJhdGlvbnMgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9u
Y2U7IFwKQEAgLTUwNyw2ICs1MTYsOSBAQAogICAgIH0gXAogICAgIH0KIAorI2RlZmluZSBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBm
dW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVy
TmFtZXMpIFwKKyAgICBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChm
dW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBh
cmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMsICkKKwogI2RlZmluZSBTT0ZUX0xJ
TktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFy
YW1ldGVyTmFtZXMpIFwKICAgICBXVEZfRVhURVJOX0NfQkVHSU4gXAogICAgIHJlc3VsdFR5cGUg
ZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9uczsgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29h
Lm1tCmluZGV4IDBiMDIwNGM4NmQ4YTM2YTVkNGE3NTI5OGQwZjQxYTM0NDYxNTAzZWUuLmNjOTdm
ZDVlMWY2MjM0NTk5ZWI4ODRjYTgxODdmYjJjZDA4NTdjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRhY3RDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29j
b2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbXBvcnQgIkFwcGxlUGF5UGF5bWVudENvbnRh
Y3QuaCIKICNpbXBvcnQgPENvbnRhY3RzL0NvbnRhY3RzLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4K
ICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCkBAIC0zOCwxNCArMzgsNiBAQCBTT0ZUX0xJTktfRlJBTUVXT1JLKENvbnRhY3Rz
KQogU09GVF9MSU5LX0NMQVNTKENvbnRhY3RzLCBDTk11dGFibGVQb3N0YWxBZGRyZXNzKQogU09G
VF9MSU5LX0NMQVNTKENvbnRhY3RzLCBDTlBob25lTnVtYmVyKQogCi0jaWYgUExBVEZPUk0oTUFD
KQotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFBhc3NLaXQpCi0jZWxzZQotU09GVF9MSU5L
X0ZSQU1FV09SSyhQYXNzS2l0KQotI2VuZGlmCi0KLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQ
S0NvbnRhY3QpCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE5TU3RyaW5nICpzdWJM
b2NhbGl0eShDTlBvc3RhbEFkZHJlc3MgKmFkZHJlc3MpCkBAIC0xMDYsNyArOTgsNyBAQCBzdGF0
aWMgdm9pZCBzZXRTdWJBZG1pbmlzdHJhdGl2ZUFyZWEoQ05NdXRhYmxlUG9zdGFsQWRkcmVzcyAq
YWRkcmVzcywgTlNTdHJpbmcgKgogCiBzdGF0aWMgUmV0YWluUHRyPFBLQ29udGFjdD4gY29udmVy
dCh1bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBBcHBsZVBheVBheW1lbnRDb250YWN0JiBjb250YWN0
KQogewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS0NvbnRhY3RJbnN0YW5jZSgp
IGluaXRdKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS0NvbnRhY3RJ
bnN0YW5jZSgpIGluaXRdKTsKIAogICAgIE5TU3RyaW5nICpmYW1pbHlOYW1lID0gbmlsOwogICAg
IE5TU3RyaW5nICpwaG9uZXRpY0ZhbWlseU5hbWUgPSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNo
YW50U2Vzc2lvbkNvY29hLm1tCmluZGV4IDgxYzhjY2I3MzhhN2Y5MzU0MTIxYzhhMjhkNjc5MzVj
MzEyNzZjYWIuLmZjMzZjODk1MzE0OWY0MzMwYmQ5NTFhNmFlYzIyYjhlZmIyZTBkYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNo
YW50U2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
Y29jb2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDE2ICsyOSw3IEBACiAjaWYg
RU5BQkxFKEFQUExFX1BBWSkKIAogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNPTk9iamVjdC5o
PgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+Ci0jaW1wb3J0IDx3dGYvU29m
dExpbmtpbmcuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElOS19QUklWQVRFX0ZSQU1F
V09SSyhQYXNzS2l0KQotI2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkKLSNlbmRp
ZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uKQor
I2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTUzLDcgKzQ0LDcgQEAgc3RkOjpvcHRpb25hbDxQYXltZW50TWVyY2hhbnRTZXNz
aW9uPiBQYXltZW50TWVyY2hhbnRTZXNzaW9uOjpmcm9tSlMoSlNDOjpFeGVjU3QKICAgICBpZiAo
IWRpY3Rpb25hcnkgfHwgIVtkaWN0aW9uYXJ5IGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBj
bGFzc11dKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBwa1BheW1l
bnRNZXJjaGFudFNlc3Npb24gPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudE1lcmNoYW50U2Vzc2lv
bkluc3RhbmNlKCkgaW5pdFdpdGhEaWN0aW9uYXJ5OmRpY3Rpb25hcnldKTsKKyAgICBhdXRvIHBr
UGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRNZXJj
aGFudFNlc3Npb25JbnN0YW5jZSgpIGluaXRXaXRoRGljdGlvbmFyeTpkaWN0aW9uYXJ5XSk7CiAK
ICAgICByZXR1cm4gUGF5bWVudE1lcmNoYW50U2Vzc2lvbihwa1BheW1lbnRNZXJjaGFudFNlc3Np
b24uZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDIxNTUyZGY3Zjc1ZmM1MzliYjg3NTZkMDg0OWI1NGQ2ODY5NTU0
MDkuLjc3ZjI0NjczZTUxNzM2OTdmNWNiY2U3ZWMzYTQ1MjE2Y2Y0ODMxMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMSw2
ICsxMzEsOCBAQAogCQlBMTE3NUI1ODFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFBy
b3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMTc1QjU2MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwICov
OyB9OwogCQlBMTE3NUI1QTFGNkI0QTg0MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE3NUI1OTFGNkI0
QTg0MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggKi87IH07CiAJCUExRjU1RENGMUY1NTI4
RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJ
LmggKi87IH07CisJCUExRjYzQzlGMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjYzQzlE
MjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLzsgfTsKKwkJQTFGNjNDQTAy
MUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjYzQzlFMjFBNERCRjcwMDZGQjQzQiAvKiBQ
YXNzS2l0U29mdExpbmsubW0gKi87IH07CiAJCUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBL
aWxsUmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIy
MUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJp
bmcuY3BwICovOyB9OwogCQlBMzBENDEyNTFGMEREMTJEMDBCNzE5NTQgLyogS2lsbFJpbmdNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzBENDEy
NDFGMEREMTJEMDBCNzE5NTQgLyogS2lsbFJpbmdNYWMubW0gKi87IH07CkBAIC0yODcsNiArMjg5
LDggQEAKIAkJQTExNzVCNTYxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE3NUI1OTFGNkI0QTg0MDBDNEI5RjAgLyogTlNT
Y3JvbGxWaWV3U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TU2Nyb2xsVmlld1NQSS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMUY1NURDRTFGNTUyOEVDMDBFREI3NUYgLyogTWV0YWRh
dGFTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0YWRhdGFTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTFGNjNDOUQyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQYXNzS2l0U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTFGNjNDOUUyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3NLaXRTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtpbGxSaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUEzMEQ0MTFGMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLaWxsUmluZy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTI0MUYwREQxMkQwMEI3MTk1NCAvKiBLaWxs
UmluZ01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEtpbGxS
aW5nTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTYwLDYgKzU2NCw4IEBA
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUY0NDI5MTY2MUZBNTI3
MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1tICovLAorCQkJCUExRjYzQzlE
MjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLywKKwkJCQlBMUY2M0M5RTIx
QTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tICovLAogCQkJKTsKIAkJCXBhdGgg
PSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03MjksNiArNzM1LDcgQEAK
IAkJCQkwQzc3ODU5RDFGNDUxMzBGMDBGNEVCQjYgLyogTlNXaW5kb3dTUEkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU3MEFCOEY5MjBBRjZFM0QwMEI4QkU4NyAvKiBOU1hQQ0Nvbm5lY3Rpb25TUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBDNUFGOTFGMUY0M0E0QzcwMDJFQUMwMiAvKiBPcGVuR0xF
U1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFGNjNDOUYyMUE0REJGNzAwNkZCNDNCIC8qIFBh
c3NLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNTUxRjNCRUI0OTAwREJD
MzE3IC8qIFBhc3NLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTlFMUY0NTEzMEYw
MEY0RUJCNiAvKiBQSVBTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMTc1QjRFMUY2QjMzNzMw
MEM0QjlGMCAvKiBQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovLApAQCAtODU0LDYgKzg2MSw3IEBA
CiAJCQkJQTMwRDQxMjUxRjBERDEyRDAwQjcxOTU0IC8qIEtpbGxSaW5nTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUM0ODc2RDgxRjhEN0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMENGOTlDQTQxRjczNjM3NTAwN0VFNzkzIC8qIE1lZGlhVGltZUFWRm91
bmRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUY2M0NBMDIxQTREQkY3MDA2RkI0M0Ig
LyogUGFzc0tpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTExNzVCNEYxRjZCMzM3
MzAwQzRCOUYwIC8qIFBvcHVwTWVudS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUEzQzY2Q0RDMUY0
NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZF
NTIxRjNEMURDNTAwOUMxNEIxIC8qIFNsZWVwRGlzYWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5o
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42NjVlN2JjYWU2MWRhZTlkZGVjNTNjMjVkYWRhOGYwZDJhNTU2M2U3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaApA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9S
TShDT0NPQSkKKworI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CisjaW1wb3J0
IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKFBB
TCwgUGFzc0tpdCkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0
LCBQS0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1Jl
Y3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVudEJ1dHRvblR5cGUgdHlwZSwgUEtQ
YXltZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICpsYW5ndWFnZUNvZGUpLCAoY29udGV4
dCwgZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFuZ3VhZ2VDb2RlKSkKKworU09GVF9M
SU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3QpCitTT0ZUX0xJTktf
Q0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGFzc0xpYnJhcnkpCitTT0ZUX0xJTktf
Q0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5bWVudCkKK1NPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1l
bnRNZXRob2QpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5
bWVudE1lcmNoYW50U2Vzc2lvbikKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50UmVxdWVzdCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwg
UGFzc0tpdCwgUEtQYXltZW50U3VtbWFyeUl0ZW0pCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURF
UihQQUwsIFBhc3NLaXQsIFBLU2hpcHBpbmdNZXRob2QpCisKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMCkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwg
UEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9tYWluQW5kU291cmNlQXBw
bGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwg
TlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgUEtDYW5NYWtl
UGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmllciwgZG9tYWluLCBzb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNvbXBsZXRpb24pKQorU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhN
ZXJjaGFudElkZW50aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwg
TlNTdHJpbmcgKmRvbWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24p
LCAoaWRlbnRpZmllciwgZG9tYWluLCBjb21wbGV0aW9uKSkKKworU09GVF9MSU5LX0NMQVNTX0ZP
Ul9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0KQorU09G
VF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0UGF5
bWVudE1ldGhvZFVwZGF0ZSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tp
dCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSkKK1NPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9k
VXBkYXRlKQorI2VuZGlmCisKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjMy
NWMxNTViYzVjYzJiYjkxYWM4YjAwZDYwMjA5OGMzMjEwODE3YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tCkBAIC0wLDAg
KzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JN
KENPQ09BKQorCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQg
PHd0Zi9Tb2Z0TGlua2luZy5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorU09GVF9MSU5LX1BSSVZB
VEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQQUxfRVhQ
T1JUKQorI2Vsc2UKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIFBhc3NLaXQsIFBBTF9FWFBPUlQpCisjZW5kaWYKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoUEFMLCBQYXNzS2l0LCBQS0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29u
dGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVu
dEJ1dHRvblR5cGUgdHlwZSwgUEtQYXltZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICps
YW5ndWFnZUNvZGUpLCAoY29udGV4dCwgZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFu
Z3VhZ2VDb2RlKSkKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFM
LCBQYXNzS2l0LCBQS0NvbnRhY3QsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGFzc0xpYnJhcnksIFBBTF9FWFBPUlQp
CitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
UGF5bWVudCwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLCBQ
QUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQ
YXNzS2l0LCBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24sIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktf
Q0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudE1ldGhv
ZCwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdCwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFT
U19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U3VtbWFyeUl0
ZW0sIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIFBhc3NLaXQsIFBLU2hpcHBpbmdNZXRob2QsIFBBTF9FWFBPUlQpCisKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTMwMCkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlm
aWVyRG9tYWluQW5kU291cmNlQXBwbGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmll
ciwgTlNTdHJpbmcgKmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllciwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRl
bnRpZmllciwgZG9tYWluLCBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNv
bXBsZXRpb24pLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50
aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRv
bWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmll
ciwgZG9tYWluLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKKworU09GVF9MSU5LX0NMQVNTX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9u
UmVzdWx0LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBP
UlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSwgUEFM
X0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSwgUEFMX0VYUE9SVCkK
K1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQ
YXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlLCBQQUxfRVhQT1JUKQorI2VuZGlmCisK
KyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NvY29hL1Bhc3NLaXRTUEkuaAppbmRleCBiNWU1OTMwMzI3MWZiNTgxYWIzNDlhYjk1Zjc0MzIw
OTE0OGFhMjU4Li41Mjc5ZTg3MWE3ZmZjZGU0MGEzN2JiZjM2OTc2NmZjZGRjZDU1MDkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCkBAIC0yMjUs
NyArMjI1LDcgQEAgdHlwZWRlZiBOU1N0cmluZyAqIFBLUGF5bWVudE5ldHdvcmsgTlNfRVhURU5T
SUJMRV9TVFJJTkdfRU5VTTsKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKLSNlbmRpZgorI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIApAQCAtMjYx
LDcgKzI2MSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBQS1BheW1lbnRSZXF1ZXN0
QVBJVHlwZSkgewogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAotI2VuZGlmCisjZW5kaWYgLy8g
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShBUFBM
RV9JTlRFUk5BTF9TREspCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBQS1BheW1lbnRCdXR0
b25TdHlsZSkgewpAQCAtMzI0LDQgKzMyNCw2IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU1N0cmluZyAqQ1REYXRhQ29ubmVjdGlvblNl
cnZpY2VUeXBlOwogQGVuZAogCit0eXBlZGVmIHZvaWQgKF5QS0Nhbk1ha2VQYXltZW50c0NvbXBs
ZXRpb24pKEJPT0wgaXNWYWxpZCwgTlNFcnJvciAqKTsKKwogTlNfQVNTVU1FX05PTk5VTExfRU5E
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBhMTQ4MGZiYTZmOTQwYTZiNjg3ZDNjM2U5MGYw
YTUxZjEzMWY3NzFiLi42NWViYzg0MzY2MjAxZDU4OWY3NGE1YTVmZjU0OTgxM2JlZmJhNzA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTU4OCw3ICs1ODgsNyBAQCBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5jcHAKIAogICAgIE1vZHVs
ZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCiAgICAgTW9kdWxlcy9hcHBsZXBheS9j
b2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tCi0gICAgTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9Q
YXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0gQG5vLXVuaWZ5CisgICAgTW9kdWxlcy9hcHBs
ZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0KICAgICBNb2R1bGVzL2Fw
cGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQogCiAgICAgTW9kdWxlcy9hcHBsZXBh
eS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbQppbmRleCBiNGFhZjY0MjFkMmI2ZDNj
NWIzMGRlYWE3NGUzZTcyNjMyOWQyYWNkLi5jYjYxMDgyOTJhNDg5ODZjMTljNzhiMTE0NDBhMTU3
NzJhMGVhOTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2Nv
YS5tbQpAQCAtMzIsMTYgKzMyLDcgQEAKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKLSNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oPgotI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5n
Lmg+Ci0KLSNpZiBQTEFURk9STShNQUMpCi1TT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoUGFz
c0tpdCk7Ci0jZWxzZQotU09GVF9MSU5LX0ZSQU1FV09SSyhQYXNzS2l0KTsKLSNlbmRpZgotCi1T
T0ZUX0xJTktfTUFZX0ZBSUwoUGFzc0tpdCwgUEtEcmF3QXBwbGVQYXlCdXR0b24sIHZvaWQsIChD
R0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IGRyYXdSZWN0LCBDR0Zsb2F0IHNjYWxlLCBQS1Bh
eW1lbnRCdXR0b25UeXBlIHR5cGUsIFBLUGF5bWVudEJ1dHRvblN0eWxlIHN0eWxlLCBOU1N0cmlu
ZyAqbGFuZ3VhZ2VDb2RlKSwgKGNvbnRleHQsIGRyYXdSZWN0LCBzY2FsZSwgdHlwZSwgc3R5bGUs
IGxhbmd1YWdlQ29kZSkpOworI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgog
CiAjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKIApAQCAtMTA4LDkgKzk5LDYgQEAgc3RhdGlj
IFBLUGF5bWVudEJ1dHRvblR5cGUgdG9QS1BheW1lbnRCdXR0b25UeXBlKEFwcGxlUGF5QnV0dG9u
VHlwZSB0eXBlKQogCiBib29sIFJlbmRlclRoZW1lQ29jb2E6OnBhaW50QXBwbGVQYXlCdXR0b24o
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IEludFJlY3QmIHBhaW50UmVjdCkKIHsKLSAgICBpZiAoIWNhbkxvYWRQS0RyYXdBcHBs
ZVBheUJ1dHRvbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBwYWlu
dEluZm8uY29udGV4dCgpLnNldFNob3VsZFNtb290aEZvbnRzKHRydWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bQppbmRleCAzNWY5OGIxMWI3ZjFhOTIxMjlhZWRiNDIxMjJhYjBiODU5MDc5MjI1Li5kMGUzNzQ1
MjA2ZGQ5OGFiNzRiNmY0ZDE1NWI4ODI3NmRhNTg2ZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAt
MzAsMjAgKzMwLDggQEAKIAogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCA8V2Vi
Q29yZS9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgorI2ltcG9ydCA8cGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJT
UEkuaD4KLSNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oPgotI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+Ci0KLSNpZiBQTEFURk9STShNQUMpCi1TT0ZUX0xJTktfUFJJVkFURV9G
UkFNRVdPUksoUGFzc0tpdCkKLSNlbHNlCi1TT0ZUX0xJTktfRlJBTUVXT1JLKFBhc3NLaXQpCi0j
ZW5kaWYKLQotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLQ29udGFjdCk7Ci1TT0ZUX0xJTktf
Q0xBU1MoUGFzc0tpdCwgUEtQYXltZW50KTsKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1Bh
eW1lbnRNZXRob2QpOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudE1lcmNoYW50
U2Vzc2lvbik7CiAKIG5hbWVzcGFjZSBJUEMgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBA
IC02Nyw3ICs1NSw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Pjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlBheW1lbnQmCiAgICAgYXV0byBkYXRhID0g
YWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weTpjb25zdF9jYXN0PHZv
aWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpKSBsZW5n
dGg6ZGF0YVJlZmVyZW5jZS5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7CiAgICAgYXV0byB1bmFy
Y2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKGRhdGEuZ2V0KCkpOwogICAgIEB0cnkg
ewotICAgICAgICBQS1BheW1lbnQgKnBrUGF5bWVudCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVj
dE9mQ2xhc3M6Z2V0UEtQYXltZW50Q2xhc3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2Jq
ZWN0S2V5XTsKKyAgICAgICAgUEtQYXltZW50ICpwa1BheW1lbnQgPSBbdW5hcmNoaXZlciBkZWNv
ZGVPYmplY3RPZkNsYXNzOlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50Q2xhc3MoKSBmb3JLZXk6
TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKICAgICAgICAgcGF5bWVudCA9IFBheW1lbnQo
cGtQYXltZW50KTsKICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewogICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgUEtQYXltZW50OiAlQCIsIGV4Y2VwdGlv
bik7CkBAIC0xMTgsNyArMTA2LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1l
bnRDb250YWN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlAKICAgICBhdXRv
IGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0
X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhUmVmZXJlbmNlLmRhdGEo
KSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsKICAgICBh
dXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoZGF0YS5nZXQoKSk7CiAg
ICAgQHRyeSB7Ci0gICAgICAgIFBLQ29udGFjdCAqcGtDb250YWN0ID0gW3VuYXJjaGl2ZXIgZGVj
b2RlT2JqZWN0T2ZDbGFzczpnZXRQS0NvbnRhY3RDbGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2
ZVJvb3RPYmplY3RLZXldOworICAgICAgICBQS0NvbnRhY3QgKnBrQ29udGFjdCA9IFt1bmFyY2hp
dmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6UEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RDbGFzcygp
IGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwogICAgICAgICBwYXltZW50Q29u
dGFjdCA9IFBheW1lbnRDb250YWN0KHBrQ29udGFjdCk7CiAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0
aW9uICpleGNlcHRpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIFBL
Q29udGFjdDogJUAiLCBleGNlcHRpb24pOwpAQCAtMTc1LDcgKzE2Myw3IEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFdlCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5p
dFdpdGhCeXRlc05vQ29weTpjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lk
Kj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpKSBsZW5ndGg6ZGF0YVJlZmVyZW5jZS5zaXplKCkgZnJl
ZVdoZW5Eb25lOk5PXSk7CiAgICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZy
b21EYXRhKGRhdGEuZ2V0KCkpOwogICAgIEB0cnkgewotICAgICAgICBQS1BheW1lbnRNZXJjaGFu
dFNlc3Npb24gKnBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IFt1bmFyY2hpdmVyIGRlY29kZU9i
amVjdE9mQ2xhc3M6Z2V0UEtQYXltZW50TWVyY2hhbnRTZXNzaW9uQ2xhc3MoKSBmb3JLZXk6TlNL
ZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKKyAgICAgICAgUEtQYXltZW50TWVyY2hhbnRTZXNz
aW9uICpwa1BheW1lbnRNZXJjaGFudFNlc3Npb24gPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RP
ZkNsYXNzOlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uQ2xhc3MoKSBm
b3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKICAgICAgICAgcGF5bWVudE1lcmNo
YW50U2Vzc2lvbiA9IFBheW1lbnRNZXJjaGFudFNlc3Npb24ocGtQYXltZW50TWVyY2hhbnRTZXNz
aW9uKTsKICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewogICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uOiAlQCIs
IGV4Y2VwdGlvbik7CkBAIC0yMDUsNyArMTkzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlBheW1lbnRNZXRob2Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6UGEK
ICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9D
b3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhUmVmZXJl
bmNlLmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9d
KTsKICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoZGF0YS5n
ZXQoKSk7CiAgICAgQHRyeSB7Ci0gICAgICAgIFBLUGF5bWVudE1ldGhvZCAqcGtQYXltZW50TWV0
aG9kID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRQS1BheW1lbnRNZXRob2RD
bGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOworICAgICAgICBQS1Bh
eW1lbnRNZXRob2QgKnBrUGF5bWVudE1ldGhvZCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9m
Q2xhc3M6UEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRNZXRob2RDbGFzcygpIGZvcktleTpOU0tl
eWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwogICAgICAgICBwYXltZW50TWV0aG9kID0gUGF5bWVu
dE1ldGhvZChwa1BheW1lbnRNZXRob2QpOwogICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhj
ZXB0aW9uKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBQS1BheW1lbnQ6
ICVAIiwgZXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Fw
cGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eUNvY29hLm1tCmluZGV4IGRiMmI2YzhiZDIwZmNjZjAwOTQ5NDIwNWQyMTFkY2M0MTkyMzgxNzgu
LjFjMzliOWM0MmYxOGM0YzhlZDUyMzg5ZWJjMmRmODA3ZDcyNjgwZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29j
b2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQpAQCAtMzMsMjYgKzMzLDEyIEBA
CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgotI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvUGFz
c0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9S
dW5Mb29wLmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1B
QykKLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChQYXNzS2l0KQotI2Vsc2UK
LVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkKLSNlbmRpZgotCi1TT0ZUX0xJTktfQ0xBU1Mo
UGFzc0tpdCwgUEtQYXNzTGlicmFyeSk7Ci1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0
LCBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24pOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBL
UGF5bWVudFJlcXVlc3QpOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudFN1bW1h
cnlJdGVtKTsKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1NoaXBwaW5nTWV0aG9kKTsKLQot
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTEwMDAwKQotU09GVF9MSU5LX0ZSQU1FV09SSyhDb250YWN0cykKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMzAwKQorU09GVF9MSU5LX0ZSQU1FV09SSyhDb250YWN0
cyk7CiBTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N0cmVldEtl
eSwgTlNTdHJpbmcgKik7CiBTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRk
cmVzc1N1YkxvY2FsaXR5S2V5LCBOU1N0cmluZyAqKTsKIFNPRlRfTElOS19DT05TVEFOVChDb250
YWN0cywgQ05Qb3N0YWxBZGRyZXNzQ2l0eUtleSwgTlNTdHJpbmcgKik7CkBAIC02MSwzMCArNDcs
MTcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NTdGF0ZUtl
eSwgTlNTdHJpbmcgKik7CiBTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRk
cmVzc1Bvc3RhbENvZGVLZXksIE5TU3RyaW5nICopOwogU09GVF9MSU5LX0NPTlNUQU5UKENvbnRh
Y3RzLCBDTlBvc3RhbEFkZHJlc3NDb3VudHJ5S2V5LCBOU1N0cmluZyAqKTsKIFNPRlRfTElOS19D
T05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzSVNPQ291bnRyeUNvZGVLZXksIE5TU3Ry
aW5nICopOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25S
ZXN1bHQpCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFBheW1lbnRN
ZXRob2RVcGRhdGUpCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFNo
aXBwaW5nQ29udGFjdFVwZGF0ZSkKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRS
ZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUpCi1TT0ZUX0xJTktfQ09OU1RBTlQoUGFzc0tpdCwg
UEtQYXltZW50RXJyb3JEb21haW4sIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBh
c3NLaXQsIFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcywgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJ
TktfQ09OU1RBTlQoUGFzc0tpdCwgUEtDb250YWN0RmllbGRFbWFpbEFkZHJlc3MsIE5TU3RyaW5n
ICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmVOdW1i
ZXIsIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLQ29udGFjdEZp
ZWxkTmFtZSwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoUGFzc0tpdCwgUEtDb250
YWN0RmllbGRQaG9uZXRpY05hbWUsIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBh
c3NLaXQsIFBLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNlckluZm9LZXksIE5TU3RyaW5nICop
OwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLUGF5bWVudEVycm9yUG9zdGFsQWRkcmVz
c1VzZXJJbmZvS2V5LCBOU1N0cmluZyAqKTsKLSNlbmRpZgogCi10eXBlZGVmIHZvaWQgKF5QS0Nh
bk1ha2VQYXltZW50c0NvbXBsZXRpb24pKEJPT0wgaXNWYWxpZCwgTlNFcnJvciAqZXJyb3IpOwot
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTEwMDAwKQotZXh0ZXJuICJDIiB2b2lkIFBLQ2FuTWFrZVBheW1lbnRz
V2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKE5TU3RyaW5n
ICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBOU1N0cmluZyAqc291cmNlQXBwbGljYXRp
b25TZWNvbmRhcnlJZGVudGlmaWVyLCBQS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29tcGxl
dGlvbik7Ci1TT0ZUX0xJTktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJLaXQsIFBh
c3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNv
dXJjZUFwcGxpY2F0aW9uLCB2b2lkLCAoTlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpk
b21haW4sIE5TU3RyaW5nICpzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIFBL
Q2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbiBjb21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFp
biwgc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBjb21wbGV0aW9uKSk7Ci0j
ZWxzZQotZXh0ZXJuICJDIiB2b2lkIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRp
ZmllckFuZERvbWFpbihOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwgUEtD
YW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pOwotU09GVF9MSU5LX0ZVTkNUSU9O
X01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViS2l0LCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dp
dGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmll
ciwgTlNTdHJpbmcgKmRvbWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRp
b24pLCAoaWRlbnRpZmllciwgZG9tYWluLCBjb21wbGV0aW9uKSk7CitTT0ZUX0xJTktfQ09OU1RB
TlQoUEFMOjpQYXNzS2l0LCBQS1BheW1lbnRFcnJvckRvbWFpbiwgTlNTdHJpbmcgKik7CitTT0ZU
X0xJTktfQ09OU1RBTlQoUEFMOjpQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3Ms
IE5TU3RyaW5nICopOworU09GVF9MSU5LX0NPTlNUQU5UKFBBTDo6UGFzc0tpdCwgUEtDb250YWN0
RmllbGRFbWFpbEFkZHJlc3MsIE5TU3RyaW5nICopOworU09GVF9MSU5LX0NPTlNUQU5UKFBBTDo6
UGFzc0tpdCwgUEtDb250YWN0RmllbGRQaG9uZU51bWJlciwgTlNTdHJpbmcgKik7CitTT0ZUX0xJ
TktfQ09OU1RBTlQoUEFMOjpQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZE5hbWUsIE5TU3RyaW5nICop
OworU09GVF9MSU5LX0NPTlNUQU5UKFBBTDo6UGFzc0tpdCwgUEtDb250YWN0RmllbGRQaG9uZXRp
Y05hbWUsIE5TU3RyaW5nICopOworU09GVF9MSU5LX0NPTlNUQU5UKFBBTDo6UGFzc0tpdCwgUEtQ
YXltZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5mb0tleSwgTlNTdHJpbmcgKik7CitTT0ZUX0xJ
TktfQ09OU1RBTlQoUEFMOjpQYXNzS2l0LCBQS1BheW1lbnRFcnJvclBvc3RhbEFkZHJlc3NVc2Vy
SW5mb0tleSwgTlNTdHJpbmcgKik7CiAjZW5kaWYKIAotCiBAaW1wbGVtZW50YXRpb24gV0tQYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUKIAogLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoUGF5bWVudENvb3JkaW5hdG9yUHJveHk6KFdlYktpdDo6V2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkmKXdlYlBheW1lbnRDb29yZGluYXRvclByb3h5CkBAIC0xMDIsNyArNzUsNyBA
QCAtICh2b2lkKWludmFsaWRhdGUKICAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgPSBu
dWxscHRyOwogICAgIGlmIChfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKSB7CiAjaWYgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAp
IHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMTAwMDApCi0gICAgICAgIF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24oYWRv
cHROUyhbYWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0
aFN0YXR1czpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBlcnJvcnM6QFsgXV0p
LmdldCgpKTsKKyAgICAgICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihhZG9wdE5TKFtQ
QUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhT
dGF0dXM6UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF1dKS5n
ZXQoKSk7CiAjZWxzZQogICAgICAgICBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKFBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlKTsKICNlbmRpZgpAQCAtMTE5LDcgKzkyLDcg
QEAgLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIKICAgICBBU1NFUlQoIV9zZXNzaW9uQmxvY2spOwog
ICAgIF9zZXNzaW9uQmxvY2sgPSBzZXNzaW9uQmxvY2s7CiAKLSAgICBbZ2V0UEtQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSBwYXltZW50U2VydmljZXNNZXJjaGFudFVS
TDpeKE5TVVJMICptZXJjaGFudFVSTCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBbUEFMOjpnZXRf
UGFzc0tpdF9QS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJDbGFzcygpIHBheW1l
bnRTZXJ2aWNlc01lcmNoYW50VVJMOl4oTlNVUkwgKm1lcmNoYW50VVJMLCBOU0Vycm9yICplcnJv
cikgewogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBLQ2FuTWFr
ZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIsIGVycm9y
KTsKIApAQCAtMTU1LDcgKzEyOCw3IEBAIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyCiB7CiAjaWYg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEz
MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMTAwMDApCiAgICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkp
IHsKLSAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1dGhvcml6YXRp
b25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOlBLUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXNGYWlsdXJlIGVycm9yczpAWyBdXSkuZ2V0KCkpOworICAgICAgICBjb21wbGV0aW9uKGFk
b3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBp
bml0V2l0aFN0YXR1czpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBlcnJvcnM6
QFsgXV0pLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTcwLDcgKzE0Myw3
IEBAIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyCiB7CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAg
ICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlv
bihhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFu
Y2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKKyAgICAgICAg
Y29tcGxldGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRo
b2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpAWyBdXSkuZ2V0
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xODMsNyArMTU2LDcgQEAgLSAodm9p
ZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIKIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBk
aWRTZWxlY3RTaGlwcGluZ01ldGhvZDooUEtTaGlwcGluZ01ldGhvZCAqKXNoaXBwaW5nTWV0aG9k
IGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSAq
dXBkYXRlKSljb21wbGV0aW9uIHsKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAgICBpZiAoIV93
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMo
W2FsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0
V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKKyAgICAgICAgY29tcGxldGlv
bihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRl
SW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTk3LDcgKzE3MCw3IEBAIC0gKHZvaWQpcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyCiB7CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAgICAgaWYgKCFfd2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BL
UGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoRXJy
b3JzOkBbIF0gcGF5bWVudFN1bW1hcnlJdGVtczpAWyBdIHNoaXBwaW5nTWV0aG9kczpAWyBdXSku
Z2V0KCkpOworICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRS
ZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczpAWyBd
IHBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXSBzaGlwcGluZ01ldGhvZHM6QFsgXV0pLmdldCgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjk4LDcgKzI3MSw3IEBAIGJvb2wgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzKCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKLSAgICByZXR1cm4gW2dldFBLUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckNsYXNzKCkgY2FuTWFrZVBheW1lbnRzXTsKKyAgICByZXR1cm4g
W1BBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xh
c3MoKSBjYW5NYWtlUGF5bWVudHNdOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYg
bWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rp
b248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0zMTEsMTQgKzI4NCw3IEBA
IHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRz
V2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyCiAjZW5kaWYKIAogI2lmIChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAw
KQotICAgIGlmICghY2FuTG9hZF9QYXNzS2l0X1BLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50
SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKCkpIHsKLSAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAg
ICAgIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc29mdExpbmtfUGFzc0tpdF9Q
S0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBs
aWNhdGlvbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1fd2ViUGFnZVByb3h5LnBy
b2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5zb3VyY2VBcHBsaWNhdGlvblNl
Y29uZGFyeUlkZW50aWZpZXIoKSwgQmxvY2tQdHI8dm9pZCAoQk9PTCwgTlNFcnJvciAqKT46OmZy
b21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oQk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKKyAgICBQ
S0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBs
aWNhdGlvbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1fd2ViUGFnZVByb3h5LnBy
b2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5zb3VyY2VBcHBsaWNhdGlvblNl
Y29uZGFyeUlkZW50aWZpZXIoKSwgQmxvY2tQdHI8dm9pZChCT09MLCBOU0Vycm9yICopPjo6ZnJv
bUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShCT09MIGNhbk1ha2VQYXltZW50cywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAg
ICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBLQ2FuTWFrZVBheW1lbnRzV2l0
aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIsIGVycm9yKTsKIApAQCAtMzU0
LDcgKzMyMCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtT3Bl
blBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50CiAgICAgfQogI2VuZGlmCiAKLSAg
ICBhdXRvIHBhc3NMaWJyYXJ5ID0gYWRvcHROUyhbYWxsb2NQS1Bhc3NMaWJyYXJ5SW5zdGFuY2Uo
KSBpbml0XSk7CisgICAgYXV0byBwYXNzTGlicmFyeSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1Bh
c3NMaWJyYXJ5SW5zdGFuY2UoKSBpbml0XSk7CiAgICAgW3Bhc3NMaWJyYXJ5IG9wZW5QYXltZW50
U2V0dXBGb3JNZXJjaGFudElkZW50aWZpZXI6bWVyY2hhbnRJZGVudGlmaWVyIGRvbWFpbjpkb21h
aW5OYW1lIGNvbXBsZXRpb246QmxvY2tQdHI8dm9pZCAoQk9PTCk+Ojpmcm9tQ2FsbGFibGUoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wgcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCByZXN1bHRdIHsKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CkBAIC00MTgsNyArMzg0LDcgQEAgc3RhdGlj
IE5TRGVjaW1hbE51bWJlciAqdG9EZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQog
CiBzdGF0aWMgUmV0YWluUHRyPFBLUGF5bWVudFN1bW1hcnlJdGVtPiB0b1BLUGF5bWVudFN1bW1h
cnlJdGVtKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5l
SXRlbSYgbGluZUl0ZW0pCiB7Ci0gICAgcmV0dXJuIFtnZXRQS1BheW1lbnRTdW1tYXJ5SXRlbUNs
YXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6bGluZUl0ZW0ubGFiZWwgYW1vdW50OnRvRGVjaW1h
bE51bWJlcihsaW5lSXRlbS5hbW91bnQpIHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUo
bGluZUl0ZW0udHlwZSldOworICAgIHJldHVybiBbUEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRT
dW1tYXJ5SXRlbUNsYXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6bGluZUl0ZW0ubGFiZWwgYW1v
dW50OnRvRGVjaW1hbE51bWJlcihsaW5lSXRlbS5hbW91bnQpIHR5cGU6dG9QS1BheW1lbnRTdW1t
YXJ5SXRlbVR5cGUobGluZUl0ZW0udHlwZSldOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPE5TQXJy
YXk+IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyYgdG90YWxBbmRMaW5lSXRlbXMpCkBA
IC00NzcsNyArNDQzLDcgQEAgc3RhdGljIFBLU2hpcHBpbmdUeXBlIHRvUEtTaGlwcGluZ1R5cGUo
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlMKIAogc3RhdGljIFJldGFp
blB0cjxQS1NoaXBwaW5nTWV0aG9kPiB0b1BLU2hpcHBpbmdNZXRob2QoY29uc3QgV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kJiBzaGlwcGluZ01l
dGhvZCkKIHsKLSAgICBSZXRhaW5QdHI8UEtTaGlwcGluZ01ldGhvZD4gcmVzdWx0ID0gW2dldFBL
U2hpcHBpbmdNZXRob2RDbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOnNoaXBwaW5nTWV0aG9k
LmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIoc2hpcHBpbmdNZXRob2QuYW1vdW50KV07Cisg
ICAgUmV0YWluUHRyPFBLU2hpcHBpbmdNZXRob2Q+IHJlc3VsdCA9IFtQQUw6OmdldF9QYXNzS2l0
X1BLU2hpcHBpbmdNZXRob2RDbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOnNoaXBwaW5nTWV0
aG9kLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIoc2hpcHBpbmdNZXRob2QuYW1vdW50KV07
CiAgICAgW3Jlc3VsdCBzZXRJZGVudGlmaWVyOnNoaXBwaW5nTWV0aG9kLmlkZW50aWZpZXJdOwog
ICAgIFtyZXN1bHQgc2V0RGV0YWlsOnNoaXBwaW5nTWV0aG9kLmRldGFpbF07CiAKQEAgLTUxMiw3
ICs0NzgsNyBAQCBzdGF0aWMgUEtQYXltZW50UmVxdWVzdEFQSVR5cGUgdG9BUElUeXBlKFdlYkNv
cmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OgogCiBSZXRhaW5QdHI8UEtQYXltZW50
UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBj
b25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdCYgcGF5bWVudFJlcXVlc3QpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFth
bGxvY1BLUGF5bWVudFJlcXVlc3RJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBhdXRvIHJlc3VsdCA9
IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0SW5zdGFuY2UoKSBpbml0XSk7CiAK
ICAgICBbcmVzdWx0IHNldE9yaWdpbmF0aW5nVVJMOm9yaWdpbmF0aW5nVVJMXTsKIApAQCAtNzYx
LDcgKzcyNyw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29t
cGxldGVQYXltZW50U2Vzc2lvbihjb25zdCBzdGQ6Om9wdGlvCiAKICNpZiAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRG
T1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEx
MDAwMCkKICAgICBhdXRvIHN0YXR1cyA9IHJlc3VsdCA/IHJlc3VsdC0+c3RhdHVzIDogV2ViQ29y
ZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlN1Y2Nlc3M7Ci0gICAgYXV0byBwa1BheW1l
bnRBdXRob3JpemF0aW9uUmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRBdXRob3JpemF0
aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0aFN0YXR1czp0b1BLUGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXMoc3RhdHVzKSBlcnJvcnM6cmVzdWx0ID8gdG9OU0Vycm9ycyhyZXN1bHQtPmVycm9y
cykuZ2V0KCkgOiBAWyBdXSk7CisgICAgYXV0byBwa1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0
ID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5j
ZSgpIGluaXRXaXRoU3RhdHVzOnRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhzdGF0dXMp
IGVycm9yczpyZXN1bHQgPyB0b05TRXJyb3JzKHJlc3VsdC0+ZXJyb3JzKS5nZXQoKSA6IEBbIF1d
KTsKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3Bh
eW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihwa1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0Lmdl
dCgpKTsKICNlbHNlCiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUtPl9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24odG9QS1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzKHJlc3VsdCkpOwpAQCAtNzg3LDcgKzc1Myw3IEBAIHZvaWQgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihj
b25zdCBzCiAgICAgICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0
ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpOwogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFN
SUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCi0gICAg
YXV0byBwa1NoaXBwaW5nTWV0aG9kVXBkYXRlID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1
ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJ
dGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1l
bnRTdW1tYXJ5SXRlbXMuZ2V0KCldKTsKKyAgICBhdXRvIHBrU2hpcHBpbmdNZXRob2RVcGRhdGUg
PSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRl
SW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6bV9wYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXSk7
CiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRT
ZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24ocGtTaGlwcGluZ01ldGhvZFVwZGF0ZS5nZXQo
KSk7CiAjZWxzZQogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlLT5fZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uKFBLUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXNTdWNjZXNzLCBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkpOwpAQCAtODM5LDcgKzgwNSw3IEBA
IHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGlu
Z0NvbnRhY3RTZWxlY3Rpb24oY29uc3QKICAgICB9CiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkK
LSAgICBhdXRvIHBrU2hpcHBpbmdDb250YWN0VXBkYXRlID0gYWRvcHROUyhbYWxsb2NQS1BheW1l
bnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczp1
cGRhdGUgPyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKS5nZXQoKSA6IEBbIF0gcGF5bWVudFN1
bW1hcnlJdGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+
X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkgc2hpcHBpbmdNZXRob2RzOm1fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzLmdldCgpXSk7
CisgICAgYXV0byBwa1NoaXBwaW5nQ29udGFjdFVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQ
S1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVy
cm9yczp1cGRhdGUgPyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKS5nZXQoKSA6IEBbIF0gcGF5
bWVudFN1bW1hcnlJdGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkgc2hpcHBpbmdNZXRob2RzOm1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzLmdl
dCgpXSk7CiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUt
Pl9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKHBrU2hpcHBpbmdDb250YWN0VXBk
YXRlLmdldCgpKTsKICNlbHNlCiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKHRvUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1cyh1cGRhdGUpLCBtX3BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3NoaXBwaW5nTWV0aG9kcy5nZXQoKSwgbV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdl
dCgpKTsKQEAgLTg1Niw3ICs4MjIsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBzdAogICAgICAg
ICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRT
dW1tYXJ5SXRlbXMgPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRhdGUtPm5ld1RvdGFsQW5k
TGluZUl0ZW1zKTsKIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQotICAgIGF1dG8gcGtQYXltZW50
TWV0aG9kVXBkYXRlID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhv
ZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5n
ZXQoKV0pOworICAgIGF1dG8gcGtQYXltZW50TWV0aG9kVXBkYXRlID0gYWRvcHROUyhbUEFMOjph
bGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0
aFBheW1lbnRTdW1tYXJ5SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXSk7CiAgICAgbV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RQYXltZW50TWV0aG9k
Q29tcGxldGlvbihwa1BheW1lbnRNZXRob2RVcGRhdGUuZ2V0KCkpOwogI2Vsc2UKICAgICBtX3Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFBheW1l
bnRNZXRob2RDb21wbGV0aW9uKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRl
bGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSk7CkBAIC04NzEsNyArODM3LDcgQEAg
VmVjdG9yPFN0cmluZz4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQXZhaWxh
YmxlUGF5bWVudE5ldHdvcmtzKCkKICAgICAgICAgcmV0dXJuIHsgfTsKICNlbmRpZgogICAgIAot
ICAgIE5TQXJyYXk8UEtQYXltZW50TmV0d29yaz4gKmF2YWlsYWJsZU5ldHdvcmtzID0gW2dldFBL
UGF5bWVudFJlcXVlc3RDbGFzcygpIGF2YWlsYWJsZU5ldHdvcmtzXTsKKyAgICBOU0FycmF5PFBL
UGF5bWVudE5ldHdvcms+ICphdmFpbGFibGVOZXR3b3JrcyA9IFtQQUw6OmdldF9QYXNzS2l0X1BL
UGF5bWVudFJlcXVlc3RDbGFzcygpIGF2YWlsYWJsZU5ldHdvcmtzXTsKICAgICBWZWN0b3I8U3Ry
aW5nPiByZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXZhaWxhYmxl
TmV0d29ya3MuY291bnQpOwogICAgIGZvciAoUEtQYXltZW50TmV0d29yayBuZXR3b3JrIGluIGF2
YWlsYWJsZU5ldHdvcmtzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBw
bGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1t
CmluZGV4IGMwZGYzYzg5ZGI0Y2Y0MTc0OThhYzI2OGU5OWUxMTViYTQwNWQ3NjIuLmY5ZTI4MGQx
Yzk1NmE2ZDhkZTcyNTQxZmZmMDk3ZjU4Y2RlYWE4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlJT1MubW0KQEAgLTM0LDEwICszNCw3IEBACiAjaW1wb3J0IDxQYXNzS2l0
L1Bhc3NLaXQuaD4KICNpbXBvcnQgPFVJS2l0L1VJVmlld0NvbnRyb2xsZXIuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4KLSNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgotCi1TT0ZUX0xJTktfRlJBTUVXT1JLKFBhc3NLaXQpCi1TT0ZUX0xJTktfQ0xB
U1MoUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKKyNpbXBv
cnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
QEAgLTU0LDcgKzUxLDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1TaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2kKIAogICAgIGF1dG8gcGF5
bWVudFJlcXVlc3QgPSB0b1BLUGF5bWVudFJlcXVlc3QobV93ZWJQYWdlUHJveHksIG9yaWdpbmF0
aW5nVVJMLCBsaW5rSWNvblVSTFN0cmluZ3MsIHJlcXVlc3QpOwogCi0gICAgbV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFJlcXVlc3Q6cGF5
bWVudFJlcXVlc3QuZ2V0KCldKTsKKyAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRSZXF1ZXN0OnBheW1lbnRSZXF1ZXN0Lmdl
dCgpXSk7CiAgICAgaWYgKCFtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9t
YWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KaW5kZXggNzQxNTkzODNmMTk1NDI3
ZGI5NzYwYThjMDFlYzcwNjdhNjdjNmY5NS4uYTRkMzA5NjljMmU2ODZmY2Y0ZWRiN2Q1NTk4YmU4
YTQ3ODhhYzgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkv
bWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQpA
QCAtMzAsMTQgKzMwLDExIEBACiAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAi
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIgotI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9QYXNzS2l0U1BJLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi1T
T0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfT1BUSU9OQUwoUGFzc0tpdCkKLQotU09GVF9MSU5L
X0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci1T
T0ZUX0xJTktfQ09OU1RBTlQoUGFzc0tpdCwgUEtFeHRlbnNpb25QYXltZW50QXV0aG9yaXphdGlv
blVJRXh0ZW5zaW9uUG9pbnROYW1lLCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChQ
QUw6OlBhc3NLaXQsIFBLRXh0ZW5zaW9uUGF5bWVudEF1dGhvcml6YXRpb25VSUV4dGVuc2lvblBv
aW50TmFtZSwgTlNTdHJpbmcgKik7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355385</attachid>
            <date>2018-11-20 22:05:32 -0800</date>
            <delta_ts>2018-11-20 22:09:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191875-20181120220531.patch</filename>
            <type>text/plain</type>
            <size>53628</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQxMWQ5ZGVmOGIxMzhiNzExMTYwMWFh
YmVjYTM1OGQ4MTAxMDJhNzcuLjQxZWQzNjEzZDQxMTNjZTM5NTliMjA4ZDJmZmMzYmM3NjU5YmZh
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUg
Zm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MTg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL2NvY29hL1NvZnRMaW5raW5nLmg6CisKIDIwMTgtMTEtMTQgIEtlaXRoIFJvbGxp
biAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCAjZW5kIHZzLiAjZW5kaWYgdHlw
by4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwZjc0ZjdhMTlhOTQyMWNmNmNlMzMzYzFmMDY3ZmE2YWVlZTRlOGI3
Li5kY2MzZjI0NDcwZjMxNTYzZWYyMGJiM2VkNGZhYWI0ZWM0ZWUwMGUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBhc3NL
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg3
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9k
dWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydCk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50
TWVyY2hhbnRTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50TWVyY2hh
bnRTZXNzaW9uOjpmcm9tSlMpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUNvY29hOjpwYWludEFwcGxlUGF5QnV0dG9uKToKKwogMjAxOC0xMS0yMCAgRGVhbiBK
YWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZpbmcgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmUgZnJvbSBXZWJMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMGVkZWU1YzNh
YzhkZTI4NTA2NDUxNzY1ZTIwMTUwYmFlOGMzODlmNy4uMWE0MTg4Zjc1NDBjYWFjM2U3NTc1YWFi
ZGMxNTUxM2VlOGQ3NDJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2Nv
YV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOiBBZGRlZC4K
KyAgICAgICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tOiBBZGRlZC4KKyAgICAgICAg
KiBwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaDoKKwogMjAxOC0xMS0xNyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBSZW1vdmUgYWxsIHVz
YWdlcyBvZiBVSUl0ZW1Qcm92aWRlciwgVUlJdGVtUHJvdmlkZXJSZWFkaW5nLCBhbmQgcmVsYXRl
ZCBjbGFzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZlOGUzZTRkOGEwOWUxYmUzZjljYjU1ZmM3OTk0MTAyNTFk
YWI5NjUuLjMzZmY1NzA4NjViZjkyZTRkZGQxOGNkYTg4ZDE3ZmNiMDg4YzkyN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzcgQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBh
c3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MTg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRDb250YWN0Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPjo6
ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0
aG9kPjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgaW52YWxpZGF0ZV0pOgorICAgICAgICAoLVtX
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyOmRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246XSk6CisgICAg
ICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkQXV0aG9yaXplUGF5bWVudDpoYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFBheW1lbnRN
ZXRob2Q6aGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRT
ZWxlY3RTaGlwcGluZ01ldGhvZDpoYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyOmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDpoYW5kbGVyOl0pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVu
dHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXApOgorICAgICAg
ICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKToKKyAgICAgICAgKFdlYktpdDo6dG9Q
S1NoaXBwaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29t
cGxldGVQYXltZW50U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0
ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUF2
YWlsYWJsZVBheW1lbnROZXR3b3Jrcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2lv
cy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5t
bToKKwogMjAxOC0xMS0yMCAgSmVmZiBNaWxsZXIgIDxqZWZmbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV0dXJuIG51bGxwdHIgaW1tZWRpYXRlbHkgaWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0IGlu
IHRoZSBIYXNoTWFwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvU29mdExpbmtp
bmcuaCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1NvZnRMaW5raW5nLmgKaW5kZXggNmFlZWRhZTRh
NjYzMzQ1NzYwNmJhN2UxY2JlZmZmNWVhNjNjMDgyZi4uZGQ2ZTc5YmM2ZWJlNTU5NjkxOGE2MGQ5
MWE4MjZkZTFkZDhiNmZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvU29mdExp
bmtpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Tb2Z0TGlua2luZy5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMS0yMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzQwLDkgKzM0MCw5IEBACiAgICAgfSBcCiAgICAgfQogCi0jZGVmaW5lIFNPRlRf
TElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrKSBc
CisjZGVmaW5lIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChmdW5j
dGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBleHBvcnQpIFwKICAgICBuYW1lc3BhY2UgZnVuY3Rp
b25OYW1lc3BhY2UgeyBcCi0gICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KGJvb2wgaXNPcHRp
b25hbCA9IGZhbHNlKTsgXAorICAgIGV4cG9ydCB2b2lkKiBmcmFtZXdvcmsjI0xpYnJhcnkoYm9v
bCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCiAgICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KGJv
b2wgaXNPcHRpb25hbCkgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgdm9pZCogZnJhbWV3b3Jr
TGlicmFyeTsgXApAQCAtMzU2LDkgKzM1NiwxMiBAQAogICAgIH0gXAogICAgIH0KIAotI2RlZmlu
ZSBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFj
ZSwgZnJhbWV3b3JrKSBcCisjZGVmaW5lIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShm
dW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrKSBcCisgICAgU09GVF9MSU5LX0ZSQU1FV09SS19G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssICkKKwor
I2RlZmluZSBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBleHBvcnQpIFwKICAgICBuYW1lc3BhY2Ug
ZnVuY3Rpb25OYW1lc3BhY2UgeyBcCi0gICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KGJvb2wg
aXNPcHRpb25hbCA9IGZhbHNlKTsgXAorICAgIGV4cG9ydCB2b2lkKiBmcmFtZXdvcmsjI0xpYnJh
cnkoYm9vbCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCiAgICAgdm9pZCogZnJhbWV3b3JrIyNMaWJy
YXJ5KGJvb2wgaXNPcHRpb25hbCkgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgdm9pZCogZnJh
bWV3b3JrTGlicmFyeTsgXApAQCAtMzcyLDYgKzM3NSw5IEBACiAgICAgfSBcCiAgICAgfQogCisj
ZGVmaW5lIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19GT1JfU09VUkNFKGZ1bmN0aW9uTmFt
ZXNwYWNlLCBmcmFtZXdvcmspIFwKKyAgICBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCApCisKICNk
ZWZpbmUgU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1l
d29yaywgY2xhc3NOYW1lKSBcCiAgICAgQGNsYXNzIGNsYXNzTmFtZTsgXAogICAgIG5hbWVzcGFj
ZSBmdW5jdGlvbk5hbWVzcGFjZSB7IFwKQEAgLTM4MywxMSArMzg5LDExIEBACiAgICAgfSBcCiAg
ICAgfQogCi0jZGVmaW5lIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNw
YWNlLCBmcmFtZXdvcmssIGNsYXNzTmFtZSkgXAorI2RlZmluZSBTT0ZUX0xJTktfQ0xBU1NfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBjbGFzc05h
bWUsIGV4cG9ydCkgXAogICAgIEBjbGFzcyBjbGFzc05hbWU7IFwKICAgICBuYW1lc3BhY2UgZnVu
Y3Rpb25OYW1lc3BhY2UgeyBcCiAgICAgc3RhdGljIENsYXNzIGluaXQjI2NsYXNzTmFtZSgpOyBc
Ci0gICAgQ2xhc3MgKCpnZXRfIyNmcmFtZXdvcmsjI18jI2NsYXNzTmFtZSMjQ2xhc3MpKCkgPSBp
bml0IyNjbGFzc05hbWU7IFwKKyAgICBleHBvcnQgQ2xhc3MgKCpnZXRfIyNmcmFtZXdvcmsjI18j
I2NsYXNzTmFtZSMjQ2xhc3MpKCkgPSBpbml0IyNjbGFzc05hbWU7IFwKICAgICBzdGF0aWMgQ2xh
c3MgY2xhc3MjI2NsYXNzTmFtZTsgXAogICAgIFwKICAgICBzdGF0aWMgQ2xhc3MgY2xhc3NOYW1l
IyNGdW5jdGlvbigpIFwKQEAgLTQwOCw2ICs0MTQsOSBAQAogICAgIH0gXAogICAgIH0KIAorI2Rl
ZmluZSBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrLCBjbGFzc05hbWUpIFwKKyAgICBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VY
UE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBjbGFzc05hbWUsICkKKwogI2RlZmlu
ZSBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSkgXAogICAgIFdURl9FWFRFUk5fQ19CRUdJ
TiBcCiAgICAgZXh0ZXJuIGNvbnN0IHZhcmlhYmxlVHlwZSB2YXJpYWJsZU5hbWU7IFwKQEAgLTQ4
OSwxMyArNDk4LDEzIEBACiAgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWVzcGFjZTo6c29mdExp
bmsjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlck5hbWVzOyBcCiAgICAgfQogCi0j
ZGVmaW5lIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNwYWNlLCBm
cmFtZXdvcmssIGZ1bmN0aW9uTmFtZSwgcmVzdWx0VHlwZSwgcGFyYW1ldGVyRGVjbGFyYXRpb25z
LCBwYXJhbWV0ZXJOYW1lcykgXAorI2RlZmluZSBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUs
IHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMsIGV4cG9y
dCkgXAogICAgIFdURl9FWFRFUk5fQ19CRUdJTiBcCiAgICAgcmVzdWx0VHlwZSBmdW5jdGlvbk5h
bWUgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCiAgICAgV1RGX0VYVEVSTl9DX0VORCBcCiAgICAg
bmFtZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAogICAgIHN0YXRpYyByZXN1bHRUeXBlIGlu
aXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9uczsgXAotICAg
IHJlc3VsdFR5cGUgKCpzb2Z0TGluayMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUpIHBhcmFtZXRl
ckRlY2xhcmF0aW9ucyA9IGluaXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lOyBcCisgICAgZXhw
b3J0IHJlc3VsdFR5cGUoKnNvZnRMaW5rIyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSkgcGFyYW1l
dGVyRGVjbGFyYXRpb25zID0gaW5pdCMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWU7IFwKICAgICBz
dGF0aWMgcmVzdWx0VHlwZSBpbml0IyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSBwYXJhbWV0ZXJE
ZWNsYXJhdGlvbnMgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9u
Y2U7IFwKQEAgLTUwNyw2ICs1MTYsOSBAQAogICAgIH0gXAogICAgIH0KIAorI2RlZmluZSBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBm
dW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVy
TmFtZXMpIFwKKyAgICBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChm
dW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBh
cmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMsICkKKwogI2RlZmluZSBTT0ZUX0xJ
TktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFy
YW1ldGVyTmFtZXMpIFwKICAgICBXVEZfRVhURVJOX0NfQkVHSU4gXAogICAgIHJlc3VsdFR5cGUg
ZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9uczsgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29h
Lm1tCmluZGV4IDBiMDIwNGM4NmQ4YTM2YTVkNGE3NTI5OGQwZjQxYTM0NDYxNTAzZWUuLmNjOTdm
ZDVlMWY2MjM0NTk5ZWI4ODRjYTgxODdmYjJjZDA4NTdjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRhY3RDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29j
b2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbXBvcnQgIkFwcGxlUGF5UGF5bWVudENvbnRh
Y3QuaCIKICNpbXBvcnQgPENvbnRhY3RzL0NvbnRhY3RzLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4K
ICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCkBAIC0zOCwxNCArMzgsNiBAQCBTT0ZUX0xJTktfRlJBTUVXT1JLKENvbnRhY3Rz
KQogU09GVF9MSU5LX0NMQVNTKENvbnRhY3RzLCBDTk11dGFibGVQb3N0YWxBZGRyZXNzKQogU09G
VF9MSU5LX0NMQVNTKENvbnRhY3RzLCBDTlBob25lTnVtYmVyKQogCi0jaWYgUExBVEZPUk0oTUFD
KQotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFBhc3NLaXQpCi0jZWxzZQotU09GVF9MSU5L
X0ZSQU1FV09SSyhQYXNzS2l0KQotI2VuZGlmCi0KLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQ
S0NvbnRhY3QpCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE5TU3RyaW5nICpzdWJM
b2NhbGl0eShDTlBvc3RhbEFkZHJlc3MgKmFkZHJlc3MpCkBAIC0xMDYsNyArOTgsNyBAQCBzdGF0
aWMgdm9pZCBzZXRTdWJBZG1pbmlzdHJhdGl2ZUFyZWEoQ05NdXRhYmxlUG9zdGFsQWRkcmVzcyAq
YWRkcmVzcywgTlNTdHJpbmcgKgogCiBzdGF0aWMgUmV0YWluUHRyPFBLQ29udGFjdD4gY29udmVy
dCh1bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBBcHBsZVBheVBheW1lbnRDb250YWN0JiBjb250YWN0
KQogewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS0NvbnRhY3RJbnN0YW5jZSgp
IGluaXRdKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS0NvbnRhY3RJ
bnN0YW5jZSgpIGluaXRdKTsKIAogICAgIE5TU3RyaW5nICpmYW1pbHlOYW1lID0gbmlsOwogICAg
IE5TU3RyaW5nICpwaG9uZXRpY0ZhbWlseU5hbWUgPSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNo
YW50U2Vzc2lvbkNvY29hLm1tCmluZGV4IDgxYzhjY2I3MzhhN2Y5MzU0MTIxYzhhMjhkNjc5MzVj
MzEyNzZjYWIuLmZjMzZjODk1MzE0OWY0MzMwYmQ5NTFhNmFlYzIyYjhlZmIyZTBkYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNo
YW50U2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
Y29jb2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDE2ICsyOSw3IEBACiAjaWYg
RU5BQkxFKEFQUExFX1BBWSkKIAogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNPTk9iamVjdC5o
PgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+Ci0jaW1wb3J0IDx3dGYvU29m
dExpbmtpbmcuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElOS19QUklWQVRFX0ZSQU1F
V09SSyhQYXNzS2l0KQotI2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkKLSNlbmRp
ZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uKQor
I2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTUzLDcgKzQ0LDcgQEAgc3RkOjpvcHRpb25hbDxQYXltZW50TWVyY2hhbnRTZXNz
aW9uPiBQYXltZW50TWVyY2hhbnRTZXNzaW9uOjpmcm9tSlMoSlNDOjpFeGVjU3QKICAgICBpZiAo
IWRpY3Rpb25hcnkgfHwgIVtkaWN0aW9uYXJ5IGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBj
bGFzc11dKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBwa1BheW1l
bnRNZXJjaGFudFNlc3Npb24gPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudE1lcmNoYW50U2Vzc2lv
bkluc3RhbmNlKCkgaW5pdFdpdGhEaWN0aW9uYXJ5OmRpY3Rpb25hcnldKTsKKyAgICBhdXRvIHBr
UGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRNZXJj
aGFudFNlc3Npb25JbnN0YW5jZSgpIGluaXRXaXRoRGljdGlvbmFyeTpkaWN0aW9uYXJ5XSk7CiAK
ICAgICByZXR1cm4gUGF5bWVudE1lcmNoYW50U2Vzc2lvbihwa1BheW1lbnRNZXJjaGFudFNlc3Np
b24uZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDIxNTUyZGY3Zjc1ZmM1MzliYjg3NTZkMDg0OWI1NGQ2ODY5NTU0
MDkuLjc3ZjI0NjczZTUxNzM2OTdmNWNiY2U3ZWMzYTQ1MjE2Y2Y0ODMxMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMSw2
ICsxMzEsOCBAQAogCQlBMTE3NUI1ODFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFBy
b3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMTc1QjU2MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwICov
OyB9OwogCQlBMTE3NUI1QTFGNkI0QTg0MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE3NUI1OTFGNkI0
QTg0MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggKi87IH07CiAJCUExRjU1RENGMUY1NTI4
RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJ
LmggKi87IH07CisJCUExRjYzQzlGMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjYzQzlE
MjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLzsgfTsKKwkJQTFGNjNDQTAy
MUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjYzQzlFMjFBNERCRjcwMDZGQjQzQiAvKiBQ
YXNzS2l0U29mdExpbmsubW0gKi87IH07CiAJCUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBL
aWxsUmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIy
MUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJp
bmcuY3BwICovOyB9OwogCQlBMzBENDEyNTFGMEREMTJEMDBCNzE5NTQgLyogS2lsbFJpbmdNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzBENDEy
NDFGMEREMTJEMDBCNzE5NTQgLyogS2lsbFJpbmdNYWMubW0gKi87IH07CkBAIC0yODcsNiArMjg5
LDggQEAKIAkJQTExNzVCNTYxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE3NUI1OTFGNkI0QTg0MDBDNEI5RjAgLyogTlNT
Y3JvbGxWaWV3U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TU2Nyb2xsVmlld1NQSS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMUY1NURDRTFGNTUyOEVDMDBFREI3NUYgLyogTWV0YWRh
dGFTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0YWRhdGFTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTFGNjNDOUQyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQYXNzS2l0U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTFGNjNDOUUyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3NLaXRTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtpbGxSaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUEzMEQ0MTFGMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLaWxsUmluZy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTI0MUYwREQxMkQwMEI3MTk1NCAvKiBLaWxs
UmluZ01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEtpbGxS
aW5nTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTYwLDYgKzU2NCw4IEBA
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUY0NDI5MTY2MUZBNTI3
MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1tICovLAorCQkJCUExRjYzQzlE
MjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLywKKwkJCQlBMUY2M0M5RTIx
QTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tICovLAogCQkJKTsKIAkJCXBhdGgg
PSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03MjksNiArNzM1LDcgQEAK
IAkJCQkwQzc3ODU5RDFGNDUxMzBGMDBGNEVCQjYgLyogTlNXaW5kb3dTUEkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU3MEFCOEY5MjBBRjZFM0QwMEI4QkU4NyAvKiBOU1hQQ0Nvbm5lY3Rpb25TUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBDNUFGOTFGMUY0M0E0QzcwMDJFQUMwMiAvKiBPcGVuR0xF
U1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFGNjNDOUYyMUE0REJGNzAwNkZCNDNCIC8qIFBh
c3NLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNTUxRjNCRUI0OTAwREJD
MzE3IC8qIFBhc3NLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTlFMUY0NTEzMEYw
MEY0RUJCNiAvKiBQSVBTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMTc1QjRFMUY2QjMzNzMw
MEM0QjlGMCAvKiBQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovLApAQCAtODU0LDYgKzg2MSw3IEBA
CiAJCQkJQTMwRDQxMjUxRjBERDEyRDAwQjcxOTU0IC8qIEtpbGxSaW5nTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUM0ODc2RDgxRjhEN0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMENGOTlDQTQxRjczNjM3NTAwN0VFNzkzIC8qIE1lZGlhVGltZUFWRm91
bmRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUY2M0NBMDIxQTREQkY3MDA2RkI0M0Ig
LyogUGFzc0tpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTExNzVCNEYxRjZCMzM3
MzAwQzRCOUYwIC8qIFBvcHVwTWVudS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUEzQzY2Q0RDMUY0
NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZF
NTIxRjNEMURDNTAwOUMxNEIxIC8qIFNsZWVwRGlzYWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5o
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42NjVlN2JjYWU2MWRhZTlkZGVjNTNjMjVkYWRhOGYwZDJhNTU2M2U3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaApA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9S
TShDT0NPQSkKKworI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CisjaW1wb3J0
IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKFBB
TCwgUGFzc0tpdCkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0
LCBQS0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1Jl
Y3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVudEJ1dHRvblR5cGUgdHlwZSwgUEtQ
YXltZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICpsYW5ndWFnZUNvZGUpLCAoY29udGV4
dCwgZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFuZ3VhZ2VDb2RlKSkKKworU09GVF9M
SU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3QpCitTT0ZUX0xJTktf
Q0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGFzc0xpYnJhcnkpCitTT0ZUX0xJTktf
Q0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5bWVudCkKK1NPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1l
bnRNZXRob2QpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5
bWVudE1lcmNoYW50U2Vzc2lvbikKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50UmVxdWVzdCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwg
UGFzc0tpdCwgUEtQYXltZW50U3VtbWFyeUl0ZW0pCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURF
UihQQUwsIFBhc3NLaXQsIFBLU2hpcHBpbmdNZXRob2QpCisKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMCkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwg
UEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9tYWluQW5kU291cmNlQXBw
bGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwg
TlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgUEtDYW5NYWtl
UGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmllciwgZG9tYWluLCBzb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNvbXBsZXRpb24pKQorU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhN
ZXJjaGFudElkZW50aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwg
TlNTdHJpbmcgKmRvbWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24p
LCAoaWRlbnRpZmllciwgZG9tYWluLCBjb21wbGV0aW9uKSkKKworU09GVF9MSU5LX0NMQVNTX0ZP
Ul9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0KQorU09G
VF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0UGF5
bWVudE1ldGhvZFVwZGF0ZSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tp
dCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSkKK1NPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9k
VXBkYXRlKQorI2VuZGlmCisKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjMy
NWMxNTViYzVjYzJiYjkxYWM4YjAwZDYwMjA5OGMzMjEwODE3YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tCkBAIC0wLDAg
KzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JN
KENPQ09BKQorCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQg
PHd0Zi9Tb2Z0TGlua2luZy5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorU09GVF9MSU5LX1BSSVZB
VEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQQUxfRVhQ
T1JUKQorI2Vsc2UKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIFBhc3NLaXQsIFBBTF9FWFBPUlQpCisjZW5kaWYKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoUEFMLCBQYXNzS2l0LCBQS0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29u
dGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVu
dEJ1dHRvblR5cGUgdHlwZSwgUEtQYXltZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICps
YW5ndWFnZUNvZGUpLCAoY29udGV4dCwgZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFu
Z3VhZ2VDb2RlKSkKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFM
LCBQYXNzS2l0LCBQS0NvbnRhY3QsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGFzc0xpYnJhcnksIFBBTF9FWFBPUlQp
CitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
UGF5bWVudCwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLCBQ
QUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQ
YXNzS2l0LCBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24sIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktf
Q0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudE1ldGhv
ZCwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdCwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFT
U19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U3VtbWFyeUl0
ZW0sIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIFBhc3NLaXQsIFBLU2hpcHBpbmdNZXRob2QsIFBBTF9FWFBPUlQpCisKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTMwMCkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlm
aWVyRG9tYWluQW5kU291cmNlQXBwbGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmll
ciwgTlNTdHJpbmcgKmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllciwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRl
bnRpZmllciwgZG9tYWluLCBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNv
bXBsZXRpb24pLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50
aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRv
bWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmll
ciwgZG9tYWluLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKKworU09GVF9MSU5LX0NMQVNTX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9u
UmVzdWx0LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBP
UlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSwgUEFM
X0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSwgUEFMX0VYUE9SVCkK
K1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQ
YXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlLCBQQUxfRVhQT1JUKQorI2VuZGlmCisK
KyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NvY29hL1Bhc3NLaXRTUEkuaAppbmRleCBiNWU1OTMwMzI3MWZiNTgxYWIzNDlhYjk1Zjc0MzIw
OTE0OGFhMjU4Li41Mjc5ZTg3MWE3ZmZjZGU0MGEzN2JiZjM2OTc2NmZjZGRjZDU1MDkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCkBAIC0yMjUs
NyArMjI1LDcgQEAgdHlwZWRlZiBOU1N0cmluZyAqIFBLUGF5bWVudE5ldHdvcmsgTlNfRVhURU5T
SUJMRV9TVFJJTkdfRU5VTTsKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKLSNlbmRpZgorI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIApAQCAtMjYx
LDcgKzI2MSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBQS1BheW1lbnRSZXF1ZXN0
QVBJVHlwZSkgewogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAotI2VuZGlmCisjZW5kaWYgLy8g
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShBUFBM
RV9JTlRFUk5BTF9TREspCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBQS1BheW1lbnRCdXR0
b25TdHlsZSkgewpAQCAtMzI0LDQgKzMyNCw2IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU1N0cmluZyAqQ1REYXRhQ29ubmVjdGlvblNl
cnZpY2VUeXBlOwogQGVuZAogCit0eXBlZGVmIHZvaWQgKF5QS0Nhbk1ha2VQYXltZW50c0NvbXBs
ZXRpb24pKEJPT0wgaXNWYWxpZCwgTlNFcnJvciAqKTsKKwogTlNfQVNTVU1FX05PTk5VTExfRU5E
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBhMTQ4MGZiYTZmOTQwYTZiNjg3ZDNjM2U5MGYw
YTUxZjEzMWY3NzFiLi42NWViYzg0MzY2MjAxZDU4OWY3NGE1YTVmZjU0OTgxM2JlZmJhNzA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTU4OCw3ICs1ODgsNyBAQCBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5jcHAKIAogICAgIE1vZHVs
ZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCiAgICAgTW9kdWxlcy9hcHBsZXBheS9j
b2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tCi0gICAgTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9Q
YXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0gQG5vLXVuaWZ5CisgICAgTW9kdWxlcy9hcHBs
ZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0KICAgICBNb2R1bGVzL2Fw
cGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQogCiAgICAgTW9kdWxlcy9hcHBsZXBh
eS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMyMzM0YzYw
NGU3M2I4NjA4MjViODkwNTdiYzlhODk0MTk5ZWIxMzUuLmE3NTNhYTA2MzMwNWNlMTgxZDkyOWIw
MzUwNDc2Nzg5OWMzMGQzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ0NzEsNyArNDQ3MSw2IEBACiAJCURFNUY4NjBEMUZB
MjM4NkIwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDc4LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4NUQyMUZBMjM4NTYwMDZEQjYzQSAvKiBV
bmlmaWVkU291cmNlNDc4LmNwcCAqLzsgfTsKIAkJREU1Rjg2MEUxRkEyMzg2QjAwNkRCNjNBIC8q
IFVuaWZpZWRTb3VyY2U0NzkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gREU1Rjg1Q0YxRkEyMzg1MDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0Nzku
Y3BwICovOyB9OwogCQlERTVGODYwRjFGQTIzODZCMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ4
MC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTVG
ODVEMzFGQTIzODU5MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ4MC5jcHAgKi87IH07Ci0JCURF
NUY4NjEwMUZBMjM4RDkwMDZEQjYzQSAvKiBQYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQURBNEExQjFE
MjJGMkMwMDA1QTlBMTUgLyogUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tICovOyB9Owog
CQlERTVGODYxMTFGQTIzOURBMDA2REI2M0EgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0UyOUU1
QzE2N0E4QTE5MDA1ODZEM0QgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAgKi87IH07
CiAJCURFNUY4NjEyMUZBMjM5RTcwMDZEQjYzQSAvKiBKU0dDT2JzZXJ2YXRpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTRFQUUxQ0Y2NjU0
QTAwNDcyM0M0IC8qIEpTR0NPYnNlcnZhdGlvbi5jcHAgKi87IH07CiAJCURFNUY4NjFEMUZBMjgx
NUIwMDZEQjYzQSAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBNDc4QTdFMTZDRDcwQzMw
MDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSAqLzsgfTsKQEAg
LTMyMzQ1LDcgKzMyMzQ0LDYgQEAKIAkJCQlBMzFDNEU0RDE2RTAyQUE2MDAyRjc5NTcgLyogT0VT
VGV4dHVyZUhhbGZGbG9hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTA3OENDNzE4ODBBQUI1
MDA4MDk5REMgLyogT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3N0ExN0E3MTEyRjI4MTgyMDA0RTAyRjYgLyogT0VTVmVydGV4QXJyYXlPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg2MTAxRkEyMzhEOTAwNkRCNjNBIC8qIFBheW1lbnRN
ZXJjaGFudFNlc3Npb25Db2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFQTI4NDY2MjE0MUU4
NDkwMEU0MDdFOCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUFBMTJERjQ5MTc0M0RGODMwMDREQUZERiAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBMjlBMzAxQ0JGNzRENDAwOTAxQ0NGIC8qIFBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCmluZGV4IGI0YWFmNjQyMWQyYjZk
M2M1YjMwZGVhYTc0ZTNlNzI2MzI5ZDJhY2QuLmNiNjEwODI5MmE0ODk4NmMxOWM3OGIxMTQ0MGEx
NTc3MmEwZWE5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNv
Y29hLm1tCkBAIC0zMiwxNiArMzIsNyBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAotI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtp
bmcuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhQ
YXNzS2l0KTsKLSNlbHNlCi1TT0ZUX0xJTktfRlJBTUVXT1JLKFBhc3NLaXQpOwotI2VuZGlmCi0K
LVNPRlRfTElOS19NQVlfRkFJTChQYXNzS2l0LCBQS0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwg
KENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBL
UGF5bWVudEJ1dHRvblR5cGUgdHlwZSwgUEtQYXltZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3Ry
aW5nICpsYW5ndWFnZUNvZGUpLCAoY29udGV4dCwgZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHls
ZSwgbGFuZ3VhZ2VDb2RlKSk7CisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+
CiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZKQogCkBAIC0xMDgsOSArOTksNiBAQCBzdGF0
aWMgUEtQYXltZW50QnV0dG9uVHlwZSB0b1BLUGF5bWVudEJ1dHRvblR5cGUoQXBwbGVQYXlCdXR0
b25UeXBlIHR5cGUpCiAKIGJvb2wgUmVuZGVyVGhlbWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1dHRv
bihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UmVjdCYgcGFpbnRSZWN0KQogewotICAgIGlmICghY2FuTG9hZFBLRHJhd0Fw
cGxlUGF5QnV0dG9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0U2hvdWxkU21vb3RoRm9udHModHJ1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29h
Lm1tCmluZGV4IDM1Zjk4YjExYjdmMWE5MjEyOWFlZGI0MjEyMmFiMGI4NTkwNzkyMjUuLmQwZTM3
NDUyMDZkZDk4YWI3NGI2ZjRkMTU1Yjg4Mjc2ZGE1ODZlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBA
IC0zMCwyMCArMzAsOCBAQAogCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0IDxX
ZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmg+CisjaW1wb3J0IDxwYWwvY29jb2Ev
UGFzc0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZl
clNQSS5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+Ci0jaW1wb3J0IDx3
dGYvU29mdExpbmtpbmcuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElOS19QUklWQVRF
X0ZSQU1FV09SSyhQYXNzS2l0KQotI2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkK
LSNlbmRpZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtDb250YWN0KTsKLVNPRlRfTElO
S19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnQpOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBL
UGF5bWVudE1ldGhvZCk7Ci1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50TWVyY2hh
bnRTZXNzaW9uKTsKIAogbmFtZXNwYWNlIElQQyB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
QEAgLTY3LDcgKzU1LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6UGF5bWVudCYKICAgICBhdXRvIGRhdGEg
PSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8
dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSkpIGxl
bmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsKICAgICBhdXRvIHVu
YXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoZGF0YS5nZXQoKSk7CiAgICAgQHRy
eSB7Ci0gICAgICAgIFBLUGF5bWVudCAqcGtQYXltZW50ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2Jq
ZWN0T2ZDbGFzczpnZXRQS1BheW1lbnRDbGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RP
YmplY3RLZXldOworICAgICAgICBQS1BheW1lbnQgKnBrUGF5bWVudCA9IFt1bmFyY2hpdmVyIGRl
Y29kZU9iamVjdE9mQ2xhc3M6UEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRDbGFzcygpIGZvcktl
eTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwogICAgICAgICBwYXltZW50ID0gUGF5bWVu
dChwa1BheW1lbnQpOwogICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBQS1BheW1lbnQ6ICVAIiwgZXhjZXB0
aW9uKTsKQEAgLTExOCw3ICsxMDYsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5
bWVudENvbnRhY3Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6UAogICAgIGF1
dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29u
c3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2UuZGF0
YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwogICAg
IGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRhLmdldCgpKTsK
ICAgICBAdHJ5IHsKLSAgICAgICAgUEtDb250YWN0ICpwa0NvbnRhY3QgPSBbdW5hcmNoaXZlciBk
ZWNvZGVPYmplY3RPZkNsYXNzOmdldFBLQ29udGFjdENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNo
aXZlUm9vdE9iamVjdEtleV07CisgICAgICAgIFBLQ29udGFjdCAqcGtDb250YWN0ID0gW3VuYXJj
aGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdENsYXNz
KCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgICAgIHBheW1lbnRD
b250YWN0ID0gUGF5bWVudENvbnRhY3QocGtDb250YWN0KTsKICAgICB9IEBjYXRjaCAoTlNFeGNl
cHRpb24gKmV4Y2VwdGlvbikgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUg
UEtDb250YWN0OiAlQCIsIGV4Y2VwdGlvbik7CkBAIC0xNzUsNyArMTYzLDcgQEAgYm9vbCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgV2UKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBp
bml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZv
aWQqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBm
cmVlV2hlbkRvbmU6Tk9dKTsKICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVy
RnJvbURhdGEoZGF0YS5nZXQoKSk7CiAgICAgQHRyeSB7Ci0gICAgICAgIFBLUGF5bWVudE1lcmNo
YW50U2Vzc2lvbiAqcGtQYXltZW50TWVyY2hhbnRTZXNzaW9uID0gW3VuYXJjaGl2ZXIgZGVjb2Rl
T2JqZWN0T2ZDbGFzczpnZXRQS1BheW1lbnRNZXJjaGFudFNlc3Npb25DbGFzcygpIGZvcktleTpO
U0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOworICAgICAgICBQS1BheW1lbnRNZXJjaGFudFNl
c3Npb24gKnBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVj
dE9mQ2xhc3M6UEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRNZXJjaGFudFNlc3Npb25DbGFzcygp
IGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwogICAgICAgICBwYXltZW50TWVy
Y2hhbnRTZXNzaW9uID0gUGF5bWVudE1lcmNoYW50U2Vzc2lvbihwa1BheW1lbnRNZXJjaGFudFNl
c3Npb24pOwogICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBQS1BheW1lbnRNZXJjaGFudFNlc3Npb246ICVA
IiwgZXhjZXB0aW9uKTsKQEAgLTIwNSw3ICsxOTMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6UGF5bWVudE1ldGhvZD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQ
YQogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNO
b0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZl
cmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpO
T10pOwogICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRh
LmdldCgpKTsKICAgICBAdHJ5IHsKLSAgICAgICAgUEtQYXltZW50TWV0aG9kICpwa1BheW1lbnRN
ZXRob2QgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldFBLUGF5bWVudE1ldGhv
ZENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgICAgIFBL
UGF5bWVudE1ldGhvZCAqcGtQYXltZW50TWV0aG9kID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0
T2ZDbGFzczpQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudE1ldGhvZENsYXNzKCkgZm9yS2V5Ok5T
S2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgICAgIHBheW1lbnRNZXRob2QgPSBQYXlt
ZW50TWV0aG9kKHBrUGF5bWVudE1ldGhvZCk7CiAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpl
eGNlcHRpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIFBLUGF5bWVu
dDogJUAiLCBleGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Q29jb2EubW0KaW5kZXggZGIyYjZjOGJkMjBmY2NmMDA5NDk0MjA1ZDIxMWRjYzQxOTIzODE3
OC4uMWMzOWI5YzQyZjE4YzRjOGVkNTIzODllYmMyZGY4MDdkNzI2ODBmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9j
b2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCkBAIC0zMywyNiArMzMsMTIg
QEAKICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+Ci0j
aW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9Q
YXNzS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3Rm
L1J1bkxvb3AuaD4KLSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi0jaWYgUExBVEZPUk0o
TUFDKQotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX09QVElPTkFMKFBhc3NLaXQpCi0jZWxz
ZQotU09GVF9MSU5LX0ZSQU1FV09SSyhQYXNzS2l0KQotI2VuZGlmCi0KLVNPRlRfTElOS19DTEFT
UyhQYXNzS2l0LCBQS1Bhc3NMaWJyYXJ5KTsKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwotU09GVF9MSU5LX0NMQVNTKFBhc3NL
aXQsIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbik7Ci1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwg
UEtQYXltZW50UmVxdWVzdCk7Ci1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50U3Vt
bWFyeUl0ZW0pOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLU2hpcHBpbmdNZXRob2QpOwot
Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCi1TT0ZUX0xJTktfRlJBTUVXT1JLKENvbnRhY3RzKQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEzMDApCitTT0ZUX0xJTktfRlJBTUVXT1JLKENvbnRh
Y3RzKTsKIFNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3RyZWV0
S2V5LCBOU1N0cmluZyAqKTsKIFNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxB
ZGRyZXNzU3ViTG9jYWxpdHlLZXksIE5TU3RyaW5nICopOwogU09GVF9MSU5LX0NPTlNUQU5UKENv
bnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NDaXR5S2V5LCBOU1N0cmluZyAqKTsKQEAgLTYxLDMwICs0
NywxNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N0YXRl
S2V5LCBOU1N0cmluZyAqKTsKIFNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxB
ZGRyZXNzUG9zdGFsQ29kZUtleSwgTlNTdHJpbmcgKik7CiBTT0ZUX0xJTktfQ09OU1RBTlQoQ29u
dGFjdHMsIENOUG9zdGFsQWRkcmVzc0NvdW50cnlLZXksIE5TU3RyaW5nICopOwogU09GVF9MSU5L
X0NPTlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NJU09Db3VudHJ5Q29kZUtleSwgTlNT
dHJpbmcgKik7Ci1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlv
blJlc3VsdCkKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0UGF5bWVu
dE1ldGhvZFVwZGF0ZSkKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0
U2hpcHBpbmdDb250YWN0VXBkYXRlKQotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVu
dFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSkKLVNPRlRfTElOS19DT05TVEFOVChQYXNzS2l0
LCBQS1BheW1lbnRFcnJvckRvbWFpbiwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQo
UGFzc0tpdCwgUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzLCBOU1N0cmluZyAqKTsKLVNPRlRf
TElOS19DT05TVEFOVChQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZEVtYWlsQWRkcmVzcywgTlNTdHJp
bmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoUGFzc0tpdCwgUEtDb250YWN0RmllbGRQaG9uZU51
bWJlciwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoUGFzc0tpdCwgUEtDb250YWN0
RmllbGROYW1lLCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChQYXNzS2l0LCBQS0Nv
bnRhY3RGaWVsZFBob25ldGljTmFtZSwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQo
UGFzc0tpdCwgUEtQYXltZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5mb0tleSwgTlNTdHJpbmcg
Kik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoUGFzc0tpdCwgUEtQYXltZW50RXJyb3JQb3N0YWxBZGRy
ZXNzVXNlckluZm9LZXksIE5TU3RyaW5nICopOwotI2VuZGlmCiAKLXR5cGVkZWYgdm9pZCAoXlBL
Q2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbikoQk9PTCBpc1ZhbGlkLCBOU0Vycm9yICplcnJvcik7
Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCi1leHRlcm4gIkMiIHZvaWQgUEtDYW5NYWtlUGF5bWVu
dHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9tYWluQW5kU291cmNlQXBwbGljYXRpb24oTlNTdHJp
bmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIE5TU3RyaW5nICpzb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIsIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbiBjb21w
bGV0aW9uKTsKLVNPRlRfTElOS19GVU5DVElPTl9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYktpdCwg
UGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9tYWluQW5k
U291cmNlQXBwbGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcg
KmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwg
UEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmllciwgZG9t
YWluLCBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNvbXBsZXRpb24pKTsK
LSNlbHNlCi1leHRlcm4gIkMiIHZvaWQgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVu
dGlmaWVyQW5kRG9tYWluKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBQ
S0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbik7Ci1TT0ZUX0xJTktfRlVOQ1RJ
T05fTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJLaXQsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRz
V2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiwgdm9pZCwgKE5TU3RyaW5nICppZGVudGlm
aWVyLCBOU1N0cmluZyAqZG9tYWluLCBQS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29tcGxl
dGlvbiksIChpZGVudGlmaWVyLCBkb21haW4sIGNvbXBsZXRpb24pKTsKK1NPRlRfTElOS19DT05T
VEFOVChQQUw6OlBhc3NLaXQsIFBLUGF5bWVudEVycm9yRG9tYWluLCBOU1N0cmluZyAqKTsKK1NP
RlRfTElOS19DT05TVEFOVChQQUw6OlBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVz
cywgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RBTlQoUEFMOjpQYXNzS2l0LCBQS0NvbnRh
Y3RGaWVsZEVtYWlsQWRkcmVzcywgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RBTlQoUEFM
OjpQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBob25lTnVtYmVyLCBOU1N0cmluZyAqKTsKK1NPRlRf
TElOS19DT05TVEFOVChQQUw6OlBhc3NLaXQsIFBLQ29udGFjdEZpZWxkTmFtZSwgTlNTdHJpbmcg
Kik7CitTT0ZUX0xJTktfQ09OU1RBTlQoUEFMOjpQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBob25l
dGljTmFtZSwgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RBTlQoUEFMOjpQYXNzS2l0LCBQ
S1BheW1lbnRFcnJvckNvbnRhY3RGaWVsZFVzZXJJbmZvS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRf
TElOS19DT05TVEFOVChQQUw6OlBhc3NLaXQsIFBLUGF5bWVudEVycm9yUG9zdGFsQWRkcmVzc1Vz
ZXJJbmZvS2V5LCBOU1N0cmluZyAqKTsKICNlbmRpZgogCi0KIEBpbXBsZW1lbnRhdGlvbiBXS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZQogCiAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhQYXltZW50Q29vcmRpbmF0b3JQcm94eTooV2ViS2l0OjpXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eSYpd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkKQEAgLTEwMiw3ICs3NSw3
IEBAIC0gKHZvaWQpaW52YWxpZGF0ZQogICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSA9
IG51bGxwdHI7CiAgICAgaWYgKF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24pIHsKICNpZiAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMw
MCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDExMDAwMCkKLSAgICAgICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihh
ZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRX
aXRoU3RhdHVzOlBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIGVycm9yczpAWyBd
XSkuZ2V0KCkpOworICAgICAgICBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKGFkb3B0TlMo
W1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0
aFN0YXR1czpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBlcnJvcnM6QFsgXV0p
LmdldCgpKTsKICNlbHNlCiAgICAgICAgIF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24oUEtQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUpOwogI2VuZGlmCkBAIC0xMTksNyArOTIs
NyBAQCAtICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcgogICAgIEFTU0VSVCghX3Nlc3Npb25CbG9jayk7
CiAgICAgX3Nlc3Npb25CbG9jayA9IHNlc3Npb25CbG9jazsKIAotICAgIFtnZXRQS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJDbGFzcygpIHBheW1lbnRTZXJ2aWNlc01lcmNoYW50
VVJMOl4oTlNVUkwgKm1lcmNoYW50VVJMLCBOU0Vycm9yICplcnJvcikgeworICAgIFtQQUw6Omdl
dF9QYXNzS2l0X1BLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckNsYXNzKCkgcGF5
bWVudFNlcnZpY2VzTWVyY2hhbnRVUkw6XihOU1VSTCAqbWVyY2hhbnRVUkwsIE5TRXJyb3IgKmVy
cm9yKSB7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIExPR19FUlJPUigiUEtDYW5N
YWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWluIGVycm9yICVAIiwgZXJy
b3IpOwogCkBAIC0xNTUsNyArMTI4LDcgQEAgLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIKIHsKICNp
ZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDAwMCkKICAgICBpZiAoIV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eSkgewotICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW2FsbG9jUEtQYXltZW50QXV0aG9yaXph
dGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6UEtQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF1dKS5nZXQoKSk7CisgICAgICAgIGNvbXBsZXRpb24o
YWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgp
IGluaXRXaXRoU3RhdHVzOlBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIGVycm9y
czpAWyBdXSkuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNzAsNyArMTQz
LDcgQEAgLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIKIHsKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkK
ICAgICBpZiAoIV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0
aW9uKGFkb3B0TlMoW2FsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGVJbnN0
YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpAWyBdXSkuZ2V0KCkpOworICAgICAg
ICBjb21wbGV0aW9uKGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1l
dGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOkBbIF1dKS5n
ZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE4Myw3ICsxNTYsNyBAQCAtICh2
b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlcgogLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVy
IGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOihQS1NoaXBwaW5nTWV0aG9kICopc2hpcHBpbmdNZXRo
b2QgaGFuZGxlcjoodm9pZCAoXikoUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRl
ICp1cGRhdGUpKWNvbXBsZXRpb24gewogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIGlmICgh
X3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oYWRvcHRO
UyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGlu
aXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpAWyBdXSkuZ2V0KCkpOworICAgICAgICBjb21wbGV0
aW9uKGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRh
dGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpAWyBdXSkuZ2V0KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xOTcsNyArMTcwLDcgQEAgLSAodm9pZClwYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIKIHsKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAgICBpZiAoIV93ZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW2FsbG9j
UEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhF
cnJvcnM6QFsgXSBwYXltZW50U3VtbWFyeUl0ZW1zOkBbIF0gc2hpcHBpbmdNZXRob2RzOkBbIF1d
KS5nZXQoKSk7CisgICAgICAgIGNvbXBsZXRpb24oYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVu
dFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoRXJyb3JzOkBb
IF0gcGF5bWVudFN1bW1hcnlJdGVtczpAWyBdIHNoaXBwaW5nTWV0aG9kczpAWyBdXSkuZ2V0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yOTgsNyArMjcxLDcgQEAgYm9vbCBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVudHMoKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAotICAgIHJldHVybiBbZ2V0UEtQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSBjYW5NYWtlUGF5bWVudHNdOworICAgIHJldHVy
biBbUEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJD
bGFzcygpIGNhbk1ha2VQYXltZW50c107CiB9CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5n
JiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5j
dGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTMxMSwxNCArMjg0LDcg
QEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVu
dHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHIKICNlbmRpZgogCiAjaWYgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAw
MDApCi0gICAgaWYgKCFjYW5Mb2FkX1Bhc3NLaXRfUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hh
bnRJZGVudGlmaWVyRG9tYWluQW5kU291cmNlQXBwbGljYXRpb24oKSkgewotICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAg
ICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzb2Z0TGlua19QYXNzS2l0
X1BLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFw
cGxpY2F0aW9uKG1lcmNoYW50SWRlbnRpZmllciwgZG9tYWluTmFtZSwgbV93ZWJQYWdlUHJveHku
cHJvY2VzcygpLnByb2Nlc3NQb29sKCkuY29uZmlndXJhdGlvbigpLnNvdXJjZUFwcGxpY2F0aW9u
U2Vjb25kYXJ5SWRlbnRpZmllcigpLCBCbG9ja1B0cjx2b2lkIChCT09MLCBOU0Vycm9yICopPjo6
ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShCT09MIGNhbk1ha2VQYXltZW50cywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAg
IFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFw
cGxpY2F0aW9uKG1lcmNoYW50SWRlbnRpZmllciwgZG9tYWluTmFtZSwgbV93ZWJQYWdlUHJveHku
cHJvY2VzcygpLnByb2Nlc3NQb29sKCkuY29uZmlndXJhdGlvbigpLnNvdXJjZUFwcGxpY2F0aW9u
U2Vjb25kYXJ5SWRlbnRpZmllcigpLCBCbG9ja1B0cjx2b2lkKEJPT0wsIE5TRXJyb3IgKik+Ojpm
cm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKEJPT0wgY2FuTWFrZVBheW1lbnRzLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAg
ICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIExPR19FUlJPUigiUEtDYW5NYWtlUGF5bWVudHNX
aXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWluIGVycm9yICVAIiwgZXJyb3IpOwogCkBAIC0z
NTQsNyArMzIwLDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1P
cGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnQKICAgICB9CiAjZW5kaWYKIAot
ICAgIGF1dG8gcGFzc0xpYnJhcnkgPSBhZG9wdE5TKFthbGxvY1BLUGFzc0xpYnJhcnlJbnN0YW5j
ZSgpIGluaXRdKTsKKyAgICBhdXRvIHBhc3NMaWJyYXJ5ID0gYWRvcHROUyhbUEFMOjphbGxvY1BL
UGFzc0xpYnJhcnlJbnN0YW5jZSgpIGluaXRdKTsKICAgICBbcGFzc0xpYnJhcnkgb3BlblBheW1l
bnRTZXR1cEZvck1lcmNoYW50SWRlbnRpZmllcjptZXJjaGFudElkZW50aWZpZXIgZG9tYWluOmRv
bWFpbk5hbWUgY29tcGxldGlvbjpCbG9ja1B0cjx2b2lkIChCT09MKT46OmZyb21DYWxsYWJsZShb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQk9PTCByZXN1
bHQpIG11dGFibGUgewogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc3VsdF0gewogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKQEAgLTQxOCw3ICszODQsNyBAQCBzdGF0
aWMgTlNEZWNpbWFsTnVtYmVyICp0b0RlY2ltYWxOdW1iZXIoY29uc3QgU3RyaW5nJiBhbW91bnQp
CiAKIHN0YXRpYyBSZXRhaW5QdHI8UEtQYXltZW50U3VtbWFyeUl0ZW0+IHRvUEtQYXltZW50U3Vt
bWFyeUl0ZW0oY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Okxp
bmVJdGVtJiBsaW5lSXRlbSkKIHsKLSAgICByZXR1cm4gW2dldFBLUGF5bWVudFN1bW1hcnlJdGVt
Q2xhc3MoKSBzdW1tYXJ5SXRlbVdpdGhMYWJlbDpsaW5lSXRlbS5sYWJlbCBhbW91bnQ6dG9EZWNp
bWFsTnVtYmVyKGxpbmVJdGVtLmFtb3VudCkgdHlwZTp0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlw
ZShsaW5lSXRlbS50eXBlKV07CisgICAgcmV0dXJuIFtQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVu
dFN1bW1hcnlJdGVtQ2xhc3MoKSBzdW1tYXJ5SXRlbVdpdGhMYWJlbDpsaW5lSXRlbS5sYWJlbCBh
bW91bnQ6dG9EZWNpbWFsTnVtYmVyKGxpbmVJdGVtLmFtb3VudCkgdHlwZTp0b1BLUGF5bWVudFN1
bW1hcnlJdGVtVHlwZShsaW5lSXRlbS50eXBlKV07CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNB
cnJheT4gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zJiB0b3RhbEFuZExpbmVJdGVtcykK
QEAgLTQ3Nyw3ICs0NDMsNyBAQCBzdGF0aWMgUEtTaGlwcGluZ1R5cGUgdG9QS1NoaXBwaW5nVHlw
ZShXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6UwogCiBzdGF0aWMgUmV0
YWluUHRyPFBLU2hpcHBpbmdNZXRob2Q+IHRvUEtTaGlwcGluZ01ldGhvZChjb25zdCBXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmIHNoaXBwaW5n
TWV0aG9kKQogewotICAgIFJldGFpblB0cjxQS1NoaXBwaW5nTWV0aG9kPiByZXN1bHQgPSBbZ2V0
UEtTaGlwcGluZ01ldGhvZENsYXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6c2hpcHBpbmdNZXRo
b2QubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihzaGlwcGluZ01ldGhvZC5hbW91bnQpXTsK
KyAgICBSZXRhaW5QdHI8UEtTaGlwcGluZ01ldGhvZD4gcmVzdWx0ID0gW1BBTDo6Z2V0X1Bhc3NL
aXRfUEtTaGlwcGluZ01ldGhvZENsYXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6c2hpcHBpbmdN
ZXRob2QubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihzaGlwcGluZ01ldGhvZC5hbW91bnQp
XTsKICAgICBbcmVzdWx0IHNldElkZW50aWZpZXI6c2hpcHBpbmdNZXRob2QuaWRlbnRpZmllcl07
CiAgICAgW3Jlc3VsdCBzZXREZXRhaWw6c2hpcHBpbmdNZXRob2QuZGV0YWlsXTsKIApAQCAtNTEy
LDcgKzQ3OCw3IEBAIHN0YXRpYyBQS1BheW1lbnRSZXF1ZXN0QVBJVHlwZSB0b0FQSVR5cGUoV2Vi
Q29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6CiAKIFJldGFpblB0cjxQS1BheW1l
bnRSZXF1ZXN0PiB0b1BLUGF5bWVudFJlcXVlc3QoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHks
IGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMo
W2FsbG9jUEtQYXltZW50UmVxdWVzdEluc3RhbmNlKCkgaW5pdF0pOworICAgIGF1dG8gcmVzdWx0
ID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RJbnN0YW5jZSgpIGluaXRdKTsK
IAogICAgIFtyZXN1bHQgc2V0T3JpZ2luYXRpbmdVUkw6b3JpZ2luYXRpbmdVUkxdOwogCkBAIC03
NjEsNyArNzI3LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1D
b21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IHN0ZDo6b3B0aW8KIAogI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwKQogICAgIGF1dG8gc3RhdHVzID0gcmVzdWx0ID8gcmVzdWx0LT5zdGF0dXMgOiBXZWJD
b3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6U3VjY2VzczsKLSAgICBhdXRvIHBrUGF5
bWVudEF1dGhvcml6YXRpb25SZXN1bHQgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1dGhvcml6
YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOnRvUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1cyhzdGF0dXMpIGVycm9yczpyZXN1bHQgPyB0b05TRXJyb3JzKHJlc3VsdC0+ZXJy
b3JzKS5nZXQoKSA6IEBbIF1dKTsKKyAgICBhdXRvIHBrUGF5bWVudEF1dGhvcml6YXRpb25SZXN1
bHQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3Rh
bmNlKCkgaW5pdFdpdGhTdGF0dXM6dG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHN0YXR1
cykgZXJyb3JzOnJlc3VsdCA/IHRvTlNFcnJvcnMocmVzdWx0LT5lcnJvcnMpLmdldCgpIDogQFsg
XV0pOwogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5f
cGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKHBrUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQu
Z2V0KCkpOwogI2Vsc2UKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbih0b1BLUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXMocmVzdWx0KSk7CkBAIC03ODcsNyArNzUzLDcgQEAgdm9pZCBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9u
KGNvbnN0IHMKICAgICAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXModXBk
YXRlLT5uZXdUb3RhbEFuZExpbmVJdGVtcyk7CiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKLSAg
ICBhdXRvIHBrU2hpcHBpbmdNZXRob2RVcGRhdGUgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJl
cXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFy
eUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5
bWVudFN1bW1hcnlJdGVtcy5nZXQoKV0pOworICAgIGF1dG8gcGtTaGlwcGluZ01ldGhvZFVwZGF0
ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRh
dGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczptX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCld
KTsKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2Rp
ZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbihwa1NoaXBwaW5nTWV0aG9kVXBkYXRlLmdl
dCgpKTsKICNlbHNlCiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24oUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1c1N1Y2Nlc3MsIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSk7CkBAIC04MzksNyArODA1LDcg
QEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBw
aW5nQ29udGFjdFNlbGVjdGlvbihjb25zdAogICAgIH0KIAogI2lmIChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAw
KQotICAgIGF1dG8gcGtTaGlwcGluZ0NvbnRhY3RVcGRhdGUgPSBhZG9wdE5TKFthbGxvY1BLUGF5
bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoRXJyb3Jz
OnVwZGF0ZSA/IHRvTlNFcnJvcnModXBkYXRlLT5lcnJvcnMpLmdldCgpIDogQFsgXSBwYXltZW50
U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRl
LT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSBzaGlwcGluZ01ldGhvZHM6bV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMuZ2V0KCld
KTsKKyAgICBhdXRvIHBrU2hpcHBpbmdDb250YWN0VXBkYXRlID0gYWRvcHROUyhbUEFMOjphbGxv
Y1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRo
RXJyb3JzOnVwZGF0ZSA/IHRvTlNFcnJvcnModXBkYXRlLT5lcnJvcnMpLmdldCgpIDogQFsgXSBw
YXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRl
bGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSBzaGlwcGluZ01ldGhvZHM6bV9wYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMu
Z2V0KCldKTsKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZS0+X2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24ocGtTaGlwcGluZ0NvbnRhY3RV
cGRhdGUuZ2V0KCkpOwogI2Vsc2UKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24odG9QS1Bh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHVwZGF0ZSksIG1fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzLmdldCgpLCBtX3BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMu
Z2V0KCkpOwpAQCAtODU2LDcgKzgyMiw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKGNvbnN0IHN0CiAgICAg
ICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVu
dFN1bW1hcnlJdGVtcyA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxB
bmRMaW5lSXRlbXMpOwogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCi0gICAgYXV0byBwa1BheW1l
bnRNZXRob2RVcGRhdGUgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0
aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6bV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1z
LmdldCgpXSk7CisgICAgYXV0byBwa1BheW1lbnRNZXRob2RVcGRhdGUgPSBhZG9wdE5TKFtQQUw6
OmFsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRX
aXRoUGF5bWVudFN1bW1hcnlJdGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCldKTsKICAgICBtX3BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFBheW1lbnRNZXRo
b2RDb21wbGV0aW9uKHBrUGF5bWVudE1ldGhvZFVwZGF0ZS5nZXQoKSk7CiAjZWxzZQogICAgIG1f
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0UGF5
bWVudE1ldGhvZENvbXBsZXRpb24obV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpKTsKQEAgLTg3MSw3ICs4MzcsNyBA
QCBWZWN0b3I8U3RyaW5nPiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1BdmFp
bGFibGVQYXltZW50TmV0d29ya3MoKQogICAgICAgICByZXR1cm4geyB9OwogI2VuZGlmCiAgICAg
Ci0gICAgTlNBcnJheTxQS1BheW1lbnROZXR3b3JrPiAqYXZhaWxhYmxlTmV0d29ya3MgPSBbZ2V0
UEtQYXltZW50UmVxdWVzdENsYXNzKCkgYXZhaWxhYmxlTmV0d29ya3NdOworICAgIE5TQXJyYXk8
UEtQYXltZW50TmV0d29yaz4gKmF2YWlsYWJsZU5ldHdvcmtzID0gW1BBTDo6Z2V0X1Bhc3NLaXRf
UEtQYXltZW50UmVxdWVzdENsYXNzKCkgYXZhaWxhYmxlTmV0d29ya3NdOwogICAgIFZlY3RvcjxT
dHJpbmc+IHJlc3VsdDsKICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhdmFpbGFi
bGVOZXR3b3Jrcy5jb3VudCk7CiAgICAgZm9yIChQS1BheW1lbnROZXR3b3JrIG5ldHdvcmsgaW4g
YXZhaWxhYmxlTmV0d29ya3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
cHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1Mu
bW0KaW5kZXggYzBkZjNjODlkYjRjZjQxNzQ5OGFjMjY4ZTk5ZTExNWJhNDA1ZDc2Mi4uZjllMjgw
ZDFjOTU2YTZkOGRlNzI1NDFmZmYwOTdmNThjZGVhYTg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAtMzQsMTAgKzM0LDcgQEAKICNpbXBvcnQgPFBhc3NL
aXQvUGFzc0tpdC5oPgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Q29udHJvbGxlci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgotI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkKLVNPRlRfTElOS19D
TEFTUyhQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOworI2lt
cG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IApAQCAtNTQsNyArNTEsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0
Zm9ybVNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaQogCiAgICAgYXV0byBw
YXltZW50UmVxdWVzdCA9IHRvUEtQYXltZW50UmVxdWVzdChtX3dlYlBhZ2VQcm94eSwgb3JpZ2lu
YXRpbmdVUkwsIGxpbmtJY29uVVJMU3RyaW5ncywgcmVxdWVzdCk7CiAKLSAgICBtX3BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50UmVxdWVzdDpw
YXltZW50UmVxdWVzdC5nZXQoKV0pOworICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3Qu
Z2V0KCldKTsKICAgICBpZiAoIW1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcikg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5
L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQppbmRleCA3NDE1OTM4M2YxOTU0
MjdkYjk3NjBhOGMwMWVjNzA2N2E2N2M2Zjk1Li5hNGQzMDk2OWMyZTY4NmZjZjRlZGI3ZDU1OThi
ZThhNDc4OGFjODIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBh
eS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1t
CkBAIC0zMCwxNCArMzAsMTEgQEAKIAogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0
ICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgiCi0jaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4K
ICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAK
LVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChQYXNzS2l0KQotCi1TT0ZUX0xJ
TktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsK
LVNPRlRfTElOS19DT05TVEFOVChQYXNzS2l0LCBQS0V4dGVuc2lvblBheW1lbnRBdXRob3JpemF0
aW9uVUlFeHRlbnNpb25Qb2ludE5hbWUsIE5TU3RyaW5nICopOworU09GVF9MSU5LX0NPTlNUQU5U
KFBBTDo6UGFzc0tpdCwgUEtFeHRlbnNpb25QYXltZW50QXV0aG9yaXphdGlvblVJRXh0ZW5zaW9u
UG9pbnROYW1lLCBOU1N0cmluZyAqKTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355387</attachid>
            <date>2018-11-20 22:09:12 -0800</date>
            <delta_ts>2018-11-21 08:45:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191875-20181120220911.patch</filename>
            <type>text/plain</type>
            <size>56763</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQxMWQ5ZGVmOGIxMzhiNzExMTYwMWFh
YmVjYTM1OGQ4MTAxMDJhNzcuLjQxZWQzNjEzZDQxMTNjZTM5NTliMjA4ZDJmZmMzYmM3NjU5YmZh
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUg
Zm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MTg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL2NvY29hL1NvZnRMaW5raW5nLmg6CisKIDIwMTgtMTEtMTQgIEtlaXRoIFJvbGxp
biAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCAjZW5kIHZzLiAjZW5kaWYgdHlw
by4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwZjc0ZjdhMTlhOTQyMWNmNmNlMzMzYzFmMDY3ZmE2YWVlZTRlOGI3
Li5kY2MzZjI0NDcwZjMxNTYzZWYyMGJiM2VkNGZhYWI0ZWM0ZWUwMGUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBhc3NL
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg3
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9k
dWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydCk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50
TWVyY2hhbnRTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50TWVyY2hh
bnRTZXNzaW9uOjpmcm9tSlMpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUNvY29hOjpwYWludEFwcGxlUGF5QnV0dG9uKToKKwogMjAxOC0xMS0yMCAgRGVhbiBK
YWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZpbmcgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmUgZnJvbSBXZWJMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMGVkZWU1YzNh
YzhkZTI4NTA2NDUxNzY1ZTIwMTUwYmFlOGMzODlmNy4uMWE0MTg4Zjc1NDBjYWFjM2U3NTc1YWFi
ZGMxNTUxM2VlOGQ3NDJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2Nv
YV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOiBBZGRlZC4K
KyAgICAgICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tOiBBZGRlZC4KKyAgICAgICAg
KiBwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaDoKKwogMjAxOC0xMS0xNyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBSZW1vdmUgYWxsIHVz
YWdlcyBvZiBVSUl0ZW1Qcm92aWRlciwgVUlJdGVtUHJvdmlkZXJSZWFkaW5nLCBhbmQgcmVsYXRl
ZCBjbGFzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZlOGUzZTRkOGEwOWUxYmUzZjljYjU1ZmM3OTk0MTAyNTFk
YWI5NjUuLjMzZmY1NzA4NjViZjkyZTRkZGQxOGNkYTg4ZDE3ZmNiMDg4YzkyN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzcgQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBh
c3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MTg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRDb250YWN0Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPjo6
ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0
aG9kPjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgaW52YWxpZGF0ZV0pOgorICAgICAgICAoLVtX
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyOmRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246XSk6CisgICAg
ICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkQXV0aG9yaXplUGF5bWVudDpoYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFBheW1lbnRN
ZXRob2Q6aGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRT
ZWxlY3RTaGlwcGluZ01ldGhvZDpoYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyOmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDpoYW5kbGVyOl0pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVu
dHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXApOgorICAgICAg
ICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKToKKyAgICAgICAgKFdlYktpdDo6dG9Q
S1NoaXBwaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29t
cGxldGVQYXltZW50U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0
ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUF2
YWlsYWJsZVBheW1lbnROZXR3b3Jrcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2lv
cy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5t
bToKKwogMjAxOC0xMS0yMCAgSmVmZiBNaWxsZXIgIDxqZWZmbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV0dXJuIG51bGxwdHIgaW1tZWRpYXRlbHkgaWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0IGlu
IHRoZSBIYXNoTWFwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvU29mdExpbmtp
bmcuaCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1NvZnRMaW5raW5nLmgKaW5kZXggNmFlZWRhZTRh
NjYzMzQ1NzYwNmJhN2UxY2JlZmZmNWVhNjNjMDgyZi4uZGQ2ZTc5YmM2ZWJlNTU5NjkxOGE2MGQ5
MWE4MjZkZTFkZDhiNmZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvU29mdExp
bmtpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Tb2Z0TGlua2luZy5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMS0yMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzQwLDkgKzM0MCw5IEBACiAgICAgfSBcCiAgICAgfQogCi0jZGVmaW5lIFNPRlRf
TElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrKSBc
CisjZGVmaW5lIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChmdW5j
dGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBleHBvcnQpIFwKICAgICBuYW1lc3BhY2UgZnVuY3Rp
b25OYW1lc3BhY2UgeyBcCi0gICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KGJvb2wgaXNPcHRp
b25hbCA9IGZhbHNlKTsgXAorICAgIGV4cG9ydCB2b2lkKiBmcmFtZXdvcmsjI0xpYnJhcnkoYm9v
bCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCiAgICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KGJv
b2wgaXNPcHRpb25hbCkgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgdm9pZCogZnJhbWV3b3Jr
TGlicmFyeTsgXApAQCAtMzU2LDkgKzM1NiwxMiBAQAogICAgIH0gXAogICAgIH0KIAotI2RlZmlu
ZSBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFj
ZSwgZnJhbWV3b3JrKSBcCisjZGVmaW5lIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShm
dW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrKSBcCisgICAgU09GVF9MSU5LX0ZSQU1FV09SS19G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssICkKKwor
I2RlZmluZSBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBleHBvcnQpIFwKICAgICBuYW1lc3BhY2Ug
ZnVuY3Rpb25OYW1lc3BhY2UgeyBcCi0gICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KGJvb2wg
aXNPcHRpb25hbCA9IGZhbHNlKTsgXAorICAgIGV4cG9ydCB2b2lkKiBmcmFtZXdvcmsjI0xpYnJh
cnkoYm9vbCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCiAgICAgdm9pZCogZnJhbWV3b3JrIyNMaWJy
YXJ5KGJvb2wgaXNPcHRpb25hbCkgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgdm9pZCogZnJh
bWV3b3JrTGlicmFyeTsgXApAQCAtMzcyLDYgKzM3NSw5IEBACiAgICAgfSBcCiAgICAgfQogCisj
ZGVmaW5lIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19GT1JfU09VUkNFKGZ1bmN0aW9uTmFt
ZXNwYWNlLCBmcmFtZXdvcmspIFwKKyAgICBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCApCisKICNk
ZWZpbmUgU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1l
d29yaywgY2xhc3NOYW1lKSBcCiAgICAgQGNsYXNzIGNsYXNzTmFtZTsgXAogICAgIG5hbWVzcGFj
ZSBmdW5jdGlvbk5hbWVzcGFjZSB7IFwKQEAgLTM4MywxMSArMzg5LDExIEBACiAgICAgfSBcCiAg
ICAgfQogCi0jZGVmaW5lIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNw
YWNlLCBmcmFtZXdvcmssIGNsYXNzTmFtZSkgXAorI2RlZmluZSBTT0ZUX0xJTktfQ0xBU1NfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBjbGFzc05h
bWUsIGV4cG9ydCkgXAogICAgIEBjbGFzcyBjbGFzc05hbWU7IFwKICAgICBuYW1lc3BhY2UgZnVu
Y3Rpb25OYW1lc3BhY2UgeyBcCiAgICAgc3RhdGljIENsYXNzIGluaXQjI2NsYXNzTmFtZSgpOyBc
Ci0gICAgQ2xhc3MgKCpnZXRfIyNmcmFtZXdvcmsjI18jI2NsYXNzTmFtZSMjQ2xhc3MpKCkgPSBp
bml0IyNjbGFzc05hbWU7IFwKKyAgICBleHBvcnQgQ2xhc3MgKCpnZXRfIyNmcmFtZXdvcmsjI18j
I2NsYXNzTmFtZSMjQ2xhc3MpKCkgPSBpbml0IyNjbGFzc05hbWU7IFwKICAgICBzdGF0aWMgQ2xh
c3MgY2xhc3MjI2NsYXNzTmFtZTsgXAogICAgIFwKICAgICBzdGF0aWMgQ2xhc3MgY2xhc3NOYW1l
IyNGdW5jdGlvbigpIFwKQEAgLTQwOCw2ICs0MTQsOSBAQAogICAgIH0gXAogICAgIH0KIAorI2Rl
ZmluZSBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrLCBjbGFzc05hbWUpIFwKKyAgICBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VY
UE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBjbGFzc05hbWUsICkKKwogI2RlZmlu
ZSBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSkgXAogICAgIFdURl9FWFRFUk5fQ19CRUdJ
TiBcCiAgICAgZXh0ZXJuIGNvbnN0IHZhcmlhYmxlVHlwZSB2YXJpYWJsZU5hbWU7IFwKQEAgLTQ4
OSwxMyArNDk4LDEzIEBACiAgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWVzcGFjZTo6c29mdExp
bmsjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlck5hbWVzOyBcCiAgICAgfQogCi0j
ZGVmaW5lIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNwYWNlLCBm
cmFtZXdvcmssIGZ1bmN0aW9uTmFtZSwgcmVzdWx0VHlwZSwgcGFyYW1ldGVyRGVjbGFyYXRpb25z
LCBwYXJhbWV0ZXJOYW1lcykgXAorI2RlZmluZSBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUs
IHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMsIGV4cG9y
dCkgXAogICAgIFdURl9FWFRFUk5fQ19CRUdJTiBcCiAgICAgcmVzdWx0VHlwZSBmdW5jdGlvbk5h
bWUgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCiAgICAgV1RGX0VYVEVSTl9DX0VORCBcCiAgICAg
bmFtZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAogICAgIHN0YXRpYyByZXN1bHRUeXBlIGlu
aXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9uczsgXAotICAg
IHJlc3VsdFR5cGUgKCpzb2Z0TGluayMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUpIHBhcmFtZXRl
ckRlY2xhcmF0aW9ucyA9IGluaXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lOyBcCisgICAgZXhw
b3J0IHJlc3VsdFR5cGUoKnNvZnRMaW5rIyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSkgcGFyYW1l
dGVyRGVjbGFyYXRpb25zID0gaW5pdCMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWU7IFwKICAgICBz
dGF0aWMgcmVzdWx0VHlwZSBpbml0IyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSBwYXJhbWV0ZXJE
ZWNsYXJhdGlvbnMgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9u
Y2U7IFwKQEAgLTUwNyw2ICs1MTYsOSBAQAogICAgIH0gXAogICAgIH0KIAorI2RlZmluZSBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBm
dW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVy
TmFtZXMpIFwKKyAgICBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChm
dW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBh
cmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMsICkKKwogI2RlZmluZSBTT0ZUX0xJ
TktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFy
YW1ldGVyTmFtZXMpIFwKICAgICBXVEZfRVhURVJOX0NfQkVHSU4gXAogICAgIHJlc3VsdFR5cGUg
ZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9uczsgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29h
Lm1tCmluZGV4IDBiMDIwNGM4NmQ4YTM2YTVkNGE3NTI5OGQwZjQxYTM0NDYxNTAzZWUuLmNjOTdm
ZDVlMWY2MjM0NTk5ZWI4ODRjYTgxODdmYjJjZDA4NTdjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRhY3RDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29j
b2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbXBvcnQgIkFwcGxlUGF5UGF5bWVudENvbnRh
Y3QuaCIKICNpbXBvcnQgPENvbnRhY3RzL0NvbnRhY3RzLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4K
ICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCkBAIC0zOCwxNCArMzgsNiBAQCBTT0ZUX0xJTktfRlJBTUVXT1JLKENvbnRhY3Rz
KQogU09GVF9MSU5LX0NMQVNTKENvbnRhY3RzLCBDTk11dGFibGVQb3N0YWxBZGRyZXNzKQogU09G
VF9MSU5LX0NMQVNTKENvbnRhY3RzLCBDTlBob25lTnVtYmVyKQogCi0jaWYgUExBVEZPUk0oTUFD
KQotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFBhc3NLaXQpCi0jZWxzZQotU09GVF9MSU5L
X0ZSQU1FV09SSyhQYXNzS2l0KQotI2VuZGlmCi0KLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQ
S0NvbnRhY3QpCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE5TU3RyaW5nICpzdWJM
b2NhbGl0eShDTlBvc3RhbEFkZHJlc3MgKmFkZHJlc3MpCkBAIC0xMDYsNyArOTgsNyBAQCBzdGF0
aWMgdm9pZCBzZXRTdWJBZG1pbmlzdHJhdGl2ZUFyZWEoQ05NdXRhYmxlUG9zdGFsQWRkcmVzcyAq
YWRkcmVzcywgTlNTdHJpbmcgKgogCiBzdGF0aWMgUmV0YWluUHRyPFBLQ29udGFjdD4gY29udmVy
dCh1bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBBcHBsZVBheVBheW1lbnRDb250YWN0JiBjb250YWN0
KQogewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS0NvbnRhY3RJbnN0YW5jZSgp
IGluaXRdKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS0NvbnRhY3RJ
bnN0YW5jZSgpIGluaXRdKTsKIAogICAgIE5TU3RyaW5nICpmYW1pbHlOYW1lID0gbmlsOwogICAg
IE5TU3RyaW5nICpwaG9uZXRpY0ZhbWlseU5hbWUgPSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNo
YW50U2Vzc2lvbkNvY29hLm1tCmluZGV4IDgxYzhjY2I3MzhhN2Y5MzU0MTIxYzhhMjhkNjc5MzVj
MzEyNzZjYWIuLmZjMzZjODk1MzE0OWY0MzMwYmQ5NTFhNmFlYzIyYjhlZmIyZTBkYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNo
YW50U2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
Y29jb2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDE2ICsyOSw3IEBACiAjaWYg
RU5BQkxFKEFQUExFX1BBWSkKIAogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNPTk9iamVjdC5o
PgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+Ci0jaW1wb3J0IDx3dGYvU29m
dExpbmtpbmcuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElOS19QUklWQVRFX0ZSQU1F
V09SSyhQYXNzS2l0KQotI2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkKLSNlbmRp
ZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uKQor
I2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTUzLDcgKzQ0LDcgQEAgc3RkOjpvcHRpb25hbDxQYXltZW50TWVyY2hhbnRTZXNz
aW9uPiBQYXltZW50TWVyY2hhbnRTZXNzaW9uOjpmcm9tSlMoSlNDOjpFeGVjU3QKICAgICBpZiAo
IWRpY3Rpb25hcnkgfHwgIVtkaWN0aW9uYXJ5IGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBj
bGFzc11dKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBwa1BheW1l
bnRNZXJjaGFudFNlc3Npb24gPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudE1lcmNoYW50U2Vzc2lv
bkluc3RhbmNlKCkgaW5pdFdpdGhEaWN0aW9uYXJ5OmRpY3Rpb25hcnldKTsKKyAgICBhdXRvIHBr
UGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRNZXJj
aGFudFNlc3Npb25JbnN0YW5jZSgpIGluaXRXaXRoRGljdGlvbmFyeTpkaWN0aW9uYXJ5XSk7CiAK
ICAgICByZXR1cm4gUGF5bWVudE1lcmNoYW50U2Vzc2lvbihwa1BheW1lbnRNZXJjaGFudFNlc3Np
b24uZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDIxNTUyZGY3Zjc1ZmM1MzliYjg3NTZkMDg0OWI1NGQ2ODY5NTU0
MDkuLjc3ZjI0NjczZTUxNzM2OTdmNWNiY2U3ZWMzYTQ1MjE2Y2Y0ODMxMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMSw2
ICsxMzEsOCBAQAogCQlBMTE3NUI1ODFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFBy
b3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMTc1QjU2MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwICov
OyB9OwogCQlBMTE3NUI1QTFGNkI0QTg0MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE3NUI1OTFGNkI0
QTg0MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggKi87IH07CiAJCUExRjU1RENGMUY1NTI4
RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJ
LmggKi87IH07CisJCUExRjYzQzlGMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjYzQzlE
MjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLzsgfTsKKwkJQTFGNjNDQTAy
MUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjYzQzlFMjFBNERCRjcwMDZGQjQzQiAvKiBQ
YXNzS2l0U29mdExpbmsubW0gKi87IH07CiAJCUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBL
aWxsUmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIy
MUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJp
bmcuY3BwICovOyB9OwogCQlBMzBENDEyNTFGMEREMTJEMDBCNzE5NTQgLyogS2lsbFJpbmdNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzBENDEy
NDFGMEREMTJEMDBCNzE5NTQgLyogS2lsbFJpbmdNYWMubW0gKi87IH07CkBAIC0yODcsNiArMjg5
LDggQEAKIAkJQTExNzVCNTYxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE3NUI1OTFGNkI0QTg0MDBDNEI5RjAgLyogTlNT
Y3JvbGxWaWV3U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TU2Nyb2xsVmlld1NQSS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMUY1NURDRTFGNTUyOEVDMDBFREI3NUYgLyogTWV0YWRh
dGFTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0YWRhdGFTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTFGNjNDOUQyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQYXNzS2l0U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTFGNjNDOUUyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3NLaXRTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtpbGxSaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUEzMEQ0MTFGMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLaWxsUmluZy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTI0MUYwREQxMkQwMEI3MTk1NCAvKiBLaWxs
UmluZ01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEtpbGxS
aW5nTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTYwLDYgKzU2NCw4IEBA
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUY0NDI5MTY2MUZBNTI3
MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1tICovLAorCQkJCUExRjYzQzlE
MjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLywKKwkJCQlBMUY2M0M5RTIx
QTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tICovLAogCQkJKTsKIAkJCXBhdGgg
PSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03MjksNiArNzM1LDcgQEAK
IAkJCQkwQzc3ODU5RDFGNDUxMzBGMDBGNEVCQjYgLyogTlNXaW5kb3dTUEkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU3MEFCOEY5MjBBRjZFM0QwMEI4QkU4NyAvKiBOU1hQQ0Nvbm5lY3Rpb25TUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBDNUFGOTFGMUY0M0E0QzcwMDJFQUMwMiAvKiBPcGVuR0xF
U1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFGNjNDOUYyMUE0REJGNzAwNkZCNDNCIC8qIFBh
c3NLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNTUxRjNCRUI0OTAwREJD
MzE3IC8qIFBhc3NLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTlFMUY0NTEzMEYw
MEY0RUJCNiAvKiBQSVBTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMTc1QjRFMUY2QjMzNzMw
MEM0QjlGMCAvKiBQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovLApAQCAtODU0LDYgKzg2MSw3IEBA
CiAJCQkJQTMwRDQxMjUxRjBERDEyRDAwQjcxOTU0IC8qIEtpbGxSaW5nTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUM0ODc2RDgxRjhEN0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMENGOTlDQTQxRjczNjM3NTAwN0VFNzkzIC8qIE1lZGlhVGltZUFWRm91
bmRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUY2M0NBMDIxQTREQkY3MDA2RkI0M0Ig
LyogUGFzc0tpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTExNzVCNEYxRjZCMzM3
MzAwQzRCOUYwIC8qIFBvcHVwTWVudS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUEzQzY2Q0RDMUY0
NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZF
NTIxRjNEMURDNTAwOUMxNEIxIC8qIFNsZWVwRGlzYWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5o
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42NjVlN2JjYWU2MWRhZTlkZGVjNTNjMjVkYWRhOGYwZDJhNTU2M2U3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaApA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9S
TShDT0NPQSkKKworI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CisjaW1wb3J0
IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKFBB
TCwgUGFzc0tpdCkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0
LCBQS0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1Jl
Y3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVudEJ1dHRvblR5cGUgdHlwZSwgUEtQ
YXltZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICpsYW5ndWFnZUNvZGUpLCAoY29udGV4
dCwgZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFuZ3VhZ2VDb2RlKSkKKworU09GVF9M
SU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3QpCitTT0ZUX0xJTktf
Q0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGFzc0xpYnJhcnkpCitTT0ZUX0xJTktf
Q0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5bWVudCkKK1NPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1l
bnRNZXRob2QpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5
bWVudE1lcmNoYW50U2Vzc2lvbikKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50UmVxdWVzdCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwg
UGFzc0tpdCwgUEtQYXltZW50U3VtbWFyeUl0ZW0pCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURF
UihQQUwsIFBhc3NLaXQsIFBLU2hpcHBpbmdNZXRob2QpCisKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMCkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwg
UEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9tYWluQW5kU291cmNlQXBw
bGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwg
TlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgUEtDYW5NYWtl
UGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmllciwgZG9tYWluLCBzb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNvbXBsZXRpb24pKQorU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhN
ZXJjaGFudElkZW50aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwg
TlNTdHJpbmcgKmRvbWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24p
LCAoaWRlbnRpZmllciwgZG9tYWluLCBjb21wbGV0aW9uKSkKKworU09GVF9MSU5LX0NMQVNTX0ZP
Ul9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0KQorU09G
VF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0UGF5
bWVudE1ldGhvZFVwZGF0ZSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tp
dCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSkKK1NPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9k
VXBkYXRlKQorI2VuZGlmCisKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjMy
NWMxNTViYzVjYzJiYjkxYWM4YjAwZDYwMjA5OGMzMjEwODE3YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tCkBAIC0wLDAg
KzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JN
KENPQ09BKQorCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQg
PHd0Zi9Tb2Z0TGlua2luZy5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorU09GVF9MSU5LX1BSSVZB
VEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQQUxfRVhQ
T1JUKQorI2Vsc2UKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIFBhc3NLaXQsIFBBTF9FWFBPUlQpCisjZW5kaWYKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoUEFMLCBQYXNzS2l0LCBQS0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29u
dGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVu
dEJ1dHRvblR5cGUgdHlwZSwgUEtQYXltZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICps
YW5ndWFnZUNvZGUpLCAoY29udGV4dCwgZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFu
Z3VhZ2VDb2RlKSkKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFM
LCBQYXNzS2l0LCBQS0NvbnRhY3QsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGFzc0xpYnJhcnksIFBBTF9FWFBPUlQp
CitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
UGF5bWVudCwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLCBQ
QUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQ
YXNzS2l0LCBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24sIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktf
Q0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudE1ldGhv
ZCwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdCwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFT
U19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U3VtbWFyeUl0
ZW0sIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIFBhc3NLaXQsIFBLU2hpcHBpbmdNZXRob2QsIFBBTF9FWFBPUlQpCisKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTMwMCkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlm
aWVyRG9tYWluQW5kU291cmNlQXBwbGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmll
ciwgTlNTdHJpbmcgKmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllciwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRl
bnRpZmllciwgZG9tYWluLCBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNv
bXBsZXRpb24pLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50
aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRv
bWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmll
ciwgZG9tYWluLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKKworU09GVF9MSU5LX0NMQVNTX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9u
UmVzdWx0LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBP
UlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSwgUEFM
X0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSwgUEFMX0VYUE9SVCkK
K1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQ
YXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlLCBQQUxfRVhQT1JUKQorI2VuZGlmCisK
KyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NvY29hL1Bhc3NLaXRTUEkuaAppbmRleCBiNWU1OTMwMzI3MWZiNTgxYWIzNDlhYjk1Zjc0MzIw
OTE0OGFhMjU4Li41Mjc5ZTg3MWE3ZmZjZGU0MGEzN2JiZjM2OTc2NmZjZGRjZDU1MDkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCkBAIC0yMjUs
NyArMjI1LDcgQEAgdHlwZWRlZiBOU1N0cmluZyAqIFBLUGF5bWVudE5ldHdvcmsgTlNfRVhURU5T
SUJMRV9TVFJJTkdfRU5VTTsKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKLSNlbmRpZgorI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIApAQCAtMjYx
LDcgKzI2MSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBQS1BheW1lbnRSZXF1ZXN0
QVBJVHlwZSkgewogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAotI2VuZGlmCisjZW5kaWYgLy8g
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShBUFBM
RV9JTlRFUk5BTF9TREspCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBQS1BheW1lbnRCdXR0
b25TdHlsZSkgewpAQCAtMzI0LDQgKzMyNCw2IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU1N0cmluZyAqQ1REYXRhQ29ubmVjdGlvblNl
cnZpY2VUeXBlOwogQGVuZAogCit0eXBlZGVmIHZvaWQgKF5QS0Nhbk1ha2VQYXltZW50c0NvbXBs
ZXRpb24pKEJPT0wgaXNWYWxpZCwgTlNFcnJvciAqKTsKKwogTlNfQVNTVU1FX05PTk5VTExfRU5E
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBhMTQ4MGZiYTZmOTQwYTZiNjg3ZDNjM2U5MGYw
YTUxZjEzMWY3NzFiLi42NWViYzg0MzY2MjAxZDU4OWY3NGE1YTVmZjU0OTgxM2JlZmJhNzA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTU4OCw3ICs1ODgsNyBAQCBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5jcHAKIAogICAgIE1vZHVs
ZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCiAgICAgTW9kdWxlcy9hcHBsZXBheS9j
b2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tCi0gICAgTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9Q
YXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0gQG5vLXVuaWZ5CisgICAgTW9kdWxlcy9hcHBs
ZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0KICAgICBNb2R1bGVzL2Fw
cGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQogCiAgICAgTW9kdWxlcy9hcHBsZXBh
eS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMyMzM0YzYw
NGU3M2I4NjA4MjViODkwNTdiYzlhODk0MTk5ZWIxMzUuLmE3NTNhYTA2MzMwNWNlMTgxZDkyOWIw
MzUwNDc2Nzg5OWMzMGQzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ0NzEsNyArNDQ3MSw2IEBACiAJCURFNUY4NjBEMUZB
MjM4NkIwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDc4LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4NUQyMUZBMjM4NTYwMDZEQjYzQSAvKiBV
bmlmaWVkU291cmNlNDc4LmNwcCAqLzsgfTsKIAkJREU1Rjg2MEUxRkEyMzg2QjAwNkRCNjNBIC8q
IFVuaWZpZWRTb3VyY2U0NzkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gREU1Rjg1Q0YxRkEyMzg1MDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0Nzku
Y3BwICovOyB9OwogCQlERTVGODYwRjFGQTIzODZCMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ4
MC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTVG
ODVEMzFGQTIzODU5MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ4MC5jcHAgKi87IH07Ci0JCURF
NUY4NjEwMUZBMjM4RDkwMDZEQjYzQSAvKiBQYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQURBNEExQjFE
MjJGMkMwMDA1QTlBMTUgLyogUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tICovOyB9Owog
CQlERTVGODYxMTFGQTIzOURBMDA2REI2M0EgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0UyOUU1
QzE2N0E4QTE5MDA1ODZEM0QgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAgKi87IH07
CiAJCURFNUY4NjEyMUZBMjM5RTcwMDZEQjYzQSAvKiBKU0dDT2JzZXJ2YXRpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTRFQUUxQ0Y2NjU0
QTAwNDcyM0M0IC8qIEpTR0NPYnNlcnZhdGlvbi5jcHAgKi87IH07CiAJCURFNUY4NjFEMUZBMjgx
NUIwMDZEQjYzQSAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBNDc4QTdFMTZDRDcwQzMw
MDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSAqLzsgfTsKQEAg
LTMyMzQ1LDcgKzMyMzQ0LDYgQEAKIAkJCQlBMzFDNEU0RDE2RTAyQUE2MDAyRjc5NTcgLyogT0VT
VGV4dHVyZUhhbGZGbG9hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTA3OENDNzE4ODBBQUI1
MDA4MDk5REMgLyogT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3N0ExN0E3MTEyRjI4MTgyMDA0RTAyRjYgLyogT0VTVmVydGV4QXJyYXlPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg2MTAxRkEyMzhEOTAwNkRCNjNBIC8qIFBheW1lbnRN
ZXJjaGFudFNlc3Npb25Db2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFQTI4NDY2MjE0MUU4
NDkwMEU0MDdFOCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUFBMTJERjQ5MTc0M0RGODMwMDREQUZERiAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBMjlBMzAxQ0JGNzRENDAwOTAxQ0NGIC8qIFBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCmluZGV4IGI0YWFmNjQyMWQyYjZk
M2M1YjMwZGVhYTc0ZTNlNzI2MzI5ZDJhY2QuLmNiNjEwODI5MmE0ODk4NmMxOWM3OGIxMTQ0MGEx
NTc3MmEwZWE5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNv
Y29hLm1tCkBAIC0zMiwxNiArMzIsNyBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAotI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtp
bmcuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhQ
YXNzS2l0KTsKLSNlbHNlCi1TT0ZUX0xJTktfRlJBTUVXT1JLKFBhc3NLaXQpOwotI2VuZGlmCi0K
LVNPRlRfTElOS19NQVlfRkFJTChQYXNzS2l0LCBQS0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwg
KENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBL
UGF5bWVudEJ1dHRvblR5cGUgdHlwZSwgUEtQYXltZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3Ry
aW5nICpsYW5ndWFnZUNvZGUpLCAoY29udGV4dCwgZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHls
ZSwgbGFuZ3VhZ2VDb2RlKSk7CisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+
CiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZKQogCkBAIC0xMDgsOSArOTksNiBAQCBzdGF0
aWMgUEtQYXltZW50QnV0dG9uVHlwZSB0b1BLUGF5bWVudEJ1dHRvblR5cGUoQXBwbGVQYXlCdXR0
b25UeXBlIHR5cGUpCiAKIGJvb2wgUmVuZGVyVGhlbWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1dHRv
bihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UmVjdCYgcGFpbnRSZWN0KQogewotICAgIGlmICghY2FuTG9hZFBLRHJhd0Fw
cGxlUGF5QnV0dG9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0U2hvdWxkU21vb3RoRm9udHModHJ1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29h
Lm1tCmluZGV4IDM1Zjk4YjExYjdmMWE5MjEyOWFlZGI0MjEyMmFiMGI4NTkwNzkyMjUuLmQwZTM3
NDUyMDZkZDk4YWI3NGI2ZjRkMTU1Yjg4Mjc2ZGE1ODZlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBA
IC0zMCwyMCArMzAsOCBAQAogCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0IDxX
ZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmg+CisjaW1wb3J0IDxwYWwvY29jb2Ev
UGFzc0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZl
clNQSS5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+Ci0jaW1wb3J0IDx3
dGYvU29mdExpbmtpbmcuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElOS19QUklWQVRF
X0ZSQU1FV09SSyhQYXNzS2l0KQotI2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkK
LSNlbmRpZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtDb250YWN0KTsKLVNPRlRfTElO
S19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnQpOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBL
UGF5bWVudE1ldGhvZCk7Ci1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50TWVyY2hh
bnRTZXNzaW9uKTsKIAogbmFtZXNwYWNlIElQQyB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
QEAgLTY3LDcgKzU1LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6UGF5bWVudCYKICAgICBhdXRvIGRhdGEg
PSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8
dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSkpIGxl
bmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsKICAgICBhdXRvIHVu
YXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoZGF0YS5nZXQoKSk7CiAgICAgQHRy
eSB7Ci0gICAgICAgIFBLUGF5bWVudCAqcGtQYXltZW50ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2Jq
ZWN0T2ZDbGFzczpnZXRQS1BheW1lbnRDbGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RP
YmplY3RLZXldOworICAgICAgICBQS1BheW1lbnQgKnBrUGF5bWVudCA9IFt1bmFyY2hpdmVyIGRl
Y29kZU9iamVjdE9mQ2xhc3M6UEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRDbGFzcygpIGZvcktl
eTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwogICAgICAgICBwYXltZW50ID0gUGF5bWVu
dChwa1BheW1lbnQpOwogICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBQS1BheW1lbnQ6ICVAIiwgZXhjZXB0
aW9uKTsKQEAgLTExOCw3ICsxMDYsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5
bWVudENvbnRhY3Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6UAogICAgIGF1
dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29u
c3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2UuZGF0
YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwogICAg
IGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRhLmdldCgpKTsK
ICAgICBAdHJ5IHsKLSAgICAgICAgUEtDb250YWN0ICpwa0NvbnRhY3QgPSBbdW5hcmNoaXZlciBk
ZWNvZGVPYmplY3RPZkNsYXNzOmdldFBLQ29udGFjdENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNo
aXZlUm9vdE9iamVjdEtleV07CisgICAgICAgIFBLQ29udGFjdCAqcGtDb250YWN0ID0gW3VuYXJj
aGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdENsYXNz
KCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgICAgIHBheW1lbnRD
b250YWN0ID0gUGF5bWVudENvbnRhY3QocGtDb250YWN0KTsKICAgICB9IEBjYXRjaCAoTlNFeGNl
cHRpb24gKmV4Y2VwdGlvbikgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUg
UEtDb250YWN0OiAlQCIsIGV4Y2VwdGlvbik7CkBAIC0xNzUsNyArMTYzLDcgQEAgYm9vbCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgV2UKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBp
bml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZv
aWQqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBm
cmVlV2hlbkRvbmU6Tk9dKTsKICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVy
RnJvbURhdGEoZGF0YS5nZXQoKSk7CiAgICAgQHRyeSB7Ci0gICAgICAgIFBLUGF5bWVudE1lcmNo
YW50U2Vzc2lvbiAqcGtQYXltZW50TWVyY2hhbnRTZXNzaW9uID0gW3VuYXJjaGl2ZXIgZGVjb2Rl
T2JqZWN0T2ZDbGFzczpnZXRQS1BheW1lbnRNZXJjaGFudFNlc3Npb25DbGFzcygpIGZvcktleTpO
U0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOworICAgICAgICBQS1BheW1lbnRNZXJjaGFudFNl
c3Npb24gKnBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVj
dE9mQ2xhc3M6UEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRNZXJjaGFudFNlc3Npb25DbGFzcygp
IGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwogICAgICAgICBwYXltZW50TWVy
Y2hhbnRTZXNzaW9uID0gUGF5bWVudE1lcmNoYW50U2Vzc2lvbihwa1BheW1lbnRNZXJjaGFudFNl
c3Npb24pOwogICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBQS1BheW1lbnRNZXJjaGFudFNlc3Npb246ICVA
IiwgZXhjZXB0aW9uKTsKQEAgLTIwNSw3ICsxOTMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6UGF5bWVudE1ldGhvZD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQ
YQogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNO
b0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZl
cmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpO
T10pOwogICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRh
LmdldCgpKTsKICAgICBAdHJ5IHsKLSAgICAgICAgUEtQYXltZW50TWV0aG9kICpwa1BheW1lbnRN
ZXRob2QgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldFBLUGF5bWVudE1ldGhv
ZENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgICAgIFBL
UGF5bWVudE1ldGhvZCAqcGtQYXltZW50TWV0aG9kID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0
T2ZDbGFzczpQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudE1ldGhvZENsYXNzKCkgZm9yS2V5Ok5T
S2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgICAgIHBheW1lbnRNZXRob2QgPSBQYXlt
ZW50TWV0aG9kKHBrUGF5bWVudE1ldGhvZCk7CiAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpl
eGNlcHRpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIFBLUGF5bWVu
dDogJUAiLCBleGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDA4ZGJkN2I2NTZk
NDUwNGJmZTcwYWNlOWE0ZjllMTBmYzI5MDg0NmIuLmU4OGM1ZmU2YWNhMWI5NDFmYzA5MGFhYTQ2
ZTE5YzhiODk4NGNiODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI5NCw5ICsyOTQsOSBA
QCBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KIAogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29h
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KIAotVUlQcm9jZXNzL0FwcGxlUGF5
L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSBAbm8tdW5pZnkKK1VJUHJvY2Vz
cy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KIAotVUlQcm9j
ZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbSBAbm8tdW5p
ZnkKK1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMu
bW0KIAogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHlDb2NvYS5tbQogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL2NvY29hL1NlY0tleVBy
b3h5U3RvcmUubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5
L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29h
Lm1tCmluZGV4IGRiMmI2YzhiZDIwZmNjZjAwOTQ5NDIwNWQyMTFkY2M0MTkyMzgxNzguLjFjMzli
OWM0MmYxOGM0YzhlZDUyMzg5ZWJjMmRmODA3ZDcyNjgwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQpAQCAtMzMsMjYgKzMzLDEyIEBACiAjaW1w
b3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1BheW1lbnRIZWFkZXJzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgotI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNv
ZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29w
Lmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKLVNP
RlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChQYXNzS2l0KQotI2Vsc2UKLVNPRlRf
TElOS19GUkFNRVdPUksoUGFzc0tpdCkKLSNlbmRpZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tp
dCwgUEtQYXNzTGlicmFyeSk7Ci1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1Bh
eW1lbnRNZXJjaGFudFNlc3Npb24pOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVu
dFJlcXVlc3QpOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudFN1bW1hcnlJdGVt
KTsKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1NoaXBwaW5nTWV0aG9kKTsKLQotI2lmIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAw
KSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwKQotU09GVF9MSU5LX0ZSQU1FV09SSyhDb250YWN0cykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUFYX0FMTE9XRUQgPj0gMTAxMzAwKQorU09GVF9MSU5LX0ZSQU1FV09SSyhDb250YWN0cyk7CiBT
T0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N0cmVldEtleSwgTlNT
dHJpbmcgKik7CiBTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N1
YkxvY2FsaXR5S2V5LCBOU1N0cmluZyAqKTsKIFNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywg
Q05Qb3N0YWxBZGRyZXNzQ2l0eUtleSwgTlNTdHJpbmcgKik7CkBAIC02MSwzMCArNDcsMTcgQEAg
U09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NTdGF0ZUtleSwgTlNT
dHJpbmcgKik7CiBTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1Bv
c3RhbENvZGVLZXksIE5TU3RyaW5nICopOwogU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBD
TlBvc3RhbEFkZHJlc3NDb3VudHJ5S2V5LCBOU1N0cmluZyAqKTsKIFNPRlRfTElOS19DT05TVEFO
VChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzSVNPQ291bnRyeUNvZGVLZXksIE5TU3RyaW5nICop
OwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQp
Ci1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RV
cGRhdGUpCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5n
Q29udGFjdFVwZGF0ZSkKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0
U2hpcHBpbmdNZXRob2RVcGRhdGUpCi1TT0ZUX0xJTktfQ09OU1RBTlQoUGFzc0tpdCwgUEtQYXlt
ZW50RXJyb3JEb21haW4sIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQs
IFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcywgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09O
U1RBTlQoUGFzc0tpdCwgUEtDb250YWN0RmllbGRFbWFpbEFkZHJlc3MsIE5TU3RyaW5nICopOwot
U09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmVOdW1iZXIsIE5T
U3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkTmFt
ZSwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoUGFzc0tpdCwgUEtDb250YWN0Rmll
bGRQaG9uZXRpY05hbWUsIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQs
IFBLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNlckluZm9LZXksIE5TU3RyaW5nICopOwotU09G
VF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLUGF5bWVudEVycm9yUG9zdGFsQWRkcmVzc1VzZXJJ
bmZvS2V5LCBOU1N0cmluZyAqKTsKLSNlbmRpZgogCi10eXBlZGVmIHZvaWQgKF5QS0Nhbk1ha2VQ
YXltZW50c0NvbXBsZXRpb24pKEJPT0wgaXNWYWxpZCwgTlNFcnJvciAqZXJyb3IpOwotI2lmIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAw
KSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwKQotZXh0ZXJuICJDIiB2b2lkIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1l
cmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKE5TU3RyaW5nICppZGVu
dGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBOU1N0cmluZyAqc291cmNlQXBwbGljYXRpb25TZWNv
bmRhcnlJZGVudGlmaWVyLCBQS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbik7
Ci1TT0ZUX0xJTktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJLaXQsIFBhc3NLaXQs
IFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFw
cGxpY2F0aW9uLCB2b2lkLCAoTlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4s
IE5TU3RyaW5nICpzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIFBLQ2FuTWFr
ZVBheW1lbnRzQ29tcGxldGlvbiBjb21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgc291
cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBjb21wbGV0aW9uKSk7Ci0jZWxzZQot
ZXh0ZXJuICJDIiB2b2lkIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFu
ZERvbWFpbihOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwgUEtDYW5NYWtl
UGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pOwotU09GVF9MSU5LX0ZVTkNUSU9OX01BWV9G
QUlMX0ZPUl9TT1VSQ0UoV2ViS2l0LCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJj
aGFudElkZW50aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNT
dHJpbmcgKmRvbWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAo
aWRlbnRpZmllciwgZG9tYWluLCBjb21wbGV0aW9uKSk7CitTT0ZUX0xJTktfQ09OU1RBTlQoUEFM
OjpQYXNzS2l0LCBQS1BheW1lbnRFcnJvckRvbWFpbiwgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktf
Q09OU1RBTlQoUEFMOjpQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MsIE5TU3Ry
aW5nICopOworU09GVF9MSU5LX0NPTlNUQU5UKFBBTDo6UGFzc0tpdCwgUEtDb250YWN0RmllbGRF
bWFpbEFkZHJlc3MsIE5TU3RyaW5nICopOworU09GVF9MSU5LX0NPTlNUQU5UKFBBTDo6UGFzc0tp
dCwgUEtDb250YWN0RmllbGRQaG9uZU51bWJlciwgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09O
U1RBTlQoUEFMOjpQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZE5hbWUsIE5TU3RyaW5nICopOworU09G
VF9MSU5LX0NPTlNUQU5UKFBBTDo6UGFzc0tpdCwgUEtDb250YWN0RmllbGRQaG9uZXRpY05hbWUs
IE5TU3RyaW5nICopOworU09GVF9MSU5LX0NPTlNUQU5UKFBBTDo6UGFzc0tpdCwgUEtQYXltZW50
RXJyb3JDb250YWN0RmllbGRVc2VySW5mb0tleSwgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09O
U1RBTlQoUEFMOjpQYXNzS2l0LCBQS1BheW1lbnRFcnJvclBvc3RhbEFkZHJlc3NVc2VySW5mb0tl
eSwgTlNTdHJpbmcgKik7CiAjZW5kaWYKIAotCiBAaW1wbGVtZW50YXRpb24gV0tQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoUGF5bWVudENvb3JkaW5hdG9yUHJveHk6KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkmKXdlYlBheW1lbnRDb29yZGluYXRvclByb3h5CkBAIC0xMDIsNyArNzUsNyBAQCAtICh2
b2lkKWludmFsaWRhdGUKICAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgPSBudWxscHRy
OwogICAgIGlmIChfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKSB7CiAjaWYgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMTAwMDApCi0gICAgICAgIF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24oYWRvcHROUyhb
YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0aFN0YXR1
czpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBlcnJvcnM6QFsgXV0pLmdldCgp
KTsKKyAgICAgICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihhZG9wdE5TKFtQQUw6OmFs
bG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF1dKS5nZXQoKSk7
CiAjZWxzZQogICAgICAgICBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlKTsKICNlbmRpZgpAQCAtMTE5LDcgKzkyLDcgQEAgLSAo
dm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIKICAgICBBU1NFUlQoIV9zZXNzaW9uQmxvY2spOwogICAgIF9z
ZXNzaW9uQmxvY2sgPSBzZXNzaW9uQmxvY2s7CiAKLSAgICBbZ2V0UEtQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSBwYXltZW50U2VydmljZXNNZXJjaGFudFVSTDpeKE5T
VVJMICptZXJjaGFudFVSTCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBbUEFMOjpnZXRfUGFzc0tp
dF9QS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJDbGFzcygpIHBheW1lbnRTZXJ2
aWNlc01lcmNoYW50VVJMOl4oTlNVUkwgKm1lcmNoYW50VVJMLCBOU0Vycm9yICplcnJvcikgewog
ICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBLQ2FuTWFrZVBheW1l
bnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIsIGVycm9yKTsKIApA
QCAtMTU1LDcgKzEyOCw3IEBAIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyCiB7CiAjaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMTAwMDApCiAgICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAg
ICAgICAgY29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1
bHRJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOlBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNG
YWlsdXJlIGVycm9yczpAWyBdXSkuZ2V0KCkpOworICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMo
W1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0
aFN0YXR1czpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBlcnJvcnM6QFsgXV0p
LmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTcwLDcgKzE0Myw3IEBAIC0g
KHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyCiB7CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAgICAgaWYg
KCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihhZG9w
dE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBp
bml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKKyAgICAgICAgY29tcGxl
dGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRh
dGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpAWyBdXSkuZ2V0KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xODMsNyArMTU2LDcgQEAgLSAodm9pZClwYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIKIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjoo
UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxl
Y3RTaGlwcGluZ01ldGhvZDooUEtTaGlwcGluZ01ldGhvZCAqKXNoaXBwaW5nTWV0aG9kIGhhbmRs
ZXI6KHZvaWQgKF4pKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSAqdXBkYXRl
KSljb21wbGV0aW9uIHsKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAgICBpZiAoIV93ZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW2FsbG9j
UEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBh
eW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKKyAgICAgICAgY29tcGxldGlvbihhZG9w
dE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlSW5zdGFu
Y2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTk3LDcgKzE3MCw3IEBAIC0gKHZvaWQpcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyCiB7CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAgICAgaWYgKCFfd2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5bWVu
dFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoRXJyb3JzOkBb
IF0gcGF5bWVudFN1bW1hcnlJdGVtczpAWyBdIHNoaXBwaW5nTWV0aG9kczpAWyBdXSkuZ2V0KCkp
OworICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0
U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczpAWyBdIHBheW1l
bnRTdW1tYXJ5SXRlbXM6QFsgXSBzaGlwcGluZ01ldGhvZHM6QFsgXV0pLmdldCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjk4LDcgKzI3MSw3IEBAIGJvb2wgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzKCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogI2VuZGlmCiAKLSAgICByZXR1cm4gW2dldFBLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckNsYXNzKCkgY2FuTWFrZVBheW1lbnRzXTsKKyAgICByZXR1cm4gW1BBTDo6
Z2V0X1Bhc3NLaXRfUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSBj
YW5NYWtlUGF5bWVudHNdOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hh
bnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9p
ZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0zMTEsMTQgKzI4NCw3IEBAIHZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFj
dGl2ZUNhcmQoY29uc3QgU3RyCiAjZW5kaWYKIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQotICAg
IGlmICghY2FuTG9hZF9QYXNzS2l0X1BLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRp
ZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIH0p
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc29mdExpbmtfUGFzc0tpdF9QS0Nhbk1h
a2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlv
bihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1fd2ViUGFnZVByb3h5LnByb2Nlc3Mo
KS5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpZXIoKSwgQmxvY2tQdHI8dm9pZCAoQk9PTCwgTlNFcnJvciAqKT46OmZyb21DYWxs
YWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQk9P
TCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKKyAgICBQS0Nhbk1h
a2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlv
bihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1fd2ViUGFnZVByb3h5LnByb2Nlc3Mo
KS5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpZXIoKSwgQmxvY2tQdHI8dm9pZChCT09MLCBOU0Vycm9yICopPjo6ZnJvbUNhbGxh
YmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShCT09M
IGNhbk1ha2VQYXltZW50cywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAo
ZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNo
YW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIsIGVycm9yKTsKIApAQCAtMzU0LDcgKzMy
MCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtT3BlblBheW1l
bnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50CiAgICAgfQogI2VuZGlmCiAKLSAgICBhdXRv
IHBhc3NMaWJyYXJ5ID0gYWRvcHROUyhbYWxsb2NQS1Bhc3NMaWJyYXJ5SW5zdGFuY2UoKSBpbml0
XSk7CisgICAgYXV0byBwYXNzTGlicmFyeSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1Bhc3NMaWJy
YXJ5SW5zdGFuY2UoKSBpbml0XSk7CiAgICAgW3Bhc3NMaWJyYXJ5IG9wZW5QYXltZW50U2V0dXBG
b3JNZXJjaGFudElkZW50aWZpZXI6bWVyY2hhbnRJZGVudGlmaWVyIGRvbWFpbjpkb21haW5OYW1l
IGNvbXBsZXRpb246QmxvY2tQdHI8dm9pZCAoQk9PTCk+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCByZXN1bHRdIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CkBAIC00MTgsNyArMzg0LDcgQEAgc3RhdGljIE5TRGVj
aW1hbE51bWJlciAqdG9EZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQogCiBzdGF0
aWMgUmV0YWluUHRyPFBLUGF5bWVudFN1bW1hcnlJdGVtPiB0b1BLUGF5bWVudFN1bW1hcnlJdGVt
KGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYg
bGluZUl0ZW0pCiB7Ci0gICAgcmV0dXJuIFtnZXRQS1BheW1lbnRTdW1tYXJ5SXRlbUNsYXNzKCkg
c3VtbWFyeUl0ZW1XaXRoTGFiZWw6bGluZUl0ZW0ubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJl
cihsaW5lSXRlbS5hbW91bnQpIHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUobGluZUl0
ZW0udHlwZSldOworICAgIHJldHVybiBbUEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRTdW1tYXJ5
SXRlbUNsYXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6bGluZUl0ZW0ubGFiZWwgYW1vdW50OnRv
RGVjaW1hbE51bWJlcihsaW5lSXRlbS5hbW91bnQpIHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRl
bVR5cGUobGluZUl0ZW0udHlwZSldOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHRv
UEtQYXltZW50U3VtbWFyeUl0ZW1zKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyYgdG90YWxBbmRMaW5lSXRlbXMpCkBAIC00Nzcs
NyArNDQzLDcgQEAgc3RhdGljIFBLU2hpcHBpbmdUeXBlIHRvUEtTaGlwcGluZ1R5cGUoV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlMKIAogc3RhdGljIFJldGFpblB0cjxQ
S1NoaXBwaW5nTWV0aG9kPiB0b1BLU2hpcHBpbmdNZXRob2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kJiBzaGlwcGluZ01ldGhvZCkK
IHsKLSAgICBSZXRhaW5QdHI8UEtTaGlwcGluZ01ldGhvZD4gcmVzdWx0ID0gW2dldFBLU2hpcHBp
bmdNZXRob2RDbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOnNoaXBwaW5nTWV0aG9kLmxhYmVs
IGFtb3VudDp0b0RlY2ltYWxOdW1iZXIoc2hpcHBpbmdNZXRob2QuYW1vdW50KV07CisgICAgUmV0
YWluUHRyPFBLU2hpcHBpbmdNZXRob2Q+IHJlc3VsdCA9IFtQQUw6OmdldF9QYXNzS2l0X1BLU2hp
cHBpbmdNZXRob2RDbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOnNoaXBwaW5nTWV0aG9kLmxh
YmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIoc2hpcHBpbmdNZXRob2QuYW1vdW50KV07CiAgICAg
W3Jlc3VsdCBzZXRJZGVudGlmaWVyOnNoaXBwaW5nTWV0aG9kLmlkZW50aWZpZXJdOwogICAgIFty
ZXN1bHQgc2V0RGV0YWlsOnNoaXBwaW5nTWV0aG9kLmRldGFpbF07CiAKQEAgLTUxMiw3ICs0Nzgs
NyBAQCBzdGF0aWMgUEtQYXltZW50UmVxdWVzdEFQSVR5cGUgdG9BUElUeXBlKFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OgogCiBSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVz
dD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBjb25zdCBX
ZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYg
bGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dCYgcGF5bWVudFJlcXVlc3QpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFthbGxvY1BL
UGF5bWVudFJlcXVlc3RJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0SW5zdGFuY2UoKSBpbml0XSk7CiAKICAgICBb
cmVzdWx0IHNldE9yaWdpbmF0aW5nVVJMOm9yaWdpbmF0aW5nVVJMXTsKIApAQCAtNzYxLDcgKzcy
Nyw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQ
YXltZW50U2Vzc2lvbihjb25zdCBzdGQ6Om9wdGlvCiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkK
ICAgICBhdXRvIHN0YXR1cyA9IHJlc3VsdCA/IHJlc3VsdC0+c3RhdHVzIDogV2ViQ29yZTo6UGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlN1Y2Nlc3M7Ci0gICAgYXV0byBwa1BheW1lbnRBdXRo
b3JpemF0aW9uUmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVz
dWx0SW5zdGFuY2UoKSBpbml0V2l0aFN0YXR1czp0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXMoc3RhdHVzKSBlcnJvcnM6cmVzdWx0ID8gdG9OU0Vycm9ycyhyZXN1bHQtPmVycm9ycykuZ2V0
KCkgOiBAWyBdXSk7CisgICAgYXV0byBwa1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0ID0gYWRv
cHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGlu
aXRXaXRoU3RhdHVzOnRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhzdGF0dXMpIGVycm9y
czpyZXN1bHQgPyB0b05TRXJyb3JzKHJlc3VsdC0+ZXJyb3JzKS5nZXQoKSA6IEBbIF1dKTsKICAg
ICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRB
dXRob3JpemVkQ29tcGxldGlvbihwa1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0LmdldCgpKTsK
ICNlbHNlCiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUt
Pl9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24odG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzKHJlc3VsdCkpOwpAQCAtNzg3LDcgKzc1Myw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihjb25zdCBz
CiAgICAgICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5f
cGF5bWVudFN1bW1hcnlJdGVtcyA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3
VG90YWxBbmRMaW5lSXRlbXMpOwogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCi0gICAgYXV0byBw
a1NoaXBwaW5nTWV0aG9kVXBkYXRlID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hp
cHBpbmdNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpt
X3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1t
YXJ5SXRlbXMuZ2V0KCldKTsKKyAgICBhdXRvIHBrU2hpcHBpbmdNZXRob2RVcGRhdGUgPSBhZG9w
dE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlSW5zdGFu
Y2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXSk7CiAgICAg
bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RT
aGlwcGluZ01ldGhvZENvbXBsZXRpb24ocGtTaGlwcGluZ01ldGhvZFVwZGF0ZS5nZXQoKSk7CiAj
ZWxzZQogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5f
ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uKFBLUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXNTdWNjZXNzLCBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkpOwpAQCAtODM5LDcgKzgwNSw3IEBAIHZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ0NvbnRh
Y3RTZWxlY3Rpb24oY29uc3QKICAgICB9CiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKLSAgICBh
dXRvIHBrU2hpcHBpbmdDb250YWN0VXBkYXRlID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1
ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczp1cGRhdGUg
PyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKS5nZXQoKSA6IEBbIF0gcGF5bWVudFN1bW1hcnlJ
dGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1l
bnRTdW1tYXJ5SXRlbXMuZ2V0KCkgc2hpcHBpbmdNZXRob2RzOm1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzLmdldCgpXSk7CisgICAg
YXV0byBwa1NoaXBwaW5nQ29udGFjdFVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1l
bnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczp1
cGRhdGUgPyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKS5nZXQoKSA6IEBbIF0gcGF5bWVudFN1
bW1hcnlJdGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+
X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkgc2hpcHBpbmdNZXRob2RzOm1fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzLmdldCgpXSk7
CiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRT
ZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKHBrU2hpcHBpbmdDb250YWN0VXBkYXRlLmdl
dCgpKTsKICNlbHNlCiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKHRvUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cyh1cGRhdGUpLCBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZS0+X3NoaXBwaW5nTWV0aG9kcy5nZXQoKSwgbV9wYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpKTsK
QEAgLTg1Niw3ICs4MjIsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0
Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBzdAogICAgICAgICBtX3Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5
SXRlbXMgPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRhdGUtPm5ld1RvdGFsQW5kTGluZUl0
ZW1zKTsKIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQotICAgIGF1dG8gcGtQYXltZW50TWV0aG9k
VXBkYXRlID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0
ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKV0p
OworICAgIGF1dG8gcGtQYXltZW50TWV0aG9kVXBkYXRlID0gYWRvcHROUyhbUEFMOjphbGxvY1BL
UGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1l
bnRTdW1tYXJ5SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdh
dGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXSk7CiAgICAgbV9wYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxl
dGlvbihwa1BheW1lbnRNZXRob2RVcGRhdGUuZ2V0KCkpOwogI2Vsc2UKICAgICBtX3BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFBheW1lbnRNZXRo
b2RDb21wbGV0aW9uKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRl
LT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSk7CkBAIC04NzEsNyArODM3LDcgQEAgVmVjdG9y
PFN0cmluZz4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQXZhaWxhYmxlUGF5
bWVudE5ldHdvcmtzKCkKICAgICAgICAgcmV0dXJuIHsgfTsKICNlbmRpZgogICAgIAotICAgIE5T
QXJyYXk8UEtQYXltZW50TmV0d29yaz4gKmF2YWlsYWJsZU5ldHdvcmtzID0gW2dldFBLUGF5bWVu
dFJlcXVlc3RDbGFzcygpIGF2YWlsYWJsZU5ldHdvcmtzXTsKKyAgICBOU0FycmF5PFBLUGF5bWVu
dE5ldHdvcms+ICphdmFpbGFibGVOZXR3b3JrcyA9IFtQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVu
dFJlcXVlc3RDbGFzcygpIGF2YWlsYWJsZU5ldHdvcmtzXTsKICAgICBWZWN0b3I8U3RyaW5nPiBy
ZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXZhaWxhYmxlTmV0d29y
a3MuY291bnQpOwogICAgIGZvciAoUEtQYXltZW50TmV0d29yayBuZXR3b3JrIGluIGF2YWlsYWJs
ZU5ldHdvcmtzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkv
aW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4
IGMwZGYzYzg5ZGI0Y2Y0MTc0OThhYzI2OGU5OWUxMTViYTQwNWQ3NjIuLmY5ZTI4MGQxYzk1NmE2
ZDhkZTcyNTQxZmZmMDk3ZjU4Y2RlYWE4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlJT1MubW0KQEAgLTM0LDEwICszNCw3IEBACiAjaW1wb3J0IDxQYXNzS2l0L1Bhc3NL
aXQuaD4KICNpbXBvcnQgPFVJS2l0L1VJVmlld0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4KLSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgotCi1TT0ZUX0xJTktfRlJBTUVXT1JLKFBhc3NLaXQpCi1TT0ZUX0xJTktfQ0xBU1MoUGFz
c0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKKyNpbXBvcnQgPHBh
bC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTU0
LDcgKzUxLDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93
UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2kKIAogICAgIGF1dG8gcGF5bWVudFJl
cXVlc3QgPSB0b1BLUGF5bWVudFJlcXVlc3QobV93ZWJQYWdlUHJveHksIG9yaWdpbmF0aW5nVVJM
LCBsaW5rSWNvblVSTFN0cmluZ3MsIHJlcXVlc3QpOwogCi0gICAgbV9wYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJl
cXVlc3QuZ2V0KCldKTsKKyAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIg
PSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
SW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRSZXF1ZXN0OnBheW1lbnRSZXF1ZXN0LmdldCgpXSk7
CiAgICAgaWYgKCFtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KaW5kZXggNzQxNTkzODNmMTk1NDI3ZGI5NzYw
YThjMDFlYzcwNjdhNjdjNmY5NS4uYTRkMzA5NjljMmU2ODZmY2Y0ZWRiN2Q1NTk4YmU4YTQ3ODhh
YzgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQpAQCAtMzAs
MTQgKzMwLDExIEBACiAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNz
S2l0U1BJLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0
IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi1TT0ZUX0xJ
TktfUFJJVkFURV9GUkFNRVdPUktfT1BUSU9OQUwoUGFzc0tpdCkKLQotU09GVF9MSU5LX0NMQVNT
KFBhc3NLaXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci1TT0ZUX0xJ
TktfQ09OU1RBTlQoUGFzc0tpdCwgUEtFeHRlbnNpb25QYXltZW50QXV0aG9yaXphdGlvblVJRXh0
ZW5zaW9uUG9pbnROYW1lLCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChQQUw6OlBh
c3NLaXQsIFBLRXh0ZW5zaW9uUGF5bWVudEF1dGhvcml6YXRpb25VSUV4dGVuc2lvblBvaW50TmFt
ZSwgTlNTdHJpbmcgKik7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhOWU1ZDA3MTEwYWNkM2Uy
MDQxNGE5MWZlMDljNWRkZGUyMDIxYWQ4Li5mNDQ0MWZkOWM3ZTMzZWFhZWRkMjhmZjdlNjZmMDU4
OGE2NWRiMzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTY4Niw4ICs2ODYsNiBAQAogCQkyRDkyQTc5NTIxMkI2QUQ0MDBGNDkzRkQg
LyogUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTJEOTBEMTEyODFDOTY2MDAxRUI5NjIgLyog
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi87IH07CiAJCTJEOTJBNzk2MjEy
QjZBREEwMEY0OTNGRCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTRBOUM1MzEyQjgxNkNGMDA4RkU5ODQg
LyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwICovOyB9OwogCQkyRDkyQTc5NzIxMkI2QURBMDBG
NDkzRkQgLyogUGx1Z2luSW5mb3JtYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzRjhDOEUxNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbklu
Zm9ybWF0aW9uLmNwcCAqLzsgfTsKLQkJMkQ5MkE3OTgyMTM0OEQ4NTAwRjQ5M0ZEIC8qIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFCMUY3N0QxRDFCMzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5TWFjLm1tICovOyB9OwotCQkyRDkyQTc5RjIxMzRCMDdFMDBGNDkzRkQg
LyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc3QjFEMUIzMEE5MDA3QzlCRDEgLyogV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0gKi87IH07CiAJCTJEOTMxMTY5MjEyRjYxQjIw
MDA0NEJGRSAvKiBXS0NvbnRlbnRWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZDQjRFM0QxOEJCRTA0NDAwMEZDRkM5IC8qIFdLQ29udGVudFZp
ZXcubW0gKi87IH07CiAJCTJEOTMxMTZBMjEyRjYxQjUwMDA0NEJGRSAvKiBXS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkNCNEU2QjE4QkJGMjZBMDAwRkNGQzkgLyogV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tICovOyB9OwogCQkyRDlFQTMwRDFBOTZDQjU5MDAyRDI4MDcgLyogV0tQYWdlSW5qZWN0ZWRC
dW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEOUVBMzBDMUE5NkNCNTkwMDJEMjgwNyAvKiBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
MTAxMCw4ICsxMTAwOCw2IEBACiAJCQkJN0NFOUNFMTAxRkEwNzY3QTAwMDE3N0RFIC8qIFdlYlBh
Z2VVcGRhdGVQcmVmZXJlbmNlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzQ2OTRDOTFBNEI0
RUExMDBBRDU4NDUgLyogV2ViUGFzdGVib2FyZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBQjFGNzk2MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29v
cmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMkQ5MkE3OUYy
MTM0QjA3RTAwRjQ5M0ZEIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tIGluIFNv
dXJjZXMgKi8sCi0JCQkJMkQ5MkE3OTgyMTM0OEQ4NTAwRjQ5M0ZEIC8qIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCMUY3OTgxRDFCMzYxMzAw
N0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTJEOTJBNzhEMjEyQjZBQjEwMEY0OTNGRCAvKiBXZWJQbGF0Zm9y
bVRvdWNoUG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MTM0NEUyMTJDRjlGMDAwMTI4
QUZEIC8qIFdlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355415</attachid>
            <date>2018-11-21 08:45:10 -0800</date>
            <delta_ts>2018-11-21 09:40:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191875-20181121084507.patch</filename>
            <type>text/plain</type>
            <size>57467</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQxMWQ5ZGVmOGIxMzhiNzExMTYwMWFh
YmVjYTM1OGQ4MTAxMDJhNzcuLjQxZWQzNjEzZDQxMTNjZTM5NTliMjA4ZDJmZmMzYmM3NjU5YmZh
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUg
Zm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MTg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL2NvY29hL1NvZnRMaW5raW5nLmg6CisKIDIwMTgtMTEtMTQgIEtlaXRoIFJvbGxp
biAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCAjZW5kIHZzLiAjZW5kaWYgdHlw
by4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwZjc0ZjdhMTlhOTQyMWNmNmNlMzMzYzFmMDY3ZmE2YWVlZTRlOGI3
Li5kY2MzZjI0NDcwZjMxNTYzZWYyMGJiM2VkNGZhYWI0ZWM0ZWUwMGUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBhc3NL
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg3
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9k
dWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydCk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50
TWVyY2hhbnRTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50TWVyY2hh
bnRTZXNzaW9uOjpmcm9tSlMpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUNvY29hOjpwYWludEFwcGxlUGF5QnV0dG9uKToKKwogMjAxOC0xMS0yMCAgRGVhbiBK
YWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZpbmcgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmUgZnJvbSBXZWJMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMGVkZWU1YzNh
YzhkZTI4NTA2NDUxNzY1ZTIwMTUwYmFlOGMzODlmNy4uMWE0MTg4Zjc1NDBjYWFjM2U3NTc1YWFi
ZGMxNTUxM2VlOGQ3NDJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2Nv
YV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOiBBZGRlZC4K
KyAgICAgICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tOiBBZGRlZC4KKyAgICAgICAg
KiBwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaDoKKwogMjAxOC0xMS0xNyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBSZW1vdmUgYWxsIHVz
YWdlcyBvZiBVSUl0ZW1Qcm92aWRlciwgVUlJdGVtUHJvdmlkZXJSZWFkaW5nLCBhbmQgcmVsYXRl
ZCBjbGFzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZlOGUzZTRkOGEwOWUxYmUzZjljYjU1ZmM3OTk0MTAyNTFk
YWI5NjUuLjMzZmY1NzA4NjViZjkyZTRkZGQxOGNkYTg4ZDE3ZmNiMDg4YzkyN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzcgQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBh
c3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MTg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRDb250YWN0Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPjo6
ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0
aG9kPjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgaW52YWxpZGF0ZV0pOgorICAgICAgICAoLVtX
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyOmRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246XSk6CisgICAg
ICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkQXV0aG9yaXplUGF5bWVudDpoYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFBheW1lbnRN
ZXRob2Q6aGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRT
ZWxlY3RTaGlwcGluZ01ldGhvZDpoYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyOmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDpoYW5kbGVyOl0pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVu
dHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXApOgorICAgICAg
ICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKToKKyAgICAgICAgKFdlYktpdDo6dG9Q
S1NoaXBwaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29t
cGxldGVQYXltZW50U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0
ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUF2
YWlsYWJsZVBheW1lbnROZXR3b3Jrcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2lv
cy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5t
bToKKwogMjAxOC0xMS0yMCAgSmVmZiBNaWxsZXIgIDxqZWZmbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV0dXJuIG51bGxwdHIgaW1tZWRpYXRlbHkgaWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0IGlu
IHRoZSBIYXNoTWFwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvU29mdExpbmtp
bmcuaCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1NvZnRMaW5raW5nLmgKaW5kZXggNmFlZWRhZTRh
NjYzMzQ1NzYwNmJhN2UxY2JlZmZmNWVhNjNjMDgyZi4uZGQ2ZTc5YmM2ZWJlNTU5NjkxOGE2MGQ5
MWE4MjZkZTFkZDhiNmZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvU29mdExp
bmtpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Tb2Z0TGlua2luZy5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMS0yMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzQwLDkgKzM0MCw5IEBACiAgICAgfSBcCiAgICAgfQogCi0jZGVmaW5lIFNPRlRf
TElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrKSBc
CisjZGVmaW5lIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChmdW5j
dGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBleHBvcnQpIFwKICAgICBuYW1lc3BhY2UgZnVuY3Rp
b25OYW1lc3BhY2UgeyBcCi0gICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KGJvb2wgaXNPcHRp
b25hbCA9IGZhbHNlKTsgXAorICAgIGV4cG9ydCB2b2lkKiBmcmFtZXdvcmsjI0xpYnJhcnkoYm9v
bCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCiAgICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KGJv
b2wgaXNPcHRpb25hbCkgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgdm9pZCogZnJhbWV3b3Jr
TGlicmFyeTsgXApAQCAtMzU2LDkgKzM1NiwxMiBAQAogICAgIH0gXAogICAgIH0KIAotI2RlZmlu
ZSBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFj
ZSwgZnJhbWV3b3JrKSBcCisjZGVmaW5lIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShm
dW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrKSBcCisgICAgU09GVF9MSU5LX0ZSQU1FV09SS19G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssICkKKwor
I2RlZmluZSBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBleHBvcnQpIFwKICAgICBuYW1lc3BhY2Ug
ZnVuY3Rpb25OYW1lc3BhY2UgeyBcCi0gICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KGJvb2wg
aXNPcHRpb25hbCA9IGZhbHNlKTsgXAorICAgIGV4cG9ydCB2b2lkKiBmcmFtZXdvcmsjI0xpYnJh
cnkoYm9vbCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCiAgICAgdm9pZCogZnJhbWV3b3JrIyNMaWJy
YXJ5KGJvb2wgaXNPcHRpb25hbCkgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgdm9pZCogZnJh
bWV3b3JrTGlicmFyeTsgXApAQCAtMzcyLDYgKzM3NSw5IEBACiAgICAgfSBcCiAgICAgfQogCisj
ZGVmaW5lIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19GT1JfU09VUkNFKGZ1bmN0aW9uTmFt
ZXNwYWNlLCBmcmFtZXdvcmspIFwKKyAgICBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCApCisKICNk
ZWZpbmUgU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1l
d29yaywgY2xhc3NOYW1lKSBcCiAgICAgQGNsYXNzIGNsYXNzTmFtZTsgXAogICAgIG5hbWVzcGFj
ZSBmdW5jdGlvbk5hbWVzcGFjZSB7IFwKQEAgLTM4MywxMSArMzg5LDExIEBACiAgICAgfSBcCiAg
ICAgfQogCi0jZGVmaW5lIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNw
YWNlLCBmcmFtZXdvcmssIGNsYXNzTmFtZSkgXAorI2RlZmluZSBTT0ZUX0xJTktfQ0xBU1NfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBjbGFzc05h
bWUsIGV4cG9ydCkgXAogICAgIEBjbGFzcyBjbGFzc05hbWU7IFwKICAgICBuYW1lc3BhY2UgZnVu
Y3Rpb25OYW1lc3BhY2UgeyBcCiAgICAgc3RhdGljIENsYXNzIGluaXQjI2NsYXNzTmFtZSgpOyBc
Ci0gICAgQ2xhc3MgKCpnZXRfIyNmcmFtZXdvcmsjI18jI2NsYXNzTmFtZSMjQ2xhc3MpKCkgPSBp
bml0IyNjbGFzc05hbWU7IFwKKyAgICBleHBvcnQgQ2xhc3MgKCpnZXRfIyNmcmFtZXdvcmsjI18j
I2NsYXNzTmFtZSMjQ2xhc3MpKCkgPSBpbml0IyNjbGFzc05hbWU7IFwKICAgICBzdGF0aWMgQ2xh
c3MgY2xhc3MjI2NsYXNzTmFtZTsgXAogICAgIFwKICAgICBzdGF0aWMgQ2xhc3MgY2xhc3NOYW1l
IyNGdW5jdGlvbigpIFwKQEAgLTQwOCw2ICs0MTQsOSBAQAogICAgIH0gXAogICAgIH0KIAorI2Rl
ZmluZSBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrLCBjbGFzc05hbWUpIFwKKyAgICBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VY
UE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBjbGFzc05hbWUsICkKKwogI2RlZmlu
ZSBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSkgXAogICAgIFdURl9FWFRFUk5fQ19CRUdJ
TiBcCiAgICAgZXh0ZXJuIGNvbnN0IHZhcmlhYmxlVHlwZSB2YXJpYWJsZU5hbWU7IFwKQEAgLTQ4
OSwxMyArNDk4LDEzIEBACiAgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWVzcGFjZTo6c29mdExp
bmsjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlck5hbWVzOyBcCiAgICAgfQogCi0j
ZGVmaW5lIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNwYWNlLCBm
cmFtZXdvcmssIGZ1bmN0aW9uTmFtZSwgcmVzdWx0VHlwZSwgcGFyYW1ldGVyRGVjbGFyYXRpb25z
LCBwYXJhbWV0ZXJOYW1lcykgXAorI2RlZmluZSBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUs
IHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMsIGV4cG9y
dCkgXAogICAgIFdURl9FWFRFUk5fQ19CRUdJTiBcCiAgICAgcmVzdWx0VHlwZSBmdW5jdGlvbk5h
bWUgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCiAgICAgV1RGX0VYVEVSTl9DX0VORCBcCiAgICAg
bmFtZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAogICAgIHN0YXRpYyByZXN1bHRUeXBlIGlu
aXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9uczsgXAotICAg
IHJlc3VsdFR5cGUgKCpzb2Z0TGluayMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUpIHBhcmFtZXRl
ckRlY2xhcmF0aW9ucyA9IGluaXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lOyBcCisgICAgZXhw
b3J0IHJlc3VsdFR5cGUoKnNvZnRMaW5rIyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSkgcGFyYW1l
dGVyRGVjbGFyYXRpb25zID0gaW5pdCMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWU7IFwKICAgICBz
dGF0aWMgcmVzdWx0VHlwZSBpbml0IyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSBwYXJhbWV0ZXJE
ZWNsYXJhdGlvbnMgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9u
Y2U7IFwKQEAgLTUwNyw2ICs1MTYsOSBAQAogICAgIH0gXAogICAgIH0KIAorI2RlZmluZSBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBm
dW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVy
TmFtZXMpIFwKKyAgICBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChm
dW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBh
cmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMsICkKKwogI2RlZmluZSBTT0ZUX0xJ
TktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFy
YW1ldGVyTmFtZXMpIFwKICAgICBXVEZfRVhURVJOX0NfQkVHSU4gXAogICAgIHJlc3VsdFR5cGUg
ZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9uczsgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29h
Lm1tCmluZGV4IDBiMDIwNGM4NmQ4YTM2YTVkNGE3NTI5OGQwZjQxYTM0NDYxNTAzZWUuLmNjOTdm
ZDVlMWY2MjM0NTk5ZWI4ODRjYTgxODdmYjJjZDA4NTdjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRhY3RDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29j
b2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbXBvcnQgIkFwcGxlUGF5UGF5bWVudENvbnRh
Y3QuaCIKICNpbXBvcnQgPENvbnRhY3RzL0NvbnRhY3RzLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4K
ICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCkBAIC0zOCwxNCArMzgsNiBAQCBTT0ZUX0xJTktfRlJBTUVXT1JLKENvbnRhY3Rz
KQogU09GVF9MSU5LX0NMQVNTKENvbnRhY3RzLCBDTk11dGFibGVQb3N0YWxBZGRyZXNzKQogU09G
VF9MSU5LX0NMQVNTKENvbnRhY3RzLCBDTlBob25lTnVtYmVyKQogCi0jaWYgUExBVEZPUk0oTUFD
KQotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFBhc3NLaXQpCi0jZWxzZQotU09GVF9MSU5L
X0ZSQU1FV09SSyhQYXNzS2l0KQotI2VuZGlmCi0KLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQ
S0NvbnRhY3QpCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE5TU3RyaW5nICpzdWJM
b2NhbGl0eShDTlBvc3RhbEFkZHJlc3MgKmFkZHJlc3MpCkBAIC0xMDYsNyArOTgsNyBAQCBzdGF0
aWMgdm9pZCBzZXRTdWJBZG1pbmlzdHJhdGl2ZUFyZWEoQ05NdXRhYmxlUG9zdGFsQWRkcmVzcyAq
YWRkcmVzcywgTlNTdHJpbmcgKgogCiBzdGF0aWMgUmV0YWluUHRyPFBLQ29udGFjdD4gY29udmVy
dCh1bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBBcHBsZVBheVBheW1lbnRDb250YWN0JiBjb250YWN0
KQogewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS0NvbnRhY3RJbnN0YW5jZSgp
IGluaXRdKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS0NvbnRhY3RJ
bnN0YW5jZSgpIGluaXRdKTsKIAogICAgIE5TU3RyaW5nICpmYW1pbHlOYW1lID0gbmlsOwogICAg
IE5TU3RyaW5nICpwaG9uZXRpY0ZhbWlseU5hbWUgPSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNo
YW50U2Vzc2lvbkNvY29hLm1tCmluZGV4IDgxYzhjY2I3MzhhN2Y5MzU0MTIxYzhhMjhkNjc5MzVj
MzEyNzZjYWIuLmZjMzZjODk1MzE0OWY0MzMwYmQ5NTFhNmFlYzIyYjhlZmIyZTBkYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNo
YW50U2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
Y29jb2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDE2ICsyOSw3IEBACiAjaWYg
RU5BQkxFKEFQUExFX1BBWSkKIAogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNPTk9iamVjdC5o
PgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+Ci0jaW1wb3J0IDx3dGYvU29m
dExpbmtpbmcuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElOS19QUklWQVRFX0ZSQU1F
V09SSyhQYXNzS2l0KQotI2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkKLSNlbmRp
ZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uKQor
I2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTUzLDcgKzQ0LDcgQEAgc3RkOjpvcHRpb25hbDxQYXltZW50TWVyY2hhbnRTZXNz
aW9uPiBQYXltZW50TWVyY2hhbnRTZXNzaW9uOjpmcm9tSlMoSlNDOjpFeGVjU3QKICAgICBpZiAo
IWRpY3Rpb25hcnkgfHwgIVtkaWN0aW9uYXJ5IGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBj
bGFzc11dKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBwa1BheW1l
bnRNZXJjaGFudFNlc3Npb24gPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudE1lcmNoYW50U2Vzc2lv
bkluc3RhbmNlKCkgaW5pdFdpdGhEaWN0aW9uYXJ5OmRpY3Rpb25hcnldKTsKKyAgICBhdXRvIHBr
UGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRNZXJj
aGFudFNlc3Npb25JbnN0YW5jZSgpIGluaXRXaXRoRGljdGlvbmFyeTpkaWN0aW9uYXJ5XSk7CiAK
ICAgICByZXR1cm4gUGF5bWVudE1lcmNoYW50U2Vzc2lvbihwa1BheW1lbnRNZXJjaGFudFNlc3Np
b24uZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDIxNTUyZGY3Zjc1ZmM1MzliYjg3NTZkMDg0OWI1NGQ2ODY5NTU0
MDkuLjc3ZjI0NjczZTUxNzM2OTdmNWNiY2U3ZWMzYTQ1MjE2Y2Y0ODMxMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMSw2
ICsxMzEsOCBAQAogCQlBMTE3NUI1ODFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFBy
b3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMTc1QjU2MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwICov
OyB9OwogCQlBMTE3NUI1QTFGNkI0QTg0MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE3NUI1OTFGNkI0
QTg0MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggKi87IH07CiAJCUExRjU1RENGMUY1NTI4
RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJ
LmggKi87IH07CisJCUExRjYzQzlGMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjYzQzlE
MjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLzsgfTsKKwkJQTFGNjNDQTAy
MUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjYzQzlFMjFBNERCRjcwMDZGQjQzQiAvKiBQ
YXNzS2l0U29mdExpbmsubW0gKi87IH07CiAJCUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBL
aWxsUmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIy
MUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJp
bmcuY3BwICovOyB9OwogCQlBMzBENDEyNTFGMEREMTJEMDBCNzE5NTQgLyogS2lsbFJpbmdNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzBENDEy
NDFGMEREMTJEMDBCNzE5NTQgLyogS2lsbFJpbmdNYWMubW0gKi87IH07CkBAIC0yODcsNiArMjg5
LDggQEAKIAkJQTExNzVCNTYxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE3NUI1OTFGNkI0QTg0MDBDNEI5RjAgLyogTlNT
Y3JvbGxWaWV3U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TU2Nyb2xsVmlld1NQSS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMUY1NURDRTFGNTUyOEVDMDBFREI3NUYgLyogTWV0YWRh
dGFTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0YWRhdGFTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTFGNjNDOUQyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQYXNzS2l0U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTFGNjNDOUUyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3NLaXRTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtpbGxSaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUEzMEQ0MTFGMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLaWxsUmluZy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTI0MUYwREQxMkQwMEI3MTk1NCAvKiBLaWxs
UmluZ01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEtpbGxS
aW5nTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTYwLDYgKzU2NCw4IEBA
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUY0NDI5MTY2MUZBNTI3
MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1tICovLAorCQkJCUExRjYzQzlE
MjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLywKKwkJCQlBMUY2M0M5RTIx
QTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tICovLAogCQkJKTsKIAkJCXBhdGgg
PSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03MjksNiArNzM1LDcgQEAK
IAkJCQkwQzc3ODU5RDFGNDUxMzBGMDBGNEVCQjYgLyogTlNXaW5kb3dTUEkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU3MEFCOEY5MjBBRjZFM0QwMEI4QkU4NyAvKiBOU1hQQ0Nvbm5lY3Rpb25TUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBDNUFGOTFGMUY0M0E0QzcwMDJFQUMwMiAvKiBPcGVuR0xF
U1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFGNjNDOUYyMUE0REJGNzAwNkZCNDNCIC8qIFBh
c3NLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNTUxRjNCRUI0OTAwREJD
MzE3IC8qIFBhc3NLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTlFMUY0NTEzMEYw
MEY0RUJCNiAvKiBQSVBTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMTc1QjRFMUY2QjMzNzMw
MEM0QjlGMCAvKiBQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovLApAQCAtODU0LDYgKzg2MSw3IEBA
CiAJCQkJQTMwRDQxMjUxRjBERDEyRDAwQjcxOTU0IC8qIEtpbGxSaW5nTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUM0ODc2RDgxRjhEN0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMENGOTlDQTQxRjczNjM3NTAwN0VFNzkzIC8qIE1lZGlhVGltZUFWRm91
bmRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUY2M0NBMDIxQTREQkY3MDA2RkI0M0Ig
LyogUGFzc0tpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTExNzVCNEYxRjZCMzM3
MzAwQzRCOUYwIC8qIFBvcHVwTWVudS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUEzQzY2Q0RDMUY0
NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZF
NTIxRjNEMURDNTAwOUMxNEIxIC8qIFNsZWVwRGlzYWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5o
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42NjVlN2JjYWU2MWRhZTlkZGVjNTNjMjVkYWRhOGYwZDJhNTU2M2U3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaApA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9S
TShDT0NPQSkKKworI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CisjaW1wb3J0
IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKFBB
TCwgUGFzc0tpdCkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0
LCBQS0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1Jl
Y3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVudEJ1dHRvblR5cGUgdHlwZSwgUEtQ
YXltZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICpsYW5ndWFnZUNvZGUpLCAoY29udGV4
dCwgZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFuZ3VhZ2VDb2RlKSkKKworU09GVF9M
SU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3QpCitTT0ZUX0xJTktf
Q0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGFzc0xpYnJhcnkpCitTT0ZUX0xJTktf
Q0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5bWVudCkKK1NPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1l
bnRNZXRob2QpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5
bWVudE1lcmNoYW50U2Vzc2lvbikKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50UmVxdWVzdCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwg
UGFzc0tpdCwgUEtQYXltZW50U3VtbWFyeUl0ZW0pCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURF
UihQQUwsIFBhc3NLaXQsIFBLU2hpcHBpbmdNZXRob2QpCisKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMCkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwg
UEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9tYWluQW5kU291cmNlQXBw
bGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwg
TlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgUEtDYW5NYWtl
UGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmllciwgZG9tYWluLCBzb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNvbXBsZXRpb24pKQorU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhN
ZXJjaGFudElkZW50aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwg
TlNTdHJpbmcgKmRvbWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24p
LCAoaWRlbnRpZmllciwgZG9tYWluLCBjb21wbGV0aW9uKSkKKworU09GVF9MSU5LX0NMQVNTX0ZP
Ul9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0KQorU09G
VF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0UGF5
bWVudE1ldGhvZFVwZGF0ZSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tp
dCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSkKK1NPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9k
VXBkYXRlKQorI2VuZGlmCisKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjMy
NWMxNTViYzVjYzJiYjkxYWM4YjAwZDYwMjA5OGMzMjEwODE3YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tCkBAIC0wLDAg
KzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JN
KENPQ09BKQorCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQg
PHd0Zi9Tb2Z0TGlua2luZy5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorU09GVF9MSU5LX1BSSVZB
VEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQQUxfRVhQ
T1JUKQorI2Vsc2UKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIFBhc3NLaXQsIFBBTF9FWFBPUlQpCisjZW5kaWYKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoUEFMLCBQYXNzS2l0LCBQS0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29u
dGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVu
dEJ1dHRvblR5cGUgdHlwZSwgUEtQYXltZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICps
YW5ndWFnZUNvZGUpLCAoY29udGV4dCwgZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFu
Z3VhZ2VDb2RlKSkKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFM
LCBQYXNzS2l0LCBQS0NvbnRhY3QsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGFzc0xpYnJhcnksIFBBTF9FWFBPUlQp
CitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
UGF5bWVudCwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLCBQ
QUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQ
YXNzS2l0LCBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24sIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktf
Q0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudE1ldGhv
ZCwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdCwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFT
U19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U3VtbWFyeUl0
ZW0sIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIFBhc3NLaXQsIFBLU2hpcHBpbmdNZXRob2QsIFBBTF9FWFBPUlQpCisKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTMwMCkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlm
aWVyRG9tYWluQW5kU291cmNlQXBwbGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmll
ciwgTlNTdHJpbmcgKmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllciwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRl
bnRpZmllciwgZG9tYWluLCBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNv
bXBsZXRpb24pLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50
aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRv
bWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmll
ciwgZG9tYWluLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKKworU09GVF9MSU5LX0NMQVNTX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9u
UmVzdWx0LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBP
UlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSwgUEFM
X0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSwgUEFMX0VYUE9SVCkK
K1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQ
YXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlLCBQQUxfRVhQT1JUKQorI2VuZGlmCisK
KyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NvY29hL1Bhc3NLaXRTUEkuaAppbmRleCBiNWU1OTMwMzI3MWZiNTgxYWIzNDlhYjk1Zjc0MzIw
OTE0OGFhMjU4Li43N2NiNmUxZDcwM2U3YmM5NWIzMzMyZDA3ZTU1ZTcxNDgzM2YxZWU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCkBAIC0zOSw4
ICszOSw4IEBACiAKICNlbGlmIFBMQVRGT1JNKE1BQykKIAorI2ltcG9ydCA8QXBwS2l0L0FwcEtp
dC5oPgogI2ltcG9ydCA8Q29udGFjdHMvQ29udGFjdHMuaD4KLSNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCkBAIC0yMjUsNyArMjI1
LDcgQEAgdHlwZWRlZiBOU1N0cmluZyAqIFBLUGF5bWVudE5ldHdvcmsgTlNfRVhURU5TSUJMRV9T
VFJJTkdfRU5VTTsKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKLSNlbmRpZgorI2VuZGlmIC8v
IFBMQVRGT1JNKE1BQykKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIApAQCAtMjYxLDcgKzI2
MSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBQS1BheW1lbnRSZXF1ZXN0QVBJVHlw
ZSkgewogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAotI2VuZGlmCisjZW5kaWYgLy8gVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBQS1BheW1lbnRCdXR0b25TdHls
ZSkgewpAQCAtMzI0LDQgKzMyNCw2IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU1N0cmluZyAqQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VU
eXBlOwogQGVuZAogCit0eXBlZGVmIHZvaWQgKF5QS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24p
KEJPT0wgaXNWYWxpZCwgTlNFcnJvciAqKTsKKwogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dAppbmRleCBhMTQ4MGZiYTZmOTQwYTZiNjg3ZDNjM2U5MGYwYTUxZjEz
MWY3NzFiLi42NWViYzg0MzY2MjAxZDU4OWY3NGE1YTVmZjU0OTgxM2JlZmJhNzA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKQEAgLTU4OCw3ICs1ODgsNyBAQCBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5jcHAKIAogICAgIE1vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCiAgICAgTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9Q
YXltZW50Q29udGFjdENvY29hLm1tCi0gICAgTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50
TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0gQG5vLXVuaWZ5CisgICAgTW9kdWxlcy9hcHBsZXBheS9j
b2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0KICAgICBNb2R1bGVzL2FwcGxlcGF5
L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQogCiAgICAgTW9kdWxlcy9hcHBsZXBheS9wYXlt
ZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMyMzM0YzYwNGU3M2I4
NjA4MjViODkwNTdiYzlhODk0MTk5ZWIxMzUuLmE3NTNhYTA2MzMwNWNlMTgxZDkyOWIwMzUwNDc2
Nzg5OWMzMGQzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTQ0NzEsNyArNDQ3MSw2IEBACiAJCURFNUY4NjBEMUZBMjM4NkIw
MDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDc4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4NUQyMUZBMjM4NTYwMDZEQjYzQSAvKiBVbmlmaWVk
U291cmNlNDc4LmNwcCAqLzsgfTsKIAkJREU1Rjg2MEUxRkEyMzg2QjAwNkRCNjNBIC8qIFVuaWZp
ZWRTb3VyY2U0NzkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gREU1Rjg1Q0YxRkEyMzg1MDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0NzkuY3BwICov
OyB9OwogCQlERTVGODYwRjFGQTIzODZCMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ4MC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTVGODVEMzFG
QTIzODU5MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ4MC5jcHAgKi87IH07Ci0JCURFNUY4NjEw
MUZBMjM4RDkwMDZEQjYzQSAvKiBQYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQURBNEExQjFEMjJGMkMw
MDA1QTlBMTUgLyogUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tICovOyB9OwogCQlERTVG
ODYxMTFGQTIzOURBMDA2REI2M0EgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0UyOUU1QzE2N0E4
QTE5MDA1ODZEM0QgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAgKi87IH07CiAJCURF
NUY4NjEyMUZBMjM5RTcwMDZEQjYzQSAvKiBKU0dDT2JzZXJ2YXRpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTRFQUUxQ0Y2NjU0QTAwNDcy
M0M0IC8qIEpTR0NPYnNlcnZhdGlvbi5jcHAgKi87IH07CiAJCURFNUY4NjFEMUZBMjgxNUIwMDZE
QjYzQSAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBNDc4QTdFMTZDRDcwQzMwMDdEMUJC
NCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSAqLzsgfTsKQEAgLTMyMzQ1
LDcgKzMyMzQ0LDYgQEAKIAkJCQlBMzFDNEU0RDE2RTAyQUE2MDAyRjc5NTcgLyogT0VTVGV4dHVy
ZUhhbGZGbG9hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTA3OENDNzE4ODBBQUI1MDA4MDk5
REMgLyogT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
N0ExN0E3MTEyRjI4MTgyMDA0RTAyRjYgLyogT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJREU1Rjg2MTAxRkEyMzhEOTAwNkRCNjNBIC8qIFBheW1lbnRNZXJjaGFu
dFNlc3Npb25Db2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFQTI4NDY2MjE0MUU4NDkwMEU0
MDdFOCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUFB
MTJERjQ5MTc0M0RGODMwMDREQUZERiAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBMjlBMzAxQ0JGNzRENDAwOTAxQ0NGIC8qIFBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCmluZGV4IGI0YWFmNjQyMWQyYjZkM2M1YjMw
ZGVhYTc0ZTNlNzI2MzI5ZDJhY2QuLmNiNjEwODI5MmE0ODk4NmMxOWM3OGIxMTQ0MGExNTc3MmEw
ZWE5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1t
CkBAIC0zMiwxNiArMzIsNyBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAotI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4K
LQotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhQYXNzS2l0
KTsKLSNlbHNlCi1TT0ZUX0xJTktfRlJBTUVXT1JLKFBhc3NLaXQpOwotI2VuZGlmCi0KLVNPRlRf
TElOS19NQVlfRkFJTChQYXNzS2l0LCBQS0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29u
dGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVu
dEJ1dHRvblR5cGUgdHlwZSwgUEtQYXltZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICps
YW5ndWFnZUNvZGUpLCAoY29udGV4dCwgZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFu
Z3VhZ2VDb2RlKSk7CisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAKICNl
bmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZKQogCkBAIC0xMDgsOSArOTksNiBAQCBzdGF0aWMgUEtQ
YXltZW50QnV0dG9uVHlwZSB0b1BLUGF5bWVudEJ1dHRvblR5cGUoQXBwbGVQYXlCdXR0b25UeXBl
IHR5cGUpCiAKIGJvb2wgUmVuZGVyVGhlbWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1dHRvbihjb25z
dCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgSW50UmVjdCYgcGFpbnRSZWN0KQogewotICAgIGlmICghY2FuTG9hZFBLRHJhd0FwcGxlUGF5
QnV0dG9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgIHBhaW50SW5m
by5jb250ZXh0KCkuc2V0U2hvdWxkU21vb3RoRm9udHModHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmlu
ZGV4IDM1Zjk4YjExYjdmMWE5MjEyOWFlZGI0MjEyMmFiMGI4NTkwNzkyMjUuLmQwZTM3NDUyMDZk
ZDk4YWI3NGI2ZjRkMTU1Yjg4Mjc2ZGE1ODZlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0zMCwy
MCArMzAsOCBAQAogCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tp
dFNvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5o
PgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+Ci0jaW1wb3J0IDx3dGYvU29m
dExpbmtpbmcuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElOS19QUklWQVRFX0ZSQU1F
V09SSyhQYXNzS2l0KQotI2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkKLSNlbmRp
ZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtDb250YWN0KTsKLVNPRlRfTElOS19DTEFT
UyhQYXNzS2l0LCBQS1BheW1lbnQpOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVu
dE1ldGhvZCk7Ci1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50TWVyY2hhbnRTZXNz
aW9uKTsKIAogbmFtZXNwYWNlIElQQyB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTY3
LDcgKzU1LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6UGF5bWVudCYKICAgICBhdXRvIGRhdGEgPSBhZG9w
dE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+
KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSkpIGxlbmd0aDpk
YXRhUmVmZXJlbmNlLnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsKICAgICBhdXRvIHVuYXJjaGl2
ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoZGF0YS5nZXQoKSk7CiAgICAgQHRyeSB7Ci0g
ICAgICAgIFBLUGF5bWVudCAqcGtQYXltZW50ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZD
bGFzczpnZXRQS1BheW1lbnRDbGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RL
ZXldOworICAgICAgICBQS1BheW1lbnQgKnBrUGF5bWVudCA9IFt1bmFyY2hpdmVyIGRlY29kZU9i
amVjdE9mQ2xhc3M6UEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRDbGFzcygpIGZvcktleTpOU0tl
eWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwogICAgICAgICBwYXltZW50ID0gUGF5bWVudChwa1Bh
eW1lbnQpOwogICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBQS1BheW1lbnQ6ICVAIiwgZXhjZXB0aW9uKTsK
QEAgLTExOCw3ICsxMDYsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENv
bnRhY3Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6UAogICAgIGF1dG8gZGF0
YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2Fz
dDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkg
bGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwogICAgIGF1dG8g
dW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRhLmdldCgpKTsKICAgICBA
dHJ5IHsKLSAgICAgICAgUEtDb250YWN0ICpwa0NvbnRhY3QgPSBbdW5hcmNoaXZlciBkZWNvZGVP
YmplY3RPZkNsYXNzOmdldFBLQ29udGFjdENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9v
dE9iamVjdEtleV07CisgICAgICAgIFBLQ29udGFjdCAqcGtDb250YWN0ID0gW3VuYXJjaGl2ZXIg
ZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdENsYXNzKCkgZm9y
S2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgICAgIHBheW1lbnRDb250YWN0
ID0gUGF5bWVudENvbnRhY3QocGtDb250YWN0KTsKICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24g
KmV4Y2VwdGlvbikgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgUEtDb250
YWN0OiAlQCIsIGV4Y2VwdGlvbik7CkBAIC0xNzUsNyArMTYzLDcgQEAgYm9vbCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgV2UKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0
aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihk
YXRhUmVmZXJlbmNlLmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVlV2hl
bkRvbmU6Tk9dKTsKICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURh
dGEoZGF0YS5nZXQoKSk7CiAgICAgQHRyeSB7Ci0gICAgICAgIFBLUGF5bWVudE1lcmNoYW50U2Vz
c2lvbiAqcGtQYXltZW50TWVyY2hhbnRTZXNzaW9uID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0
T2ZDbGFzczpnZXRQS1BheW1lbnRNZXJjaGFudFNlc3Npb25DbGFzcygpIGZvcktleTpOU0tleWVk
QXJjaGl2ZVJvb3RPYmplY3RLZXldOworICAgICAgICBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24g
KnBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xh
c3M6UEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRNZXJjaGFudFNlc3Npb25DbGFzcygpIGZvcktl
eTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwogICAgICAgICBwYXltZW50TWVyY2hhbnRT
ZXNzaW9uID0gUGF5bWVudE1lcmNoYW50U2Vzc2lvbihwa1BheW1lbnRNZXJjaGFudFNlc3Npb24p
OwogICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIGRlY29kZSBQS1BheW1lbnRNZXJjaGFudFNlc3Npb246ICVAIiwgZXhj
ZXB0aW9uKTsKQEAgLTIwNSw3ICsxOTMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UGF5bWVudE1ldGhvZD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQYQogICAg
IGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6
Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2Uu
ZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwog
ICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRhLmdldCgp
KTsKICAgICBAdHJ5IHsKLSAgICAgICAgUEtQYXltZW50TWV0aG9kICpwa1BheW1lbnRNZXRob2Qg
PSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldFBLUGF5bWVudE1ldGhvZENsYXNz
KCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgICAgIFBLUGF5bWVu
dE1ldGhvZCAqcGtQYXltZW50TWV0aG9kID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFz
czpQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudE1ldGhvZENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRB
cmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgICAgIHBheW1lbnRNZXRob2QgPSBQYXltZW50TWV0
aG9kKHBrUGF5bWVudE1ldGhvZCk7CiAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRp
b24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIFBLUGF5bWVudDogJUAi
LCBleGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDA4ZGJkN2I2NTZkNDUwNGJm
ZTcwYWNlOWE0ZjllMTBmYzI5MDg0NmIuLmU4OGM1ZmU2YWNhMWI5NDFmYzA5MGFhYTQ2ZTE5Yzhi
ODk4NGNiODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI5NCw5ICsyOTQsOSBAQCBVSVBy
b2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KIAogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KIAotVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BcHBs
ZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KIAotVUlQcm9jZXNzL0Fw
cGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbSBAbm8tdW5pZnkKK1VJ
UHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KIAog
VUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHlDb2NvYS5tbQogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL2NvY29hL1NlY0tleVByb3h5U3Rv
cmUubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29h
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCmlu
ZGV4IGRiMmI2YzhiZDIwZmNjZjAwOTQ5NDIwNWQyMTFkY2M0MTkyMzgxNzguLjFjMzliOWM0MmYx
OGM0YzhlZDUyMzg5ZWJjMmRmODA3ZDcyNjgwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQpAQCAtMzMsMjYgKzMzLDEyIEBACiAjaW1wb3J0IDxX
ZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bh
eW1lbnRIZWFkZXJzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgotI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9QYXNzS2l0U1BJLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5r
Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+Ci0j
aW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElO
S19QUklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChQYXNzS2l0KQotI2Vsc2UKLVNPRlRfTElOS19G
UkFNRVdPUksoUGFzc0tpdCkKLSNlbmRpZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQ
YXNzTGlicmFyeSk7Ci1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyKTsKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRN
ZXJjaGFudFNlc3Npb24pOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudFJlcXVl
c3QpOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudFN1bW1hcnlJdGVtKTsKLVNP
RlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1NoaXBwaW5nTWV0aG9kKTsKLQotI2lmIChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAo
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTEwMDAwKQotU09GVF9MSU5LX0ZSQU1FV09SSyhDb250YWN0cykKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FM
TE9XRUQgPj0gMTAxMzAwKQorU09GVF9MSU5LX0ZSQU1FV09SSyhDb250YWN0cyk7CiBTT0ZUX0xJ
TktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N0cmVldEtleSwgTlNTdHJpbmcg
Kik7CiBTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N1YkxvY2Fs
aXR5S2V5LCBOU1N0cmluZyAqKTsKIFNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0
YWxBZGRyZXNzQ2l0eUtleSwgTlNTdHJpbmcgKik7CkBAIC02MSwzMCArNDcsMTcgQEAgU09GVF9M
SU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NTdGF0ZUtleSwgTlNTdHJpbmcg
Kik7CiBTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1Bvc3RhbENv
ZGVLZXksIE5TU3RyaW5nICopOwogU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBvc3Rh
bEFkZHJlc3NDb3VudHJ5S2V5LCBOU1N0cmluZyAqKTsKIFNPRlRfTElOS19DT05TVEFOVChDb250
YWN0cywgQ05Qb3N0YWxBZGRyZXNzSVNPQ291bnRyeUNvZGVLZXksIE5TU3RyaW5nICopOwotU09G
VF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQpCi1TT0ZU
X0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUp
Ci1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFj
dFVwZGF0ZSkKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0U2hpcHBp
bmdNZXRob2RVcGRhdGUpCi1TT0ZUX0xJTktfQ09OU1RBTlQoUGFzc0tpdCwgUEtQYXltZW50RXJy
b3JEb21haW4sIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLQ29u
dGFjdEZpZWxkUG9zdGFsQWRkcmVzcywgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQo
UGFzc0tpdCwgUEtDb250YWN0RmllbGRFbWFpbEFkZHJlc3MsIE5TU3RyaW5nICopOwotU09GVF9M
SU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmVOdW1iZXIsIE5TU3RyaW5n
ICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkTmFtZSwgTlNT
dHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoUGFzc0tpdCwgUEtDb250YWN0RmllbGRQaG9u
ZXRpY05hbWUsIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLUGF5
bWVudEVycm9yQ29udGFjdEZpZWxkVXNlckluZm9LZXksIE5TU3RyaW5nICopOwotU09GVF9MSU5L
X0NPTlNUQU5UKFBhc3NLaXQsIFBLUGF5bWVudEVycm9yUG9zdGFsQWRkcmVzc1VzZXJJbmZvS2V5
LCBOU1N0cmluZyAqKTsKLSNlbmRpZgogCi10eXBlZGVmIHZvaWQgKF5QS0Nhbk1ha2VQYXltZW50
c0NvbXBsZXRpb24pKEJPT0wgaXNWYWxpZCwgTlNFcnJvciAqZXJyb3IpOwotI2lmIChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAo
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTEwMDAwKQotZXh0ZXJuICJDIiB2b2lkIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50
SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKE5TU3RyaW5nICppZGVudGlmaWVy
LCBOU1N0cmluZyAqZG9tYWluLCBOU1N0cmluZyAqc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyLCBQS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbik7Ci1TT0ZU
X0xJTktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJLaXQsIFBhc3NLaXQsIFBLQ2Fu
TWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0
aW9uLCB2b2lkLCAoTlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIE5TU3Ry
aW5nICpzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIFBLQ2FuTWFrZVBheW1l
bnRzQ29tcGxldGlvbiBjb21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgc291cmNlQXBw
bGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBjb21wbGV0aW9uKSk7Ci0jZWxzZQotZXh0ZXJu
ICJDIiB2b2lkIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFp
bihOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwgUEtDYW5NYWtlUGF5bWVu
dHNDb21wbGV0aW9uIGNvbXBsZXRpb24pOwotU09GVF9MSU5LX0ZVTkNUSU9OX01BWV9GQUlMX0ZP
Ul9TT1VSQ0UoV2ViS2l0LCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElk
ZW50aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcg
KmRvbWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRp
ZmllciwgZG9tYWluLCBjb21wbGV0aW9uKSk7CitTT0ZUX0xJTktfQ09OU1RBTlQoUEFMOjpQYXNz
S2l0LCBQS1BheW1lbnRFcnJvckRvbWFpbiwgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RB
TlQoUEFMOjpQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MsIE5TU3RyaW5nICop
OworU09GVF9MSU5LX0NPTlNUQU5UKFBBTDo6UGFzc0tpdCwgUEtDb250YWN0RmllbGRFbWFpbEFk
ZHJlc3MsIE5TU3RyaW5nICopOworU09GVF9MSU5LX0NPTlNUQU5UKFBBTDo6UGFzc0tpdCwgUEtD
b250YWN0RmllbGRQaG9uZU51bWJlciwgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RBTlQo
UEFMOjpQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZE5hbWUsIE5TU3RyaW5nICopOworU09GVF9MSU5L
X0NPTlNUQU5UKFBBTDo6UGFzc0tpdCwgUEtDb250YWN0RmllbGRQaG9uZXRpY05hbWUsIE5TU3Ry
aW5nICopOworU09GVF9MSU5LX0NPTlNUQU5UKFBBTDo6UGFzc0tpdCwgUEtQYXltZW50RXJyb3JD
b250YWN0RmllbGRVc2VySW5mb0tleSwgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RBTlQo
UEFMOjpQYXNzS2l0LCBQS1BheW1lbnRFcnJvclBvc3RhbEFkZHJlc3NVc2VySW5mb0tleSwgTlNT
dHJpbmcgKik7CiAjZW5kaWYKIAotCiBAaW1wbGVtZW50YXRpb24gV0tQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkm
KXdlYlBheW1lbnRDb29yZGluYXRvclByb3h5CkBAIC0xMDIsNyArNzUsNyBAQCAtICh2b2lkKWlu
dmFsaWRhdGUKICAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgPSBudWxscHRyOwogICAg
IGlmIChfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKSB7CiAjaWYgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAw
MDApCi0gICAgICAgIF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24oYWRvcHROUyhbYWxsb2NQ
S1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0aFN0YXR1czpQS1Bh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBlcnJvcnM6QFsgXV0pLmdldCgpKTsKKyAg
ICAgICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQ
YXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6UEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF1dKS5nZXQoKSk7CiAjZWxz
ZQogICAgICAgICBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKFBLUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXNGYWlsdXJlKTsKICNlbmRpZgpAQCAtMTE5LDcgKzkyLDcgQEAgLSAodm9pZClw
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXIKICAgICBBU1NFUlQoIV9zZXNzaW9uQmxvY2spOwogICAgIF9zZXNzaW9u
QmxvY2sgPSBzZXNzaW9uQmxvY2s7CiAKLSAgICBbZ2V0UEtQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyQ2xhc3MoKSBwYXltZW50U2VydmljZXNNZXJjaGFudFVSTDpeKE5TVVJMICpt
ZXJjaGFudFVSTCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBbUEFMOjpnZXRfUGFzc0tpdF9QS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJDbGFzcygpIHBheW1lbnRTZXJ2aWNlc01l
cmNoYW50VVJMOl4oTlNVUkwgKm1lcmNoYW50VVJMLCBOU0Vycm9yICplcnJvcikgewogICAgICAg
ICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBLQ2FuTWFrZVBheW1lbnRzV2l0
aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIsIGVycm9yKTsKIApAQCAtMTU1
LDcgKzEyOCw3IEBAIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjoo
UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyCiB7CiAjaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MTAwMDApCiAgICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAg
Y29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0
YW5jZSgpIGluaXRXaXRoU3RhdHVzOlBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJl
IGVycm9yczpAWyBdXSkuZ2V0KCkpOworICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW1BBTDo6
YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0aFN0YXR1
czpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBlcnJvcnM6QFsgXV0pLmdldCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTcwLDcgKzE0Myw3IEBAIC0gKHZvaWQp
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyCiB7CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAgICAgaWYgKCFfd2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFth
bGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0
aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKKyAgICAgICAgY29tcGxldGlvbihh
ZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGVJbnN0
YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpAWyBdXSkuZ2V0KCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xODMsNyArMTU2LDcgQEAgLSAodm9pZClwYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXIKIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RTaGlw
cGluZ01ldGhvZDooUEtTaGlwcGluZ01ldGhvZCAqKXNoaXBwaW5nTWV0aG9kIGhhbmRsZXI6KHZv
aWQgKF4pKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSAqdXBkYXRlKSljb21w
bGV0aW9uIHsKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAgICBpZiAoIV93ZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW2FsbG9jUEtQYXlt
ZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRT
dW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKKyAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFtQ
QUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBp
bml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTk3LDcgKzE3MCw3IEBAIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyCiB7
CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAgICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVl
c3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoRXJyb3JzOkBbIF0gcGF5
bWVudFN1bW1hcnlJdGVtczpAWyBdIHNoaXBwaW5nTWV0aG9kczpAWyBdXSkuZ2V0KCkpOworICAg
ICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBp
bmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczpAWyBdIHBheW1lbnRTdW1t
YXJ5SXRlbXM6QFsgXSBzaGlwcGluZ01ldGhvZHM6QFsgXV0pLmdldCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMjk4LDcgKzI3MSw3IEBAIGJvb2wgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzKCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogI2VuZGlmCiAKLSAgICByZXR1cm4gW2dldFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckNsYXNzKCkgY2FuTWFrZVBheW1lbnRzXTsKKyAgICByZXR1cm4gW1BBTDo6Z2V0X1Bh
c3NLaXRfUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSBjYW5NYWtl
UGF5bWVudHNdOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9y
bUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0zMTEsMTQgKzI4NCw3IEBAIHZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNh
cmQoY29uc3QgU3RyCiAjZW5kaWYKIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQotICAgIGlmICgh
Y2FuTG9hZF9QYXNzS2l0X1BLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRv
bWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIH0pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc29mdExpbmtfUGFzc0tpdF9QS0Nhbk1ha2VQYXlt
ZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlvbihtZXJj
aGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5wcm9j
ZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXIoKSwgQmxvY2tQdHI8dm9pZCAoQk9PTCwgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQk9PTCBjYW5N
YWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKKyAgICBQS0Nhbk1ha2VQYXlt
ZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlvbihtZXJj
aGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5wcm9j
ZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXIoKSwgQmxvY2tQdHI8dm9pZChCT09MLCBOU0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShCT09MIGNhbk1h
a2VQYXltZW50cywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3Ip
CiAgICAgICAgICAgICBMT0dfRVJST1IoIlBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRl
bnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIsIGVycm9yKTsKIApAQCAtMzU0LDcgKzMyMCw3IEBA
IHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtT3BlblBheW1lbnRTZXR1
cChjb25zdCBTdHJpbmcmIG1lcmNoYW50CiAgICAgfQogI2VuZGlmCiAKLSAgICBhdXRvIHBhc3NM
aWJyYXJ5ID0gYWRvcHROUyhbYWxsb2NQS1Bhc3NMaWJyYXJ5SW5zdGFuY2UoKSBpbml0XSk7Cisg
ICAgYXV0byBwYXNzTGlicmFyeSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1Bhc3NMaWJyYXJ5SW5z
dGFuY2UoKSBpbml0XSk7CiAgICAgW3Bhc3NMaWJyYXJ5IG9wZW5QYXltZW50U2V0dXBGb3JNZXJj
aGFudElkZW50aWZpZXI6bWVyY2hhbnRJZGVudGlmaWVyIGRvbWFpbjpkb21haW5OYW1lIGNvbXBs
ZXRpb246QmxvY2tQdHI8dm9pZCAoQk9PTCk+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsK
ICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCByZXN1bHRdIHsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJlc3VsdCk7CkBAIC00MTgsNyArMzg0LDcgQEAgc3RhdGljIE5TRGVjaW1hbE51
bWJlciAqdG9EZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQogCiBzdGF0aWMgUmV0
YWluUHRyPFBLUGF5bWVudFN1bW1hcnlJdGVtPiB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYgbGluZUl0
ZW0pCiB7Ci0gICAgcmV0dXJuIFtnZXRQS1BheW1lbnRTdW1tYXJ5SXRlbUNsYXNzKCkgc3VtbWFy
eUl0ZW1XaXRoTGFiZWw6bGluZUl0ZW0ubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihsaW5l
SXRlbS5hbW91bnQpIHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUobGluZUl0ZW0udHlw
ZSldOworICAgIHJldHVybiBbUEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRTdW1tYXJ5SXRlbUNs
YXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6bGluZUl0ZW0ubGFiZWwgYW1vdW50OnRvRGVjaW1h
bE51bWJlcihsaW5lSXRlbS5hbW91bnQpIHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUo
bGluZUl0ZW0udHlwZSldOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHRvUEtQYXlt
ZW50U3VtbWFyeUl0ZW1zKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1
ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyYgdG90YWxBbmRMaW5lSXRlbXMpCkBAIC00NzcsNyArNDQz
LDcgQEAgc3RhdGljIFBLU2hpcHBpbmdUeXBlIHRvUEtTaGlwcGluZ1R5cGUoV2ViQ29yZTo6QXBw
bGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlMKIAogc3RhdGljIFJldGFpblB0cjxQS1NoaXBw
aW5nTWV0aG9kPiB0b1BLU2hpcHBpbmdNZXRob2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kJiBzaGlwcGluZ01ldGhvZCkKIHsKLSAg
ICBSZXRhaW5QdHI8UEtTaGlwcGluZ01ldGhvZD4gcmVzdWx0ID0gW2dldFBLU2hpcHBpbmdNZXRo
b2RDbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOnNoaXBwaW5nTWV0aG9kLmxhYmVsIGFtb3Vu
dDp0b0RlY2ltYWxOdW1iZXIoc2hpcHBpbmdNZXRob2QuYW1vdW50KV07CisgICAgUmV0YWluUHRy
PFBLU2hpcHBpbmdNZXRob2Q+IHJlc3VsdCA9IFtQQUw6OmdldF9QYXNzS2l0X1BLU2hpcHBpbmdN
ZXRob2RDbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOnNoaXBwaW5nTWV0aG9kLmxhYmVsIGFt
b3VudDp0b0RlY2ltYWxOdW1iZXIoc2hpcHBpbmdNZXRob2QuYW1vdW50KV07CiAgICAgW3Jlc3Vs
dCBzZXRJZGVudGlmaWVyOnNoaXBwaW5nTWV0aG9kLmlkZW50aWZpZXJdOwogICAgIFtyZXN1bHQg
c2V0RGV0YWlsOnNoaXBwaW5nTWV0aG9kLmRldGFpbF07CiAKQEAgLTUxMiw3ICs0NzgsNyBAQCBz
dGF0aWMgUEtQYXltZW50UmVxdWVzdEFQSVR5cGUgdG9BUElUeXBlKFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0OgogCiBSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4gdG9Q
S1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBjb25zdCBXZWJDb3Jl
OjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0lj
b25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5
bWVudFJlcXVlc3QpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVu
dFJlcXVlc3RJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1BB
TDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0SW5zdGFuY2UoKSBpbml0XSk7CiAKICAgICBbcmVzdWx0
IHNldE9yaWdpbmF0aW5nVVJMOm9yaWdpbmF0aW5nVVJMXTsKIApAQCAtNzYxLDcgKzcyNyw3IEBA
IHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50
U2Vzc2lvbihjb25zdCBzdGQ6Om9wdGlvCiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAgICBh
dXRvIHN0YXR1cyA9IHJlc3VsdCA/IHJlc3VsdC0+c3RhdHVzIDogV2ViQ29yZTo6UGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXM6OlN1Y2Nlc3M7Ci0gICAgYXV0byBwa1BheW1lbnRBdXRob3JpemF0
aW9uUmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5z
dGFuY2UoKSBpbml0V2l0aFN0YXR1czp0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMoc3Rh
dHVzKSBlcnJvcnM6cmVzdWx0ID8gdG9OU0Vycm9ycyhyZXN1bHQtPmVycm9ycykuZ2V0KCkgOiBA
WyBdXSk7CisgICAgYXV0byBwa1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0ID0gYWRvcHROUyhb
UEFMOjphbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRo
U3RhdHVzOnRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhzdGF0dXMpIGVycm9yczpyZXN1
bHQgPyB0b05TRXJyb3JzKHJlc3VsdC0+ZXJyb3JzKS5nZXQoKSA6IEBbIF1dKTsKICAgICBtX3Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRBdXRob3Jp
emVkQ29tcGxldGlvbihwa1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0LmdldCgpKTsKICNlbHNl
CiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXlt
ZW50QXV0aG9yaXplZENvbXBsZXRpb24odG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHJl
c3VsdCkpOwpAQCAtNzg3LDcgKzc1Myw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihjb25zdCBzCiAgICAg
ICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVu
dFN1bW1hcnlJdGVtcyA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxB
bmRMaW5lSXRlbXMpOwogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCi0gICAgYXV0byBwa1NoaXBw
aW5nTWV0aG9kVXBkYXRlID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdN
ZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczptX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRl
bXMuZ2V0KCldKTsKKyAgICBhdXRvIHBrU2hpcHBpbmdNZXRob2RVcGRhdGUgPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBp
bml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXSk7CiAgICAgbV9wYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGlu
Z01ldGhvZENvbXBsZXRpb24ocGtTaGlwcGluZ01ldGhvZFVwZGF0ZS5nZXQoKSk7CiAjZWxzZQog
ICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkU2Vs
ZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNT
dWNjZXNzLCBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3Bh
eW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkpOwpAQCAtODM5LDcgKzgwNSw3IEBAIHZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxl
Y3Rpb24oY29uc3QKICAgICB9CiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKLSAgICBhdXRvIHBr
U2hpcHBpbmdDb250YWN0VXBkYXRlID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hp
cHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczp1cGRhdGUgPyB0b05T
RXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKS5nZXQoKSA6IEBbIF0gcGF5bWVudFN1bW1hcnlJdGVtczpt
X3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1t
YXJ5SXRlbXMuZ2V0KCkgc2hpcHBpbmdNZXRob2RzOm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzLmdldCgpXSk7CisgICAgYXV0byBw
a1NoaXBwaW5nQ29udGFjdFVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1
ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczp1cGRhdGUg
PyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKS5nZXQoKSA6IEBbIF0gcGF5bWVudFN1bW1hcnlJ
dGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1l
bnRTdW1tYXJ5SXRlbXMuZ2V0KCkgc2hpcHBpbmdNZXRob2RzOm1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzLmdldCgpXSk7CiAgICAg
bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RT
aGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKHBrU2hpcHBpbmdDb250YWN0VXBkYXRlLmdldCgpKTsK
ICNlbHNlCiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUt
Pl9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKHRvUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1cyh1cGRhdGUpLCBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X3NoaXBwaW5nTWV0aG9kcy5nZXQoKSwgbV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpKTsKQEAgLTg1
Niw3ICs4MjIsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNv
bXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBzdAogICAgICAgICBtX3BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMg
PSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRhdGUtPm5ld1RvdGFsQW5kTGluZUl0ZW1zKTsK
IAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQotICAgIGF1dG8gcGtQYXltZW50TWV0aG9kVXBkYXRl
ID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZUluc3Rh
bmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKV0pOworICAg
IGF1dG8gcGtQYXltZW50TWV0aG9kVXBkYXRlID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVu
dFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1t
YXJ5SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9w
YXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXSk7CiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbihw
a1BheW1lbnRNZXRob2RVcGRhdGUuZ2V0KCkpOwogI2Vsc2UKICAgICBtX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21w
bGV0aW9uKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5
bWVudFN1bW1hcnlJdGVtcy5nZXQoKSk7CkBAIC04NzEsNyArODM3LDcgQEAgVmVjdG9yPFN0cmlu
Zz4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQXZhaWxhYmxlUGF5bWVudE5l
dHdvcmtzKCkKICAgICAgICAgcmV0dXJuIHsgfTsKICNlbmRpZgogICAgIAotICAgIE5TQXJyYXk8
UEtQYXltZW50TmV0d29yaz4gKmF2YWlsYWJsZU5ldHdvcmtzID0gW2dldFBLUGF5bWVudFJlcXVl
c3RDbGFzcygpIGF2YWlsYWJsZU5ldHdvcmtzXTsKKyAgICBOU0FycmF5PFBLUGF5bWVudE5ldHdv
cms+ICphdmFpbGFibGVOZXR3b3JrcyA9IFtQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudFJlcXVl
c3RDbGFzcygpIGF2YWlsYWJsZU5ldHdvcmtzXTsKICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7
CiAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXZhaWxhYmxlTmV0d29ya3MuY291
bnQpOwogICAgIGZvciAoUEtQYXltZW50TmV0d29yayBuZXR3b3JrIGluIGF2YWlsYWJsZU5ldHdv
cmtzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IGMwZGYz
Yzg5ZGI0Y2Y0MTc0OThhYzI2OGU5OWUxMTViYTQwNWQ3NjIuLmY5ZTI4MGQxYzk1NmE2ZDhkZTcy
NTQxZmZmMDk3ZjU4Y2RlYWE4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHlJT1MubW0KQEAgLTM0LDEwICszNCw3IEBACiAjaW1wb3J0IDxQYXNzS2l0L1Bhc3NLaXQuaD4K
ICNpbXBvcnQgPFVJS2l0L1VJVmlld0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4KLSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgot
Ci1TT0ZUX0xJTktfRlJBTUVXT1JLKFBhc3NLaXQpCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwg
UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKKyNpbXBvcnQgPHBhbC9jb2Nv
YS9QYXNzS2l0U29mdExpbmsuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTU0LDcgKzUx
LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVu
dFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2kKIAogICAgIGF1dG8gcGF5bWVudFJlcXVlc3Qg
PSB0b1BLUGF5bWVudFJlcXVlc3QobV93ZWJQYWdlUHJveHksIG9yaWdpbmF0aW5nVVJMLCBsaW5r
SWNvblVSTFN0cmluZ3MsIHJlcXVlc3QpOwogCi0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3Qu
Z2V0KCldKTsKKyAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgPSBhZG9w
dE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVySW5zdGFu
Y2UoKSBpbml0V2l0aFBheW1lbnRSZXF1ZXN0OnBheW1lbnRSZXF1ZXN0LmdldCgpXSk7CiAgICAg
aWYgKCFtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlNYWMubW0KaW5kZXggNzQxNTkzODNmMTk1NDI3ZGI5NzYwYThjMDFl
YzcwNjdhNjdjNmY5NS4uYTRkMzA5NjljMmU2ODZmY2Y0ZWRiN2Q1NTk4YmU4YTQ3ODhhYzgyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Fw
cGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQpAQCAtMzAsMTQgKzMw
LDExIEBACiAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5oIgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
Lmg+CisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYv
QmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi1TT0ZUX0xJTktfUFJJ
VkFURV9GUkFNRVdPUktfT1BUSU9OQUwoUGFzc0tpdCkKLQotU09GVF9MSU5LX0NMQVNTKFBhc3NL
aXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci1TT0ZUX0xJTktfQ09O
U1RBTlQoUGFzc0tpdCwgUEtFeHRlbnNpb25QYXltZW50QXV0aG9yaXphdGlvblVJRXh0ZW5zaW9u
UG9pbnROYW1lLCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChQQUw6OlBhc3NLaXQs
IFBLRXh0ZW5zaW9uUGF5bWVudEF1dGhvcml6YXRpb25VSUV4dGVuc2lvblBvaW50TmFtZSwgTlNT
dHJpbmcgKik7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KaW5kZXgg
ODNmZmVkMzQ1ZDI2MTZhOTFjMGFlN2IzNjgzNWVmYzhiMzk0ZGQ5Ny4uMDM3NWI4M2IyYTdmNTNj
NjFhOWZkYzQ2OGViMWI2YWQ1YWQxNzI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQpAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW1wb3J0ICJTYWZlQnJvd3NpbmdTUEkuaCIKICNpbXBvcnQgPFdlYkNvcmUv
TG9jYWxpemVkU3RyaW5ncy5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRT
dHJpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9MYW5ndWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGE5ZTVkMDcxMTBhY2QzZTIwNDE0YTkxZmUwOWM1ZGRkZTIwMjFhZDguLmY0NDQxZmQ5Yzdl
MzNlYWFlZGQyOGZmN2U2NmYwNTg4YTY1ZGIzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjg2LDggKzY4Niw2IEBACiAJCTJEOTJB
Nzk1MjEyQjZBRDQwMEY0OTNGRCAvKiBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMkQ5MEQx
MTI4MUM5NjYwMDFFQjk2MiAvKiBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAq
LzsgfTsKIAkJMkQ5MkE3OTYyMTJCNkFEQTAwRjQ5M0ZEIC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNEE5
QzUzMTJCODE2Q0YwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgKi87IH07CiAJ
CTJEOTJBNzk3MjEyQjZBREEwMEY0OTNGRCAvKiBQbHVnaW5JbmZvcm1hdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNGOEM4RTE3M0FGNTJE
MDA3QjdGMzkgLyogUGx1Z2luSW5mb3JtYXRpb24uY3BwICovOyB9OwotCQkyRDkyQTc5ODIxMzQ4
RDg1MDBGNDkzRkQgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc3RDFEMUIzMEE5MDA3
QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0gKi87IH07Ci0JCTJEOTJB
NzlGMjEzNEIwN0UwMEY0OTNGRCAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFGNzdCMUQx
QjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSAqLzsgfTsK
IAkJMkQ5MzExNjkyMTJGNjFCMjAwMDQ0QkZFIC8qIFdLQ29udGVudFZpZXcubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNCNEUzRDE4QkJFMDQ0MDAw
RkNGQzkgLyogV0tDb250ZW50Vmlldy5tbSAqLzsgfTsKIAkJMkQ5MzExNkEyMTJGNjFCNTAwMDQ0
QkZFIC8qIFdLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0I0RTZCMThCQkYyNkEwMDBGQ0ZDOSAvKiBXS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gKi87IH07CiAJCTJEOUVBMzBEMUE5NkNCNTkwMDJEMjgw
NyAvKiBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ5RUEzMEMxQTk2Q0I1OTAwMkQyODA3IC8qIFdLUGFn
ZUluamVjdGVkQnVuZGxlQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTExMDEwLDggKzExMDA4LDYgQEAKIAkJCQk3Q0U5Q0UxMDFGQTA3
NjdBMDAwMTc3REUgLyogV2ViUGFnZVVwZGF0ZVByZWZlcmVuY2VzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDNDY5NEM5MUE0QjRFQTEwMEFENTg0NSAvKiBXZWJQYXN0ZWJvYXJkUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCMUY3OTYxRDFCMzYxMzAwN0M5
QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQkyRDkyQTc5RjIxMzRCMDdFMDBGNDkzRkQgLyogV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlJT1MubW0gaW4gU291cmNlcyAqLywKLQkJCQkyRDkyQTc5ODIxMzQ4RDg1MDBGNDkz
RkQgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkxQUIxRjc5ODFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3OEQyMTJCNkFCMTAw
RjQ5M0ZEIC8qIFdlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
RDkxMzQ0RTIxMkNGOUYwMDAxMjhBRkQgLyogV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcCBpbiBT
b3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355421</attachid>
            <date>2018-11-21 09:40:49 -0800</date>
            <delta_ts>2018-11-21 09:58:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191875-20181121094045.patch</filename>
            <type>text/plain</type>
            <size>67858</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQxMWQ5ZGVmOGIxMzhiNzExMTYwMWFh
YmVjYTM1OGQ4MTAxMDJhNzcuLjQxZWQzNjEzZDQxMTNjZTM5NTliMjA4ZDJmZmMzYmM3NjU5YmZh
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUg
Zm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MTg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL2NvY29hL1NvZnRMaW5raW5nLmg6CisKIDIwMTgtMTEtMTQgIEtlaXRoIFJvbGxp
biAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCAjZW5kIHZzLiAjZW5kaWYgdHlw
by4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwZjc0ZjdhMTlhOTQyMWNmNmNlMzMzYzFmMDY3ZmE2YWVlZTRlOGI3
Li5kY2MzZjI0NDcwZjMxNTYzZWYyMGJiM2VkNGZhYWI0ZWM0ZWUwMGUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBhc3NL
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg3
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9k
dWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydCk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50
TWVyY2hhbnRTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50TWVyY2hh
bnRTZXNzaW9uOjpmcm9tSlMpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUNvY29hOjpwYWludEFwcGxlUGF5QnV0dG9uKToKKwogMjAxOC0xMS0yMCAgRGVhbiBK
YWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZpbmcgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmUgZnJvbSBXZWJMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMGVkZWU1YzNh
YzhkZTI4NTA2NDUxNzY1ZTIwMTUwYmFlOGMzODlmNy4uMWE0MTg4Zjc1NDBjYWFjM2U3NTc1YWFi
ZGMxNTUxM2VlOGQ3NDJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2Nv
YV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOiBBZGRlZC4K
KyAgICAgICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tOiBBZGRlZC4KKyAgICAgICAg
KiBwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaDoKKwogMjAxOC0xMS0xNyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBSZW1vdmUgYWxsIHVz
YWdlcyBvZiBVSUl0ZW1Qcm92aWRlciwgVUlJdGVtUHJvdmlkZXJSZWFkaW5nLCBhbmQgcmVsYXRl
ZCBjbGFzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZlOGUzZTRkOGEwOWUxYmUzZjljYjU1ZmM3OTk0MTAyNTFk
YWI5NjUuLjMzZmY1NzA4NjViZjkyZTRkZGQxOGNkYTg4ZDE3ZmNiMDg4YzkyN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzcgQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBh
c3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MTg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRDb250YWN0Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPjo6
ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0
aG9kPjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgaW52YWxpZGF0ZV0pOgorICAgICAgICAoLVtX
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyOmRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246XSk6CisgICAg
ICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkQXV0aG9yaXplUGF5bWVudDpoYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFBheW1lbnRN
ZXRob2Q6aGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRT
ZWxlY3RTaGlwcGluZ01ldGhvZDpoYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyOmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDpoYW5kbGVyOl0pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVu
dHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXApOgorICAgICAg
ICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKToKKyAgICAgICAgKFdlYktpdDo6dG9Q
S1NoaXBwaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29t
cGxldGVQYXltZW50U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0
ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUF2
YWlsYWJsZVBheW1lbnROZXR3b3Jrcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2lv
cy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5t
bToKKwogMjAxOC0xMS0yMCAgSmVmZiBNaWxsZXIgIDxqZWZmbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV0dXJuIG51bGxwdHIgaW1tZWRpYXRlbHkgaWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0IGlu
IHRoZSBIYXNoTWFwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggZTJlYjc1YmNkYjMzYTczMTM2NDAyZGNkMDEy
ZGEwNzYzZmU2OGQ2ZS4uMzBjYTkwNWMyYTE0ZDg5MmE5MzVjZWU1OTc2ZTlkNGNjNGFhMDJmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCkBAIC02MTYsOSArNjE2LDEwIEBACiAKICNpZiBQTEFURk9STShNQUMpCiAK
LSNkZWZpbmUgVVNFX0FQUEtJVCAxCiAjZGVmaW5lIEhBVkVfUlVOTE9PUF9USU1FUiAxCiAjZGVm
aW5lIEhBVkVfU0VDX0tFWUNIQUlOIDEKKyNkZWZpbmUgVVNFX0FQUEtJVCAxCisjZGVmaW5lIFVT
RV9QQVNTS0lUIDEKIAogI2lmIENQVShYODZfNjQpCiAjZGVmaW5lIEhBVkVfTkVUV09SS19FWFRF
TlNJT04gMQpAQCAtMTA1Myw5ICsxMDU0LDEwIEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
UykKKyNkZWZpbmUgSEFWRV9BUFBfTElOS1MgMQorI2RlZmluZSBVU0VfUEFTU0tJVCAxCiAjZGVm
aW5lIFVTRV9RVUlDS19MT09LIDEKICNkZWZpbmUgVVNFX1NZU1RFTV9QUkVWSUVXIDEKLSNkZWZp
bmUgSEFWRV9BUFBfTElOS1MgMQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiAhUExBVEZPUk0oSU9TTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvU29m
dExpbmtpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1NvZnRMaW5raW5nLmgKaW5kZXggNmFl
ZWRhZTRhNjYzMzQ1NzYwNmJhN2UxY2JlZmZmNWVhNjNjMDgyZi4uZDJiNDI4M2JmZTMyY2UwM2Vk
OGJmN2VmYmQ2ZjA0MjI1YTQ0NDNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2Ev
U29mdExpbmtpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Tb2Z0TGlua2luZy5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMS0yMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzQwLDkgKzM0MCw5IEBACiAgICAgfSBcCiAgICAgfQogCi0jZGVmaW5l
IFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrKSBcCisjZGVmaW5lIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBleHBvcnQpIFwKICAgICBuYW1lc3BhY2Ug
ZnVuY3Rpb25OYW1lc3BhY2UgeyBcCi0gICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KGJvb2wg
aXNPcHRpb25hbCA9IGZhbHNlKTsgXAorICAgIGV4cG9ydCB2b2lkKiBmcmFtZXdvcmsjI0xpYnJh
cnkoYm9vbCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCiAgICAgdm9pZCogZnJhbWV3b3JrIyNMaWJy
YXJ5KGJvb2wgaXNPcHRpb25hbCkgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgdm9pZCogZnJh
bWV3b3JrTGlicmFyeTsgXApAQCAtMzU2LDkgKzM1NiwxMiBAQAogICAgIH0gXAogICAgIH0KIAot
I2RlZmluZSBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRShmdW5jdGlvbk5h
bWVzcGFjZSwgZnJhbWV3b3JrKSBcCisjZGVmaW5lIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NP
VVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrKSBcCisgICAgU09GVF9MSU5LX0ZSQU1F
V09SS19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmss
ICkKKworI2RlZmluZSBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBleHBvcnQpIFwKICAgICBuYW1l
c3BhY2UgZnVuY3Rpb25OYW1lc3BhY2UgeyBcCi0gICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5
KGJvb2wgaXNPcHRpb25hbCA9IGZhbHNlKTsgXAorICAgIGV4cG9ydCB2b2lkKiBmcmFtZXdvcmsj
I0xpYnJhcnkoYm9vbCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCiAgICAgdm9pZCogZnJhbWV3b3Jr
IyNMaWJyYXJ5KGJvb2wgaXNPcHRpb25hbCkgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgdm9p
ZCogZnJhbWV3b3JrTGlicmFyeTsgXApAQCAtMzcyLDYgKzM3NSw5IEBACiAgICAgfSBcCiAgICAg
fQogCisjZGVmaW5lIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19GT1JfU09VUkNFKGZ1bmN0
aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmspIFwKKyAgICBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdP
UktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCAp
CisKICNkZWZpbmUgU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoZnVuY3Rpb25OYW1lc3BhY2Us
IGZyYW1ld29yaywgY2xhc3NOYW1lKSBcCiAgICAgQGNsYXNzIGNsYXNzTmFtZTsgXAogICAgIG5h
bWVzcGFjZSBmdW5jdGlvbk5hbWVzcGFjZSB7IFwKQEAgLTM4MywxMSArMzg5LDExIEBACiAgICAg
fSBcCiAgICAgfQogCi0jZGVmaW5lIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKGZ1bmN0aW9u
TmFtZXNwYWNlLCBmcmFtZXdvcmssIGNsYXNzTmFtZSkgXAorI2RlZmluZSBTT0ZUX0xJTktfQ0xB
U1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBj
bGFzc05hbWUsIGV4cG9ydCkgXAogICAgIEBjbGFzcyBjbGFzc05hbWU7IFwKICAgICBuYW1lc3Bh
Y2UgZnVuY3Rpb25OYW1lc3BhY2UgeyBcCiAgICAgc3RhdGljIENsYXNzIGluaXQjI2NsYXNzTmFt
ZSgpOyBcCi0gICAgQ2xhc3MgKCpnZXRfIyNmcmFtZXdvcmsjI18jI2NsYXNzTmFtZSMjQ2xhc3Mp
KCkgPSBpbml0IyNjbGFzc05hbWU7IFwKKyAgICBleHBvcnQgQ2xhc3MgKCpnZXRfIyNmcmFtZXdv
cmsjI18jI2NsYXNzTmFtZSMjQ2xhc3MpKCkgPSBpbml0IyNjbGFzc05hbWU7IFwKICAgICBzdGF0
aWMgQ2xhc3MgY2xhc3MjI2NsYXNzTmFtZTsgXAogICAgIFwKICAgICBzdGF0aWMgQ2xhc3MgY2xh
c3NOYW1lIyNGdW5jdGlvbigpIFwKQEAgLTQwOCw2ICs0MTQsOSBAQAogICAgIH0gXAogICAgIH0K
IAorI2RlZmluZSBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwg
ZnJhbWV3b3JrLCBjbGFzc05hbWUpIFwKKyAgICBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBjbGFzc05hbWUsICkKKwog
I2RlZmluZSBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwg
ZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSkgXAogICAgIFdURl9FWFRFUk5f
Q19CRUdJTiBcCiAgICAgZXh0ZXJuIGNvbnN0IHZhcmlhYmxlVHlwZSB2YXJpYWJsZU5hbWU7IFwK
QEAgLTQ4OSwxMyArNDk4LDEzIEBACiAgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWVzcGFjZTo6
c29mdExpbmsjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlck5hbWVzOyBcCiAgICAg
fQogCi0jZGVmaW5lIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNw
YWNlLCBmcmFtZXdvcmssIGZ1bmN0aW9uTmFtZSwgcmVzdWx0VHlwZSwgcGFyYW1ldGVyRGVjbGFy
YXRpb25zLCBwYXJhbWV0ZXJOYW1lcykgXAorI2RlZmluZSBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlv
bk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMs
IGV4cG9ydCkgXAogICAgIFdURl9FWFRFUk5fQ19CRUdJTiBcCiAgICAgcmVzdWx0VHlwZSBmdW5j
dGlvbk5hbWUgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCiAgICAgV1RGX0VYVEVSTl9DX0VORCBc
CiAgICAgbmFtZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAogICAgIHN0YXRpYyByZXN1bHRU
eXBlIGluaXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9uczsg
XAotICAgIHJlc3VsdFR5cGUgKCpzb2Z0TGluayMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUpIHBh
cmFtZXRlckRlY2xhcmF0aW9ucyA9IGluaXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lOyBcCisg
ICAgZXhwb3J0IHJlc3VsdFR5cGUoKnNvZnRMaW5rIyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSkg
cGFyYW1ldGVyRGVjbGFyYXRpb25zID0gaW5pdCMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWU7IFwK
ICAgICBzdGF0aWMgcmVzdWx0VHlwZSBpbml0IyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSBwYXJh
bWV0ZXJEZWNsYXJhdGlvbnMgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgZGlzcGF0Y2hfb25j
ZV90IG9uY2U7IFwKQEAgLTUwNyw2ICs1MTYsOSBAQAogICAgIH0gXAogICAgIH0KIAorI2RlZmlu
ZSBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFy
YW1ldGVyTmFtZXMpIFwKKyAgICBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VY
UE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5
cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMsICkKKwogI2RlZmluZSBT
T0ZUX0xJTktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwg
ZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9u
cywgcGFyYW1ldGVyTmFtZXMpIFwKICAgICBXVEZfRVhURVJOX0NfQkVHSU4gXAogICAgIHJlc3Vs
dFR5cGUgZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9uczsgXApAQCAtNTUyLDEwICs1
NjQsMTAgQEAKICAgICBleHRlcm4gdmFyaWFibGVUeXBlICgqZ2V0XyMjZnJhbWV3b3JrIyNfIyN2
YXJpYWJsZU5hbWUpKCk7IFwKICAgICB9CiAKLSNkZWZpbmUgU09GVF9MSU5LX1BPSU5URVJfRk9S
X1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlh
YmxlVHlwZSkgXAorI2RlZmluZSBTT0ZUX0xJTktfUE9JTlRFUl9GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVU
eXBlLCBleHBvcnQpIFwKICAgICBuYW1lc3BhY2UgZnVuY3Rpb25OYW1lc3BhY2UgeyBcCiAgICAg
c3RhdGljIHZhcmlhYmxlVHlwZSBpbml0IyNmcmFtZXdvcmsjI3ZhcmlhYmxlTmFtZSgpOyBcCi0g
ICAgdmFyaWFibGVUeXBlICgqZ2V0XyMjZnJhbWV3b3JrIyNfIyN2YXJpYWJsZU5hbWUpKCkgPSBp
bml0IyNmcmFtZXdvcmsjI3ZhcmlhYmxlTmFtZTsgXAorICAgIGV4cG9ydCB2YXJpYWJsZVR5cGUg
KCpnZXRfIyNmcmFtZXdvcmsjI18jI3ZhcmlhYmxlTmFtZSkoKSA9IGluaXQjI2ZyYW1ld29yayMj
dmFyaWFibGVOYW1lOyBcCiAgICAgc3RhdGljIHZhcmlhYmxlVHlwZSBwb2ludGVyIyNmcmFtZXdv
cmsjI3ZhcmlhYmxlTmFtZTsgXAogICAgIFwKICAgICBzdGF0aWMgdmFyaWFibGVUeXBlIHBvaW50
ZXIjI2ZyYW1ld29yayMjdmFyaWFibGVOYW1lIyNGdW5jdGlvbigpIFwKQEAgLTU3Niw2ICs1ODgs
OSBAQAogICAgIH0gXAogICAgIH0KIAorI2RlZmluZSBTT0ZUX0xJTktfUE9JTlRFUl9GT1JfU09V
UkNFKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVU
eXBlKSBcCisgICAgU09GVF9MSU5LX1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChmdW5j
dGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSwgKQor
CiAjZGVmaW5lIFNPRlRfTElOS19WQVJJQUJMRV9GT1JfSEVBREVSKGZ1bmN0aW9uTmFtZXNwYWNl
LCBmcmFtZXdvcmssIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVUeXBlKSBcCiAgICAgV1RGX0VYVEVS
Tl9DX0JFR0lOIFwKICAgICBleHRlcm4gdmFyaWFibGVUeXBlIHZhcmlhYmxlTmFtZTsgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29u
dGFjdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXlt
ZW50Q29udGFjdENvY29hLm1tCmluZGV4IDBiMDIwNGM4NmQ4YTM2YTVkNGE3NTI5OGQwZjQxYTM0
NDYxNTAzZWUuLmNjOTdmZDVlMWY2MjM0NTk5ZWI4ODRjYTgxODdmYjJjZDA4NTdjNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRh
Y3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1Bh
eW1lbnRDb250YWN0Q29jb2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbXBvcnQgIkFwcGxl
UGF5UGF5bWVudENvbnRhY3QuaCIKICNpbXBvcnQgPENvbnRhY3RzL0NvbnRhY3RzLmg+Ci0jaW1w
b3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNz
S2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0zOCwxNCArMzgsNiBAQCBTT0ZUX0xJTktfRlJB
TUVXT1JLKENvbnRhY3RzKQogU09GVF9MSU5LX0NMQVNTKENvbnRhY3RzLCBDTk11dGFibGVQb3N0
YWxBZGRyZXNzKQogU09GVF9MSU5LX0NMQVNTKENvbnRhY3RzLCBDTlBob25lTnVtYmVyKQogCi0j
aWYgUExBVEZPUk0oTUFDKQotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFBhc3NLaXQpCi0j
ZWxzZQotU09GVF9MSU5LX0ZSQU1FV09SSyhQYXNzS2l0KQotI2VuZGlmCi0KLVNPRlRfTElOS19D
TEFTUyhQYXNzS2l0LCBQS0NvbnRhY3QpCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IE5TU3RyaW5nICpzdWJMb2NhbGl0eShDTlBvc3RhbEFkZHJlc3MgKmFkZHJlc3MpCkBAIC0xMDYs
NyArOTgsNyBAQCBzdGF0aWMgdm9pZCBzZXRTdWJBZG1pbmlzdHJhdGl2ZUFyZWEoQ05NdXRhYmxl
UG9zdGFsQWRkcmVzcyAqYWRkcmVzcywgTlNTdHJpbmcgKgogCiBzdGF0aWMgUmV0YWluUHRyPFBL
Q29udGFjdD4gY29udmVydCh1bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBBcHBsZVBheVBheW1lbnRD
b250YWN0JiBjb250YWN0KQogewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS0Nv
bnRhY3RJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1BBTDo6
YWxsb2NQS0NvbnRhY3RJbnN0YW5jZSgpIGluaXRdKTsKIAogICAgIE5TU3RyaW5nICpmYW1pbHlO
YW1lID0gbmlsOwogICAgIE5TU3RyaW5nICpwaG9uZXRpY0ZhbWlseU5hbWUgPSBuaWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJj
aGFudFNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCmluZGV4IDgxYzhjY2I3MzhhN2Y5MzU0
MTIxYzhhMjhkNjc5MzVjMzEyNzZjYWIuLmZjMzZjODk1MzE0OWY0MzMwYmQ5NTFhNmFlYzIyYjhl
ZmIyZTBkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDE2
ICsyOSw3IEBACiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAogI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSlNPTk9iamVjdC5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+Ci0j
aW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElO
S19QUklWQVRFX0ZSQU1FV09SSyhQYXNzS2l0KQotI2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUkso
UGFzc0tpdCkKLSNlbmRpZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50TWVy
Y2hhbnRTZXNzaW9uKQorI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUzLDcgKzQ0LDcgQEAgc3RkOjpvcHRpb25hbDxQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uPiBQYXltZW50TWVyY2hhbnRTZXNzaW9uOjpmcm9tSlMoSlNDOjpF
eGVjU3QKICAgICBpZiAoIWRpY3Rpb25hcnkgfHwgIVtkaWN0aW9uYXJ5IGlzS2luZE9mQ2xhc3M6
W05TRGljdGlvbmFyeSBjbGFzc11dKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgYXV0byBwa1BheW1lbnRNZXJjaGFudFNlc3Npb24gPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVu
dE1lcmNoYW50U2Vzc2lvbkluc3RhbmNlKCkgaW5pdFdpdGhEaWN0aW9uYXJ5OmRpY3Rpb25hcnld
KTsKKyAgICBhdXRvIHBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NQS1BheW1lbnRNZXJjaGFudFNlc3Npb25JbnN0YW5jZSgpIGluaXRXaXRoRGljdGlvbmFyeTpk
aWN0aW9uYXJ5XSk7CiAKICAgICByZXR1cm4gUGF5bWVudE1lcmNoYW50U2Vzc2lvbihwa1BheW1l
bnRNZXJjaGFudFNlc3Npb24uZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BB
TC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIxNTUyZGY3Zjc1ZmM1MzliYjg3NTZk
MDg0OWI1NGQ2ODY5NTU0MDkuLjc3ZjI0NjczZTUxNzM2OTdmNWNiY2U3ZWMzYTQ1MjE2Y2Y0ODMx
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEzMSw2ICsxMzEsOCBAQAogCQlBMTE3NUI1ODFGNkI0NzA1MDBDNEI5RjAgLyog
RGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMTc1QjU2MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNo
UHJvdmlkZXIuY3BwICovOyB9OwogCQlBMTE3NUI1QTFGNkI0QTg0MDBDNEI5RjAgLyogTlNTY3Jv
bGxWaWV3U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMTE3NUI1OTFGNkI0QTg0MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggKi87IH07CiAJ
CUExRjU1RENGMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVG
IC8qIE1ldGFkYXRhU1BJLmggKi87IH07CisJCUExRjYzQzlGMjFBNERCRjcwMDZGQjQzQiAvKiBQ
YXNzS2l0U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExRjYzQzlEMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLzsg
fTsKKwkJQTFGNjNDQTAyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjYzQzlFMjFBNERC
RjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsubW0gKi87IH07CiAJCUEzMEQ0MTIxMUYwREQw
RUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggKi87
IH07CiAJCUEzMEQ0MTIyMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzBENDExRjFGMEREMEVBMDBC
NzE5NTQgLyogS2lsbFJpbmcuY3BwICovOyB9OwogCQlBMzBENDEyNTFGMEREMTJEMDBCNzE5NTQg
LyogS2lsbFJpbmdNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMzBENDEyNDFGMEREMTJEMDBCNzE5NTQgLyogS2lsbFJpbmdNYWMubW0gKi87IH07
CkBAIC0yODcsNiArMjg5LDggQEAKIAkJQTExNzVCNTYxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1
bHRTZWFyY2hQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZhdWx0U2VhcmNoUHJv
dmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE3NUI1OTFGNkI0QTg0
MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TU2Nyb2xsVmll
d1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUY1NURDRTFGNTUyOEVDMDBF
REI3NUYgLyogTWV0YWRhdGFTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0YWRhdGFTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFGNjNDOUQyMUE0REJGNzAwNkZCNDNCIC8qIFBh
c3NLaXRTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXNzS2l0U29mdExpbmsuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFGNjNDOUUyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NL
aXRTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3NLaXRTb2Z0TGluay5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8q
IEtpbGxSaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtpbGxSaW5nLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTFGMUYwREQwRUEwMEI3MTk1NCAv
KiBLaWxsUmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLaWxs
UmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTI0MUYwREQxMkQw
MEI3MTk1NCAvKiBLaWxsUmluZ01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEtpbGxSaW5nTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTYwLDYgKzU2NCw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJ
CUY0NDI5MTY2MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1tICov
LAorCQkJCUExRjYzQzlEMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLywK
KwkJCQlBMUY2M0M5RTIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tICovLAog
CQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03
MjksNiArNzM1LDcgQEAKIAkJCQkwQzc3ODU5RDFGNDUxMzBGMDBGNEVCQjYgLyogTlNXaW5kb3dT
UEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MEFCOEY5MjBBRjZFM0QwMEI4QkU4NyAvKiBOU1hQ
Q0Nvbm5lY3Rpb25TUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNUFGOTFGMUY0M0E0QzcwMDJF
QUMwMiAvKiBPcGVuR0xFU1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFGNjNDOUYyMUE0REJG
NzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREEx
NTUxRjNCRUI0OTAwREJDMzE3IC8qIFBhc3NLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBD
Nzc4NTlFMUY0NTEzMEYwMEY0RUJCNiAvKiBQSVBTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
MTc1QjRFMUY2QjMzNzMwMEM0QjlGMCAvKiBQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovLApAQCAt
ODU0LDYgKzg2MSw3IEBACiAJCQkJQTMwRDQxMjUxRjBERDEyRDAwQjcxOTU0IC8qIEtpbGxSaW5n
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM0ODc2RDgxRjhEN0Y0RTAwQ0NFRUJEIC8qIExv
Z2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMENGOTlDQTQxRjczNjM3NTAwN0VFNzkzIC8q
IE1lZGlhVGltZUFWRm91bmRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUY2M0NBMDIx
QTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTExNzVCNEYxRjZCMzM3MzAwQzRCOUYwIC8qIFBvcHVwTWVudS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUEzQzY2Q0RDMUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTNBQjZFNTIxRjNEMURDNTAwOUMxNEIxIC8qIFNsZWVwRGlzYWJsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hZWI0MTNhY2FjMWViOGFlN2NhOTMyY2YzODdhZTJmMTU2OGFh
YTg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNz
S2l0U29mdExpbmsuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBVU0UoUEFTU0tJVCkKKworI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
Lmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19G
T1JfSEVBREVSKFBBTCwgUGFzc0tpdCkKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQYXNzS2l0LCBQS0NvbnRhY3QpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBh
c3NLaXQsIFBLUGFzc0xpYnJhcnkpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBh
c3NLaXQsIFBLUGF5bWVudCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tp
dCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKQorU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRNZXRob2QpCitTT0ZUX0xJTktfQ0xB
U1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbikKK1NP
RlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdCkK
K1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U3VtbWFy
eUl0ZW0pCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLU2hpcHBp
bmdNZXRob2QpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwg
UEtEcmF3QXBwbGVQYXlCdXR0b24sIHZvaWQsIChDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0
IGRyYXdSZWN0LCBDR0Zsb2F0IHNjYWxlLCBQS1BheW1lbnRCdXR0b25UeXBlIHR5cGUsIFBLUGF5
bWVudEJ1dHRvblN0eWxlIHN0eWxlLCBOU1N0cmluZyAqbGFuZ3VhZ2VDb2RlKSwgKGNvbnRleHQs
IGRyYXdSZWN0LCBzY2FsZSwgdHlwZSwgc3R5bGUsIGxhbmd1YWdlQ29kZSkpCisKKyNpZiBQTEFU
Rk9STShNQUMpCitTT0ZUX0xJTktfUE9JTlRFUl9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtF
eHRlbnNpb25QYXltZW50QXV0aG9yaXphdGlvblVJRXh0ZW5zaW9uUG9pbnROYW1lLCBOU1N0cmlu
ZyAqKQorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKQorU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0KQor
U09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0
UGF5bWVudE1ldGhvZFVwZGF0ZSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSkKK1NPRlRfTElOS19D
TEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0
aG9kVXBkYXRlKQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFBhc3NLaXQs
IFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiwgdm9pZCwg
KE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBQS0Nhbk1ha2VQYXltZW50
c0NvbXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBkb21haW4sIGNvbXBsZXRpb24p
KQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQ
YXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlvbiwg
dm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBOU1N0cmluZyAq
c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBQS0Nhbk1ha2VQYXltZW50c0Nv
bXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBkb21haW4sIHNvdXJjZUFwcGxpY2F0
aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgY29tcGxldGlvbikpCisKK1NPRlRfTElOS19QT0lOVEVS
X0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZEVtYWlsQWRkcmVzcywgTlNT
dHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0Nv
bnRhY3RGaWVsZE5hbWUsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUl9GT1JfSEVBREVS
KFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQaG9uZU51bWJlciwgTlNTdHJpbmcgKikKK1NP
RlRfTElOS19QT0lOVEVSX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBo
b25ldGljTmFtZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9IRUFERVIoUEFM
LCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MsIE5TU3RyaW5nICopCitTT0ZU
X0xJTktfUE9JTlRFUl9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JDb250
YWN0RmllbGRVc2VySW5mb0tleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9I
RUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvckRvbWFpbiwgTlNTdHJpbmcgKikKK1NP
RlRfTElOS19QT0lOVEVSX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvclBv
c3RhbEFkZHJlc3NVc2VySW5mb0tleSwgTlNTdHJpbmcgKikKKyNlbmRpZgorCisjZW5kaWYgLy8g
VVNFKFBBU1NLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNv
ZnRMaW5rLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNjY3YTFiOGFiOGE5NDNmZWYyNGE3MDgyMWNmZTRiMmYx
MTM3Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5tbQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisKKyNpZiBVU0UoUEFTU0tJVCkKKworI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9Q
YXNzS2l0U1BJLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworI2lmIFBMQVRGT1JN
KE1BQykKK1NPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgUGFzc0tpdCwgUEFMX0VYUE9SVCkKKyNlbHNlCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQQUxfRVhQT1JUKQorI2VuZGlmCisK
K1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtD
b250YWN0LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBP
UlQoUEFMLCBQYXNzS2l0LCBQS1Bhc3NMaWJyYXJ5LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnQsIFBBTF9F
WFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NL
aXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciwgUEFMX0VYUE9SVCkKK1NP
RlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRNZXRob2QsIFBBTF9FWFBPUlQp
CitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
UGF5bWVudFJlcXVlc3QsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFN1bW1hcnlJdGVtLCBQQUxfRVhQT1JU
KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQ
S1NoaXBwaW5nTWV0aG9kLCBQQUxfRVhQT1JUKQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRShQQUwsIFBhc3NLaXQsIFBLRHJhd0FwcGxlUGF5QnV0dG9uLCB2b2lkLCAoQ0dDb250ZXh0
UmVmIGNvbnRleHQsIENHUmVjdCBkcmF3UmVjdCwgQ0dGbG9hdCBzY2FsZSwgUEtQYXltZW50QnV0
dG9uVHlwZSB0eXBlLCBQS1BheW1lbnRCdXR0b25TdHlsZSBzdHlsZSwgTlNTdHJpbmcgKmxhbmd1
YWdlQ29kZSksIChjb250ZXh0LCBkcmF3UmVjdCwgc2NhbGUsIHR5cGUsIHN0eWxlLCBsYW5ndWFn
ZUNvZGUpKQorCisjaWYgUExBVEZPUk0oTUFDKQorU09GVF9MSU5LX1BPSU5URVJfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLRXh0ZW5zaW9uUGF5bWVudEF1dGhvcml6YXRp
b25VSUV4dGVuc2lvblBvaW50TmFtZSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKKyNlbmRpZgor
CisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCwgUEFM
X0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUsIFBBTF9FWFBPUlQpCitT
T0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5
bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktf
Q0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFJlcXVl
c3RTaGlwcGluZ01ldGhvZFVwZGF0ZSwgUEFMX0VYUE9SVCkKKworU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dp
dGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmll
ciwgTlNTdHJpbmcgKmRvbWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRp
b24pLCAoaWRlbnRpZmllciwgZG9tYWluLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKK1NPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDYW5N
YWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9tYWluQW5kU291cmNlQXBwbGljYXRp
b24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwgTlNTdHJp
bmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgUEtDYW5NYWtlUGF5bWVu
dHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmllciwgZG9tYWluLCBzb3VyY2VBcHBs
aWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNvbXBsZXRpb24pLCBQQUxfRVhQT1JUKQorCitT
T0ZUX0xJTktfUE9JTlRFUl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtD
b250YWN0RmllbGRFbWFpbEFkZHJlc3MsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCitTT0ZUX0xJ
TktfUE9JTlRFUl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0
RmllbGROYW1lLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX1BPSU5URVJfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmVOdW1i
ZXIsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfUE9JTlRFUl9GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQaG9uZXRpY05hbWUsIE5T
U3RyaW5nICosIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfUE9JTlRFUl9GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzLCBOU1N0cmlu
ZyAqLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNlckluZm9LZXksIE5T
U3RyaW5nICosIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfUE9JTlRFUl9GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JEb21haW4sIE5TU3RyaW5nICosIFBB
TF9FWFBPUlQpCitTT0ZUX0xJTktfUE9JTlRFUl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwg
UGFzc0tpdCwgUEtQYXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNlckluZm9LZXksIE5TU3RyaW5n
ICosIFBBTF9FWFBPUlQpCisjZW5kaWYKKworI2VuZGlmIC8vIFVTRShQQVNTS0lUKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCmluZGV4IGI1ZTU5MzAz
MjcxZmI1ODFhYjM0OWFiOTVmNzQzMjA5MTQ4YWEyNTguLjc3Y2I2ZTFkNzAzZTdiYzk1YjMzMzJk
MDdlNTVlNzE0ODMzZjFlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NvY29hL1Bhc3NLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2Nv
YS9QYXNzS2l0U1BJLmgKQEAgLTM5LDggKzM5LDggQEAKIAogI2VsaWYgUExBVEZPUk0oTUFDKQog
CisjaW1wb3J0IDxBcHBLaXQvQXBwS2l0Lmg+CiAjaW1wb3J0IDxDb250YWN0cy9Db250YWN0cy5o
PgotI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKIE5TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCiAKQEAgLTIyNSw3ICsyMjUsNyBAQCB0eXBlZGVmIE5TU3RyaW5nICogUEtQYXltZW50
TmV0d29yayBOU19FWFRFTlNJQkxFX1NUUklOR19FTlVNOwogCiBOU19BU1NVTUVfTk9OTlVMTF9F
TkQKIAotI2VuZGlmCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiBOU19BU1NVTUVfTk9OTlVM
TF9CRUdJTgogCkBAIC0yNjEsNyArMjYxLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIs
IFBLUGF5bWVudFJlcXVlc3RBUElUeXBlKSB7CiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORAogCi0j
ZW5kaWYKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiAjaWYgUExBVEZPUk0o
TUFDKSAmJiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVn
ZXIsIFBLUGF5bWVudEJ1dHRvblN0eWxlKSB7CkBAIC0zMjQsNCArMzI0LDYgQEAgTlNfQVNTVU1F
X05PTk5VTExfQkVHSU4KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIE5TU3RyaW5nICpD
VERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU7CiBAZW5kCiAKK3R5cGVkZWYgdm9pZCAoXlBLQ2Fu
TWFrZVBheW1lbnRzQ29tcGxldGlvbikoQk9PTCBpc1ZhbGlkLCBOU0Vycm9yICopOworCiBOU19B
U1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGExNDgwZmJhNmY5
NDBhNmI2ODdkM2MzZTkwZjBhNTFmMTMxZjc3MWIuLjY1ZWJjODQzNjYyMDFkNTg5Zjc0YTVhNWZm
NTQ5ODEzYmVmYmE3MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNTg4LDcgKzU4OCw3
IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29h
LmNwcAogCiAgICAgTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29jb2EubW0KICAgICBN
b2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29jb2EubW0KLSAgICBNb2R1bGVz
L2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbSBAbm8tdW5pZnkK
KyAgICBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5t
bQogICAgIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENvY29hLm1tCiAKICAg
ICBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYzIzMzRjNjA0ZTczYjg2MDgyNWI4OTA1N2JjOWE4OTQxOTllYjEzNS4uYTc1M2Fh
MDYzMzA1Y2UxODFkOTI5YjAzNTA0NzY3ODk5YzMwZDMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQ3MSw3ICs0NDcxLDYg
QEAKIAkJREU1Rjg2MEQxRkEyMzg2QjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0NzguY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREU1Rjg1RDIxRkEy
Mzg1NjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0NzguY3BwICovOyB9OwogCQlERTVGODYwRTFG
QTIzODZCMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ3OS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTVGODVDRjFGQTIzODUwMDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTQ3OS5jcHAgKi87IH07CiAJCURFNUY4NjBGMUZBMjM4NkIwMDZEQjYzQSAv
KiBVbmlmaWVkU291cmNlNDgwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IERFNUY4NUQzMUZBMjM4NTkwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDgw
LmNwcCAqLzsgfTsKLQkJREU1Rjg2MTAxRkEyMzhEOTAwNkRCNjNBIC8qIFBheW1lbnRNZXJjaGFu
dFNlc3Npb25Db2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBREE0QTFCMUQyMkYyQzAwMDVBOUExNSAvKiBQYXltZW50TWVyY2hhbnRTZXNzaW9u
Q29jb2EubW0gKi87IH07CiAJCURFNUY4NjExMUZBMjM5REEwMDZEQjYzQSAvKiBJbnRlcm5hbFNl
dHRpbmdzR2VuZXJhdGVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzRTI5RTVDMTY3QThBMTkwMDU4NkQzRCAvKiBJbnRlcm5hbFNldHRpbmdzR2Vu
ZXJhdGVkLmNwcCAqLzsgfTsKIAkJREU1Rjg2MTIxRkEyMzlFNzAwNkRCNjNBIC8qIEpTR0NPYnNl
cnZhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTcxNEVBRTFDRjY2NTRBMDA0NzIzQzQgLyogSlNHQ09ic2VydmF0aW9uLmNwcCAqLzsgfTsK
IAkJREU1Rjg2MUQxRkEyODE1QjAwNkRCNjNBIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QUE0NzhBN0UxNkNENzBDMzAwN0QxQkI0IC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tICovOyB9OwpAQCAtMzIzNDUsNyArMzIzNDQsNiBAQAogCQkJCUEzMUM0RTREMTZFMDJB
QTYwMDJGNzk1NyAvKiBPRVNUZXh0dXJlSGFsZkZsb2F0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTMxMDc4Q0M3MTg4MEFBQjUwMDgwOTlEQyAvKiBPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTc3QTE3QTcxMTJGMjgxODIwMDRFMDJGNiAvKiBPRVNWZXJ0
ZXhBcnJheU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlERTVGODYxMDFGQTIzOEQ5MDA2
REI2M0EgLyogUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0VBMjg0NjYyMTQxRTg0OTAwRTQwN0U4IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQUExMkRGNDkxNzQzREY4MzAwNERBRkRGIC8qIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREEyOUEzMDFDQkY3
NEQ0MDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0gaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KaW5k
ZXggYjRhYWY2NDIxZDJiNmQzYzViMzBkZWFhNzRlM2U3MjYzMjlkMmFjZC4uY2I2MTA4MjkyYTQ4
OTg2YzE5Yzc4YjExNDQwYTE1NzcyYTBlYTk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lQ29jb2EubW0KQEAgLTMyLDE2ICszMiw3IEBACiAKICNpZiBFTkFCTEUo
QVBQTEVfUEFZKQogCi0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KLSNpbXBv
cnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi0jaWYgUExBVEZPUk0oTUFDKQotU09GVF9MSU5LX1BS
SVZBVEVfRlJBTUVXT1JLKFBhc3NLaXQpOwotI2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUksoUGFz
c0tpdCk7Ci0jZW5kaWYKLQotU09GVF9MSU5LX01BWV9GQUlMKFBhc3NLaXQsIFBLRHJhd0FwcGxl
UGF5QnV0dG9uLCB2b2lkLCAoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCBkcmF3UmVjdCwg
Q0dGbG9hdCBzY2FsZSwgUEtQYXltZW50QnV0dG9uVHlwZSB0eXBlLCBQS1BheW1lbnRCdXR0b25T
dHlsZSBzdHlsZSwgTlNTdHJpbmcgKmxhbmd1YWdlQ29kZSksIChjb250ZXh0LCBkcmF3UmVjdCwg
c2NhbGUsIHR5cGUsIHN0eWxlLCBsYW5ndWFnZUNvZGUpKTsKKyNpbXBvcnQgPHBhbC9jb2NvYS9Q
YXNzS2l0U29mdExpbmsuaD4KIAogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCiAKQEAgLTEw
OCw5ICs5OSw2IEBAIHN0YXRpYyBQS1BheW1lbnRCdXR0b25UeXBlIHRvUEtQYXltZW50QnV0dG9u
VHlwZShBcHBsZVBheUJ1dHRvblR5cGUgdHlwZSkKIAogYm9vbCBSZW5kZXJUaGVtZUNvY29hOjpw
YWludEFwcGxlUGF5QnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBwYWludFJlY3QpCiB7Ci0gICAgaWYg
KCFjYW5Mb2FkUEtEcmF3QXBwbGVQYXlCdXR0b24oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250
ZXh0KCkpOwogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTaG91bGRTbW9vdGhGb250cyh0
cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggMzVmOThiMTFiN2YxYTkyMTI5YWVkYjQyMTIyYWIw
Yjg1OTA3OTIyNS4uZDBlMzc0NTIwNmRkOThhYjc0YjZmNGQxNTViODgyNzZkYTU4NmUyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzQ29jb2EubW0KQEAgLTMwLDIwICszMCw4IEBACiAKICNpbXBvcnQgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4KKyNp
bXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRT
UEkuaD4KLSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi0jaWYgUExBVEZPUk0oTUFDKQot
U09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFBhc3NLaXQpCi0jZWxzZQotU09GVF9MSU5LX0ZS
QU1FV09SSyhQYXNzS2l0KQotI2VuZGlmCi0KLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS0Nv
bnRhY3QpOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudCk7Ci1TT0ZUX0xJTktf
Q0xBU1MoUGFzc0tpdCwgUEtQYXltZW50TWV0aG9kKTsKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0
LCBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24pOwogCiBuYW1lc3BhY2UgSVBDIHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpAQCAtNjcsNyArNTUsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6UGF5bWVudD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQYXltZW50
JgogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNO
b0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZl
cmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpO
T10pOwogICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRh
LmdldCgpKTsKICAgICBAdHJ5IHsKLSAgICAgICAgUEtQYXltZW50ICpwa1BheW1lbnQgPSBbdW5h
cmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldFBLUGF5bWVudENsYXNzKCkgZm9yS2V5Ok5T
S2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgICAgIFBLUGF5bWVudCAqcGtQYXltZW50
ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6OmdldF9QYXNzS2l0X1BLUGF5
bWVudENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgICAg
IHBheW1lbnQgPSBQYXltZW50KHBrUGF5bWVudCk7CiAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9u
ICpleGNlcHRpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIFBLUGF5
bWVudDogJUAiLCBleGNlcHRpb24pOwpAQCAtMTE4LDcgKzEwNiw3IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFjdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBX
ZWJDb3JlOjpQCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdp
dGhCeXRlc05vQ29weTpjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4o
ZGF0YVJlZmVyZW5jZS5kYXRhKCkpKSBsZW5ndGg6ZGF0YVJlZmVyZW5jZS5zaXplKCkgZnJlZVdo
ZW5Eb25lOk5PXSk7CiAgICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21E
YXRhKGRhdGEuZ2V0KCkpOwogICAgIEB0cnkgewotICAgICAgICBQS0NvbnRhY3QgKnBrQ29udGFj
dCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6Z2V0UEtDb250YWN0Q2xhc3MoKSBm
b3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKKyAgICAgICAgUEtDb250YWN0ICpw
a0NvbnRhY3QgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOlBBTDo6Z2V0X1Bhc3NL
aXRfUEtDb250YWN0Q2xhc3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsK
ICAgICAgICAgcGF5bWVudENvbnRhY3QgPSBQYXltZW50Q29udGFjdChwa0NvbnRhY3QpOwogICAg
IH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIGRlY29kZSBQS0NvbnRhY3Q6ICVAIiwgZXhjZXB0aW9uKTsKQEAgLTE3NSw3ICsx
NjMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lv
bj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZQogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMo
W1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3Rh
dGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFS
ZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwogICAgIGF1dG8gdW5hcmNoaXZlciA9
IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRhLmdldCgpKTsKICAgICBAdHJ5IHsKLSAgICAg
ICAgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICpwa1BheW1lbnRNZXJjaGFudFNlc3Npb24gPSBb
dW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldFBLUGF5bWVudE1lcmNoYW50U2Vzc2lv
bkNsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgICAgIFBL
UGF5bWVudE1lcmNoYW50U2Vzc2lvbiAqcGtQYXltZW50TWVyY2hhbnRTZXNzaW9uID0gW3VuYXJj
aGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudE1lcmNo
YW50U2Vzc2lvbkNsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAg
ICAgICAgIHBheW1lbnRNZXJjaGFudFNlc3Npb24gPSBQYXltZW50TWVyY2hhbnRTZXNzaW9uKHBr
UGF5bWVudE1lcmNoYW50U2Vzc2lvbik7CiAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNl
cHRpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIFBLUGF5bWVudE1l
cmNoYW50U2Vzc2lvbjogJUAiLCBleGNlcHRpb24pOwpAQCAtMjA1LDcgKzE5Myw3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFdlYkNvcmU6OlBhCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxv
Y10gaW5pdFdpdGhCeXRlc05vQ29weTpjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25z
dCB2b2lkKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpKSBsZW5ndGg6ZGF0YVJlZmVyZW5jZS5zaXpl
KCkgZnJlZVdoZW5Eb25lOk5PXSk7CiAgICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNo
aXZlckZyb21EYXRhKGRhdGEuZ2V0KCkpOwogICAgIEB0cnkgewotICAgICAgICBQS1BheW1lbnRN
ZXRob2QgKnBrUGF5bWVudE1ldGhvZCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6
Z2V0UEtQYXltZW50TWV0aG9kQ2xhc3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0
S2V5XTsKKyAgICAgICAgUEtQYXltZW50TWV0aG9kICpwa1BheW1lbnRNZXRob2QgPSBbdW5hcmNo
aXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50TWV0aG9k
Q2xhc3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKICAgICAgICAgcGF5
bWVudE1ldGhvZCA9IFBheW1lbnRNZXRob2QocGtQYXltZW50TWV0aG9kKTsKICAgICB9IEBjYXRj
aCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBkZWNvZGUgUEtQYXltZW50OiAlQCIsIGV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggMDhkYmQ3YjY1NmQ0NTA0YmZlNzBhY2U5YTRmOWUxMGZjMjkwODQ2Yi4uZTg4YzVmZTZh
Y2ExYjk0MWZjMDkwYWFhNDZlMTljOGI4OTg0Y2I4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApA
QCAtMjk0LDkgKzI5NCw5IEBAIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQogCiBVSVByb2Nl
c3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQogCi1V
SVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tIEBu
by11bmlmeQorVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eUlPUy5tbQogCi1VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5TWFjLm1tIEBuby11bmlmeQorVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eU1hYy5tbQogCiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vY29jb2EvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eUNvY29hLm1tCiBVSVByb2Nlc3MvQXV0aGVudGljYXRp
b24vY29jb2EvU2VjS2V5UHJveHlTdG9yZS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Q29jb2EubW0KaW5kZXggZGIyYjZjOGJkMjBmY2NmMDA5NDk0MjA1ZDIxMWRj
YzQxOTIzODE3OC4uYTY1NTQzZWQ0Yzc5ZGY2YjNmYTE5Y2JiNzQxMWFiMzY1MDE1NWZhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
cHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCkBAIC0zMywy
NiArMzMsMTIgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQgPHBh
bC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2lt
cG9ydCA8d3RmL1J1bkxvb3AuaD4KLSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi0jaWYg
UExBVEZPUk0oTUFDKQotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX09QVElPTkFMKFBhc3NL
aXQpCi0jZWxzZQotU09GVF9MSU5LX0ZSQU1FV09SSyhQYXNzS2l0KQotI2VuZGlmCi0KLVNPRlRf
TElOS19DTEFTUyhQYXNzS2l0LCBQS1Bhc3NMaWJyYXJ5KTsKLVNPRlRfTElOS19DTEFTUyhQYXNz
S2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwotU09GVF9MSU5LX0NM
QVNTKFBhc3NLaXQsIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbik7Ci1TT0ZUX0xJTktfQ0xBU1Mo
UGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdCk7Ci1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQ
YXltZW50U3VtbWFyeUl0ZW0pOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLU2hpcHBpbmdN
ZXRob2QpOwotCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCi1TT0ZUX0xJTktfRlJBTUVXT1JLKENv
bnRhY3RzKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEzMDApCitTT0ZUX0xJTktfRlJBTUVX
T1JLKENvbnRhY3RzKTsKIFNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRy
ZXNzU3RyZWV0S2V5LCBOU1N0cmluZyAqKTsKIFNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywg
Q05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXksIE5TU3RyaW5nICopOwogU09GVF9MSU5LX0NP
TlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NDaXR5S2V5LCBOU1N0cmluZyAqKTsKQEAg
LTYxLDMwICs0Nyw4IEBAIFNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRy
ZXNzU3RhdGVLZXksIE5TU3RyaW5nICopOwogU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBD
TlBvc3RhbEFkZHJlc3NQb3N0YWxDb2RlS2V5LCBOU1N0cmluZyAqKTsKIFNPRlRfTElOS19DT05T
VEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzQ291bnRyeUtleSwgTlNTdHJpbmcgKik7CiBT
T0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc0lTT0NvdW50cnlDb2Rl
S2V5LCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRBdXRo
b3JpemF0aW9uUmVzdWx0KQotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudFJlcXVl
c3RQYXltZW50TWV0aG9kVXBkYXRlKQotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVu
dFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUpCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwg
UEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlKQotU09GVF9MSU5LX0NPTlNUQU5U
KFBhc3NLaXQsIFBLUGF5bWVudEVycm9yRG9tYWluLCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19D
T05TVEFOVChQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MsIE5TU3RyaW5nICop
OwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkRW1haWxBZGRyZXNz
LCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChQYXNzS2l0LCBQS0NvbnRhY3RGaWVs
ZFBob25lTnVtYmVyLCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChQYXNzS2l0LCBQ
S0NvbnRhY3RGaWVsZE5hbWUsIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NL
aXQsIFBLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lLCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19D
T05TVEFOVChQYXNzS2l0LCBQS1BheW1lbnRFcnJvckNvbnRhY3RGaWVsZFVzZXJJbmZvS2V5LCBO
U1N0cmluZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChQYXNzS2l0LCBQS1BheW1lbnRFcnJvclBv
c3RhbEFkZHJlc3NVc2VySW5mb0tleSwgTlNTdHJpbmcgKik7Ci0jZW5kaWYKLQotdHlwZWRlZiB2
b2lkICheUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uKShCT09MIGlzVmFsaWQsIE5TRXJyb3Ig
KmVycm9yKTsKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKLWV4dGVybiAiQyIgdm9pZCBQS0Nhbk1h
a2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlv
bihOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJj
ZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0
aW9uIGNvbXBsZXRpb24pOwotU09GVF9MSU5LX0ZVTkNUSU9OX01BWV9GQUlMX0ZPUl9TT1VSQ0Uo
V2ViS2l0LCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJE
b21haW5BbmRTb3VyY2VBcHBsaWNhdGlvbiwgdm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBO
U1N0cmluZyAqZG9tYWluLCBOU1N0cmluZyAqc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyLCBQS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlm
aWVyLCBkb21haW4sIHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgY29tcGxl
dGlvbikpOwotI2Vsc2UKLWV4dGVybiAiQyIgdm9pZCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJj
aGFudElkZW50aWZpZXJBbmREb21haW4oTlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpk
b21haW4sIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbiBjb21wbGV0aW9uKTsKLVNPRlRfTElO
S19GVU5DVElPTl9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYktpdCwgUGFzc0tpdCwgUEtDYW5NYWtl
UGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWluLCB2b2lkLCAoTlNTdHJpbmcg
KmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlv
biBjb21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgY29tcGxldGlvbikpOwogI2VuZGlm
CiAKLQogQGltcGxlbWVudGF0aW9uIFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ckRlbGVnYXRlCiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheW1lbnRDb29yZGluYXRvclBy
b3h5OihXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Jil3ZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eQpAQCAtMTAyLDcgKzY2LDcgQEAgLSAodm9pZClpbnZhbGlkYXRlCiAgICAgX3dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5ID0gbnVsbHB0cjsKICAgICBpZiAoX3BheW1lbnRBdXRo
b3JpemVkQ29tcGxldGlvbikgewogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQotICAgICAgICBfcGF5
bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKGFkb3B0TlMoW2FsbG9jUEtQYXltZW50QXV0aG9yaXph
dGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6UEtQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF1dKS5nZXQoKSk7CisgICAgICAgIF9wYXltZW50QXV0
aG9yaXplZENvbXBsZXRpb24oYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEF1dGhvcml6YXRp
b25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOlBLUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXNGYWlsdXJlIGVycm9yczpAWyBdXSkuZ2V0KCkpOwogI2Vsc2UKICAgICAgICAgX3BheW1l
bnRBdXRob3JpemVkQ29tcGxldGlvbihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVy
ZSk7CiAjZW5kaWYKQEAgLTExOSw3ICs4Myw3IEBAIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyCiAg
ICAgQVNTRVJUKCFfc2Vzc2lvbkJsb2NrKTsKICAgICBfc2Vzc2lvbkJsb2NrID0gc2Vzc2lvbkJs
b2NrOwogCi0gICAgW2dldFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckNsYXNz
KCkgcGF5bWVudFNlcnZpY2VzTWVyY2hhbnRVUkw6XihOU1VSTCAqbWVyY2hhbnRVUkwsIE5TRXJy
b3IgKmVycm9yKSB7CisgICAgW1BBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyQ2xhc3MoKSBwYXltZW50U2VydmljZXNNZXJjaGFudFVSTDpeKE5TVVJM
ICptZXJjaGFudFVSTCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yKQogICAg
ICAgICAgICAgTE9HX0VSUk9SKCJQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZp
ZXJBbmREb21haW4gZXJyb3IgJUAiLCBlcnJvcik7CiAKQEAgLTE1NSw3ICsxMTksNyBAQCAtICh2
b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlcgogewogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIGlmICgh
X3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oYWRvcHRO
UyhbYWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0aFN0
YXR1czpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBlcnJvcnM6QFsgXV0pLmdl
dCgpKTsKKyAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0
aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6UEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF1dKS5nZXQoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTE3MCw3ICsxMzQsNyBAQCAtICh2b2lkKXBheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcgog
ewogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1
ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0
ZW1zOkBbIF1dKS5nZXQoKSk7CisgICAgICAgIGNvbXBsZXRpb24oYWRvcHROUyhbUEFMOjphbGxv
Y1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBh
eW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMTgzLDcgKzE0Nyw3IEBAIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyCiAtICh2b2lkKXBh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6KFBLU2hp
cHBpbmdNZXRob2QgKilzaGlwcGluZ01ldGhvZCBoYW5kbGVyOih2b2lkICheKShQS1BheW1lbnRS
ZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUgKnVwZGF0ZSkpY29tcGxldGlvbiB7CiAjaWYgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAp
IHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMTAwMDApCiAgICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsK
LSAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGlu
Z01ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOkBbIF1d
KS5nZXQoKSk7CisgICAgICAgIGNvbXBsZXRpb24oYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVu
dFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3Vt
bWFyeUl0ZW1zOkBbIF1dKS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE5
Nyw3ICsxNjEsNyBAQCAtICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6
KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcgogewogI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwKQogICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAg
IGNvbXBsZXRpb24oYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0
VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczpAWyBdIHBheW1lbnRTdW1tYXJ5SXRlbXM6
QFsgXSBzaGlwcGluZ01ldGhvZHM6QFsgXV0pLmdldCgpKTsKKyAgICAgICAgY29tcGxldGlvbihh
ZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZUlu
c3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6QFsgXSBwYXltZW50U3VtbWFyeUl0ZW1zOkBbIF0gc2hp
cHBpbmdNZXRob2RzOkBbIF1dKS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTI5MywzMiArMjU3LDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBib29sIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50cygpCiB7Ci0jaWYgUExBVEZP
Uk0oTUFDKQotICAgIGlmICghUGFzc0tpdExpYnJhcnkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotI2VuZGlmCi0KLSAgICByZXR1cm4gW2dldFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckNsYXNzKCkgY2FuTWFrZVBheW1lbnRzXTsKKyAgICByZXR1cm4gW1BBTDo6Z2V0X1Bh
c3NLaXRfUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSBjYW5NYWtl
UGF5bWVudHNdOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9y
bUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICgh
UGFzc0tpdExpYnJhcnkoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQogI2lmIChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQot
ICAgIGlmICghY2FuTG9hZF9QYXNzS2l0X1BLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRl
bnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAg
IH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc29mdExpbmtfUGFzc0tpdF9QS0Nh
bk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNh
dGlvbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1fd2ViUGFnZVByb3h5LnByb2Nl
c3MoKS5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5zb3VyY2VBcHBsaWNhdGlvblNlY29u
ZGFyeUlkZW50aWZpZXIoKSwgQmxvY2tQdHI8dm9pZCAoQk9PTCwgTlNFcnJvciAqKT46OmZyb21D
YWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
Qk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKKyAgICBQS0Nh
bk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNh
dGlvbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1fd2ViUGFnZVByb3h5LnByb2Nl
c3MoKS5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5zb3VyY2VBcHBsaWNhdGlvblNlY29u
ZGFyeUlkZW50aWZpZXIoKSwgQmxvY2tQdHI8dm9pZChCT09MLCBOU0Vycm9yICopPjo6ZnJvbUNh
bGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShC
T09MIGNhbk1ha2VQYXltZW50cywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICBp
ZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBLQ2FuTWFrZVBheW1lbnRzV2l0aE1l
cmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIsIGVycm9yKTsKIApAQCAtMzQ3LDE0
ICsyOTIsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNhbk1h
a2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cgogCiB2b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJj
aGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2
b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSNpZiBQTEFURk9STShNQUMpCi0g
ICAgaWYgKCFQYXNzS2l0TGlicmFyeSgpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgYXV0byBwYXNzTGli
cmFyeSA9IGFkb3B0TlMoW2FsbG9jUEtQYXNzTGlicmFyeUluc3RhbmNlKCkgaW5pdF0pOworICAg
IGF1dG8gcGFzc0xpYnJhcnkgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXNzTGlicmFyeUluc3Rh
bmNlKCkgaW5pdF0pOwogICAgIFtwYXNzTGlicmFyeSBvcGVuUGF5bWVudFNldHVwRm9yTWVyY2hh
bnRJZGVudGlmaWVyOm1lcmNoYW50SWRlbnRpZmllciBkb21haW46ZG9tYWluTmFtZSBjb21wbGV0
aW9uOkJsb2NrUHRyPHZvaWQgKEJPT0wpPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShCT09MIHJlc3VsdCkgbXV0YWJsZSB7CiAg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVzdWx0XSB7CiAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXN1bHQpOwpAQCAtMzY4LDE1ICszMDYsMTUgQEAgc3RhdGljIFJldGFpblB0cjxO
U1NldD4gdG9QS0NvbnRhY3RGaWVsZHMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5
bWVudFIKICAgICBWZWN0b3I8TlNTdHJpbmcgKj4gcmVzdWx0OwogCiAgICAgaWYgKGNvbnRhY3RG
aWVsZHMucG9zdGFsQWRkcmVzcykKLSAgICAgICAgcmVzdWx0LmFwcGVuZChnZXRQS0NvbnRhY3RG
aWVsZFBvc3RhbEFkZHJlc3MoKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoUEFMOjpnZXRfUGFz
c0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKSk7CiAgICAgaWYgKGNvbnRhY3RGaWVs
ZHMucGhvbmUpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0UEtDb250YWN0RmllbGRQaG9uZU51
bWJlcigpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFj
dEZpZWxkUGhvbmVOdW1iZXIoKSk7CiAgICAgaWYgKGNvbnRhY3RGaWVsZHMuZW1haWwpCi0gICAg
ICAgIHJlc3VsdC5hcHBlbmQoZ2V0UEtDb250YWN0RmllbGRFbWFpbEFkZHJlc3MoKSk7CisgICAg
ICAgIHJlc3VsdC5hcHBlbmQoUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZEVtYWlsQWRk
cmVzcygpKTsKICAgICBpZiAoY29udGFjdEZpZWxkcy5uYW1lKQotICAgICAgICByZXN1bHQuYXBw
ZW5kKGdldFBLQ29udGFjdEZpZWxkTmFtZSgpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChQQUw6
OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkTmFtZSgpKTsKICAgICBpZiAoY29udGFjdEZpZWxk
cy5waG9uZXRpY05hbWUpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0UEtDb250YWN0RmllbGRQ
aG9uZXRpY05hbWUoKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoUEFMOjpnZXRfUGFzc0tpdF9Q
S0NvbnRhY3RGaWVsZFBob25ldGljTmFtZSgpKTsKIAogICAgIHJldHVybiBhZG9wdE5TKFtbTlNT
ZXQgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpyZXN1bHQuZGF0YSgpIGNvdW50OnJlc3VsdC5zaXpl
KCldKTsKIH0KQEAgLTQxOCw3ICszNTYsNyBAQCBzdGF0aWMgTlNEZWNpbWFsTnVtYmVyICp0b0Rl
Y2ltYWxOdW1iZXIoY29uc3QgU3RyaW5nJiBhbW91bnQpCiAKIHN0YXRpYyBSZXRhaW5QdHI8UEtQ
YXltZW50U3VtbWFyeUl0ZW0+IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0oY29uc3QgV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJiBsaW5lSXRlbSkKIHsKLSAg
ICByZXR1cm4gW2dldFBLUGF5bWVudFN1bW1hcnlJdGVtQ2xhc3MoKSBzdW1tYXJ5SXRlbVdpdGhM
YWJlbDpsaW5lSXRlbS5sYWJlbCBhbW91bnQ6dG9EZWNpbWFsTnVtYmVyKGxpbmVJdGVtLmFtb3Vu
dCkgdHlwZTp0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShsaW5lSXRlbS50eXBlKV07CisgICAg
cmV0dXJuIFtQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudFN1bW1hcnlJdGVtQ2xhc3MoKSBzdW1t
YXJ5SXRlbVdpdGhMYWJlbDpsaW5lSXRlbS5sYWJlbCBhbW91bnQ6dG9EZWNpbWFsTnVtYmVyKGxp
bmVJdGVtLmFtb3VudCkgdHlwZTp0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShsaW5lSXRlbS50
eXBlKV07CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gdG9QS1BheW1lbnRTdW1tYXJ5
SXRlbXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFs
QW5kTGluZUl0ZW1zJiB0b3RhbEFuZExpbmVJdGVtcykKQEAgLTQ3Nyw3ICs0MTUsNyBAQCBzdGF0
aWMgUEtTaGlwcGluZ1R5cGUgdG9QS1NoaXBwaW5nVHlwZShXZWJDb3JlOjpBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdDo6UwogCiBzdGF0aWMgUmV0YWluUHRyPFBLU2hpcHBpbmdNZXRob2Q+
IHRvUEtTaGlwcGluZ01ldGhvZChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmIHNoaXBwaW5nTWV0aG9kKQogewotICAgIFJldGFpblB0
cjxQS1NoaXBwaW5nTWV0aG9kPiByZXN1bHQgPSBbZ2V0UEtTaGlwcGluZ01ldGhvZENsYXNzKCkg
c3VtbWFyeUl0ZW1XaXRoTGFiZWw6c2hpcHBpbmdNZXRob2QubGFiZWwgYW1vdW50OnRvRGVjaW1h
bE51bWJlcihzaGlwcGluZ01ldGhvZC5hbW91bnQpXTsKKyAgICBSZXRhaW5QdHI8UEtTaGlwcGlu
Z01ldGhvZD4gcmVzdWx0ID0gW1BBTDo6Z2V0X1Bhc3NLaXRfUEtTaGlwcGluZ01ldGhvZENsYXNz
KCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6c2hpcHBpbmdNZXRob2QubGFiZWwgYW1vdW50OnRvRGVj
aW1hbE51bWJlcihzaGlwcGluZ01ldGhvZC5hbW91bnQpXTsKICAgICBbcmVzdWx0IHNldElkZW50
aWZpZXI6c2hpcHBpbmdNZXRob2QuaWRlbnRpZmllcl07CiAgICAgW3Jlc3VsdCBzZXREZXRhaWw6
c2hpcHBpbmdNZXRob2QuZGV0YWlsXTsKIApAQCAtNTEyLDcgKzQ1MCw3IEBAIHN0YXRpYyBQS1Bh
eW1lbnRSZXF1ZXN0QVBJVHlwZSB0b0FQSVR5cGUoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3Q6CiAKIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0PiB0b1BLUGF5bWVudFJl
cXVlc3QoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIGNvbnN0IFdlYkNvcmU6OlVSTCYgb3Jp
Z2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTHMsIGNv
bnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVz
dCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW2FsbG9jUEtQYXltZW50UmVxdWVzdElu
c3RhbmNlKCkgaW5pdF0pOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbUEFMOjphbGxvY1BL
UGF5bWVudFJlcXVlc3RJbnN0YW5jZSgpIGluaXRdKTsKIAogICAgIFtyZXN1bHQgc2V0T3JpZ2lu
YXRpbmdVUkw6b3JpZ2luYXRpbmdVUkxdOwogCkBAIC02MzIsNzIgKzU3MCw3MiBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TRXJyb3I+IHRvTlNFcnJvcihjb25zdCBXZWJDb3JlOjpQYXltZW50RXJyb3Im
IGVycm9yKQogCiAgICAgICAgIHN3aXRjaCAoKmVycm9yLmNvbnRhY3RGaWVsZCkgewogICAgICAg
ICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQaG9uZU51bWJlcjoK
LSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQaG9uZU51bWJl
cigpOworICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29u
dGFjdEZpZWxkUGhvbmVOdW1iZXIoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkVtYWlsQWRkcmVzczoKLSAg
ICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRFbWFpbEFkZHJlc3Mo
KTsKKyAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRh
Y3RGaWVsZEVtYWlsQWRkcmVzcygpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6TmFtZToKLSAgICAgICAgICAg
IHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGROYW1lKCk7CisgICAgICAgICAgICBw
a0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGROYW1lKCk7CiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6
Q29udGFjdEZpZWxkOjpQaG9uZXRpY05hbWU6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9
IGdldFBLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RG
aWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQaG9uZXRpY05hbWUoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpD
b250YWN0RmllbGQ6OlBvc3RhbEFkZHJlc3M6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9
IGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcGtDb250YWN0
RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6
OkNvbnRhY3RGaWVsZDo6QWRkcmVzc0xpbmVzOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQg
PSBnZXRQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKKyAgICAgICAgICAgIHBrQ29udGFj
dEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsK
ICAgICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NTdHJlZXRL
ZXkoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVu
dEVycm9yOjpDb250YWN0RmllbGQ6OlN1YkxvY2FsaXR5OgotICAgICAgICAgICAgcGtDb250YWN0
RmllbGQgPSBnZXRQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKKyAgICAgICAgICAgIHBr
Q29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJl
c3MoKTsKICAgICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NT
dWJMb2NhbGl0eUtleSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBXZWJD
b3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6TG9jYWxpdHk6Ci0gICAgICAgICAgICBw
a0NvbnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAg
ICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9z
dGFsQWRkcmVzcygpOwogICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFs
QWRkcmVzc0NpdHlLZXkoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgV2Vi
Q29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlBvc3RhbENvZGU6Ci0gICAgICAgICAg
ICBwa0NvbnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAg
ICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxk
UG9zdGFsQWRkcmVzcygpOwogICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9z
dGFsQWRkcmVzc1Bvc3RhbENvZGVLZXkoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
IGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlN1YkFkbWluaXN0cmF0
aXZlQXJlYToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQ
b3N0YWxBZGRyZXNzKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bh
c3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBwb3N0YWxB
ZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3ViQWRtaW5pc3RyYXRpdmVBcmVhS2V5KCk7
CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJv
cjo6Q29udGFjdEZpZWxkOjpBZG1pbmlzdHJhdGl2ZUFyZWE6Ci0gICAgICAgICAgICBwa0NvbnRh
Y3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAg
cGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRk
cmVzcygpOwogICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVz
c1N0YXRlS2V5KCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdlYkNvcmU6
OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpDb3VudHJ5OgotICAgICAgICAgICAgcGtDb250
YWN0RmllbGQgPSBnZXRQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKKyAgICAgICAgICAg
IHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFk
ZHJlc3MoKTsKICAgICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJl
c3NDb3VudHJ5S2V5KCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdlYkNv
cmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpDb3VudHJ5Q29kZToKLSAgICAgICAgICAg
IHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CisgICAg
ICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQ
b3N0YWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0
YWxBZGRyZXNzSVNPQ291bnRyeUNvZGVLZXkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpwa0NvbnRhY3RGaWVsZCBmb3JLZXk6
Z2V0UEtQYXltZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5mb0tleSgpXTsKKyAgICAgICAgW3Vz
ZXJJbmZvIHNldE9iamVjdDpwa0NvbnRhY3RGaWVsZCBmb3JLZXk6UEFMOjpnZXRfUGFzc0tpdF9Q
S1BheW1lbnRFcnJvckNvbnRhY3RGaWVsZFVzZXJJbmZvS2V5KCldOwogICAgICAgICBpZiAocG9z
dGFsQWRkcmVzc0tleSkKLSAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6cG9zdGFsQWRk
cmVzc0tleSBmb3JLZXk6Z2V0UEtQYXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNlckluZm9LZXko
KV07CisgICAgICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OnBvc3RhbEFkZHJlc3NLZXkgZm9y
S2V5OlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNlckluZm9L
ZXkoKV07CiAgICAgfQogCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0
V2l0aERvbWFpbjpnZXRQS1BheW1lbnRFcnJvckRvbWFpbigpIGNvZGU6dG9QS1BheW1lbnRFcnJv
ckNvZGUoZXJyb3IuY29kZSkgdXNlckluZm86dXNlckluZm8uZ2V0KCldKTsKKyAgICByZXR1cm4g
YWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOlBBTDo6Z2V0X1Bhc3NLaXRf
UEtQYXltZW50RXJyb3JEb21haW4oKSBjb2RlOnRvUEtQYXltZW50RXJyb3JDb2RlKGVycm9yLmNv
ZGUpIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNB
cnJheT4gdG9OU0Vycm9ycyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGF5bWVudEVycm9yPiYgZXJy
b3JzKQpAQCAtNzYxLDcgKzY5OSw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OnBsYXRmb3JtQ29tcGxldGVQYXltZW50U2Vzc2lvbihjb25zdCBzdGQ6Om9wdGlvCiAKICNpZiAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMw
MCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDExMDAwMCkKICAgICBhdXRvIHN0YXR1cyA9IHJlc3VsdCA/IHJlc3VsdC0+c3Rh
dHVzIDogV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlN1Y2Nlc3M7Ci0gICAg
YXV0byBwa1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS1BheW1l
bnRBdXRob3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0aFN0YXR1czp0b1BLUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXMoc3RhdHVzKSBlcnJvcnM6cmVzdWx0ID8gdG9OU0Vycm9ycyhy
ZXN1bHQtPmVycm9ycykuZ2V0KCkgOiBAWyBdXSk7CisgICAgYXV0byBwa1BheW1lbnRBdXRob3Jp
emF0aW9uUmVzdWx0ID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25S
ZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOnRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1cyhzdGF0dXMpIGVycm9yczpyZXN1bHQgPyB0b05TRXJyb3JzKHJlc3VsdC0+ZXJyb3JzKS5n
ZXQoKSA6IEBbIF1dKTsKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihwa1BheW1lbnRBdXRob3JpemF0
aW9uUmVzdWx0LmdldCgpKTsKICNlbHNlCiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24odG9QS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzKHJlc3VsdCkpOwpAQCAtNzg3LDcgKzcyNSw3IEBAIHZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ01ldGhv
ZFNlbGVjdGlvbihjb25zdCBzCiAgICAgICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9IHRvUEtQYXltZW50U3VtbWFy
eUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpOwogCiAjaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MTAwMDApCi0gICAgYXV0byBwa1NoaXBwaW5nTWV0aG9kVXBkYXRlID0gYWRvcHROUyhbYWxsb2NQ
S1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5
bWVudFN1bW1hcnlJdGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCldKTsKKyAgICBhdXRvIHBrU2hpcHBpbmdN
ZXRob2RVcGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5n
TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6bV9wYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0
ZW1zLmdldCgpXSk7CiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24ocGtTaGlwcGluZ01ldGhv
ZFVwZGF0ZS5nZXQoKSk7CiAjZWxzZQogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uKFBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXNTdWNjZXNzLCBtX3BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkpOwpAQCAtODM5
LDcgKzc3Nyw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29t
cGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oY29uc3QKICAgICB9CiAKICNpZiAoUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwg
KFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDExMDAwMCkKLSAgICBhdXRvIHBrU2hpcHBpbmdDb250YWN0VXBkYXRlID0gYWRvcHROUyhb
YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0
V2l0aEVycm9yczp1cGRhdGUgPyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKS5nZXQoKSA6IEBb
IF0gcGF5bWVudFN1bW1hcnlJdGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkgc2hpcHBpbmdNZXRob2RzOm1f
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRo
b2RzLmdldCgpXSk7CisgICAgYXV0byBwa1NoaXBwaW5nQ29udGFjdFVwZGF0ZSA9IGFkb3B0TlMo
W1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2Uo
KSBpbml0V2l0aEVycm9yczp1cGRhdGUgPyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKS5nZXQo
KSA6IEBbIF0gcGF5bWVudFN1bW1hcnlJdGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkgc2hpcHBpbmdNZXRo
b2RzOm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBp
bmdNZXRob2RzLmdldCgpXSk7CiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKHBrU2hpcHBp
bmdDb250YWN0VXBkYXRlLmdldCgpKTsKICNlbHNlCiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0
aW9uKHRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyh1cGRhdGUpLCBtX3BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3NoaXBwaW5nTWV0aG9kcy5nZXQoKSwg
bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3Vt
bWFyeUl0ZW1zLmdldCgpKTsKQEAgLTg1Niw3ICs3OTQsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25z
dCBzdAogICAgICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMgPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRhdGUt
Pm5ld1RvdGFsQW5kTGluZUl0ZW1zKTsKIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQotICAgIGF1
dG8gcGtQYXltZW50TWV0aG9kVXBkYXRlID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0
UGF5bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1z
Om1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1
bW1hcnlJdGVtcy5nZXQoKV0pOworICAgIGF1dG8gcGtQYXltZW50TWV0aG9kVXBkYXRlID0gYWRv
cHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFu
Y2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXSk7CiAgICAg
bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RQ
YXltZW50TWV0aG9kQ29tcGxldGlvbihwa1BheW1lbnRNZXRob2RVcGRhdGUuZ2V0KCkpOwogI2Vs
c2UKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2Rp
ZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSk7CkBAIC04NjYs
MTIgKzgwNCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29t
cGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKGNvbnN0IHN0CiAKIFZlY3RvcjxTdHJpbmc+IFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUF2YWlsYWJsZVBheW1lbnROZXR3b3Jr
cygpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICghUGFzc0tpdExpYnJhcnkoKSkKLSAg
ICAgICAgcmV0dXJuIHsgfTsKLSNlbmRpZgotICAgIAotICAgIE5TQXJyYXk8UEtQYXltZW50TmV0
d29yaz4gKmF2YWlsYWJsZU5ldHdvcmtzID0gW2dldFBLUGF5bWVudFJlcXVlc3RDbGFzcygpIGF2
YWlsYWJsZU5ldHdvcmtzXTsKKyAgICBOU0FycmF5PFBLUGF5bWVudE5ldHdvcms+ICphdmFpbGFi
bGVOZXR3b3JrcyA9IFtQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudFJlcXVlc3RDbGFzcygpIGF2
YWlsYWJsZU5ldHdvcmtzXTsKICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CiAgICAgcmVzdWx0
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXZhaWxhYmxlTmV0d29ya3MuY291bnQpOwogICAgIGZv
ciAoUEtQYXltZW50TmV0d29yayBuZXR3b3JrIGluIGF2YWlsYWJsZU5ldHdvcmtzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9z
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IGMwZGYzYzg5ZGI0Y2Y0MTc0
OThhYzI2OGU5OWUxMTViYTQwNWQ3NjIuLmY5ZTI4MGQxYzk1NmE2ZDhkZTcyNTQxZmZmMDk3ZjU4
Y2RlYWE4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lv
cy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KQEAg
LTM0LDEwICszNCw3IEBACiAjaW1wb3J0IDxQYXNzS2l0L1Bhc3NLaXQuaD4KICNpbXBvcnQgPFVJ
S2l0L1VJVmlld0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXMuaD4KLSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZUX0xJTktf
RlJBTUVXT1JLKFBhc3NLaXQpCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTU0LDcgKzUxLDcgQEAgdm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFdl
YkNvcmU6OlVSTCYgb3JpZ2kKIAogICAgIGF1dG8gcGF5bWVudFJlcXVlc3QgPSB0b1BLUGF5bWVu
dFJlcXVlc3QobV93ZWJQYWdlUHJveHksIG9yaWdpbmF0aW5nVVJMLCBsaW5rSWNvblVSTFN0cmlu
Z3MsIHJlcXVlc3QpOwogCi0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
ID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJJbnN0
YW5jZSgpIGluaXRXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3QuZ2V0KCldKTsKKyAg
ICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtQQUw6OmFs
bG9jUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0
aFBheW1lbnRSZXF1ZXN0OnBheW1lbnRSZXF1ZXN0LmdldCgpXSk7CiAgICAgaWYgKCFtX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlNYWMubW0KaW5kZXggNzQxNTkzODNmMTk1NDI3ZGI5NzYwYThjMDFlYzcwNjdhNjdjNmY5
NS4uMmU5OWNiMTQ3NzIzNzVhNGU4N2MyOWY1NzJhZmU5NzVjZmExODYxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQpAQCAtMzAsMjkgKzMwLDE4IEBACiAKICNp
bXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHlDb2NvYS5oIgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CisjaW1wb3J0
IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4K
LSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdP
UktfT1BUSU9OQUwoUGFzc0tpdCkKLQotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoUGFzc0tp
dCwgUEtFeHRlbnNpb25QYXltZW50QXV0aG9yaXphdGlvblVJRXh0ZW5zaW9uUG9pbnROYW1lLCBO
U1N0cmluZyAqKTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9y
aWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxTdHJp
bmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVz
dCwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBpZiAoIVBhc3NLaXRMaWJyYXJ5KCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgYXV0byBwYXltZW50UmVxdWVzdCA9
IHRvUEtQYXltZW50UmVxdWVzdChtX3dlYlBhZ2VQcm94eSwgb3JpZ2luYXRpbmdVUkwsIGxpbmtJ
Y29uVVJMU3RyaW5ncywgcmVxdWVzdCk7CiAKICAgICBhdXRvIHNob3dQYXltZW50VUlSZXF1ZXN0
U2VlZCA9IG1fc2hvd1BheW1lbnRVSVJlcXVlc3RTZWVkOwogICAgIGF1dG8gd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyk7Ci0gICAgW2dldFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckNsYXNzKCkgcmVxdWVzdFZpZXdDb250cm9sbGVyV2l0aFBheW1lbnRSZXF1ZXN0OnBh
eW1lbnRSZXF1ZXN0LmdldCgpIGNvbXBsZXRpb246QmxvY2tQdHI8dm9pZCAoUEtQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyICosIE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW3Bh
eW1lbnRSZXF1ZXN0LCBzaG93UGF5bWVudFVJUmVxdWVzdFNlZWQsIHdlYWtUaGlzLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShQS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIgKnZpZXdDb250cm9sbGVyLCBOU0Vycm9yICplcnJvcikgewor
ICAgIFtQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ckNsYXNzKCkgcmVxdWVzdFZpZXdDb250cm9sbGVyV2l0aFBheW1lbnRSZXF1ZXN0OnBheW1lbnRS
ZXF1ZXN0LmdldCgpIGNvbXBsZXRpb246QmxvY2tQdHI8dm9pZChQS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIgKiwgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbcGF5bWVudFJl
cXVlc3QsIHNob3dQYXltZW50VUlSZXF1ZXN0U2VlZCwgd2Vha1RoaXMsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFBLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXIsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAg
IGF1dG8gcGF5bWVudENvb3JkaW5hdG9yUHJveHkgPSB3ZWFrVGhpcy5nZXQoKTsKICAgICAgICAg
aWYgKCFwYXltZW50Q29vcmRpbmF0b3JQcm94eSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5p
bmdDb2NvYS5tbQppbmRleCA4M2ZmZWQzNDVkMjYxNmE5MWMwYWU3YjM2ODM1ZWZjOGIzOTRkZDk3
Li4wMzc1YjgzYjJhN2Y1M2M2MWE5ZmRjNDY4ZWIxYjZhZDVhZDE3MjUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0Nv
Y29hLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIlNhZmVCcm93c2luZ1NQSS5oIgog
I2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oPgogI2ltcG9ydCA8d3RmL0xhbmd1YWdlLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYTllNWQwNzExMGFjZDNlMjA0MTRhOTFmZTA5YzVkZGRlMjAy
MWFkOC4uZjQ0NDFmZDljN2UzM2VhYWVkZDI4ZmY3ZTY2ZjA1ODhhNjVkYjMyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02ODYsOCAr
Njg2LDYgQEAKIAkJMkQ5MkE3OTUyMTJCNkFENDAwRjQ5M0ZEIC8qIFBsdWdpblByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUEyRDkwRDExMjgxQzk2NjAwMUVCOTYyIC8qIFBsdWdpblByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwICovOyB9OwogCQkyRDkyQTc5NjIxMkI2QURBMDBGNDkzRkQgLyogTmV0
c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUE0QTlDNTMxMkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9k
dWxlLmNwcCAqLzsgfTsKIAkJMkQ5MkE3OTcyMTJCNkFEQTAwRjQ5M0ZEIC8qIFBsdWdpbkluZm9y
bWF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDM0Y4QzhFMTczQUY1MkQwMDdCN0YzOSAvKiBQbHVnaW5JbmZvcm1hdGlvbi5jcHAgKi87IH07
Ci0JCTJEOTJBNzk4MjEzNDhEODUwMEY0OTNGRCAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QjFGNzdEMUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5t
bSAqLzsgfTsKLQkJMkQ5MkE3OUYyMTM0QjA3RTAwRjQ5M0ZEIC8qIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUFCMUY3N0IxRDFCMzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5SU9TLm1tICovOyB9OwogCQkyRDkzMTE2OTIxMkY2MUIyMDAwNDRCRkUgLyogV0tDb250ZW50
Vmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
Q0I0RTNEMThCQkUwNDQwMDBGQ0ZDOSAvKiBXS0NvbnRlbnRWaWV3Lm1tICovOyB9OwogCQkyRDkz
MTE2QTIxMkY2MUI1MDAwNDRCRkUgLyogV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDQjRFNkIxOEJCRjI2
QTAwMEZDRkM5IC8qIFdLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSAqLzsgfTsKIAkJMkQ5RUEz
MEQxQTk2Q0I1OTAwMkQyODA3IC8qIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDlFQTMwQzFBOTZDQjU5
MDAyRDI4MDcgLyogV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTEwMTAsOCArMTEwMDgsNiBAQAog
CQkJCTdDRTlDRTEwMUZBMDc2N0EwMDAxNzdERSAvKiBXZWJQYWdlVXBkYXRlUHJlZmVyZW5jZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M0Njk0QzkxQTRCNEVBMTAwQUQ1ODQ1IC8qIFdlYlBh
c3RlYm9hcmRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUIx
Rjc5NjFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTJEOTJBNzlGMjEzNEIwN0UwMEY0OTNGRCAvKiBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTJEOTJB
Nzk4MjEzNDhEODUwMEY0OTNGRCAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTFBQjFGNzk4MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
RDkyQTc4RDIxMkI2QUIxMDBGNDkzRkQgLyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTJEOTEzNDRFMjEyQ0Y5RjAwMDEyOEFGRCAvKiBXZWJQbHVnaW5JbmZv
UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355424</attachid>
            <date>2018-11-21 09:58:49 -0800</date>
            <delta_ts>2018-11-21 10:25:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191875-20181121095846.patch</filename>
            <type>text/plain</type>
            <size>69474</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQxMWQ5ZGVmOGIxMzhiNzExMTYwMWFh
YmVjYTM1OGQ4MTAxMDJhNzcuLjQxZWQzNjEzZDQxMTNjZTM5NTliMjA4ZDJmZmMzYmM3NjU5YmZh
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUg
Zm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MTg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL2NvY29hL1NvZnRMaW5raW5nLmg6CisKIDIwMTgtMTEtMTQgIEtlaXRoIFJvbGxp
biAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCAjZW5kIHZzLiAjZW5kaWYgdHlw
by4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwZjc0ZjdhMTlhOTQyMWNmNmNlMzMzYzFmMDY3ZmE2YWVlZTRlOGI3
Li5kY2MzZjI0NDcwZjMxNTYzZWYyMGJiM2VkNGZhYWI0ZWM0ZWUwMGUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBhc3NL
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg3
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9k
dWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydCk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50
TWVyY2hhbnRTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50TWVyY2hh
bnRTZXNzaW9uOjpmcm9tSlMpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUNvY29hOjpwYWludEFwcGxlUGF5QnV0dG9uKToKKwogMjAxOC0xMS0yMCAgRGVhbiBK
YWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZpbmcgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmUgZnJvbSBXZWJMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMGVkZWU1YzNh
YzhkZTI4NTA2NDUxNzY1ZTIwMTUwYmFlOGMzODlmNy4uMWE0MTg4Zjc1NDBjYWFjM2U3NTc1YWFi
ZGMxNTUxM2VlOGQ3NDJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2Nv
YV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOiBBZGRlZC4K
KyAgICAgICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tOiBBZGRlZC4KKyAgICAgICAg
KiBwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaDoKKwogMjAxOC0xMS0xNyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBSZW1vdmUgYWxsIHVz
YWdlcyBvZiBVSUl0ZW1Qcm92aWRlciwgVUlJdGVtUHJvdmlkZXJSZWFkaW5nLCBhbmQgcmVsYXRl
ZCBjbGFzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZlOGUzZTRkOGEwOWUxYmUzZjljYjU1ZmM3OTk0MTAyNTFk
YWI5NjUuLjMzZmY1NzA4NjViZjkyZTRkZGQxOGNkYTg4ZDE3ZmNiMDg4YzkyN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzcgQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBh
c3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MTg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRDb250YWN0Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPjo6
ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0
aG9kPjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgaW52YWxpZGF0ZV0pOgorICAgICAgICAoLVtX
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyOmRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246XSk6CisgICAg
ICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkQXV0aG9yaXplUGF5bWVudDpoYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFBheW1lbnRN
ZXRob2Q6aGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRT
ZWxlY3RTaGlwcGluZ01ldGhvZDpoYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyOmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDpoYW5kbGVyOl0pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVu
dHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXApOgorICAgICAg
ICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKToKKyAgICAgICAgKFdlYktpdDo6dG9Q
S1NoaXBwaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29t
cGxldGVQYXltZW50U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0
ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUF2
YWlsYWJsZVBheW1lbnROZXR3b3Jrcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2lv
cy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5t
bToKKwogMjAxOC0xMS0yMCAgSmVmZiBNaWxsZXIgIDxqZWZmbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV0dXJuIG51bGxwdHIgaW1tZWRpYXRlbHkgaWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0IGlu
IHRoZSBIYXNoTWFwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggZTJlYjc1YmNkYjMzYTczMTM2NDAyZGNkMDEy
ZGEwNzYzZmU2OGQ2ZS4uMzBjYTkwNWMyYTE0ZDg5MmE5MzVjZWU1OTc2ZTlkNGNjNGFhMDJmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCkBAIC02MTYsOSArNjE2LDEwIEBACiAKICNpZiBQTEFURk9STShNQUMpCiAK
LSNkZWZpbmUgVVNFX0FQUEtJVCAxCiAjZGVmaW5lIEhBVkVfUlVOTE9PUF9USU1FUiAxCiAjZGVm
aW5lIEhBVkVfU0VDX0tFWUNIQUlOIDEKKyNkZWZpbmUgVVNFX0FQUEtJVCAxCisjZGVmaW5lIFVT
RV9QQVNTS0lUIDEKIAogI2lmIENQVShYODZfNjQpCiAjZGVmaW5lIEhBVkVfTkVUV09SS19FWFRF
TlNJT04gMQpAQCAtMTA1Myw5ICsxMDU0LDEwIEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
UykKKyNkZWZpbmUgSEFWRV9BUFBfTElOS1MgMQorI2RlZmluZSBVU0VfUEFTU0tJVCAxCiAjZGVm
aW5lIFVTRV9RVUlDS19MT09LIDEKICNkZWZpbmUgVVNFX1NZU1RFTV9QUkVWSUVXIDEKLSNkZWZp
bmUgSEFWRV9BUFBfTElOS1MgMQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiAhUExBVEZPUk0oSU9TTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvU29m
dExpbmtpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1NvZnRMaW5raW5nLmgKaW5kZXggNmFl
ZWRhZTRhNjYzMzQ1NzYwNmJhN2UxY2JlZmZmNWVhNjNjMDgyZi4uZDJiNDI4M2JmZTMyY2UwM2Vk
OGJmN2VmYmQ2ZjA0MjI1YTQ0NDNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2Ev
U29mdExpbmtpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Tb2Z0TGlua2luZy5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMS0yMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzQwLDkgKzM0MCw5IEBACiAgICAgfSBcCiAgICAgfQogCi0jZGVmaW5l
IFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrKSBcCisjZGVmaW5lIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBleHBvcnQpIFwKICAgICBuYW1lc3BhY2Ug
ZnVuY3Rpb25OYW1lc3BhY2UgeyBcCi0gICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KGJvb2wg
aXNPcHRpb25hbCA9IGZhbHNlKTsgXAorICAgIGV4cG9ydCB2b2lkKiBmcmFtZXdvcmsjI0xpYnJh
cnkoYm9vbCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCiAgICAgdm9pZCogZnJhbWV3b3JrIyNMaWJy
YXJ5KGJvb2wgaXNPcHRpb25hbCkgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgdm9pZCogZnJh
bWV3b3JrTGlicmFyeTsgXApAQCAtMzU2LDkgKzM1NiwxMiBAQAogICAgIH0gXAogICAgIH0KIAot
I2RlZmluZSBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRShmdW5jdGlvbk5h
bWVzcGFjZSwgZnJhbWV3b3JrKSBcCisjZGVmaW5lIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NP
VVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrKSBcCisgICAgU09GVF9MSU5LX0ZSQU1F
V09SS19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmss
ICkKKworI2RlZmluZSBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBleHBvcnQpIFwKICAgICBuYW1l
c3BhY2UgZnVuY3Rpb25OYW1lc3BhY2UgeyBcCi0gICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5
KGJvb2wgaXNPcHRpb25hbCA9IGZhbHNlKTsgXAorICAgIGV4cG9ydCB2b2lkKiBmcmFtZXdvcmsj
I0xpYnJhcnkoYm9vbCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCiAgICAgdm9pZCogZnJhbWV3b3Jr
IyNMaWJyYXJ5KGJvb2wgaXNPcHRpb25hbCkgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgdm9p
ZCogZnJhbWV3b3JrTGlicmFyeTsgXApAQCAtMzcyLDYgKzM3NSw5IEBACiAgICAgfSBcCiAgICAg
fQogCisjZGVmaW5lIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19GT1JfU09VUkNFKGZ1bmN0
aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmspIFwKKyAgICBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdP
UktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCAp
CisKICNkZWZpbmUgU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoZnVuY3Rpb25OYW1lc3BhY2Us
IGZyYW1ld29yaywgY2xhc3NOYW1lKSBcCiAgICAgQGNsYXNzIGNsYXNzTmFtZTsgXAogICAgIG5h
bWVzcGFjZSBmdW5jdGlvbk5hbWVzcGFjZSB7IFwKQEAgLTM4MywxMSArMzg5LDExIEBACiAgICAg
fSBcCiAgICAgfQogCi0jZGVmaW5lIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKGZ1bmN0aW9u
TmFtZXNwYWNlLCBmcmFtZXdvcmssIGNsYXNzTmFtZSkgXAorI2RlZmluZSBTT0ZUX0xJTktfQ0xB
U1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBj
bGFzc05hbWUsIGV4cG9ydCkgXAogICAgIEBjbGFzcyBjbGFzc05hbWU7IFwKICAgICBuYW1lc3Bh
Y2UgZnVuY3Rpb25OYW1lc3BhY2UgeyBcCiAgICAgc3RhdGljIENsYXNzIGluaXQjI2NsYXNzTmFt
ZSgpOyBcCi0gICAgQ2xhc3MgKCpnZXRfIyNmcmFtZXdvcmsjI18jI2NsYXNzTmFtZSMjQ2xhc3Mp
KCkgPSBpbml0IyNjbGFzc05hbWU7IFwKKyAgICBleHBvcnQgQ2xhc3MgKCpnZXRfIyNmcmFtZXdv
cmsjI18jI2NsYXNzTmFtZSMjQ2xhc3MpKCkgPSBpbml0IyNjbGFzc05hbWU7IFwKICAgICBzdGF0
aWMgQ2xhc3MgY2xhc3MjI2NsYXNzTmFtZTsgXAogICAgIFwKICAgICBzdGF0aWMgQ2xhc3MgY2xh
c3NOYW1lIyNGdW5jdGlvbigpIFwKQEAgLTQwOCw2ICs0MTQsOSBAQAogICAgIH0gXAogICAgIH0K
IAorI2RlZmluZSBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwg
ZnJhbWV3b3JrLCBjbGFzc05hbWUpIFwKKyAgICBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBjbGFzc05hbWUsICkKKwog
I2RlZmluZSBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwg
ZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSkgXAogICAgIFdURl9FWFRFUk5f
Q19CRUdJTiBcCiAgICAgZXh0ZXJuIGNvbnN0IHZhcmlhYmxlVHlwZSB2YXJpYWJsZU5hbWU7IFwK
QEAgLTQ4OSwxMyArNDk4LDEzIEBACiAgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWVzcGFjZTo6
c29mdExpbmsjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlck5hbWVzOyBcCiAgICAg
fQogCi0jZGVmaW5lIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNw
YWNlLCBmcmFtZXdvcmssIGZ1bmN0aW9uTmFtZSwgcmVzdWx0VHlwZSwgcGFyYW1ldGVyRGVjbGFy
YXRpb25zLCBwYXJhbWV0ZXJOYW1lcykgXAorI2RlZmluZSBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlv
bk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMs
IGV4cG9ydCkgXAogICAgIFdURl9FWFRFUk5fQ19CRUdJTiBcCiAgICAgcmVzdWx0VHlwZSBmdW5j
dGlvbk5hbWUgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCiAgICAgV1RGX0VYVEVSTl9DX0VORCBc
CiAgICAgbmFtZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAogICAgIHN0YXRpYyByZXN1bHRU
eXBlIGluaXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9uczsg
XAotICAgIHJlc3VsdFR5cGUgKCpzb2Z0TGluayMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUpIHBh
cmFtZXRlckRlY2xhcmF0aW9ucyA9IGluaXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lOyBcCisg
ICAgZXhwb3J0IHJlc3VsdFR5cGUoKnNvZnRMaW5rIyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSkg
cGFyYW1ldGVyRGVjbGFyYXRpb25zID0gaW5pdCMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWU7IFwK
ICAgICBzdGF0aWMgcmVzdWx0VHlwZSBpbml0IyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSBwYXJh
bWV0ZXJEZWNsYXJhdGlvbnMgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgZGlzcGF0Y2hfb25j
ZV90IG9uY2U7IFwKQEAgLTUwNyw2ICs1MTYsOSBAQAogICAgIH0gXAogICAgIH0KIAorI2RlZmlu
ZSBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFy
YW1ldGVyTmFtZXMpIFwKKyAgICBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VY
UE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5
cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMsICkKKwogI2RlZmluZSBT
T0ZUX0xJTktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwg
ZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9u
cywgcGFyYW1ldGVyTmFtZXMpIFwKICAgICBXVEZfRVhURVJOX0NfQkVHSU4gXAogICAgIHJlc3Vs
dFR5cGUgZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9uczsgXApAQCAtNTUyLDEwICs1
NjQsMTAgQEAKICAgICBleHRlcm4gdmFyaWFibGVUeXBlICgqZ2V0XyMjZnJhbWV3b3JrIyNfIyN2
YXJpYWJsZU5hbWUpKCk7IFwKICAgICB9CiAKLSNkZWZpbmUgU09GVF9MSU5LX1BPSU5URVJfRk9S
X1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlh
YmxlVHlwZSkgXAorI2RlZmluZSBTT0ZUX0xJTktfUE9JTlRFUl9GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVU
eXBlLCBleHBvcnQpIFwKICAgICBuYW1lc3BhY2UgZnVuY3Rpb25OYW1lc3BhY2UgeyBcCiAgICAg
c3RhdGljIHZhcmlhYmxlVHlwZSBpbml0IyNmcmFtZXdvcmsjI3ZhcmlhYmxlTmFtZSgpOyBcCi0g
ICAgdmFyaWFibGVUeXBlICgqZ2V0XyMjZnJhbWV3b3JrIyNfIyN2YXJpYWJsZU5hbWUpKCkgPSBp
bml0IyNmcmFtZXdvcmsjI3ZhcmlhYmxlTmFtZTsgXAorICAgIGV4cG9ydCB2YXJpYWJsZVR5cGUg
KCpnZXRfIyNmcmFtZXdvcmsjI18jI3ZhcmlhYmxlTmFtZSkoKSA9IGluaXQjI2ZyYW1ld29yayMj
dmFyaWFibGVOYW1lOyBcCiAgICAgc3RhdGljIHZhcmlhYmxlVHlwZSBwb2ludGVyIyNmcmFtZXdv
cmsjI3ZhcmlhYmxlTmFtZTsgXAogICAgIFwKICAgICBzdGF0aWMgdmFyaWFibGVUeXBlIHBvaW50
ZXIjI2ZyYW1ld29yayMjdmFyaWFibGVOYW1lIyNGdW5jdGlvbigpIFwKQEAgLTU3Niw2ICs1ODgs
OSBAQAogICAgIH0gXAogICAgIH0KIAorI2RlZmluZSBTT0ZUX0xJTktfUE9JTlRFUl9GT1JfU09V
UkNFKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVU
eXBlKSBcCisgICAgU09GVF9MSU5LX1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChmdW5j
dGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSwgKQor
CiAjZGVmaW5lIFNPRlRfTElOS19WQVJJQUJMRV9GT1JfSEVBREVSKGZ1bmN0aW9uTmFtZXNwYWNl
LCBmcmFtZXdvcmssIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVUeXBlKSBcCiAgICAgV1RGX0VYVEVS
Tl9DX0JFR0lOIFwKICAgICBleHRlcm4gdmFyaWFibGVUeXBlIHZhcmlhYmxlTmFtZTsgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29u
dGFjdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXlt
ZW50Q29udGFjdENvY29hLm1tCmluZGV4IDBiMDIwNGM4NmQ4YTM2YTVkNGE3NTI5OGQwZjQxYTM0
NDYxNTAzZWUuLmNjOTdmZDVlMWY2MjM0NTk5ZWI4ODRjYTgxODdmYjJjZDA4NTdjNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRh
Y3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1Bh
eW1lbnRDb250YWN0Q29jb2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbXBvcnQgIkFwcGxl
UGF5UGF5bWVudENvbnRhY3QuaCIKICNpbXBvcnQgPENvbnRhY3RzL0NvbnRhY3RzLmg+Ci0jaW1w
b3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNz
S2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0zOCwxNCArMzgsNiBAQCBTT0ZUX0xJTktfRlJB
TUVXT1JLKENvbnRhY3RzKQogU09GVF9MSU5LX0NMQVNTKENvbnRhY3RzLCBDTk11dGFibGVQb3N0
YWxBZGRyZXNzKQogU09GVF9MSU5LX0NMQVNTKENvbnRhY3RzLCBDTlBob25lTnVtYmVyKQogCi0j
aWYgUExBVEZPUk0oTUFDKQotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFBhc3NLaXQpCi0j
ZWxzZQotU09GVF9MSU5LX0ZSQU1FV09SSyhQYXNzS2l0KQotI2VuZGlmCi0KLVNPRlRfTElOS19D
TEFTUyhQYXNzS2l0LCBQS0NvbnRhY3QpCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IE5TU3RyaW5nICpzdWJMb2NhbGl0eShDTlBvc3RhbEFkZHJlc3MgKmFkZHJlc3MpCkBAIC0xMDYs
NyArOTgsNyBAQCBzdGF0aWMgdm9pZCBzZXRTdWJBZG1pbmlzdHJhdGl2ZUFyZWEoQ05NdXRhYmxl
UG9zdGFsQWRkcmVzcyAqYWRkcmVzcywgTlNTdHJpbmcgKgogCiBzdGF0aWMgUmV0YWluUHRyPFBL
Q29udGFjdD4gY29udmVydCh1bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBBcHBsZVBheVBheW1lbnRD
b250YWN0JiBjb250YWN0KQogewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS0Nv
bnRhY3RJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1BBTDo6
YWxsb2NQS0NvbnRhY3RJbnN0YW5jZSgpIGluaXRdKTsKIAogICAgIE5TU3RyaW5nICpmYW1pbHlO
YW1lID0gbmlsOwogICAgIE5TU3RyaW5nICpwaG9uZXRpY0ZhbWlseU5hbWUgPSBuaWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJj
aGFudFNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCmluZGV4IDgxYzhjY2I3MzhhN2Y5MzU0
MTIxYzhhMjhkNjc5MzVjMzEyNzZjYWIuLmZjMzZjODk1MzE0OWY0MzMwYmQ5NTFhNmFlYzIyYjhl
ZmIyZTBkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDE2
ICsyOSw3IEBACiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAogI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSlNPTk9iamVjdC5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+Ci0j
aW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElO
S19QUklWQVRFX0ZSQU1FV09SSyhQYXNzS2l0KQotI2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUkso
UGFzc0tpdCkKLSNlbmRpZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50TWVy
Y2hhbnRTZXNzaW9uKQorI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUzLDcgKzQ0LDcgQEAgc3RkOjpvcHRpb25hbDxQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uPiBQYXltZW50TWVyY2hhbnRTZXNzaW9uOjpmcm9tSlMoSlNDOjpF
eGVjU3QKICAgICBpZiAoIWRpY3Rpb25hcnkgfHwgIVtkaWN0aW9uYXJ5IGlzS2luZE9mQ2xhc3M6
W05TRGljdGlvbmFyeSBjbGFzc11dKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgYXV0byBwa1BheW1lbnRNZXJjaGFudFNlc3Npb24gPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVu
dE1lcmNoYW50U2Vzc2lvbkluc3RhbmNlKCkgaW5pdFdpdGhEaWN0aW9uYXJ5OmRpY3Rpb25hcnld
KTsKKyAgICBhdXRvIHBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NQS1BheW1lbnRNZXJjaGFudFNlc3Npb25JbnN0YW5jZSgpIGluaXRXaXRoRGljdGlvbmFyeTpk
aWN0aW9uYXJ5XSk7CiAKICAgICByZXR1cm4gUGF5bWVudE1lcmNoYW50U2Vzc2lvbihwa1BheW1l
bnRNZXJjaGFudFNlc3Npb24uZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BB
TC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIxNTUyZGY3Zjc1ZmM1MzliYjg3NTZk
MDg0OWI1NGQ2ODY5NTU0MDkuLjc3ZjI0NjczZTUxNzM2OTdmNWNiY2U3ZWMzYTQ1MjE2Y2Y0ODMx
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEzMSw2ICsxMzEsOCBAQAogCQlBMTE3NUI1ODFGNkI0NzA1MDBDNEI5RjAgLyog
RGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMTc1QjU2MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNo
UHJvdmlkZXIuY3BwICovOyB9OwogCQlBMTE3NUI1QTFGNkI0QTg0MDBDNEI5RjAgLyogTlNTY3Jv
bGxWaWV3U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMTE3NUI1OTFGNkI0QTg0MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggKi87IH07CiAJ
CUExRjU1RENGMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVG
IC8qIE1ldGFkYXRhU1BJLmggKi87IH07CisJCUExRjYzQzlGMjFBNERCRjcwMDZGQjQzQiAvKiBQ
YXNzS2l0U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExRjYzQzlEMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLzsg
fTsKKwkJQTFGNjNDQTAyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjYzQzlFMjFBNERC
RjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsubW0gKi87IH07CiAJCUEzMEQ0MTIxMUYwREQw
RUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggKi87
IH07CiAJCUEzMEQ0MTIyMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzBENDExRjFGMEREMEVBMDBC
NzE5NTQgLyogS2lsbFJpbmcuY3BwICovOyB9OwogCQlBMzBENDEyNTFGMEREMTJEMDBCNzE5NTQg
LyogS2lsbFJpbmdNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMzBENDEyNDFGMEREMTJEMDBCNzE5NTQgLyogS2lsbFJpbmdNYWMubW0gKi87IH07
CkBAIC0yODcsNiArMjg5LDggQEAKIAkJQTExNzVCNTYxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1
bHRTZWFyY2hQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZhdWx0U2VhcmNoUHJv
dmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE3NUI1OTFGNkI0QTg0
MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TU2Nyb2xsVmll
d1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUY1NURDRTFGNTUyOEVDMDBF
REI3NUYgLyogTWV0YWRhdGFTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0YWRhdGFTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFGNjNDOUQyMUE0REJGNzAwNkZCNDNCIC8qIFBh
c3NLaXRTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXNzS2l0U29mdExpbmsuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFGNjNDOUUyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NL
aXRTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3NLaXRTb2Z0TGluay5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8q
IEtpbGxSaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtpbGxSaW5nLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTFGMUYwREQwRUEwMEI3MTk1NCAv
KiBLaWxsUmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLaWxs
UmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTI0MUYwREQxMkQw
MEI3MTk1NCAvKiBLaWxsUmluZ01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEtpbGxSaW5nTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTYwLDYgKzU2NCw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJ
CUY0NDI5MTY2MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1tICov
LAorCQkJCUExRjYzQzlEMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLywK
KwkJCQlBMUY2M0M5RTIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tICovLAog
CQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03
MjksNiArNzM1LDcgQEAKIAkJCQkwQzc3ODU5RDFGNDUxMzBGMDBGNEVCQjYgLyogTlNXaW5kb3dT
UEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MEFCOEY5MjBBRjZFM0QwMEI4QkU4NyAvKiBOU1hQ
Q0Nvbm5lY3Rpb25TUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNUFGOTFGMUY0M0E0QzcwMDJF
QUMwMiAvKiBPcGVuR0xFU1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFGNjNDOUYyMUE0REJG
NzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREEx
NTUxRjNCRUI0OTAwREJDMzE3IC8qIFBhc3NLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBD
Nzc4NTlFMUY0NTEzMEYwMEY0RUJCNiAvKiBQSVBTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
MTc1QjRFMUY2QjMzNzMwMEM0QjlGMCAvKiBQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovLApAQCAt
ODU0LDYgKzg2MSw3IEBACiAJCQkJQTMwRDQxMjUxRjBERDEyRDAwQjcxOTU0IC8qIEtpbGxSaW5n
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM0ODc2RDgxRjhEN0Y0RTAwQ0NFRUJEIC8qIExv
Z2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMENGOTlDQTQxRjczNjM3NTAwN0VFNzkzIC8q
IE1lZGlhVGltZUFWRm91bmRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUY2M0NBMDIx
QTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTExNzVCNEYxRjZCMzM3MzAwQzRCOUYwIC8qIFBvcHVwTWVudS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUEzQzY2Q0RDMUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTNBQjZFNTIxRjNEMURDNTAwOUMxNEIxIC8qIFNsZWVwRGlzYWJsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hZWI0MTNhY2FjMWViOGFlN2NhOTMyY2YzODdhZTJmMTU2OGFh
YTg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNz
S2l0U29mdExpbmsuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBVU0UoUEFTU0tJVCkKKworI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
Lmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19G
T1JfSEVBREVSKFBBTCwgUGFzc0tpdCkKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQYXNzS2l0LCBQS0NvbnRhY3QpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBh
c3NLaXQsIFBLUGFzc0xpYnJhcnkpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBh
c3NLaXQsIFBLUGF5bWVudCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tp
dCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKQorU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRNZXRob2QpCitTT0ZUX0xJTktfQ0xB
U1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbikKK1NP
RlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdCkK
K1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U3VtbWFy
eUl0ZW0pCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLU2hpcHBp
bmdNZXRob2QpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwg
UEtEcmF3QXBwbGVQYXlCdXR0b24sIHZvaWQsIChDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0
IGRyYXdSZWN0LCBDR0Zsb2F0IHNjYWxlLCBQS1BheW1lbnRCdXR0b25UeXBlIHR5cGUsIFBLUGF5
bWVudEJ1dHRvblN0eWxlIHN0eWxlLCBOU1N0cmluZyAqbGFuZ3VhZ2VDb2RlKSwgKGNvbnRleHQs
IGRyYXdSZWN0LCBzY2FsZSwgdHlwZSwgc3R5bGUsIGxhbmd1YWdlQ29kZSkpCisKKyNpZiBQTEFU
Rk9STShNQUMpCitTT0ZUX0xJTktfUE9JTlRFUl9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtF
eHRlbnNpb25QYXltZW50QXV0aG9yaXphdGlvblVJRXh0ZW5zaW9uUG9pbnROYW1lLCBOU1N0cmlu
ZyAqKQorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKQorU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0KQor
U09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0
UGF5bWVudE1ldGhvZFVwZGF0ZSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSkKK1NPRlRfTElOS19D
TEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0
aG9kVXBkYXRlKQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFBhc3NLaXQs
IFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiwgdm9pZCwg
KE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBQS0Nhbk1ha2VQYXltZW50
c0NvbXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBkb21haW4sIGNvbXBsZXRpb24p
KQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQ
YXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlvbiwg
dm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBOU1N0cmluZyAq
c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBQS0Nhbk1ha2VQYXltZW50c0Nv
bXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBkb21haW4sIHNvdXJjZUFwcGxpY2F0
aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgY29tcGxldGlvbikpCisKK1NPRlRfTElOS19QT0lOVEVS
X0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZEVtYWlsQWRkcmVzcywgTlNT
dHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0Nv
bnRhY3RGaWVsZE5hbWUsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUl9GT1JfSEVBREVS
KFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQaG9uZU51bWJlciwgTlNTdHJpbmcgKikKK1NP
RlRfTElOS19QT0lOVEVSX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBo
b25ldGljTmFtZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9IRUFERVIoUEFM
LCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MsIE5TU3RyaW5nICopCitTT0ZU
X0xJTktfUE9JTlRFUl9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JDb250
YWN0RmllbGRVc2VySW5mb0tleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9I
RUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvckRvbWFpbiwgTlNTdHJpbmcgKikKK1NP
RlRfTElOS19QT0lOVEVSX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvclBv
c3RhbEFkZHJlc3NVc2VySW5mb0tleSwgTlNTdHJpbmcgKikKKyNlbmRpZgorCisjZW5kaWYgLy8g
VVNFKFBBU1NLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNv
ZnRMaW5rLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhM2IxMmQ3NmEwMmNmYmZhOTlhZWI3NGYxN2VjZWM3NWZk
NWYwOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5tbQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisKKyNpZiBVU0UoUEFTU0tJVCkKKworI2ltcG9ydCAiUGFzc0tpdFNQSS5oIgor
I2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpZiBQTEFURk9STShNQUMpCitTT0ZUX0xJ
TktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQs
IFBBTF9FWFBPUlQpCisjZWxzZQorU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEFMX0VYUE9SVCkKKyNlbmRpZgorCitTT0ZUX0xJTktfQ0xB
U1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdCwgUEFMX0VY
UE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tp
dCwgUEtQYXNzTGlicmFyeSwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50LCBQQUxfRVhQT1JUKQorU09GVF9M
SU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1Nf
Rk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudE1lcmNoYW50U2Vz
c2lvbiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50TWV0aG9kLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0
LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFM
LCBQYXNzS2l0LCBQS1BheW1lbnRTdW1tYXJ5SXRlbSwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19D
TEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtTaGlwcGluZ01ldGhv
ZCwgUEFMX0VYUE9SVCkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBQYXNz
S2l0LCBQS0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29udGV4dFJlZiBjb250ZXh0LCBD
R1JlY3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVudEJ1dHRvblR5cGUgdHlwZSwg
UEtQYXltZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICpsYW5ndWFnZUNvZGUpLCAoY29u
dGV4dCwgZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFuZ3VhZ2VDb2RlKSkKKworI2lm
IFBMQVRGT1JNKE1BQykKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQo
UEFMLCBQYXNzS2l0LCBQS0V4dGVuc2lvblBheW1lbnRBdXRob3JpemF0aW9uVUlFeHRlbnNpb25Q
b2ludE5hbWUsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCisjZW5kaWYKKworI2lmIFBMQVRGT1JN
KElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEzMDApCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IFBhc3NLaXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQsIFBBTF9FWFBPUlQpCitTT0ZU
X0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVu
dFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNT
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0U2hp
cHBpbmdDb250YWN0VXBkYXRlLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRo
b2RVcGRhdGUsIFBBTF9FWFBPUlQpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVu
dGlmaWVyQW5kRG9tYWluLCB2b2lkLCAoTlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpk
b21haW4sIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbiBjb21wbGV0aW9uKSwgKGlkZW50aWZp
ZXIsIGRvbWFpbiwgY29tcGxldGlvbiksIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0
aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uLCB2b2lkLCAoTlNT
dHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIE5TU3RyaW5nICpzb3VyY2VBcHBs
aWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbiBj
b21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgc291cmNlQXBwbGljYXRpb25TZWNvbmRh
cnlJZGVudGlmaWVyLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKKworU09GVF9MSU5LX1BPSU5U
RVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkRW1h
aWxBZGRyZXNzLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX1BPSU5URVJfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkTmFtZSwgTlNT
dHJpbmcgKiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBob25lTnVtYmVyLCBOU1N0cmluZyAq
LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lLCBOU1N0cmluZyAqLCBQQUxf
RVhQT1JUKQorU09GVF9MSU5LX1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBh
c3NLaXQsIFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcywgTlNTdHJpbmcgKiwgUEFMX0VYUE9S
VCkKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0
LCBQS1BheW1lbnRFcnJvckNvbnRhY3RGaWVsZFVzZXJJbmZvS2V5LCBOU1N0cmluZyAqLCBQQUxf
RVhQT1JUKQorU09GVF9MSU5LX1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBh
c3NLaXQsIFBLUGF5bWVudEVycm9yRG9tYWluLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQorU09G
VF9MSU5LX1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5
bWVudEVycm9yUG9zdGFsQWRkcmVzc1VzZXJJbmZvS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JU
KQorI2VuZGlmCisKKyNlbmRpZiAvLyBVU0UoUEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaAppbmRleCBiNWU1OTMwMzI3MWZiNTgxYWIzNDlh
Yjk1Zjc0MzIwOTE0OGFhMjU4Li43N2NiNmUxZDcwM2U3YmM5NWIzMzMyZDA3ZTU1ZTcxNDgzM2Yx
ZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0
U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5o
CkBAIC0zOSw4ICszOSw4IEBACiAKICNlbGlmIFBMQVRGT1JNKE1BQykKIAorI2ltcG9ydCA8QXBw
S2l0L0FwcEtpdC5oPgogI2ltcG9ydCA8Q29udGFjdHMvQ29udGFjdHMuaD4KLSNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCkBAIC0y
MjUsNyArMjI1LDcgQEAgdHlwZWRlZiBOU1N0cmluZyAqIFBLUGF5bWVudE5ldHdvcmsgTlNfRVhU
RU5TSUJMRV9TVFJJTkdfRU5VTTsKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKLSNlbmRpZgor
I2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIApAQCAt
MjYxLDcgKzI2MSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBQS1BheW1lbnRSZXF1
ZXN0QVBJVHlwZSkgewogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAotI2VuZGlmCisjZW5kaWYg
Ly8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShB
UFBMRV9JTlRFUk5BTF9TREspCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBQS1BheW1lbnRC
dXR0b25TdHlsZSkgewpAQCAtMzI0LDQgKzMyNCw2IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lO
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU1N0cmluZyAqQ1REYXRhQ29ubmVjdGlv
blNlcnZpY2VUeXBlOwogQGVuZAogCit0eXBlZGVmIHZvaWQgKF5QS0Nhbk1ha2VQYXltZW50c0Nv
bXBsZXRpb24pKEJPT0wgaXNWYWxpZCwgTlNFcnJvciAqKTsKKwogTlNfQVNTVU1FX05PTk5VTExf
RU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBhMTQ4MGZiYTZmOTQwYTZiNjg3ZDNjM2U5
MGYwYTUxZjEzMWY3NzFiLi42NWViYzg0MzY2MjAxZDU4OWY3NGE1YTVmZjU0OTgxM2JlZmJhNzA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTU4OCw3ICs1ODgsNyBAQCBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5jcHAKIAogICAgIE1v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCiAgICAgTW9kdWxlcy9hcHBsZXBh
eS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tCi0gICAgTW9kdWxlcy9hcHBsZXBheS9jb2Nv
YS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0gQG5vLXVuaWZ5CisgICAgTW9kdWxlcy9h
cHBsZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0KICAgICBNb2R1bGVz
L2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQogCiAgICAgTW9kdWxlcy9hcHBs
ZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMyMzM0
YzYwNGU3M2I4NjA4MjViODkwNTdiYzlhODk0MTk5ZWIxMzUuLjRlNDcwMjcwYzIwMzUzYzAzYTBh
NjZjODA5ZGI1MzBkZTQ5NjM3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ0NzEsNyArNDQ3MSw2IEBACiAJCURFNUY4NjBE
MUZBMjM4NkIwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDc4LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4NUQyMUZBMjM4NTYwMDZEQjYzQSAv
KiBVbmlmaWVkU291cmNlNDc4LmNwcCAqLzsgfTsKIAkJREU1Rjg2MEUxRkEyMzg2QjAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2U0NzkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gREU1Rjg1Q0YxRkEyMzg1MDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0
NzkuY3BwICovOyB9OwogCQlERTVGODYwRjFGQTIzODZCMDA2REI2M0EgLyogVW5pZmllZFNvdXJj
ZTQ4MC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBE
RTVGODVEMzFGQTIzODU5MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ4MC5jcHAgKi87IH07Ci0J
CURFNUY4NjEwMUZBMjM4RDkwMDZEQjYzQSAvKiBQYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2Eu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQURBNEEx
QjFEMjJGMkMwMDA1QTlBMTUgLyogUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tICovOyB9
OwogCQlERTVGODYxMTFGQTIzOURBMDA2REI2M0EgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRl
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Uy
OUU1QzE2N0E4QTE5MDA1ODZEM0QgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAgKi87
IH07CiAJCURFNUY4NjEyMUZBMjM5RTcwMDZEQjYzQSAvKiBKU0dDT2JzZXJ2YXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTRFQUUxQ0Y2
NjU0QTAwNDcyM0M0IC8qIEpTR0NPYnNlcnZhdGlvbi5jcHAgKi87IH07CiAJCURFNUY4NjFEMUZB
MjgxNUIwMDZEQjYzQSAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBNDc4QTdFMTZDRDcw
QzMwMDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSAqLzsgfTsK
QEAgLTMyMDg1LDcgKzMyMDg0LDcgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7Ci0JCQlzaGVsbFNjcmlw
dCA9ICJpZiBbIFwiJHtBQ1RJT059XCIgPSBcImluc3RhbGxoZHJzXCIgLW8gXCIke0FDVElPTn1c
IiA9IFwiaW5zdGFsbGFwaVwiIF07IHRoZW5cbiAgICBleGl0IDA7XG5maVxuXG5pZiBbIC1mIC4u
Ly4uL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLXdlYWstdnRhYmxlcy1hbmQtZXh0ZXJuYWxzIF07
IHRoZW5cbiAgICAuLi8uLi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci13ZWFrLXZ0YWJsZXMtYW5k
LWV4dGVybmFscyB8fCBleGl0ICQ/XG5maSI7CisJCQlzaGVsbFNjcmlwdCA9ICJpZiBbIFwiJHtB
Q1RJT059XCIgPSBcImluc3RhbGxoZHJzXCIgLW8gXCIke0FDVElPTn1cIiA9IFwiaW5zdGFsbGFw
aVwiIF07IHRoZW5cbiAgICBleGl0IDA7XG5maVxuXG5pZiBbIC1mIC4uLy4uL1Rvb2xzL1Njcmlw
dHMvY2hlY2stZm9yLXdlYWstdnRhYmxlcy1hbmQtZXh0ZXJuYWxzIF07IHRoZW5cbiAgICAuLi8u
Li9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci13ZWFrLXZ0YWJsZXMtYW5kLWV4dGVybmFscyB8fCBl
eGl0ICQ/XG5maVxuIjsKIAkJfTsKIAkJNUQyRjdEQTAwQzY4NzlDNjAwQjVCNzJCIC8qIFVwZGF0
ZSBJbmZvLnBsaXN0IHdpdGggdmVyc2lvbiBpbmZvcm1hdGlvbiAqLyA9IHsKIAkJCWlzYSA9IFBC
WFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKQEAgLTMyMzQ1LDcgKzMyMzQ0LDYgQEAKIAkJCQlBMzFD
NEU0RDE2RTAyQUE2MDAyRjc5NTcgLyogT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzMTA3OENDNzE4ODBBQUI1MDA4MDk5REMgLyogT0VTVGV4dHVyZUhhbGZGbG9h
dExpbmVhci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3N0ExN0E3MTEyRjI4MTgyMDA0RTAyRjYg
LyogT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg2MTAx
RkEyMzhEOTAwNkRCNjNBIC8qIFBheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUNFQTI4NDY2MjE0MUU4NDkwMEU0MDdFOCAvKiBQbGF0Zm9ybUV2ZW50RmFj
dG9yeUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUFBMTJERjQ5MTc0M0RGODMwMDREQUZERiAv
KiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RB
MjlBMzAxQ0JGNzRENDAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1t
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNv
Y29hLm1tCmluZGV4IGI0YWFmNjQyMWQyYjZkM2M1YjMwZGVhYTc0ZTNlNzI2MzI5ZDJhY2QuLmNi
NjEwODI5MmE0ODk4NmMxOWM3OGIxMTQ0MGExNTc3MmEwZWE5OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCkBAIC0zMiwxNiArMzIsNyBAQAogCiAj
aWYgRU5BQkxFKEFQUExFX1BBWSkKIAotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
Lmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLVNP
RlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhQYXNzS2l0KTsKLSNlbHNlCi1TT0ZUX0xJTktfRlJB
TUVXT1JLKFBhc3NLaXQpOwotI2VuZGlmCi0KLVNPRlRfTElOS19NQVlfRkFJTChQYXNzS2l0LCBQ
S0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3Qg
ZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVudEJ1dHRvblR5cGUgdHlwZSwgUEtQYXlt
ZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICpsYW5ndWFnZUNvZGUpLCAoY29udGV4dCwg
ZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFuZ3VhZ2VDb2RlKSk7CisjaW1wb3J0IDxw
YWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZ
KQogCkBAIC0xMDgsOSArOTksNiBAQCBzdGF0aWMgUEtQYXltZW50QnV0dG9uVHlwZSB0b1BLUGF5
bWVudEJ1dHRvblR5cGUoQXBwbGVQYXlCdXR0b25UeXBlIHR5cGUpCiAKIGJvb2wgUmVuZGVyVGhl
bWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVy
LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcGFpbnRSZWN0KQog
ewotICAgIGlmICghY2FuTG9hZFBLRHJhd0FwcGxlUGF5QnV0dG9uKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWlu
dEluZm8uY29udGV4dCgpKTsKIAogICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U2hvdWxkU21v
b3RoRm9udHModHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDM1Zjk4YjExYjdmMWE5MjEyOWFl
ZGI0MjEyMmFiMGI4NTkwNzkyMjUuLmQwZTM3NDUyMDZkZDk4YWI3NGI2ZjRkMTU1Yjg4Mjc2ZGE1
ODZlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0zMCwyMCArMzAsOCBAQAogCiAjaW1wb3J0ICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9QYXNzS2l0U1BJLmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotI2lmIFBMQVRG
T1JNKE1BQykKLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhQYXNzS2l0KQotI2Vsc2UKLVNP
RlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkKLSNlbmRpZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFz
c0tpdCwgUEtDb250YWN0KTsKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnQpOwot
U09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudE1ldGhvZCk7Ci1TT0ZUX0xJTktfQ0xB
U1MoUGFzc0tpdCwgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uKTsKIAogbmFtZXNwYWNlIElQQyB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTY3LDcgKzU1LDcgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29y
ZTo6UGF5bWVudCYKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0
V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQq
PihkYXRhUmVmZXJlbmNlLmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVl
V2hlbkRvbmU6Tk9dKTsKICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJv
bURhdGEoZGF0YS5nZXQoKSk7CiAgICAgQHRyeSB7Ci0gICAgICAgIFBLUGF5bWVudCAqcGtQYXlt
ZW50ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRQS1BheW1lbnRDbGFzcygp
IGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOworICAgICAgICBQS1BheW1lbnQg
KnBrUGF5bWVudCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6UEFMOjpnZXRfUGFz
c0tpdF9QS1BheW1lbnRDbGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXld
OwogICAgICAgICBwYXltZW50ID0gUGF5bWVudChwa1BheW1lbnQpOwogICAgIH0gQGNhdGNoIChO
U0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRl
Y29kZSBQS1BheW1lbnQ6ICVAIiwgZXhjZXB0aW9uKTsKQEAgLTExOCw3ICsxMDYsNyBAQCBib29s
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgV2ViQ29yZTo6UAogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxs
b2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29u
c3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6
ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwogICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJj
aGl2ZXJGcm9tRGF0YShkYXRhLmdldCgpKTsKICAgICBAdHJ5IHsKLSAgICAgICAgUEtDb250YWN0
ICpwa0NvbnRhY3QgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldFBLQ29udGFj
dENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgICAgIFBL
Q29udGFjdCAqcGtDb250YWN0ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6
OmdldF9QYXNzS2l0X1BLQ29udGFjdENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9i
amVjdEtleV07CiAgICAgICAgIHBheW1lbnRDb250YWN0ID0gUGF5bWVudENvbnRhY3QocGtDb250
YWN0KTsKICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewogICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgUEtDb250YWN0OiAlQCIsIGV4Y2VwdGlvbik7CkBA
IC0xNzUsNyArMTYzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJj
aGFudFNlc3Npb24+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2UKICAgICBhdXRvIGRhdGEg
PSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8
dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSkpIGxl
bmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsKICAgICBhdXRvIHVu
YXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoZGF0YS5nZXQoKSk7CiAgICAgQHRy
eSB7Ci0gICAgICAgIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbiAqcGtQYXltZW50TWVyY2hhbnRT
ZXNzaW9uID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRQS1BheW1lbnRNZXJj
aGFudFNlc3Npb25DbGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwor
ICAgICAgICBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKnBrUGF5bWVudE1lcmNoYW50U2Vzc2lv
biA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6UEFMOjpnZXRfUGFzc0tpdF9QS1Bh
eW1lbnRNZXJjaGFudFNlc3Npb25DbGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmpl
Y3RLZXldOwogICAgICAgICBwYXltZW50TWVyY2hhbnRTZXNzaW9uID0gUGF5bWVudE1lcmNoYW50
U2Vzc2lvbihwa1BheW1lbnRNZXJjaGFudFNlc3Npb24pOwogICAgIH0gQGNhdGNoIChOU0V4Y2Vw
dGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBQ
S1BheW1lbnRNZXJjaGFudFNlc3Npb246ICVAIiwgZXhjZXB0aW9uKTsKQEAgLTIwNSw3ICsxOTMs
NyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQYQogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tO
U0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGlj
X2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZl
cmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwogICAgIGF1dG8gdW5hcmNoaXZlciA9IHNl
Y3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRhLmdldCgpKTsKICAgICBAdHJ5IHsKLSAgICAgICAg
UEtQYXltZW50TWV0aG9kICpwa1BheW1lbnRNZXRob2QgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmpl
Y3RPZkNsYXNzOmdldFBLUGF5bWVudE1ldGhvZENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZl
Um9vdE9iamVjdEtleV07CisgICAgICAgIFBLUGF5bWVudE1ldGhvZCAqcGtQYXltZW50TWV0aG9k
ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6OmdldF9QYXNzS2l0X1BLUGF5
bWVudE1ldGhvZENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAg
ICAgICAgIHBheW1lbnRNZXRob2QgPSBQYXltZW50TWV0aG9kKHBrUGF5bWVudE1ldGhvZCk7CiAg
ICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gZGVjb2RlIFBLUGF5bWVudDogJUAiLCBleGNlcHRpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IDA4ZGJkN2I2NTZkNDUwNGJmZTcwYWNlOWE0ZjllMTBmYzI5MDg0NmIu
LmU4OGM1ZmU2YWNhMWI5NDFmYzA5MGFhYTQ2ZTE5YzhiODk4NGNiODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKQEAgLTI5NCw5ICsyOTQsOSBAQCBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0K
IAogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EubW0KIAotVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eUlPUy5tbSBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlJT1MubW0KIAotVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eU1hYy5tbSBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KIAogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9u
L2NvY29hL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHlDb2NvYS5tbQogVUlQcm9jZXNzL0F1
dGhlbnRpY2F0aW9uL2NvY29hL1NlY0tleVByb3h5U3RvcmUubW0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCmluZGV4IGRiMmI2YzhiZDIwZmNjZjAwOTQ5
NDIwNWQyMTFkY2M0MTkyMzgxNzguLjgxMGNmYzEwMjI3ZTBhY2E0MzJmMzM5ZjUwZTE1M2RkNDQ5
YzliNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29h
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5t
bQpAQCAtMzMsMjUgKzMzLDExIEBACiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+Cisj
aW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQ
dHIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcu
aD4KIAotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19PUFRJ
T05BTChQYXNzS2l0KQotI2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkKLSNlbmRp
ZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXNzTGlicmFyeSk7Ci1TT0ZUX0xJTktf
Q0xBU1MoUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLVNP
RlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24pOwotU09GVF9M
SU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudFJlcXVlc3QpOwotU09GVF9MSU5LX0NMQVNTKFBh
c3NLaXQsIFBLUGF5bWVudFN1bW1hcnlJdGVtKTsKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQ
S1NoaXBwaW5nTWV0aG9kKTsKLQotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorI2lmIFBMQVRGT1JN
KElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VE
ID49IDEwMTMwMCkKIFNPRlRfTElOS19GUkFNRVdPUksoQ29udGFjdHMpCiBTT0ZUX0xJTktfQ09O
U1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N0cmVldEtleSwgTlNTdHJpbmcgKik7CiBT
T0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N1YkxvY2FsaXR5S2V5
LCBOU1N0cmluZyAqKTsKQEAgLTYxLDMwICs0Nyw4IEBAIFNPRlRfTElOS19DT05TVEFOVChDb250
YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3RhdGVLZXksIE5TU3RyaW5nICopOwogU09GVF9MSU5LX0NP
TlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NQb3N0YWxDb2RlS2V5LCBOU1N0cmluZyAq
KTsKIFNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzQ291bnRyeUtl
eSwgTlNTdHJpbmcgKik7CiBTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRk
cmVzc0lTT0NvdW50cnlDb2RlS2V5LCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DTEFTUyhQYXNz
S2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0KQotU09GVF9MSU5LX0NMQVNTKFBhc3NL
aXQsIFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlKQotU09GVF9MSU5LX0NMQVNT
KFBhc3NLaXQsIFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUpCi1TT0ZUX0xJ
TktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlKQot
U09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLUGF5bWVudEVycm9yRG9tYWluLCBOU1N0cmlu
ZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBvc3RhbEFk
ZHJlc3MsIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLQ29udGFj
dEZpZWxkRW1haWxBZGRyZXNzLCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChQYXNz
S2l0LCBQS0NvbnRhY3RGaWVsZFBob25lTnVtYmVyLCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19D
T05TVEFOVChQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZE5hbWUsIE5TU3RyaW5nICopOwotU09GVF9M
SU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lLCBOU1N0cmlu
ZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChQYXNzS2l0LCBQS1BheW1lbnRFcnJvckNvbnRhY3RG
aWVsZFVzZXJJbmZvS2V5LCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChQYXNzS2l0
LCBQS1BheW1lbnRFcnJvclBvc3RhbEFkZHJlc3NVc2VySW5mb0tleSwgTlNTdHJpbmcgKik7CiAj
ZW5kaWYKIAotdHlwZWRlZiB2b2lkICheUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uKShCT09M
IGlzVmFsaWQsIE5TRXJyb3IgKmVycm9yKTsKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKLWV4dGVy
biAiQyIgdm9pZCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5B
bmRTb3VyY2VBcHBsaWNhdGlvbihOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFp
biwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgUEtDYW5N
YWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pOwotU09GVF9MSU5LX0ZVTkNUSU9OX01B
WV9GQUlMX0ZPUl9TT1VSQ0UoV2ViS2l0LCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhN
ZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlvbiwgdm9pZCwgKE5TU3Ry
aW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBOU1N0cmluZyAqc291cmNlQXBwbGlj
YXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBQS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29t
cGxldGlvbiksIChpZGVudGlmaWVyLCBkb21haW4sIHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllciwgY29tcGxldGlvbikpOwotI2Vsc2UKLWV4dGVybiAiQyIgdm9pZCBQS0Nhbk1h
a2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4oTlNTdHJpbmcgKmlkZW50
aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbiBjb21w
bGV0aW9uKTsKLVNPRlRfTElOS19GVU5DVElPTl9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYktpdCwg
UGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWlu
LCB2b2lkLCAoTlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIFBLQ2FuTWFr
ZVBheW1lbnRzQ29tcGxldGlvbiBjb21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgY29t
cGxldGlvbikpOwotI2VuZGlmCi0KLQogQGltcGxlbWVudGF0aW9uIFdLUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlCiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBh
eW1lbnRDb29yZGluYXRvclByb3h5OihXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Jil3ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eQpAQCAtMTAyLDcgKzY2LDcgQEAgLSAodm9pZClp
bnZhbGlkYXRlCiAgICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5ID0gbnVsbHB0cjsKICAg
ICBpZiAoX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbikgewogI2lmIChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEw
MDAwKQotICAgICAgICBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKGFkb3B0TlMoW2FsbG9j
UEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6UEtQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF1dKS5nZXQoKSk7Cisg
ICAgICAgIF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24oYWRvcHROUyhbUEFMOjphbGxvY1BL
UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOlBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIGVycm9yczpAWyBdXSkuZ2V0KCkpOwogI2Vs
c2UKICAgICAgICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzRmFpbHVyZSk7CiAjZW5kaWYKQEAgLTExOSw3ICs4Myw3IEBAIC0gKHZvaWQp
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyCiAgICAgQVNTRVJUKCFfc2Vzc2lvbkJsb2NrKTsKICAgICBfc2Vzc2lv
bkJsb2NrID0gc2Vzc2lvbkJsb2NrOwogCi0gICAgW2dldFBLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckNsYXNzKCkgcGF5bWVudFNlcnZpY2VzTWVyY2hhbnRVUkw6XihOU1VSTCAq
bWVyY2hhbnRVUkwsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgW1BBTDo6Z2V0X1Bhc3NLaXRfUEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSBwYXltZW50U2VydmljZXNN
ZXJjaGFudFVSTDpeKE5TVVJMICptZXJjaGFudFVSTCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAg
ICAgaWYgKGVycm9yKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJQS0Nhbk1ha2VQYXltZW50c1dp
dGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4gZXJyb3IgJUAiLCBlcnJvcik7CiAKQEAgLTE1
NSw3ICsxMTksNyBAQCAtICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6
KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcgogewogI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwKQogICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAg
IGNvbXBsZXRpb24oYWRvcHROUyhbYWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5z
dGFuY2UoKSBpbml0V2l0aFN0YXR1czpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVy
ZSBlcnJvcnM6QFsgXV0pLmdldCgpKTsKKyAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFtQQUw6
OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0
dXM6UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF1dKS5nZXQo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE3MCw3ICsxMzQsNyBAQCAtICh2b2lk
KXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlcgogewogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIGlmICghX3dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oYWRvcHROUyhb
YWxsb2NQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdp
dGhQYXltZW50U3VtbWFyeUl0ZW1zOkBbIF1dKS5nZXQoKSk7CisgICAgICAgIGNvbXBsZXRpb24o
YWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5z
dGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTgzLDcgKzE0Nyw3IEBAIC0gKHZvaWQpcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyCiAtICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hp
cHBpbmdNZXRob2Q6KFBLU2hpcHBpbmdNZXRob2QgKilzaGlwcGluZ01ldGhvZCBoYW5kbGVyOih2
b2lkICheKShQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUgKnVwZGF0ZSkpY29t
cGxldGlvbiB7CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAgICAgaWYgKCFfd2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5
bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50
U3VtbWFyeUl0ZW1zOkBbIF1dKS5nZXQoKSk7CisgICAgICAgIGNvbXBsZXRpb24oYWRvcHROUyhb
UEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkg
aW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOkBbIF1dKS5nZXQoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTE5Nyw3ICsxNjEsNyBAQCAtICh2b2lkKXBheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcgog
ewogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1
ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczpAWyBdIHBh
eW1lbnRTdW1tYXJ5SXRlbXM6QFsgXSBzaGlwcGluZ01ldGhvZHM6QFsgXV0pLmdldCgpKTsKKyAg
ICAgICAgY29tcGxldGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBw
aW5nQ29udGFjdFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6QFsgXSBwYXltZW50U3Vt
bWFyeUl0ZW1zOkBbIF0gc2hpcHBpbmdNZXRob2RzOkBbIF1dKS5nZXQoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTI5MywzMiArMjU3LDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBib29sIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50
cygpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICghUGFzc0tpdExpYnJhcnkoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KLSAgICByZXR1cm4gW2dldFBLUGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckNsYXNzKCkgY2FuTWFrZVBheW1lbnRzXTsKKyAgICBy
ZXR1cm4gW1BBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyQ2xhc3MoKSBjYW5NYWtlUGF5bWVudHNdOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0
cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6
RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0jaWYgUExBVEZP
Uk0oTUFDKQotICAgIGlmICghUGFzc0tpdExpYnJhcnkoKSkgewotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQogI2lmIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAw
KSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwKQotICAgIGlmICghY2FuTG9hZF9QYXNzS2l0X1BLQ2FuTWFrZVBheW1l
bnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKCkpIHsK
LSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc29m
dExpbmtfUGFzc0tpdF9QS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21h
aW5BbmRTb3VyY2VBcHBsaWNhdGlvbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1f
d2ViUGFnZVByb3h5LnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5zb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKSwgQmxvY2tQdHI8dm9pZCAoQk9PTCwg
TlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oQk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSBt
dXRhYmxlIHsKKyAgICBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21h
aW5BbmRTb3VyY2VBcHBsaWNhdGlvbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1f
d2ViUGFnZVByb3h5LnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5zb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKSwgQmxvY2tQdHI8dm9pZChCT09MLCBO
U0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShCT09MIGNhbk1ha2VQYXltZW50cywgTlNFcnJvciAqZXJyb3IpIG11
dGFibGUgewogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBLQ2Fu
TWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIsIGVy
cm9yKTsKIApAQCAtMzI3LDE0ICsyNzIsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cgogICAg
ICAgICB9KTsKICAgICB9KS5nZXQoKSk7CiAjZWxzZQotICAgIGlmICghY2FuTG9hZF9QYXNzS2l0
X1BLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbigpKSB7Ci0g
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZmFsc2UpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNvZnRM
aW5rX1Bhc3NLaXRfUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9t
YWluKG1lcmNoYW50SWRlbnRpZmllciwgZG9tYWluTmFtZSwgQmxvY2tQdHI8dm9pZCAoQk9PTCwg
TlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oQk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSBt
dXRhYmxlIHsKKyAgICBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmRE
b21haW4obWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBCbG9ja1B0cjx2b2lkKEJPT0ws
IE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKEJPT0wgY2FuTWFrZVBheW1lbnRzLCBOU0Vycm9yICplcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIExPR19FUlJPUigiUEtD
YW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWluIGVycm9yICVAIiwg
ZXJyb3IpOwogCkBAIC0zNDcsMTQgKzI4NSw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyCiAK
IHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtT3BlblBheW1lbnRTZXR1
cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5O
YW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
I2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIVBhc3NLaXRMaWJyYXJ5KCkpIHsKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlm
Ci0KLSAgICBhdXRvIHBhc3NMaWJyYXJ5ID0gYWRvcHROUyhbYWxsb2NQS1Bhc3NMaWJyYXJ5SW5z
dGFuY2UoKSBpbml0XSk7CisgICAgYXV0byBwYXNzTGlicmFyeSA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NQS1Bhc3NMaWJyYXJ5SW5zdGFuY2UoKSBpbml0XSk7CiAgICAgW3Bhc3NMaWJyYXJ5IG9wZW5Q
YXltZW50U2V0dXBGb3JNZXJjaGFudElkZW50aWZpZXI6bWVyY2hhbnRJZGVudGlmaWVyIGRvbWFp
bjpkb21haW5OYW1lIGNvbXBsZXRpb246QmxvY2tQdHI8dm9pZCAoQk9PTCk+Ojpmcm9tQ2FsbGFi
bGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCByZXN1bHRdIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CkBAIC0zNjgsMTUgKzI5OSwxNSBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TU2V0PiB0b1BLQ29udGFjdEZpZWxkcyhjb25zdCBXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UgogICAgIFZlY3RvcjxOU1N0cmluZyAqPiByZXN1bHQ7
CiAKICAgICBpZiAoY29udGFjdEZpZWxkcy5wb3N0YWxBZGRyZXNzKQotICAgICAgICByZXN1bHQu
YXBwZW5kKGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpKTsKKyAgICAgICAgcmVzdWx0
LmFwcGVuZChQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpKTsK
ICAgICBpZiAoY29udGFjdEZpZWxkcy5waG9uZSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZChnZXRQ
S0NvbnRhY3RGaWVsZFBob25lTnVtYmVyKCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKFBBTDo6
Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQaG9uZU51bWJlcigpKTsKICAgICBpZiAoY29udGFj
dEZpZWxkcy5lbWFpbCkKLSAgICAgICAgcmVzdWx0LmFwcGVuZChnZXRQS0NvbnRhY3RGaWVsZEVt
YWlsQWRkcmVzcygpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChQQUw6OmdldF9QYXNzS2l0X1BL
Q29udGFjdEZpZWxkRW1haWxBZGRyZXNzKCkpOwogICAgIGlmIChjb250YWN0RmllbGRzLm5hbWUp
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0UEtDb250YWN0RmllbGROYW1lKCkpOworICAgICAg
ICByZXN1bHQuYXBwZW5kKFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGROYW1lKCkpOwog
ICAgIGlmIChjb250YWN0RmllbGRzLnBob25ldGljTmFtZSkKLSAgICAgICAgcmVzdWx0LmFwcGVu
ZChnZXRQS0NvbnRhY3RGaWVsZFBob25ldGljTmFtZSgpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZChQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lKCkpOwogCiAgICAg
cmV0dXJuIGFkb3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhPYmplY3RzOnJlc3VsdC5kYXRh
KCkgY291bnQ6cmVzdWx0LnNpemUoKV0pOwogfQpAQCAtNDE4LDcgKzM0OSw3IEBAIHN0YXRpYyBO
U0RlY2ltYWxOdW1iZXIgKnRvRGVjaW1hbE51bWJlcihjb25zdCBTdHJpbmcmIGFtb3VudCkKIAog
c3RhdGljIFJldGFpblB0cjxQS1BheW1lbnRTdW1tYXJ5SXRlbT4gdG9QS1BheW1lbnRTdW1tYXJ5
SXRlbShjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0
ZW0mIGxpbmVJdGVtKQogewotICAgIHJldHVybiBbZ2V0UEtQYXltZW50U3VtbWFyeUl0ZW1DbGFz
cygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOmxpbmVJdGVtLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxO
dW1iZXIobGluZUl0ZW0uYW1vdW50KSB0eXBlOnRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKGxp
bmVJdGVtLnR5cGUpXTsKKyAgICByZXR1cm4gW1BBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50U3Vt
bWFyeUl0ZW1DbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOmxpbmVJdGVtLmxhYmVsIGFtb3Vu
dDp0b0RlY2ltYWxOdW1iZXIobGluZUl0ZW0uYW1vdW50KSB0eXBlOnRvUEtQYXltZW50U3VtbWFy
eUl0ZW1UeXBlKGxpbmVJdGVtLnR5cGUpXTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxOU0FycmF5
PiB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyhjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXMmIHRvdGFsQW5kTGluZUl0ZW1zKQpAQCAt
NDc3LDcgKzQwOCw3IEBAIHN0YXRpYyBQS1NoaXBwaW5nVHlwZSB0b1BLU2hpcHBpbmdUeXBlKFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTCiAKIHN0YXRpYyBSZXRhaW5Q
dHI8UEtTaGlwcGluZ01ldGhvZD4gdG9QS1NoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRo
b2QpCiB7Ci0gICAgUmV0YWluUHRyPFBLU2hpcHBpbmdNZXRob2Q+IHJlc3VsdCA9IFtnZXRQS1No
aXBwaW5nTWV0aG9kQ2xhc3MoKSBzdW1tYXJ5SXRlbVdpdGhMYWJlbDpzaGlwcGluZ01ldGhvZC5s
YWJlbCBhbW91bnQ6dG9EZWNpbWFsTnVtYmVyKHNoaXBwaW5nTWV0aG9kLmFtb3VudCldOworICAg
IFJldGFpblB0cjxQS1NoaXBwaW5nTWV0aG9kPiByZXN1bHQgPSBbUEFMOjpnZXRfUGFzc0tpdF9Q
S1NoaXBwaW5nTWV0aG9kQ2xhc3MoKSBzdW1tYXJ5SXRlbVdpdGhMYWJlbDpzaGlwcGluZ01ldGhv
ZC5sYWJlbCBhbW91bnQ6dG9EZWNpbWFsTnVtYmVyKHNoaXBwaW5nTWV0aG9kLmFtb3VudCldOwog
ICAgIFtyZXN1bHQgc2V0SWRlbnRpZmllcjpzaGlwcGluZ01ldGhvZC5pZGVudGlmaWVyXTsKICAg
ICBbcmVzdWx0IHNldERldGFpbDpzaGlwcGluZ01ldGhvZC5kZXRhaWxdOwogCkBAIC01MTIsNyAr
NDQzLDcgQEAgc3RhdGljIFBLUGF5bWVudFJlcXVlc3RBUElUeXBlIHRvQVBJVHlwZShXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDoKIAogUmV0YWluUHRyPFBLUGF5bWVudFJl
cXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgY29u
c3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVS
TD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3QmIHBheW1lbnRSZXF1ZXN0KQogewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbYWxs
b2NQS1BheW1lbnRSZXF1ZXN0SW5zdGFuY2UoKSBpbml0XSk7CisgICAgYXV0byByZXN1bHQgPSBh
ZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdEluc3RhbmNlKCkgaW5pdF0pOwogCiAg
ICAgW3Jlc3VsdCBzZXRPcmlnaW5hdGluZ1VSTDpvcmlnaW5hdGluZ1VSTF07CiAKQEAgLTYzMiw3
MiArNTYzLDcyIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gdG9OU0Vycm9yKGNvbnN0IFdl
YkNvcmU6OlBheW1lbnRFcnJvciYgZXJyb3IpCiAKICAgICAgICAgc3dpdGNoICgqZXJyb3IuY29u
dGFjdEZpZWxkKSB7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0
RmllbGQ6OlBob25lTnVtYmVyOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0Nv
bnRhY3RGaWVsZFBob25lTnVtYmVyKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBB
TDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQaG9uZU51bWJlcigpOwogICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVs
ZDo6RW1haWxBZGRyZXNzOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0NvbnRh
Y3RGaWVsZEVtYWlsQWRkcmVzcygpOworICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6
OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkRW1haWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxk
OjpOYW1lOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0NvbnRhY3RGaWVsZE5h
bWUoKTsKKyAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0Nv
bnRhY3RGaWVsZE5hbWUoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgV2Vi
Q29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlBob25ldGljTmFtZToKLSAgICAgICAg
ICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQaG9uZXRpY05hbWUoKTsKKyAg
ICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVs
ZFBob25ldGljTmFtZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBXZWJD
b3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UG9zdGFsQWRkcmVzczoKLSAgICAgICAg
ICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7Cisg
ICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0Rmll
bGRQb3N0YWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdl
YkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpBZGRyZXNzTGluZXM6Ci0gICAgICAg
ICAgICBwa0NvbnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwor
ICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZp
ZWxkUG9zdGFsQWRkcmVzcygpOwogICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENO
UG9zdGFsQWRkcmVzc1N0cmVldEtleSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
Y2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6U3ViTG9jYWxpdHk6Ci0g
ICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVz
cygpOworICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29u
dGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwogICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9
IGdldENOUG9zdGFsQWRkcmVzc1N1YkxvY2FsaXR5S2V5KCk7CiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpMb2Nh
bGl0eToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQb3N0
YWxBZGRyZXNzKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NL
aXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBwb3N0YWxBZGRy
ZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzQ2l0eUtleSgpOwogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UG9z
dGFsQ29kZToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQ
b3N0YWxBZGRyZXNzKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bh
c3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBwb3N0YWxB
ZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzUG9zdGFsQ29kZUtleSgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RG
aWVsZDo6U3ViQWRtaW5pc3RyYXRpdmVBcmVhOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQg
PSBnZXRQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKKyAgICAgICAgICAgIHBrQ29udGFj
dEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsK
ICAgICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NTdWJBZG1p
bmlzdHJhdGl2ZUFyZWFLZXkoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
V2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkFkbWluaXN0cmF0aXZlQXJlYToK
LSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQb3N0YWxBZGRy
ZXNzKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtD
b250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5
ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3RhdGVLZXkoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkNvdW50cnk6
Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRk
cmVzcygpOworICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BL
Q29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwogICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tl
eSA9IGdldENOUG9zdGFsQWRkcmVzc0NvdW50cnlLZXkoKTsKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkNvdW50
cnlDb2RlOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0NvbnRhY3RGaWVsZFBv
c3RhbEFkZHJlc3MoKTsKKyAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFz
c0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKICAgICAgICAgICAgIHBvc3RhbEFk
ZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NJU09Db3VudHJ5Q29kZUtleSgpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OnBr
Q29udGFjdEZpZWxkIGZvcktleTpnZXRQS1BheW1lbnRFcnJvckNvbnRhY3RGaWVsZFVzZXJJbmZv
S2V5KCldOworICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OnBrQ29udGFjdEZpZWxkIGZvcktl
eTpQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNlckluZm9LZXko
KV07CiAgICAgICAgIGlmIChwb3N0YWxBZGRyZXNzS2V5KQotICAgICAgICAgICAgW3VzZXJJbmZv
IHNldE9iamVjdDpwb3N0YWxBZGRyZXNzS2V5IGZvcktleTpnZXRQS1BheW1lbnRFcnJvclBvc3Rh
bEFkZHJlc3NVc2VySW5mb0tleSgpXTsKKyAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6
cG9zdGFsQWRkcmVzc0tleSBmb3JLZXk6UEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRFcnJvclBv
c3RhbEFkZHJlc3NVc2VySW5mb0tleSgpXTsKICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHROUyhb
W05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOmdldFBLUGF5bWVudEVycm9yRG9tYWluKCkg
Y29kZTp0b1BLUGF5bWVudEVycm9yQ29kZShlcnJvci5jb2RlKSB1c2VySW5mbzp1c2VySW5mby5n
ZXQoKV0pOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21h
aW46UEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRFcnJvckRvbWFpbigpIGNvZGU6dG9QS1BheW1l
bnRFcnJvckNvZGUoZXJyb3IuY29kZSkgdXNlckluZm86dXNlckluZm8uZ2V0KCldKTsKIH0KIAog
c3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB0b05TRXJyb3JzKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpQYXltZW50RXJyb3I+JiBlcnJvcnMpCkBAIC03NjEsNyArNjkyLDcgQEAgdm9pZCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0
IHN0ZDo6b3B0aW8KIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIGF1dG8gc3RhdHVzID0g
cmVzdWx0ID8gcmVzdWx0LT5zdGF0dXMgOiBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1czo6U3VjY2VzczsKLSAgICBhdXRvIHBrUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgPSBh
ZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRX
aXRoU3RhdHVzOnRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhzdGF0dXMpIGVycm9yczpy
ZXN1bHQgPyB0b05TRXJyb3JzKHJlc3VsdC0+ZXJyb3JzKS5nZXQoKSA6IEBbIF1dKTsKKyAgICBh
dXRvIHBrUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQ
YXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6dG9QS1Bh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHN0YXR1cykgZXJyb3JzOnJlc3VsdCA/IHRvTlNFcnJv
cnMocmVzdWx0LT5lcnJvcnMpLmdldCgpIDogQFsgXV0pOwogICAgIG1fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9u
KHBrUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQuZ2V0KCkpOwogI2Vsc2UKICAgICBtX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRBdXRob3JpemVk
Q29tcGxldGlvbih0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMocmVzdWx0KSk7CkBAIC03
ODcsNyArNzE4LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1D
b21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IHMKICAgICAgICAgbV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1z
ID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXModXBkYXRlLT5uZXdUb3RhbEFuZExpbmVJdGVtcyk7
CiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKLSAgICBhdXRvIHBrU2hpcHBpbmdNZXRob2RVcGRh
dGUgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUlu
c3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKV0pOwor
ICAgIGF1dG8gcGtTaGlwcGluZ01ldGhvZFVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1Bh
eW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVu
dFN1bW1hcnlJdGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCldKTsKICAgICBtX3BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxl
dGlvbihwa1NoaXBwaW5nTWV0aG9kVXBkYXRlLmdldCgpKTsKICNlbHNlCiAgICAgbV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ01l
dGhvZENvbXBsZXRpb24oUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3MsIG1fcGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJ
dGVtcy5nZXQoKSk7CkBAIC04MzksNyArNzcwLDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihjb25zdAog
ICAgIH0KIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQotICAgIGF1dG8gcGtTaGlwcGluZ0NvbnRh
Y3RVcGRhdGUgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RV
cGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoRXJyb3JzOnVwZGF0ZSA/IHRvTlNFcnJvcnModXBkYXRl
LT5lcnJvcnMpLmdldCgpIDogQFsgXSBwYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQo
KSBzaGlwcGluZ01ldGhvZHM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMuZ2V0KCldKTsKKyAgICBhdXRvIHBrU2hpcHBpbmdDb250
YWN0VXBkYXRlID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0Nv
bnRhY3RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoRXJyb3JzOnVwZGF0ZSA/IHRvTlNFcnJvcnMo
dXBkYXRlLT5lcnJvcnMpLmdldCgpIDogQFsgXSBwYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVt
cy5nZXQoKSBzaGlwcGluZ01ldGhvZHM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMuZ2V0KCldKTsKICAgICBtX3BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nQ29udGFj
dENvbXBsZXRpb24ocGtTaGlwcGluZ0NvbnRhY3RVcGRhdGUuZ2V0KCkpOwogI2Vsc2UKICAgICBt
X3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNo
aXBwaW5nQ29udGFjdENvbXBsZXRpb24odG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHVw
ZGF0ZSksIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hp
cHBpbmdNZXRob2RzLmdldCgpLCBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkpOwpAQCAtODU2LDcgKzc4Nyw3IEBA
IHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50
TWV0aG9kU2VsZWN0aW9uKGNvbnN0IHN0CiAgICAgICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9IHRvUEtQYXltZW50
U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpOwogCiAjaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMTAwMDApCi0gICAgYXV0byBwa1BheW1lbnRNZXRob2RVcGRhdGUgPSBhZG9wdE5TKFth
bGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0
aFBheW1lbnRTdW1tYXJ5SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXSk7CisgICAgYXV0byBwa1BheW1l
bnRNZXRob2RVcGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFBheW1l
bnRNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczptX3Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5
SXRlbXMuZ2V0KCldKTsKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uKHBrUGF5bWVudE1ldGhv
ZFVwZGF0ZS5nZXQoKSk7CiAjZWxzZQogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24obV9wYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0
ZW1zLmdldCgpKTsKQEAgLTg2NiwxMiArNzk3LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oY29uc3Qgc3QK
IAogVmVjdG9yPFN0cmluZz4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQXZh
aWxhYmxlUGF5bWVudE5ldHdvcmtzKCkKIHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFQ
YXNzS2l0TGlicmFyeSgpKQotICAgICAgICByZXR1cm4geyB9OwotI2VuZGlmCi0gICAgCi0gICAg
TlNBcnJheTxQS1BheW1lbnROZXR3b3JrPiAqYXZhaWxhYmxlTmV0d29ya3MgPSBbZ2V0UEtQYXlt
ZW50UmVxdWVzdENsYXNzKCkgYXZhaWxhYmxlTmV0d29ya3NdOworICAgIE5TQXJyYXk8UEtQYXlt
ZW50TmV0d29yaz4gKmF2YWlsYWJsZU5ldHdvcmtzID0gW1BBTDo6Z2V0X1Bhc3NLaXRfUEtQYXlt
ZW50UmVxdWVzdENsYXNzKCkgYXZhaWxhYmxlTmV0d29ya3NdOwogICAgIFZlY3RvcjxTdHJpbmc+
IHJlc3VsdDsKICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhdmFpbGFibGVOZXR3
b3Jrcy5jb3VudCk7CiAgICAgZm9yIChQS1BheW1lbnROZXR3b3JrIG5ldHdvcmsgaW4gYXZhaWxh
YmxlTmV0d29ya3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBh
eS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KaW5k
ZXggYzBkZjNjODlkYjRjZjQxNzQ5OGFjMjY4ZTk5ZTExNWJhNDA1ZDc2Mi4uZjllMjgwZDFjOTU2
YTZkOGRlNzI1NDFmZmYwOTdmNThjZGVhYTg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUlPUy5tbQpAQCAtMzQsMTAgKzM0LDcgQEAKICNpbXBvcnQgPFBhc3NLaXQvUGFz
c0tpdC5oPgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgotI2ltcG9ydCA8d3RmL1NvZnRMaW5r
aW5nLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkKLVNPRlRfTElOS19DTEFTUyhQ
YXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOworI2ltcG9ydCA8
cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAt
NTQsNyArNTEsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNo
b3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaQogCiAgICAgYXV0byBwYXltZW50
UmVxdWVzdCA9IHRvUEtQYXltZW50UmVxdWVzdChtX3dlYlBhZ2VQcm94eSwgb3JpZ2luYXRpbmdV
UkwsIGxpbmtJY29uVVJMU3RyaW5ncywgcmVxdWVzdCk7CiAKLSAgICBtX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50UmVxdWVzdDpwYXltZW50
UmVxdWVzdC5nZXQoKV0pOworICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3QuZ2V0KCld
KTsKICAgICBpZiAoIW1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcikgewogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQppbmRleCA3NDE1OTM4M2YxOTU0MjdkYjk3
NjBhOGMwMWVjNzA2N2E2N2M2Zjk1Li4yZTk5Y2IxNDc3MjM3NWE0ZTg3YzI5ZjU3MmFmZTk3NWNm
YTE4NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCkBAIC0z
MCwyOSArMzAsMTggQEAKIAogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgiCi0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bh
c3NLaXRTUEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KICNpbXBv
cnQgPHd0Zi9CbG9ja1B0ci5oPgotI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLVNPRlRf
TElOS19QUklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChQYXNzS2l0KQotCi1TT0ZUX0xJTktfQ0xB
U1MoUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLVNPRlRf
TElOS19DT05TVEFOVChQYXNzS2l0LCBQS0V4dGVuc2lvblBheW1lbnRBdXRob3JpemF0aW9uVUlF
eHRlbnNpb25Qb2ludE5hbWUsIE5TU3RyaW5nICopOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNv
bnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpV
Ukw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIGlmICghUGFzc0tpdExpYnJhcnkoKSkgewotICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBh
dXRvIHBheW1lbnRSZXF1ZXN0ID0gdG9QS1BheW1lbnRSZXF1ZXN0KG1fd2ViUGFnZVByb3h5LCBv
cmlnaW5hdGluZ1VSTCwgbGlua0ljb25VUkxTdHJpbmdzLCByZXF1ZXN0KTsKIAogICAgIGF1dG8g
c2hvd1BheW1lbnRVSVJlcXVlc3RTZWVkID0gbV9zaG93UGF5bWVudFVJUmVxdWVzdFNlZWQ7CiAg
ICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKLSAgICBbZ2V0UEtQYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSByZXF1ZXN0Vmlld0NvbnRyb2xsZXJX
aXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3QuZ2V0KCkgY29tcGxldGlvbjpCbG9ja1B0
cjx2b2lkIChQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiwgTlNFcnJvciAq
KT46OmZyb21DYWxsYWJsZShbcGF5bWVudFJlcXVlc3QsIHNob3dQYXltZW50VUlSZXF1ZXN0U2Vl
ZCwgd2Vha1RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXIs
IE5TRXJyb3IgKmVycm9yKSB7CisgICAgW1BBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSByZXF1ZXN0Vmlld0NvbnRyb2xsZXJXaXRoUGF5
bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3QuZ2V0KCkgY29tcGxldGlvbjpCbG9ja1B0cjx2b2lk
KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqLCBOU0Vycm9yICopPjo6ZnJv
bUNhbGxhYmxlKFtwYXltZW50UmVxdWVzdCwgc2hvd1BheW1lbnRVSVJlcXVlc3RTZWVkLCB3ZWFr
VGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oUEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlciwgTlNFcnJv
ciAqZXJyb3IpIHsKICAgICAgICAgYXV0byBwYXltZW50Q29vcmRpbmF0b3JQcm94eSA9IHdlYWtU
aGlzLmdldCgpOwogICAgICAgICBpZiAoIXBheW1lbnRDb29yZGluYXRvclByb3h5KQogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
U2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDgzZmZlZDM0NWQyNjE2YTkxYzBh
ZTdiMzY4MzVlZmM4YjM5NGRkOTcuLjAzNzViODNiMmE3ZjUzYzYxYTlmZGM0NjhlYjFiNmFkNWFk
MTcyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93
c2luZ1dhcm5pbmdDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
YWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAi
U2FmZUJyb3dzaW5nU1BJLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4K
KyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CiAjaW1wb3J0
IDx3dGYvTGFuZ3VhZ2UuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhOWU1ZDA3MTEwYWNkM2Uy
MDQxNGE5MWZlMDljNWRkZGUyMDIxYWQ4Li5mNDQ0MWZkOWM3ZTMzZWFhZWRkMjhmZjdlNjZmMDU4
OGE2NWRiMzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTY4Niw4ICs2ODYsNiBAQAogCQkyRDkyQTc5NTIxMkI2QUQ0MDBGNDkzRkQg
LyogUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTJEOTBEMTEyODFDOTY2MDAxRUI5NjIgLyog
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi87IH07CiAJCTJEOTJBNzk2MjEy
QjZBREEwMEY0OTNGRCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTRBOUM1MzEyQjgxNkNGMDA4RkU5ODQg
LyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwICovOyB9OwogCQkyRDkyQTc5NzIxMkI2QURBMDBG
NDkzRkQgLyogUGx1Z2luSW5mb3JtYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzRjhDOEUxNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbklu
Zm9ybWF0aW9uLmNwcCAqLzsgfTsKLQkJMkQ5MkE3OTgyMTM0OEQ4NTAwRjQ5M0ZEIC8qIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFCMUY3N0QxRDFCMzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5TWFjLm1tICovOyB9OwotCQkyRDkyQTc5RjIxMzRCMDdFMDBGNDkzRkQg
LyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc3QjFEMUIzMEE5MDA3QzlCRDEgLyogV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0gKi87IH07CiAJCTJEOTMxMTY5MjEyRjYxQjIw
MDA0NEJGRSAvKiBXS0NvbnRlbnRWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZDQjRFM0QxOEJCRTA0NDAwMEZDRkM5IC8qIFdLQ29udGVudFZp
ZXcubW0gKi87IH07CiAJCTJEOTMxMTZBMjEyRjYxQjUwMDA0NEJGRSAvKiBXS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkNCNEU2QjE4QkJGMjZBMDAwRkNGQzkgLyogV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tICovOyB9OwogCQkyRDlFQTMwRDFBOTZDQjU5MDAyRDI4MDcgLyogV0tQYWdlSW5qZWN0ZWRC
dW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEOUVBMzBDMUE5NkNCNTkwMDJEMjgwNyAvKiBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
MTAxMCw4ICsxMTAwOCw2IEBACiAJCQkJN0NFOUNFMTAxRkEwNzY3QTAwMDE3N0RFIC8qIFdlYlBh
Z2VVcGRhdGVQcmVmZXJlbmNlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzQ2OTRDOTFBNEI0
RUExMDBBRDU4NDUgLyogV2ViUGFzdGVib2FyZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBQjFGNzk2MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29v
cmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMkQ5MkE3OUYy
MTM0QjA3RTAwRjQ5M0ZEIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tIGluIFNv
dXJjZXMgKi8sCi0JCQkJMkQ5MkE3OTgyMTM0OEQ4NTAwRjQ5M0ZEIC8qIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCMUY3OTgxRDFCMzYxMzAw
N0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTJEOTJBNzhEMjEyQjZBQjEwMEY0OTNGRCAvKiBXZWJQbGF0Zm9y
bVRvdWNoUG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MTM0NEUyMTJDRjlGMDAwMTI4
QUZEIC8qIFdlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355426</attachid>
            <date>2018-11-21 10:26:17 -0800</date>
            <delta_ts>2018-11-21 10:33:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191875-20181121102614.patch</filename>
            <type>text/plain</type>
            <size>69474</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQxMWQ5ZGVmOGIxMzhiNzExMTYwMWFh
YmVjYTM1OGQ4MTAxMDJhNzcuLjQxZWQzNjEzZDQxMTNjZTM5NTliMjA4ZDJmZmMzYmM3NjU5YmZh
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUg
Zm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MTg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL2NvY29hL1NvZnRMaW5raW5nLmg6CisKIDIwMTgtMTEtMTQgIEtlaXRoIFJvbGxp
biAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCAjZW5kIHZzLiAjZW5kaWYgdHlw
by4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwZjc0ZjdhMTlhOTQyMWNmNmNlMzMzYzFmMDY3ZmE2YWVlZTRlOGI3
Li5kY2MzZjI0NDcwZjMxNTYzZWYyMGJiM2VkNGZhYWI0ZWM0ZWUwMGUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBhc3NL
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg3
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9k
dWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydCk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50
TWVyY2hhbnRTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50TWVyY2hh
bnRTZXNzaW9uOjpmcm9tSlMpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUNvY29hOjpwYWludEFwcGxlUGF5QnV0dG9uKToKKwogMjAxOC0xMS0yMCAgRGVhbiBK
YWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZpbmcgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmUgZnJvbSBXZWJMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMGVkZWU1YzNh
YzhkZTI4NTA2NDUxNzY1ZTIwMTUwYmFlOGMzODlmNy4uMWE0MTg4Zjc1NDBjYWFjM2U3NTc1YWFi
ZGMxNTUxM2VlOGQ3NDJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2Nv
YV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOiBBZGRlZC4K
KyAgICAgICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tOiBBZGRlZC4KKyAgICAgICAg
KiBwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaDoKKwogMjAxOC0xMS0xNyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBSZW1vdmUgYWxsIHVz
YWdlcyBvZiBVSUl0ZW1Qcm92aWRlciwgVUlJdGVtUHJvdmlkZXJSZWFkaW5nLCBhbmQgcmVsYXRl
ZCBjbGFzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZlOGUzZTRkOGEwOWUxYmUzZjljYjU1ZmM3OTk0MTAyNTFk
YWI5NjUuLjMzZmY1NzA4NjViZjkyZTRkZGQxOGNkYTg4ZDE3ZmNiMDg4YzkyN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzcgQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBh
c3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MTg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRDb250YWN0Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPjo6
ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0
aG9kPjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgaW52YWxpZGF0ZV0pOgorICAgICAgICAoLVtX
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyOmRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246XSk6CisgICAg
ICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkQXV0aG9yaXplUGF5bWVudDpoYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFBheW1lbnRN
ZXRob2Q6aGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRT
ZWxlY3RTaGlwcGluZ01ldGhvZDpoYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyOmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDpoYW5kbGVyOl0pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVu
dHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXApOgorICAgICAg
ICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKToKKyAgICAgICAgKFdlYktpdDo6dG9Q
S1NoaXBwaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29t
cGxldGVQYXltZW50U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0
ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUF2
YWlsYWJsZVBheW1lbnROZXR3b3Jrcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2lv
cy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5t
bToKKwogMjAxOC0xMS0yMCAgSmVmZiBNaWxsZXIgIDxqZWZmbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV0dXJuIG51bGxwdHIgaW1tZWRpYXRlbHkgaWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0IGlu
IHRoZSBIYXNoTWFwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggZTJlYjc1YmNkYjMzYTczMTM2NDAyZGNkMDEy
ZGEwNzYzZmU2OGQ2ZS4uMzBjYTkwNWMyYTE0ZDg5MmE5MzVjZWU1OTc2ZTlkNGNjNGFhMDJmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCkBAIC02MTYsOSArNjE2LDEwIEBACiAKICNpZiBQTEFURk9STShNQUMpCiAK
LSNkZWZpbmUgVVNFX0FQUEtJVCAxCiAjZGVmaW5lIEhBVkVfUlVOTE9PUF9USU1FUiAxCiAjZGVm
aW5lIEhBVkVfU0VDX0tFWUNIQUlOIDEKKyNkZWZpbmUgVVNFX0FQUEtJVCAxCisjZGVmaW5lIFVT
RV9QQVNTS0lUIDEKIAogI2lmIENQVShYODZfNjQpCiAjZGVmaW5lIEhBVkVfTkVUV09SS19FWFRF
TlNJT04gMQpAQCAtMTA1Myw5ICsxMDU0LDEwIEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
UykKKyNkZWZpbmUgSEFWRV9BUFBfTElOS1MgMQorI2RlZmluZSBVU0VfUEFTU0tJVCAxCiAjZGVm
aW5lIFVTRV9RVUlDS19MT09LIDEKICNkZWZpbmUgVVNFX1NZU1RFTV9QUkVWSUVXIDEKLSNkZWZp
bmUgSEFWRV9BUFBfTElOS1MgMQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiAhUExBVEZPUk0oSU9TTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvU29m
dExpbmtpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1NvZnRMaW5raW5nLmgKaW5kZXggNmFl
ZWRhZTRhNjYzMzQ1NzYwNmJhN2UxY2JlZmZmNWVhNjNjMDgyZi4uZDJiNDI4M2JmZTMyY2UwM2Vk
OGJmN2VmYmQ2ZjA0MjI1YTQ0NDNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2Ev
U29mdExpbmtpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Tb2Z0TGlua2luZy5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMS0yMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzQwLDkgKzM0MCw5IEBACiAgICAgfSBcCiAgICAgfQogCi0jZGVmaW5l
IFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrKSBcCisjZGVmaW5lIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBleHBvcnQpIFwKICAgICBuYW1lc3BhY2Ug
ZnVuY3Rpb25OYW1lc3BhY2UgeyBcCi0gICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KGJvb2wg
aXNPcHRpb25hbCA9IGZhbHNlKTsgXAorICAgIGV4cG9ydCB2b2lkKiBmcmFtZXdvcmsjI0xpYnJh
cnkoYm9vbCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCiAgICAgdm9pZCogZnJhbWV3b3JrIyNMaWJy
YXJ5KGJvb2wgaXNPcHRpb25hbCkgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgdm9pZCogZnJh
bWV3b3JrTGlicmFyeTsgXApAQCAtMzU2LDkgKzM1NiwxMiBAQAogICAgIH0gXAogICAgIH0KIAot
I2RlZmluZSBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRShmdW5jdGlvbk5h
bWVzcGFjZSwgZnJhbWV3b3JrKSBcCisjZGVmaW5lIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NP
VVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrKSBcCisgICAgU09GVF9MSU5LX0ZSQU1F
V09SS19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmss
ICkKKworI2RlZmluZSBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBleHBvcnQpIFwKICAgICBuYW1l
c3BhY2UgZnVuY3Rpb25OYW1lc3BhY2UgeyBcCi0gICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5
KGJvb2wgaXNPcHRpb25hbCA9IGZhbHNlKTsgXAorICAgIGV4cG9ydCB2b2lkKiBmcmFtZXdvcmsj
I0xpYnJhcnkoYm9vbCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCiAgICAgdm9pZCogZnJhbWV3b3Jr
IyNMaWJyYXJ5KGJvb2wgaXNPcHRpb25hbCkgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgdm9p
ZCogZnJhbWV3b3JrTGlicmFyeTsgXApAQCAtMzcyLDYgKzM3NSw5IEBACiAgICAgfSBcCiAgICAg
fQogCisjZGVmaW5lIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19GT1JfU09VUkNFKGZ1bmN0
aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmspIFwKKyAgICBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdP
UktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCAp
CisKICNkZWZpbmUgU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoZnVuY3Rpb25OYW1lc3BhY2Us
IGZyYW1ld29yaywgY2xhc3NOYW1lKSBcCiAgICAgQGNsYXNzIGNsYXNzTmFtZTsgXAogICAgIG5h
bWVzcGFjZSBmdW5jdGlvbk5hbWVzcGFjZSB7IFwKQEAgLTM4MywxMSArMzg5LDExIEBACiAgICAg
fSBcCiAgICAgfQogCi0jZGVmaW5lIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKGZ1bmN0aW9u
TmFtZXNwYWNlLCBmcmFtZXdvcmssIGNsYXNzTmFtZSkgXAorI2RlZmluZSBTT0ZUX0xJTktfQ0xB
U1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBj
bGFzc05hbWUsIGV4cG9ydCkgXAogICAgIEBjbGFzcyBjbGFzc05hbWU7IFwKICAgICBuYW1lc3Bh
Y2UgZnVuY3Rpb25OYW1lc3BhY2UgeyBcCiAgICAgc3RhdGljIENsYXNzIGluaXQjI2NsYXNzTmFt
ZSgpOyBcCi0gICAgQ2xhc3MgKCpnZXRfIyNmcmFtZXdvcmsjI18jI2NsYXNzTmFtZSMjQ2xhc3Mp
KCkgPSBpbml0IyNjbGFzc05hbWU7IFwKKyAgICBleHBvcnQgQ2xhc3MgKCpnZXRfIyNmcmFtZXdv
cmsjI18jI2NsYXNzTmFtZSMjQ2xhc3MpKCkgPSBpbml0IyNjbGFzc05hbWU7IFwKICAgICBzdGF0
aWMgQ2xhc3MgY2xhc3MjI2NsYXNzTmFtZTsgXAogICAgIFwKICAgICBzdGF0aWMgQ2xhc3MgY2xh
c3NOYW1lIyNGdW5jdGlvbigpIFwKQEAgLTQwOCw2ICs0MTQsOSBAQAogICAgIH0gXAogICAgIH0K
IAorI2RlZmluZSBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwg
ZnJhbWV3b3JrLCBjbGFzc05hbWUpIFwKKyAgICBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBjbGFzc05hbWUsICkKKwog
I2RlZmluZSBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwg
ZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSkgXAogICAgIFdURl9FWFRFUk5f
Q19CRUdJTiBcCiAgICAgZXh0ZXJuIGNvbnN0IHZhcmlhYmxlVHlwZSB2YXJpYWJsZU5hbWU7IFwK
QEAgLTQ4OSwxMyArNDk4LDEzIEBACiAgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWVzcGFjZTo6
c29mdExpbmsjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlck5hbWVzOyBcCiAgICAg
fQogCi0jZGVmaW5lIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNw
YWNlLCBmcmFtZXdvcmssIGZ1bmN0aW9uTmFtZSwgcmVzdWx0VHlwZSwgcGFyYW1ldGVyRGVjbGFy
YXRpb25zLCBwYXJhbWV0ZXJOYW1lcykgXAorI2RlZmluZSBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlv
bk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMs
IGV4cG9ydCkgXAogICAgIFdURl9FWFRFUk5fQ19CRUdJTiBcCiAgICAgcmVzdWx0VHlwZSBmdW5j
dGlvbk5hbWUgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCiAgICAgV1RGX0VYVEVSTl9DX0VORCBc
CiAgICAgbmFtZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAogICAgIHN0YXRpYyByZXN1bHRU
eXBlIGluaXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9uczsg
XAotICAgIHJlc3VsdFR5cGUgKCpzb2Z0TGluayMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUpIHBh
cmFtZXRlckRlY2xhcmF0aW9ucyA9IGluaXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lOyBcCisg
ICAgZXhwb3J0IHJlc3VsdFR5cGUoKnNvZnRMaW5rIyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSkg
cGFyYW1ldGVyRGVjbGFyYXRpb25zID0gaW5pdCMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWU7IFwK
ICAgICBzdGF0aWMgcmVzdWx0VHlwZSBpbml0IyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSBwYXJh
bWV0ZXJEZWNsYXJhdGlvbnMgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgZGlzcGF0Y2hfb25j
ZV90IG9uY2U7IFwKQEAgLTUwNyw2ICs1MTYsOSBAQAogICAgIH0gXAogICAgIH0KIAorI2RlZmlu
ZSBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFy
YW1ldGVyTmFtZXMpIFwKKyAgICBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VY
UE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5
cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMsICkKKwogI2RlZmluZSBT
T0ZUX0xJTktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwg
ZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9u
cywgcGFyYW1ldGVyTmFtZXMpIFwKICAgICBXVEZfRVhURVJOX0NfQkVHSU4gXAogICAgIHJlc3Vs
dFR5cGUgZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9uczsgXApAQCAtNTUyLDEwICs1
NjQsMTAgQEAKICAgICBleHRlcm4gdmFyaWFibGVUeXBlICgqZ2V0XyMjZnJhbWV3b3JrIyNfIyN2
YXJpYWJsZU5hbWUpKCk7IFwKICAgICB9CiAKLSNkZWZpbmUgU09GVF9MSU5LX1BPSU5URVJfRk9S
X1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlh
YmxlVHlwZSkgXAorI2RlZmluZSBTT0ZUX0xJTktfUE9JTlRFUl9GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVU
eXBlLCBleHBvcnQpIFwKICAgICBuYW1lc3BhY2UgZnVuY3Rpb25OYW1lc3BhY2UgeyBcCiAgICAg
c3RhdGljIHZhcmlhYmxlVHlwZSBpbml0IyNmcmFtZXdvcmsjI3ZhcmlhYmxlTmFtZSgpOyBcCi0g
ICAgdmFyaWFibGVUeXBlICgqZ2V0XyMjZnJhbWV3b3JrIyNfIyN2YXJpYWJsZU5hbWUpKCkgPSBp
bml0IyNmcmFtZXdvcmsjI3ZhcmlhYmxlTmFtZTsgXAorICAgIGV4cG9ydCB2YXJpYWJsZVR5cGUg
KCpnZXRfIyNmcmFtZXdvcmsjI18jI3ZhcmlhYmxlTmFtZSkoKSA9IGluaXQjI2ZyYW1ld29yayMj
dmFyaWFibGVOYW1lOyBcCiAgICAgc3RhdGljIHZhcmlhYmxlVHlwZSBwb2ludGVyIyNmcmFtZXdv
cmsjI3ZhcmlhYmxlTmFtZTsgXAogICAgIFwKICAgICBzdGF0aWMgdmFyaWFibGVUeXBlIHBvaW50
ZXIjI2ZyYW1ld29yayMjdmFyaWFibGVOYW1lIyNGdW5jdGlvbigpIFwKQEAgLTU3Niw2ICs1ODgs
OSBAQAogICAgIH0gXAogICAgIH0KIAorI2RlZmluZSBTT0ZUX0xJTktfUE9JTlRFUl9GT1JfU09V
UkNFKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVU
eXBlKSBcCisgICAgU09GVF9MSU5LX1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChmdW5j
dGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSwgKQor
CiAjZGVmaW5lIFNPRlRfTElOS19WQVJJQUJMRV9GT1JfSEVBREVSKGZ1bmN0aW9uTmFtZXNwYWNl
LCBmcmFtZXdvcmssIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVUeXBlKSBcCiAgICAgV1RGX0VYVEVS
Tl9DX0JFR0lOIFwKICAgICBleHRlcm4gdmFyaWFibGVUeXBlIHZhcmlhYmxlTmFtZTsgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29u
dGFjdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXlt
ZW50Q29udGFjdENvY29hLm1tCmluZGV4IDBiMDIwNGM4NmQ4YTM2YTVkNGE3NTI5OGQwZjQxYTM0
NDYxNTAzZWUuLmNjOTdmZDVlMWY2MjM0NTk5ZWI4ODRjYTgxODdmYjJjZDA4NTdjNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRh
Y3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1Bh
eW1lbnRDb250YWN0Q29jb2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbXBvcnQgIkFwcGxl
UGF5UGF5bWVudENvbnRhY3QuaCIKICNpbXBvcnQgPENvbnRhY3RzL0NvbnRhY3RzLmg+Ci0jaW1w
b3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNz
S2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0zOCwxNCArMzgsNiBAQCBTT0ZUX0xJTktfRlJB
TUVXT1JLKENvbnRhY3RzKQogU09GVF9MSU5LX0NMQVNTKENvbnRhY3RzLCBDTk11dGFibGVQb3N0
YWxBZGRyZXNzKQogU09GVF9MSU5LX0NMQVNTKENvbnRhY3RzLCBDTlBob25lTnVtYmVyKQogCi0j
aWYgUExBVEZPUk0oTUFDKQotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFBhc3NLaXQpCi0j
ZWxzZQotU09GVF9MSU5LX0ZSQU1FV09SSyhQYXNzS2l0KQotI2VuZGlmCi0KLVNPRlRfTElOS19D
TEFTUyhQYXNzS2l0LCBQS0NvbnRhY3QpCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IE5TU3RyaW5nICpzdWJMb2NhbGl0eShDTlBvc3RhbEFkZHJlc3MgKmFkZHJlc3MpCkBAIC0xMDYs
NyArOTgsNyBAQCBzdGF0aWMgdm9pZCBzZXRTdWJBZG1pbmlzdHJhdGl2ZUFyZWEoQ05NdXRhYmxl
UG9zdGFsQWRkcmVzcyAqYWRkcmVzcywgTlNTdHJpbmcgKgogCiBzdGF0aWMgUmV0YWluUHRyPFBL
Q29udGFjdD4gY29udmVydCh1bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBBcHBsZVBheVBheW1lbnRD
b250YWN0JiBjb250YWN0KQogewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS0Nv
bnRhY3RJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1BBTDo6
YWxsb2NQS0NvbnRhY3RJbnN0YW5jZSgpIGluaXRdKTsKIAogICAgIE5TU3RyaW5nICpmYW1pbHlO
YW1lID0gbmlsOwogICAgIE5TU3RyaW5nICpwaG9uZXRpY0ZhbWlseU5hbWUgPSBuaWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJj
aGFudFNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCmluZGV4IDgxYzhjY2I3MzhhN2Y5MzU0
MTIxYzhhMjhkNjc5MzVjMzEyNzZjYWIuLmZjMzZjODk1MzE0OWY0MzMwYmQ5NTFhNmFlYzIyYjhl
ZmIyZTBkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDE2
ICsyOSw3IEBACiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAogI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSlNPTk9iamVjdC5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+Ci0j
aW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElO
S19QUklWQVRFX0ZSQU1FV09SSyhQYXNzS2l0KQotI2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUkso
UGFzc0tpdCkKLSNlbmRpZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50TWVy
Y2hhbnRTZXNzaW9uKQorI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUzLDcgKzQ0LDcgQEAgc3RkOjpvcHRpb25hbDxQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uPiBQYXltZW50TWVyY2hhbnRTZXNzaW9uOjpmcm9tSlMoSlNDOjpF
eGVjU3QKICAgICBpZiAoIWRpY3Rpb25hcnkgfHwgIVtkaWN0aW9uYXJ5IGlzS2luZE9mQ2xhc3M6
W05TRGljdGlvbmFyeSBjbGFzc11dKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgYXV0byBwa1BheW1lbnRNZXJjaGFudFNlc3Npb24gPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVu
dE1lcmNoYW50U2Vzc2lvbkluc3RhbmNlKCkgaW5pdFdpdGhEaWN0aW9uYXJ5OmRpY3Rpb25hcnld
KTsKKyAgICBhdXRvIHBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NQS1BheW1lbnRNZXJjaGFudFNlc3Npb25JbnN0YW5jZSgpIGluaXRXaXRoRGljdGlvbmFyeTpk
aWN0aW9uYXJ5XSk7CiAKICAgICByZXR1cm4gUGF5bWVudE1lcmNoYW50U2Vzc2lvbihwa1BheW1l
bnRNZXJjaGFudFNlc3Npb24uZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BB
TC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIxNTUyZGY3Zjc1ZmM1MzliYjg3NTZk
MDg0OWI1NGQ2ODY5NTU0MDkuLjc3ZjI0NjczZTUxNzM2OTdmNWNiY2U3ZWMzYTQ1MjE2Y2Y0ODMx
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEzMSw2ICsxMzEsOCBAQAogCQlBMTE3NUI1ODFGNkI0NzA1MDBDNEI5RjAgLyog
RGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMTc1QjU2MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNo
UHJvdmlkZXIuY3BwICovOyB9OwogCQlBMTE3NUI1QTFGNkI0QTg0MDBDNEI5RjAgLyogTlNTY3Jv
bGxWaWV3U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMTE3NUI1OTFGNkI0QTg0MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggKi87IH07CiAJ
CUExRjU1RENGMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVG
IC8qIE1ldGFkYXRhU1BJLmggKi87IH07CisJCUExRjYzQzlGMjFBNERCRjcwMDZGQjQzQiAvKiBQ
YXNzS2l0U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExRjYzQzlEMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLzsg
fTsKKwkJQTFGNjNDQTAyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjYzQzlFMjFBNERC
RjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsubW0gKi87IH07CiAJCUEzMEQ0MTIxMUYwREQw
RUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggKi87
IH07CiAJCUEzMEQ0MTIyMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzBENDExRjFGMEREMEVBMDBC
NzE5NTQgLyogS2lsbFJpbmcuY3BwICovOyB9OwogCQlBMzBENDEyNTFGMEREMTJEMDBCNzE5NTQg
LyogS2lsbFJpbmdNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMzBENDEyNDFGMEREMTJEMDBCNzE5NTQgLyogS2lsbFJpbmdNYWMubW0gKi87IH07
CkBAIC0yODcsNiArMjg5LDggQEAKIAkJQTExNzVCNTYxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1
bHRTZWFyY2hQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZhdWx0U2VhcmNoUHJv
dmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE3NUI1OTFGNkI0QTg0
MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TU2Nyb2xsVmll
d1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUY1NURDRTFGNTUyOEVDMDBF
REI3NUYgLyogTWV0YWRhdGFTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0YWRhdGFTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFGNjNDOUQyMUE0REJGNzAwNkZCNDNCIC8qIFBh
c3NLaXRTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXNzS2l0U29mdExpbmsuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFGNjNDOUUyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NL
aXRTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3NLaXRTb2Z0TGluay5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8q
IEtpbGxSaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtpbGxSaW5nLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTFGMUYwREQwRUEwMEI3MTk1NCAv
KiBLaWxsUmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLaWxs
UmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTI0MUYwREQxMkQw
MEI3MTk1NCAvKiBLaWxsUmluZ01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEtpbGxSaW5nTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTYwLDYgKzU2NCw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJ
CUY0NDI5MTY2MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1tICov
LAorCQkJCUExRjYzQzlEMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLywK
KwkJCQlBMUY2M0M5RTIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tICovLAog
CQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03
MjksNiArNzM1LDcgQEAKIAkJCQkwQzc3ODU5RDFGNDUxMzBGMDBGNEVCQjYgLyogTlNXaW5kb3dT
UEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MEFCOEY5MjBBRjZFM0QwMEI4QkU4NyAvKiBOU1hQ
Q0Nvbm5lY3Rpb25TUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNUFGOTFGMUY0M0E0QzcwMDJF
QUMwMiAvKiBPcGVuR0xFU1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFGNjNDOUYyMUE0REJG
NzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREEx
NTUxRjNCRUI0OTAwREJDMzE3IC8qIFBhc3NLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBD
Nzc4NTlFMUY0NTEzMEYwMEY0RUJCNiAvKiBQSVBTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
MTc1QjRFMUY2QjMzNzMwMEM0QjlGMCAvKiBQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovLApAQCAt
ODU0LDYgKzg2MSw3IEBACiAJCQkJQTMwRDQxMjUxRjBERDEyRDAwQjcxOTU0IC8qIEtpbGxSaW5n
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM0ODc2RDgxRjhEN0Y0RTAwQ0NFRUJEIC8qIExv
Z2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMENGOTlDQTQxRjczNjM3NTAwN0VFNzkzIC8q
IE1lZGlhVGltZUFWRm91bmRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUY2M0NBMDIx
QTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTExNzVCNEYxRjZCMzM3MzAwQzRCOUYwIC8qIFBvcHVwTWVudS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUEzQzY2Q0RDMUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTNBQjZFNTIxRjNEMURDNTAwOUMxNEIxIC8qIFNsZWVwRGlzYWJsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45OGFlMTRjMTRmNDJjMDJmYWQyYzdhODQ3NjBjNTk0MTQ2YWM2
N2IzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNz
S2l0U29mdExpbmsuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBVU0UoUEFTU0tJVCkKKworI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
Lmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19G
T1JfSEVBREVSKFBBTCwgUGFzc0tpdCkKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQYXNzS2l0LCBQS0NvbnRhY3QpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBh
c3NLaXQsIFBLUGFzc0xpYnJhcnkpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBh
c3NLaXQsIFBLUGF5bWVudCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tp
dCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKQorU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRNZXRob2QpCitTT0ZUX0xJTktfQ0xB
U1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbikKK1NP
RlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdCkK
K1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U3VtbWFy
eUl0ZW0pCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLU2hpcHBp
bmdNZXRob2QpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwg
UEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWluLCB2b2lkLCAo
TlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIFBLQ2FuTWFrZVBheW1lbnRz
Q29tcGxldGlvbiBjb21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgY29tcGxldGlvbikp
CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLRHJhd0FwcGxl
UGF5QnV0dG9uLCB2b2lkLCAoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCBkcmF3UmVjdCwg
Q0dGbG9hdCBzY2FsZSwgUEtQYXltZW50QnV0dG9uVHlwZSB0eXBlLCBQS1BheW1lbnRCdXR0b25T
dHlsZSBzdHlsZSwgTlNTdHJpbmcgKmxhbmd1YWdlQ29kZSksIChjb250ZXh0LCBkcmF3UmVjdCwg
c2NhbGUsIHR5cGUsIHN0eWxlLCBsYW5ndWFnZUNvZGUpKQorCisjaWYgUExBVEZPUk0oTUFDKQor
U09GVF9MSU5LX1BPSU5URVJfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLRXh0ZW5zaW9uUGF5
bWVudEF1dGhvcml6YXRpb25VSUV4dGVuc2lvblBvaW50TmFtZSwgTlNTdHJpbmcgKikKKyNlbmRp
ZgorCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVS
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCkKK1NPRlRfTElOS19D
TEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRo
b2RVcGRhdGUpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5
bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hF
QURFUihQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSkK
KworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQ
YXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlvbiwg
dm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBOU1N0cmluZyAq
c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBQS0Nhbk1ha2VQYXltZW50c0Nv
bXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBkb21haW4sIHNvdXJjZUFwcGxpY2F0
aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgY29tcGxldGlvbikpCisKK1NPRlRfTElOS19QT0lOVEVS
X0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZEVtYWlsQWRkcmVzcywgTlNT
dHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0Nv
bnRhY3RGaWVsZE5hbWUsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUl9GT1JfSEVBREVS
KFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQaG9uZU51bWJlciwgTlNTdHJpbmcgKikKK1NP
RlRfTElOS19QT0lOVEVSX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBo
b25ldGljTmFtZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9IRUFERVIoUEFM
LCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MsIE5TU3RyaW5nICopCitTT0ZU
X0xJTktfUE9JTlRFUl9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JDb250
YWN0RmllbGRVc2VySW5mb0tleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9I
RUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvckRvbWFpbiwgTlNTdHJpbmcgKikKK1NP
RlRfTElOS19QT0lOVEVSX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvclBv
c3RhbEFkZHJlc3NVc2VySW5mb0tleSwgTlNTdHJpbmcgKikKKyNlbmRpZgorCisjZW5kaWYgLy8g
VVNFKFBBU1NLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNv
ZnRMaW5rLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2ZTlkYjIzYWZiMTAxMDE5YjM0MTY5ZTYzODg4Yjc0ZGFm
MWVkODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5tbQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisKKyNpZiBVU0UoUEFTU0tJVCkKKworI2ltcG9ydCAiUGFzc0tpdFNQSS5oIgor
I2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpZiBQTEFURk9STShNQUMpCitTT0ZUX0xJ
TktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQs
IFBBTF9FWFBPUlQpCisjZWxzZQorU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEFMX0VYUE9SVCkKKyNlbmRpZgorCitTT0ZUX0xJTktfQ0xB
U1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdCwgUEFMX0VY
UE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tp
dCwgUEtQYXNzTGlicmFyeSwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50LCBQQUxfRVhQT1JUKQorU09GVF9M
SU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1Nf
Rk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudE1lcmNoYW50U2Vz
c2lvbiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50TWV0aG9kLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0
LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFM
LCBQYXNzS2l0LCBQS1BheW1lbnRTdW1tYXJ5SXRlbSwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19D
TEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtTaGlwcGluZ01ldGhv
ZCwgUEFMX0VYUE9SVCkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBP
UlQoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJB
bmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwg
UEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmllciwgZG9t
YWluLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFBBTCwgUGFzc0tpdCwgUEtEcmF3QXBwbGVQYXlCdXR0b24sIHZvaWQsIChDR0NvbnRleHRS
ZWYgY29udGV4dCwgQ0dSZWN0IGRyYXdSZWN0LCBDR0Zsb2F0IHNjYWxlLCBQS1BheW1lbnRCdXR0
b25UeXBlIHR5cGUsIFBLUGF5bWVudEJ1dHRvblN0eWxlIHN0eWxlLCBOU1N0cmluZyAqbGFuZ3Vh
Z2VDb2RlKSwgKGNvbnRleHQsIGRyYXdSZWN0LCBzY2FsZSwgdHlwZSwgc3R5bGUsIGxhbmd1YWdl
Q29kZSkpCisKKyNpZiBQTEFURk9STShNQUMpCitTT0ZUX0xJTktfUE9JTlRFUl9GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtFeHRlbnNpb25QYXltZW50QXV0aG9yaXphdGlv
blVJRXh0ZW5zaW9uUG9pbnROYW1lLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQorI2VuZGlmCisK
KyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0LCBQQUxf
RVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNz
S2l0LCBQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSwgUEFMX0VYUE9SVCkKK1NP
RlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXlt
ZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19D
TEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVz
dFNoaXBwaW5nTWV0aG9kVXBkYXRlLCBQQUxfRVhQT1JUKQorCitTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0
aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uLCB2b2lkLCAoTlNT
dHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIE5TU3RyaW5nICpzb3VyY2VBcHBs
aWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbiBj
b21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgc291cmNlQXBwbGljYXRpb25TZWNvbmRh
cnlJZGVudGlmaWVyLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKKworU09GVF9MSU5LX1BPSU5U
RVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkRW1h
aWxBZGRyZXNzLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX1BPSU5URVJfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkTmFtZSwgTlNT
dHJpbmcgKiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBob25lTnVtYmVyLCBOU1N0cmluZyAq
LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lLCBOU1N0cmluZyAqLCBQQUxf
RVhQT1JUKQorU09GVF9MSU5LX1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBh
c3NLaXQsIFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcywgTlNTdHJpbmcgKiwgUEFMX0VYUE9S
VCkKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0
LCBQS1BheW1lbnRFcnJvckNvbnRhY3RGaWVsZFVzZXJJbmZvS2V5LCBOU1N0cmluZyAqLCBQQUxf
RVhQT1JUKQorU09GVF9MSU5LX1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBh
c3NLaXQsIFBLUGF5bWVudEVycm9yRG9tYWluLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQorU09G
VF9MSU5LX1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5
bWVudEVycm9yUG9zdGFsQWRkcmVzc1VzZXJJbmZvS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JU
KQorI2VuZGlmCisKKyNlbmRpZiAvLyBVU0UoUEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaAppbmRleCBiNWU1OTMwMzI3MWZiNTgxYWIzNDlh
Yjk1Zjc0MzIwOTE0OGFhMjU4Li43N2NiNmUxZDcwM2U3YmM5NWIzMzMyZDA3ZTU1ZTcxNDgzM2Yx
ZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0
U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5o
CkBAIC0zOSw4ICszOSw4IEBACiAKICNlbGlmIFBMQVRGT1JNKE1BQykKIAorI2ltcG9ydCA8QXBw
S2l0L0FwcEtpdC5oPgogI2ltcG9ydCA8Q29udGFjdHMvQ29udGFjdHMuaD4KLSNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCkBAIC0y
MjUsNyArMjI1LDcgQEAgdHlwZWRlZiBOU1N0cmluZyAqIFBLUGF5bWVudE5ldHdvcmsgTlNfRVhU
RU5TSUJMRV9TVFJJTkdfRU5VTTsKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKLSNlbmRpZgor
I2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIApAQCAt
MjYxLDcgKzI2MSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBQS1BheW1lbnRSZXF1
ZXN0QVBJVHlwZSkgewogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAotI2VuZGlmCisjZW5kaWYg
Ly8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShB
UFBMRV9JTlRFUk5BTF9TREspCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBQS1BheW1lbnRC
dXR0b25TdHlsZSkgewpAQCAtMzI0LDQgKzMyNCw2IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lO
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU1N0cmluZyAqQ1REYXRhQ29ubmVjdGlv
blNlcnZpY2VUeXBlOwogQGVuZAogCit0eXBlZGVmIHZvaWQgKF5QS0Nhbk1ha2VQYXltZW50c0Nv
bXBsZXRpb24pKEJPT0wgaXNWYWxpZCwgTlNFcnJvciAqKTsKKwogTlNfQVNTVU1FX05PTk5VTExf
RU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBhMTQ4MGZiYTZmOTQwYTZiNjg3ZDNjM2U5
MGYwYTUxZjEzMWY3NzFiLi42NWViYzg0MzY2MjAxZDU4OWY3NGE1YTVmZjU0OTgxM2JlZmJhNzA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTU4OCw3ICs1ODgsNyBAQCBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5jcHAKIAogICAgIE1v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCiAgICAgTW9kdWxlcy9hcHBsZXBh
eS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tCi0gICAgTW9kdWxlcy9hcHBsZXBheS9jb2Nv
YS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0gQG5vLXVuaWZ5CisgICAgTW9kdWxlcy9h
cHBsZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0KICAgICBNb2R1bGVz
L2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQogCiAgICAgTW9kdWxlcy9hcHBs
ZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMyMzM0
YzYwNGU3M2I4NjA4MjViODkwNTdiYzlhODk0MTk5ZWIxMzUuLjRlNDcwMjcwYzIwMzUzYzAzYTBh
NjZjODA5ZGI1MzBkZTQ5NjM3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ0NzEsNyArNDQ3MSw2IEBACiAJCURFNUY4NjBE
MUZBMjM4NkIwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDc4LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4NUQyMUZBMjM4NTYwMDZEQjYzQSAv
KiBVbmlmaWVkU291cmNlNDc4LmNwcCAqLzsgfTsKIAkJREU1Rjg2MEUxRkEyMzg2QjAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2U0NzkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gREU1Rjg1Q0YxRkEyMzg1MDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0
NzkuY3BwICovOyB9OwogCQlERTVGODYwRjFGQTIzODZCMDA2REI2M0EgLyogVW5pZmllZFNvdXJj
ZTQ4MC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBE
RTVGODVEMzFGQTIzODU5MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ4MC5jcHAgKi87IH07Ci0J
CURFNUY4NjEwMUZBMjM4RDkwMDZEQjYzQSAvKiBQYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2Eu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQURBNEEx
QjFEMjJGMkMwMDA1QTlBMTUgLyogUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tICovOyB9
OwogCQlERTVGODYxMTFGQTIzOURBMDA2REI2M0EgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRl
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Uy
OUU1QzE2N0E4QTE5MDA1ODZEM0QgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAgKi87
IH07CiAJCURFNUY4NjEyMUZBMjM5RTcwMDZEQjYzQSAvKiBKU0dDT2JzZXJ2YXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTRFQUUxQ0Y2
NjU0QTAwNDcyM0M0IC8qIEpTR0NPYnNlcnZhdGlvbi5jcHAgKi87IH07CiAJCURFNUY4NjFEMUZB
MjgxNUIwMDZEQjYzQSAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBNDc4QTdFMTZDRDcw
QzMwMDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSAqLzsgfTsK
QEAgLTMyMDg1LDcgKzMyMDg0LDcgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7Ci0JCQlzaGVsbFNjcmlw
dCA9ICJpZiBbIFwiJHtBQ1RJT059XCIgPSBcImluc3RhbGxoZHJzXCIgLW8gXCIke0FDVElPTn1c
IiA9IFwiaW5zdGFsbGFwaVwiIF07IHRoZW5cbiAgICBleGl0IDA7XG5maVxuXG5pZiBbIC1mIC4u
Ly4uL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLXdlYWstdnRhYmxlcy1hbmQtZXh0ZXJuYWxzIF07
IHRoZW5cbiAgICAuLi8uLi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci13ZWFrLXZ0YWJsZXMtYW5k
LWV4dGVybmFscyB8fCBleGl0ICQ/XG5maSI7CisJCQlzaGVsbFNjcmlwdCA9ICJpZiBbIFwiJHtB
Q1RJT059XCIgPSBcImluc3RhbGxoZHJzXCIgLW8gXCIke0FDVElPTn1cIiA9IFwiaW5zdGFsbGFw
aVwiIF07IHRoZW5cbiAgICBleGl0IDA7XG5maVxuXG5pZiBbIC1mIC4uLy4uL1Rvb2xzL1Njcmlw
dHMvY2hlY2stZm9yLXdlYWstdnRhYmxlcy1hbmQtZXh0ZXJuYWxzIF07IHRoZW5cbiAgICAuLi8u
Li9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci13ZWFrLXZ0YWJsZXMtYW5kLWV4dGVybmFscyB8fCBl
eGl0ICQ/XG5maVxuIjsKIAkJfTsKIAkJNUQyRjdEQTAwQzY4NzlDNjAwQjVCNzJCIC8qIFVwZGF0
ZSBJbmZvLnBsaXN0IHdpdGggdmVyc2lvbiBpbmZvcm1hdGlvbiAqLyA9IHsKIAkJCWlzYSA9IFBC
WFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKQEAgLTMyMzQ1LDcgKzMyMzQ0LDYgQEAKIAkJCQlBMzFD
NEU0RDE2RTAyQUE2MDAyRjc5NTcgLyogT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzMTA3OENDNzE4ODBBQUI1MDA4MDk5REMgLyogT0VTVGV4dHVyZUhhbGZGbG9h
dExpbmVhci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3N0ExN0E3MTEyRjI4MTgyMDA0RTAyRjYg
LyogT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg2MTAx
RkEyMzhEOTAwNkRCNjNBIC8qIFBheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUNFQTI4NDY2MjE0MUU4NDkwMEU0MDdFOCAvKiBQbGF0Zm9ybUV2ZW50RmFj
dG9yeUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUFBMTJERjQ5MTc0M0RGODMwMDREQUZERiAv
KiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RB
MjlBMzAxQ0JGNzRENDAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1t
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNv
Y29hLm1tCmluZGV4IGI0YWFmNjQyMWQyYjZkM2M1YjMwZGVhYTc0ZTNlNzI2MzI5ZDJhY2QuLmNi
NjEwODI5MmE0ODk4NmMxOWM3OGIxMTQ0MGExNTc3MmEwZWE5OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCkBAIC0zMiwxNiArMzIsNyBAQAogCiAj
aWYgRU5BQkxFKEFQUExFX1BBWSkKIAotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
Lmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLVNP
RlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhQYXNzS2l0KTsKLSNlbHNlCi1TT0ZUX0xJTktfRlJB
TUVXT1JLKFBhc3NLaXQpOwotI2VuZGlmCi0KLVNPRlRfTElOS19NQVlfRkFJTChQYXNzS2l0LCBQ
S0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3Qg
ZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVudEJ1dHRvblR5cGUgdHlwZSwgUEtQYXlt
ZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICpsYW5ndWFnZUNvZGUpLCAoY29udGV4dCwg
ZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFuZ3VhZ2VDb2RlKSk7CisjaW1wb3J0IDxw
YWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZ
KQogCkBAIC0xMDgsOSArOTksNiBAQCBzdGF0aWMgUEtQYXltZW50QnV0dG9uVHlwZSB0b1BLUGF5
bWVudEJ1dHRvblR5cGUoQXBwbGVQYXlCdXR0b25UeXBlIHR5cGUpCiAKIGJvb2wgUmVuZGVyVGhl
bWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVy
LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcGFpbnRSZWN0KQog
ewotICAgIGlmICghY2FuTG9hZFBLRHJhd0FwcGxlUGF5QnV0dG9uKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWlu
dEluZm8uY29udGV4dCgpKTsKIAogICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U2hvdWxkU21v
b3RoRm9udHModHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDM1Zjk4YjExYjdmMWE5MjEyOWFl
ZGI0MjEyMmFiMGI4NTkwNzkyMjUuLmQwZTM3NDUyMDZkZDk4YWI3NGI2ZjRkMTU1Yjg4Mjc2ZGE1
ODZlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0zMCwyMCArMzAsOCBAQAogCiAjaW1wb3J0ICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9QYXNzS2l0U1BJLmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotI2lmIFBMQVRG
T1JNKE1BQykKLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhQYXNzS2l0KQotI2Vsc2UKLVNP
RlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkKLSNlbmRpZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFz
c0tpdCwgUEtDb250YWN0KTsKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnQpOwot
U09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudE1ldGhvZCk7Ci1TT0ZUX0xJTktfQ0xB
U1MoUGFzc0tpdCwgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uKTsKIAogbmFtZXNwYWNlIElQQyB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTY3LDcgKzU1LDcgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29y
ZTo6UGF5bWVudCYKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0
V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQq
PihkYXRhUmVmZXJlbmNlLmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVl
V2hlbkRvbmU6Tk9dKTsKICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJv
bURhdGEoZGF0YS5nZXQoKSk7CiAgICAgQHRyeSB7Ci0gICAgICAgIFBLUGF5bWVudCAqcGtQYXlt
ZW50ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRQS1BheW1lbnRDbGFzcygp
IGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOworICAgICAgICBQS1BheW1lbnQg
KnBrUGF5bWVudCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6UEFMOjpnZXRfUGFz
c0tpdF9QS1BheW1lbnRDbGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXld
OwogICAgICAgICBwYXltZW50ID0gUGF5bWVudChwa1BheW1lbnQpOwogICAgIH0gQGNhdGNoIChO
U0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRl
Y29kZSBQS1BheW1lbnQ6ICVAIiwgZXhjZXB0aW9uKTsKQEAgLTExOCw3ICsxMDYsNyBAQCBib29s
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgV2ViQ29yZTo6UAogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxs
b2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29u
c3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6
ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwogICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJj
aGl2ZXJGcm9tRGF0YShkYXRhLmdldCgpKTsKICAgICBAdHJ5IHsKLSAgICAgICAgUEtDb250YWN0
ICpwa0NvbnRhY3QgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldFBLQ29udGFj
dENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgICAgIFBL
Q29udGFjdCAqcGtDb250YWN0ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6
OmdldF9QYXNzS2l0X1BLQ29udGFjdENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9i
amVjdEtleV07CiAgICAgICAgIHBheW1lbnRDb250YWN0ID0gUGF5bWVudENvbnRhY3QocGtDb250
YWN0KTsKICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewogICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgUEtDb250YWN0OiAlQCIsIGV4Y2VwdGlvbik7CkBA
IC0xNzUsNyArMTYzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJj
aGFudFNlc3Npb24+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2UKICAgICBhdXRvIGRhdGEg
PSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8
dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSkpIGxl
bmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsKICAgICBhdXRvIHVu
YXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoZGF0YS5nZXQoKSk7CiAgICAgQHRy
eSB7Ci0gICAgICAgIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbiAqcGtQYXltZW50TWVyY2hhbnRT
ZXNzaW9uID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRQS1BheW1lbnRNZXJj
aGFudFNlc3Npb25DbGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwor
ICAgICAgICBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKnBrUGF5bWVudE1lcmNoYW50U2Vzc2lv
biA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6UEFMOjpnZXRfUGFzc0tpdF9QS1Bh
eW1lbnRNZXJjaGFudFNlc3Npb25DbGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmpl
Y3RLZXldOwogICAgICAgICBwYXltZW50TWVyY2hhbnRTZXNzaW9uID0gUGF5bWVudE1lcmNoYW50
U2Vzc2lvbihwa1BheW1lbnRNZXJjaGFudFNlc3Npb24pOwogICAgIH0gQGNhdGNoIChOU0V4Y2Vw
dGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBQ
S1BheW1lbnRNZXJjaGFudFNlc3Npb246ICVAIiwgZXhjZXB0aW9uKTsKQEAgLTIwNSw3ICsxOTMs
NyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQYQogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tO
U0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGlj
X2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZl
cmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwogICAgIGF1dG8gdW5hcmNoaXZlciA9IHNl
Y3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRhLmdldCgpKTsKICAgICBAdHJ5IHsKLSAgICAgICAg
UEtQYXltZW50TWV0aG9kICpwa1BheW1lbnRNZXRob2QgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmpl
Y3RPZkNsYXNzOmdldFBLUGF5bWVudE1ldGhvZENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZl
Um9vdE9iamVjdEtleV07CisgICAgICAgIFBLUGF5bWVudE1ldGhvZCAqcGtQYXltZW50TWV0aG9k
ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6OmdldF9QYXNzS2l0X1BLUGF5
bWVudE1ldGhvZENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAg
ICAgICAgIHBheW1lbnRNZXRob2QgPSBQYXltZW50TWV0aG9kKHBrUGF5bWVudE1ldGhvZCk7CiAg
ICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gZGVjb2RlIFBLUGF5bWVudDogJUAiLCBleGNlcHRpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IDA4ZGJkN2I2NTZkNDUwNGJmZTcwYWNlOWE0ZjllMTBmYzI5MDg0NmIu
LmU4OGM1ZmU2YWNhMWI5NDFmYzA5MGFhYTQ2ZTE5YzhiODk4NGNiODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKQEAgLTI5NCw5ICsyOTQsOSBAQCBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0K
IAogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EubW0KIAotVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eUlPUy5tbSBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlJT1MubW0KIAotVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eU1hYy5tbSBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KIAogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9u
L2NvY29hL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHlDb2NvYS5tbQogVUlQcm9jZXNzL0F1
dGhlbnRpY2F0aW9uL2NvY29hL1NlY0tleVByb3h5U3RvcmUubW0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCmluZGV4IGRiMmI2YzhiZDIwZmNjZjAwOTQ5
NDIwNWQyMTFkY2M0MTkyMzgxNzguLjgxMGNmYzEwMjI3ZTBhY2E0MzJmMzM5ZjUwZTE1M2RkNDQ5
YzliNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29h
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5t
bQpAQCAtMzMsMjUgKzMzLDExIEBACiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+Cisj
aW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQ
dHIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcu
aD4KIAotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19PUFRJ
T05BTChQYXNzS2l0KQotI2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkKLSNlbmRp
ZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXNzTGlicmFyeSk7Ci1TT0ZUX0xJTktf
Q0xBU1MoUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLVNP
RlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24pOwotU09GVF9M
SU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudFJlcXVlc3QpOwotU09GVF9MSU5LX0NMQVNTKFBh
c3NLaXQsIFBLUGF5bWVudFN1bW1hcnlJdGVtKTsKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQ
S1NoaXBwaW5nTWV0aG9kKTsKLQotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorI2lmIFBMQVRGT1JN
KElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VE
ID49IDEwMTMwMCkKIFNPRlRfTElOS19GUkFNRVdPUksoQ29udGFjdHMpCiBTT0ZUX0xJTktfQ09O
U1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N0cmVldEtleSwgTlNTdHJpbmcgKik7CiBT
T0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N1YkxvY2FsaXR5S2V5
LCBOU1N0cmluZyAqKTsKQEAgLTYxLDMwICs0Nyw4IEBAIFNPRlRfTElOS19DT05TVEFOVChDb250
YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3RhdGVLZXksIE5TU3RyaW5nICopOwogU09GVF9MSU5LX0NP
TlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NQb3N0YWxDb2RlS2V5LCBOU1N0cmluZyAq
KTsKIFNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzQ291bnRyeUtl
eSwgTlNTdHJpbmcgKik7CiBTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRk
cmVzc0lTT0NvdW50cnlDb2RlS2V5LCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DTEFTUyhQYXNz
S2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0KQotU09GVF9MSU5LX0NMQVNTKFBhc3NL
aXQsIFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlKQotU09GVF9MSU5LX0NMQVNT
KFBhc3NLaXQsIFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUpCi1TT0ZUX0xJ
TktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlKQot
U09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLUGF5bWVudEVycm9yRG9tYWluLCBOU1N0cmlu
ZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBvc3RhbEFk
ZHJlc3MsIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLQ29udGFj
dEZpZWxkRW1haWxBZGRyZXNzLCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChQYXNz
S2l0LCBQS0NvbnRhY3RGaWVsZFBob25lTnVtYmVyLCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19D
T05TVEFOVChQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZE5hbWUsIE5TU3RyaW5nICopOwotU09GVF9M
SU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lLCBOU1N0cmlu
ZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChQYXNzS2l0LCBQS1BheW1lbnRFcnJvckNvbnRhY3RG
aWVsZFVzZXJJbmZvS2V5LCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChQYXNzS2l0
LCBQS1BheW1lbnRFcnJvclBvc3RhbEFkZHJlc3NVc2VySW5mb0tleSwgTlNTdHJpbmcgKik7CiAj
ZW5kaWYKIAotdHlwZWRlZiB2b2lkICheUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uKShCT09M
IGlzVmFsaWQsIE5TRXJyb3IgKmVycm9yKTsKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKLWV4dGVy
biAiQyIgdm9pZCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5B
bmRTb3VyY2VBcHBsaWNhdGlvbihOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFp
biwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgUEtDYW5N
YWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pOwotU09GVF9MSU5LX0ZVTkNUSU9OX01B
WV9GQUlMX0ZPUl9TT1VSQ0UoV2ViS2l0LCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhN
ZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlvbiwgdm9pZCwgKE5TU3Ry
aW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBOU1N0cmluZyAqc291cmNlQXBwbGlj
YXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBQS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29t
cGxldGlvbiksIChpZGVudGlmaWVyLCBkb21haW4sIHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllciwgY29tcGxldGlvbikpOwotI2Vsc2UKLWV4dGVybiAiQyIgdm9pZCBQS0Nhbk1h
a2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4oTlNTdHJpbmcgKmlkZW50
aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbiBjb21w
bGV0aW9uKTsKLVNPRlRfTElOS19GVU5DVElPTl9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYktpdCwg
UGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWlu
LCB2b2lkLCAoTlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIFBLQ2FuTWFr
ZVBheW1lbnRzQ29tcGxldGlvbiBjb21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgY29t
cGxldGlvbikpOwotI2VuZGlmCi0KLQogQGltcGxlbWVudGF0aW9uIFdLUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlCiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBh
eW1lbnRDb29yZGluYXRvclByb3h5OihXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Jil3ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eQpAQCAtMTAyLDcgKzY2LDcgQEAgLSAodm9pZClp
bnZhbGlkYXRlCiAgICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5ID0gbnVsbHB0cjsKICAg
ICBpZiAoX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbikgewogI2lmIChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEw
MDAwKQotICAgICAgICBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKGFkb3B0TlMoW2FsbG9j
UEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6UEtQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF1dKS5nZXQoKSk7Cisg
ICAgICAgIF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24oYWRvcHROUyhbUEFMOjphbGxvY1BL
UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOlBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIGVycm9yczpAWyBdXSkuZ2V0KCkpOwogI2Vs
c2UKICAgICAgICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzRmFpbHVyZSk7CiAjZW5kaWYKQEAgLTExOSw3ICs4Myw3IEBAIC0gKHZvaWQp
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyCiAgICAgQVNTRVJUKCFfc2Vzc2lvbkJsb2NrKTsKICAgICBfc2Vzc2lv
bkJsb2NrID0gc2Vzc2lvbkJsb2NrOwogCi0gICAgW2dldFBLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckNsYXNzKCkgcGF5bWVudFNlcnZpY2VzTWVyY2hhbnRVUkw6XihOU1VSTCAq
bWVyY2hhbnRVUkwsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgW1BBTDo6Z2V0X1Bhc3NLaXRfUEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSBwYXltZW50U2VydmljZXNN
ZXJjaGFudFVSTDpeKE5TVVJMICptZXJjaGFudFVSTCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAg
ICAgaWYgKGVycm9yKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJQS0Nhbk1ha2VQYXltZW50c1dp
dGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4gZXJyb3IgJUAiLCBlcnJvcik7CiAKQEAgLTE1
NSw3ICsxMTksNyBAQCAtICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6
KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcgogewogI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwKQogICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAg
IGNvbXBsZXRpb24oYWRvcHROUyhbYWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5z
dGFuY2UoKSBpbml0V2l0aFN0YXR1czpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVy
ZSBlcnJvcnM6QFsgXV0pLmdldCgpKTsKKyAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFtQQUw6
OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0
dXM6UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF1dKS5nZXQo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE3MCw3ICsxMzQsNyBAQCAtICh2b2lk
KXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlcgogewogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIGlmICghX3dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oYWRvcHROUyhb
YWxsb2NQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdp
dGhQYXltZW50U3VtbWFyeUl0ZW1zOkBbIF1dKS5nZXQoKSk7CisgICAgICAgIGNvbXBsZXRpb24o
YWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5z
dGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTgzLDcgKzE0Nyw3IEBAIC0gKHZvaWQpcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyCiAtICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hp
cHBpbmdNZXRob2Q6KFBLU2hpcHBpbmdNZXRob2QgKilzaGlwcGluZ01ldGhvZCBoYW5kbGVyOih2
b2lkICheKShQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUgKnVwZGF0ZSkpY29t
cGxldGlvbiB7CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAgICAgaWYgKCFfd2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5
bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50
U3VtbWFyeUl0ZW1zOkBbIF1dKS5nZXQoKSk7CisgICAgICAgIGNvbXBsZXRpb24oYWRvcHROUyhb
UEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkg
aW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOkBbIF1dKS5nZXQoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTE5Nyw3ICsxNjEsNyBAQCAtICh2b2lkKXBheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcgog
ewogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1
ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczpAWyBdIHBh
eW1lbnRTdW1tYXJ5SXRlbXM6QFsgXSBzaGlwcGluZ01ldGhvZHM6QFsgXV0pLmdldCgpKTsKKyAg
ICAgICAgY29tcGxldGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBw
aW5nQ29udGFjdFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6QFsgXSBwYXltZW50U3Vt
bWFyeUl0ZW1zOkBbIF0gc2hpcHBpbmdNZXRob2RzOkBbIF1dKS5nZXQoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTI5MywzMiArMjU3LDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBib29sIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50
cygpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICghUGFzc0tpdExpYnJhcnkoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KLSAgICByZXR1cm4gW2dldFBLUGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckNsYXNzKCkgY2FuTWFrZVBheW1lbnRzXTsKKyAgICBy
ZXR1cm4gW1BBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyQ2xhc3MoKSBjYW5NYWtlUGF5bWVudHNdOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0
cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6
RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0jaWYgUExBVEZP
Uk0oTUFDKQotICAgIGlmICghUGFzc0tpdExpYnJhcnkoKSkgewotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQogI2lmIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAw
KSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwKQotICAgIGlmICghY2FuTG9hZF9QYXNzS2l0X1BLQ2FuTWFrZVBheW1l
bnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKCkpIHsK
LSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc29m
dExpbmtfUGFzc0tpdF9QS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21h
aW5BbmRTb3VyY2VBcHBsaWNhdGlvbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1f
d2ViUGFnZVByb3h5LnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5zb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKSwgQmxvY2tQdHI8dm9pZCAoQk9PTCwg
TlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oQk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSBt
dXRhYmxlIHsKKyAgICBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21h
aW5BbmRTb3VyY2VBcHBsaWNhdGlvbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1f
d2ViUGFnZVByb3h5LnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5zb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKSwgQmxvY2tQdHI8dm9pZChCT09MLCBO
U0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShCT09MIGNhbk1ha2VQYXltZW50cywgTlNFcnJvciAqZXJyb3IpIG11
dGFibGUgewogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBLQ2Fu
TWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIsIGVy
cm9yKTsKIApAQCAtMzI3LDE0ICsyNzIsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cgogICAg
ICAgICB9KTsKICAgICB9KS5nZXQoKSk7CiAjZWxzZQotICAgIGlmICghY2FuTG9hZF9QYXNzS2l0
X1BLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbigpKSB7Ci0g
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZmFsc2UpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNvZnRM
aW5rX1Bhc3NLaXRfUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9t
YWluKG1lcmNoYW50SWRlbnRpZmllciwgZG9tYWluTmFtZSwgQmxvY2tQdHI8dm9pZCAoQk9PTCwg
TlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oQk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSBt
dXRhYmxlIHsKKyAgICBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmRE
b21haW4obWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBCbG9ja1B0cjx2b2lkKEJPT0ws
IE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKEJPT0wgY2FuTWFrZVBheW1lbnRzLCBOU0Vycm9yICplcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIExPR19FUlJPUigiUEtD
YW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWluIGVycm9yICVAIiwg
ZXJyb3IpOwogCkBAIC0zNDcsMTQgKzI4NSw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyCiAK
IHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtT3BlblBheW1lbnRTZXR1
cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5O
YW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
I2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIVBhc3NLaXRMaWJyYXJ5KCkpIHsKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlm
Ci0KLSAgICBhdXRvIHBhc3NMaWJyYXJ5ID0gYWRvcHROUyhbYWxsb2NQS1Bhc3NMaWJyYXJ5SW5z
dGFuY2UoKSBpbml0XSk7CisgICAgYXV0byBwYXNzTGlicmFyeSA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NQS1Bhc3NMaWJyYXJ5SW5zdGFuY2UoKSBpbml0XSk7CiAgICAgW3Bhc3NMaWJyYXJ5IG9wZW5Q
YXltZW50U2V0dXBGb3JNZXJjaGFudElkZW50aWZpZXI6bWVyY2hhbnRJZGVudGlmaWVyIGRvbWFp
bjpkb21haW5OYW1lIGNvbXBsZXRpb246QmxvY2tQdHI8dm9pZCAoQk9PTCk+Ojpmcm9tQ2FsbGFi
bGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCByZXN1bHRdIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CkBAIC0zNjgsMTUgKzI5OSwxNSBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TU2V0PiB0b1BLQ29udGFjdEZpZWxkcyhjb25zdCBXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UgogICAgIFZlY3RvcjxOU1N0cmluZyAqPiByZXN1bHQ7
CiAKICAgICBpZiAoY29udGFjdEZpZWxkcy5wb3N0YWxBZGRyZXNzKQotICAgICAgICByZXN1bHQu
YXBwZW5kKGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpKTsKKyAgICAgICAgcmVzdWx0
LmFwcGVuZChQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpKTsK
ICAgICBpZiAoY29udGFjdEZpZWxkcy5waG9uZSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZChnZXRQ
S0NvbnRhY3RGaWVsZFBob25lTnVtYmVyKCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKFBBTDo6
Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQaG9uZU51bWJlcigpKTsKICAgICBpZiAoY29udGFj
dEZpZWxkcy5lbWFpbCkKLSAgICAgICAgcmVzdWx0LmFwcGVuZChnZXRQS0NvbnRhY3RGaWVsZEVt
YWlsQWRkcmVzcygpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChQQUw6OmdldF9QYXNzS2l0X1BL
Q29udGFjdEZpZWxkRW1haWxBZGRyZXNzKCkpOwogICAgIGlmIChjb250YWN0RmllbGRzLm5hbWUp
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0UEtDb250YWN0RmllbGROYW1lKCkpOworICAgICAg
ICByZXN1bHQuYXBwZW5kKFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGROYW1lKCkpOwog
ICAgIGlmIChjb250YWN0RmllbGRzLnBob25ldGljTmFtZSkKLSAgICAgICAgcmVzdWx0LmFwcGVu
ZChnZXRQS0NvbnRhY3RGaWVsZFBob25ldGljTmFtZSgpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZChQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lKCkpOwogCiAgICAg
cmV0dXJuIGFkb3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhPYmplY3RzOnJlc3VsdC5kYXRh
KCkgY291bnQ6cmVzdWx0LnNpemUoKV0pOwogfQpAQCAtNDE4LDcgKzM0OSw3IEBAIHN0YXRpYyBO
U0RlY2ltYWxOdW1iZXIgKnRvRGVjaW1hbE51bWJlcihjb25zdCBTdHJpbmcmIGFtb3VudCkKIAog
c3RhdGljIFJldGFpblB0cjxQS1BheW1lbnRTdW1tYXJ5SXRlbT4gdG9QS1BheW1lbnRTdW1tYXJ5
SXRlbShjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0
ZW0mIGxpbmVJdGVtKQogewotICAgIHJldHVybiBbZ2V0UEtQYXltZW50U3VtbWFyeUl0ZW1DbGFz
cygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOmxpbmVJdGVtLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxO
dW1iZXIobGluZUl0ZW0uYW1vdW50KSB0eXBlOnRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKGxp
bmVJdGVtLnR5cGUpXTsKKyAgICByZXR1cm4gW1BBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50U3Vt
bWFyeUl0ZW1DbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOmxpbmVJdGVtLmxhYmVsIGFtb3Vu
dDp0b0RlY2ltYWxOdW1iZXIobGluZUl0ZW0uYW1vdW50KSB0eXBlOnRvUEtQYXltZW50U3VtbWFy
eUl0ZW1UeXBlKGxpbmVJdGVtLnR5cGUpXTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxOU0FycmF5
PiB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyhjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXMmIHRvdGFsQW5kTGluZUl0ZW1zKQpAQCAt
NDc3LDcgKzQwOCw3IEBAIHN0YXRpYyBQS1NoaXBwaW5nVHlwZSB0b1BLU2hpcHBpbmdUeXBlKFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTCiAKIHN0YXRpYyBSZXRhaW5Q
dHI8UEtTaGlwcGluZ01ldGhvZD4gdG9QS1NoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRo
b2QpCiB7Ci0gICAgUmV0YWluUHRyPFBLU2hpcHBpbmdNZXRob2Q+IHJlc3VsdCA9IFtnZXRQS1No
aXBwaW5nTWV0aG9kQ2xhc3MoKSBzdW1tYXJ5SXRlbVdpdGhMYWJlbDpzaGlwcGluZ01ldGhvZC5s
YWJlbCBhbW91bnQ6dG9EZWNpbWFsTnVtYmVyKHNoaXBwaW5nTWV0aG9kLmFtb3VudCldOworICAg
IFJldGFpblB0cjxQS1NoaXBwaW5nTWV0aG9kPiByZXN1bHQgPSBbUEFMOjpnZXRfUGFzc0tpdF9Q
S1NoaXBwaW5nTWV0aG9kQ2xhc3MoKSBzdW1tYXJ5SXRlbVdpdGhMYWJlbDpzaGlwcGluZ01ldGhv
ZC5sYWJlbCBhbW91bnQ6dG9EZWNpbWFsTnVtYmVyKHNoaXBwaW5nTWV0aG9kLmFtb3VudCldOwog
ICAgIFtyZXN1bHQgc2V0SWRlbnRpZmllcjpzaGlwcGluZ01ldGhvZC5pZGVudGlmaWVyXTsKICAg
ICBbcmVzdWx0IHNldERldGFpbDpzaGlwcGluZ01ldGhvZC5kZXRhaWxdOwogCkBAIC01MTIsNyAr
NDQzLDcgQEAgc3RhdGljIFBLUGF5bWVudFJlcXVlc3RBUElUeXBlIHRvQVBJVHlwZShXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDoKIAogUmV0YWluUHRyPFBLUGF5bWVudFJl
cXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgY29u
c3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVS
TD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3QmIHBheW1lbnRSZXF1ZXN0KQogewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbYWxs
b2NQS1BheW1lbnRSZXF1ZXN0SW5zdGFuY2UoKSBpbml0XSk7CisgICAgYXV0byByZXN1bHQgPSBh
ZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdEluc3RhbmNlKCkgaW5pdF0pOwogCiAg
ICAgW3Jlc3VsdCBzZXRPcmlnaW5hdGluZ1VSTDpvcmlnaW5hdGluZ1VSTF07CiAKQEAgLTYzMiw3
MiArNTYzLDcyIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gdG9OU0Vycm9yKGNvbnN0IFdl
YkNvcmU6OlBheW1lbnRFcnJvciYgZXJyb3IpCiAKICAgICAgICAgc3dpdGNoICgqZXJyb3IuY29u
dGFjdEZpZWxkKSB7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0
RmllbGQ6OlBob25lTnVtYmVyOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0Nv
bnRhY3RGaWVsZFBob25lTnVtYmVyKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBB
TDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQaG9uZU51bWJlcigpOwogICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVs
ZDo6RW1haWxBZGRyZXNzOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0NvbnRh
Y3RGaWVsZEVtYWlsQWRkcmVzcygpOworICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6
OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkRW1haWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxk
OjpOYW1lOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0NvbnRhY3RGaWVsZE5h
bWUoKTsKKyAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0Nv
bnRhY3RGaWVsZE5hbWUoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgV2Vi
Q29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlBob25ldGljTmFtZToKLSAgICAgICAg
ICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQaG9uZXRpY05hbWUoKTsKKyAg
ICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVs
ZFBob25ldGljTmFtZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBXZWJD
b3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UG9zdGFsQWRkcmVzczoKLSAgICAgICAg
ICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7Cisg
ICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0Rmll
bGRQb3N0YWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdl
YkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpBZGRyZXNzTGluZXM6Ci0gICAgICAg
ICAgICBwa0NvbnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwor
ICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZp
ZWxkUG9zdGFsQWRkcmVzcygpOwogICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENO
UG9zdGFsQWRkcmVzc1N0cmVldEtleSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
Y2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6U3ViTG9jYWxpdHk6Ci0g
ICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVz
cygpOworICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29u
dGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwogICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9
IGdldENOUG9zdGFsQWRkcmVzc1N1YkxvY2FsaXR5S2V5KCk7CiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpMb2Nh
bGl0eToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQb3N0
YWxBZGRyZXNzKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NL
aXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBwb3N0YWxBZGRy
ZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzQ2l0eUtleSgpOwogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UG9z
dGFsQ29kZToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQ
b3N0YWxBZGRyZXNzKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bh
c3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBwb3N0YWxB
ZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzUG9zdGFsQ29kZUtleSgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RG
aWVsZDo6U3ViQWRtaW5pc3RyYXRpdmVBcmVhOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQg
PSBnZXRQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKKyAgICAgICAgICAgIHBrQ29udGFj
dEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsK
ICAgICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NTdWJBZG1p
bmlzdHJhdGl2ZUFyZWFLZXkoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
V2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkFkbWluaXN0cmF0aXZlQXJlYToK
LSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQb3N0YWxBZGRy
ZXNzKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtD
b250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5
ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3RhdGVLZXkoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkNvdW50cnk6
Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRk
cmVzcygpOworICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BL
Q29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwogICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tl
eSA9IGdldENOUG9zdGFsQWRkcmVzc0NvdW50cnlLZXkoKTsKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkNvdW50
cnlDb2RlOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0NvbnRhY3RGaWVsZFBv
c3RhbEFkZHJlc3MoKTsKKyAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFz
c0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKICAgICAgICAgICAgIHBvc3RhbEFk
ZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NJU09Db3VudHJ5Q29kZUtleSgpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OnBr
Q29udGFjdEZpZWxkIGZvcktleTpnZXRQS1BheW1lbnRFcnJvckNvbnRhY3RGaWVsZFVzZXJJbmZv
S2V5KCldOworICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OnBrQ29udGFjdEZpZWxkIGZvcktl
eTpQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNlckluZm9LZXko
KV07CiAgICAgICAgIGlmIChwb3N0YWxBZGRyZXNzS2V5KQotICAgICAgICAgICAgW3VzZXJJbmZv
IHNldE9iamVjdDpwb3N0YWxBZGRyZXNzS2V5IGZvcktleTpnZXRQS1BheW1lbnRFcnJvclBvc3Rh
bEFkZHJlc3NVc2VySW5mb0tleSgpXTsKKyAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6
cG9zdGFsQWRkcmVzc0tleSBmb3JLZXk6UEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRFcnJvclBv
c3RhbEFkZHJlc3NVc2VySW5mb0tleSgpXTsKICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHROUyhb
W05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOmdldFBLUGF5bWVudEVycm9yRG9tYWluKCkg
Y29kZTp0b1BLUGF5bWVudEVycm9yQ29kZShlcnJvci5jb2RlKSB1c2VySW5mbzp1c2VySW5mby5n
ZXQoKV0pOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21h
aW46UEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRFcnJvckRvbWFpbigpIGNvZGU6dG9QS1BheW1l
bnRFcnJvckNvZGUoZXJyb3IuY29kZSkgdXNlckluZm86dXNlckluZm8uZ2V0KCldKTsKIH0KIAog
c3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB0b05TRXJyb3JzKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpQYXltZW50RXJyb3I+JiBlcnJvcnMpCkBAIC03NjEsNyArNjkyLDcgQEAgdm9pZCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0
IHN0ZDo6b3B0aW8KIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIGF1dG8gc3RhdHVzID0g
cmVzdWx0ID8gcmVzdWx0LT5zdGF0dXMgOiBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1czo6U3VjY2VzczsKLSAgICBhdXRvIHBrUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgPSBh
ZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRX
aXRoU3RhdHVzOnRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhzdGF0dXMpIGVycm9yczpy
ZXN1bHQgPyB0b05TRXJyb3JzKHJlc3VsdC0+ZXJyb3JzKS5nZXQoKSA6IEBbIF1dKTsKKyAgICBh
dXRvIHBrUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQ
YXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6dG9QS1Bh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHN0YXR1cykgZXJyb3JzOnJlc3VsdCA/IHRvTlNFcnJv
cnMocmVzdWx0LT5lcnJvcnMpLmdldCgpIDogQFsgXV0pOwogICAgIG1fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9u
KHBrUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQuZ2V0KCkpOwogI2Vsc2UKICAgICBtX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRBdXRob3JpemVk
Q29tcGxldGlvbih0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMocmVzdWx0KSk7CkBAIC03
ODcsNyArNzE4LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1D
b21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IHMKICAgICAgICAgbV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1z
ID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXModXBkYXRlLT5uZXdUb3RhbEFuZExpbmVJdGVtcyk7
CiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKLSAgICBhdXRvIHBrU2hpcHBpbmdNZXRob2RVcGRh
dGUgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUlu
c3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKV0pOwor
ICAgIGF1dG8gcGtTaGlwcGluZ01ldGhvZFVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1Bh
eW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVu
dFN1bW1hcnlJdGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCldKTsKICAgICBtX3BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxl
dGlvbihwa1NoaXBwaW5nTWV0aG9kVXBkYXRlLmdldCgpKTsKICNlbHNlCiAgICAgbV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ01l
dGhvZENvbXBsZXRpb24oUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3MsIG1fcGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJ
dGVtcy5nZXQoKSk7CkBAIC04MzksNyArNzcwLDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihjb25zdAog
ICAgIH0KIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQotICAgIGF1dG8gcGtTaGlwcGluZ0NvbnRh
Y3RVcGRhdGUgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RV
cGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoRXJyb3JzOnVwZGF0ZSA/IHRvTlNFcnJvcnModXBkYXRl
LT5lcnJvcnMpLmdldCgpIDogQFsgXSBwYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQo
KSBzaGlwcGluZ01ldGhvZHM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMuZ2V0KCldKTsKKyAgICBhdXRvIHBrU2hpcHBpbmdDb250
YWN0VXBkYXRlID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0Nv
bnRhY3RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoRXJyb3JzOnVwZGF0ZSA/IHRvTlNFcnJvcnMo
dXBkYXRlLT5lcnJvcnMpLmdldCgpIDogQFsgXSBwYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVt
cy5nZXQoKSBzaGlwcGluZ01ldGhvZHM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMuZ2V0KCldKTsKICAgICBtX3BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nQ29udGFj
dENvbXBsZXRpb24ocGtTaGlwcGluZ0NvbnRhY3RVcGRhdGUuZ2V0KCkpOwogI2Vsc2UKICAgICBt
X3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNo
aXBwaW5nQ29udGFjdENvbXBsZXRpb24odG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHVw
ZGF0ZSksIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hp
cHBpbmdNZXRob2RzLmdldCgpLCBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkpOwpAQCAtODU2LDcgKzc4Nyw3IEBA
IHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50
TWV0aG9kU2VsZWN0aW9uKGNvbnN0IHN0CiAgICAgICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9IHRvUEtQYXltZW50
U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpOwogCiAjaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMTAwMDApCi0gICAgYXV0byBwa1BheW1lbnRNZXRob2RVcGRhdGUgPSBhZG9wdE5TKFth
bGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0
aFBheW1lbnRTdW1tYXJ5SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXSk7CisgICAgYXV0byBwa1BheW1l
bnRNZXRob2RVcGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFBheW1l
bnRNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczptX3Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5
SXRlbXMuZ2V0KCldKTsKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uKHBrUGF5bWVudE1ldGhv
ZFVwZGF0ZS5nZXQoKSk7CiAjZWxzZQogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24obV9wYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0
ZW1zLmdldCgpKTsKQEAgLTg2NiwxMiArNzk3LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oY29uc3Qgc3QK
IAogVmVjdG9yPFN0cmluZz4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQXZh
aWxhYmxlUGF5bWVudE5ldHdvcmtzKCkKIHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFQ
YXNzS2l0TGlicmFyeSgpKQotICAgICAgICByZXR1cm4geyB9OwotI2VuZGlmCi0gICAgCi0gICAg
TlNBcnJheTxQS1BheW1lbnROZXR3b3JrPiAqYXZhaWxhYmxlTmV0d29ya3MgPSBbZ2V0UEtQYXlt
ZW50UmVxdWVzdENsYXNzKCkgYXZhaWxhYmxlTmV0d29ya3NdOworICAgIE5TQXJyYXk8UEtQYXlt
ZW50TmV0d29yaz4gKmF2YWlsYWJsZU5ldHdvcmtzID0gW1BBTDo6Z2V0X1Bhc3NLaXRfUEtQYXlt
ZW50UmVxdWVzdENsYXNzKCkgYXZhaWxhYmxlTmV0d29ya3NdOwogICAgIFZlY3RvcjxTdHJpbmc+
IHJlc3VsdDsKICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhdmFpbGFibGVOZXR3
b3Jrcy5jb3VudCk7CiAgICAgZm9yIChQS1BheW1lbnROZXR3b3JrIG5ldHdvcmsgaW4gYXZhaWxh
YmxlTmV0d29ya3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBh
eS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KaW5k
ZXggYzBkZjNjODlkYjRjZjQxNzQ5OGFjMjY4ZTk5ZTExNWJhNDA1ZDc2Mi4uZjllMjgwZDFjOTU2
YTZkOGRlNzI1NDFmZmYwOTdmNThjZGVhYTg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUlPUy5tbQpAQCAtMzQsMTAgKzM0LDcgQEAKICNpbXBvcnQgPFBhc3NLaXQvUGFz
c0tpdC5oPgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgotI2ltcG9ydCA8d3RmL1NvZnRMaW5r
aW5nLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkKLVNPRlRfTElOS19DTEFTUyhQ
YXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOworI2ltcG9ydCA8
cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAt
NTQsNyArNTEsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNo
b3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaQogCiAgICAgYXV0byBwYXltZW50
UmVxdWVzdCA9IHRvUEtQYXltZW50UmVxdWVzdChtX3dlYlBhZ2VQcm94eSwgb3JpZ2luYXRpbmdV
UkwsIGxpbmtJY29uVVJMU3RyaW5ncywgcmVxdWVzdCk7CiAKLSAgICBtX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50UmVxdWVzdDpwYXltZW50
UmVxdWVzdC5nZXQoKV0pOworICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3QuZ2V0KCld
KTsKICAgICBpZiAoIW1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcikgewogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQppbmRleCA3NDE1OTM4M2YxOTU0MjdkYjk3
NjBhOGMwMWVjNzA2N2E2N2M2Zjk1Li4yZTk5Y2IxNDc3MjM3NWE0ZTg3YzI5ZjU3MmFmZTk3NWNm
YTE4NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCkBAIC0z
MCwyOSArMzAsMTggQEAKIAogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgiCi0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bh
c3NLaXRTUEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KICNpbXBv
cnQgPHd0Zi9CbG9ja1B0ci5oPgotI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLVNPRlRf
TElOS19QUklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChQYXNzS2l0KQotCi1TT0ZUX0xJTktfQ0xB
U1MoUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLVNPRlRf
TElOS19DT05TVEFOVChQYXNzS2l0LCBQS0V4dGVuc2lvblBheW1lbnRBdXRob3JpemF0aW9uVUlF
eHRlbnNpb25Qb2ludE5hbWUsIE5TU3RyaW5nICopOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNv
bnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpV
Ukw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIGlmICghUGFzc0tpdExpYnJhcnkoKSkgewotICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBh
dXRvIHBheW1lbnRSZXF1ZXN0ID0gdG9QS1BheW1lbnRSZXF1ZXN0KG1fd2ViUGFnZVByb3h5LCBv
cmlnaW5hdGluZ1VSTCwgbGlua0ljb25VUkxTdHJpbmdzLCByZXF1ZXN0KTsKIAogICAgIGF1dG8g
c2hvd1BheW1lbnRVSVJlcXVlc3RTZWVkID0gbV9zaG93UGF5bWVudFVJUmVxdWVzdFNlZWQ7CiAg
ICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKLSAgICBbZ2V0UEtQYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSByZXF1ZXN0Vmlld0NvbnRyb2xsZXJX
aXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3QuZ2V0KCkgY29tcGxldGlvbjpCbG9ja1B0
cjx2b2lkIChQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiwgTlNFcnJvciAq
KT46OmZyb21DYWxsYWJsZShbcGF5bWVudFJlcXVlc3QsIHNob3dQYXltZW50VUlSZXF1ZXN0U2Vl
ZCwgd2Vha1RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXIs
IE5TRXJyb3IgKmVycm9yKSB7CisgICAgW1BBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSByZXF1ZXN0Vmlld0NvbnRyb2xsZXJXaXRoUGF5
bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3QuZ2V0KCkgY29tcGxldGlvbjpCbG9ja1B0cjx2b2lk
KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqLCBOU0Vycm9yICopPjo6ZnJv
bUNhbGxhYmxlKFtwYXltZW50UmVxdWVzdCwgc2hvd1BheW1lbnRVSVJlcXVlc3RTZWVkLCB3ZWFr
VGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oUEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlciwgTlNFcnJv
ciAqZXJyb3IpIHsKICAgICAgICAgYXV0byBwYXltZW50Q29vcmRpbmF0b3JQcm94eSA9IHdlYWtU
aGlzLmdldCgpOwogICAgICAgICBpZiAoIXBheW1lbnRDb29yZGluYXRvclByb3h5KQogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
U2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDgzZmZlZDM0NWQyNjE2YTkxYzBh
ZTdiMzY4MzVlZmM4YjM5NGRkOTcuLjAzNzViODNiMmE3ZjUzYzYxYTlmZGM0NjhlYjFiNmFkNWFk
MTcyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93
c2luZ1dhcm5pbmdDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
YWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAi
U2FmZUJyb3dzaW5nU1BJLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4K
KyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CiAjaW1wb3J0
IDx3dGYvTGFuZ3VhZ2UuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhOWU1ZDA3MTEwYWNkM2Uy
MDQxNGE5MWZlMDljNWRkZGUyMDIxYWQ4Li5mNDQ0MWZkOWM3ZTMzZWFhZWRkMjhmZjdlNjZmMDU4
OGE2NWRiMzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTY4Niw4ICs2ODYsNiBAQAogCQkyRDkyQTc5NTIxMkI2QUQ0MDBGNDkzRkQg
LyogUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTJEOTBEMTEyODFDOTY2MDAxRUI5NjIgLyog
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi87IH07CiAJCTJEOTJBNzk2MjEy
QjZBREEwMEY0OTNGRCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTRBOUM1MzEyQjgxNkNGMDA4RkU5ODQg
LyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwICovOyB9OwogCQkyRDkyQTc5NzIxMkI2QURBMDBG
NDkzRkQgLyogUGx1Z2luSW5mb3JtYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzRjhDOEUxNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbklu
Zm9ybWF0aW9uLmNwcCAqLzsgfTsKLQkJMkQ5MkE3OTgyMTM0OEQ4NTAwRjQ5M0ZEIC8qIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFCMUY3N0QxRDFCMzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5TWFjLm1tICovOyB9OwotCQkyRDkyQTc5RjIxMzRCMDdFMDBGNDkzRkQg
LyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc3QjFEMUIzMEE5MDA3QzlCRDEgLyogV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0gKi87IH07CiAJCTJEOTMxMTY5MjEyRjYxQjIw
MDA0NEJGRSAvKiBXS0NvbnRlbnRWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZDQjRFM0QxOEJCRTA0NDAwMEZDRkM5IC8qIFdLQ29udGVudFZp
ZXcubW0gKi87IH07CiAJCTJEOTMxMTZBMjEyRjYxQjUwMDA0NEJGRSAvKiBXS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkNCNEU2QjE4QkJGMjZBMDAwRkNGQzkgLyogV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tICovOyB9OwogCQkyRDlFQTMwRDFBOTZDQjU5MDAyRDI4MDcgLyogV0tQYWdlSW5qZWN0ZWRC
dW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEOUVBMzBDMUE5NkNCNTkwMDJEMjgwNyAvKiBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
MTAxMCw4ICsxMTAwOCw2IEBACiAJCQkJN0NFOUNFMTAxRkEwNzY3QTAwMDE3N0RFIC8qIFdlYlBh
Z2VVcGRhdGVQcmVmZXJlbmNlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzQ2OTRDOTFBNEI0
RUExMDBBRDU4NDUgLyogV2ViUGFzdGVib2FyZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBQjFGNzk2MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29v
cmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMkQ5MkE3OUYy
MTM0QjA3RTAwRjQ5M0ZEIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tIGluIFNv
dXJjZXMgKi8sCi0JCQkJMkQ5MkE3OTgyMTM0OEQ4NTAwRjQ5M0ZEIC8qIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCMUY3OTgxRDFCMzYxMzAw
N0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTJEOTJBNzhEMjEyQjZBQjEwMEY0OTNGRCAvKiBXZWJQbGF0Zm9y
bVRvdWNoUG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MTM0NEUyMTJDRjlGMDAwMTI4
QUZEIC8qIFdlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355428</attachid>
            <date>2018-11-21 10:33:36 -0800</date>
            <delta_ts>2018-11-21 11:11:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191875-20181121103333.patch</filename>
            <type>text/plain</type>
            <size>69994</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQxMWQ5ZGVmOGIxMzhiNzExMTYwMWFh
YmVjYTM1OGQ4MTAxMDJhNzcuLjQxZWQzNjEzZDQxMTNjZTM5NTliMjA4ZDJmZmMzYmM3NjU5YmZh
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUg
Zm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MTg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL2NvY29hL1NvZnRMaW5raW5nLmg6CisKIDIwMTgtMTEtMTQgIEtlaXRoIFJvbGxp
biAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCAjZW5kIHZzLiAjZW5kaWYgdHlw
by4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwZjc0ZjdhMTlhOTQyMWNmNmNlMzMzYzFmMDY3ZmE2YWVlZTRlOGI3
Li5kY2MzZjI0NDcwZjMxNTYzZWYyMGJiM2VkNGZhYWI0ZWM0ZWUwMGUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBhc3NL
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg3
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9k
dWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydCk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50
TWVyY2hhbnRTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50TWVyY2hh
bnRTZXNzaW9uOjpmcm9tSlMpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUNvY29hOjpwYWludEFwcGxlUGF5QnV0dG9uKToKKwogMjAxOC0xMS0yMCAgRGVhbiBK
YWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZpbmcgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmUgZnJvbSBXZWJMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMGVkZWU1YzNh
YzhkZTI4NTA2NDUxNzY1ZTIwMTUwYmFlOGMzODlmNy4uMWE0MTg4Zjc1NDBjYWFjM2U3NTc1YWFi
ZGMxNTUxM2VlOGQ3NDJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2Nv
YV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOiBBZGRlZC4K
KyAgICAgICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tOiBBZGRlZC4KKyAgICAgICAg
KiBwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaDoKKwogMjAxOC0xMS0xNyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBSZW1vdmUgYWxsIHVz
YWdlcyBvZiBVSUl0ZW1Qcm92aWRlciwgVUlJdGVtUHJvdmlkZXJSZWFkaW5nLCBhbmQgcmVsYXRl
ZCBjbGFzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZlOGUzZTRkOGEwOWUxYmUzZjljYjU1ZmM3OTk0MTAyNTFk
YWI5NjUuLjMzZmY1NzA4NjViZjkyZTRkZGQxOGNkYTg4ZDE3ZmNiMDg4YzkyN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzcgQEAKKzIwMTgtMTEtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBh
c3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MTg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRDb250YWN0Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPjo6
ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0
aG9kPjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgaW52YWxpZGF0ZV0pOgorICAgICAgICAoLVtX
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyOmRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246XSk6CisgICAg
ICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkQXV0aG9yaXplUGF5bWVudDpoYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFBheW1lbnRN
ZXRob2Q6aGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRT
ZWxlY3RTaGlwcGluZ01ldGhvZDpoYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyOmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDpoYW5kbGVyOl0pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVu
dHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybU9wZW5QYXltZW50U2V0dXApOgorICAgICAg
ICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKToKKyAgICAgICAgKFdlYktpdDo6dG9Q
S1NoaXBwaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29t
cGxldGVQYXltZW50U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0
ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUF2
YWlsYWJsZVBheW1lbnROZXR3b3Jrcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2lv
cy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5t
bToKKwogMjAxOC0xMS0yMCAgSmVmZiBNaWxsZXIgIDxqZWZmbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV0dXJuIG51bGxwdHIgaW1tZWRpYXRlbHkgaWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0IGlu
IHRoZSBIYXNoTWFwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggZTJlYjc1YmNkYjMzYTczMTM2NDAyZGNkMDEy
ZGEwNzYzZmU2OGQ2ZS4uMzBjYTkwNWMyYTE0ZDg5MmE5MzVjZWU1OTc2ZTlkNGNjNGFhMDJmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCkBAIC02MTYsOSArNjE2LDEwIEBACiAKICNpZiBQTEFURk9STShNQUMpCiAK
LSNkZWZpbmUgVVNFX0FQUEtJVCAxCiAjZGVmaW5lIEhBVkVfUlVOTE9PUF9USU1FUiAxCiAjZGVm
aW5lIEhBVkVfU0VDX0tFWUNIQUlOIDEKKyNkZWZpbmUgVVNFX0FQUEtJVCAxCisjZGVmaW5lIFVT
RV9QQVNTS0lUIDEKIAogI2lmIENQVShYODZfNjQpCiAjZGVmaW5lIEhBVkVfTkVUV09SS19FWFRF
TlNJT04gMQpAQCAtMTA1Myw5ICsxMDU0LDEwIEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
UykKKyNkZWZpbmUgSEFWRV9BUFBfTElOS1MgMQorI2RlZmluZSBVU0VfUEFTU0tJVCAxCiAjZGVm
aW5lIFVTRV9RVUlDS19MT09LIDEKICNkZWZpbmUgVVNFX1NZU1RFTV9QUkVWSUVXIDEKLSNkZWZp
bmUgSEFWRV9BUFBfTElOS1MgMQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiAhUExBVEZPUk0oSU9TTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvU29m
dExpbmtpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1NvZnRMaW5raW5nLmgKaW5kZXggNmFl
ZWRhZTRhNjYzMzQ1NzYwNmJhN2UxY2JlZmZmNWVhNjNjMDgyZi4uZDJiNDI4M2JmZTMyY2UwM2Vk
OGJmN2VmYmQ2ZjA0MjI1YTQ0NDNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2Ev
U29mdExpbmtpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Tb2Z0TGlua2luZy5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMS0yMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzQwLDkgKzM0MCw5IEBACiAgICAgfSBcCiAgICAgfQogCi0jZGVmaW5l
IFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrKSBcCisjZGVmaW5lIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBleHBvcnQpIFwKICAgICBuYW1lc3BhY2Ug
ZnVuY3Rpb25OYW1lc3BhY2UgeyBcCi0gICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KGJvb2wg
aXNPcHRpb25hbCA9IGZhbHNlKTsgXAorICAgIGV4cG9ydCB2b2lkKiBmcmFtZXdvcmsjI0xpYnJh
cnkoYm9vbCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCiAgICAgdm9pZCogZnJhbWV3b3JrIyNMaWJy
YXJ5KGJvb2wgaXNPcHRpb25hbCkgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgdm9pZCogZnJh
bWV3b3JrTGlicmFyeTsgXApAQCAtMzU2LDkgKzM1NiwxMiBAQAogICAgIH0gXAogICAgIH0KIAot
I2RlZmluZSBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRShmdW5jdGlvbk5h
bWVzcGFjZSwgZnJhbWV3b3JrKSBcCisjZGVmaW5lIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NP
VVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrKSBcCisgICAgU09GVF9MSU5LX0ZSQU1F
V09SS19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmss
ICkKKworI2RlZmluZSBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBleHBvcnQpIFwKICAgICBuYW1l
c3BhY2UgZnVuY3Rpb25OYW1lc3BhY2UgeyBcCi0gICAgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5
KGJvb2wgaXNPcHRpb25hbCA9IGZhbHNlKTsgXAorICAgIGV4cG9ydCB2b2lkKiBmcmFtZXdvcmsj
I0xpYnJhcnkoYm9vbCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCiAgICAgdm9pZCogZnJhbWV3b3Jr
IyNMaWJyYXJ5KGJvb2wgaXNPcHRpb25hbCkgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgdm9p
ZCogZnJhbWV3b3JrTGlicmFyeTsgXApAQCAtMzcyLDYgKzM3NSw5IEBACiAgICAgfSBcCiAgICAg
fQogCisjZGVmaW5lIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19GT1JfU09VUkNFKGZ1bmN0
aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmspIFwKKyAgICBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdP
UktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCAp
CisKICNkZWZpbmUgU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoZnVuY3Rpb25OYW1lc3BhY2Us
IGZyYW1ld29yaywgY2xhc3NOYW1lKSBcCiAgICAgQGNsYXNzIGNsYXNzTmFtZTsgXAogICAgIG5h
bWVzcGFjZSBmdW5jdGlvbk5hbWVzcGFjZSB7IFwKQEAgLTM4MywxMSArMzg5LDExIEBACiAgICAg
fSBcCiAgICAgfQogCi0jZGVmaW5lIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKGZ1bmN0aW9u
TmFtZXNwYWNlLCBmcmFtZXdvcmssIGNsYXNzTmFtZSkgXAorI2RlZmluZSBTT0ZUX0xJTktfQ0xB
U1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBj
bGFzc05hbWUsIGV4cG9ydCkgXAogICAgIEBjbGFzcyBjbGFzc05hbWU7IFwKICAgICBuYW1lc3Bh
Y2UgZnVuY3Rpb25OYW1lc3BhY2UgeyBcCiAgICAgc3RhdGljIENsYXNzIGluaXQjI2NsYXNzTmFt
ZSgpOyBcCi0gICAgQ2xhc3MgKCpnZXRfIyNmcmFtZXdvcmsjI18jI2NsYXNzTmFtZSMjQ2xhc3Mp
KCkgPSBpbml0IyNjbGFzc05hbWU7IFwKKyAgICBleHBvcnQgQ2xhc3MgKCpnZXRfIyNmcmFtZXdv
cmsjI18jI2NsYXNzTmFtZSMjQ2xhc3MpKCkgPSBpbml0IyNjbGFzc05hbWU7IFwKICAgICBzdGF0
aWMgQ2xhc3MgY2xhc3MjI2NsYXNzTmFtZTsgXAogICAgIFwKICAgICBzdGF0aWMgQ2xhc3MgY2xh
c3NOYW1lIyNGdW5jdGlvbigpIFwKQEAgLTQwOCw2ICs0MTQsOSBAQAogICAgIH0gXAogICAgIH0K
IAorI2RlZmluZSBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwg
ZnJhbWV3b3JrLCBjbGFzc05hbWUpIFwKKyAgICBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBjbGFzc05hbWUsICkKKwog
I2RlZmluZSBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwg
ZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSkgXAogICAgIFdURl9FWFRFUk5f
Q19CRUdJTiBcCiAgICAgZXh0ZXJuIGNvbnN0IHZhcmlhYmxlVHlwZSB2YXJpYWJsZU5hbWU7IFwK
QEAgLTQ4OSwxMyArNDk4LDEzIEBACiAgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWVzcGFjZTo6
c29mdExpbmsjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlck5hbWVzOyBcCiAgICAg
fQogCi0jZGVmaW5lIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNw
YWNlLCBmcmFtZXdvcmssIGZ1bmN0aW9uTmFtZSwgcmVzdWx0VHlwZSwgcGFyYW1ldGVyRGVjbGFy
YXRpb25zLCBwYXJhbWV0ZXJOYW1lcykgXAorI2RlZmluZSBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlv
bk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMs
IGV4cG9ydCkgXAogICAgIFdURl9FWFRFUk5fQ19CRUdJTiBcCiAgICAgcmVzdWx0VHlwZSBmdW5j
dGlvbk5hbWUgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCiAgICAgV1RGX0VYVEVSTl9DX0VORCBc
CiAgICAgbmFtZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAogICAgIHN0YXRpYyByZXN1bHRU
eXBlIGluaXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9uczsg
XAotICAgIHJlc3VsdFR5cGUgKCpzb2Z0TGluayMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUpIHBh
cmFtZXRlckRlY2xhcmF0aW9ucyA9IGluaXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lOyBcCisg
ICAgZXhwb3J0IHJlc3VsdFR5cGUoKnNvZnRMaW5rIyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSkg
cGFyYW1ldGVyRGVjbGFyYXRpb25zID0gaW5pdCMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWU7IFwK
ICAgICBzdGF0aWMgcmVzdWx0VHlwZSBpbml0IyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSBwYXJh
bWV0ZXJEZWNsYXJhdGlvbnMgXAogICAgIHsgXAogICAgICAgICBzdGF0aWMgZGlzcGF0Y2hfb25j
ZV90IG9uY2U7IFwKQEAgLTUwNyw2ICs1MTYsOSBAQAogICAgIH0gXAogICAgIH0KIAorI2RlZmlu
ZSBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3
b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFy
YW1ldGVyTmFtZXMpIFwKKyAgICBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VY
UE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5
cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMsICkKKwogI2RlZmluZSBT
T0ZUX0xJTktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwg
ZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9u
cywgcGFyYW1ldGVyTmFtZXMpIFwKICAgICBXVEZfRVhURVJOX0NfQkVHSU4gXAogICAgIHJlc3Vs
dFR5cGUgZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9uczsgXApAQCAtNTUyLDEwICs1
NjQsMTAgQEAKICAgICBleHRlcm4gdmFyaWFibGVUeXBlICgqZ2V0XyMjZnJhbWV3b3JrIyNfIyN2
YXJpYWJsZU5hbWUpKCk7IFwKICAgICB9CiAKLSNkZWZpbmUgU09GVF9MSU5LX1BPSU5URVJfRk9S
X1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlh
YmxlVHlwZSkgXAorI2RlZmluZSBTT0ZUX0xJTktfUE9JTlRFUl9GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVU
eXBlLCBleHBvcnQpIFwKICAgICBuYW1lc3BhY2UgZnVuY3Rpb25OYW1lc3BhY2UgeyBcCiAgICAg
c3RhdGljIHZhcmlhYmxlVHlwZSBpbml0IyNmcmFtZXdvcmsjI3ZhcmlhYmxlTmFtZSgpOyBcCi0g
ICAgdmFyaWFibGVUeXBlICgqZ2V0XyMjZnJhbWV3b3JrIyNfIyN2YXJpYWJsZU5hbWUpKCkgPSBp
bml0IyNmcmFtZXdvcmsjI3ZhcmlhYmxlTmFtZTsgXAorICAgIGV4cG9ydCB2YXJpYWJsZVR5cGUg
KCpnZXRfIyNmcmFtZXdvcmsjI18jI3ZhcmlhYmxlTmFtZSkoKSA9IGluaXQjI2ZyYW1ld29yayMj
dmFyaWFibGVOYW1lOyBcCiAgICAgc3RhdGljIHZhcmlhYmxlVHlwZSBwb2ludGVyIyNmcmFtZXdv
cmsjI3ZhcmlhYmxlTmFtZTsgXAogICAgIFwKICAgICBzdGF0aWMgdmFyaWFibGVUeXBlIHBvaW50
ZXIjI2ZyYW1ld29yayMjdmFyaWFibGVOYW1lIyNGdW5jdGlvbigpIFwKQEAgLTU3Niw2ICs1ODgs
OSBAQAogICAgIH0gXAogICAgIH0KIAorI2RlZmluZSBTT0ZUX0xJTktfUE9JTlRFUl9GT1JfU09V
UkNFKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVU
eXBlKSBcCisgICAgU09GVF9MSU5LX1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChmdW5j
dGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSwgKQor
CiAjZGVmaW5lIFNPRlRfTElOS19WQVJJQUJMRV9GT1JfSEVBREVSKGZ1bmN0aW9uTmFtZXNwYWNl
LCBmcmFtZXdvcmssIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVUeXBlKSBcCiAgICAgV1RGX0VYVEVS
Tl9DX0JFR0lOIFwKICAgICBleHRlcm4gdmFyaWFibGVUeXBlIHZhcmlhYmxlTmFtZTsgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29u
dGFjdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXlt
ZW50Q29udGFjdENvY29hLm1tCmluZGV4IDBiMDIwNGM4NmQ4YTM2YTVkNGE3NTI5OGQwZjQxYTM0
NDYxNTAzZWUuLmNjOTdmZDVlMWY2MjM0NTk5ZWI4ODRjYTgxODdmYjJjZDA4NTdjNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRh
Y3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1Bh
eW1lbnRDb250YWN0Q29jb2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbXBvcnQgIkFwcGxl
UGF5UGF5bWVudENvbnRhY3QuaCIKICNpbXBvcnQgPENvbnRhY3RzL0NvbnRhY3RzLmg+Ci0jaW1w
b3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNz
S2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0zOCwxNCArMzgsNiBAQCBTT0ZUX0xJTktfRlJB
TUVXT1JLKENvbnRhY3RzKQogU09GVF9MSU5LX0NMQVNTKENvbnRhY3RzLCBDTk11dGFibGVQb3N0
YWxBZGRyZXNzKQogU09GVF9MSU5LX0NMQVNTKENvbnRhY3RzLCBDTlBob25lTnVtYmVyKQogCi0j
aWYgUExBVEZPUk0oTUFDKQotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFBhc3NLaXQpCi0j
ZWxzZQotU09GVF9MSU5LX0ZSQU1FV09SSyhQYXNzS2l0KQotI2VuZGlmCi0KLVNPRlRfTElOS19D
TEFTUyhQYXNzS2l0LCBQS0NvbnRhY3QpCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IE5TU3RyaW5nICpzdWJMb2NhbGl0eShDTlBvc3RhbEFkZHJlc3MgKmFkZHJlc3MpCkBAIC0xMDYs
NyArOTgsNyBAQCBzdGF0aWMgdm9pZCBzZXRTdWJBZG1pbmlzdHJhdGl2ZUFyZWEoQ05NdXRhYmxl
UG9zdGFsQWRkcmVzcyAqYWRkcmVzcywgTlNTdHJpbmcgKgogCiBzdGF0aWMgUmV0YWluUHRyPFBL
Q29udGFjdD4gY29udmVydCh1bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBBcHBsZVBheVBheW1lbnRD
b250YWN0JiBjb250YWN0KQogewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS0Nv
bnRhY3RJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1BBTDo6
YWxsb2NQS0NvbnRhY3RJbnN0YW5jZSgpIGluaXRdKTsKIAogICAgIE5TU3RyaW5nICpmYW1pbHlO
YW1lID0gbmlsOwogICAgIE5TU3RyaW5nICpwaG9uZXRpY0ZhbWlseU5hbWUgPSBuaWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJj
aGFudFNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCmluZGV4IDgxYzhjY2I3MzhhN2Y5MzU0
MTIxYzhhMjhkNjc5MzVjMzEyNzZjYWIuLmZjMzZjODk1MzE0OWY0MzMwYmQ5NTFhNmFlYzIyYjhl
ZmIyZTBkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDE2
ICsyOSw3IEBACiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAogI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSlNPTk9iamVjdC5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+Ci0j
aW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElO
S19QUklWQVRFX0ZSQU1FV09SSyhQYXNzS2l0KQotI2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUkso
UGFzc0tpdCkKLSNlbmRpZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50TWVy
Y2hhbnRTZXNzaW9uKQorI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUzLDcgKzQ0LDcgQEAgc3RkOjpvcHRpb25hbDxQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uPiBQYXltZW50TWVyY2hhbnRTZXNzaW9uOjpmcm9tSlMoSlNDOjpF
eGVjU3QKICAgICBpZiAoIWRpY3Rpb25hcnkgfHwgIVtkaWN0aW9uYXJ5IGlzS2luZE9mQ2xhc3M6
W05TRGljdGlvbmFyeSBjbGFzc11dKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgYXV0byBwa1BheW1lbnRNZXJjaGFudFNlc3Npb24gPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVu
dE1lcmNoYW50U2Vzc2lvbkluc3RhbmNlKCkgaW5pdFdpdGhEaWN0aW9uYXJ5OmRpY3Rpb25hcnld
KTsKKyAgICBhdXRvIHBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NQS1BheW1lbnRNZXJjaGFudFNlc3Npb25JbnN0YW5jZSgpIGluaXRXaXRoRGljdGlvbmFyeTpk
aWN0aW9uYXJ5XSk7CiAKICAgICByZXR1cm4gUGF5bWVudE1lcmNoYW50U2Vzc2lvbihwa1BheW1l
bnRNZXJjaGFudFNlc3Npb24uZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BB
TC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIxNTUyZGY3Zjc1ZmM1MzliYjg3NTZk
MDg0OWI1NGQ2ODY5NTU0MDkuLjc3ZjI0NjczZTUxNzM2OTdmNWNiY2U3ZWMzYTQ1MjE2Y2Y0ODMx
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEzMSw2ICsxMzEsOCBAQAogCQlBMTE3NUI1ODFGNkI0NzA1MDBDNEI5RjAgLyog
RGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMTc1QjU2MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNo
UHJvdmlkZXIuY3BwICovOyB9OwogCQlBMTE3NUI1QTFGNkI0QTg0MDBDNEI5RjAgLyogTlNTY3Jv
bGxWaWV3U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMTE3NUI1OTFGNkI0QTg0MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggKi87IH07CiAJ
CUExRjU1RENGMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVG
IC8qIE1ldGFkYXRhU1BJLmggKi87IH07CisJCUExRjYzQzlGMjFBNERCRjcwMDZGQjQzQiAvKiBQ
YXNzS2l0U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExRjYzQzlEMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLzsg
fTsKKwkJQTFGNjNDQTAyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjYzQzlFMjFBNERC
RjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsubW0gKi87IH07CiAJCUEzMEQ0MTIxMUYwREQw
RUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggKi87
IH07CiAJCUEzMEQ0MTIyMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzBENDExRjFGMEREMEVBMDBC
NzE5NTQgLyogS2lsbFJpbmcuY3BwICovOyB9OwogCQlBMzBENDEyNTFGMEREMTJEMDBCNzE5NTQg
LyogS2lsbFJpbmdNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMzBENDEyNDFGMEREMTJEMDBCNzE5NTQgLyogS2lsbFJpbmdNYWMubW0gKi87IH07
CkBAIC0yODcsNiArMjg5LDggQEAKIAkJQTExNzVCNTYxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1
bHRTZWFyY2hQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZhdWx0U2VhcmNoUHJv
dmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE3NUI1OTFGNkI0QTg0
MDBDNEI5RjAgLyogTlNTY3JvbGxWaWV3U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TU2Nyb2xsVmll
d1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUY1NURDRTFGNTUyOEVDMDBF
REI3NUYgLyogTWV0YWRhdGFTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0YWRhdGFTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFGNjNDOUQyMUE0REJGNzAwNkZCNDNCIC8qIFBh
c3NLaXRTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXNzS2l0U29mdExpbmsuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFGNjNDOUUyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NL
aXRTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3NLaXRTb2Z0TGluay5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8q
IEtpbGxSaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtpbGxSaW5nLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTFGMUYwREQwRUEwMEI3MTk1NCAv
KiBLaWxsUmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLaWxs
UmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTI0MUYwREQxMkQw
MEI3MTk1NCAvKiBLaWxsUmluZ01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEtpbGxSaW5nTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTYwLDYgKzU2NCw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJ
CUY0NDI5MTY2MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1tICov
LAorCQkJCUExRjYzQzlEMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLywK
KwkJCQlBMUY2M0M5RTIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tICovLAog
CQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03
MjksNiArNzM1LDcgQEAKIAkJCQkwQzc3ODU5RDFGNDUxMzBGMDBGNEVCQjYgLyogTlNXaW5kb3dT
UEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MEFCOEY5MjBBRjZFM0QwMEI4QkU4NyAvKiBOU1hQ
Q0Nvbm5lY3Rpb25TUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNUFGOTFGMUY0M0E0QzcwMDJF
QUMwMiAvKiBPcGVuR0xFU1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFGNjNDOUYyMUE0REJG
NzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREEx
NTUxRjNCRUI0OTAwREJDMzE3IC8qIFBhc3NLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBD
Nzc4NTlFMUY0NTEzMEYwMEY0RUJCNiAvKiBQSVBTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
MTc1QjRFMUY2QjMzNzMwMEM0QjlGMCAvKiBQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovLApAQCAt
ODU0LDYgKzg2MSw3IEBACiAJCQkJQTMwRDQxMjUxRjBERDEyRDAwQjcxOTU0IC8qIEtpbGxSaW5n
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM0ODc2RDgxRjhEN0Y0RTAwQ0NFRUJEIC8qIExv
Z2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMENGOTlDQTQxRjczNjM3NTAwN0VFNzkzIC8q
IE1lZGlhVGltZUFWRm91bmRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUY2M0NBMDIx
QTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTExNzVCNEYxRjZCMzM3MzAwQzRCOUYwIC8qIFBvcHVwTWVudS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUEzQzY2Q0RDMUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTNBQjZFNTIxRjNEMURDNTAwOUMxNEIxIC8qIFNsZWVwRGlzYWJsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45OGFlMTRjMTRmNDJjMDJmYWQyYzdhODQ3NjBjNTk0MTQ2YWM2
N2IzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNz
S2l0U29mdExpbmsuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBVU0UoUEFTU0tJVCkKKworI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
Lmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19G
T1JfSEVBREVSKFBBTCwgUGFzc0tpdCkKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBQYXNzS2l0LCBQS0NvbnRhY3QpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBh
c3NLaXQsIFBLUGFzc0xpYnJhcnkpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBh
c3NLaXQsIFBLUGF5bWVudCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tp
dCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKQorU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRNZXRob2QpCitTT0ZUX0xJTktfQ0xB
U1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbikKK1NP
RlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdCkK
K1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U3VtbWFy
eUl0ZW0pCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLU2hpcHBp
bmdNZXRob2QpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwg
UEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWluLCB2b2lkLCAo
TlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIFBLQ2FuTWFrZVBheW1lbnRz
Q29tcGxldGlvbiBjb21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgY29tcGxldGlvbikp
CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLRHJhd0FwcGxl
UGF5QnV0dG9uLCB2b2lkLCAoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCBkcmF3UmVjdCwg
Q0dGbG9hdCBzY2FsZSwgUEtQYXltZW50QnV0dG9uVHlwZSB0eXBlLCBQS1BheW1lbnRCdXR0b25T
dHlsZSBzdHlsZSwgTlNTdHJpbmcgKmxhbmd1YWdlQ29kZSksIChjb250ZXh0LCBkcmF3UmVjdCwg
c2NhbGUsIHR5cGUsIHN0eWxlLCBsYW5ndWFnZUNvZGUpKQorCisjaWYgUExBVEZPUk0oTUFDKQor
U09GVF9MSU5LX1BPSU5URVJfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLRXh0ZW5zaW9uUGF5
bWVudEF1dGhvcml6YXRpb25VSUV4dGVuc2lvblBvaW50TmFtZSwgTlNTdHJpbmcgKikKKyNlbmRp
ZgorCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVS
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCkKK1NPRlRfTElOS19D
TEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRo
b2RVcGRhdGUpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5
bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hF
QURFUihQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSkK
KworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQ
YXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlvbiwg
dm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBOU1N0cmluZyAq
c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBQS0Nhbk1ha2VQYXltZW50c0Nv
bXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBkb21haW4sIHNvdXJjZUFwcGxpY2F0
aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgY29tcGxldGlvbikpCisKK1NPRlRfTElOS19QT0lOVEVS
X0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZEVtYWlsQWRkcmVzcywgTlNT
dHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0Nv
bnRhY3RGaWVsZE5hbWUsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUl9GT1JfSEVBREVS
KFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQaG9uZU51bWJlciwgTlNTdHJpbmcgKikKK1NP
RlRfTElOS19QT0lOVEVSX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBo
b25ldGljTmFtZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9IRUFERVIoUEFM
LCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MsIE5TU3RyaW5nICopCitTT0ZU
X0xJTktfUE9JTlRFUl9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JDb250
YWN0RmllbGRVc2VySW5mb0tleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9I
RUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvckRvbWFpbiwgTlNTdHJpbmcgKikKK1NP
RlRfTElOS19QT0lOVEVSX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvclBv
c3RhbEFkZHJlc3NVc2VySW5mb0tleSwgTlNTdHJpbmcgKikKKyNlbmRpZgorCisjZW5kaWYgLy8g
VVNFKFBBU1NLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNv
ZnRMaW5rLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2ZTlkYjIzYWZiMTAxMDE5YjM0MTY5ZTYzODg4Yjc0ZGFm
MWVkODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5tbQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisKKyNpZiBVU0UoUEFTU0tJVCkKKworI2ltcG9ydCAiUGFzc0tpdFNQSS5oIgor
I2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpZiBQTEFURk9STShNQUMpCitTT0ZUX0xJ
TktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQs
IFBBTF9FWFBPUlQpCisjZWxzZQorU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEFMX0VYUE9SVCkKKyNlbmRpZgorCitTT0ZUX0xJTktfQ0xB
U1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdCwgUEFMX0VY
UE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tp
dCwgUEtQYXNzTGlicmFyeSwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50LCBQQUxfRVhQT1JUKQorU09GVF9M
SU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1Nf
Rk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudE1lcmNoYW50U2Vz
c2lvbiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50TWV0aG9kLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0
LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFM
LCBQYXNzS2l0LCBQS1BheW1lbnRTdW1tYXJ5SXRlbSwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19D
TEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtTaGlwcGluZ01ldGhv
ZCwgUEFMX0VYUE9SVCkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBP
UlQoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJB
bmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwg
UEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmllciwgZG9t
YWluLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFBBTCwgUGFzc0tpdCwgUEtEcmF3QXBwbGVQYXlCdXR0b24sIHZvaWQsIChDR0NvbnRleHRS
ZWYgY29udGV4dCwgQ0dSZWN0IGRyYXdSZWN0LCBDR0Zsb2F0IHNjYWxlLCBQS1BheW1lbnRCdXR0
b25UeXBlIHR5cGUsIFBLUGF5bWVudEJ1dHRvblN0eWxlIHN0eWxlLCBOU1N0cmluZyAqbGFuZ3Vh
Z2VDb2RlKSwgKGNvbnRleHQsIGRyYXdSZWN0LCBzY2FsZSwgdHlwZSwgc3R5bGUsIGxhbmd1YWdl
Q29kZSkpCisKKyNpZiBQTEFURk9STShNQUMpCitTT0ZUX0xJTktfUE9JTlRFUl9GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtFeHRlbnNpb25QYXltZW50QXV0aG9yaXphdGlv
blVJRXh0ZW5zaW9uUG9pbnROYW1lLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQorI2VuZGlmCisK
KyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0LCBQQUxf
RVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNz
S2l0LCBQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSwgUEFMX0VYUE9SVCkKK1NP
RlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXlt
ZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19D
TEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVz
dFNoaXBwaW5nTWV0aG9kVXBkYXRlLCBQQUxfRVhQT1JUKQorCitTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0
aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uLCB2b2lkLCAoTlNT
dHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIE5TU3RyaW5nICpzb3VyY2VBcHBs
aWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbiBj
b21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgc291cmNlQXBwbGljYXRpb25TZWNvbmRh
cnlJZGVudGlmaWVyLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKKworU09GVF9MSU5LX1BPSU5U
RVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkRW1h
aWxBZGRyZXNzLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX1BPSU5URVJfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkTmFtZSwgTlNT
dHJpbmcgKiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBob25lTnVtYmVyLCBOU1N0cmluZyAq
LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lLCBOU1N0cmluZyAqLCBQQUxf
RVhQT1JUKQorU09GVF9MSU5LX1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBh
c3NLaXQsIFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcywgTlNTdHJpbmcgKiwgUEFMX0VYUE9S
VCkKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0
LCBQS1BheW1lbnRFcnJvckNvbnRhY3RGaWVsZFVzZXJJbmZvS2V5LCBOU1N0cmluZyAqLCBQQUxf
RVhQT1JUKQorU09GVF9MSU5LX1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBh
c3NLaXQsIFBLUGF5bWVudEVycm9yRG9tYWluLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQorU09G
VF9MSU5LX1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5
bWVudEVycm9yUG9zdGFsQWRkcmVzc1VzZXJJbmZvS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JU
KQorI2VuZGlmCisKKyNlbmRpZiAvLyBVU0UoUEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaAppbmRleCBiNWU1OTMwMzI3MWZiNTgxYWIzNDlh
Yjk1Zjc0MzIwOTE0OGFhMjU4Li43N2NiNmUxZDcwM2U3YmM5NWIzMzMyZDA3ZTU1ZTcxNDgzM2Yx
ZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0
U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5o
CkBAIC0zOSw4ICszOSw4IEBACiAKICNlbGlmIFBMQVRGT1JNKE1BQykKIAorI2ltcG9ydCA8QXBw
S2l0L0FwcEtpdC5oPgogI2ltcG9ydCA8Q29udGFjdHMvQ29udGFjdHMuaD4KLSNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCkBAIC0y
MjUsNyArMjI1LDcgQEAgdHlwZWRlZiBOU1N0cmluZyAqIFBLUGF5bWVudE5ldHdvcmsgTlNfRVhU
RU5TSUJMRV9TVFJJTkdfRU5VTTsKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKLSNlbmRpZgor
I2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIApAQCAt
MjYxLDcgKzI2MSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBQS1BheW1lbnRSZXF1
ZXN0QVBJVHlwZSkgewogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAotI2VuZGlmCisjZW5kaWYg
Ly8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShB
UFBMRV9JTlRFUk5BTF9TREspCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBQS1BheW1lbnRC
dXR0b25TdHlsZSkgewpAQCAtMzI0LDQgKzMyNCw2IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lO
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU1N0cmluZyAqQ1REYXRhQ29ubmVjdGlv
blNlcnZpY2VUeXBlOwogQGVuZAogCit0eXBlZGVmIHZvaWQgKF5QS0Nhbk1ha2VQYXltZW50c0Nv
bXBsZXRpb24pKEJPT0wgaXNWYWxpZCwgTlNFcnJvciAqKTsKKwogTlNfQVNTVU1FX05PTk5VTExf
RU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBhMTQ4MGZiYTZmOTQwYTZiNjg3ZDNjM2U5
MGYwYTUxZjEzMWY3NzFiLi42NWViYzg0MzY2MjAxZDU4OWY3NGE1YTVmZjU0OTgxM2JlZmJhNzA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTU4OCw3ICs1ODgsNyBAQCBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5jcHAKIAogICAgIE1v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCiAgICAgTW9kdWxlcy9hcHBsZXBh
eS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tCi0gICAgTW9kdWxlcy9hcHBsZXBheS9jb2Nv
YS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0gQG5vLXVuaWZ5CisgICAgTW9kdWxlcy9h
cHBsZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0KICAgICBNb2R1bGVz
L2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQogCiAgICAgTW9kdWxlcy9hcHBs
ZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMyMzM0
YzYwNGU3M2I4NjA4MjViODkwNTdiYzlhODk0MTk5ZWIxMzUuLjRlNDcwMjcwYzIwMzUzYzAzYTBh
NjZjODA5ZGI1MzBkZTQ5NjM3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ0NzEsNyArNDQ3MSw2IEBACiAJCURFNUY4NjBE
MUZBMjM4NkIwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDc4LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4NUQyMUZBMjM4NTYwMDZEQjYzQSAv
KiBVbmlmaWVkU291cmNlNDc4LmNwcCAqLzsgfTsKIAkJREU1Rjg2MEUxRkEyMzg2QjAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2U0NzkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gREU1Rjg1Q0YxRkEyMzg1MDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0
NzkuY3BwICovOyB9OwogCQlERTVGODYwRjFGQTIzODZCMDA2REI2M0EgLyogVW5pZmllZFNvdXJj
ZTQ4MC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBE
RTVGODVEMzFGQTIzODU5MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ4MC5jcHAgKi87IH07Ci0J
CURFNUY4NjEwMUZBMjM4RDkwMDZEQjYzQSAvKiBQYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2Eu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQURBNEEx
QjFEMjJGMkMwMDA1QTlBMTUgLyogUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tICovOyB9
OwogCQlERTVGODYxMTFGQTIzOURBMDA2REI2M0EgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRl
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Uy
OUU1QzE2N0E4QTE5MDA1ODZEM0QgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAgKi87
IH07CiAJCURFNUY4NjEyMUZBMjM5RTcwMDZEQjYzQSAvKiBKU0dDT2JzZXJ2YXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTRFQUUxQ0Y2
NjU0QTAwNDcyM0M0IC8qIEpTR0NPYnNlcnZhdGlvbi5jcHAgKi87IH07CiAJCURFNUY4NjFEMUZB
MjgxNUIwMDZEQjYzQSAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBNDc4QTdFMTZDRDcw
QzMwMDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSAqLzsgfTsK
QEAgLTMyMDg1LDcgKzMyMDg0LDcgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7Ci0JCQlzaGVsbFNjcmlw
dCA9ICJpZiBbIFwiJHtBQ1RJT059XCIgPSBcImluc3RhbGxoZHJzXCIgLW8gXCIke0FDVElPTn1c
IiA9IFwiaW5zdGFsbGFwaVwiIF07IHRoZW5cbiAgICBleGl0IDA7XG5maVxuXG5pZiBbIC1mIC4u
Ly4uL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLXdlYWstdnRhYmxlcy1hbmQtZXh0ZXJuYWxzIF07
IHRoZW5cbiAgICAuLi8uLi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci13ZWFrLXZ0YWJsZXMtYW5k
LWV4dGVybmFscyB8fCBleGl0ICQ/XG5maSI7CisJCQlzaGVsbFNjcmlwdCA9ICJpZiBbIFwiJHtB
Q1RJT059XCIgPSBcImluc3RhbGxoZHJzXCIgLW8gXCIke0FDVElPTn1cIiA9IFwiaW5zdGFsbGFw
aVwiIF07IHRoZW5cbiAgICBleGl0IDA7XG5maVxuXG5pZiBbIC1mIC4uLy4uL1Rvb2xzL1Njcmlw
dHMvY2hlY2stZm9yLXdlYWstdnRhYmxlcy1hbmQtZXh0ZXJuYWxzIF07IHRoZW5cbiAgICAuLi8u
Li9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci13ZWFrLXZ0YWJsZXMtYW5kLWV4dGVybmFscyB8fCBl
eGl0ICQ/XG5maVxuIjsKIAkJfTsKIAkJNUQyRjdEQTAwQzY4NzlDNjAwQjVCNzJCIC8qIFVwZGF0
ZSBJbmZvLnBsaXN0IHdpdGggdmVyc2lvbiBpbmZvcm1hdGlvbiAqLyA9IHsKIAkJCWlzYSA9IFBC
WFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKQEAgLTMyMzQ1LDcgKzMyMzQ0LDYgQEAKIAkJCQlBMzFD
NEU0RDE2RTAyQUE2MDAyRjc5NTcgLyogT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzMTA3OENDNzE4ODBBQUI1MDA4MDk5REMgLyogT0VTVGV4dHVyZUhhbGZGbG9h
dExpbmVhci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3N0ExN0E3MTEyRjI4MTgyMDA0RTAyRjYg
LyogT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1Rjg2MTAx
RkEyMzhEOTAwNkRCNjNBIC8qIFBheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUNFQTI4NDY2MjE0MUU4NDkwMEU0MDdFOCAvKiBQbGF0Zm9ybUV2ZW50RmFj
dG9yeUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUFBMTJERjQ5MTc0M0RGODMwMDREQUZERiAv
KiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RB
MjlBMzAxQ0JGNzRENDAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1t
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNv
Y29hLm1tCmluZGV4IGI0YWFmNjQyMWQyYjZkM2M1YjMwZGVhYTc0ZTNlNzI2MzI5ZDJhY2QuLmNi
NjEwODI5MmE0ODk4NmMxOWM3OGIxMTQ0MGExNTc3MmEwZWE5OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCkBAIC0zMiwxNiArMzIsNyBAQAogCiAj
aWYgRU5BQkxFKEFQUExFX1BBWSkKIAotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
Lmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLVNP
RlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhQYXNzS2l0KTsKLSNlbHNlCi1TT0ZUX0xJTktfRlJB
TUVXT1JLKFBhc3NLaXQpOwotI2VuZGlmCi0KLVNPRlRfTElOS19NQVlfRkFJTChQYXNzS2l0LCBQ
S0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3Qg
ZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVudEJ1dHRvblR5cGUgdHlwZSwgUEtQYXlt
ZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICpsYW5ndWFnZUNvZGUpLCAoY29udGV4dCwg
ZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFuZ3VhZ2VDb2RlKSk7CisjaW1wb3J0IDxw
YWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZ
KQogCkBAIC0xMDgsOSArOTksNiBAQCBzdGF0aWMgUEtQYXltZW50QnV0dG9uVHlwZSB0b1BLUGF5
bWVudEJ1dHRvblR5cGUoQXBwbGVQYXlCdXR0b25UeXBlIHR5cGUpCiAKIGJvb2wgUmVuZGVyVGhl
bWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVy
LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcGFpbnRSZWN0KQog
ewotICAgIGlmICghY2FuTG9hZFBLRHJhd0FwcGxlUGF5QnV0dG9uKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWlu
dEluZm8uY29udGV4dCgpKTsKIAogICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U2hvdWxkU21v
b3RoRm9udHModHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDM1Zjk4YjExYjdmMWE5MjEyOWFl
ZGI0MjEyMmFiMGI4NTkwNzkyMjUuLmQwZTM3NDUyMDZkZDk4YWI3NGI2ZjRkMTU1Yjg4Mjc2ZGE1
ODZlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0zMCwyMCArMzAsOCBAQAogCiAjaW1wb3J0ICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9QYXNzS2l0U1BJLmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotI2lmIFBMQVRG
T1JNKE1BQykKLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhQYXNzS2l0KQotI2Vsc2UKLVNP
RlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkKLSNlbmRpZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFz
c0tpdCwgUEtDb250YWN0KTsKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnQpOwot
U09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudE1ldGhvZCk7Ci1TT0ZUX0xJTktfQ0xB
U1MoUGFzc0tpdCwgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uKTsKIAogbmFtZXNwYWNlIElQQyB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTY3LDcgKzU1LDcgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29y
ZTo6UGF5bWVudCYKICAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0
V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQq
PihkYXRhUmVmZXJlbmNlLmRhdGEoKSkpIGxlbmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVl
V2hlbkRvbmU6Tk9dKTsKICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJv
bURhdGEoZGF0YS5nZXQoKSk7CiAgICAgQHRyeSB7Ci0gICAgICAgIFBLUGF5bWVudCAqcGtQYXlt
ZW50ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRQS1BheW1lbnRDbGFzcygp
IGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOworICAgICAgICBQS1BheW1lbnQg
KnBrUGF5bWVudCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6UEFMOjpnZXRfUGFz
c0tpdF9QS1BheW1lbnRDbGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXld
OwogICAgICAgICBwYXltZW50ID0gUGF5bWVudChwa1BheW1lbnQpOwogICAgIH0gQGNhdGNoIChO
U0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRl
Y29kZSBQS1BheW1lbnQ6ICVAIiwgZXhjZXB0aW9uKTsKQEAgLTExOCw3ICsxMDYsNyBAQCBib29s
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgV2ViQ29yZTo6UAogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxs
b2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29u
c3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6
ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwogICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJj
aGl2ZXJGcm9tRGF0YShkYXRhLmdldCgpKTsKICAgICBAdHJ5IHsKLSAgICAgICAgUEtDb250YWN0
ICpwa0NvbnRhY3QgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldFBLQ29udGFj
dENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgICAgIFBL
Q29udGFjdCAqcGtDb250YWN0ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6
OmdldF9QYXNzS2l0X1BLQ29udGFjdENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9i
amVjdEtleV07CiAgICAgICAgIHBheW1lbnRDb250YWN0ID0gUGF5bWVudENvbnRhY3QocGtDb250
YWN0KTsKICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewogICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgUEtDb250YWN0OiAlQCIsIGV4Y2VwdGlvbik7CkBA
IC0xNzUsNyArMTYzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJj
aGFudFNlc3Npb24+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2UKICAgICBhdXRvIGRhdGEg
PSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8
dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSkpIGxl
bmd0aDpkYXRhUmVmZXJlbmNlLnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9dKTsKICAgICBhdXRvIHVu
YXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoZGF0YS5nZXQoKSk7CiAgICAgQHRy
eSB7Ci0gICAgICAgIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbiAqcGtQYXltZW50TWVyY2hhbnRT
ZXNzaW9uID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRQS1BheW1lbnRNZXJj
aGFudFNlc3Npb25DbGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwor
ICAgICAgICBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKnBrUGF5bWVudE1lcmNoYW50U2Vzc2lv
biA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6UEFMOjpnZXRfUGFzc0tpdF9QS1Bh
eW1lbnRNZXJjaGFudFNlc3Npb25DbGFzcygpIGZvcktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmpl
Y3RLZXldOwogICAgICAgICBwYXltZW50TWVyY2hhbnRTZXNzaW9uID0gUGF5bWVudE1lcmNoYW50
U2Vzc2lvbihwa1BheW1lbnRNZXJjaGFudFNlc3Npb24pOwogICAgIH0gQGNhdGNoIChOU0V4Y2Vw
dGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBQ
S1BheW1lbnRNZXJjaGFudFNlc3Npb246ICVAIiwgZXhjZXB0aW9uKTsKQEAgLTIwNSw3ICsxOTMs
NyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQYQogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tO
U0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGlj
X2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZl
cmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwogICAgIGF1dG8gdW5hcmNoaXZlciA9IHNl
Y3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRhLmdldCgpKTsKICAgICBAdHJ5IHsKLSAgICAgICAg
UEtQYXltZW50TWV0aG9kICpwa1BheW1lbnRNZXRob2QgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmpl
Y3RPZkNsYXNzOmdldFBLUGF5bWVudE1ldGhvZENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZl
Um9vdE9iamVjdEtleV07CisgICAgICAgIFBLUGF5bWVudE1ldGhvZCAqcGtQYXltZW50TWV0aG9k
ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6OmdldF9QYXNzS2l0X1BLUGF5
bWVudE1ldGhvZENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAg
ICAgICAgIHBheW1lbnRNZXRob2QgPSBQYXltZW50TWV0aG9kKHBrUGF5bWVudE1ldGhvZCk7CiAg
ICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gZGVjb2RlIFBLUGF5bWVudDogJUAiLCBleGNlcHRpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IDA4ZGJkN2I2NTZkNDUwNGJmZTcwYWNlOWE0ZjllMTBmYzI5MDg0NmIu
LmU4OGM1ZmU2YWNhMWI5NDFmYzA5MGFhYTQ2ZTE5YzhiODk4NGNiODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKQEAgLTI5NCw5ICsyOTQsOSBAQCBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0K
IAogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EubW0KIAotVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eUlPUy5tbSBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlJT1MubW0KIAotVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eU1hYy5tbSBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KIAogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9u
L2NvY29hL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHlDb2NvYS5tbQogVUlQcm9jZXNzL0F1
dGhlbnRpY2F0aW9uL2NvY29hL1NlY0tleVByb3h5U3RvcmUubW0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCmluZGV4IGRiMmI2YzhiZDIwZmNjZjAwOTQ5
NDIwNWQyMTFkY2M0MTkyMzgxNzguLjgxMGNmYzEwMjI3ZTBhY2E0MzJmMzM5ZjUwZTE1M2RkNDQ5
YzliNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29h
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5t
bQpAQCAtMzMsMjUgKzMzLDExIEBACiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+Cisj
aW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQ
dHIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcu
aD4KIAotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19PUFRJ
T05BTChQYXNzS2l0KQotI2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkKLSNlbmRp
ZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXNzTGlicmFyeSk7Ci1TT0ZUX0xJTktf
Q0xBU1MoUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLVNP
RlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24pOwotU09GVF9M
SU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudFJlcXVlc3QpOwotU09GVF9MSU5LX0NMQVNTKFBh
c3NLaXQsIFBLUGF5bWVudFN1bW1hcnlJdGVtKTsKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQ
S1NoaXBwaW5nTWV0aG9kKTsKLQotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorI2lmIFBMQVRGT1JN
KElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VE
ID49IDEwMTMwMCkKIFNPRlRfTElOS19GUkFNRVdPUksoQ29udGFjdHMpCiBTT0ZUX0xJTktfQ09O
U1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N0cmVldEtleSwgTlNTdHJpbmcgKik7CiBT
T0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N1YkxvY2FsaXR5S2V5
LCBOU1N0cmluZyAqKTsKQEAgLTYxLDMwICs0Nyw4IEBAIFNPRlRfTElOS19DT05TVEFOVChDb250
YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3RhdGVLZXksIE5TU3RyaW5nICopOwogU09GVF9MSU5LX0NP
TlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NQb3N0YWxDb2RlS2V5LCBOU1N0cmluZyAq
KTsKIFNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzQ291bnRyeUtl
eSwgTlNTdHJpbmcgKik7CiBTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRk
cmVzc0lTT0NvdW50cnlDb2RlS2V5LCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DTEFTUyhQYXNz
S2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0KQotU09GVF9MSU5LX0NMQVNTKFBhc3NL
aXQsIFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlKQotU09GVF9MSU5LX0NMQVNT
KFBhc3NLaXQsIFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUpCi1TT0ZUX0xJ
TktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlKQot
U09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLUGF5bWVudEVycm9yRG9tYWluLCBOU1N0cmlu
ZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBvc3RhbEFk
ZHJlc3MsIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLQ29udGFj
dEZpZWxkRW1haWxBZGRyZXNzLCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChQYXNz
S2l0LCBQS0NvbnRhY3RGaWVsZFBob25lTnVtYmVyLCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19D
T05TVEFOVChQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZE5hbWUsIE5TU3RyaW5nICopOwotU09GVF9M
SU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lLCBOU1N0cmlu
ZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChQYXNzS2l0LCBQS1BheW1lbnRFcnJvckNvbnRhY3RG
aWVsZFVzZXJJbmZvS2V5LCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChQYXNzS2l0
LCBQS1BheW1lbnRFcnJvclBvc3RhbEFkZHJlc3NVc2VySW5mb0tleSwgTlNTdHJpbmcgKik7CiAj
ZW5kaWYKIAotdHlwZWRlZiB2b2lkICheUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uKShCT09M
IGlzVmFsaWQsIE5TRXJyb3IgKmVycm9yKTsKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKLWV4dGVy
biAiQyIgdm9pZCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5B
bmRTb3VyY2VBcHBsaWNhdGlvbihOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFp
biwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgUEtDYW5N
YWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pOwotU09GVF9MSU5LX0ZVTkNUSU9OX01B
WV9GQUlMX0ZPUl9TT1VSQ0UoV2ViS2l0LCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhN
ZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNhdGlvbiwgdm9pZCwgKE5TU3Ry
aW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBOU1N0cmluZyAqc291cmNlQXBwbGlj
YXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBQS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29t
cGxldGlvbiksIChpZGVudGlmaWVyLCBkb21haW4sIHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllciwgY29tcGxldGlvbikpOwotI2Vsc2UKLWV4dGVybiAiQyIgdm9pZCBQS0Nhbk1h
a2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4oTlNTdHJpbmcgKmlkZW50
aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbiBjb21w
bGV0aW9uKTsKLVNPRlRfTElOS19GVU5DVElPTl9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYktpdCwg
UGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWlu
LCB2b2lkLCAoTlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIFBLQ2FuTWFr
ZVBheW1lbnRzQ29tcGxldGlvbiBjb21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgY29t
cGxldGlvbikpOwotI2VuZGlmCi0KLQogQGltcGxlbWVudGF0aW9uIFdLUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlCiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBh
eW1lbnRDb29yZGluYXRvclByb3h5OihXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Jil3ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eQpAQCAtMTAyLDcgKzY2LDcgQEAgLSAodm9pZClp
bnZhbGlkYXRlCiAgICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5ID0gbnVsbHB0cjsKICAg
ICBpZiAoX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbikgewogI2lmIChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEw
MDAwKQotICAgICAgICBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKGFkb3B0TlMoW2FsbG9j
UEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6UEtQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF1dKS5nZXQoKSk7Cisg
ICAgICAgIF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24oYWRvcHROUyhbUEFMOjphbGxvY1BL
UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOlBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIGVycm9yczpAWyBdXSkuZ2V0KCkpOwogI2Vs
c2UKICAgICAgICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzRmFpbHVyZSk7CiAjZW5kaWYKQEAgLTExOSw3ICs4Myw3IEBAIC0gKHZvaWQp
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyCiAgICAgQVNTRVJUKCFfc2Vzc2lvbkJsb2NrKTsKICAgICBfc2Vzc2lv
bkJsb2NrID0gc2Vzc2lvbkJsb2NrOwogCi0gICAgW2dldFBLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckNsYXNzKCkgcGF5bWVudFNlcnZpY2VzTWVyY2hhbnRVUkw6XihOU1VSTCAq
bWVyY2hhbnRVUkwsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgW1BBTDo6Z2V0X1Bhc3NLaXRfUEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSBwYXltZW50U2VydmljZXNN
ZXJjaGFudFVSTDpeKE5TVVJMICptZXJjaGFudFVSTCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAg
ICAgaWYgKGVycm9yKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJQS0Nhbk1ha2VQYXltZW50c1dp
dGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4gZXJyb3IgJUAiLCBlcnJvcik7CiAKQEAgLTE1
NSw3ICsxMTksNyBAQCAtICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6
KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcgogewogI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwKQogICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAg
IGNvbXBsZXRpb24oYWRvcHROUyhbYWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5z
dGFuY2UoKSBpbml0V2l0aFN0YXR1czpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVy
ZSBlcnJvcnM6QFsgXV0pLmdldCgpKTsKKyAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFtQQUw6
OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0
dXM6UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF1dKS5nZXQo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE3MCw3ICsxMzQsNyBAQCAtICh2b2lk
KXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlcgogewogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIGlmICghX3dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oYWRvcHROUyhb
YWxsb2NQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdp
dGhQYXltZW50U3VtbWFyeUl0ZW1zOkBbIF1dKS5nZXQoKSk7CisgICAgICAgIGNvbXBsZXRpb24o
YWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5z
dGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTgzLDcgKzE0Nyw3IEBAIC0gKHZvaWQpcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyCiAtICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hp
cHBpbmdNZXRob2Q6KFBLU2hpcHBpbmdNZXRob2QgKilzaGlwcGluZ01ldGhvZCBoYW5kbGVyOih2
b2lkICheKShQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUgKnVwZGF0ZSkpY29t
cGxldGlvbiB7CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAgICAgaWYgKCFfd2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5
bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50
U3VtbWFyeUl0ZW1zOkBbIF1dKS5nZXQoKSk7CisgICAgICAgIGNvbXBsZXRpb24oYWRvcHROUyhb
UEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkg
aW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOkBbIF1dKS5nZXQoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTE5Nyw3ICsxNjEsNyBAQCAtICh2b2lkKXBheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcgog
ewogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1
ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczpAWyBdIHBh
eW1lbnRTdW1tYXJ5SXRlbXM6QFsgXSBzaGlwcGluZ01ldGhvZHM6QFsgXV0pLmdldCgpKTsKKyAg
ICAgICAgY29tcGxldGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBw
aW5nQ29udGFjdFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6QFsgXSBwYXltZW50U3Vt
bWFyeUl0ZW1zOkBbIF0gc2hpcHBpbmdNZXRob2RzOkBbIF1dKS5nZXQoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTI5MywzMiArMjU3LDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBib29sIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50
cygpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICghUGFzc0tpdExpYnJhcnkoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KLSAgICByZXR1cm4gW2dldFBLUGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckNsYXNzKCkgY2FuTWFrZVBheW1lbnRzXTsKKyAgICBy
ZXR1cm4gW1BBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyQ2xhc3MoKSBjYW5NYWtlUGF5bWVudHNdOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0
cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6
RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0jaWYgUExBVEZP
Uk0oTUFDKQotICAgIGlmICghUGFzc0tpdExpYnJhcnkoKSkgewotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQogI2lmIChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAw
KSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTEwMDAwKQotICAgIGlmICghY2FuTG9hZF9QYXNzS2l0X1BLQ2FuTWFrZVBheW1l
bnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKCkpIHsK
LSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc29m
dExpbmtfUGFzc0tpdF9QS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21h
aW5BbmRTb3VyY2VBcHBsaWNhdGlvbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1f
d2ViUGFnZVByb3h5LnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5zb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKSwgQmxvY2tQdHI8dm9pZCAoQk9PTCwg
TlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oQk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSBt
dXRhYmxlIHsKKyAgICBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21h
aW5BbmRTb3VyY2VBcHBsaWNhdGlvbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIG1f
d2ViUGFnZVByb3h5LnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5zb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKSwgQmxvY2tQdHI8dm9pZChCT09MLCBO
U0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShCT09MIGNhbk1ha2VQYXltZW50cywgTlNFcnJvciAqZXJyb3IpIG11
dGFibGUgewogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBLQ2Fu
TWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIsIGVy
cm9yKTsKIApAQCAtMzI3LDE0ICsyNzIsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cgogICAg
ICAgICB9KTsKICAgICB9KS5nZXQoKSk7CiAjZWxzZQotICAgIGlmICghY2FuTG9hZF9QYXNzS2l0
X1BLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbigpKSB7Ci0g
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZmFsc2UpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNvZnRM
aW5rX1Bhc3NLaXRfUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9t
YWluKG1lcmNoYW50SWRlbnRpZmllciwgZG9tYWluTmFtZSwgQmxvY2tQdHI8dm9pZCAoQk9PTCwg
TlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oQk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSBt
dXRhYmxlIHsKKyAgICBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmRE
b21haW4obWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBCbG9ja1B0cjx2b2lkKEJPT0ws
IE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKEJPT0wgY2FuTWFrZVBheW1lbnRzLCBOU0Vycm9yICplcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIExPR19FUlJPUigiUEtD
YW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWluIGVycm9yICVAIiwg
ZXJyb3IpOwogCkBAIC0zNDcsMTQgKzI4NSw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyCiAK
IHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtT3BlblBheW1lbnRTZXR1
cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5O
YW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
I2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIVBhc3NLaXRMaWJyYXJ5KCkpIHsKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlm
Ci0KLSAgICBhdXRvIHBhc3NMaWJyYXJ5ID0gYWRvcHROUyhbYWxsb2NQS1Bhc3NMaWJyYXJ5SW5z
dGFuY2UoKSBpbml0XSk7CisgICAgYXV0byBwYXNzTGlicmFyeSA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NQS1Bhc3NMaWJyYXJ5SW5zdGFuY2UoKSBpbml0XSk7CiAgICAgW3Bhc3NMaWJyYXJ5IG9wZW5Q
YXltZW50U2V0dXBGb3JNZXJjaGFudElkZW50aWZpZXI6bWVyY2hhbnRJZGVudGlmaWVyIGRvbWFp
bjpkb21haW5OYW1lIGNvbXBsZXRpb246QmxvY2tQdHI8dm9pZCAoQk9PTCk+Ojpmcm9tQ2FsbGFi
bGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCByZXN1bHRdIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CkBAIC0zNjgsMTUgKzI5OSwxNSBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TU2V0PiB0b1BLQ29udGFjdEZpZWxkcyhjb25zdCBXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UgogICAgIFZlY3RvcjxOU1N0cmluZyAqPiByZXN1bHQ7
CiAKICAgICBpZiAoY29udGFjdEZpZWxkcy5wb3N0YWxBZGRyZXNzKQotICAgICAgICByZXN1bHQu
YXBwZW5kKGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpKTsKKyAgICAgICAgcmVzdWx0
LmFwcGVuZChQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpKTsK
ICAgICBpZiAoY29udGFjdEZpZWxkcy5waG9uZSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZChnZXRQ
S0NvbnRhY3RGaWVsZFBob25lTnVtYmVyKCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKFBBTDo6
Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQaG9uZU51bWJlcigpKTsKICAgICBpZiAoY29udGFj
dEZpZWxkcy5lbWFpbCkKLSAgICAgICAgcmVzdWx0LmFwcGVuZChnZXRQS0NvbnRhY3RGaWVsZEVt
YWlsQWRkcmVzcygpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChQQUw6OmdldF9QYXNzS2l0X1BL
Q29udGFjdEZpZWxkRW1haWxBZGRyZXNzKCkpOwogICAgIGlmIChjb250YWN0RmllbGRzLm5hbWUp
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0UEtDb250YWN0RmllbGROYW1lKCkpOworICAgICAg
ICByZXN1bHQuYXBwZW5kKFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGROYW1lKCkpOwog
ICAgIGlmIChjb250YWN0RmllbGRzLnBob25ldGljTmFtZSkKLSAgICAgICAgcmVzdWx0LmFwcGVu
ZChnZXRQS0NvbnRhY3RGaWVsZFBob25ldGljTmFtZSgpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZChQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lKCkpOwogCiAgICAg
cmV0dXJuIGFkb3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhPYmplY3RzOnJlc3VsdC5kYXRh
KCkgY291bnQ6cmVzdWx0LnNpemUoKV0pOwogfQpAQCAtNDE4LDcgKzM0OSw3IEBAIHN0YXRpYyBO
U0RlY2ltYWxOdW1iZXIgKnRvRGVjaW1hbE51bWJlcihjb25zdCBTdHJpbmcmIGFtb3VudCkKIAog
c3RhdGljIFJldGFpblB0cjxQS1BheW1lbnRTdW1tYXJ5SXRlbT4gdG9QS1BheW1lbnRTdW1tYXJ5
SXRlbShjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0
ZW0mIGxpbmVJdGVtKQogewotICAgIHJldHVybiBbZ2V0UEtQYXltZW50U3VtbWFyeUl0ZW1DbGFz
cygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOmxpbmVJdGVtLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxO
dW1iZXIobGluZUl0ZW0uYW1vdW50KSB0eXBlOnRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKGxp
bmVJdGVtLnR5cGUpXTsKKyAgICByZXR1cm4gW1BBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50U3Vt
bWFyeUl0ZW1DbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOmxpbmVJdGVtLmxhYmVsIGFtb3Vu
dDp0b0RlY2ltYWxOdW1iZXIobGluZUl0ZW0uYW1vdW50KSB0eXBlOnRvUEtQYXltZW50U3VtbWFy
eUl0ZW1UeXBlKGxpbmVJdGVtLnR5cGUpXTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxOU0FycmF5
PiB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyhjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXMmIHRvdGFsQW5kTGluZUl0ZW1zKQpAQCAt
NDc3LDcgKzQwOCw3IEBAIHN0YXRpYyBQS1NoaXBwaW5nVHlwZSB0b1BLU2hpcHBpbmdUeXBlKFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTCiAKIHN0YXRpYyBSZXRhaW5Q
dHI8UEtTaGlwcGluZ01ldGhvZD4gdG9QS1NoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRo
b2QpCiB7Ci0gICAgUmV0YWluUHRyPFBLU2hpcHBpbmdNZXRob2Q+IHJlc3VsdCA9IFtnZXRQS1No
aXBwaW5nTWV0aG9kQ2xhc3MoKSBzdW1tYXJ5SXRlbVdpdGhMYWJlbDpzaGlwcGluZ01ldGhvZC5s
YWJlbCBhbW91bnQ6dG9EZWNpbWFsTnVtYmVyKHNoaXBwaW5nTWV0aG9kLmFtb3VudCldOworICAg
IFJldGFpblB0cjxQS1NoaXBwaW5nTWV0aG9kPiByZXN1bHQgPSBbUEFMOjpnZXRfUGFzc0tpdF9Q
S1NoaXBwaW5nTWV0aG9kQ2xhc3MoKSBzdW1tYXJ5SXRlbVdpdGhMYWJlbDpzaGlwcGluZ01ldGhv
ZC5sYWJlbCBhbW91bnQ6dG9EZWNpbWFsTnVtYmVyKHNoaXBwaW5nTWV0aG9kLmFtb3VudCldOwog
ICAgIFtyZXN1bHQgc2V0SWRlbnRpZmllcjpzaGlwcGluZ01ldGhvZC5pZGVudGlmaWVyXTsKICAg
ICBbcmVzdWx0IHNldERldGFpbDpzaGlwcGluZ01ldGhvZC5kZXRhaWxdOwogCkBAIC01MTIsNyAr
NDQzLDcgQEAgc3RhdGljIFBLUGF5bWVudFJlcXVlc3RBUElUeXBlIHRvQVBJVHlwZShXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDoKIAogUmV0YWluUHRyPFBLUGF5bWVudFJl
cXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgY29u
c3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVS
TD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3QmIHBheW1lbnRSZXF1ZXN0KQogewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbYWxs
b2NQS1BheW1lbnRSZXF1ZXN0SW5zdGFuY2UoKSBpbml0XSk7CisgICAgYXV0byByZXN1bHQgPSBh
ZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdEluc3RhbmNlKCkgaW5pdF0pOwogCiAg
ICAgW3Jlc3VsdCBzZXRPcmlnaW5hdGluZ1VSTDpvcmlnaW5hdGluZ1VSTF07CiAKQEAgLTYzMiw3
MiArNTYzLDcyIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gdG9OU0Vycm9yKGNvbnN0IFdl
YkNvcmU6OlBheW1lbnRFcnJvciYgZXJyb3IpCiAKICAgICAgICAgc3dpdGNoICgqZXJyb3IuY29u
dGFjdEZpZWxkKSB7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0
RmllbGQ6OlBob25lTnVtYmVyOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0Nv
bnRhY3RGaWVsZFBob25lTnVtYmVyKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBB
TDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQaG9uZU51bWJlcigpOwogICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVs
ZDo6RW1haWxBZGRyZXNzOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0NvbnRh
Y3RGaWVsZEVtYWlsQWRkcmVzcygpOworICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6
OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkRW1haWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxk
OjpOYW1lOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0NvbnRhY3RGaWVsZE5h
bWUoKTsKKyAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0Nv
bnRhY3RGaWVsZE5hbWUoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgV2Vi
Q29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlBob25ldGljTmFtZToKLSAgICAgICAg
ICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQaG9uZXRpY05hbWUoKTsKKyAg
ICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVs
ZFBob25ldGljTmFtZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBXZWJD
b3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UG9zdGFsQWRkcmVzczoKLSAgICAgICAg
ICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7Cisg
ICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0Rmll
bGRQb3N0YWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdl
YkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpBZGRyZXNzTGluZXM6Ci0gICAgICAg
ICAgICBwa0NvbnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwor
ICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZp
ZWxkUG9zdGFsQWRkcmVzcygpOwogICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENO
UG9zdGFsQWRkcmVzc1N0cmVldEtleSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
Y2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6U3ViTG9jYWxpdHk6Ci0g
ICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVz
cygpOworICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29u
dGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwogICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9
IGdldENOUG9zdGFsQWRkcmVzc1N1YkxvY2FsaXR5S2V5KCk7CiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpMb2Nh
bGl0eToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQb3N0
YWxBZGRyZXNzKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NL
aXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBwb3N0YWxBZGRy
ZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzQ2l0eUtleSgpOwogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UG9z
dGFsQ29kZToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQ
b3N0YWxBZGRyZXNzKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bh
c3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBwb3N0YWxB
ZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzUG9zdGFsQ29kZUtleSgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RG
aWVsZDo6U3ViQWRtaW5pc3RyYXRpdmVBcmVhOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQg
PSBnZXRQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKKyAgICAgICAgICAgIHBrQ29udGFj
dEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsK
ICAgICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NTdWJBZG1p
bmlzdHJhdGl2ZUFyZWFLZXkoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
V2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkFkbWluaXN0cmF0aXZlQXJlYToK
LSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQb3N0YWxBZGRy
ZXNzKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtD
b250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5
ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3RhdGVLZXkoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkNvdW50cnk6
Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRk
cmVzcygpOworICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BL
Q29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwogICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tl
eSA9IGdldENOUG9zdGFsQWRkcmVzc0NvdW50cnlLZXkoKTsKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkNvdW50
cnlDb2RlOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0NvbnRhY3RGaWVsZFBv
c3RhbEFkZHJlc3MoKTsKKyAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFz
c0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKICAgICAgICAgICAgIHBvc3RhbEFk
ZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NJU09Db3VudHJ5Q29kZUtleSgpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OnBr
Q29udGFjdEZpZWxkIGZvcktleTpnZXRQS1BheW1lbnRFcnJvckNvbnRhY3RGaWVsZFVzZXJJbmZv
S2V5KCldOworICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OnBrQ29udGFjdEZpZWxkIGZvcktl
eTpQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNlckluZm9LZXko
KV07CiAgICAgICAgIGlmIChwb3N0YWxBZGRyZXNzS2V5KQotICAgICAgICAgICAgW3VzZXJJbmZv
IHNldE9iamVjdDpwb3N0YWxBZGRyZXNzS2V5IGZvcktleTpnZXRQS1BheW1lbnRFcnJvclBvc3Rh
bEFkZHJlc3NVc2VySW5mb0tleSgpXTsKKyAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6
cG9zdGFsQWRkcmVzc0tleSBmb3JLZXk6UEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRFcnJvclBv
c3RhbEFkZHJlc3NVc2VySW5mb0tleSgpXTsKICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHROUyhb
W05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOmdldFBLUGF5bWVudEVycm9yRG9tYWluKCkg
Y29kZTp0b1BLUGF5bWVudEVycm9yQ29kZShlcnJvci5jb2RlKSB1c2VySW5mbzp1c2VySW5mby5n
ZXQoKV0pOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21h
aW46UEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRFcnJvckRvbWFpbigpIGNvZGU6dG9QS1BheW1l
bnRFcnJvckNvZGUoZXJyb3IuY29kZSkgdXNlckluZm86dXNlckluZm8uZ2V0KCldKTsKIH0KIAog
c3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB0b05TRXJyb3JzKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpQYXltZW50RXJyb3I+JiBlcnJvcnMpCkBAIC03NjEsNyArNjkyLDcgQEAgdm9pZCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0
IHN0ZDo6b3B0aW8KIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIGF1dG8gc3RhdHVzID0g
cmVzdWx0ID8gcmVzdWx0LT5zdGF0dXMgOiBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1czo6U3VjY2VzczsKLSAgICBhdXRvIHBrUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgPSBh
ZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRX
aXRoU3RhdHVzOnRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhzdGF0dXMpIGVycm9yczpy
ZXN1bHQgPyB0b05TRXJyb3JzKHJlc3VsdC0+ZXJyb3JzKS5nZXQoKSA6IEBbIF1dKTsKKyAgICBh
dXRvIHBrUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQ
YXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6dG9QS1Bh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHN0YXR1cykgZXJyb3JzOnJlc3VsdCA/IHRvTlNFcnJv
cnMocmVzdWx0LT5lcnJvcnMpLmdldCgpIDogQFsgXV0pOwogICAgIG1fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9u
KHBrUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQuZ2V0KCkpOwogI2Vsc2UKICAgICBtX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRBdXRob3JpemVk
Q29tcGxldGlvbih0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMocmVzdWx0KSk7CkBAIC03
ODcsNyArNzE4LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1D
b21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IHMKICAgICAgICAgbV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1z
ID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXModXBkYXRlLT5uZXdUb3RhbEFuZExpbmVJdGVtcyk7
CiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKLSAgICBhdXRvIHBrU2hpcHBpbmdNZXRob2RVcGRh
dGUgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUlu
c3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKV0pOwor
ICAgIGF1dG8gcGtTaGlwcGluZ01ldGhvZFVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1Bh
eW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVu
dFN1bW1hcnlJdGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCldKTsKICAgICBtX3BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxl
dGlvbihwa1NoaXBwaW5nTWV0aG9kVXBkYXRlLmdldCgpKTsKICNlbHNlCiAgICAgbV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ01l
dGhvZENvbXBsZXRpb24oUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3MsIG1fcGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJ
dGVtcy5nZXQoKSk7CkBAIC04MzksNyArNzcwLDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihjb25zdAog
ICAgIH0KIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQotICAgIGF1dG8gcGtTaGlwcGluZ0NvbnRh
Y3RVcGRhdGUgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RV
cGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoRXJyb3JzOnVwZGF0ZSA/IHRvTlNFcnJvcnModXBkYXRl
LT5lcnJvcnMpLmdldCgpIDogQFsgXSBwYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQo
KSBzaGlwcGluZ01ldGhvZHM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMuZ2V0KCldKTsKKyAgICBhdXRvIHBrU2hpcHBpbmdDb250
YWN0VXBkYXRlID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0Nv
bnRhY3RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoRXJyb3JzOnVwZGF0ZSA/IHRvTlNFcnJvcnMo
dXBkYXRlLT5lcnJvcnMpLmdldCgpIDogQFsgXSBwYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVt
cy5nZXQoKSBzaGlwcGluZ01ldGhvZHM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMuZ2V0KCldKTsKICAgICBtX3BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nQ29udGFj
dENvbXBsZXRpb24ocGtTaGlwcGluZ0NvbnRhY3RVcGRhdGUuZ2V0KCkpOwogI2Vsc2UKICAgICBt
X3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNo
aXBwaW5nQ29udGFjdENvbXBsZXRpb24odG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHVw
ZGF0ZSksIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hp
cHBpbmdNZXRob2RzLmdldCgpLCBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkpOwpAQCAtODU2LDcgKzc4Nyw3IEBA
IHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50
TWV0aG9kU2VsZWN0aW9uKGNvbnN0IHN0CiAgICAgICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9IHRvUEtQYXltZW50
U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpOwogCiAjaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMTAwMDApCi0gICAgYXV0byBwa1BheW1lbnRNZXRob2RVcGRhdGUgPSBhZG9wdE5TKFth
bGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0
aFBheW1lbnRTdW1tYXJ5SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXSk7CisgICAgYXV0byBwa1BheW1l
bnRNZXRob2RVcGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFBheW1l
bnRNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczptX3Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5
SXRlbXMuZ2V0KCldKTsKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uKHBrUGF5bWVudE1ldGhv
ZFVwZGF0ZS5nZXQoKSk7CiAjZWxzZQogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24obV9wYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0
ZW1zLmdldCgpKTsKQEAgLTg2NiwxMiArNzk3LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oY29uc3Qgc3QK
IAogVmVjdG9yPFN0cmluZz4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQXZh
aWxhYmxlUGF5bWVudE5ldHdvcmtzKCkKIHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFQ
YXNzS2l0TGlicmFyeSgpKQotICAgICAgICByZXR1cm4geyB9OwotI2VuZGlmCi0gICAgCi0gICAg
TlNBcnJheTxQS1BheW1lbnROZXR3b3JrPiAqYXZhaWxhYmxlTmV0d29ya3MgPSBbZ2V0UEtQYXlt
ZW50UmVxdWVzdENsYXNzKCkgYXZhaWxhYmxlTmV0d29ya3NdOworICAgIE5TQXJyYXk8UEtQYXlt
ZW50TmV0d29yaz4gKmF2YWlsYWJsZU5ldHdvcmtzID0gW1BBTDo6Z2V0X1Bhc3NLaXRfUEtQYXlt
ZW50UmVxdWVzdENsYXNzKCkgYXZhaWxhYmxlTmV0d29ya3NdOwogICAgIFZlY3RvcjxTdHJpbmc+
IHJlc3VsdDsKICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhdmFpbGFibGVOZXR3
b3Jrcy5jb3VudCk7CiAgICAgZm9yIChQS1BheW1lbnROZXR3b3JrIG5ldHdvcmsgaW4gYXZhaWxh
YmxlTmV0d29ya3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBh
eS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KaW5k
ZXggYzBkZjNjODlkYjRjZjQxNzQ5OGFjMjY4ZTk5ZTExNWJhNDA1ZDc2Mi4uZjllMjgwZDFjOTU2
YTZkOGRlNzI1NDFmZmYwOTdmNThjZGVhYTg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUlPUy5tbQpAQCAtMzQsMTAgKzM0LDcgQEAKICNpbXBvcnQgPFBhc3NLaXQvUGFz
c0tpdC5oPgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgotI2ltcG9ydCA8d3RmL1NvZnRMaW5r
aW5nLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkKLVNPRlRfTElOS19DTEFTUyhQ
YXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOworI2ltcG9ydCA8
cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAt
NTQsNyArNTEsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNo
b3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaQogCiAgICAgYXV0byBwYXltZW50
UmVxdWVzdCA9IHRvUEtQYXltZW50UmVxdWVzdChtX3dlYlBhZ2VQcm94eSwgb3JpZ2luYXRpbmdV
UkwsIGxpbmtJY29uVVJMU3RyaW5ncywgcmVxdWVzdCk7CiAKLSAgICBtX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50UmVxdWVzdDpwYXltZW50
UmVxdWVzdC5nZXQoKV0pOworICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3QuZ2V0KCld
KTsKICAgICBpZiAoIW1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcikgewogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQppbmRleCA3NDE1OTM4M2YxOTU0MjdkYjk3
NjBhOGMwMWVjNzA2N2E2N2M2Zjk1Li4yZTk5Y2IxNDc3MjM3NWE0ZTg3YzI5ZjU3MmFmZTk3NWNm
YTE4NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCkBAIC0z
MCwyOSArMzAsMTggQEAKIAogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgiCi0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bh
c3NLaXRTUEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KICNpbXBv
cnQgPHd0Zi9CbG9ja1B0ci5oPgotI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLVNPRlRf
TElOS19QUklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChQYXNzS2l0KQotCi1TT0ZUX0xJTktfQ0xB
U1MoUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLVNPRlRf
TElOS19DT05TVEFOVChQYXNzS2l0LCBQS0V4dGVuc2lvblBheW1lbnRBdXRob3JpemF0aW9uVUlF
eHRlbnNpb25Qb2ludE5hbWUsIE5TU3RyaW5nICopOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNv
bnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpV
Ukw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIGlmICghUGFzc0tpdExpYnJhcnkoKSkgewotICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBh
dXRvIHBheW1lbnRSZXF1ZXN0ID0gdG9QS1BheW1lbnRSZXF1ZXN0KG1fd2ViUGFnZVByb3h5LCBv
cmlnaW5hdGluZ1VSTCwgbGlua0ljb25VUkxTdHJpbmdzLCByZXF1ZXN0KTsKIAogICAgIGF1dG8g
c2hvd1BheW1lbnRVSVJlcXVlc3RTZWVkID0gbV9zaG93UGF5bWVudFVJUmVxdWVzdFNlZWQ7CiAg
ICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKLSAgICBbZ2V0UEtQYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSByZXF1ZXN0Vmlld0NvbnRyb2xsZXJX
aXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3QuZ2V0KCkgY29tcGxldGlvbjpCbG9ja1B0
cjx2b2lkIChQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiwgTlNFcnJvciAq
KT46OmZyb21DYWxsYWJsZShbcGF5bWVudFJlcXVlc3QsIHNob3dQYXltZW50VUlSZXF1ZXN0U2Vl
ZCwgd2Vha1RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXIs
IE5TRXJyb3IgKmVycm9yKSB7CisgICAgW1BBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSByZXF1ZXN0Vmlld0NvbnRyb2xsZXJXaXRoUGF5
bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3QuZ2V0KCkgY29tcGxldGlvbjpCbG9ja1B0cjx2b2lk
KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqLCBOU0Vycm9yICopPjo6ZnJv
bUNhbGxhYmxlKFtwYXltZW50UmVxdWVzdCwgc2hvd1BheW1lbnRVSVJlcXVlc3RTZWVkLCB3ZWFr
VGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oUEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlciwgTlNFcnJv
ciAqZXJyb3IpIHsKICAgICAgICAgYXV0byBwYXltZW50Q29vcmRpbmF0b3JQcm94eSA9IHdlYWtU
aGlzLmdldCgpOwogICAgICAgICBpZiAoIXBheW1lbnRDb29yZGluYXRvclByb3h5KQogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
U2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDgzZmZlZDM0NWQyNjE2YTkxYzBh
ZTdiMzY4MzVlZmM4YjM5NGRkOTcuLjAzNzViODNiMmE3ZjUzYzYxYTlmZGM0NjhlYjFiNmFkNWFk
MTcyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93
c2luZ1dhcm5pbmdDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
YWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAi
U2FmZUJyb3dzaW5nU1BJLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4K
KyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CiAjaW1wb3J0
IDx3dGYvTGFuZ3VhZ2UuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5tbQppbmRleCA0OTA0ZTI2OGJj
ZmIzZmJkNmQ5MzZiNTgwODJkNDBmMDJmZDBhZjZmLi44MzllYTY4MjliMzNlYjdlYjA3ZWM5M2Q2
NDdiNzllZmMzOTdiYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQcm9jZXNzUHJveHlNYWMubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBQTEFURk9STShNQUMp
CiAKICNpbXBvcnQgIldLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oIgorI2ltcG9ydCA8d3Rm
L1Byb2Nlc3NQcml2aWxlZ2UuaD4KIAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxNDAwCiAjaW1wb3J0IDxLZXJuZWwva2Vybi9jc19ibG9icy5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTllNWQwNzEx
MGFjZDNlMjA0MTRhOTFmZTA5YzVkZGRlMjAyMWFkOC4uZjQ0NDFmZDljN2UzM2VhYWVkZDI4ZmY3
ZTY2ZjA1ODhhNjVkYjMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC02ODYsOCArNjg2LDYgQEAKIAkJMkQ5MkE3OTUyMTJCNkFENDAw
RjQ5M0ZEIC8qIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyRDkwRDExMjgxQzk2NjAwMUVC
OTYyIC8qIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovOyB9OwogCQkyRDky
QTc5NjIxMkI2QURBMDBGNDkzRkQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0QTlDNTMxMkI4MTZDRjAw
OEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCAqLzsgfTsKIAkJMkQ5MkE3OTcyMTJC
NkFEQTAwRjQ5M0ZEIC8qIFBsdWdpbkluZm9ybWF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0Y4QzhFMTczQUY1MkQwMDdCN0YzOSAvKiBQ
bHVnaW5JbmZvcm1hdGlvbi5jcHAgKi87IH07Ci0JCTJEOTJBNzk4MjEzNDhEODUwMEY0OTNGRCAv
KiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFGNzdEMUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbSAqLzsgfTsKLQkJMkQ5MkE3OUYyMTM0QjA3RTAw
RjQ5M0ZEIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMUY3N0IxRDFCMzBBOTAwN0M5QkQx
IC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tICovOyB9OwogCQkyRDkzMTE2OTIx
MkY2MUIyMDAwNDRCRkUgLyogV0tDb250ZW50Vmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0I0RTNEMThCQkUwNDQwMDBGQ0ZDOSAvKiBXS0Nv
bnRlbnRWaWV3Lm1tICovOyB9OwogCQkyRDkzMTE2QTIxMkY2MUI1MDAwNDRCRkUgLyogV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZDQjRFNkIxOEJCRjI2QTAwMEZDRkM5IC8qIFdLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbSAqLzsgfTsKIAkJMkQ5RUEzMEQxQTk2Q0I1OTAwMkQyODA3IC8qIFdLUGFnZUlu
amVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRDlFQTMwQzFBOTZDQjU5MDAyRDI4MDcgLyogV0tQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTEwMTAsOCArMTEwMDgsNiBAQAogCQkJCTdDRTlDRTEwMUZBMDc2N0EwMDAxNzdERSAv
KiBXZWJQYWdlVXBkYXRlUHJlZmVyZW5jZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M0Njk0
QzkxQTRCNEVBMTAwQUQ1ODQ1IC8qIFdlYlBhc3RlYm9hcmRQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUIxRjc5NjFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5
bWVudENvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTJE
OTJBNzlGMjEzNEIwN0UwMEY0OTNGRCAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5t
bSBpbiBTb3VyY2VzICovLAotCQkJCTJEOTJBNzk4MjEzNDhEODUwMEY0OTNGRCAvKiBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQjFGNzk4MUQx
QjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4RDIxMkI2QUIxMDBGNDkzRkQgLyogV2Vi
UGxhdGZvcm1Ub3VjaFBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDRFMjEyQ0Y5
RjAwMDEyOEFGRCAvKiBXZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355431</attachid>
            <date>2018-11-21 11:12:51 -0800</date>
            <delta_ts>2018-11-21 13:54:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191875-20181121111247.patch</filename>
            <type>text/plain</type>
            <size>69672</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQxMWQ5ZGVmOGIxMzhiNzExMTYwMWFh
YmVjYTM1OGQ4MTAxMDJhNzcuLjdiMWI1MDE1Mzk1Yzg5MGQ2OThlOTI1NTI3MDFkOGFiZGEzZWMz
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMTEtMjEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUg
Zm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MTg3NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDYyMDMyMTU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDog
RGVmaW5lZCBVU0VfUEFTU0tJVC4KKyAgICAgICAgKiB3dGYvY29jb2EvU29mdExpbmtpbmcuaDog
QWRkZWQgX1dJVEhfRVhQT1JUIHZhcmlhbnRzIG9mIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NP
VVJDRSwKKyAgICAgICAgU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UsIFNP
RlRfTElOS19DTEFTU19GT1JfU09VUkNFLAorICAgICAgICBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRSwgYW5kIFNPRlRfTElOS19QT0lOVEVSX0ZPUl9TT1VSQ0UuCisKIDIwMTgtMTEtMTQg
IEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCAjZW5kIHZz
LiAjZW5kaWYgdHlwby4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwZjc0ZjdhMTlhOTQyMWNmNmNlMzMzYzFmMDY3
ZmE2YWVlZTRlOGI3Li5mYjZjZmYyODc2ZGFkNjU1NDU3ZTJhZjQwZTFiNmIyY2RkOWExNzc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgtMTEtMjEgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZp
bGUgZm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MTg3NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDYyMDMyMTU+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxl
cGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29jb2EubW06IFJlbW92ZWQgU09GVF9MSU5LIG1hY3Jv
cyBhbmQgaW5jbHVkZWQgUGFzc0tpdFNvZnRMaW5rLmggaW5zdGVhZC4KKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbTogRGl0dG8u
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDogUmVtb3ZlZCBAbm8tdW5pZnkgZnJvbSBQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOiBSZW1vdmVkIFBheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbSBm
cm9tIHRoZSBXZWJDb3JlIHRhcmdldC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVD
b2NvYS5tbTogUmVtb3ZlZCBTT0ZUX0xJTksgbWFjcm9zIGFuZCBpbmNsdWRlZCBQYXNzS2l0U29m
dExpbmsuaCBpbnN0ZWFkLgorCiAyMDE4LTExLTIwICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmluZyB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZSBmcm9tIFdl
YkxheWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAwZWRlZTVjM2FjOGRlMjg1MDY0NTE3NjVlMjAx
NTBiYWU4YzM4OWY3Li4wMDVkMWZjMzkwM2E1NjAxNWFlNTRiMGY4MTI4YzAzOGQ0MjJkYzk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0xMS0yMSAgQW5keSBFc3Rl
cyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBDcmVhdGUgYSBzb2Z0LWxp
bmtpbmcgZmlsZSBmb3IgUGFzc0tpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkxODc1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NjIwMzIxNT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhbC9QbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg6IEFkZGVkLgorICAgICAg
ICAqIHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsubW06IEFkZGVkLiBVc2VkIF9XSVRIX0VYUE9S
VCBzb2Z0LWxpbmtpbmcgbWFjcm9zIGluIG9yZGVyIHRvCisgICAgICAgIG1ha2UgdGhlIFBBTCBz
b2Z0LWxpbmtpbmcgc3ltYm9scyB2aXNpYmxlIHRvIFdlYktpdC4KKyAgICAgICAgKiBwYWwvc3Bp
L2NvY29hL1Bhc3NLaXRTUEkuaDoKKwogMjAxOC0xMS0xNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBSZW1vdmUgYWxsIHVzYWdlcyBvZiBV
SUl0ZW1Qcm92aWRlciwgVUlJdGVtUHJvdmlkZXJSZWFkaW5nLCBhbmQgcmVsYXRlZCBjbGFzc2Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDZlOGUzZTRkOGEwOWUxYmUzZjljYjU1ZmM3OTk0MTAyNTFkYWI5NjUuLmZh
MzEzMGZlYmM2MmY0MzRlZDA2YzQxODgwMWFkMjRlYmU0MDU1NDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTgtMTEtMjEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisg
ICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUgZm9yIFBhc3NLaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg3NQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDYyMDMyMTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW06IFJlbW92ZWQgU09GVF9MSU5LIG1hY3JvcyBhbmQgaW5jbHVkZWQgUGFzc0tp
dFNvZnRMaW5rLmggaW5zdGVhZC4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBSZW1vdmVk
IEBuby11bmlmeSBmcm9tIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tIGFuZCBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQ
YXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbTogUmVtb3ZlZCBTT0ZU
X0xJTksgbWFjcm9zIGFuZCBpbmNsdWRlZCBQYXNzS2l0U29mdExpbmsuaCBpbnN0ZWFkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJ
T1MubW06IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlNYWMubW06IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW06IEluY2x1ZGVkIE5TQXR0cmlidXRlZFN0cmlu
Z1NQSS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tOiBJ
bmNsdWRlZCBQcm9jZXNzUHJpdmlsZWdlLmguCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IFJlbW92ZWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0g
YW5kIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGZyb20gdGhlIFdlYktpdCB0YXJn
ZXQuCisKIDIwMTgtMTEtMjAgIEplZmYgTWlsbGVyICA8amVmZm1AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldHVybiBudWxscHRyIGltbWVkaWF0ZWx5IGlmIHRoZSBrZXkgZG9lc24ndCBleGlzdCBp
biB0aGUgSGFzaE1hcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGUyZWI3NWJjZGIzM2E3MzEzNjQwMmRjZDAx
MmRhMDc2M2ZlNjhkNmUuLjMwY2E5MDVjMmExNGQ4OTJhOTM1Y2VlNTk3NmU5ZDRjYzRhYTAyZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaApAQCAtNjE2LDkgKzYxNiwxMCBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQog
Ci0jZGVmaW5lIFVTRV9BUFBLSVQgMQogI2RlZmluZSBIQVZFX1JVTkxPT1BfVElNRVIgMQogI2Rl
ZmluZSBIQVZFX1NFQ19LRVlDSEFJTiAxCisjZGVmaW5lIFVTRV9BUFBLSVQgMQorI2RlZmluZSBV
U0VfUEFTU0tJVCAxCiAKICNpZiBDUFUoWDg2XzY0KQogI2RlZmluZSBIQVZFX05FVFdPUktfRVhU
RU5TSU9OIDEKQEAgLTEwNTMsOSArMTA1NCwxMCBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShJ
T1MpCisjZGVmaW5lIEhBVkVfQVBQX0xJTktTIDEKKyNkZWZpbmUgVVNFX1BBU1NLSVQgMQogI2Rl
ZmluZSBVU0VfUVVJQ0tfTE9PSyAxCiAjZGVmaW5lIFVTRV9TWVNURU1fUFJFVklFVyAxCi0jZGVm
aW5lIEhBVkVfQVBQX0xJTktTIDEKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgIVBMQVRGT1JNKElPU01BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1Nv
ZnRMaW5raW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Tb2Z0TGlua2luZy5oCmluZGV4IDZh
ZWVkYWU0YTY2MzM0NTc2MDZiYTdlMWNiZWZmZjVlYTYzYzA4MmYuLmQyYjQyODNiZmUzMmNlMDNl
ZDhiZjdlZmJkNmYwNDIyNWE0NDQzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29h
L1NvZnRMaW5raW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvU29mdExpbmtpbmcuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTEtMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM0MCw5ICszNDAsOSBAQAogICAgIH0gXAogICAgIH0KIAotI2RlZmlu
ZSBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1l
d29yaykgXAorI2RlZmluZSBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBP
UlQoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgZXhwb3J0KSBcCiAgICAgbmFtZXNwYWNl
IGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAotICAgIHZvaWQqIGZyYW1ld29yayMjTGlicmFyeShib29s
IGlzT3B0aW9uYWwgPSBmYWxzZSk7IFwKKyAgICBleHBvcnQgdm9pZCogZnJhbWV3b3JrIyNMaWJy
YXJ5KGJvb2wgaXNPcHRpb25hbCA9IGZhbHNlKTsgXAogICAgIHZvaWQqIGZyYW1ld29yayMjTGli
cmFyeShib29sIGlzT3B0aW9uYWwpIFwKICAgICB7IFwKICAgICAgICAgc3RhdGljIHZvaWQqIGZy
YW1ld29ya0xpYnJhcnk7IFwKQEAgLTM1Niw5ICszNTYsMTIgQEAKICAgICB9IFwKICAgICB9CiAK
LSNkZWZpbmUgU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoZnVuY3Rpb25O
YW1lc3BhY2UsIGZyYW1ld29yaykgXAorI2RlZmluZSBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9T
T1VSQ0UoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaykgXAorICAgIFNPRlRfTElOS19GUkFN
RVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3Jr
LCApCisKKyNkZWZpbmUgU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgZXhwb3J0KSBcCiAgICAgbmFt
ZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAotICAgIHZvaWQqIGZyYW1ld29yayMjTGlicmFy
eShib29sIGlzT3B0aW9uYWwgPSBmYWxzZSk7IFwKKyAgICBleHBvcnQgdm9pZCogZnJhbWV3b3Jr
IyNMaWJyYXJ5KGJvb2wgaXNPcHRpb25hbCA9IGZhbHNlKTsgXAogICAgIHZvaWQqIGZyYW1ld29y
ayMjTGlicmFyeShib29sIGlzT3B0aW9uYWwpIFwKICAgICB7IFwKICAgICAgICAgc3RhdGljIHZv
aWQqIGZyYW1ld29ya0xpYnJhcnk7IFwKQEAgLTM3Miw2ICszNzUsOSBAQAogICAgIH0gXAogICAg
IH0KIAorI2RlZmluZSBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfRk9SX1NPVVJDRShmdW5j
dGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrKSBcCisgICAgU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVX
T1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywg
KQorCiAjZGVmaW5lIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKGZ1bmN0aW9uTmFtZXNwYWNl
LCBmcmFtZXdvcmssIGNsYXNzTmFtZSkgXAogICAgIEBjbGFzcyBjbGFzc05hbWU7IFwKICAgICBu
YW1lc3BhY2UgZnVuY3Rpb25OYW1lc3BhY2UgeyBcCkBAIC0zODMsMTEgKzM4OSwxMSBAQAogICAg
IH0gXAogICAgIH0KIAotI2RlZmluZSBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShmdW5jdGlv
bk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBjbGFzc05hbWUpIFwKKyNkZWZpbmUgU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywg
Y2xhc3NOYW1lLCBleHBvcnQpIFwKICAgICBAY2xhc3MgY2xhc3NOYW1lOyBcCiAgICAgbmFtZXNw
YWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAogICAgIHN0YXRpYyBDbGFzcyBpbml0IyNjbGFzc05h
bWUoKTsgXAotICAgIENsYXNzICgqZ2V0XyMjZnJhbWV3b3JrIyNfIyNjbGFzc05hbWUjI0NsYXNz
KSgpID0gaW5pdCMjY2xhc3NOYW1lOyBcCisgICAgZXhwb3J0IENsYXNzICgqZ2V0XyMjZnJhbWV3
b3JrIyNfIyNjbGFzc05hbWUjI0NsYXNzKSgpID0gaW5pdCMjY2xhc3NOYW1lOyBcCiAgICAgc3Rh
dGljIENsYXNzIGNsYXNzIyNjbGFzc05hbWU7IFwKICAgICBcCiAgICAgc3RhdGljIENsYXNzIGNs
YXNzTmFtZSMjRnVuY3Rpb24oKSBcCkBAIC00MDgsNiArNDE0LDkgQEAKICAgICB9IFwKICAgICB9
CiAKKyNkZWZpbmUgU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoZnVuY3Rpb25OYW1lc3BhY2Us
IGZyYW1ld29yaywgY2xhc3NOYW1lKSBcCisgICAgU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgY2xhc3NOYW1lLCApCisK
ICNkZWZpbmUgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoZnVuY3Rpb25OYW1lc3BhY2Us
IGZyYW1ld29yaywgdmFyaWFibGVOYW1lLCB2YXJpYWJsZVR5cGUpIFwKICAgICBXVEZfRVhURVJO
X0NfQkVHSU4gXAogICAgIGV4dGVybiBjb25zdCB2YXJpYWJsZVR5cGUgdmFyaWFibGVOYW1lOyBc
CkBAIC00ODksMTMgKzQ5OCwxMyBAQAogICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lc3BhY2U6
OnNvZnRMaW5rIyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSBwYXJhbWV0ZXJOYW1lczsgXAogICAg
IH0KIAotI2RlZmluZSBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVz
cGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xh
cmF0aW9ucywgcGFyYW1ldGVyTmFtZXMpIFwKKyNkZWZpbmUgU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgZnVuY3Rp
b25OYW1lLCByZXN1bHRUeXBlLCBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMsIHBhcmFtZXRlck5hbWVz
LCBleHBvcnQpIFwKICAgICBXVEZfRVhURVJOX0NfQkVHSU4gXAogICAgIHJlc3VsdFR5cGUgZnVu
Y3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9uczsgXAogICAgIFdURl9FWFRFUk5fQ19FTkQg
XAogICAgIG5hbWVzcGFjZSBmdW5jdGlvbk5hbWVzcGFjZSB7IFwKICAgICBzdGF0aWMgcmVzdWx0
VHlwZSBpbml0IyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnM7
IFwKLSAgICByZXN1bHRUeXBlICgqc29mdExpbmsjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lKSBw
YXJhbWV0ZXJEZWNsYXJhdGlvbnMgPSBpbml0IyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZTsgXAor
ICAgIGV4cG9ydCByZXN1bHRUeXBlKCpzb2Z0TGluayMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUp
IHBhcmFtZXRlckRlY2xhcmF0aW9ucyA9IGluaXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lOyBc
CiAgICAgc3RhdGljIHJlc3VsdFR5cGUgaW5pdCMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUgcGFy
YW1ldGVyRGVjbGFyYXRpb25zIFwKICAgICB7IFwKICAgICAgICAgc3RhdGljIGRpc3BhdGNoX29u
Y2VfdCBvbmNlOyBcCkBAIC01MDcsNiArNTE2LDkgQEAKICAgICB9IFwKICAgICB9CiAKKyNkZWZp
bmUgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1l
d29yaywgZnVuY3Rpb25OYW1lLCByZXN1bHRUeXBlLCBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMsIHBh
cmFtZXRlck5hbWVzKSBcCisgICAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgZnVuY3Rpb25OYW1lLCByZXN1bHRU
eXBlLCBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMsIHBhcmFtZXRlck5hbWVzLCApCisKICNkZWZpbmUg
U09GVF9MSU5LX0ZVTkNUSU9OX01BWV9GQUlMX0ZPUl9IRUFERVIoZnVuY3Rpb25OYW1lc3BhY2Us
IGZyYW1ld29yaywgZnVuY3Rpb25OYW1lLCByZXN1bHRUeXBlLCBwYXJhbWV0ZXJEZWNsYXJhdGlv
bnMsIHBhcmFtZXRlck5hbWVzKSBcCiAgICAgV1RGX0VYVEVSTl9DX0JFR0lOIFwKICAgICByZXN1
bHRUeXBlIGZ1bmN0aW9uTmFtZSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnM7IFwKQEAgLTU1MiwxMCAr
NTY0LDEwIEBACiAgICAgZXh0ZXJuIHZhcmlhYmxlVHlwZSAoKmdldF8jI2ZyYW1ld29yayMjXyMj
dmFyaWFibGVOYW1lKSgpOyBcCiAgICAgfQogCi0jZGVmaW5lIFNPRlRfTElOS19QT0lOVEVSX0ZP
Ul9TT1VSQ0UoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgdmFyaWFibGVOYW1lLCB2YXJp
YWJsZVR5cGUpIFwKKyNkZWZpbmUgU09GVF9MSU5LX1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VY
UE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxl
VHlwZSwgZXhwb3J0KSBcCiAgICAgbmFtZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAogICAg
IHN0YXRpYyB2YXJpYWJsZVR5cGUgaW5pdCMjZnJhbWV3b3JrIyN2YXJpYWJsZU5hbWUoKTsgXAot
ICAgIHZhcmlhYmxlVHlwZSAoKmdldF8jI2ZyYW1ld29yayMjXyMjdmFyaWFibGVOYW1lKSgpID0g
aW5pdCMjZnJhbWV3b3JrIyN2YXJpYWJsZU5hbWU7IFwKKyAgICBleHBvcnQgdmFyaWFibGVUeXBl
ICgqZ2V0XyMjZnJhbWV3b3JrIyNfIyN2YXJpYWJsZU5hbWUpKCkgPSBpbml0IyNmcmFtZXdvcmsj
I3ZhcmlhYmxlTmFtZTsgXAogICAgIHN0YXRpYyB2YXJpYWJsZVR5cGUgcG9pbnRlciMjZnJhbWV3
b3JrIyN2YXJpYWJsZU5hbWU7IFwKICAgICBcCiAgICAgc3RhdGljIHZhcmlhYmxlVHlwZSBwb2lu
dGVyIyNmcmFtZXdvcmsjI3ZhcmlhYmxlTmFtZSMjRnVuY3Rpb24oKSBcCkBAIC01NzYsNiArNTg4
LDkgQEAKICAgICB9IFwKICAgICB9CiAKKyNkZWZpbmUgU09GVF9MSU5LX1BPSU5URVJfRk9SX1NP
VVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxl
VHlwZSkgXAorICAgIFNPRlRfTElOS19QT0lOVEVSX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoZnVu
Y3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgdmFyaWFibGVOYW1lLCB2YXJpYWJsZVR5cGUsICkK
KwogI2RlZmluZSBTT0ZUX0xJTktfVkFSSUFCTEVfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFj
ZSwgZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSkgXAogICAgIFdURl9FWFRF
Uk5fQ19CRUdJTiBcCiAgICAgZXh0ZXJuIHZhcmlhYmxlVHlwZSB2YXJpYWJsZU5hbWU7IFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENv
bnRhY3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5
bWVudENvbnRhY3RDb2NvYS5tbQppbmRleCAwYjAyMDRjODZkOGEzNmE1ZDRhNzUyOThkMGY0MWEz
NDQ2MTUwM2VlLi5jYzk3ZmQ1ZTFmNjIzNDU5OWViODg0Y2E4MTg3ZmIyY2QwODU3YzY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250
YWN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9Q
YXltZW50Q29udGFjdENvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNyArMzAsNyBAQAogCiAjaW1wb3J0ICJBcHBs
ZVBheVBheW1lbnRDb250YWN0LmgiCiAjaW1wb3J0IDxDb250YWN0cy9Db250YWN0cy5oPgotI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvUGFz
c0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtMzgsMTQgKzM4LDYgQEAgU09GVF9MSU5LX0ZS
QU1FV09SSyhDb250YWN0cykKIFNPRlRfTElOS19DTEFTUyhDb250YWN0cywgQ05NdXRhYmxlUG9z
dGFsQWRkcmVzcykKIFNPRlRfTElOS19DTEFTUyhDb250YWN0cywgQ05QaG9uZU51bWJlcikKIAot
I2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhQYXNzS2l0KQot
I2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkKLSNlbmRpZgotCi1TT0ZUX0xJTktf
Q0xBU1MoUGFzc0tpdCwgUEtDb250YWN0KQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRp
YyBOU1N0cmluZyAqc3ViTG9jYWxpdHkoQ05Qb3N0YWxBZGRyZXNzICphZGRyZXNzKQpAQCAtMTA2
LDcgKzk4LDcgQEAgc3RhdGljIHZvaWQgc2V0U3ViQWRtaW5pc3RyYXRpdmVBcmVhKENOTXV0YWJs
ZVBvc3RhbEFkZHJlc3MgKmFkZHJlc3MsIE5TU3RyaW5nICoKIAogc3RhdGljIFJldGFpblB0cjxQ
S0NvbnRhY3Q+IGNvbnZlcnQodW5zaWduZWQgdmVyc2lvbiwgY29uc3QgQXBwbGVQYXlQYXltZW50
Q29udGFjdCYgY29udGFjdCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW2FsbG9jUEtD
b250YWN0SW5zdGFuY2UoKSBpbml0XSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtQQUw6
OmFsbG9jUEtDb250YWN0SW5zdGFuY2UoKSBpbml0XSk7CiAKICAgICBOU1N0cmluZyAqZmFtaWx5
TmFtZSA9IG5pbDsKICAgICBOU1N0cmluZyAqcGhvbmV0aWNGYW1pbHlOYW1lID0gbmlsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWVy
Y2hhbnRTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2Nv
Y29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbQppbmRleCA4MWM4Y2NiNzM4YTdmOTM1
NDEyMWM4YTI4ZDY3OTM1YzMxMjc2Y2FiLi5mYzM2Yzg5NTMxNDlmNDMzMGJkOTUxYTZhZWMyMmI4
ZWZiMmUwZGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2Nv
Y29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwx
NiArMjksNyBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL0pTT05PYmplY3QuaD4KLSNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oPgot
I2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLSNpZiBQTEFURk9STShNQUMpCi1TT0ZUX0xJ
TktfUFJJVkFURV9GUkFNRVdPUksoUGFzc0tpdCkKLSNlbHNlCi1TT0ZUX0xJTktfRlJBTUVXT1JL
KFBhc3NLaXQpCi0jZW5kaWYKLQotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudE1l
cmNoYW50U2Vzc2lvbikKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Myw3ICs0NCw3IEBAIHN0ZDo6b3B0aW9uYWw8UGF5
bWVudE1lcmNoYW50U2Vzc2lvbj4gUGF5bWVudE1lcmNoYW50U2Vzc2lvbjo6ZnJvbUpTKEpTQzo6
RXhlY1N0CiAgICAgaWYgKCFkaWN0aW9uYXJ5IHx8ICFbZGljdGlvbmFyeSBpc0tpbmRPZkNsYXNz
OltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIGF1dG8gcGtQYXltZW50TWVyY2hhbnRTZXNzaW9uID0gYWRvcHROUyhbYWxsb2NQS1BheW1l
bnRNZXJjaGFudFNlc3Npb25JbnN0YW5jZSgpIGluaXRXaXRoRGljdGlvbmFyeTpkaWN0aW9uYXJ5
XSk7CisgICAgYXV0byBwa1BheW1lbnRNZXJjaGFudFNlc3Npb24gPSBhZG9wdE5TKFtQQUw6OmFs
bG9jUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uSW5zdGFuY2UoKSBpbml0V2l0aERpY3Rpb25hcnk6
ZGljdGlvbmFyeV0pOwogCiAgICAgcmV0dXJuIFBheW1lbnRNZXJjaGFudFNlc3Npb24ocGtQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Q
QUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMTU1MmRmN2Y3NWZjNTM5YmI4NzU2
ZDA4NDliNTRkNjg2OTU1NDA5Li43N2YyNDY3M2U1MTczNjk3ZjVjYmNlN2VjM2E0NTIxNmNmNDgz
MTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMzEsNiArMTMxLDggQEAKIAkJQTExNzVCNTgxRjZCNDcwNTAwQzRCOUYwIC8q
IERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTE3NUI1NjFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJj
aFByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJQTExNzVCNUExRjZCNEE4NDAwQzRCOUYwIC8qIE5TU2Ny
b2xsVmlld1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTExNzVCNTkxRjZCNEE4NDAwQzRCOUYwIC8qIE5TU2Nyb2xsVmlld1NQSS5oICovOyB9Owog
CQlBMUY1NURDRjFGNTUyOEVDMDBFREI3NUYgLyogTWV0YWRhdGFTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjU1RENFMUY1NTI4RUMwMEVEQjc1
RiAvKiBNZXRhZGF0YVNQSS5oICovOyB9OworCQlBMUY2M0M5RjIxQTREQkY3MDA2RkI0M0IgLyog
UGFzc0tpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUY2M0M5RDIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLmggKi87
IH07CisJCUExRjYzQ0EwMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY2M0M5RTIxQTRE
QkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tICovOyB9OwogCQlBMzBENDEyMTFGMERE
MEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEEzMEQ0MTFFMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oICov
OyB9OwogCQlBMzBENDEyMjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQxMUYxRjBERDBFQTAw
QjcxOTU0IC8qIEtpbGxSaW5nLmNwcCAqLzsgfTsKIAkJQTMwRDQxMjUxRjBERDEyRDAwQjcxOTU0
IC8qIEtpbGxSaW5nTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTMwRDQxMjQxRjBERDEyRDAwQjcxOTU0IC8qIEtpbGxSaW5nTWFjLm1tICovOyB9
OwpAQCAtMjg3LDYgKzI4OSw4IEBACiAJCUExMTc1QjU2MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZh
dWx0U2VhcmNoUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmYXVsdFNlYXJjaFBy
b3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExNzVCNTkxRjZCNEE4
NDAwQzRCOUYwIC8qIE5TU2Nyb2xsVmlld1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1Njcm9sbFZp
ZXdTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGNTVEQ0UxRjU1MjhFQzAw
RURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFkYXRhU1BJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRjYzQzlEMjFBNERCRjcwMDZGQjQzQiAvKiBQ
YXNzS2l0U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFzc0tpdFNvZnRMaW5rLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRjYzQzlFMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNz
S2l0U29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXNzS2l0U29mdExpbmsubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTFFMUYwREQwRUEwMEI3MTk1NCAv
KiBLaWxsUmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLaWxsUmluZy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDExRjFGMEREMEVBMDBCNzE5NTQg
LyogS2lsbFJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS2ls
bFJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDEyNDFGMEREMTJE
MDBCNzE5NTQgLyogS2lsbFJpbmdNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBLaWxsUmluZ01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTU2MCw2ICs1NjQsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQlGNDQyOTE2NjFGQTUyNzA1MDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbSAq
LywKKwkJCQlBMUY2M0M5RDIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLmggKi8s
CisJCQkJQTFGNjNDOUUyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSAqLywK
IAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAt
NzI5LDYgKzczNSw3IEBACiAJCQkJMEM3Nzg1OUQxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TV2luZG93
U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzBBQjhGOTIwQUY2RTNEMDBCOEJFODcgLyogTlNY
UENDb25uZWN0aW9uU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzVBRjkxRjFGNDNBNEM3MDAy
RUFDMDIgLyogT3BlbkdMRVNTUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUExRjYzQzlGMjFBNERC
RjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRB
MTU1MUYzQkVCNDkwMERCQzMxNyAvKiBQYXNzS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
Qzc3ODU5RTFGNDUxMzBGMDBGNEVCQjYgLyogUElQU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MTE3NUI0RTFGNkIzMzczMDBDNEI5RjAgLyogUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLywKQEAg
LTg1NCw2ICs4NjEsNyBAQAogCQkJCUEzMEQ0MTI1MUYwREQxMkQwMEI3MTk1NCAvKiBLaWxsUmlu
Z01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNDg3NkQ4MUY4RDdGNEUwMENDRUVCRCAvKiBM
b2dnaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBDRjk5Q0E0MUY3MzYzNzUwMDdFRTc5MyAv
KiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFGNjNDQTAy
MUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUExMTc1QjRGMUY2QjMzNzMwMEM0QjlGMCAvKiBQb3B1cE1lbnUubW0gaW4gU291cmNlcyAqLywK
IAkJCQlBM0M2NkNEQzFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUEzQUI2RTUyMUYzRDFEQzUwMDlDMTRCMSAvKiBTbGVlcERpc2FibGVyLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9y
bU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1NYWMuY21ha2UKaW5k
ZXggYjJhY2ZiYjEzOTc5YTEwMDczY2JkYjM0OTVjMDI4OWJmNWQyM2RkMC4uYjc4MDg4YmM0Y2U0
MzAyMmZjOTdmMDdhNjc1YzZlMTc0ZGJlYjVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1Bs
YXRmb3JtTWFjLmNtYWtlCkBAIC0zLDYgKzMsOCBAQCBsaXN0KEFQUEVORCBQQUxfUFVCTElDX0hF
QURFUlMKIAogICAgIGNmL0NvcmVNZWRpYVNvZnRMaW5rLmgKIAorICAgIGNvY29hL1Bhc3NLaXRT
b2Z0TGluay5oCisKICAgICBzcGkvY2YvQ0ZMb2NhbGVTUEkuaAogICAgIHNwaS9jZi9DRk5ldHdv
cmtDb25uZWN0aW9uQ2FjaGVTUEkuaAogICAgIHNwaS9jZi9DRk5ldHdvcmtTUEkuaApAQCAtOTYs
NiArOTgsNyBAQCBsaXN0KEFQUEVORCBQQUxfU09VUkNFUwogCiAgICAgY29jb2EvRmlsZVNpemVG
b3JtYXR0ZXJDb2NvYS5tbQogICAgIGNvY29hL0xvZ2dpbmdDb2NvYS5tbQorICAgIGNvY29hL1Bh
c3NLaXRTb2Z0TGluay5tbQogCiAgICAgY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RD
b21tb25DcnlwdG8uY3BwCiAKQEAgLTExNCw2ICsxMTcsNyBAQCBsaXN0KEFQUEVORCBQQUxfU09V
UkNFUwogbGlzdChBUFBFTkQgUEFMX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIk
e1BBTF9ESVJ9L3BhbC9hdmZvdW5kYXRpb24iCiAgICAgIiR7UEFMX0RJUn0vcGFsL2NmIgorICAg
ICIke1BBTF9ESVJ9L3BhbC9jb2NvYSIKICAgICAiJHtQQUxfRElSfS9wYWwvc3BpL2NmIgogICAg
ICIke1BBTF9ESVJ9L3BhbC9zcGkvY2ciCiAgICAgIiR7UEFMX0RJUn0vcGFsL3NwaS9jb2NvYSIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5r
LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk4YWUxNGMxNGY0MmMwMmZhZDJjN2E4NDc2MGM1OTQxNDZhYzY3YjMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShQ
QVNTS0lUKQorCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQg
PHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFM
LCBQYXNzS2l0KQorCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBL
Q29udGFjdCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXNz
TGlicmFyeSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXlt
ZW50KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQ
QUwsIFBhc3NLaXQsIFBLUGF5bWVudE1ldGhvZCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVS
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uKQorU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0KQorU09GVF9MSU5LX0NM
QVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRTdW1tYXJ5SXRlbSkKK1NPRlRf
TElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtTaGlwcGluZ01ldGhvZCkKKwor
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXlt
ZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRl
bnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNv
bXBsZXRpb24pLCAoaWRlbnRpZmllciwgZG9tYWluLCBjb21wbGV0aW9uKSkKK1NPRlRfTElOS19G
VU5DVElPTl9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtEcmF3QXBwbGVQYXlCdXR0b24sIHZv
aWQsIChDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IGRyYXdSZWN0LCBDR0Zsb2F0IHNjYWxl
LCBQS1BheW1lbnRCdXR0b25UeXBlIHR5cGUsIFBLUGF5bWVudEJ1dHRvblN0eWxlIHN0eWxlLCBO
U1N0cmluZyAqbGFuZ3VhZ2VDb2RlKSwgKGNvbnRleHQsIGRyYXdSZWN0LCBzY2FsZSwgdHlwZSwg
c3R5bGUsIGxhbmd1YWdlQ29kZSkpCisKKyNpZiBQTEFURk9STShNQUMpCitTT0ZUX0xJTktfUE9J
TlRFUl9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtFeHRlbnNpb25QYXltZW50QXV0aG9yaXph
dGlvblVJRXh0ZW5zaW9uUG9pbnROYW1lLCBOU1N0cmluZyAqKQorI2VuZGlmCisKKyNpZiBQTEFU
Rk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMzAwKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0
LCBQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFE
RVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSkKK1NP
RlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFNo
aXBwaW5nQ29udGFjdFVwZGF0ZSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlKQorCitTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1l
cmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uLCB2b2lkLCAoTlNTdHJp
bmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIE5TU3RyaW5nICpzb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIsIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbiBjb21w
bGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyLCBjb21wbGV0aW9uKSkKKworU09GVF9MSU5LX1BPSU5URVJfRk9SX0hFQURFUihQ
QUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkRW1haWxBZGRyZXNzLCBOU1N0cmluZyAqKQorU09G
VF9MSU5LX1BPSU5URVJfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkTmFt
ZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0
LCBQS0NvbnRhY3RGaWVsZFBob25lTnVtYmVyLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5U
RVJfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lLCBO
U1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVJfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBL
Q29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcywgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVS
X0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvckNvbnRhY3RGaWVsZFVzZXJJ
bmZvS2V5LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVJfRk9SX0hFQURFUihQQUwsIFBh
c3NLaXQsIFBLUGF5bWVudEVycm9yRG9tYWluLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5U
RVJfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEVycm9yUG9zdGFsQWRkcmVzc1Vz
ZXJJbmZvS2V5LCBOU1N0cmluZyAqKQorI2VuZGlmCisKKyNlbmRpZiAvLyBVU0UoUEFTU0tJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5r
Lm1tIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDZlOWRiMjNhZmIxMDEwMTliMzQxNjllNjM4ODhiNzRkYWYxZWQ4MQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5r
Lm1tCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKwor
I2lmIFVTRShQQVNTS0lUKQorCisjaW1wb3J0ICJQYXNzS2l0U1BJLmgiCisjaW1wb3J0IDx3dGYv
U29mdExpbmtpbmcuaD4KKworI2lmIFBMQVRGT1JNKE1BQykKK1NPRlRfTElOS19QUklWQVRFX0ZS
QU1FV09SS19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEFMX0VYUE9SVCkK
KyNlbHNlCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQ
YXNzS2l0LCBQQUxfRVhQT1JUKQorI2VuZGlmCisKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0LCBQQUxfRVhQT1JUKQorU09GVF9M
SU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bhc3NMaWJy
YXJ5LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQo
UEFMLCBQYXNzS2l0LCBQS1BheW1lbnQsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlciwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uLCBQQUxfRVhQ
T1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0
LCBQS1BheW1lbnRNZXRob2QsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFJlcXVlc3QsIFBBTF9FWFBPUlQp
CitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
UGF5bWVudFN1bW1hcnlJdGVtLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1NoaXBwaW5nTWV0aG9kLCBQQUxfRVhQT1JU
KQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NL
aXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiwgdm9p
ZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBQS0Nhbk1ha2VQYXlt
ZW50c0NvbXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBkb21haW4sIGNvbXBsZXRp
b24pLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBQYXNz
S2l0LCBQS0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29udGV4dFJlZiBjb250ZXh0LCBD
R1JlY3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVudEJ1dHRvblR5cGUgdHlwZSwg
UEtQYXltZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICpsYW5ndWFnZUNvZGUpLCAoY29u
dGV4dCwgZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFuZ3VhZ2VDb2RlKSkKKworI2lm
IFBMQVRGT1JNKE1BQykKK1NPRlRfTElOS19QT0lOVEVSX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQo
UEFMLCBQYXNzS2l0LCBQS0V4dGVuc2lvblBheW1lbnRBdXRob3JpemF0aW9uVUlFeHRlbnNpb25Q
b2ludE5hbWUsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCisjZW5kaWYKKworI2lmIFBMQVRGT1JN
KElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEzMDApCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IFBhc3NLaXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQsIFBBTF9FWFBPUlQpCitTT0ZU
X0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVu
dFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNT
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0U2hp
cHBpbmdDb250YWN0VXBkYXRlLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRo
b2RVcGRhdGUsIFBBTF9FWFBPUlQpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVu
dGlmaWVyRG9tYWluQW5kU291cmNlQXBwbGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRp
ZmllciwgTlNTdHJpbmcgKmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25k
YXJ5SWRlbnRpZmllciwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAo
aWRlbnRpZmllciwgZG9tYWluLCBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIs
IGNvbXBsZXRpb24pLCBQQUxfRVhQT1JUKQorCitTT0ZUX0xJTktfUE9JTlRFUl9GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRFbWFpbEFkZHJlc3MsIE5T
U3RyaW5nICosIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfUE9JTlRFUl9GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGROYW1lLCBOU1N0cmluZyAqLCBQQUxf
RVhQT1JUKQorU09GVF9MSU5LX1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBh
c3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmVOdW1iZXIsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQp
CitTT0ZUX0xJTktfUE9JTlRFUl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwg
UEtDb250YWN0RmllbGRQaG9uZXRpY05hbWUsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCitTT0ZU
X0xJTktfUE9JTlRFUl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDb250
YWN0RmllbGRQb3N0YWxBZGRyZXNzLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQorU09GVF9MSU5L
X1BPSU5URVJfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEVy
cm9yQ29udGFjdEZpZWxkVXNlckluZm9LZXksIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCitTT0ZU
X0xJTktfUE9JTlRFUl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXlt
ZW50RXJyb3JEb21haW4sIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfUE9JTlRF
Ul9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JQb3N0
YWxBZGRyZXNzVXNlckluZm9LZXksIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCisjZW5kaWYKKwor
I2VuZGlmIC8vIFVTRShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29j
b2EvUGFzc0tpdFNQSS5oCmluZGV4IGI1ZTU5MzAzMjcxZmI1ODFhYjM0OWFiOTVmNzQzMjA5MTQ4
YWEyNTguLjc3Y2I2ZTFkNzAzZTdiYzk1YjMzMzJkMDdlNTVlNzE0ODMzZjFlZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKQEAgLTM5LDggKzM5
LDggQEAKIAogI2VsaWYgUExBVEZPUk0oTUFDKQogCisjaW1wb3J0IDxBcHBLaXQvQXBwS2l0Lmg+
CiAjaW1wb3J0IDxDb250YWN0cy9Db250YWN0cy5oPgotI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKQEAgLTIyNSw3ICsyMjUsNyBA
QCB0eXBlZGVmIE5TU3RyaW5nICogUEtQYXltZW50TmV0d29yayBOU19FWFRFTlNJQkxFX1NUUklO
R19FTlVNOwogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAotI2VuZGlmCisjZW5kaWYgLy8gUExB
VEZPUk0oTUFDKQogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCkBAIC0yNjEsNyArMjYxLDcg
QEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIFBLUGF5bWVudFJlcXVlc3RBUElUeXBlKSB7
CiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORAogCi0jZW5kaWYKKyNlbmRpZiAvLyBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFBLUGF5bWVudEJ1dHRvblN0eWxlKSB7
CkBAIC0zMjQsNCArMzI0LDYgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBzdHJvbmcpIE5TU3RyaW5nICpDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU7
CiBAZW5kCiAKK3R5cGVkZWYgdm9pZCAoXlBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbikoQk9P
TCBpc1ZhbGlkLCBOU0Vycm9yICopOworCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IGExNDgwZmJhNmY5NDBhNmI2ODdkM2MzZTkwZjBhNTFmMTMxZjc3
MWIuLjY1ZWJjODQzNjYyMDFkNTg5Zjc0YTVhNWZmNTQ5ODEzYmVmYmE3MDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dApAQCAtNTg4LDcgKzU4OCw3IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmNwcAogCiAgICAgTW9kdWxlcy9hcHBsZXBh
eS9jb2NvYS9QYXltZW50Q29jb2EubW0KICAgICBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1l
bnRDb250YWN0Q29jb2EubW0KLSAgICBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJj
aGFudFNlc3Npb25Db2NvYS5tbSBAbm8tdW5pZnkKKyAgICBNb2R1bGVzL2FwcGxlcGF5L2NvY29h
L1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbQogICAgIE1vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudE1ldGhvZENvY29hLm1tCiAKICAgICBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRy
ZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzIzMzRjNjA0ZTczYjg2MDgy
NWI4OTA1N2JjOWE4OTQxOTllYjEzNS4uYTc1M2FhMDYzMzA1Y2UxODFkOTI5YjAzNTA0NzY3ODk5
YzMwZDMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNDQ3MSw3ICs0NDcxLDYgQEAKIAkJREU1Rjg2MEQxRkEyMzg2QjAwNkRC
NjNBIC8qIFVuaWZpZWRTb3VyY2U0NzguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gREU1Rjg1RDIxRkEyMzg1NjAwNkRCNjNBIC8qIFVuaWZpZWRTb3Vy
Y2U0NzguY3BwICovOyB9OwogCQlERTVGODYwRTFGQTIzODZCMDA2REI2M0EgLyogVW5pZmllZFNv
dXJjZTQ3OS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBERTVGODVDRjFGQTIzODUwMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ3OS5jcHAgKi87IH07
CiAJCURFNUY4NjBGMUZBMjM4NkIwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDgwLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4NUQzMUZBMjM4
NTkwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDgwLmNwcCAqLzsgfTsKLQkJREU1Rjg2MTAxRkEy
MzhEOTAwNkRCNjNBIC8qIFBheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBREE0QTFCMUQyMkYyQzAwMDVB
OUExNSAvKiBQYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0gKi87IH07CiAJCURFNUY4NjEx
MUZBMjM5REEwMDZEQjYzQSAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRTI5RTVDMTY3QThBMTkw
MDU4NkQzRCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcCAqLzsgfTsKIAkJREU1Rjg2
MTIxRkEyMzlFNzAwNkRCNjNBIC8qIEpTR0NPYnNlcnZhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxNEVBRTFDRjY2NTRBMDA0NzIzQzQg
LyogSlNHQ09ic2VydmF0aW9uLmNwcCAqLzsgfTsKIAkJREU1Rjg2MUQxRkEyODE1QjAwNkRCNjNB
IC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE0NzhBN0UxNkNENzBDMzAwN0QxQkI0IC8q
IFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tICovOyB9OwpAQCAtMzIzNDUsNyAr
MzIzNDQsNiBAQAogCQkJCUEzMUM0RTREMTZFMDJBQTYwMDJGNzk1NyAvKiBPRVNUZXh0dXJlSGFs
ZkZsb2F0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMDc4Q0M3MTg4MEFBQjUwMDgwOTlEQyAv
KiBPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc3QTE3
QTcxMTJGMjgxODIwMDRFMDJGNiAvKiBPRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQlERTVGODYxMDFGQTIzOEQ5MDA2REI2M0EgLyogUGF5bWVudE1lcmNoYW50U2Vz
c2lvbkNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VBMjg0NjYyMTQxRTg0OTAwRTQwN0U4
IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQUExMkRG
NDkxNzQzREY4MzAwNERBRkRGIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0gaW4g
U291cmNlcyAqLywKIAkJCQlDREEyOUEzMDFDQkY3NEQ0MDA5MDFDQ0YgLyogUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQVZLaXQubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KaW5kZXggYjRhYWY2NDIxZDJiNmQzYzViMzBkZWFh
NzRlM2U3MjYzMjlkMmFjZC4uY2I2MTA4MjkyYTQ4OTg2YzE5Yzc4YjExNDQwYTE1NzcyYTBlYTk5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KQEAg
LTMyLDE2ICszMiw3IEBACiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCi0jaW1wb3J0IDxwYWwv
c3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KLSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi0j
aWYgUExBVEZPUk0oTUFDKQotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFBhc3NLaXQpOwot
I2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCk7Ci0jZW5kaWYKLQotU09GVF9MSU5L
X01BWV9GQUlMKFBhc3NLaXQsIFBLRHJhd0FwcGxlUGF5QnV0dG9uLCB2b2lkLCAoQ0dDb250ZXh0
UmVmIGNvbnRleHQsIENHUmVjdCBkcmF3UmVjdCwgQ0dGbG9hdCBzY2FsZSwgUEtQYXltZW50QnV0
dG9uVHlwZSB0eXBlLCBQS1BheW1lbnRCdXR0b25TdHlsZSBzdHlsZSwgTlNTdHJpbmcgKmxhbmd1
YWdlQ29kZSksIChjb250ZXh0LCBkcmF3UmVjdCwgc2NhbGUsIHR5cGUsIHN0eWxlLCBsYW5ndWFn
ZUNvZGUpKTsKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KIAogI2VuZGlm
IC8vIEVOQUJMRShBUFBMRV9QQVkpCiAKQEAgLTEwOCw5ICs5OSw2IEBAIHN0YXRpYyBQS1BheW1l
bnRCdXR0b25UeXBlIHRvUEtQYXltZW50QnV0dG9uVHlwZShBcHBsZVBheUJ1dHRvblR5cGUgdHlw
ZSkKIAogYm9vbCBSZW5kZXJUaGVtZUNvY29hOjpwYWludEFwcGxlUGF5QnV0dG9uKGNvbnN0IFJl
bmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJ
bnRSZWN0JiBwYWludFJlY3QpCiB7Ci0gICAgaWYgKCFjYW5Mb2FkUEtEcmF3QXBwbGVQYXlCdXR0
b24oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5zZXRTaG91bGRTbW9vdGhGb250cyh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXgg
MzVmOThiMTFiN2YxYTkyMTI5YWVkYjQyMTIyYWIwYjg1OTA3OTIyNS4uZDBlMzc0NTIwNmRkOThh
Yjc0YjZmNGQxNTViODgyNzZkYTU4NmUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTMwLDIwICsz
MCw4IEBACiAKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUvUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+Ci0j
aW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KLSNpbXBvcnQgPHd0Zi9Tb2Z0TGlu
a2luZy5oPgotCi0jaWYgUExBVEZPUk0oTUFDKQotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JL
KFBhc3NLaXQpCi0jZWxzZQotU09GVF9MSU5LX0ZSQU1FV09SSyhQYXNzS2l0KQotI2VuZGlmCi0K
LVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS0NvbnRhY3QpOwotU09GVF9MSU5LX0NMQVNTKFBh
c3NLaXQsIFBLUGF5bWVudCk7Ci1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50TWV0
aG9kKTsKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24p
OwogCiBuYW1lc3BhY2UgSVBDIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNjcsNyAr
NTUsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQYXltZW50JgogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMo
W1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3Rh
dGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFS
ZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwogICAgIGF1dG8gdW5hcmNoaXZlciA9
IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRhLmdldCgpKTsKICAgICBAdHJ5IHsKLSAgICAg
ICAgUEtQYXltZW50ICpwa1BheW1lbnQgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNz
OmdldFBLUGF5bWVudENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07
CisgICAgICAgIFBLUGF5bWVudCAqcGtQYXltZW50ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0
T2ZDbGFzczpQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRB
cmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgICAgIHBheW1lbnQgPSBQYXltZW50KHBrUGF5bWVu
dCk7CiAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKICAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIFBLUGF5bWVudDogJUAiLCBleGNlcHRpb24pOwpAQCAt
MTE4LDcgKzEwNiw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFj
dD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQCiAgICAgYXV0byBkYXRhID0g
YWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weTpjb25zdF9jYXN0PHZv
aWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpKSBsZW5n
dGg6ZGF0YVJlZmVyZW5jZS5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7CiAgICAgYXV0byB1bmFy
Y2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKGRhdGEuZ2V0KCkpOwogICAgIEB0cnkg
ewotICAgICAgICBQS0NvbnRhY3QgKnBrQ29udGFjdCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVj
dE9mQ2xhc3M6Z2V0UEtDb250YWN0Q2xhc3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2Jq
ZWN0S2V5XTsKKyAgICAgICAgUEtDb250YWN0ICpwa0NvbnRhY3QgPSBbdW5hcmNoaXZlciBkZWNv
ZGVPYmplY3RPZkNsYXNzOlBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0Q2xhc3MoKSBmb3JLZXk6
TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKICAgICAgICAgcGF5bWVudENvbnRhY3QgPSBQ
YXltZW50Q29udGFjdChwa0NvbnRhY3QpOwogICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhj
ZXB0aW9uKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBQS0NvbnRhY3Q6
ICVAIiwgZXhjZXB0aW9uKTsKQEAgLTE3NSw3ICsxNjMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBXZQogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0
ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFS
ZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9u
ZTpOT10pOwogICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShk
YXRhLmdldCgpKTsKICAgICBAdHJ5IHsKLSAgICAgICAgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9u
ICpwa1BheW1lbnRNZXJjaGFudFNlc3Npb24gPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNs
YXNzOmdldFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNo
aXZlUm9vdE9iamVjdEtleV07CisgICAgICAgIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbiAqcGtQ
YXltZW50TWVyY2hhbnRTZXNzaW9uID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQ
QUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNsYXNzKCkgZm9yS2V5Ok5T
S2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgICAgIHBheW1lbnRNZXJjaGFudFNlc3Np
b24gPSBQYXltZW50TWVyY2hhbnRTZXNzaW9uKHBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbik7CiAg
ICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gZGVjb2RlIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbjogJUAiLCBleGNlcHRp
b24pOwpAQCAtMjA1LDcgKzE5Myw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXlt
ZW50TWV0aG9kPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlBhCiAgICAgYXV0
byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weTpjb25z
dF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oZGF0YVJlZmVyZW5jZS5kYXRh
KCkpKSBsZW5ndGg6ZGF0YVJlZmVyZW5jZS5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7CiAgICAg
YXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKGRhdGEuZ2V0KCkpOwog
ICAgIEB0cnkgewotICAgICAgICBQS1BheW1lbnRNZXRob2QgKnBrUGF5bWVudE1ldGhvZCA9IFt1
bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6Z2V0UEtQYXltZW50TWV0aG9kQ2xhc3MoKSBm
b3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKKyAgICAgICAgUEtQYXltZW50TWV0
aG9kICpwa1BheW1lbnRNZXRob2QgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOlBB
TDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50TWV0aG9kQ2xhc3MoKSBmb3JLZXk6TlNLZXllZEFyY2hp
dmVSb290T2JqZWN0S2V5XTsKICAgICAgICAgcGF5bWVudE1ldGhvZCA9IFBheW1lbnRNZXRob2Qo
cGtQYXltZW50TWV0aG9kKTsKICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikg
ewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgUEtQYXltZW50OiAlQCIsIGV4
Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMDhkYmQ3YjY1NmQ0NTA0YmZlNzBh
Y2U5YTRmOWUxMGZjMjkwODQ2Yi4uZTg4YzVmZTZhY2ExYjk0MWZjMDkwYWFhNDZlMTljOGI4OTg0
Y2I4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMjk0LDkgKzI5NCw5IEBAIFVJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlldy5tbQogCiBVSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQogCi1VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tIEBuby11bmlmeQorVUlQcm9jZXNzL0FwcGxlUGF5
L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQogCi1VSVByb2Nlc3MvQXBwbGVQ
YXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIEBuby11bmlmeQorVUlQcm9j
ZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQogCiBVSVBy
b2Nlc3MvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eUNv
Y29hLm1tCiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vY29jb2EvU2VjS2V5UHJveHlTdG9yZS5t
bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KaW5kZXgg
ZGIyYjZjOGJkMjBmY2NmMDA5NDk0MjA1ZDIxMWRjYzQxOTIzODE3OC4uODEwY2ZjMTAyMjdlMGFj
YTQzMmYzMzlmNTBlMTUzZGQ0NDljOWI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUNvY29hLm1tCkBAIC0zMywyNSArMzMsMTEgQEAKICNpbXBvcnQgPFdlYkNv
cmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVu
dEhlYWRlcnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4K
ICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KLSNpbXBv
cnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi0jaWYgUExBVEZPUk0oTUFDKQotU09GVF9MSU5LX1BS
SVZBVEVfRlJBTUVXT1JLX09QVElPTkFMKFBhc3NLaXQpCi0jZWxzZQotU09GVF9MSU5LX0ZSQU1F
V09SSyhQYXNzS2l0KQotI2VuZGlmCi0KLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1Bhc3NM
aWJyYXJ5KTsKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXIpOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudE1lcmNo
YW50U2Vzc2lvbik7Ci1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdCk7
Ci1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50U3VtbWFyeUl0ZW0pOwotU09GVF9M
SU5LX0NMQVNTKFBhc3NLaXQsIFBLU2hpcHBpbmdNZXRob2QpOwotCi0jaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MTAwMDApCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMzAwKQogU09GVF9MSU5LX0ZSQU1FV09SSyhDb250
YWN0cykKIFNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3RyZWV0
S2V5LCBOU1N0cmluZyAqKTsKIFNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxB
ZGRyZXNzU3ViTG9jYWxpdHlLZXksIE5TU3RyaW5nICopOwpAQCAtNjEsMzAgKzQ3LDggQEAgU09G
VF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NTdGF0ZUtleSwgTlNTdHJp
bmcgKik7CiBTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1Bvc3Rh
bENvZGVLZXksIE5TU3RyaW5nICopOwogU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBv
c3RhbEFkZHJlc3NDb3VudHJ5S2V5LCBOU1N0cmluZyAqKTsKIFNPRlRfTElOS19DT05TVEFOVChD
b250YWN0cywgQ05Qb3N0YWxBZGRyZXNzSVNPQ291bnRyeUNvZGVLZXksIE5TU3RyaW5nICopOwot
U09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQpCi1T
T0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRh
dGUpCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29u
dGFjdFVwZGF0ZSkKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0U2hp
cHBpbmdNZXRob2RVcGRhdGUpCi1TT0ZUX0xJTktfQ09OU1RBTlQoUGFzc0tpdCwgUEtQYXltZW50
RXJyb3JEb21haW4sIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBL
Q29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcywgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RB
TlQoUGFzc0tpdCwgUEtDb250YWN0RmllbGRFbWFpbEFkZHJlc3MsIE5TU3RyaW5nICopOwotU09G
VF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmVOdW1iZXIsIE5TU3Ry
aW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkTmFtZSwg
TlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoUGFzc0tpdCwgUEtDb250YWN0RmllbGRQ
aG9uZXRpY05hbWUsIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBL
UGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNlckluZm9LZXksIE5TU3RyaW5nICopOwotU09GVF9M
SU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLUGF5bWVudEVycm9yUG9zdGFsQWRkcmVzc1VzZXJJbmZv
S2V5LCBOU1N0cmluZyAqKTsKICNlbmRpZgogCi10eXBlZGVmIHZvaWQgKF5QS0Nhbk1ha2VQYXlt
ZW50c0NvbXBsZXRpb24pKEJPT0wgaXNWYWxpZCwgTlNFcnJvciAqZXJyb3IpOwotI2lmIChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8
fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTEwMDAwKQotZXh0ZXJuICJDIiB2b2lkIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNo
YW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKE5TU3RyaW5nICppZGVudGlm
aWVyLCBOU1N0cmluZyAqZG9tYWluLCBOU1N0cmluZyAqc291cmNlQXBwbGljYXRpb25TZWNvbmRh
cnlJZGVudGlmaWVyLCBQS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbik7Ci1T
T0ZUX0xJTktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJLaXQsIFBhc3NLaXQsIFBL
Q2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxp
Y2F0aW9uLCB2b2lkLCAoTlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIE5T
U3RyaW5nICpzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIFBLQ2FuTWFrZVBh
eW1lbnRzQ29tcGxldGlvbiBjb21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgc291cmNl
QXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBjb21wbGV0aW9uKSk7Ci0jZWxzZQotZXh0
ZXJuICJDIiB2b2lkIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERv
bWFpbihOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwgUEtDYW5NYWtlUGF5
bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pOwotU09GVF9MSU5LX0ZVTkNUSU9OX01BWV9GQUlM
X0ZPUl9TT1VSQ0UoV2ViS2l0LCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFu
dElkZW50aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJp
bmcgKmRvbWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRl
bnRpZmllciwgZG9tYWluLCBjb21wbGV0aW9uKSk7Ci0jZW5kaWYKLQotCiBAaW1wbGVtZW50YXRp
b24gV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUKIAogLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoUGF5bWVudENvb3JkaW5hdG9yUHJveHk6KFdlYktpdDo6V2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkmKXdlYlBheW1lbnRDb29yZGluYXRvclByb3h5CkBAIC0xMDIs
NyArNjYsNyBAQCAtICh2b2lkKWludmFsaWRhdGUKICAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkgPSBudWxscHRyOwogICAgIGlmIChfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKSB7
CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCi0gICAgICAgIF9wYXltZW50QXV0aG9yaXplZENvbXBs
ZXRpb24oYWRvcHROUyhbYWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5zdGFuY2Uo
KSBpbml0V2l0aFN0YXR1czpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBlcnJv
cnM6QFsgXV0pLmdldCgpKTsKKyAgICAgICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihh
ZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkg
aW5pdFdpdGhTdGF0dXM6UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3Jz
OkBbIF1dKS5nZXQoKSk7CiAjZWxzZQogICAgICAgICBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0
aW9uKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlKTsKICNlbmRpZgpAQCAtMTE5
LDcgKzgzLDcgQEAgLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQ
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIKICAgICBBU1NFUlQoIV9zZXNzaW9u
QmxvY2spOwogICAgIF9zZXNzaW9uQmxvY2sgPSBzZXNzaW9uQmxvY2s7CiAKLSAgICBbZ2V0UEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSBwYXltZW50U2VydmljZXNN
ZXJjaGFudFVSTDpeKE5TVVJMICptZXJjaGFudFVSTCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBb
UEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJDbGFz
cygpIHBheW1lbnRTZXJ2aWNlc01lcmNoYW50VVJMOl4oTlNVUkwgKm1lcmNoYW50VVJMLCBOU0Vy
cm9yICplcnJvcikgewogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1Io
IlBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAl
QCIsIGVycm9yKTsKIApAQCAtMTU1LDcgKzExOSw3IEBAIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
CiB7CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAgICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1
dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOlBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXNGYWlsdXJlIGVycm9yczpAWyBdXSkuZ2V0KCkpOworICAgICAgICBjb21w
bGV0aW9uKGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5z
dGFuY2UoKSBpbml0V2l0aFN0YXR1czpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVy
ZSBlcnJvcnM6QFsgXV0pLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTcw
LDcgKzEzNCw3IEBAIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjoo
UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyCiB7CiAjaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MTAwMDApCiAgICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAg
Y29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBk
YXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsK
KyAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFBh
eW1lbnRNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpA
WyBdXSkuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xODMsNyArMTQ3LDcg
QEAgLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIKIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29u
dHJvbGxlciBkaWRTZWxlY3RTaGlwcGluZ01ldGhvZDooUEtTaGlwcGluZ01ldGhvZCAqKXNoaXBw
aW5nTWV0aG9kIGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhv
ZFVwZGF0ZSAqdXBkYXRlKSljb21wbGV0aW9uIHsKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19G
QU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAg
ICBpZiAoIV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9u
KGFkb3B0TlMoW2FsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlSW5zdGFu
Y2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKKyAgICAgICAg
Y29tcGxldGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0
aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdl
dCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTk3LDcgKzE2MSw3IEBAIC0gKHZv
aWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyCiB7CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAgICAgaWYgKCFf
d2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihhZG9wdE5T
KFthbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGlu
aXRXaXRoRXJyb3JzOkBbIF0gcGF5bWVudFN1bW1hcnlJdGVtczpAWyBdIHNoaXBwaW5nTWV0aG9k
czpAWyBdXSkuZ2V0KCkpOworICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW1BBTDo6YWxsb2NQ
S1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVy
cm9yczpAWyBdIHBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXSBzaGlwcGluZ01ldGhvZHM6QFsgXV0p
LmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjkzLDMyICsyNTcsMTMgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBs
YXRmb3JtQ2FuTWFrZVBheW1lbnRzKCkKIHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFQ
YXNzS2l0TGlicmFyeSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQotICAgIHJl
dHVybiBbZ2V0UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSBjYW5N
YWtlUGF5bWVudHNdOworICAgIHJldHVybiBbUEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJDbGFzcygpIGNhbk1ha2VQYXltZW50c107CiB9CiAKIHZv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0
aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFQYXNzS2l0TGlicmFyeSgpKSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSNlbmRpZgotCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCi0gICAgaWYgKCFjYW5Mb2FkX1Bh
c3NLaXRfUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9tYWluQW5kU291
cmNlQXBwbGljYXRpb24oKSkgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKLSAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBzb2Z0TGlua19QYXNzS2l0X1BLQ2FuTWFrZVBheW1lbnRzV2l0aE1l
cmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKG1lcmNoYW50SWRlbnRp
ZmllciwgZG9tYWluTmFtZSwgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnByb2Nlc3NQb29sKCku
Y29uZmlndXJhdGlvbigpLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpLCBC
bG9ja1B0cjx2b2lkIChCT09MLCBOU0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShCT09MIGNhbk1ha2VQYXltZW50
cywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1l
cmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKG1lcmNoYW50SWRlbnRp
ZmllciwgZG9tYWluTmFtZSwgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnByb2Nlc3NQb29sKCku
Y29uZmlndXJhdGlvbigpLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpLCBC
bG9ja1B0cjx2b2lkKEJPT0wsIE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wgY2FuTWFrZVBheW1lbnRz
LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAg
ICAgIExPR19FUlJPUigiUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5k
RG9tYWluIGVycm9yICVAIiwgZXJyb3IpOwogCkBAIC0zMjcsMTQgKzI3Miw3IEBAIHZvaWQgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2
ZUNhcmQoY29uc3QgU3RyCiAgICAgICAgIH0pOwogICAgIH0pLmdldCgpKTsKICNlbHNlCi0gICAg
aWYgKCFjYW5Mb2FkX1Bhc3NLaXRfUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlm
aWVyQW5kRG9tYWluKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7Ci0gICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgc29mdExpbmtfUGFzc0tpdF9QS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJj
aGFudElkZW50aWZpZXJBbmREb21haW4obWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBC
bG9ja1B0cjx2b2lkIChCT09MLCBOU0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShCT09MIGNhbk1ha2VQYXltZW50
cywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1l
cmNoYW50SWRlbnRpZmllckFuZERvbWFpbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUs
IEJsb2NrUHRyPHZvaWQoQk9PTCwgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQk9PTCBjYW5NYWtlUGF5bWVu
dHMsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAg
ICAgICAgTE9HX0VSUk9SKCJQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJB
bmREb21haW4gZXJyb3IgJUAiLCBlcnJvcik7CiAKQEAgLTM0NywxNCArMjg1LDcgQEAgdm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0
aXZlQ2FyZChjb25zdCBTdHIKIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1PcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICghUGFzc0tpdExp
YnJhcnkoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGF1dG8gcGFzc0xpYnJhcnkgPSBhZG9wdE5TKFth
bGxvY1BLUGFzc0xpYnJhcnlJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBhdXRvIHBhc3NMaWJyYXJ5
ID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGFzc0xpYnJhcnlJbnN0YW5jZSgpIGluaXRdKTsKICAg
ICBbcGFzc0xpYnJhcnkgb3BlblBheW1lbnRTZXR1cEZvck1lcmNoYW50SWRlbnRpZmllcjptZXJj
aGFudElkZW50aWZpZXIgZG9tYWluOmRvbWFpbk5hbWUgY29tcGxldGlvbjpCbG9ja1B0cjx2b2lk
IChCT09MKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oQk9PTCByZXN1bHQpIG11dGFibGUgewogICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIHJlc3VsdF0gewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsK
QEAgLTM2OCwxNSArMjk5LDE1IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNTZXQ+IHRvUEtDb250YWN0
RmllbGRzKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSCiAgICAgVmVjdG9y
PE5TU3RyaW5nICo+IHJlc3VsdDsKIAogICAgIGlmIChjb250YWN0RmllbGRzLnBvc3RhbEFkZHJl
c3MpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0UEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNz
KCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0Rmll
bGRQb3N0YWxBZGRyZXNzKCkpOwogICAgIGlmIChjb250YWN0RmllbGRzLnBob25lKQotICAgICAg
ICByZXN1bHQuYXBwZW5kKGdldFBLQ29udGFjdEZpZWxkUGhvbmVOdW1iZXIoKSk7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQoUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBob25lTnVtYmVy
KCkpOwogICAgIGlmIChjb250YWN0RmllbGRzLmVtYWlsKQotICAgICAgICByZXN1bHQuYXBwZW5k
KGdldFBLQ29udGFjdEZpZWxkRW1haWxBZGRyZXNzKCkpOworICAgICAgICByZXN1bHQuYXBwZW5k
KFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRFbWFpbEFkZHJlc3MoKSk7CiAgICAgaWYg
KGNvbnRhY3RGaWVsZHMubmFtZSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZChnZXRQS0NvbnRhY3RG
aWVsZE5hbWUoKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoUEFMOjpnZXRfUGFzc0tpdF9QS0Nv
bnRhY3RGaWVsZE5hbWUoKSk7CiAgICAgaWYgKGNvbnRhY3RGaWVsZHMucGhvbmV0aWNOYW1lKQot
ICAgICAgICByZXN1bHQuYXBwZW5kKGdldFBLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lKCkpOwor
ICAgICAgICByZXN1bHQuYXBwZW5kKFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQaG9u
ZXRpY05hbWUoKSk7CiAKICAgICByZXR1cm4gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0
aE9iamVjdHM6cmVzdWx0LmRhdGEoKSBjb3VudDpyZXN1bHQuc2l6ZSgpXSk7CiB9CkBAIC00MTgs
NyArMzQ5LDcgQEAgc3RhdGljIE5TRGVjaW1hbE51bWJlciAqdG9EZWNpbWFsTnVtYmVyKGNvbnN0
IFN0cmluZyYgYW1vdW50KQogCiBzdGF0aWMgUmV0YWluUHRyPFBLUGF5bWVudFN1bW1hcnlJdGVt
PiB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYgbGluZUl0ZW0pCiB7Ci0gICAgcmV0dXJuIFtnZXRQS1Bh
eW1lbnRTdW1tYXJ5SXRlbUNsYXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6bGluZUl0ZW0ubGFi
ZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihsaW5lSXRlbS5hbW91bnQpIHR5cGU6dG9QS1BheW1l
bnRTdW1tYXJ5SXRlbVR5cGUobGluZUl0ZW0udHlwZSldOworICAgIHJldHVybiBbUEFMOjpnZXRf
UGFzc0tpdF9QS1BheW1lbnRTdW1tYXJ5SXRlbUNsYXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6
bGluZUl0ZW0ubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihsaW5lSXRlbS5hbW91bnQpIHR5
cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUobGluZUl0ZW0udHlwZSldOwogfQogCiBzdGF0
aWMgUmV0YWluUHRyPE5TQXJyYXk+IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKGNvbnN0IFdlYkNv
cmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyYgdG90
YWxBbmRMaW5lSXRlbXMpCkBAIC00NzcsNyArNDA4LDcgQEAgc3RhdGljIFBLU2hpcHBpbmdUeXBl
IHRvUEtTaGlwcGluZ1R5cGUoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6
OlMKIAogc3RhdGljIFJldGFpblB0cjxQS1NoaXBwaW5nTWV0aG9kPiB0b1BLU2hpcHBpbmdNZXRo
b2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5n
TWV0aG9kJiBzaGlwcGluZ01ldGhvZCkKIHsKLSAgICBSZXRhaW5QdHI8UEtTaGlwcGluZ01ldGhv
ZD4gcmVzdWx0ID0gW2dldFBLU2hpcHBpbmdNZXRob2RDbGFzcygpIHN1bW1hcnlJdGVtV2l0aExh
YmVsOnNoaXBwaW5nTWV0aG9kLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIoc2hpcHBpbmdN
ZXRob2QuYW1vdW50KV07CisgICAgUmV0YWluUHRyPFBLU2hpcHBpbmdNZXRob2Q+IHJlc3VsdCA9
IFtQQUw6OmdldF9QYXNzS2l0X1BLU2hpcHBpbmdNZXRob2RDbGFzcygpIHN1bW1hcnlJdGVtV2l0
aExhYmVsOnNoaXBwaW5nTWV0aG9kLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIoc2hpcHBp
bmdNZXRob2QuYW1vdW50KV07CiAgICAgW3Jlc3VsdCBzZXRJZGVudGlmaWVyOnNoaXBwaW5nTWV0
aG9kLmlkZW50aWZpZXJdOwogICAgIFtyZXN1bHQgc2V0RGV0YWlsOnNoaXBwaW5nTWV0aG9kLmRl
dGFpbF07CiAKQEAgLTUxMiw3ICs0NDMsNyBAQCBzdGF0aWMgUEtQYXltZW50UmVxdWVzdEFQSVR5
cGUgdG9BUElUeXBlKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OgogCiBS
ZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94
eSYgd2ViUGFnZVByb3h5LCBjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5bWVudFJlcXVlc3QpCiB7Ci0gICAgYXV0byBy
ZXN1bHQgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RJbnN0YW5jZSgpIGluaXRdKTsK
KyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0SW5z
dGFuY2UoKSBpbml0XSk7CiAKICAgICBbcmVzdWx0IHNldE9yaWdpbmF0aW5nVVJMOm9yaWdpbmF0
aW5nVVJMXTsKIApAQCAtNjMyLDcyICs1NjMsNzIgQEAgc3RhdGljIFJldGFpblB0cjxOU0Vycm9y
PiB0b05TRXJyb3IoY29uc3QgV2ViQ29yZTo6UGF5bWVudEVycm9yJiBlcnJvcikKIAogICAgICAg
ICBzd2l0Y2ggKCplcnJvci5jb250YWN0RmllbGQpIHsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQ
YXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmVOdW1iZXI6Ci0gICAgICAgICAgICBwa0Nv
bnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxkUGhvbmVOdW1iZXIoKTsKKyAgICAgICAgICAg
IHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBob25lTnVt
YmVyKCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1l
bnRFcnJvcjo6Q29udGFjdEZpZWxkOjpFbWFpbEFkZHJlc3M6Ci0gICAgICAgICAgICBwa0NvbnRh
Y3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxkRW1haWxBZGRyZXNzKCk7CisgICAgICAgICAgICBw
a0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRFbWFpbEFkZHJl
c3MoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVu
dEVycm9yOjpDb250YWN0RmllbGQ6Ok5hbWU6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9
IGdldFBLQ29udGFjdEZpZWxkTmFtZSgpOworICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQ
QUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkTmFtZSgpOwogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhv
bmV0aWNOYW1lOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0NvbnRhY3RGaWVs
ZFBob25ldGljTmFtZSgpOworICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9Q
YXNzS2l0X1BLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lKCk7CiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQb3N0
YWxBZGRyZXNzOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0NvbnRhY3RGaWVs
ZFBvc3RhbEFkZHJlc3MoKTsKKyAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRf
UGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkFk
ZHJlc3NMaW5lczoKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0Rmll
bGRQb3N0YWxBZGRyZXNzKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0
X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBwb3N0
YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3RyZWV0S2V5KCk7CiAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZp
ZWxkOjpTdWJMb2NhbGl0eToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250
YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBB
TDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CiAgICAgICAgICAg
ICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXkoKTsK
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9y
OjpDb250YWN0RmllbGQ6OkxvY2FsaXR5OgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBn
ZXRQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKKyAgICAgICAgICAgIHBrQ29udGFjdEZp
ZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKICAg
ICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NDaXR5S2V5KCk7
CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJv
cjo6Q29udGFjdEZpZWxkOjpQb3N0YWxDb2RlOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQg
PSBnZXRQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKKyAgICAgICAgICAgIHBrQ29udGFj
dEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsK
ICAgICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NQb3N0YWxD
b2RlS2V5KCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdlYkNvcmU6OlBh
eW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpTdWJBZG1pbmlzdHJhdGl2ZUFyZWE6Ci0gICAgICAg
ICAgICBwa0NvbnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwor
ICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZp
ZWxkUG9zdGFsQWRkcmVzcygpOwogICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENO
UG9zdGFsQWRkcmVzc1N1YkFkbWluaXN0cmF0aXZlQXJlYUtleSgpOwogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6
QWRtaW5pc3RyYXRpdmVBcmVhOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0Nv
bnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKKyAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0g
UEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKICAgICAgICAg
ICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NTdGF0ZUtleSgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
bnRhY3RGaWVsZDo6Q291bnRyeToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtD
b250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9
IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CiAgICAgICAg
ICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzQ291bnRyeUtleSgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6
OkNvbnRhY3RGaWVsZDo6Q291bnRyeUNvZGU6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9
IGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcGtDb250YWN0
RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwog
ICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc0lTT0NvdW50
cnlDb2RlS2V5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIFt1
c2VySW5mbyBzZXRPYmplY3Q6cGtDb250YWN0RmllbGQgZm9yS2V5OmdldFBLUGF5bWVudEVycm9y
Q29udGFjdEZpZWxkVXNlckluZm9LZXkoKV07CisgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6
cGtDb250YWN0RmllbGQgZm9yS2V5OlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50RXJyb3JDb250
YWN0RmllbGRVc2VySW5mb0tleSgpXTsKICAgICAgICAgaWYgKHBvc3RhbEFkZHJlc3NLZXkpCi0g
ICAgICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OnBvc3RhbEFkZHJlc3NLZXkgZm9yS2V5Omdl
dFBLUGF5bWVudEVycm9yUG9zdGFsQWRkcmVzc1VzZXJJbmZvS2V5KCldOworICAgICAgICAgICAg
W3VzZXJJbmZvIHNldE9iamVjdDpwb3N0YWxBZGRyZXNzS2V5IGZvcktleTpQQUw6OmdldF9QYXNz
S2l0X1BLUGF5bWVudEVycm9yUG9zdGFsQWRkcmVzc1VzZXJJbmZvS2V5KCldOwogICAgIH0KIAot
ICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46Z2V0UEtQ
YXltZW50RXJyb3JEb21haW4oKSBjb2RlOnRvUEtQYXltZW50RXJyb3JDb2RlKGVycm9yLmNvZGUp
IHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXSk7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Vycm9y
IGFsbG9jXSBpbml0V2l0aERvbWFpbjpQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudEVycm9yRG9t
YWluKCkgY29kZTp0b1BLUGF5bWVudEVycm9yQ29kZShlcnJvci5jb2RlKSB1c2VySW5mbzp1c2Vy
SW5mby5nZXQoKV0pOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHRvTlNFcnJvcnMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlBheW1lbnRFcnJvcj4mIGVycm9ycykKQEAgLTc2MSw3ICs2
OTIsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRl
UGF5bWVudFNlc3Npb24oY29uc3Qgc3RkOjpvcHRpbwogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAp
CiAgICAgYXV0byBzdGF0dXMgPSByZXN1bHQgPyByZXN1bHQtPnN0YXR1cyA6IFdlYkNvcmU6OlBh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpTdWNjZXNzOwotICAgIGF1dG8gcGtQYXltZW50QXV0
aG9yaXphdGlvblJlc3VsdCA9IGFkb3B0TlMoW2FsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJl
c3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6dG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzKHN0YXR1cykgZXJyb3JzOnJlc3VsdCA/IHRvTlNFcnJvcnMocmVzdWx0LT5lcnJvcnMpLmdl
dCgpIDogQFsgXV0pOworICAgIGF1dG8gcGtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCA9IGFk
b3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBp
bml0V2l0aFN0YXR1czp0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMoc3RhdHVzKSBlcnJv
cnM6cmVzdWx0ID8gdG9OU0Vycm9ycyhyZXN1bHQtPmVycm9ycykuZ2V0KCkgOiBAWyBdXSk7CiAg
ICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50
QXV0aG9yaXplZENvbXBsZXRpb24ocGtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdC5nZXQoKSk7
CiAjZWxzZQogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRl
LT5fcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKHRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1cyhyZXN1bHQpKTsKQEAgLTc4Nyw3ICs3MTgsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oY29uc3Qg
cwogICAgICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+
X3BheW1lbnRTdW1tYXJ5SXRlbXMgPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRhdGUtPm5l
d1RvdGFsQW5kTGluZUl0ZW1zKTsKIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQotICAgIGF1dG8g
cGtTaGlwcGluZ01ldGhvZFVwZGF0ZSA9IGFkb3B0TlMoW2FsbG9jUEtQYXltZW50UmVxdWVzdFNo
aXBwaW5nTWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6
bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3Vt
bWFyeUl0ZW1zLmdldCgpXSk7CisgICAgYXV0byBwa1NoaXBwaW5nTWV0aG9kVXBkYXRlID0gYWRv
cHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3Rh
bmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKV0pOwogICAg
IG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0
U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uKHBrU2hpcHBpbmdNZXRob2RVcGRhdGUuZ2V0KCkpOwog
I2Vsc2UKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+
X2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbihQS1BheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzU3VjY2VzcywgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdh
dGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpKTsKQEAgLTgzOSw3ICs3NzAsNyBAQCB2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250
YWN0U2VsZWN0aW9uKGNvbnN0CiAgICAgfQogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFN
SUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCi0gICAg
YXV0byBwa1NoaXBwaW5nQ29udGFjdFVwZGF0ZSA9IGFkb3B0TlMoW2FsbG9jUEtQYXltZW50UmVx
dWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6dXBkYXRl
ID8gdG9OU0Vycm9ycyh1cGRhdGUtPmVycm9ycykuZ2V0KCkgOiBAWyBdIHBheW1lbnRTdW1tYXJ5
SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXlt
ZW50U3VtbWFyeUl0ZW1zLmdldCgpIHNoaXBwaW5nTWV0aG9kczptX3BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3NoaXBwaW5nTWV0aG9kcy5nZXQoKV0pOworICAg
IGF1dG8gcGtTaGlwcGluZ0NvbnRhY3RVcGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXlt
ZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6
dXBkYXRlID8gdG9OU0Vycm9ycyh1cGRhdGUtPmVycm9ycykuZ2V0KCkgOiBAWyBdIHBheW1lbnRT
dW1tYXJ5SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUt
Pl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpIHNoaXBwaW5nTWV0aG9kczptX3BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3NoaXBwaW5nTWV0aG9kcy5nZXQoKV0p
OwogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlk
U2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbihwa1NoaXBwaW5nQ29udGFjdFVwZGF0ZS5n
ZXQoKSk7CiAjZWxzZQogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRl
bGVnYXRlLT5fZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbih0b1BLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXModXBkYXRlKSwgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMuZ2V0KCksIG1fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSk7
CkBAIC04NTYsNyArNzg3LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1Db21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oY29uc3Qgc3QKICAgICAgICAgbV9w
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFy
eUl0ZW1zID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXModXBkYXRlLT5uZXdUb3RhbEFuZExpbmVJ
dGVtcyk7CiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKLSAgICBhdXRvIHBrUGF5bWVudE1ldGhv
ZFVwZGF0ZSA9IGFkb3B0TlMoW2FsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRh
dGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczptX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCld
KTsKKyAgICBhdXRvIHBrUGF5bWVudE1ldGhvZFVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQ
S1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXlt
ZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKV0pOwogICAgIG1fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBs
ZXRpb24ocGtQYXltZW50TWV0aG9kVXBkYXRlLmdldCgpKTsKICNlbHNlCiAgICAgbV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RQYXltZW50TWV0
aG9kQ29tcGxldGlvbihtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkpOwpAQCAtODY2LDEyICs3OTcsNyBAQCB2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhv
ZFNlbGVjdGlvbihjb25zdCBzdAogCiBWZWN0b3I8U3RyaW5nPiBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcm1BdmFpbGFibGVQYXltZW50TmV0d29ya3MoKQogewotI2lmIFBMQVRG
T1JNKE1BQykKLSAgICBpZiAoIVBhc3NLaXRMaWJyYXJ5KCkpCi0gICAgICAgIHJldHVybiB7IH07
Ci0jZW5kaWYKLSAgICAKLSAgICBOU0FycmF5PFBLUGF5bWVudE5ldHdvcms+ICphdmFpbGFibGVO
ZXR3b3JrcyA9IFtnZXRQS1BheW1lbnRSZXF1ZXN0Q2xhc3MoKSBhdmFpbGFibGVOZXR3b3Jrc107
CisgICAgTlNBcnJheTxQS1BheW1lbnROZXR3b3JrPiAqYXZhaWxhYmxlTmV0d29ya3MgPSBbUEFM
OjpnZXRfUGFzc0tpdF9QS1BheW1lbnRSZXF1ZXN0Q2xhc3MoKSBhdmFpbGFibGVOZXR3b3Jrc107
CiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwogICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGF2YWlsYWJsZU5ldHdvcmtzLmNvdW50KTsKICAgICBmb3IgKFBLUGF5bWVudE5ldHdv
cmsgbmV0d29yayBpbiBhdmFpbGFibGVOZXR3b3JrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUlPUy5tbQppbmRleCBjMGRmM2M4OWRiNGNmNDE3NDk4YWMyNjhlOTllMTE1YmE0
MDVkNzYyLi5mOWUyODBkMWM5NTZhNmQ4ZGU3MjU0MWZmZjA5N2Y1OGNkZWFhODY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkv
aW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCkBAIC0zNCwxMCArMzQsNyBAQAog
I2ltcG9ydCA8UGFzc0tpdC9QYXNzS2l0Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSVZpZXdDb250cm9s
bGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmg+Ci0j
aW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotU09GVF9MSU5LX0ZSQU1FV09SSyhQYXNzS2l0
KQotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlcik7CisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCkBAIC01NCw3ICs1MSw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdp
CiAKICAgICBhdXRvIHBheW1lbnRSZXF1ZXN0ID0gdG9QS1BheW1lbnRSZXF1ZXN0KG1fd2ViUGFn
ZVByb3h5LCBvcmlnaW5hdGluZ1VSTCwgbGlua0ljb25VUkxTdHJpbmdzLCByZXF1ZXN0KTsKIAot
ICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW2FsbG9j
UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aFBh
eW1lbnRSZXF1ZXN0OnBheW1lbnRSZXF1ZXN0LmdldCgpXSk7CisgICAgbV9wYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50UmVxdWVzdDpw
YXltZW50UmVxdWVzdC5nZXQoKV0pOwogICAgIGlmICghbV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkv
bWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCmluZGV4
IDc0MTU5MzgzZjE5NTQyN2RiOTc2MGE4YzAxZWM3MDY3YTY3YzZmOTUuLjJlOTljYjE0NzcyMzc1
YTRlODdjMjlmNTcyYWZlOTc1Y2ZhMTg2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlNYWMubW0KQEAgLTMwLDI5ICszMCwxOCBAQAogCiAjaW1wb3J0ICJXZWJQYWdlUHJv
eHkuaCIKICNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCIKLSNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oPgorI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NL
aXRTb2Z0TGluay5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+Ci0jaW1wb3J0IDx3dGYvU29m
dExpbmtpbmcuaD4KLQotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX09QVElPTkFMKFBhc3NL
aXQpCi0KLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIpOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLRXh0ZW5zaW9uUGF5
bWVudEF1dGhvcml6YXRpb25VSUV4dGVuc2lvblBvaW50TmFtZSwgTlNTdHJpbmcgKik7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0
Zm9ybVNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3QgV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3QsIFdURjo6RnVuY3Rpb248
dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKCFQYXNzS2l0TGli
cmFyeSgpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQogICAgIGF1dG8gcGF5bWVudFJlcXVlc3QgPSB0b1BLUGF5bWVudFJlcXVl
c3QobV93ZWJQYWdlUHJveHksIG9yaWdpbmF0aW5nVVJMLCBsaW5rSWNvblVSTFN0cmluZ3MsIHJl
cXVlc3QpOwogCiAgICAgYXV0byBzaG93UGF5bWVudFVJUmVxdWVzdFNlZWQgPSBtX3Nob3dQYXlt
ZW50VUlSZXF1ZXN0U2VlZDsKICAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
OwotICAgIFtnZXRQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJDbGFzcygpIHJl
cXVlc3RWaWV3Q29udHJvbGxlcldpdGhQYXltZW50UmVxdWVzdDpwYXltZW50UmVxdWVzdC5nZXQo
KSBjb21wbGV0aW9uOkJsb2NrUHRyPHZvaWQgKFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlciAqLCBOU0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtwYXltZW50UmVxdWVzdCwgc2hv
d1BheW1lbnRVSVJlcXVlc3RTZWVkLCB3ZWFrVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyICp2aWV3Q29udHJvbGxlciwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBbUEFMOjpnZXRfUGFz
c0tpdF9QS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJDbGFzcygpIHJlcXVlc3RW
aWV3Q29udHJvbGxlcldpdGhQYXltZW50UmVxdWVzdDpwYXltZW50UmVxdWVzdC5nZXQoKSBjb21w
bGV0aW9uOkJsb2NrUHRyPHZvaWQoUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
ICosIE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW3BheW1lbnRSZXF1ZXN0LCBzaG93UGF5bWVu
dFVJUmVxdWVzdFNlZWQsIHdlYWtUaGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKnZp
ZXdDb250cm9sbGVyLCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBhdXRvIHBheW1lbnRDb29y
ZGluYXRvclByb3h5ID0gd2Vha1RoaXMuZ2V0KCk7CiAgICAgICAgIGlmICghcGF5bWVudENvb3Jk
aW5hdG9yUHJveHkpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KaW5kZXgg
ODNmZmVkMzQ1ZDI2MTZhOTFjMGFlN2IzNjgzNWVmYzhiMzk0ZGQ5Ny4uMDM3NWI4M2IyYTdmNTNj
NjFhOWZkYzQ2OGViMWI2YWQ1YWQxNzI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQpAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW1wb3J0ICJTYWZlQnJvd3NpbmdTUEkuaCIKICNpbXBvcnQgPFdlYkNvcmUv
TG9jYWxpemVkU3RyaW5ncy5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRT
dHJpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9MYW5ndWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJv
eHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFj
Lm1tCmluZGV4IDQ5MDRlMjY4YmNmYjNmYmQ2ZDkzNmI1ODA4MmQ0MGYwMmZkMGFmNmYuLjgzOWVh
NjgyOWIzM2ViN2ViMDdlYzkzZDY0N2I3OWVmYzM5N2JiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5tbQpAQCAtMzAsNiArMzAsNyBA
QAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRj
aGVyLmgiCisjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogCiAjaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDAKICNpbXBvcnQgPEtlcm5lbC9rZXJuL2Nz
X2Jsb2JzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBhOWU1ZDA3MTEwYWNkM2UyMDQxNGE5MWZlMDljNWRkZGUyMDIxYWQ4Li5mNDQ0
MWZkOWM3ZTMzZWFhZWRkMjhmZjdlNjZmMDU4OGE2NWRiMzIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY4Niw4ICs2ODYsNiBAQAog
CQkyRDkyQTc5NTIxMkI2QUQ0MDBGNDkzRkQgLyogUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTJEOTBEMTEyODFDOTY2MDAxRUI5NjIgLyogUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAgKi87IH07CiAJCTJEOTJBNzk2MjEyQjZBREEwMEY0OTNGRCAvKiBOZXRzY2FwZVBsdWdp
bk1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQTRBOUM1MzEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwICov
OyB9OwogCQkyRDkyQTc5NzIxMkI2QURBMDBGNDkzRkQgLyogUGx1Z2luSW5mb3JtYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzRjhDOEUx
NzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmNwcCAqLzsgfTsKLQkJMkQ5MkE3
OTgyMTM0OEQ4NTAwRjQ5M0ZEIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMUY3N0QxRDFC
MzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tICovOyB9Owot
CQkyRDkyQTc5RjIxMzRCMDdFMDBGNDkzRkQgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJ
T1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIx
Rjc3QjFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0g
Ki87IH07CiAJCTJEOTMxMTY5MjEyRjYxQjIwMDA0NEJGRSAvKiBXS0NvbnRlbnRWaWV3Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDQjRFM0QxOEJC
RTA0NDAwMEZDRkM5IC8qIFdLQ29udGVudFZpZXcubW0gKi87IH07CiAJCTJEOTMxMTZBMjEyRjYx
QjUwMDA0NEJGRSAvKiBXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNCNEU2QjE4QkJGMjZBMDAwRkNGQzkg
LyogV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tICovOyB9OwogCQkyRDlFQTMwRDFBOTZDQjU5
MDAyRDI4MDcgLyogV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEOUVBMzBDMUE5NkNCNTkwMDJEMjgwNyAv
KiBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTAxMCw4ICsxMTAwOCw2IEBACiAJCQkJN0NFOUNF
MTAxRkEwNzY3QTAwMDE3N0RFIC8qIFdlYlBhZ2VVcGRhdGVQcmVmZXJlbmNlcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3QzQ2OTRDOTFBNEI0RUExMDBBRDU4NDUgLyogV2ViUGFzdGVib2FyZFBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjFGNzk2MUQxQjM2
MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJMkQ5MkE3OUYyMTM0QjA3RTAwRjQ5M0ZEIC8qIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5SU9TLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMkQ5MkE3OTgyMTM0OEQ4
NTAwRjQ5M0ZEIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFCMUY3OTgxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzhEMjEy
QjZBQjEwMEY0OTNGRCAvKiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQ5MTM0NEUyMTJDRjlGMDAwMTI4QUZEIC8qIFdlYlBsdWdpbkluZm9Qcm92aWRlci5j
cHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355437</attachid>
            <date>2018-11-21 13:54:24 -0800</date>
            <delta_ts>2018-11-21 16:45:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191875-20181121135420.patch</filename>
            <type>text/plain</type>
            <size>69640</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQxMWQ5ZGVmOGIxMzhiNzExMTYwMWFh
YmVjYTM1OGQ4MTAxMDJhNzcuLjUxMDdkYjAyMjEwMDU0YzYwNTRhZTJjYWUzYTA4ZDc1NjUzNDM0
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMTEtMjEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUg
Zm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MTg3NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDYyMDMyMTU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTXlsZXMgTWF4ZmllbGQuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDog
RGVmaW5lZCBVU0VfUEFTU0tJVC4KKyAgICAgICAgKiB3dGYvY29jb2EvU29mdExpbmtpbmcuaDog
QWRkZWQgX1dJVEhfRVhQT1JUIHZhcmlhbnRzIG9mIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NP
VVJDRSwKKyAgICAgICAgU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UsIFNP
RlRfTElOS19DTEFTU19GT1JfU09VUkNFLAorICAgICAgICBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRSwgYW5kIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFLgorCiAyMDE4LTExLTE0
ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggI2VuZCB2
cy4gI2VuZGlmIHR5cG8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGY3NGY3YTE5YTk0MjFjZjZjZTMzM2MxZjA2
N2ZhNmFlZWU0ZThiNy4uZjQ5NjRhYjQwYzIzNDUwYTBkZGZjMzc0YjM3MGYxYjhjNmFlMjExYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTExLTIxICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIENyZWF0ZSBhIHNvZnQtbGlua2luZyBm
aWxlIGZvciBQYXNzS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTE4NzUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2MjAzMjE1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE15bGVzIE1heGZpZWxkLgorCisgICAgICAgICogTW9kdWxlcy9hcHBs
ZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tOiBSZW1vdmVkIFNPRlRfTElOSyBtYWNy
b3MgYW5kIGluY2x1ZGVkIFBhc3NLaXRTb2Z0TGluay5oIGluc3RlYWQuCisgICAgICAgICogTW9k
dWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW06IERpdHRv
LgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6IFJlbW92ZWQgQG5vLXVuaWZ5IGZyb20gUGF5
bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajogUmVtb3ZlZCBQYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0g
ZnJvbSB0aGUgV2ViQ29yZSB0YXJnZXQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q29jb2EubW06IFJlbW92ZWQgU09GVF9MSU5LIG1hY3JvcyBhbmQgaW5jbHVkZWQgUGFzc0tpdFNv
ZnRMaW5rLmggaW5zdGVhZC4KKwogMjAxOC0xMS0yMCAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVtb3ZpbmcgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmUgZnJvbSBX
ZWJMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMGVkZWU1YzNhYzhkZTI4NTA2NDUxNzY1ZTIw
MTUwYmFlOGMzODlmNy4uYmJiNjQ5MThmY2MwZGJmNTc2MmNiY2JjZWViN2IxYjIxZWNmNmYwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTgtMTEtMjEgIEFuZHkgRXN0
ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1s
aW5raW5nIGZpbGUgZm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MTg3NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDYyMDMyMTU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTXlsZXMgTWF4ZmllbGQuCisKKyAgICAgICAgKiBQQUwu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWwvUGxhdGZvcm1NYWMuY21h
a2U6CisgICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tOiBBZGRlZC4gVXNlZCBfV0lUSF9FWFBP
UlQgc29mdC1saW5raW5nIG1hY3JvcyBpbiBvcmRlciB0bworICAgICAgICBtYWtlIHRoZSBQQUwg
c29mdC1saW5raW5nIHN5bWJvbHMgdmlzaWJsZSB0byBXZWJLaXQuCisgICAgICAgICogcGFsL3Nw
aS9jb2NvYS9QYXNzS2l0U1BJLmg6CisKIDIwMTgtMTEtMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gUmVtb3ZlIGFsbCB1c2FnZXMgb2Yg
VUlJdGVtUHJvdmlkZXIsIFVJSXRlbVByb3ZpZGVyUmVhZGluZywgYW5kIHJlbGF0ZWQgY2xhc3Nl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA2ZThlM2U0ZDhhMDllMWJlM2Y5Y2I1NWZjNzk5NDEwMjUxZGFiOTY1Li5k
ODU4ODgxOTgwMDQwYzdlMzUzNDAzNDc3NzQxOWEwNzVkYTgyOTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIwIEBACisyMDE4LTExLTIxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIENyZWF0ZSBhIHNvZnQtbGlua2luZyBmaWxlIGZvciBQYXNzS2l0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE4NzUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2MjAzMjE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE15
bGVzIE1heGZpZWxkLgorCisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tOiBSZW1vdmVkIFNPRlRfTElOSyBtYWNyb3MgYW5kIGluY2x1ZGVkIFBhc3NL
aXRTb2Z0TGluay5oIGluc3RlYWQuCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDogUmVtb3Zl
ZCBAbm8tdW5pZnkgZnJvbSBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSBhbmQgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0uCisgICAgICAgICogVUlQcm9jZXNzL0FwcGxl
UGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06IFJlbW92ZWQgU09G
VF9MSU5LIG1hY3JvcyBhbmQgaW5jbHVkZWQgUGFzc0tpdFNvZnRMaW5rLmggaW5zdGVhZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
SU9TLm1tOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5TWFjLm1tOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tOiBJbmNsdWRlZCBOU0F0dHJpYnV0ZWRTdHJp
bmdTUEkuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5tbTog
SW5jbHVkZWQgUHJvY2Vzc1ByaXZpbGVnZS5oLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOiBSZW1vdmVkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1t
IGFuZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbSBmcm9tIHRoZSBXZWJLaXQgdGFy
Z2V0LgorCiAyMDE4LTExLTIwICBKZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXR1cm4gbnVsbHB0ciBpbW1lZGlhdGVseSBpZiB0aGUga2V5IGRvZXNuJ3QgZXhpc3Qg
aW4gdGhlIEhhc2hNYXAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBlMmViNzViY2RiMzNhNzMxMzY0MDJkY2Qw
MTJkYTA3NjNmZTY4ZDZlLi4zMGNhOTA1YzJhMTRkODkyYTkzNWNlZTU5NzZlOWQ0Y2M0YWEwMmYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgKQEAgLTYxNiw5ICs2MTYsMTAgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykK
IAotI2RlZmluZSBVU0VfQVBQS0lUIDEKICNkZWZpbmUgSEFWRV9SVU5MT09QX1RJTUVSIDEKICNk
ZWZpbmUgSEFWRV9TRUNfS0VZQ0hBSU4gMQorI2RlZmluZSBVU0VfQVBQS0lUIDEKKyNkZWZpbmUg
VVNFX1BBU1NLSVQgMQogCiAjaWYgQ1BVKFg4Nl82NCkKICNkZWZpbmUgSEFWRV9ORVRXT1JLX0VY
VEVOU0lPTiAxCkBAIC0xMDUzLDkgKzEwNTQsMTAgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
SU9TKQorI2RlZmluZSBIQVZFX0FQUF9MSU5LUyAxCisjZGVmaW5lIFVTRV9QQVNTS0lUIDEKICNk
ZWZpbmUgVVNFX1FVSUNLX0xPT0sgMQogI2RlZmluZSBVU0VfU1lTVEVNX1BSRVZJRVcgMQotI2Rl
ZmluZSBIQVZFX0FQUF9MSU5LUyAxCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmICFQTEFURk9STShJT1NNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9T
b2Z0TGlua2luZy5oIGIvU291cmNlL1dURi93dGYvY29jb2EvU29mdExpbmtpbmcuaAppbmRleCA2
YWVlZGFlNGE2NjMzNDU3NjA2YmE3ZTFjYmVmZmY1ZWE2M2MwODJmLi43ZmRjNGU5ZTg0MjVmN2Iz
MDljNTJjODcyZDlkZDlmYTljNDlkNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9Tb2Z0TGlua2luZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1NvZnRMaW5raW5nLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDExLTIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNDAsOSArMzQwLDkgQEAKICAgICB9IFwKICAgICB9CiAKLSNkZWZp
bmUgU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFt
ZXdvcmspIFwKKyNkZWZpbmUgU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIGV4cG9ydCkgXAogICAgIG5hbWVzcGFj
ZSBmdW5jdGlvbk5hbWVzcGFjZSB7IFwKLSAgICB2b2lkKiBmcmFtZXdvcmsjI0xpYnJhcnkoYm9v
bCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCisgICAgZXhwb3J0IHZvaWQqIGZyYW1ld29yayMjTGli
cmFyeShib29sIGlzT3B0aW9uYWwgPSBmYWxzZSk7IFwKICAgICB2b2lkKiBmcmFtZXdvcmsjI0xp
YnJhcnkoYm9vbCBpc09wdGlvbmFsKSBcCiAgICAgeyBcCiAgICAgICAgIHN0YXRpYyB2b2lkKiBm
cmFtZXdvcmtMaWJyYXJ5OyBcCkBAIC0zNTYsOSArMzU2LDEyIEBACiAgICAgfSBcCiAgICAgfQog
Ci0jZGVmaW5lIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19GT1JfU09VUkNFKGZ1bmN0aW9u
TmFtZXNwYWNlLCBmcmFtZXdvcmspIFwKKyNkZWZpbmUgU09GVF9MSU5LX0ZSQU1FV09SS19GT1Jf
U09VUkNFKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmspIFwKKyAgICBTT0ZUX0xJTktfRlJB
TUVXT1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29y
aywgKQorCisjZGVmaW5lIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIGV4cG9ydCkgXAogICAgIG5h
bWVzcGFjZSBmdW5jdGlvbk5hbWVzcGFjZSB7IFwKLSAgICB2b2lkKiBmcmFtZXdvcmsjI0xpYnJh
cnkoYm9vbCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCisgICAgZXhwb3J0IHZvaWQqIGZyYW1ld29y
ayMjTGlicmFyeShib29sIGlzT3B0aW9uYWwgPSBmYWxzZSk7IFwKICAgICB2b2lkKiBmcmFtZXdv
cmsjI0xpYnJhcnkoYm9vbCBpc09wdGlvbmFsKSBcCiAgICAgeyBcCiAgICAgICAgIHN0YXRpYyB2
b2lkKiBmcmFtZXdvcmtMaWJyYXJ5OyBcCkBAIC0zNzIsNiArMzc1LDkgQEAKICAgICB9IFwKICAg
ICB9CiAKKyNkZWZpbmUgU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoZnVu
Y3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaykgXAorICAgIFNPRlRfTElOS19QUklWQVRFX0ZSQU1F
V09SS19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmss
ICkKKwogI2RlZmluZSBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFj
ZSwgZnJhbWV3b3JrLCBjbGFzc05hbWUpIFwKICAgICBAY2xhc3MgY2xhc3NOYW1lOyBcCiAgICAg
bmFtZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXApAQCAtMzgzLDExICszODksMTEgQEAKICAg
ICB9IFwKICAgICB9CiAKLSNkZWZpbmUgU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoZnVuY3Rp
b25OYW1lc3BhY2UsIGZyYW1ld29yaywgY2xhc3NOYW1lKSBcCisjZGVmaW5lIFNPRlRfTElOS19D
TEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmss
IGNsYXNzTmFtZSwgZXhwb3J0KSBcCiAgICAgQGNsYXNzIGNsYXNzTmFtZTsgXAogICAgIG5hbWVz
cGFjZSBmdW5jdGlvbk5hbWVzcGFjZSB7IFwKICAgICBzdGF0aWMgQ2xhc3MgaW5pdCMjY2xhc3NO
YW1lKCk7IFwKLSAgICBDbGFzcyAoKmdldF8jI2ZyYW1ld29yayMjXyMjY2xhc3NOYW1lIyNDbGFz
cykoKSA9IGluaXQjI2NsYXNzTmFtZTsgXAorICAgIGV4cG9ydCBDbGFzcyAoKmdldF8jI2ZyYW1l
d29yayMjXyMjY2xhc3NOYW1lIyNDbGFzcykoKSA9IGluaXQjI2NsYXNzTmFtZTsgXAogICAgIHN0
YXRpYyBDbGFzcyBjbGFzcyMjY2xhc3NOYW1lOyBcCiAgICAgXAogICAgIHN0YXRpYyBDbGFzcyBj
bGFzc05hbWUjI0Z1bmN0aW9uKCkgXApAQCAtNDA4LDYgKzQxNCw5IEBACiAgICAgfSBcCiAgICAg
fQogCisjZGVmaW5lIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNwYWNl
LCBmcmFtZXdvcmssIGNsYXNzTmFtZSkgXAorICAgIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIGNsYXNzTmFtZSwgKQor
CiAjZGVmaW5lIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKGZ1bmN0aW9uTmFtZXNwYWNl
LCBmcmFtZXdvcmssIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVUeXBlKSBcCiAgICAgV1RGX0VYVEVS
Tl9DX0JFR0lOIFwKICAgICBleHRlcm4gY29uc3QgdmFyaWFibGVUeXBlIHZhcmlhYmxlTmFtZTsg
XApAQCAtNDE2LDEyICs0MjUsMTIgQEAKICAgICB2YXJpYWJsZVR5cGUgZ2V0XyMjZnJhbWV3b3Jr
IyNfIyN2YXJpYWJsZU5hbWUoKTsgXAogICAgIH0KIAotI2RlZmluZSBTT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUs
IHZhcmlhYmxlVHlwZSkgXAorI2RlZmluZSBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZh
cmlhYmxlVHlwZSwgZXhwb3J0KSBcCiAgICAgV1RGX0VYVEVSTl9DX0JFR0lOIFwKICAgICBleHRl
cm4gY29uc3QgdmFyaWFibGVUeXBlIHZhcmlhYmxlTmFtZTsgXAogICAgIFdURl9FWFRFUk5fQ19F
TkQgXAogICAgIG5hbWVzcGFjZSBmdW5jdGlvbk5hbWVzcGFjZSB7IFwKLSAgICB2YXJpYWJsZVR5
cGUgZ2V0XyMjZnJhbWV3b3JrIyNfIyN2YXJpYWJsZU5hbWUoKTsgXAorICAgIGV4cG9ydCB2YXJp
YWJsZVR5cGUgZ2V0XyMjZnJhbWV3b3JrIyNfIyN2YXJpYWJsZU5hbWUoKTsgXAogICAgIHZhcmlh
YmxlVHlwZSBnZXRfIyNmcmFtZXdvcmsjI18jI3ZhcmlhYmxlTmFtZSgpIFwKICAgICB7IFwKICAg
ICAgICAgc3RhdGljIHZhcmlhYmxlVHlwZSBjb25zdGFudCMjZnJhbWV3b3JrIyN2YXJpYWJsZU5h
bWU7IFwKQEAgLTQzNSw2ICs0NDQsOSBAQAogICAgIH0gXAogICAgIH0KIAorI2RlZmluZSBTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCB2
YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSkgXAorICAgIFNPRlRfTElOS19DT05TVEFOVF9GT1Jf
U09VUkNFX1dJVEhfRVhQT1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIHZhcmlhYmxl
TmFtZSwgdmFyaWFibGVUeXBlLCApCisKICNkZWZpbmUgU09GVF9MSU5LX0NPTlNUQU5UX01BWV9G
QUlMX0ZPUl9IRUFERVIoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgdmFyaWFibGVOYW1l
LCB2YXJpYWJsZVR5cGUpIFwKICAgICBXVEZfRVhURVJOX0NfQkVHSU4gXAogICAgIGV4dGVybiBj
b25zdCB2YXJpYWJsZVR5cGUgdmFyaWFibGVOYW1lOyBcCkBAIC00ODksMTMgKzUwMSwxMyBAQAog
ICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lc3BhY2U6OnNvZnRMaW5rIyNmcmFtZXdvcmsjI2Z1
bmN0aW9uTmFtZSBwYXJhbWV0ZXJOYW1lczsgXAogICAgIH0KIAotI2RlZmluZSBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlv
bk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMp
IFwKKyNkZWZpbmUgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoZnVu
Y3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgZnVuY3Rpb25OYW1lLCByZXN1bHRUeXBlLCBwYXJh
bWV0ZXJEZWNsYXJhdGlvbnMsIHBhcmFtZXRlck5hbWVzLCBleHBvcnQpIFwKICAgICBXVEZfRVhU
RVJOX0NfQkVHSU4gXAogICAgIHJlc3VsdFR5cGUgZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xh
cmF0aW9uczsgXAogICAgIFdURl9FWFRFUk5fQ19FTkQgXAogICAgIG5hbWVzcGFjZSBmdW5jdGlv
bk5hbWVzcGFjZSB7IFwKICAgICBzdGF0aWMgcmVzdWx0VHlwZSBpbml0IyNmcmFtZXdvcmsjI2Z1
bmN0aW9uTmFtZSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnM7IFwKLSAgICByZXN1bHRUeXBlICgqc29m
dExpbmsjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lKSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMgPSBp
bml0IyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZTsgXAorICAgIGV4cG9ydCByZXN1bHRUeXBlKCpz
b2Z0TGluayMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUpIHBhcmFtZXRlckRlY2xhcmF0aW9ucyA9
IGluaXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lOyBcCiAgICAgc3RhdGljIHJlc3VsdFR5cGUg
aW5pdCMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUgcGFyYW1ldGVyRGVjbGFyYXRpb25zIFwKICAg
ICB7IFwKICAgICAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlOyBcCkBAIC01MDcsNiAr
NTE5LDkgQEAKICAgICB9IFwKICAgICB9CiAKKyNkZWZpbmUgU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgZnVuY3Rpb25OYW1lLCByZXN1
bHRUeXBlLCBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMsIHBhcmFtZXRlck5hbWVzKSBcCisgICAgU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoZnVuY3Rpb25OYW1lc3BhY2Us
IGZyYW1ld29yaywgZnVuY3Rpb25OYW1lLCByZXN1bHRUeXBlLCBwYXJhbWV0ZXJEZWNsYXJhdGlv
bnMsIHBhcmFtZXRlck5hbWVzLCApCisKICNkZWZpbmUgU09GVF9MSU5LX0ZVTkNUSU9OX01BWV9G
QUlMX0ZPUl9IRUFERVIoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgZnVuY3Rpb25OYW1l
LCByZXN1bHRUeXBlLCBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMsIHBhcmFtZXRlck5hbWVzKSBcCiAg
ICAgV1RGX0VYVEVSTl9DX0JFR0lOIFwKICAgICByZXN1bHRUeXBlIGZ1bmN0aW9uTmFtZSBwYXJh
bWV0ZXJEZWNsYXJhdGlvbnM7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRhY3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRhY3RDb2NvYS5tbQppbmRleCAwYjAyMDRj
ODZkOGEzNmE1ZDRhNzUyOThkMGY0MWEzNDQ2MTUwM2VlLi5jYzk3ZmQ1ZTFmNjIzNDU5OWViODg0
Y2E4MTg3ZmIyY2QwODU3YzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNyAr
MzAsNyBAQAogCiAjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRDb250YWN0LmgiCiAjaW1wb3J0IDxD
b250YWN0cy9Db250YWN0cy5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+
CisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvU29m
dExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtMzgs
MTQgKzM4LDYgQEAgU09GVF9MSU5LX0ZSQU1FV09SSyhDb250YWN0cykKIFNPRlRfTElOS19DTEFT
UyhDb250YWN0cywgQ05NdXRhYmxlUG9zdGFsQWRkcmVzcykKIFNPRlRfTElOS19DTEFTUyhDb250
YWN0cywgQ05QaG9uZU51bWJlcikKIAotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElOS19QUklW
QVRFX0ZSQU1FV09SSyhQYXNzS2l0KQotI2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tp
dCkKLSNlbmRpZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtDb250YWN0KQotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBOU1N0cmluZyAqc3ViTG9jYWxpdHkoQ05Qb3N0YWxB
ZGRyZXNzICphZGRyZXNzKQpAQCAtMTA2LDcgKzk4LDcgQEAgc3RhdGljIHZvaWQgc2V0U3ViQWRt
aW5pc3RyYXRpdmVBcmVhKENOTXV0YWJsZVBvc3RhbEFkZHJlc3MgKmFkZHJlc3MsIE5TU3RyaW5n
ICoKIAogc3RhdGljIFJldGFpblB0cjxQS0NvbnRhY3Q+IGNvbnZlcnQodW5zaWduZWQgdmVyc2lv
biwgY29uc3QgQXBwbGVQYXlQYXltZW50Q29udGFjdCYgY29udGFjdCkKIHsKLSAgICBhdXRvIHJl
c3VsdCA9IGFkb3B0TlMoW2FsbG9jUEtDb250YWN0SW5zdGFuY2UoKSBpbml0XSk7CisgICAgYXV0
byByZXN1bHQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtDb250YWN0SW5zdGFuY2UoKSBpbml0XSk7
CiAKICAgICBOU1N0cmluZyAqZmFtaWx5TmFtZSA9IG5pbDsKICAgICBOU1N0cmluZyAqcGhvbmV0
aWNGYW1pbHlOYW1lID0gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5t
bQppbmRleCA4MWM4Y2NiNzM4YTdmOTM1NDEyMWM4YTI4ZDY3OTM1YzMxMjc2Y2FiLi5mYzM2Yzg5
NTMxNDlmNDMzMGJkOTUxYTZhZWMyMmI4ZWZiMmUwZGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJj
aGFudFNlc3Npb25Db2NvYS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOSwxNiArMjksNyBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkp
CiAKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTT05PYmplY3QuaD4KLSNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvUGFzc0tpdFNQSS5oPgotI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLSNp
ZiBQTEFURk9STShNQUMpCi1TT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoUGFzc0tpdCkKLSNl
bHNlCi1TT0ZUX0xJTktfRlJBTUVXT1JLKFBhc3NLaXQpCi0jZW5kaWYKLQotU09GVF9MSU5LX0NM
QVNTKFBhc3NLaXQsIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbikKKyNpbXBvcnQgPHBhbC9jb2Nv
YS9QYXNzS2l0U29mdExpbmsuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Myw3ICs0
NCw3IEBAIHN0ZDo6b3B0aW9uYWw8UGF5bWVudE1lcmNoYW50U2Vzc2lvbj4gUGF5bWVudE1lcmNo
YW50U2Vzc2lvbjo6ZnJvbUpTKEpTQzo6RXhlY1N0CiAgICAgaWYgKCFkaWN0aW9uYXJ5IHx8ICFb
ZGljdGlvbmFyeSBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8gcGtQYXltZW50TWVyY2hhbnRTZXNzaW9u
ID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRNZXJjaGFudFNlc3Npb25JbnN0YW5jZSgpIGluaXRX
aXRoRGljdGlvbmFyeTpkaWN0aW9uYXJ5XSk7CisgICAgYXV0byBwa1BheW1lbnRNZXJjaGFudFNl
c3Npb24gPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uSW5zdGFu
Y2UoKSBpbml0V2l0aERpY3Rpb25hcnk6ZGljdGlvbmFyeV0pOwogCiAgICAgcmV0dXJuIFBheW1l
bnRNZXJjaGFudFNlc3Npb24ocGtQYXltZW50TWVyY2hhbnRTZXNzaW9uLmdldCgpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAyMTU1MmRmN2Y3NWZjNTM5YmI4NzU2ZDA4NDliNTRkNjg2OTU1NDA5Li43N2YyNDY3M2U1MTcz
Njk3ZjVjYmNlN2VjM2E0NTIxNmNmNDgzMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzEsNiArMTMxLDggQEAKIAkJQTEx
NzVCNTgxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE3NUI1NjFGNkI0NzA1
MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJQTExNzVCNUEx
RjZCNEE4NDAwQzRCOUYwIC8qIE5TU2Nyb2xsVmlld1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNzVCNTkxRjZCNEE4NDAwQzRCOUYwIC8qIE5T
U2Nyb2xsVmlld1NQSS5oICovOyB9OwogCQlBMUY1NURDRjFGNTUyOEVDMDBFREI3NUYgLyogTWV0
YWRhdGFTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExRjU1RENFMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oICovOyB9OworCQlBMUY2
M0M5RjIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY2M0M5RDIxQTREQkY3MDA2RkI0M0Ig
LyogUGFzc0tpdFNvZnRMaW5rLmggKi87IH07CisJCUExRjYzQ0EwMjFBNERCRjcwMDZGQjQzQiAv
KiBQYXNzS2l0U29mdExpbmsubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUY2M0M5RTIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1t
ICovOyB9OwogCQlBMzBENDEyMTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMEQ0MTFFMUYwREQwRUEw
MEI3MTk1NCAvKiBLaWxsUmluZy5oICovOyB9OwogCQlBMzBENDEyMjFGMEREMEVBMDBCNzE5NTQg
LyogS2lsbFJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTMwRDQxMUYxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmNwcCAqLzsgfTsKIAkJ
QTMwRDQxMjUxRjBERDEyRDAwQjcxOTU0IC8qIEtpbGxSaW5nTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQxMjQxRjBERDEyRDAwQjcxOTU0
IC8qIEtpbGxSaW5nTWFjLm1tICovOyB9OwpAQCAtMjg3LDYgKzI4OSw4IEBACiAJCUExMTc1QjU2
MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTExNzVCNTkxRjZCNEE4NDAwQzRCOUYwIC8qIE5TU2Nyb2xsVmlld1NQSS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOU1Njcm9sbFZpZXdTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1ldGFkYXRhU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRjYz
QzlEMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGFzc0tpdFNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRjYzQzlF
MjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQYXNzS2l0U29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEz
MEQ0MTFFMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBLaWxsUmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gS2lsbFJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMzBENDEyNDFGMEREMTJEMDBCNzE5NTQgLyogS2lsbFJpbmdNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBLaWxsUmluZ01hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2MCw2ICs1NjQsOCBAQAogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlGNDQyOTE2NjFGQTUyNzA1MDAyQ0M5M0UgLyogRmls
ZVNpemVGb3JtYXR0ZXJDb2NvYS5tbSAqLywKKwkJCQlBMUY2M0M5RDIxQTREQkY3MDA2RkI0M0Ig
LyogUGFzc0tpdFNvZnRMaW5rLmggKi8sCisJCQkJQTFGNjNDOUUyMUE0REJGNzAwNkZCNDNCIC8q
IFBhc3NLaXRTb2Z0TGluay5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzI5LDYgKzczNSw3IEBACiAJCQkJMEM3Nzg1OUQxRjQ1
MTMwRjAwRjRFQkI2IC8qIE5TV2luZG93U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzBBQjhG
OTIwQUY2RTNEMDBCOEJFODcgLyogTlNYUENDb25uZWN0aW9uU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwQzVBRjkxRjFGNDNBNEM3MDAyRUFDMDIgLyogT3BlbkdMRVNTUEkuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUExRjYzQzlGMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCBp
biBIZWFkZXJzICovLAogCQkJCTBDMkRBMTU1MUYzQkVCNDkwMERCQzMxNyAvKiBQYXNzS2l0U1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5RTFGNDUxMzBGMDBGNEVCQjYgLyogUElQU1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTE3NUI0RTFGNkIzMzczMDBDNEI5RjAgLyogUG9wdXBN
ZW51LmggaW4gSGVhZGVycyAqLywKQEAgLTg1NCw2ICs4NjEsNyBAQAogCQkJCUEzMEQ0MTI1MUYw
REQxMkQwMEI3MTk1NCAvKiBLaWxsUmluZ01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNDg3
NkQ4MUY4RDdGNEUwMENDRUVCRCAvKiBMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBD
Rjk5Q0E0MUY3MzYzNzUwMDdFRTc5MyAvKiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQTFGNjNDQTAyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGlu
ay5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExMTc1QjRGMUY2QjMzNzMwMEM0QjlGMCAvKiBQb3B1
cE1lbnUubW0gaW4gU291cmNlcyAqLywKIAkJCQlBM0M2NkNEQzFGNDYyRDZBMDA5RTZFRTkgLyog
U2Vzc2lvbklELmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzQUI2RTUyMUYzRDFEQzUwMDlDMTRC
MSAvKiBTbGVlcERpc2FibGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggYjJhY2ZiYjEzOTc5YTEwMDczY2JkYjM0OTVjMDI4
OWJmNWQyM2RkMC4uYjc4MDg4YmM0Y2U0MzAyMmZjOTdmMDdhNjc1YzZlMTc0ZGJlYjVlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zLDYgKzMsOCBAQCBs
aXN0KEFQUEVORCBQQUxfUFVCTElDX0hFQURFUlMKIAogICAgIGNmL0NvcmVNZWRpYVNvZnRMaW5r
LmgKIAorICAgIGNvY29hL1Bhc3NLaXRTb2Z0TGluay5oCisKICAgICBzcGkvY2YvQ0ZMb2NhbGVT
UEkuaAogICAgIHNwaS9jZi9DRk5ldHdvcmtDb25uZWN0aW9uQ2FjaGVTUEkuaAogICAgIHNwaS9j
Zi9DRk5ldHdvcmtTUEkuaApAQCAtOTYsNiArOTgsNyBAQCBsaXN0KEFQUEVORCBQQUxfU09VUkNF
UwogCiAgICAgY29jb2EvRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbQogICAgIGNvY29hL0xvZ2dp
bmdDb2NvYS5tbQorICAgIGNvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQogCiAgICAgY3J5cHRvL2Nv
bW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCiAKQEAgLTExNCw2ICsxMTcs
NyBAQCBsaXN0KEFQUEVORCBQQUxfU09VUkNFUwogbGlzdChBUFBFTkQgUEFMX1BSSVZBVEVfSU5D
TFVERV9ESVJFQ1RPUklFUwogICAgICIke1BBTF9ESVJ9L3BhbC9hdmZvdW5kYXRpb24iCiAgICAg
IiR7UEFMX0RJUn0vcGFsL2NmIgorICAgICIke1BBTF9ESVJ9L3BhbC9jb2NvYSIKICAgICAiJHtQ
QUxfRElSfS9wYWwvc3BpL2NmIgogICAgICIke1BBTF9ESVJ9L3BhbC9zcGkvY2ciCiAgICAgIiR7
UEFMX0RJUn0vcGFsL3NwaS9jb2NvYSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29h
L1Bhc3NLaXRTb2Z0TGluay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1MzAwZjhhMzZmMTI3NmY5YTNkOTQyNTZi
NDVmZjdlM2VhZDlkNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW1wb3J0IDxwYWwvc3BpL2NvY29h
L1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktf
RlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0KQorCitTT0ZUX0xJTktfQ0xBU1NfRk9S
X0hFQURFUihQQUwsIFBhc3NLaXQsIFBLQ29udGFjdCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVB
REVSKFBBTCwgUGFzc0tpdCwgUEtQYXNzTGlicmFyeSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVB
REVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIo
UEFMLCBQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpCitTT0ZU
X0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5bWVudE1ldGhvZCkKK1NP
RlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50TWVyY2hhbnRT
ZXNzaW9uKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1l
bnRSZXF1ZXN0KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1Bh
eW1lbnRTdW1tYXJ5SXRlbSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tp
dCwgUEtTaGlwcGluZ01ldGhvZCkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmREb21h
aW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwgUEtDYW5N
YWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmllciwgZG9tYWluLCBj
b21wbGV0aW9uKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwg
UEtEcmF3QXBwbGVQYXlCdXR0b24sIHZvaWQsIChDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0
IGRyYXdSZWN0LCBDR0Zsb2F0IHNjYWxlLCBQS1BheW1lbnRCdXR0b25UeXBlIHR5cGUsIFBLUGF5
bWVudEJ1dHRvblN0eWxlIHN0eWxlLCBOU1N0cmluZyAqbGFuZ3VhZ2VDb2RlKSwgKGNvbnRleHQs
IGRyYXdSZWN0LCBzY2FsZSwgdHlwZSwgc3R5bGUsIGxhbmd1YWdlQ29kZSkpCisKKyNpZiBQTEFU
Rk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMzAwKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0
LCBQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFE
RVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSkKK1NP
RlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFNo
aXBwaW5nQ29udGFjdFVwZGF0ZSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlKQorCitTT0ZUX0xJTktf
Q09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkRW1haWxBZGRy
ZXNzLCBQS0NvbnRhY3RGaWVsZCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwg
UGFzc0tpdCwgUEtDb250YWN0RmllbGROYW1lLCBQS0NvbnRhY3RGaWVsZCkKK1NPRlRfTElOS19D
T05TVEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQaG9uZU51bWJl
ciwgUEtDb250YWN0RmllbGQpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBh
c3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lLCBQS0NvbnRhY3RGaWVsZCkKK1NPRlRf
TElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQb3N0
YWxBZGRyZXNzLCBQS0NvbnRhY3RGaWVsZCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVS
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5mb0tleSwgUEtQ
YXltZW50RXJyb3JLZXkpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBhc3NL
aXQsIFBLUGF5bWVudEVycm9yUG9zdGFsQWRkcmVzc1VzZXJJbmZvS2V5LCBQS1BheW1lbnRFcnJv
cktleSkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0Nh
bk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNh
dGlvbiwgdm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBOU1N0
cmluZyAqc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBQS0Nhbk1ha2VQYXlt
ZW50c0NvbXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBkb21haW4sIHNvdXJjZUFw
cGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgY29tcGxldGlvbikpCisjZW5kaWYKKworI2Vu
ZGlmIC8vIFVTRShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
b2NvYS9QYXNzS2l0U29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMmY3YmUwOWNhYWM1NmYwZjA2ZjJkODc3M2U3
N2MwYjg0ZGU4ZjkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
b2NvYS9QYXNzS2l0U29mdExpbmsubW0KQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorCisjaWYgVVNFKFBBU1NLSVQpCisKKyNpbXBvcnQgIlBhc3NLaXRT
UEkuaCIKKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCisjaWYgUExBVEZPUk0oTUFDKQor
U09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQ
YXNzS2l0LCBQQUxfRVhQT1JUKQorI2Vsc2UKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBBTF9FWFBPUlQpCisjZW5kaWYKKworU09GVF9M
SU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3Qs
IFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IFBhc3NLaXQsIFBLUGFzc0xpYnJhcnksIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudCwgUEFMX0VYUE9SVCkK
K1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLCBQQUxfRVhQT1JUKQorU09GVF9MSU5L
X0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRNZXJj
aGFudFNlc3Npb24sIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudE1ldGhvZCwgUEFMX0VYUE9SVCkKK1NPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50
UmVxdWVzdCwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U3VtbWFyeUl0ZW0sIFBBTF9FWFBPUlQpCitTT0ZU
X0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLU2hpcHBp
bmdNZXRob2QsIFBBTF9FWFBPUlQpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVu
dGlmaWVyQW5kRG9tYWluLCB2b2lkLCAoTlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpk
b21haW4sIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbiBjb21wbGV0aW9uKSwgKGlkZW50aWZp
ZXIsIGRvbWFpbiwgY29tcGxldGlvbiksIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShQQUwsIFBhc3NLaXQsIFBLRHJhd0FwcGxlUGF5QnV0dG9uLCB2b2lkLCAoQ0dD
b250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCBkcmF3UmVjdCwgQ0dGbG9hdCBzY2FsZSwgUEtQYXlt
ZW50QnV0dG9uVHlwZSB0eXBlLCBQS1BheW1lbnRCdXR0b25TdHlsZSBzdHlsZSwgTlNTdHJpbmcg
Kmxhbmd1YWdlQ29kZSksIChjb250ZXh0LCBkcmF3UmVjdCwgc2NhbGUsIHR5cGUsIHN0eWxlLCBs
YW5ndWFnZUNvZGUpKQorCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkKK1NPRlRfTElOS19DTEFT
U19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXph
dGlvblJlc3VsdCwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUs
IFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IFBhc3NLaXQsIFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUsIFBBTF9FWFBP
UlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQs
IFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSwgUEFMX0VYUE9SVCkKKworU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0Nv
bnRhY3RGaWVsZEVtYWlsQWRkcmVzcywgUEtDb250YWN0RmllbGQsIFBBTF9FWFBPUlQpCitTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29u
dGFjdEZpZWxkTmFtZSwgUEtDb250YWN0RmllbGQsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxk
UGhvbmVOdW1iZXIsIFBLQ29udGFjdEZpZWxkLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNU
QU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBo
b25ldGljTmFtZSwgUEtDb250YWN0RmllbGQsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUG9z
dGFsQWRkcmVzcywgUEtDb250YWN0RmllbGQsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEVycm9yQ29u
dGFjdEZpZWxkVXNlckluZm9LZXksIFBLUGF5bWVudEVycm9yS2V5LCBQQUxfRVhQT1JUKQorU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bh
eW1lbnRFcnJvclBvc3RhbEFkZHJlc3NVc2VySW5mb0tleSwgUEtQYXltZW50RXJyb3JLZXksIFBB
TF9FWFBPUlQpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgUGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9tYWlu
QW5kU291cmNlQXBwbGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJp
bmcgKmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmll
ciwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmllciwg
ZG9tYWluLCBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNvbXBsZXRpb24p
LCBQQUxfRVhQT1JUKQorI2VuZGlmCisKKyNlbmRpZiAvLyBVU0UoUEFTU0tJVCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaAppbmRleCBiNWU1OTMwMzI3
MWZiNTgxYWIzNDlhYjk1Zjc0MzIwOTE0OGFhMjU4Li5mZTZjYWUyYTQ5ODJmOGFjMTA5YmZjMTI0
NDVjODdkNGIzNzI1NjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9j
b2NvYS9QYXNzS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
UGFzc0tpdFNQSS5oCkBAIC0yNyw2ICsyNywxMSBAQAogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKIAorV1RGX0VYVEVSTl9DX0JFR0lOCisjaW1wb3J0IDxQYXNzS2l0L1BLQ29uc3RhbnRz
Lmg+CisjaW1wb3J0IDxQYXNzS2l0L1BLRXJyb3IuaD4KK1dURl9FWFRFUk5fQ19FTkQKKwogI2lt
cG9ydCA8UGFzc0tpdC9QYXNzS2l0Lmg+CiAjaW1wb3J0IDxQYXNzS2l0L1BLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxQYXNzS2l0L1BLUGF5
bWVudFJlcXVlc3RfUHJpdmF0ZS5oPgpAQCAtMzksOCArNDQsOCBAQAogCiAjZWxpZiBQTEFURk9S
TShNQUMpCiAKKyNpbXBvcnQgPEFwcEtpdC9BcHBLaXQuaD4KICNpbXBvcnQgPENvbnRhY3RzL0Nv
bnRhY3RzLmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAogTlNfQVNTVU1F
X05PTk5VTExfQkVHSU4KIApAQCAtNTMsNiArNTgsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgogQGNsYXNzIFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGU7CiAKIHR5cGVk
ZWYgTlNTdHJpbmcgKlBLQ29udGFjdEZpZWxkOwordHlwZWRlZiBOU1N0cmluZyAqUEtQYXltZW50
RXJyb3JLZXk7CiAKIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IFBLUGF5bWVudEVycm9yRG9tYWlu
OwogdHlwZWRlZiBOU19FUlJPUl9FTlVNKFBLUGF5bWVudEVycm9yRG9tYWluLCBQS1BheW1lbnRF
cnJvckNvZGUpIHsKQEAgLTIyNSw3ICsyMzEsNyBAQCB0eXBlZGVmIE5TU3RyaW5nICogUEtQYXlt
ZW50TmV0d29yayBOU19FWFRFTlNJQkxFX1NUUklOR19FTlVNOwogCiBOU19BU1NVTUVfTk9OTlVM
TF9FTkQKIAotI2VuZGlmCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiBOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgogCkBAIC0yNjEsNyArMjY3LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVn
ZXIsIFBLUGF5bWVudFJlcXVlc3RBUElUeXBlKSB7CiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORAog
Ci0jZW5kaWYKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIHR5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIFBLUGF5bWVudEJ1dHRvblN0eWxlKSB7CkBAIC0zMjQsNCArMzMwLDYgQEAgTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIE5TU3RyaW5n
ICpDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU7CiBAZW5kCiAKK3R5cGVkZWYgdm9pZCAoXlBL
Q2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbikoQk9PTCBpc1ZhbGlkLCBOU0Vycm9yICopOworCiBO
U19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGExNDgwZmJh
NmY5NDBhNmI2ODdkM2MzZTkwZjBhNTFmMTMxZjc3MWIuLjY1ZWJjODQzNjYyMDFkNTg5Zjc0YTVh
NWZmNTQ5ODEzYmVmYmE3MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNTg4LDcgKzU4
OCw3IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNv
Y29hLmNwcAogCiAgICAgTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29jb2EubW0KICAg
ICBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29jb2EubW0KLSAgICBNb2R1
bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbSBAbm8tdW5p
ZnkKKyAgICBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2Nv
YS5tbQogICAgIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENvY29hLm1tCiAK
ICAgICBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRs
ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYzIzMzRjNjA0ZTczYjg2MDgyNWI4OTA1N2JjOWE4OTQxOTllYjEzNS4uYTc1
M2FhMDYzMzA1Y2UxODFkOTI5YjAzNTA0NzY3ODk5YzMwZDMxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQ3MSw3ICs0NDcx
LDYgQEAKIAkJREU1Rjg2MEQxRkEyMzg2QjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0NzguY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREU1Rjg1RDIx
RkEyMzg1NjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0NzguY3BwICovOyB9OwogCQlERTVGODYw
RTFGQTIzODZCMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ3OS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTVGODVDRjFGQTIzODUwMDA2REI2M0Eg
LyogVW5pZmllZFNvdXJjZTQ3OS5jcHAgKi87IH07CiAJCURFNUY4NjBGMUZBMjM4NkIwMDZEQjYz
QSAvKiBVbmlmaWVkU291cmNlNDgwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IERFNUY4NUQzMUZBMjM4NTkwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNl
NDgwLmNwcCAqLzsgfTsKLQkJREU1Rjg2MTAxRkEyMzhEOTAwNkRCNjNBIC8qIFBheW1lbnRNZXJj
aGFudFNlc3Npb25Db2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBREE0QTFCMUQyMkYyQzAwMDVBOUExNSAvKiBQYXltZW50TWVyY2hhbnRTZXNz
aW9uQ29jb2EubW0gKi87IH07CiAJCURFNUY4NjExMUZBMjM5REEwMDZEQjYzQSAvKiBJbnRlcm5h
bFNldHRpbmdzR2VuZXJhdGVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzRTI5RTVDMTY3QThBMTkwMDU4NkQzRCAvKiBJbnRlcm5hbFNldHRpbmdz
R2VuZXJhdGVkLmNwcCAqLzsgfTsKIAkJREU1Rjg2MTIxRkEyMzlFNzAwNkRCNjNBIC8qIEpTR0NP
YnNlcnZhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTcxNEVBRTFDRjY2NTRBMDA0NzIzQzQgLyogSlNHQ09ic2VydmF0aW9uLmNwcCAqLzsg
fTsKIAkJREU1Rjg2MUQxRkEyODE1QjAwNkRCNjNBIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQUE0NzhBN0UxNkNENzBDMzAwN0QxQkI0IC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLm1tICovOyB9OwpAQCAtMzIzNDUsNyArMzIzNDQsNiBAQAogCQkJCUEzMUM0RTREMTZF
MDJBQTYwMDJGNzk1NyAvKiBPRVNUZXh0dXJlSGFsZkZsb2F0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTMxMDc4Q0M3MTg4MEFBQjUwMDgwOTlEQyAvKiBPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc3QTE3QTcxMTJGMjgxODIwMDRFMDJGNiAvKiBPRVNW
ZXJ0ZXhBcnJheU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlERTVGODYxMDFGQTIzOEQ5
MDA2REI2M0EgLyogUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0VBMjg0NjYyMTQxRTg0OTAwRTQwN0U4IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9T
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQUExMkRGNDkxNzQzREY4MzAwNERBRkRGIC8qIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREEyOUEzMDFD
QkY3NEQ0MDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0K
aW5kZXggYjRhYWY2NDIxZDJiNmQzYzViMzBkZWFhNzRlM2U3MjYzMjlkMmFjZC4uY2I2MTA4Mjky
YTQ4OTg2YzE5Yzc4YjExNDQwYTE1NzcyYTBlYTk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KQEAgLTMyLDE2ICszMiw3IEBACiAKICNpZiBFTkFC
TEUoQVBQTEVfUEFZKQogCi0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KLSNp
bXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi0jaWYgUExBVEZPUk0oTUFDKQotU09GVF9MSU5L
X1BSSVZBVEVfRlJBTUVXT1JLKFBhc3NLaXQpOwotI2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUkso
UGFzc0tpdCk7Ci0jZW5kaWYKLQotU09GVF9MSU5LX01BWV9GQUlMKFBhc3NLaXQsIFBLRHJhd0Fw
cGxlUGF5QnV0dG9uLCB2b2lkLCAoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCBkcmF3UmVj
dCwgQ0dGbG9hdCBzY2FsZSwgUEtQYXltZW50QnV0dG9uVHlwZSB0eXBlLCBQS1BheW1lbnRCdXR0
b25TdHlsZSBzdHlsZSwgTlNTdHJpbmcgKmxhbmd1YWdlQ29kZSksIChjb250ZXh0LCBkcmF3UmVj
dCwgc2NhbGUsIHR5cGUsIHN0eWxlLCBsYW5ndWFnZUNvZGUpKTsKKyNpbXBvcnQgPHBhbC9jb2Nv
YS9QYXNzS2l0U29mdExpbmsuaD4KIAogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCiAKQEAg
LTEwOCw5ICs5OSw2IEBAIHN0YXRpYyBQS1BheW1lbnRCdXR0b25UeXBlIHRvUEtQYXltZW50QnV0
dG9uVHlwZShBcHBsZVBheUJ1dHRvblR5cGUgdHlwZSkKIAogYm9vbCBSZW5kZXJUaGVtZUNvY29h
OjpwYWludEFwcGxlUGF5QnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0
IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBwYWludFJlY3QpCiB7Ci0gICAg
aWYgKCFjYW5Mb2FkUEtEcmF3QXBwbGVQYXlCdXR0b24oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5j
b250ZXh0KCkpOwogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTaG91bGRTbW9vdGhGb250
cyh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVB
cmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggMzVmOThiMTFiN2YxYTkyMTI5YWVkYjQyMTIy
YWIwYjg1OTA3OTIyNS4uZDBlMzc0NTIwNmRkOThhYjc0YjZmNGQxNTViODgyNzZkYTU4NmUyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW0KQEAgLTMwLDIwICszMCw4IEBACiAKICNpbXBvcnQgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4K
KyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NL
aXRTUEkuaD4KLSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi0jaWYgUExBVEZPUk0oTUFD
KQotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFBhc3NLaXQpCi0jZWxzZQotU09GVF9MSU5L
X0ZSQU1FV09SSyhQYXNzS2l0KQotI2VuZGlmCi0KLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQ
S0NvbnRhY3QpOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudCk7Ci1TT0ZUX0xJ
TktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50TWV0aG9kKTsKLVNPRlRfTElOS19DTEFTUyhQYXNz
S2l0LCBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24pOwogCiBuYW1lc3BhY2UgSVBDIHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNjcsNyArNTUsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6UGF5bWVudD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQYXlt
ZW50JgogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0
ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFS
ZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9u
ZTpOT10pOwogICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShk
YXRhLmdldCgpKTsKICAgICBAdHJ5IHsKLSAgICAgICAgUEtQYXltZW50ICpwa1BheW1lbnQgPSBb
dW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldFBLUGF5bWVudENsYXNzKCkgZm9yS2V5
Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgICAgIFBLUGF5bWVudCAqcGtQYXlt
ZW50ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6OmdldF9QYXNzS2l0X1BL
UGF5bWVudENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAg
ICAgIHBheW1lbnQgPSBQYXltZW50KHBrUGF5bWVudCk7CiAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0
aW9uICpleGNlcHRpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIFBL
UGF5bWVudDogJUAiLCBleGNlcHRpb24pOwpAQCAtMTE4LDcgKzEwNiw3IEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFjdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBXZWJDb3JlOjpQCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5p
dFdpdGhCeXRlc05vQ29weTpjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lk
Kj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpKSBsZW5ndGg6ZGF0YVJlZmVyZW5jZS5zaXplKCkgZnJl
ZVdoZW5Eb25lOk5PXSk7CiAgICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZy
b21EYXRhKGRhdGEuZ2V0KCkpOwogICAgIEB0cnkgewotICAgICAgICBQS0NvbnRhY3QgKnBrQ29u
dGFjdCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6Z2V0UEtDb250YWN0Q2xhc3Mo
KSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKKyAgICAgICAgUEtDb250YWN0
ICpwa0NvbnRhY3QgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOlBBTDo6Z2V0X1Bh
c3NLaXRfUEtDb250YWN0Q2xhc3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5
XTsKICAgICAgICAgcGF5bWVudENvbnRhY3QgPSBQYXltZW50Q29udGFjdChwa0NvbnRhY3QpOwog
ICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGRlY29kZSBQS0NvbnRhY3Q6ICVAIiwgZXhjZXB0aW9uKTsKQEAgLTE3NSw3
ICsxNjMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vz
c2lvbj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZQogICAgIGF1dG8gZGF0YSA9IGFkb3B0
TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4o
c3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRh
dGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwogICAgIGF1dG8gdW5hcmNoaXZl
ciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRhLmdldCgpKTsKICAgICBAdHJ5IHsKLSAg
ICAgICAgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICpwa1BheW1lbnRNZXJjaGFudFNlc3Npb24g
PSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldFBLUGF5bWVudE1lcmNoYW50U2Vz
c2lvbkNsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgICAg
IFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbiAqcGtQYXltZW50TWVyY2hhbnRTZXNzaW9uID0gW3Vu
YXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudE1l
cmNoYW50U2Vzc2lvbkNsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07
CiAgICAgICAgIHBheW1lbnRNZXJjaGFudFNlc3Npb24gPSBQYXltZW50TWVyY2hhbnRTZXNzaW9u
KHBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbik7CiAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpl
eGNlcHRpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIFBLUGF5bWVu
dE1lcmNoYW50U2Vzc2lvbjogJUAiLCBleGNlcHRpb24pOwpAQCAtMjA1LDcgKzE5Myw3IEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFdlYkNvcmU6OlBhCiAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCeXRlc05vQ29weTpjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxj
b25zdCB2b2lkKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpKSBsZW5ndGg6ZGF0YVJlZmVyZW5jZS5z
aXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7CiAgICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5h
cmNoaXZlckZyb21EYXRhKGRhdGEuZ2V0KCkpOwogICAgIEB0cnkgewotICAgICAgICBQS1BheW1l
bnRNZXRob2QgKnBrUGF5bWVudE1ldGhvZCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xh
c3M6Z2V0UEtQYXltZW50TWV0aG9kQ2xhc3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2Jq
ZWN0S2V5XTsKKyAgICAgICAgUEtQYXltZW50TWV0aG9kICpwa1BheW1lbnRNZXRob2QgPSBbdW5h
cmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50TWV0
aG9kQ2xhc3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKICAgICAgICAg
cGF5bWVudE1ldGhvZCA9IFBheW1lbnRNZXRob2QocGtQYXltZW50TWV0aG9kKTsKICAgICB9IEBj
YXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBkZWNvZGUgUEtQYXltZW50OiAlQCIsIGV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKaW5kZXggMDhkYmQ3YjY1NmQ0NTA0YmZlNzBhY2U5YTRmOWUxMGZjMjkwODQ2Yi4uZTg4YzVm
ZTZhY2ExYjk0MWZjMDkwYWFhNDZlMTljOGI4OTg0Y2I4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dApAQCAtMjk0LDkgKzI5NCw5IEBAIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQogCiBVSVBy
b2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQog
Ci1VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1t
IEBuby11bmlmeQorVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUlPUy5tbQogCi1VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5TWFjLm1tIEBuby11bmlmeQorVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eU1hYy5tbQogCiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vY29jb2Ev
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eUNvY29hLm1tCiBVSVByb2Nlc3MvQXV0aGVudGlj
YXRpb24vY29jb2EvU2VjS2V5UHJveHlTdG9yZS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Q29jb2EubW0KaW5kZXggZGIyYjZjOGJkMjBmY2NmMDA5NDk0MjA1ZDIx
MWRjYzQxOTIzODE3OC4uYzk0YTVmMGM0MzdiYmU1YTM0MjVkMmE4MjMyMGQ0YzdmZGFkYzljYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCkBAIC0z
MywyNSArMzMsMTEgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQg
PHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgog
I2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KLSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi0j
aWYgUExBVEZPUk0oTUFDKQotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX09QVElPTkFMKFBh
c3NLaXQpCi0jZWxzZQotU09GVF9MSU5LX0ZSQU1FV09SSyhQYXNzS2l0KQotI2VuZGlmCi0KLVNP
RlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1Bhc3NMaWJyYXJ5KTsKLVNPRlRfTElOS19DTEFTUyhQ
YXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwotU09GVF9MSU5L
X0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbik7Ci1TT0ZUX0xJTktfQ0xB
U1MoUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdCk7Ci1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwg
UEtQYXltZW50U3VtbWFyeUl0ZW0pOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLU2hpcHBp
bmdNZXRob2QpOwotCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCisjaWYgUExBVEZPUk0oSU9TKSB8
fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAx
MzAwKQogU09GVF9MSU5LX0ZSQU1FV09SSyhDb250YWN0cykKIFNPRlRfTElOS19DT05TVEFOVChD
b250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3RyZWV0S2V5LCBOU1N0cmluZyAqKTsKIFNPRlRfTElO
S19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXksIE5TU3Ry
aW5nICopOwpAQCAtNjEsMzAgKzQ3LDkgQEAgU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBD
TlBvc3RhbEFkZHJlc3NTdGF0ZUtleSwgTlNTdHJpbmcgKik7CiBTT0ZUX0xJTktfQ09OU1RBTlQo
Q29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1Bvc3RhbENvZGVLZXksIE5TU3RyaW5nICopOwogU09G
VF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NDb3VudHJ5S2V5LCBOU1N0
cmluZyAqKTsKIFNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzSVNP
Q291bnRyeUNvZGVLZXksIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBL
UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQpCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQ
YXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUpCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tp
dCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSkKLVNPRlRfTElOS19DTEFT
UyhQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUpCi1TT0ZUX0xJ
TktfQ09OU1RBTlQoUGFzc0tpdCwgUEtQYXltZW50RXJyb3JEb21haW4sIE5TU3RyaW5nICopOwot
U09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcywg
TlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoUGFzc0tpdCwgUEtDb250YWN0RmllbGRF
bWFpbEFkZHJlc3MsIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBL
Q29udGFjdEZpZWxkUGhvbmVOdW1iZXIsIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5U
KFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkTmFtZSwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09O
U1RBTlQoUGFzc0tpdCwgUEtDb250YWN0RmllbGRQaG9uZXRpY05hbWUsIE5TU3RyaW5nICopOwot
U09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNl
ckluZm9LZXksIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLUGF5
bWVudEVycm9yUG9zdGFsQWRkcmVzc1VzZXJJbmZvS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElO
S19DT05TVEFOVChQQUw6OlBhc3NLaXQsIFBLUGF5bWVudEVycm9yRG9tYWluLCBOU1N0cmluZyAq
KTsKICNlbmRpZgogCi10eXBlZGVmIHZvaWQgKF5QS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24p
KEJPT0wgaXNWYWxpZCwgTlNFcnJvciAqZXJyb3IpOwotI2lmIChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQot
ZXh0ZXJuICJDIiB2b2lkIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRv
bWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAq
ZG9tYWluLCBOU1N0cmluZyAqc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBQ
S0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbik7Ci1TT0ZUX0xJTktfRlVOQ1RJ
T05fTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJLaXQsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRz
V2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uLCB2b2lkLCAo
TlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIE5TU3RyaW5nICpzb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlv
biBjb21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgc291cmNlQXBwbGljYXRpb25TZWNv
bmRhcnlJZGVudGlmaWVyLCBjb21wbGV0aW9uKSk7Ci0jZWxzZQotZXh0ZXJuICJDIiB2b2lkIFBL
Q2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbihOU1N0cmluZyAq
aWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9u
IGNvbXBsZXRpb24pOwotU09GVF9MSU5LX0ZVTkNUSU9OX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2Vi
S2l0LCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmRE
b21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwgUEtD
YW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmllciwgZG9tYWlu
LCBjb21wbGV0aW9uKSk7Ci0jZW5kaWYKLQotCiBAaW1wbGVtZW50YXRpb24gV0tQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoUGF5bWVudENvb3JkaW5hdG9yUHJveHk6KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkmKXdlYlBheW1lbnRDb29yZGluYXRvclByb3h5CkBAIC0xMDIsNyArNjcsNyBAQCAtICh2
b2lkKWludmFsaWRhdGUKICAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgPSBudWxscHRy
OwogICAgIGlmIChfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKSB7CiAjaWYgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMTAwMDApCi0gICAgICAgIF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24oYWRvcHROUyhb
YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0aFN0YXR1
czpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBlcnJvcnM6QFsgXV0pLmdldCgp
KTsKKyAgICAgICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihhZG9wdE5TKFtQQUw6OmFs
bG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF1dKS5nZXQoKSk7
CiAjZWxzZQogICAgICAgICBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlKTsKICNlbmRpZgpAQCAtMTE5LDcgKzg0LDcgQEAgLSAo
dm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIKICAgICBBU1NFUlQoIV9zZXNzaW9uQmxvY2spOwogICAgIF9z
ZXNzaW9uQmxvY2sgPSBzZXNzaW9uQmxvY2s7CiAKLSAgICBbZ2V0UEtQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSBwYXltZW50U2VydmljZXNNZXJjaGFudFVSTDpeKE5T
VVJMICptZXJjaGFudFVSTCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBbUEFMOjpnZXRfUGFzc0tp
dF9QS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJDbGFzcygpIHBheW1lbnRTZXJ2
aWNlc01lcmNoYW50VVJMOl4oTlNVUkwgKm1lcmNoYW50VVJMLCBOU0Vycm9yICplcnJvcikgewog
ICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBLQ2FuTWFrZVBheW1l
bnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIsIGVycm9yKTsKIApA
QCAtMTU1LDcgKzEyMCw3IEBAIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyCiB7CiAjaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMTAwMDApCiAgICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAg
ICAgICAgY29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1
bHRJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOlBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNG
YWlsdXJlIGVycm9yczpAWyBdXSkuZ2V0KCkpOworICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMo
W1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0
aFN0YXR1czpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBlcnJvcnM6QFsgXV0p
LmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTcwLDcgKzEzNSw3IEBAIC0g
KHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyCiB7CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAgICAgaWYg
KCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihhZG9w
dE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBp
bml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKKyAgICAgICAgY29tcGxl
dGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRh
dGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpAWyBdXSkuZ2V0KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xODMsNyArMTQ4LDcgQEAgLSAodm9pZClwYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIKIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjoo
UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxl
Y3RTaGlwcGluZ01ldGhvZDooUEtTaGlwcGluZ01ldGhvZCAqKXNoaXBwaW5nTWV0aG9kIGhhbmRs
ZXI6KHZvaWQgKF4pKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSAqdXBkYXRl
KSljb21wbGV0aW9uIHsKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICAgICBpZiAoIV93ZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW2FsbG9j
UEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBh
eW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKKyAgICAgICAgY29tcGxldGlvbihhZG9w
dE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlSW5zdGFu
Y2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTk3LDcgKzE2Miw3IEBAIC0gKHZvaWQpcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyCiB7CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAgICAgaWYgKCFfd2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5bWVu
dFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoRXJyb3JzOkBb
IF0gcGF5bWVudFN1bW1hcnlJdGVtczpAWyBdIHNoaXBwaW5nTWV0aG9kczpAWyBdXSkuZ2V0KCkp
OworICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0
U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczpAWyBdIHBheW1l
bnRTdW1tYXJ5SXRlbXM6QFsgXSBzaGlwcGluZ01ldGhvZHM6QFsgXV0pLmdldCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjkzLDMyICsyNTgsMTMgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGJvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBh
eW1lbnRzKCkKIHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFQYXNzS2l0TGlicmFyeSgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQotICAgIHJldHVybiBbZ2V0UEtQYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSBjYW5NYWtlUGF5bWVudHNdOwor
ICAgIHJldHVybiBbUEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJDbGFzcygpIGNhbk1ha2VQYXltZW50c107CiB9CiAKIHZvaWQgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29u
c3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwg
V1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgaWYgKCFQYXNzS2l0TGlicmFyeSgpKSB7Ci0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCiAj
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMTAwMDApCi0gICAgaWYgKCFjYW5Mb2FkX1Bhc3NLaXRfUEtDYW5NYWtl
UGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9tYWluQW5kU291cmNlQXBwbGljYXRpb24o
KSkgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBzb2Z0TGlua19QYXNzS2l0X1BLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmll
ckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKG1lcmNoYW50SWRlbnRpZmllciwgZG9tYWluTmFt
ZSwgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnByb2Nlc3NQb29sKCkuY29uZmlndXJhdGlvbigp
LnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpLCBCbG9ja1B0cjx2b2lkIChC
T09MLCBOU0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShCT09MIGNhbk1ha2VQYXltZW50cywgTlNFcnJvciAqZXJy
b3IpIG11dGFibGUgeworICAgIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmll
ckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uKG1lcmNoYW50SWRlbnRpZmllciwgZG9tYWluTmFt
ZSwgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnByb2Nlc3NQb29sKCkuY29uZmlndXJhdGlvbigp
LnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpLCBCbG9ja1B0cjx2b2lkKEJP
T0wsIE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wgY2FuTWFrZVBheW1lbnRzLCBOU0Vycm9yICplcnJv
cikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIExPR19FUlJPUigi
UEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWluIGVycm9yICVA
IiwgZXJyb3IpOwogCkBAIC0zMjcsMTQgKzI3Myw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3Ry
CiAgICAgICAgIH0pOwogICAgIH0pLmdldCgpKTsKICNlbHNlCi0gICAgaWYgKCFjYW5Mb2FkX1Bh
c3NLaXRfUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWluKCkp
IHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
c29mdExpbmtfUGFzc0tpdF9QS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJB
bmREb21haW4obWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBCbG9ja1B0cjx2b2lkIChC
T09MLCBOU0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShCT09MIGNhbk1ha2VQYXltZW50cywgTlNFcnJvciAqZXJy
b3IpIG11dGFibGUgeworICAgIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmll
ckFuZERvbWFpbihtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIEJsb2NrUHRyPHZvaWQo
Qk9PTCwgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVy
cm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgTE9HX0VSUk9S
KCJQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4gZXJyb3Ig
JUAiLCBlcnJvcik7CiAKQEAgLTM0NywxNCArMjg2LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBT
dHIKIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1PcGVuUGF5bWVu
dFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRv
bWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICghUGFzc0tpdExpYnJhcnkoKSkgewotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0j
ZW5kaWYKLQotICAgIGF1dG8gcGFzc0xpYnJhcnkgPSBhZG9wdE5TKFthbGxvY1BLUGFzc0xpYnJh
cnlJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBhdXRvIHBhc3NMaWJyYXJ5ID0gYWRvcHROUyhbUEFM
OjphbGxvY1BLUGFzc0xpYnJhcnlJbnN0YW5jZSgpIGluaXRdKTsKICAgICBbcGFzc0xpYnJhcnkg
b3BlblBheW1lbnRTZXR1cEZvck1lcmNoYW50SWRlbnRpZmllcjptZXJjaGFudElkZW50aWZpZXIg
ZG9tYWluOmRvbWFpbk5hbWUgY29tcGxldGlvbjpCbG9ja1B0cjx2b2lkIChCT09MKT46OmZyb21D
YWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
Qk9PTCByZXN1bHQpIG11dGFibGUgewogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc3VsdF0g
ewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKQEAgLTM2OCwxNSArMzAw
LDE1IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNTZXQ+IHRvUEtDb250YWN0RmllbGRzKGNvbnN0IFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSCiAgICAgVmVjdG9yPE5TU3RyaW5nICo+IHJl
c3VsdDsKIAogICAgIGlmIChjb250YWN0RmllbGRzLnBvc3RhbEFkZHJlc3MpCi0gICAgICAgIHJl
c3VsdC5hcHBlbmQoZ2V0UEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCkpOworICAgICAgICBy
ZXN1bHQuYXBwZW5kKFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNz
KCkpOwogICAgIGlmIChjb250YWN0RmllbGRzLnBob25lKQotICAgICAgICByZXN1bHQuYXBwZW5k
KGdldFBLQ29udGFjdEZpZWxkUGhvbmVOdW1iZXIoKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQo
UEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBob25lTnVtYmVyKCkpOwogICAgIGlmIChj
b250YWN0RmllbGRzLmVtYWlsKQotICAgICAgICByZXN1bHQuYXBwZW5kKGdldFBLQ29udGFjdEZp
ZWxkRW1haWxBZGRyZXNzKCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKFBBTDo6Z2V0X1Bhc3NL
aXRfUEtDb250YWN0RmllbGRFbWFpbEFkZHJlc3MoKSk7CiAgICAgaWYgKGNvbnRhY3RGaWVsZHMu
bmFtZSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZChnZXRQS0NvbnRhY3RGaWVsZE5hbWUoKSk7Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmQoUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZE5hbWUo
KSk7CiAgICAgaWYgKGNvbnRhY3RGaWVsZHMucGhvbmV0aWNOYW1lKQotICAgICAgICByZXN1bHQu
YXBwZW5kKGdldFBLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lKCkpOworICAgICAgICByZXN1bHQu
YXBwZW5kKFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQaG9uZXRpY05hbWUoKSk7CiAK
ICAgICByZXR1cm4gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6cmVzdWx0
LmRhdGEoKSBjb3VudDpyZXN1bHQuc2l6ZSgpXSk7CiB9CkBAIC00MTgsNyArMzUwLDcgQEAgc3Rh
dGljIE5TRGVjaW1hbE51bWJlciAqdG9EZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50
KQogCiBzdGF0aWMgUmV0YWluUHRyPFBLUGF5bWVudFN1bW1hcnlJdGVtPiB0b1BLUGF5bWVudFN1
bW1hcnlJdGVtKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpM
aW5lSXRlbSYgbGluZUl0ZW0pCiB7Ci0gICAgcmV0dXJuIFtnZXRQS1BheW1lbnRTdW1tYXJ5SXRl
bUNsYXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6bGluZUl0ZW0ubGFiZWwgYW1vdW50OnRvRGVj
aW1hbE51bWJlcihsaW5lSXRlbS5hbW91bnQpIHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5
cGUobGluZUl0ZW0udHlwZSldOworICAgIHJldHVybiBbUEFMOjpnZXRfUGFzc0tpdF9QS1BheW1l
bnRTdW1tYXJ5SXRlbUNsYXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6bGluZUl0ZW0ubGFiZWwg
YW1vdW50OnRvRGVjaW1hbE51bWJlcihsaW5lSXRlbS5hbW91bnQpIHR5cGU6dG9QS1BheW1lbnRT
dW1tYXJ5SXRlbVR5cGUobGluZUl0ZW0udHlwZSldOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPE5T
QXJyYXk+IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyYgdG90YWxBbmRMaW5lSXRlbXMp
CkBAIC00NzcsNyArNDA5LDcgQEAgc3RhdGljIFBLU2hpcHBpbmdUeXBlIHRvUEtTaGlwcGluZ1R5
cGUoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlMKIAogc3RhdGljIFJl
dGFpblB0cjxQS1NoaXBwaW5nTWV0aG9kPiB0b1BLU2hpcHBpbmdNZXRob2QoY29uc3QgV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kJiBzaGlwcGlu
Z01ldGhvZCkKIHsKLSAgICBSZXRhaW5QdHI8UEtTaGlwcGluZ01ldGhvZD4gcmVzdWx0ID0gW2dl
dFBLU2hpcHBpbmdNZXRob2RDbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOnNoaXBwaW5nTWV0
aG9kLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIoc2hpcHBpbmdNZXRob2QuYW1vdW50KV07
CisgICAgUmV0YWluUHRyPFBLU2hpcHBpbmdNZXRob2Q+IHJlc3VsdCA9IFtQQUw6OmdldF9QYXNz
S2l0X1BLU2hpcHBpbmdNZXRob2RDbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOnNoaXBwaW5n
TWV0aG9kLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIoc2hpcHBpbmdNZXRob2QuYW1vdW50
KV07CiAgICAgW3Jlc3VsdCBzZXRJZGVudGlmaWVyOnNoaXBwaW5nTWV0aG9kLmlkZW50aWZpZXJd
OwogICAgIFtyZXN1bHQgc2V0RGV0YWlsOnNoaXBwaW5nTWV0aG9kLmRldGFpbF07CiAKQEAgLTUx
Miw3ICs0NDQsNyBAQCBzdGF0aWMgUEtQYXltZW50UmVxdWVzdEFQSVR5cGUgdG9BUElUeXBlKFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OgogCiBSZXRhaW5QdHI8UEtQYXlt
ZW50UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5
LCBjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdCYgcGF5bWVudFJlcXVlc3QpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBhZG9wdE5T
KFthbGxvY1BLUGF5bWVudFJlcXVlc3RJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0SW5zdGFuY2UoKSBpbml0XSk7
CiAKICAgICBbcmVzdWx0IHNldE9yaWdpbmF0aW5nVVJMOm9yaWdpbmF0aW5nVVJMXTsKIApAQCAt
NjMyLDY5ICs1NjQsNjkgQEAgc3RhdGljIFJldGFpblB0cjxOU0Vycm9yPiB0b05TRXJyb3IoY29u
c3QgV2ViQ29yZTo6UGF5bWVudEVycm9yJiBlcnJvcikKIAogICAgICAgICBzd2l0Y2ggKCplcnJv
ci5jb250YWN0RmllbGQpIHsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
bnRhY3RGaWVsZDo6UGhvbmVOdW1iZXI6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IGdl
dFBLQ29udGFjdEZpZWxkUGhvbmVOdW1iZXIoKTsKKyAgICAgICAgICAgIHBrQ29udGFjdEZpZWxk
ID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBob25lTnVtYmVyKCk7CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFj
dEZpZWxkOjpFbWFpbEFkZHJlc3M6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IGdldFBL
Q29udGFjdEZpZWxkRW1haWxBZGRyZXNzKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9
IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRFbWFpbEFkZHJlc3MoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0
RmllbGQ6Ok5hbWU6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZp
ZWxkTmFtZSgpOworICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0
X1BLQ29udGFjdEZpZWxkTmFtZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmV0aWNOYW1lOgotICAg
ICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0NvbnRhY3RGaWVsZFBob25ldGljTmFtZSgp
OworICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFj
dEZpZWxkUGhvbmV0aWNOYW1lKCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNl
IFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQb3N0YWxBZGRyZXNzOgotICAg
ICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3Mo
KTsKKyAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRh
Y3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkFkZHJlc3NMaW5lczoKLSAg
ICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNz
KCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250
YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0g
Z2V0Q05Qb3N0YWxBZGRyZXNzU3RyZWV0S2V5KCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAg
ICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpTdWJMb2NhbGl0
eToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQb3N0YWxB
ZGRyZXNzKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRf
UEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBwb3N0YWxBZGRyZXNz
S2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXkoKTsKICAgICAgICAgICAgIGJy
ZWFrOwogCiAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6
OkxvY2FsaXR5OgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0NvbnRhY3RGaWVs
ZFBvc3RhbEFkZHJlc3MoKTsKKyAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRf
UGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKICAgICAgICAgICAgIHBvc3Rh
bEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NDaXR5S2V5KCk7CiAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxk
OjpQb3N0YWxDb2RlOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0NvbnRhY3RG
aWVsZFBvc3RhbEFkZHJlc3MoKTsKKyAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpn
ZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKICAgICAgICAgICAgIHBv
c3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NQb3N0YWxDb2RlS2V5KCk7CiAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29u
dGFjdEZpZWxkOjpTdWJBZG1pbmlzdHJhdGl2ZUFyZWE6Ci0gICAgICAgICAgICBwa0NvbnRhY3RG
aWVsZCA9IGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcGtD
b250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVz
cygpOwogICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N1
YkFkbWluaXN0cmF0aXZlQXJlYUtleSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
Y2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6QWRtaW5pc3RyYXRpdmVB
cmVhOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0NvbnRhY3RGaWVsZFBvc3Rh
bEFkZHJlc3MoKTsKKyAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tp
dF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKICAgICAgICAgICAgIHBvc3RhbEFkZHJl
c3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NTdGF0ZUtleSgpOwogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6Q291
bnRyeToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQb3N0
YWxBZGRyZXNzKCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NL
aXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CiAgICAgICAgICAgICBwb3N0YWxBZGRy
ZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzQ291bnRyeUtleSgpOwogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6
Q291bnRyeUNvZGU6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZp
ZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6Omdl
dF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwogICAgICAgICAgICAgcG9z
dGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc0lTT0NvdW50cnlDb2RlS2V5KCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIFt1c2VySW5mbyBzZXRPYmpl
Y3Q6cGtDb250YWN0RmllbGQgZm9yS2V5OmdldFBLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNl
ckluZm9LZXkoKV07CisgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6cGtDb250YWN0RmllbGQg
Zm9yS2V5OlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5m
b0tleSgpXTsKICAgICAgICAgaWYgKHBvc3RhbEFkZHJlc3NLZXkpCi0gICAgICAgICAgICBbdXNl
ckluZm8gc2V0T2JqZWN0OnBvc3RhbEFkZHJlc3NLZXkgZm9yS2V5OmdldFBLUGF5bWVudEVycm9y
UG9zdGFsQWRkcmVzc1VzZXJJbmZvS2V5KCldOworICAgICAgICAgICAgW3VzZXJJbmZvIHNldE9i
amVjdDpwb3N0YWxBZGRyZXNzS2V5IGZvcktleTpQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudEVy
cm9yUG9zdGFsQWRkcmVzc1VzZXJJbmZvS2V5KCldOwogICAgIH0KIAogICAgIHJldHVybiBhZG9w
dE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46Z2V0UEtQYXltZW50RXJyb3JEb21h
aW4oKSBjb2RlOnRvUEtQYXltZW50RXJyb3JDb2RlKGVycm9yLmNvZGUpIHVzZXJJbmZvOnVzZXJJ
bmZvLmdldCgpXSk7CkBAIC03NjEsNyArNjkzLDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IHN0ZDo6b3B0aW8K
IAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogICAgIGF1dG8gc3RhdHVzID0gcmVzdWx0ID8gcmVz
dWx0LT5zdGF0dXMgOiBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6U3VjY2Vz
czsKLSAgICBhdXRvIHBrUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgPSBhZG9wdE5TKFthbGxv
Y1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOnRv
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhzdGF0dXMpIGVycm9yczpyZXN1bHQgPyB0b05T
RXJyb3JzKHJlc3VsdC0+ZXJyb3JzKS5nZXQoKSA6IEBbIF1dKTsKKyAgICBhdXRvIHBrUGF5bWVu
dEF1dGhvcml6YXRpb25SZXN1bHQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9y
aXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6dG9QS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzKHN0YXR1cykgZXJyb3JzOnJlc3VsdCA/IHRvTlNFcnJvcnMocmVzdWx0LT5l
cnJvcnMpLmdldCgpIDogQFsgXV0pOwogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKHBrUGF5bWVudEF1
dGhvcml6YXRpb25SZXN1bHQuZ2V0KCkpOwogI2Vsc2UKICAgICBtX3BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbih0
b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMocmVzdWx0KSk7CkBAIC03ODcsNyArNzE5LDcg
QEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBw
aW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IHMKICAgICAgICAgbV9wYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zID0gdG9QS1BheW1l
bnRTdW1tYXJ5SXRlbXModXBkYXRlLT5uZXdUb3RhbEFuZExpbmVJdGVtcyk7CiAKICNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkg
fHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDExMDAwMCkKLSAgICBhdXRvIHBrU2hpcHBpbmdNZXRob2RVcGRhdGUgPSBhZG9wdE5T
KFthbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5p
dFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKV0pOworICAgIGF1dG8gcGtT
aGlwcGluZ01ldGhvZFVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0
U2hpcHBpbmdNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVt
czptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRT
dW1tYXJ5SXRlbXMuZ2V0KCldKTsKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbihwa1NoaXBw
aW5nTWV0aG9kVXBkYXRlLmdldCgpKTsKICNlbHNlCiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRp
b24oUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3MsIG1fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSk7
CkBAIC04MzksNyArNzcxLDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihjb25zdAogICAgIH0KIAogI2lm
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
MzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTEwMDAwKQotICAgIGF1dG8gcGtTaGlwcGluZ0NvbnRhY3RVcGRhdGUgPSBh
ZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5j
ZSgpIGluaXRXaXRoRXJyb3JzOnVwZGF0ZSA/IHRvTlNFcnJvcnModXBkYXRlLT5lcnJvcnMpLmdl
dCgpIDogQFsgXSBwYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSBzaGlwcGluZ01l
dGhvZHM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9zaGlw
cGluZ01ldGhvZHMuZ2V0KCldKTsKKyAgICBhdXRvIHBrU2hpcHBpbmdDb250YWN0VXBkYXRlID0g
YWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJ
bnN0YW5jZSgpIGluaXRXaXRoRXJyb3JzOnVwZGF0ZSA/IHRvTlNFcnJvcnModXBkYXRlLT5lcnJv
cnMpLmdldCgpIDogQFsgXSBwYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSBzaGlw
cGluZ01ldGhvZHM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUt
Pl9zaGlwcGluZ01ldGhvZHMuZ2V0KCldKTsKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24o
cGtTaGlwcGluZ0NvbnRhY3RVcGRhdGUuZ2V0KCkpOwogI2Vsc2UKICAgICBtX3BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nQ29udGFj
dENvbXBsZXRpb24odG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHVwZGF0ZSksIG1fcGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2Rz
LmdldCgpLCBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3Bh
eW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkpOwpAQCAtODU2LDcgKzc4OCw3IEBAIHZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0
aW9uKGNvbnN0IHN0CiAgICAgICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1z
KHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpOwogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAp
Ci0gICAgYXV0byBwa1BheW1lbnRNZXRob2RVcGRhdGUgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVu
dFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1t
YXJ5SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9w
YXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXSk7CisgICAgYXV0byBwa1BheW1lbnRNZXRob2RVcGRh
dGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRh
dGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczptX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCld
KTsKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2Rp
ZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uKHBrUGF5bWVudE1ldGhvZFVwZGF0ZS5nZXQo
KSk7CiAjZWxzZQogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlLT5fZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24obV9wYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpKTsK
QEAgLTg2NiwxMiArNzk4LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1Db21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oY29uc3Qgc3QKIAogVmVjdG9yPFN0
cmluZz4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQXZhaWxhYmxlUGF5bWVu
dE5ldHdvcmtzKCkKIHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFQYXNzS2l0TGlicmFy
eSgpKQotICAgICAgICByZXR1cm4geyB9OwotI2VuZGlmCi0gICAgCi0gICAgTlNBcnJheTxQS1Bh
eW1lbnROZXR3b3JrPiAqYXZhaWxhYmxlTmV0d29ya3MgPSBbZ2V0UEtQYXltZW50UmVxdWVzdENs
YXNzKCkgYXZhaWxhYmxlTmV0d29ya3NdOworICAgIE5TQXJyYXk8UEtQYXltZW50TmV0d29yaz4g
KmF2YWlsYWJsZU5ldHdvcmtzID0gW1BBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50UmVxdWVzdENs
YXNzKCkgYXZhaWxhYmxlTmV0d29ya3NdOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKICAg
ICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhdmFpbGFibGVOZXR3b3Jrcy5jb3VudCk7
CiAgICAgZm9yIChQS1BheW1lbnROZXR3b3JrIG5ldHdvcmsgaW4gYXZhaWxhYmxlTmV0d29ya3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBs
ZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KaW5kZXggYzBkZjNjODlk
YjRjZjQxNzQ5OGFjMjY4ZTk5ZTExNWJhNDA1ZDc2Mi4uZjllMjgwZDFjOTU2YTZkOGRlNzI1NDFm
ZmYwOTdmNThjZGVhYTg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBw
bGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlP
Uy5tbQpAQCAtMzQsMTAgKzM0LDcgQEAKICNpbXBvcnQgPFBhc3NLaXQvUGFzc0tpdC5oPgogI2lt
cG9ydCA8VUlLaXQvVUlWaWV3Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50
QXV0aG9yaXphdGlvblN0YXR1cy5oPgotI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLVNP
RlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOworI2ltcG9ydCA8cGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTQsNyArNTEsNyBA
QCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUko
Y29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaQogCiAgICAgYXV0byBwYXltZW50UmVxdWVzdCA9IHRv
UEtQYXltZW50UmVxdWVzdChtX3dlYlBhZ2VQcm94eSwgb3JpZ2luYXRpbmdVUkwsIGxpbmtJY29u
VVJMU3RyaW5ncywgcmVxdWVzdCk7CiAKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50UmVxdWVzdDpwYXltZW50UmVxdWVzdC5nZXQo
KV0pOworICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciA9IGFkb3B0TlMo
W1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgp
IGluaXRXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3QuZ2V0KCldKTsKICAgICBpZiAo
IW1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcikgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eU1hYy5tbQppbmRleCA3NDE1OTM4M2YxOTU0MjdkYjk3NjBhOGMwMWVjNzA2
N2E2N2M2Zjk1Li4yZTk5Y2IxNDc3MjM3NWE0ZTg3YzI5ZjU3MmFmZTk3NWNmYTE4NjExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQ
YXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCkBAIC0zMCwyOSArMzAsMTgg
QEAKIAogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUNvY29hLmgiCi0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4K
KyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9CbG9j
a1B0ci5oPgotI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLVNPRlRfTElOS19QUklWQVRF
X0ZSQU1FV09SS19PUFRJT05BTChQYXNzS2l0KQotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwg
UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLVNPRlRfTElOS19DT05TVEFO
VChQYXNzS2l0LCBQS0V4dGVuc2lvblBheW1lbnRBdXRob3JpemF0aW9uVUlFeHRlbnNpb25Qb2lu
dE5hbWUsIE5TU3RyaW5nICopOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6
OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNv
blVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIGlmICghUGFzc0tpdExpYnJhcnkoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBhdXRvIHBheW1lbnRS
ZXF1ZXN0ID0gdG9QS1BheW1lbnRSZXF1ZXN0KG1fd2ViUGFnZVByb3h5LCBvcmlnaW5hdGluZ1VS
TCwgbGlua0ljb25VUkxTdHJpbmdzLCByZXF1ZXN0KTsKIAogICAgIGF1dG8gc2hvd1BheW1lbnRV
SVJlcXVlc3RTZWVkID0gbV9zaG93UGF5bWVudFVJUmVxdWVzdFNlZWQ7CiAgICAgYXV0byB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKLSAgICBbZ2V0UEtQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyQ2xhc3MoKSByZXF1ZXN0Vmlld0NvbnRyb2xsZXJXaXRoUGF5bWVudFJl
cXVlc3Q6cGF5bWVudFJlcXVlc3QuZ2V0KCkgY29tcGxldGlvbjpCbG9ja1B0cjx2b2lkIChQS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiwgTlNFcnJvciAqKT46OmZyb21DYWxs
YWJsZShbcGF5bWVudFJlcXVlc3QsIHNob3dQYXltZW50VUlSZXF1ZXN0U2VlZCwgd2Vha1RoaXMs
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFBLUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXIsIE5TRXJyb3IgKmVy
cm9yKSB7CisgICAgW1BBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyQ2xhc3MoKSByZXF1ZXN0Vmlld0NvbnRyb2xsZXJXaXRoUGF5bWVudFJlcXVlc3Q6
cGF5bWVudFJlcXVlc3QuZ2V0KCkgY29tcGxldGlvbjpCbG9ja1B0cjx2b2lkKFBLUGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqLCBOU0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtw
YXltZW50UmVxdWVzdCwgc2hvd1BheW1lbnRVSVJlcXVlc3RTZWVkLCB3ZWFrVGhpcywgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oUEtQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlciwgTlNFcnJvciAqZXJyb3IpIHsK
ICAgICAgICAgYXV0byBwYXltZW50Q29vcmRpbmF0b3JQcm94eSA9IHdlYWtUaGlzLmdldCgpOwog
ICAgICAgICBpZiAoIXBheW1lbnRDb29yZGluYXRvclByb3h5KQogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5n
V2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dz
aW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDgzZmZlZDM0NWQyNjE2YTkxYzBhZTdiMzY4MzVlZmM4
YjM5NGRkOTcuLjAzNzViODNiMmE3ZjUzYzYxYTlmZGM0NjhlYjFiNmFkNWFkMTcyNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdX
YXJuaW5nQ29jb2EubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiU2FmZUJyb3dzaW5n
U1BJLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KKyNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CiAjaW1wb3J0IDx3dGYvTGFuZ3Vh
Z2UuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5tbQppbmRleCA0OTA0ZTI2OGJjZmIzZmJkNmQ5MzZi
NTgwODJkNDBmMDJmZDBhZjZmLi44MzllYTY4MjliMzNlYjdlYjA3ZWM5M2Q2NDdiNzllZmMzOTdi
YjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1By
b3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJv
eHlNYWMubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBQTEFURk9STShNQUMpCiAKICNpbXBvcnQg
IldLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oIgorI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2
aWxlZ2UuaD4KIAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAw
CiAjaW1wb3J0IDxLZXJuZWwva2Vybi9jc19ibG9icy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTllNWQwNzExMGFjZDNlMjA0MTRh
OTFmZTA5YzVkZGRlMjAyMWFkOC4uZjQ0NDFmZDljN2UzM2VhYWVkZDI4ZmY3ZTY2ZjA1ODhhNjVk
YjMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC02ODYsOCArNjg2LDYgQEAKIAkJMkQ5MkE3OTUyMTJCNkFENDAwRjQ5M0ZEIC8qIFBs
dWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyRDkwRDExMjgxQzk2NjAwMUVCOTYyIC8qIFBsdWdp
blByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovOyB9OwogCQkyRDkyQTc5NjIxMkI2QURB
MDBGNDkzRkQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0QTlDNTMxMkI4MTZDRjAwOEZFOTg0IC8qIE5l
dHNjYXBlUGx1Z2luTW9kdWxlLmNwcCAqLzsgfTsKIAkJMkQ5MkE3OTcyMTJCNkFEQTAwRjQ5M0ZE
IC8qIFBsdWdpbkluZm9ybWF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDM0Y4QzhFMTczQUY1MkQwMDdCN0YzOSAvKiBQbHVnaW5JbmZvcm1h
dGlvbi5jcHAgKi87IH07Ci0JCTJEOTJBNzk4MjEzNDhEODUwMEY0OTNGRCAvKiBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBQjFGNzdEMUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eU1hYy5tbSAqLzsgfTsKLQkJMkQ5MkE3OUYyMTM0QjA3RTAwRjQ5M0ZEIC8qIFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMUY3N0IxRDFCMzBBOTAwN0M5QkQxIC8qIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5SU9TLm1tICovOyB9OwogCQkyRDkzMTE2OTIxMkY2MUIyMDAwNDRC
RkUgLyogV0tDb250ZW50Vmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQ0I0RTNEMThCQkUwNDQwMDBGQ0ZDOSAvKiBXS0NvbnRlbnRWaWV3Lm1t
ICovOyB9OwogCQkyRDkzMTE2QTIxMkY2MUI1MDAwNDRCRkUgLyogV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZDQjRFNkIxOEJCRjI2QTAwMEZDRkM5IC8qIFdLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSAq
LzsgfTsKIAkJMkQ5RUEzMEQxQTk2Q0I1OTAwMkQyODA3IC8qIFdLUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RDlFQTMwQzFBOTZDQjU5MDAyRDI4MDcgLyogV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTEwMTAs
OCArMTEwMDgsNiBAQAogCQkJCTdDRTlDRTEwMUZBMDc2N0EwMDAxNzdERSAvKiBXZWJQYWdlVXBk
YXRlUHJlZmVyZW5jZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M0Njk0QzkxQTRCNEVBMTAw
QUQ1ODQ1IC8qIFdlYlBhc3RlYm9hcmRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUIxRjc5NjFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5h
dG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTJEOTJBNzlGMjEzNEIw
N0UwMEY0OTNGRCAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSBpbiBTb3VyY2Vz
ICovLAotCQkJCTJEOTJBNzk4MjEzNDhEODUwMEY0OTNGRCAvKiBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQjFGNzk4MUQxQjM2MTMwMDdDOUJE
MSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDkyQTc4RDIxMkI2QUIxMDBGNDkzRkQgLyogV2ViUGxhdGZvcm1Ub3Vj
aFBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDRFMjEyQ0Y5RjAwMDEyOEFGRCAv
KiBXZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355446</attachid>
            <date>2018-11-21 16:45:24 -0800</date>
            <delta_ts>2018-11-21 18:12:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191875-20181121164521.patch</filename>
            <type>text/plain</type>
            <size>70129</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQxMWQ5ZGVmOGIxMzhiNzExMTYwMWFh
YmVjYTM1OGQ4MTAxMDJhNzcuLjUxMDdkYjAyMjEwMDU0YzYwNTRhZTJjYWUzYTA4ZDc1NjUzNDM0
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMTEtMjEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1saW5raW5nIGZpbGUg
Zm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MTg3NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDYyMDMyMTU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTXlsZXMgTWF4ZmllbGQuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDog
RGVmaW5lZCBVU0VfUEFTU0tJVC4KKyAgICAgICAgKiB3dGYvY29jb2EvU29mdExpbmtpbmcuaDog
QWRkZWQgX1dJVEhfRVhQT1JUIHZhcmlhbnRzIG9mIFNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NP
VVJDRSwKKyAgICAgICAgU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UsIFNP
RlRfTElOS19DTEFTU19GT1JfU09VUkNFLAorICAgICAgICBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRSwgYW5kIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFLgorCiAyMDE4LTExLTE0
ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggI2VuZCB2
cy4gI2VuZGlmIHR5cG8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGY3NGY3YTE5YTk0MjFjZjZjZTMzM2MxZjA2
N2ZhNmFlZWU0ZThiNy4uZjQ5NjRhYjQwYzIzNDUwYTBkZGZjMzc0YjM3MGYxYjhjNmFlMjExYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTExLTIxICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIENyZWF0ZSBhIHNvZnQtbGlua2luZyBm
aWxlIGZvciBQYXNzS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTE4NzUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2MjAzMjE1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE15bGVzIE1heGZpZWxkLgorCisgICAgICAgICogTW9kdWxlcy9hcHBs
ZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tOiBSZW1vdmVkIFNPRlRfTElOSyBtYWNy
b3MgYW5kIGluY2x1ZGVkIFBhc3NLaXRTb2Z0TGluay5oIGluc3RlYWQuCisgICAgICAgICogTW9k
dWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW06IERpdHRv
LgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6IFJlbW92ZWQgQG5vLXVuaWZ5IGZyb20gUGF5
bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajogUmVtb3ZlZCBQYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0g
ZnJvbSB0aGUgV2ViQ29yZSB0YXJnZXQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q29jb2EubW06IFJlbW92ZWQgU09GVF9MSU5LIG1hY3JvcyBhbmQgaW5jbHVkZWQgUGFzc0tpdFNv
ZnRMaW5rLmggaW5zdGVhZC4KKwogMjAxOC0xMS0yMCAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVtb3ZpbmcgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmUgZnJvbSBX
ZWJMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMGVkZWU1YzNhYzhkZTI4NTA2NDUxNzY1ZTIw
MTUwYmFlOGMzODlmNy4uYmJiNjQ5MThmY2MwZGJmNTc2MmNiY2JjZWViN2IxYjIxZWNmNmYwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTgtMTEtMjEgIEFuZHkgRXN0
ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29mdC1s
aW5raW5nIGZpbGUgZm9yIFBhc3NLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MTg3NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDYyMDMyMTU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTXlsZXMgTWF4ZmllbGQuCisKKyAgICAgICAgKiBQQUwu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWwvUGxhdGZvcm1NYWMuY21h
a2U6CisgICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tOiBBZGRlZC4gVXNlZCBfV0lUSF9FWFBP
UlQgc29mdC1saW5raW5nIG1hY3JvcyBpbiBvcmRlciB0bworICAgICAgICBtYWtlIHRoZSBQQUwg
c29mdC1saW5raW5nIHN5bWJvbHMgdmlzaWJsZSB0byBXZWJLaXQuCisgICAgICAgICogcGFsL3Nw
aS9jb2NvYS9QYXNzS2l0U1BJLmg6CisKIDIwMTgtMTEtMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gUmVtb3ZlIGFsbCB1c2FnZXMgb2Yg
VUlJdGVtUHJvdmlkZXIsIFVJSXRlbVByb3ZpZGVyUmVhZGluZywgYW5kIHJlbGF0ZWQgY2xhc3Nl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA2ZThlM2U0ZDhhMDllMWJlM2Y5Y2I1NWZjNzk5NDEwMjUxZGFiOTY1Li5k
ODU4ODgxOTgwMDQwYzdlMzUzNDAzNDc3NzQxOWEwNzVkYTgyOTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIwIEBACisyMDE4LTExLTIxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIENyZWF0ZSBhIHNvZnQtbGlua2luZyBmaWxlIGZvciBQYXNzS2l0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE4NzUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2MjAzMjE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE15
bGVzIE1heGZpZWxkLgorCisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tOiBSZW1vdmVkIFNPRlRfTElOSyBtYWNyb3MgYW5kIGluY2x1ZGVkIFBhc3NL
aXRTb2Z0TGluay5oIGluc3RlYWQuCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDogUmVtb3Zl
ZCBAbm8tdW5pZnkgZnJvbSBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSBhbmQgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0uCisgICAgICAgICogVUlQcm9jZXNzL0FwcGxl
UGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06IFJlbW92ZWQgU09G
VF9MSU5LIG1hY3JvcyBhbmQgaW5jbHVkZWQgUGFzc0tpdFNvZnRMaW5rLmggaW5zdGVhZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
SU9TLm1tOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5TWFjLm1tOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tOiBJbmNsdWRlZCBOU0F0dHJpYnV0ZWRTdHJp
bmdTUEkuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5tbTog
SW5jbHVkZWQgUHJvY2Vzc1ByaXZpbGVnZS5oLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOiBSZW1vdmVkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1t
IGFuZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbSBmcm9tIHRoZSBXZWJLaXQgdGFy
Z2V0LgorCiAyMDE4LTExLTIwICBKZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXR1cm4gbnVsbHB0ciBpbW1lZGlhdGVseSBpZiB0aGUga2V5IGRvZXNuJ3QgZXhpc3Qg
aW4gdGhlIEhhc2hNYXAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBlMmViNzViY2RiMzNhNzMxMzY0MDJkY2Qw
MTJkYTA3NjNmZTY4ZDZlLi4zMGNhOTA1YzJhMTRkODkyYTkzNWNlZTU5NzZlOWQ0Y2M0YWEwMmYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgKQEAgLTYxNiw5ICs2MTYsMTAgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykK
IAotI2RlZmluZSBVU0VfQVBQS0lUIDEKICNkZWZpbmUgSEFWRV9SVU5MT09QX1RJTUVSIDEKICNk
ZWZpbmUgSEFWRV9TRUNfS0VZQ0hBSU4gMQorI2RlZmluZSBVU0VfQVBQS0lUIDEKKyNkZWZpbmUg
VVNFX1BBU1NLSVQgMQogCiAjaWYgQ1BVKFg4Nl82NCkKICNkZWZpbmUgSEFWRV9ORVRXT1JLX0VY
VEVOU0lPTiAxCkBAIC0xMDUzLDkgKzEwNTQsMTAgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
SU9TKQorI2RlZmluZSBIQVZFX0FQUF9MSU5LUyAxCisjZGVmaW5lIFVTRV9QQVNTS0lUIDEKICNk
ZWZpbmUgVVNFX1FVSUNLX0xPT0sgMQogI2RlZmluZSBVU0VfU1lTVEVNX1BSRVZJRVcgMQotI2Rl
ZmluZSBIQVZFX0FQUF9MSU5LUyAxCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmICFQTEFURk9STShJT1NNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9T
b2Z0TGlua2luZy5oIGIvU291cmNlL1dURi93dGYvY29jb2EvU29mdExpbmtpbmcuaAppbmRleCA2
YWVlZGFlNGE2NjMzNDU3NjA2YmE3ZTFjYmVmZmY1ZWE2M2MwODJmLi43ZmRjNGU5ZTg0MjVmN2Iz
MDljNTJjODcyZDlkZDlmYTljNDlkNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9Tb2Z0TGlua2luZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1NvZnRMaW5raW5nLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDExLTIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNDAsOSArMzQwLDkgQEAKICAgICB9IFwKICAgICB9CiAKLSNkZWZp
bmUgU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFt
ZXdvcmspIFwKKyNkZWZpbmUgU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIGV4cG9ydCkgXAogICAgIG5hbWVzcGFj
ZSBmdW5jdGlvbk5hbWVzcGFjZSB7IFwKLSAgICB2b2lkKiBmcmFtZXdvcmsjI0xpYnJhcnkoYm9v
bCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCisgICAgZXhwb3J0IHZvaWQqIGZyYW1ld29yayMjTGli
cmFyeShib29sIGlzT3B0aW9uYWwgPSBmYWxzZSk7IFwKICAgICB2b2lkKiBmcmFtZXdvcmsjI0xp
YnJhcnkoYm9vbCBpc09wdGlvbmFsKSBcCiAgICAgeyBcCiAgICAgICAgIHN0YXRpYyB2b2lkKiBm
cmFtZXdvcmtMaWJyYXJ5OyBcCkBAIC0zNTYsOSArMzU2LDEyIEBACiAgICAgfSBcCiAgICAgfQog
Ci0jZGVmaW5lIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19GT1JfU09VUkNFKGZ1bmN0aW9u
TmFtZXNwYWNlLCBmcmFtZXdvcmspIFwKKyNkZWZpbmUgU09GVF9MSU5LX0ZSQU1FV09SS19GT1Jf
U09VUkNFKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmspIFwKKyAgICBTT0ZUX0xJTktfRlJB
TUVXT1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29y
aywgKQorCisjZGVmaW5lIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIGV4cG9ydCkgXAogICAgIG5h
bWVzcGFjZSBmdW5jdGlvbk5hbWVzcGFjZSB7IFwKLSAgICB2b2lkKiBmcmFtZXdvcmsjI0xpYnJh
cnkoYm9vbCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCisgICAgZXhwb3J0IHZvaWQqIGZyYW1ld29y
ayMjTGlicmFyeShib29sIGlzT3B0aW9uYWwgPSBmYWxzZSk7IFwKICAgICB2b2lkKiBmcmFtZXdv
cmsjI0xpYnJhcnkoYm9vbCBpc09wdGlvbmFsKSBcCiAgICAgeyBcCiAgICAgICAgIHN0YXRpYyB2
b2lkKiBmcmFtZXdvcmtMaWJyYXJ5OyBcCkBAIC0zNzIsNiArMzc1LDkgQEAKICAgICB9IFwKICAg
ICB9CiAKKyNkZWZpbmUgU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoZnVu
Y3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaykgXAorICAgIFNPRlRfTElOS19QUklWQVRFX0ZSQU1F
V09SS19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmss
ICkKKwogI2RlZmluZSBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFj
ZSwgZnJhbWV3b3JrLCBjbGFzc05hbWUpIFwKICAgICBAY2xhc3MgY2xhc3NOYW1lOyBcCiAgICAg
bmFtZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXApAQCAtMzgzLDExICszODksMTEgQEAKICAg
ICB9IFwKICAgICB9CiAKLSNkZWZpbmUgU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoZnVuY3Rp
b25OYW1lc3BhY2UsIGZyYW1ld29yaywgY2xhc3NOYW1lKSBcCisjZGVmaW5lIFNPRlRfTElOS19D
TEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmss
IGNsYXNzTmFtZSwgZXhwb3J0KSBcCiAgICAgQGNsYXNzIGNsYXNzTmFtZTsgXAogICAgIG5hbWVz
cGFjZSBmdW5jdGlvbk5hbWVzcGFjZSB7IFwKICAgICBzdGF0aWMgQ2xhc3MgaW5pdCMjY2xhc3NO
YW1lKCk7IFwKLSAgICBDbGFzcyAoKmdldF8jI2ZyYW1ld29yayMjXyMjY2xhc3NOYW1lIyNDbGFz
cykoKSA9IGluaXQjI2NsYXNzTmFtZTsgXAorICAgIGV4cG9ydCBDbGFzcyAoKmdldF8jI2ZyYW1l
d29yayMjXyMjY2xhc3NOYW1lIyNDbGFzcykoKSA9IGluaXQjI2NsYXNzTmFtZTsgXAogICAgIHN0
YXRpYyBDbGFzcyBjbGFzcyMjY2xhc3NOYW1lOyBcCiAgICAgXAogICAgIHN0YXRpYyBDbGFzcyBj
bGFzc05hbWUjI0Z1bmN0aW9uKCkgXApAQCAtNDA4LDYgKzQxNCw5IEBACiAgICAgfSBcCiAgICAg
fQogCisjZGVmaW5lIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNwYWNl
LCBmcmFtZXdvcmssIGNsYXNzTmFtZSkgXAorICAgIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIGNsYXNzTmFtZSwgKQor
CiAjZGVmaW5lIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKGZ1bmN0aW9uTmFtZXNwYWNl
LCBmcmFtZXdvcmssIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVUeXBlKSBcCiAgICAgV1RGX0VYVEVS
Tl9DX0JFR0lOIFwKICAgICBleHRlcm4gY29uc3QgdmFyaWFibGVUeXBlIHZhcmlhYmxlTmFtZTsg
XApAQCAtNDE2LDEyICs0MjUsMTIgQEAKICAgICB2YXJpYWJsZVR5cGUgZ2V0XyMjZnJhbWV3b3Jr
IyNfIyN2YXJpYWJsZU5hbWUoKTsgXAogICAgIH0KIAotI2RlZmluZSBTT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUs
IHZhcmlhYmxlVHlwZSkgXAorI2RlZmluZSBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZh
cmlhYmxlVHlwZSwgZXhwb3J0KSBcCiAgICAgV1RGX0VYVEVSTl9DX0JFR0lOIFwKICAgICBleHRl
cm4gY29uc3QgdmFyaWFibGVUeXBlIHZhcmlhYmxlTmFtZTsgXAogICAgIFdURl9FWFRFUk5fQ19F
TkQgXAogICAgIG5hbWVzcGFjZSBmdW5jdGlvbk5hbWVzcGFjZSB7IFwKLSAgICB2YXJpYWJsZVR5
cGUgZ2V0XyMjZnJhbWV3b3JrIyNfIyN2YXJpYWJsZU5hbWUoKTsgXAorICAgIGV4cG9ydCB2YXJp
YWJsZVR5cGUgZ2V0XyMjZnJhbWV3b3JrIyNfIyN2YXJpYWJsZU5hbWUoKTsgXAogICAgIHZhcmlh
YmxlVHlwZSBnZXRfIyNmcmFtZXdvcmsjI18jI3ZhcmlhYmxlTmFtZSgpIFwKICAgICB7IFwKICAg
ICAgICAgc3RhdGljIHZhcmlhYmxlVHlwZSBjb25zdGFudCMjZnJhbWV3b3JrIyN2YXJpYWJsZU5h
bWU7IFwKQEAgLTQzNSw2ICs0NDQsOSBAQAogICAgIH0gXAogICAgIH0KIAorI2RlZmluZSBTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCB2
YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSkgXAorICAgIFNPRlRfTElOS19DT05TVEFOVF9GT1Jf
U09VUkNFX1dJVEhfRVhQT1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIHZhcmlhYmxl
TmFtZSwgdmFyaWFibGVUeXBlLCApCisKICNkZWZpbmUgU09GVF9MSU5LX0NPTlNUQU5UX01BWV9G
QUlMX0ZPUl9IRUFERVIoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgdmFyaWFibGVOYW1l
LCB2YXJpYWJsZVR5cGUpIFwKICAgICBXVEZfRVhURVJOX0NfQkVHSU4gXAogICAgIGV4dGVybiBj
b25zdCB2YXJpYWJsZVR5cGUgdmFyaWFibGVOYW1lOyBcCkBAIC00ODksMTMgKzUwMSwxMyBAQAog
ICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lc3BhY2U6OnNvZnRMaW5rIyNmcmFtZXdvcmsjI2Z1
bmN0aW9uTmFtZSBwYXJhbWV0ZXJOYW1lczsgXAogICAgIH0KIAotI2RlZmluZSBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlv
bk5hbWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMp
IFwKKyNkZWZpbmUgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoZnVu
Y3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgZnVuY3Rpb25OYW1lLCByZXN1bHRUeXBlLCBwYXJh
bWV0ZXJEZWNsYXJhdGlvbnMsIHBhcmFtZXRlck5hbWVzLCBleHBvcnQpIFwKICAgICBXVEZfRVhU
RVJOX0NfQkVHSU4gXAogICAgIHJlc3VsdFR5cGUgZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xh
cmF0aW9uczsgXAogICAgIFdURl9FWFRFUk5fQ19FTkQgXAogICAgIG5hbWVzcGFjZSBmdW5jdGlv
bk5hbWVzcGFjZSB7IFwKICAgICBzdGF0aWMgcmVzdWx0VHlwZSBpbml0IyNmcmFtZXdvcmsjI2Z1
bmN0aW9uTmFtZSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnM7IFwKLSAgICByZXN1bHRUeXBlICgqc29m
dExpbmsjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lKSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMgPSBp
bml0IyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZTsgXAorICAgIGV4cG9ydCByZXN1bHRUeXBlKCpz
b2Z0TGluayMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUpIHBhcmFtZXRlckRlY2xhcmF0aW9ucyA9
IGluaXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lOyBcCiAgICAgc3RhdGljIHJlc3VsdFR5cGUg
aW5pdCMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUgcGFyYW1ldGVyRGVjbGFyYXRpb25zIFwKICAg
ICB7IFwKICAgICAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlOyBcCkBAIC01MDcsNiAr
NTE5LDkgQEAKICAgICB9IFwKICAgICB9CiAKKyNkZWZpbmUgU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgZnVuY3Rpb25OYW1lLCByZXN1
bHRUeXBlLCBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMsIHBhcmFtZXRlck5hbWVzKSBcCisgICAgU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoZnVuY3Rpb25OYW1lc3BhY2Us
IGZyYW1ld29yaywgZnVuY3Rpb25OYW1lLCByZXN1bHRUeXBlLCBwYXJhbWV0ZXJEZWNsYXJhdGlv
bnMsIHBhcmFtZXRlck5hbWVzLCApCisKICNkZWZpbmUgU09GVF9MSU5LX0ZVTkNUSU9OX01BWV9G
QUlMX0ZPUl9IRUFERVIoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgZnVuY3Rpb25OYW1l
LCByZXN1bHRUeXBlLCBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMsIHBhcmFtZXRlck5hbWVzKSBcCiAg
ICAgV1RGX0VYVEVSTl9DX0JFR0lOIFwKICAgICByZXN1bHRUeXBlIGZ1bmN0aW9uTmFtZSBwYXJh
bWV0ZXJEZWNsYXJhdGlvbnM7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRhY3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRhY3RDb2NvYS5tbQppbmRleCAwYjAyMDRj
ODZkOGEzNmE1ZDRhNzUyOThkMGY0MWEzNDQ2MTUwM2VlLi5jYzk3ZmQ1ZTFmNjIzNDU5OWViODg0
Y2E4MTg3ZmIyY2QwODU3YzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNyAr
MzAsNyBAQAogCiAjaW1wb3J0ICJBcHBsZVBheVBheW1lbnRDb250YWN0LmgiCiAjaW1wb3J0IDxD
b250YWN0cy9Db250YWN0cy5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+
CisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvU29m
dExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtMzgs
MTQgKzM4LDYgQEAgU09GVF9MSU5LX0ZSQU1FV09SSyhDb250YWN0cykKIFNPRlRfTElOS19DTEFT
UyhDb250YWN0cywgQ05NdXRhYmxlUG9zdGFsQWRkcmVzcykKIFNPRlRfTElOS19DTEFTUyhDb250
YWN0cywgQ05QaG9uZU51bWJlcikKIAotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElOS19QUklW
QVRFX0ZSQU1FV09SSyhQYXNzS2l0KQotI2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tp
dCkKLSNlbmRpZgotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtDb250YWN0KQotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBOU1N0cmluZyAqc3ViTG9jYWxpdHkoQ05Qb3N0YWxB
ZGRyZXNzICphZGRyZXNzKQpAQCAtMTA2LDcgKzk4LDcgQEAgc3RhdGljIHZvaWQgc2V0U3ViQWRt
aW5pc3RyYXRpdmVBcmVhKENOTXV0YWJsZVBvc3RhbEFkZHJlc3MgKmFkZHJlc3MsIE5TU3RyaW5n
ICoKIAogc3RhdGljIFJldGFpblB0cjxQS0NvbnRhY3Q+IGNvbnZlcnQodW5zaWduZWQgdmVyc2lv
biwgY29uc3QgQXBwbGVQYXlQYXltZW50Q29udGFjdCYgY29udGFjdCkKIHsKLSAgICBhdXRvIHJl
c3VsdCA9IGFkb3B0TlMoW2FsbG9jUEtDb250YWN0SW5zdGFuY2UoKSBpbml0XSk7CisgICAgYXV0
byByZXN1bHQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtDb250YWN0SW5zdGFuY2UoKSBpbml0XSk7
CiAKICAgICBOU1N0cmluZyAqZmFtaWx5TmFtZSA9IG5pbDsKICAgICBOU1N0cmluZyAqcGhvbmV0
aWNGYW1pbHlOYW1lID0gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5t
bQppbmRleCA4MWM4Y2NiNzM4YTdmOTM1NDEyMWM4YTI4ZDY3OTM1YzMxMjc2Y2FiLi5mYzM2Yzg5
NTMxNDlmNDMzMGJkOTUxYTZhZWMyMmI4ZWZiMmUwZGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJj
aGFudFNlc3Npb25Db2NvYS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOSwxNiArMjksNyBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkp
CiAKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTT05PYmplY3QuaD4KLSNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvUGFzc0tpdFNQSS5oPgotI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLSNp
ZiBQTEFURk9STShNQUMpCi1TT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoUGFzc0tpdCkKLSNl
bHNlCi1TT0ZUX0xJTktfRlJBTUVXT1JLKFBhc3NLaXQpCi0jZW5kaWYKLQotU09GVF9MSU5LX0NM
QVNTKFBhc3NLaXQsIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbikKKyNpbXBvcnQgPHBhbC9jb2Nv
YS9QYXNzS2l0U29mdExpbmsuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Myw3ICs0
NCw3IEBAIHN0ZDo6b3B0aW9uYWw8UGF5bWVudE1lcmNoYW50U2Vzc2lvbj4gUGF5bWVudE1lcmNo
YW50U2Vzc2lvbjo6ZnJvbUpTKEpTQzo6RXhlY1N0CiAgICAgaWYgKCFkaWN0aW9uYXJ5IHx8ICFb
ZGljdGlvbmFyeSBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8gcGtQYXltZW50TWVyY2hhbnRTZXNzaW9u
ID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRNZXJjaGFudFNlc3Npb25JbnN0YW5jZSgpIGluaXRX
aXRoRGljdGlvbmFyeTpkaWN0aW9uYXJ5XSk7CisgICAgYXV0byBwa1BheW1lbnRNZXJjaGFudFNl
c3Npb24gPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uSW5zdGFu
Y2UoKSBpbml0V2l0aERpY3Rpb25hcnk6ZGljdGlvbmFyeV0pOwogCiAgICAgcmV0dXJuIFBheW1l
bnRNZXJjaGFudFNlc3Npb24ocGtQYXltZW50TWVyY2hhbnRTZXNzaW9uLmdldCgpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAyMTU1MmRmN2Y3NWZjNTM5YmI4NzU2ZDA4NDliNTRkNjg2OTU1NDA5Li43N2YyNDY3M2U1MTcz
Njk3ZjVjYmNlN2VjM2E0NTIxNmNmNDgzMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzEsNiArMTMxLDggQEAKIAkJQTEx
NzVCNTgxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE3NUI1NjFGNkI0NzA1
MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJQTExNzVCNUEx
RjZCNEE4NDAwQzRCOUYwIC8qIE5TU2Nyb2xsVmlld1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNzVCNTkxRjZCNEE4NDAwQzRCOUYwIC8qIE5T
U2Nyb2xsVmlld1NQSS5oICovOyB9OwogCQlBMUY1NURDRjFGNTUyOEVDMDBFREI3NUYgLyogTWV0
YWRhdGFTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExRjU1RENFMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oICovOyB9OworCQlBMUY2
M0M5RjIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY2M0M5RDIxQTREQkY3MDA2RkI0M0Ig
LyogUGFzc0tpdFNvZnRMaW5rLmggKi87IH07CisJCUExRjYzQ0EwMjFBNERCRjcwMDZGQjQzQiAv
KiBQYXNzS2l0U29mdExpbmsubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUY2M0M5RTIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1t
ICovOyB9OwogCQlBMzBENDEyMTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMEQ0MTFFMUYwREQwRUEw
MEI3MTk1NCAvKiBLaWxsUmluZy5oICovOyB9OwogCQlBMzBENDEyMjFGMEREMEVBMDBCNzE5NTQg
LyogS2lsbFJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTMwRDQxMUYxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmNwcCAqLzsgfTsKIAkJ
QTMwRDQxMjUxRjBERDEyRDAwQjcxOTU0IC8qIEtpbGxSaW5nTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQxMjQxRjBERDEyRDAwQjcxOTU0
IC8qIEtpbGxSaW5nTWFjLm1tICovOyB9OwpAQCAtMjg3LDYgKzI4OSw4IEBACiAJCUExMTc1QjU2
MUY2QjQ3MDUwMEM0QjlGMCAvKiBEZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTExNzVCNTkxRjZCNEE4NDAwQzRCOUYwIC8qIE5TU2Nyb2xsVmlld1NQSS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOU1Njcm9sbFZpZXdTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1ldGFkYXRhU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRjYz
QzlEMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGFzc0tpdFNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRjYzQzlF
MjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQYXNzS2l0U29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEz
MEQ0MTFFMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBLaWxsUmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gS2lsbFJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMzBENDEyNDFGMEREMTJEMDBCNzE5NTQgLyogS2lsbFJpbmdNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBLaWxsUmluZ01hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2MCw2ICs1NjQsOCBAQAogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlGNDQyOTE2NjFGQTUyNzA1MDAyQ0M5M0UgLyogRmls
ZVNpemVGb3JtYXR0ZXJDb2NvYS5tbSAqLywKKwkJCQlBMUY2M0M5RDIxQTREQkY3MDA2RkI0M0Ig
LyogUGFzc0tpdFNvZnRMaW5rLmggKi8sCisJCQkJQTFGNjNDOUUyMUE0REJGNzAwNkZCNDNCIC8q
IFBhc3NLaXRTb2Z0TGluay5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzI5LDYgKzczNSw3IEBACiAJCQkJMEM3Nzg1OUQxRjQ1
MTMwRjAwRjRFQkI2IC8qIE5TV2luZG93U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzBBQjhG
OTIwQUY2RTNEMDBCOEJFODcgLyogTlNYUENDb25uZWN0aW9uU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwQzVBRjkxRjFGNDNBNEM3MDAyRUFDMDIgLyogT3BlbkdMRVNTUEkuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUExRjYzQzlGMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCBp
biBIZWFkZXJzICovLAogCQkJCTBDMkRBMTU1MUYzQkVCNDkwMERCQzMxNyAvKiBQYXNzS2l0U1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5RTFGNDUxMzBGMDBGNEVCQjYgLyogUElQU1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTE3NUI0RTFGNkIzMzczMDBDNEI5RjAgLyogUG9wdXBN
ZW51LmggaW4gSGVhZGVycyAqLywKQEAgLTg1NCw2ICs4NjEsNyBAQAogCQkJCUEzMEQ0MTI1MUYw
REQxMkQwMEI3MTk1NCAvKiBLaWxsUmluZ01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNDg3
NkQ4MUY4RDdGNEUwMENDRUVCRCAvKiBMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBD
Rjk5Q0E0MUY3MzYzNzUwMDdFRTc5MyAvKiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQTFGNjNDQTAyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGlu
ay5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExMTc1QjRGMUY2QjMzNzMwMEM0QjlGMCAvKiBQb3B1
cE1lbnUubW0gaW4gU291cmNlcyAqLywKIAkJCQlBM0M2NkNEQzFGNDYyRDZBMDA5RTZFRTkgLyog
U2Vzc2lvbklELmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzQUI2RTUyMUYzRDFEQzUwMDlDMTRC
MSAvKiBTbGVlcERpc2FibGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggYjJhY2ZiYjEzOTc5YTEwMDczY2JkYjM0OTVjMDI4
OWJmNWQyM2RkMC4uYjc4MDg4YmM0Y2U0MzAyMmZjOTdmMDdhNjc1YzZlMTc0ZGJlYjVlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zLDYgKzMsOCBAQCBs
aXN0KEFQUEVORCBQQUxfUFVCTElDX0hFQURFUlMKIAogICAgIGNmL0NvcmVNZWRpYVNvZnRMaW5r
LmgKIAorICAgIGNvY29hL1Bhc3NLaXRTb2Z0TGluay5oCisKICAgICBzcGkvY2YvQ0ZMb2NhbGVT
UEkuaAogICAgIHNwaS9jZi9DRk5ldHdvcmtDb25uZWN0aW9uQ2FjaGVTUEkuaAogICAgIHNwaS9j
Zi9DRk5ldHdvcmtTUEkuaApAQCAtOTYsNiArOTgsNyBAQCBsaXN0KEFQUEVORCBQQUxfU09VUkNF
UwogCiAgICAgY29jb2EvRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbQogICAgIGNvY29hL0xvZ2dp
bmdDb2NvYS5tbQorICAgIGNvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQogCiAgICAgY3J5cHRvL2Nv
bW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCiAKQEAgLTExNCw2ICsxMTcs
NyBAQCBsaXN0KEFQUEVORCBQQUxfU09VUkNFUwogbGlzdChBUFBFTkQgUEFMX1BSSVZBVEVfSU5D
TFVERV9ESVJFQ1RPUklFUwogICAgICIke1BBTF9ESVJ9L3BhbC9hdmZvdW5kYXRpb24iCiAgICAg
IiR7UEFMX0RJUn0vcGFsL2NmIgorICAgICIke1BBTF9ESVJ9L3BhbC9jb2NvYSIKICAgICAiJHtQ
QUxfRElSfS9wYWwvc3BpL2NmIgogICAgICIke1BBTF9ESVJ9L3BhbC9zcGkvY2ciCiAgICAgIiR7
UEFMX0RJUn0vcGFsL3NwaS9jb2NvYSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29h
L1Bhc3NLaXRTb2Z0TGluay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1MzAwZjhhMzZmMTI3NmY5YTNkOTQyNTZi
NDVmZjdlM2VhZDlkNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW1wb3J0IDxwYWwvc3BpL2NvY29h
L1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktf
RlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0KQorCitTT0ZUX0xJTktfQ0xBU1NfRk9S
X0hFQURFUihQQUwsIFBhc3NLaXQsIFBLQ29udGFjdCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVB
REVSKFBBTCwgUGFzc0tpdCwgUEtQYXNzTGlicmFyeSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVB
REVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIo
UEFMLCBQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpCitTT0ZU
X0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5bWVudE1ldGhvZCkKK1NP
RlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50TWVyY2hhbnRT
ZXNzaW9uKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1l
bnRSZXF1ZXN0KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1Bh
eW1lbnRTdW1tYXJ5SXRlbSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tp
dCwgUEtTaGlwcGluZ01ldGhvZCkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmREb21h
aW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwgUEtDYW5N
YWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmllciwgZG9tYWluLCBj
b21wbGV0aW9uKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwg
UEtEcmF3QXBwbGVQYXlCdXR0b24sIHZvaWQsIChDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0
IGRyYXdSZWN0LCBDR0Zsb2F0IHNjYWxlLCBQS1BheW1lbnRCdXR0b25UeXBlIHR5cGUsIFBLUGF5
bWVudEJ1dHRvblN0eWxlIHN0eWxlLCBOU1N0cmluZyAqbGFuZ3VhZ2VDb2RlKSwgKGNvbnRleHQs
IGRyYXdSZWN0LCBzY2FsZSwgdHlwZSwgc3R5bGUsIGxhbmd1YWdlQ29kZSkpCisKKyNpZiBQTEFU
Rk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMzAwKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0
LCBQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFE
RVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSkKK1NP
RlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFNo
aXBwaW5nQ29udGFjdFVwZGF0ZSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlKQorCitTT0ZUX0xJTktf
Q09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkRW1haWxBZGRy
ZXNzLCBQS0NvbnRhY3RGaWVsZCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwg
UGFzc0tpdCwgUEtDb250YWN0RmllbGROYW1lLCBQS0NvbnRhY3RGaWVsZCkKK1NPRlRfTElOS19D
T05TVEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQaG9uZU51bWJl
ciwgUEtDb250YWN0RmllbGQpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBh
c3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lLCBQS0NvbnRhY3RGaWVsZCkKK1NPRlRf
TElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQb3N0
YWxBZGRyZXNzLCBQS0NvbnRhY3RGaWVsZCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVS
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5mb0tleSwgUEtQ
YXltZW50RXJyb3JLZXkpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBhc3NL
aXQsIFBLUGF5bWVudEVycm9yUG9zdGFsQWRkcmVzc1VzZXJJbmZvS2V5LCBQS1BheW1lbnRFcnJv
cktleSkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0Nh
bk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJEb21haW5BbmRTb3VyY2VBcHBsaWNh
dGlvbiwgdm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBOU1N0
cmluZyAqc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBQS0Nhbk1ha2VQYXlt
ZW50c0NvbXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBkb21haW4sIHNvdXJjZUFw
cGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwgY29tcGxldGlvbikpCisjZW5kaWYKKworI2Vu
ZGlmIC8vIFVTRShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
b2NvYS9QYXNzS2l0U29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bh
c3NLaXRTb2Z0TGluay5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMmY3YmUwOWNhYWM1NmYwZjA2ZjJkODc3M2U3
N2MwYjg0ZGU4ZjkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
b2NvYS9QYXNzS2l0U29mdExpbmsubW0KQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorCisjaWYgVVNFKFBBU1NLSVQpCisKKyNpbXBvcnQgIlBhc3NLaXRT
UEkuaCIKKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCisjaWYgUExBVEZPUk0oTUFDKQor
U09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQ
YXNzS2l0LCBQQUxfRVhQT1JUKQorI2Vsc2UKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBBTF9FWFBPUlQpCisjZW5kaWYKKworU09GVF9M
SU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3Qs
IFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IFBhc3NLaXQsIFBLUGFzc0xpYnJhcnksIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudCwgUEFMX0VYUE9SVCkK
K1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLCBQQUxfRVhQT1JUKQorU09GVF9MSU5L
X0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRNZXJj
aGFudFNlc3Npb24sIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudE1ldGhvZCwgUEFMX0VYUE9SVCkKK1NPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50
UmVxdWVzdCwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50U3VtbWFyeUl0ZW0sIFBBTF9FWFBPUlQpCitTT0ZU
X0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLU2hpcHBp
bmdNZXRob2QsIFBBTF9FWFBPUlQpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVu
dGlmaWVyQW5kRG9tYWluLCB2b2lkLCAoTlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpk
b21haW4sIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbiBjb21wbGV0aW9uKSwgKGlkZW50aWZp
ZXIsIGRvbWFpbiwgY29tcGxldGlvbiksIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShQQUwsIFBhc3NLaXQsIFBLRHJhd0FwcGxlUGF5QnV0dG9uLCB2b2lkLCAoQ0dD
b250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCBkcmF3UmVjdCwgQ0dGbG9hdCBzY2FsZSwgUEtQYXlt
ZW50QnV0dG9uVHlwZSB0eXBlLCBQS1BheW1lbnRCdXR0b25TdHlsZSBzdHlsZSwgTlNTdHJpbmcg
Kmxhbmd1YWdlQ29kZSksIChjb250ZXh0LCBkcmF3UmVjdCwgc2NhbGUsIHR5cGUsIHN0eWxlLCBs
YW5ndWFnZUNvZGUpKQorCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkKK1NPRlRfTElOS19DTEFT
U19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXph
dGlvblJlc3VsdCwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUs
IFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IFBhc3NLaXQsIFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUsIFBBTF9FWFBP
UlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQs
IFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSwgUEFMX0VYUE9SVCkKKworU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0Nv
bnRhY3RGaWVsZEVtYWlsQWRkcmVzcywgUEtDb250YWN0RmllbGQsIFBBTF9FWFBPUlQpCitTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29u
dGFjdEZpZWxkTmFtZSwgUEtDb250YWN0RmllbGQsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxk
UGhvbmVOdW1iZXIsIFBLQ29udGFjdEZpZWxkLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNU
QU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBo
b25ldGljTmFtZSwgUEtDb250YWN0RmllbGQsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUG9z
dGFsQWRkcmVzcywgUEtDb250YWN0RmllbGQsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEVycm9yQ29u
dGFjdEZpZWxkVXNlckluZm9LZXksIFBLUGF5bWVudEVycm9yS2V5LCBQQUxfRVhQT1JUKQorU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1Bh
eW1lbnRFcnJvclBvc3RhbEFkZHJlc3NVc2VySW5mb0tleSwgUEtQYXltZW50RXJyb3JLZXksIFBB
TF9FWFBPUlQpCisKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgUGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9tYWlu
QW5kU291cmNlQXBwbGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJp
bmcgKmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmll
ciwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmllciwg
ZG9tYWluLCBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNvbXBsZXRpb24p
LCBQQUxfRVhQT1JUKQorI2VuZGlmCisKKyNlbmRpZiAvLyBVU0UoUEFTU0tJVCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaAppbmRleCBiNWU1OTMwMzI3
MWZiNTgxYWIzNDlhYjk1Zjc0MzIwOTE0OGFhMjU4Li4zY2EzOWZhOTZmZmFjNTA2YmQwMDAzOTg1
ZDZhODYzM2E5NmZiY2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9j
b2NvYS9QYXNzS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
UGFzc0tpdFNQSS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjUsNiArMjUsMTggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpZiAh
UExBVEZPUk0oTUFDKSB8fCBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisvLyBGSVhNRTogUGFz
c0tpdCBkb2VzIG5vdCBkZWNsYXJlIGl0cyBOU1N0cmluZyBjb25zdGFudCBzeW1ib2xzIHdpdGgg
QyBsaW5rYWdlLCBzbyB3ZSBlbmQgdXAgd2l0aAorLy8gbGlua2FnZSBtaXNtYXRjaGVzIGluIHRo
ZSBTT0ZUX0xJTktfQ09OU1RBTlQgbWFjcm9zIHVzZWQgaW4gUGFzc0tpdFNvZnRMaW5rLm1tIHVu
bGVzcyB3ZSB3cmFwCisvLyB0aGVzZSBpbmNsdWRlcyBpbiBhbiBleHRlcm4gIkMiIGJsb2NrLgor
V1RGX0VYVEVSTl9DX0JFR0lOCisjaW1wb3J0IDxQYXNzS2l0L1BLQ29uc3RhbnRzLmg+CisjaW1w
b3J0IDxQYXNzS2l0L1BLRXJyb3IuaD4KK1dURl9FWFRFUk5fQ19FTkQKKworI2VuZGlmCisKICNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiAjaW1wb3J0IDxQYXNzS2l0L1Bhc3NLaXQuaD4K
QEAgLTM5LDggKzUxLDggQEAKIAogI2VsaWYgUExBVEZPUk0oTUFDKQogCisjaW1wb3J0IDxBcHBL
aXQvQXBwS2l0Lmg+CiAjaW1wb3J0IDxDb250YWN0cy9Db250YWN0cy5oPgotI2ltcG9ydCA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKQEAgLTUz
LDYgKzY1LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIEBjbGFzcyBQS1BheW1lbnRSZXF1
ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlOwogCiB0eXBlZGVmIE5TU3RyaW5nICpQS0NvbnRhY3RG
aWVsZDsKK3R5cGVkZWYgTlNTdHJpbmcgKlBLUGF5bWVudEVycm9yS2V5OwogCiBleHRlcm4gTlNT
dHJpbmcgKiBjb25zdCBQS1BheW1lbnRFcnJvckRvbWFpbjsKIHR5cGVkZWYgTlNfRVJST1JfRU5V
TShQS1BheW1lbnRFcnJvckRvbWFpbiwgUEtQYXltZW50RXJyb3JDb2RlKSB7CkBAIC0yMjUsNyAr
MjM4LDcgQEAgdHlwZWRlZiBOU1N0cmluZyAqIFBLUGF5bWVudE5ldHdvcmsgTlNfRVhURU5TSUJM
RV9TVFJJTkdfRU5VTTsKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKLSNlbmRpZgorI2VuZGlm
IC8vIFBMQVRGT1JNKE1BQykKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIApAQCAtMjYxLDcg
KzI3NCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBQS1BheW1lbnRSZXF1ZXN0QVBJ
VHlwZSkgewogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAotI2VuZGlmCisjZW5kaWYgLy8gVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShBUFBMRV9J
TlRFUk5BTF9TREspCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBQS1BheW1lbnRCdXR0b25T
dHlsZSkgewpAQCAtMzI0LDQgKzMzNyw2IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU1N0cmluZyAqQ1REYXRhQ29ubmVjdGlvblNlcnZp
Y2VUeXBlOwogQGVuZAogCit0eXBlZGVmIHZvaWQoXlBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlv
bikoQk9PTCBpc1ZhbGlkLCBOU0Vycm9yICopOworCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGExNDgwZmJhNmY5NDBhNmI2ODdkM2MzZTkwZjBhNTFm
MTMxZjc3MWIuLjY1ZWJjODQzNjYyMDFkNTg5Zjc0YTVhNWZmNTQ5ODEzYmVmYmE3MDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dApAQCAtNTg4LDcgKzU4OCw3IEBAIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmNwcAogCiAgICAgTW9kdWxlcy9h
cHBsZXBheS9jb2NvYS9QYXltZW50Q29jb2EubW0KICAgICBNb2R1bGVzL2FwcGxlcGF5L2NvY29h
L1BheW1lbnRDb250YWN0Q29jb2EubW0KLSAgICBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1l
bnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbSBAbm8tdW5pZnkKKyAgICBNb2R1bGVzL2FwcGxlcGF5
L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbQogICAgIE1vZHVsZXMvYXBwbGVw
YXkvY29jb2EvUGF5bWVudE1ldGhvZENvY29hLm1tCiAKICAgICBNb2R1bGVzL2FwcGxlcGF5L3Bh
eW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzIzMzRjNjA0ZTcz
Yjg2MDgyNWI4OTA1N2JjOWE4OTQxOTllYjEzNS4uYTc1M2FhMDYzMzA1Y2UxODFkOTI5YjAzNTA0
NzY3ODk5YzMwZDMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNDQ3MSw3ICs0NDcxLDYgQEAKIAkJREU1Rjg2MEQxRkEyMzg2
QjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0NzguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREU1Rjg1RDIxRkEyMzg1NjAwNkRCNjNBIC8qIFVuaWZp
ZWRTb3VyY2U0NzguY3BwICovOyB9OwogCQlERTVGODYwRTFGQTIzODZCMDA2REI2M0EgLyogVW5p
ZmllZFNvdXJjZTQ3OS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBERTVGODVDRjFGQTIzODUwMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ3OS5jcHAg
Ki87IH07CiAJCURFNUY4NjBGMUZBMjM4NkIwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDgwLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4NUQz
MUZBMjM4NTkwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDgwLmNwcCAqLzsgfTsKLQkJREU1Rjg2
MTAxRkEyMzhEOTAwNkRCNjNBIC8qIFBheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBREE0QTFCMUQyMkYy
QzAwMDVBOUExNSAvKiBQYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0gKi87IH07CiAJCURF
NUY4NjExMUZBMjM5REEwMDZEQjYzQSAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRTI5RTVDMTY3
QThBMTkwMDU4NkQzRCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcCAqLzsgfTsKIAkJ
REU1Rjg2MTIxRkEyMzlFNzAwNkRCNjNBIC8qIEpTR0NPYnNlcnZhdGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxNEVBRTFDRjY2NTRBMDA0
NzIzQzQgLyogSlNHQ09ic2VydmF0aW9uLmNwcCAqLzsgfTsKIAkJREU1Rjg2MUQxRkEyODE1QjAw
NkRCNjNBIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE0NzhBN0UxNkNENzBDMzAwN0Qx
QkI0IC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tICovOyB9OwpAQCAtMzIz
NDUsNyArMzIzNDQsNiBAQAogCQkJCUEzMUM0RTREMTZFMDJBQTYwMDJGNzk1NyAvKiBPRVNUZXh0
dXJlSGFsZkZsb2F0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMDc4Q0M3MTg4MEFBQjUwMDgw
OTlEQyAvKiBPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTc3QTE3QTcxMTJGMjgxODIwMDRFMDJGNiAvKiBPRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQlERTVGODYxMDFGQTIzOEQ5MDA2REI2M0EgLyogUGF5bWVudE1lcmNo
YW50U2Vzc2lvbkNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VBMjg0NjYyMTQxRTg0OTAw
RTQwN0U4IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QUExMkRGNDkxNzQzREY4MzAwNERBRkRGIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1Mu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDREEyOUEzMDFDQkY3NEQ0MDA5MDFDQ0YgLyogUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KaW5kZXggYjRhYWY2NDIxZDJiNmQzYzVi
MzBkZWFhNzRlM2U3MjYzMjlkMmFjZC4uY2I2MTA4MjkyYTQ4OTg2YzE5Yzc4YjExNDQwYTE1Nzcy
YTBlYTk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2Eu
bW0KQEAgLTMyLDE2ICszMiw3IEBACiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCi0jaW1wb3J0
IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KLSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5o
PgotCi0jaWYgUExBVEZPUk0oTUFDKQotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFBhc3NL
aXQpOwotI2Vsc2UKLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCk7Ci0jZW5kaWYKLQotU09G
VF9MSU5LX01BWV9GQUlMKFBhc3NLaXQsIFBLRHJhd0FwcGxlUGF5QnV0dG9uLCB2b2lkLCAoQ0dD
b250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCBkcmF3UmVjdCwgQ0dGbG9hdCBzY2FsZSwgUEtQYXlt
ZW50QnV0dG9uVHlwZSB0eXBlLCBQS1BheW1lbnRCdXR0b25TdHlsZSBzdHlsZSwgTlNTdHJpbmcg
Kmxhbmd1YWdlQ29kZSksIChjb250ZXh0LCBkcmF3UmVjdCwgc2NhbGUsIHR5cGUsIHN0eWxlLCBs
YW5ndWFnZUNvZGUpKTsKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KIAog
I2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCiAKQEAgLTEwOCw5ICs5OSw2IEBAIHN0YXRpYyBQ
S1BheW1lbnRCdXR0b25UeXBlIHRvUEtQYXltZW50QnV0dG9uVHlwZShBcHBsZVBheUJ1dHRvblR5
cGUgdHlwZSkKIAogYm9vbCBSZW5kZXJUaGVtZUNvY29hOjpwYWludEFwcGxlUGF5QnV0dG9uKGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBJbnRSZWN0JiBwYWludFJlY3QpCiB7Ci0gICAgaWYgKCFjYW5Mb2FkUEtEcmF3QXBwbGVQ
YXlCdXR0b24oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRTaG91bGRTbW9vdGhGb250cyh0cnVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0K
aW5kZXggMzVmOThiMTFiN2YxYTkyMTI5YWVkYjQyMTIyYWIwYjg1OTA3OTIyNS4uZDBlMzc0NTIw
NmRkOThhYjc0YjZmNGQxNTViODgyNzZkYTU4NmUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTMw
LDIwICszMCw4IEBACiAKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgPFdlYkNv
cmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNz
S2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJ
Lmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KLSNpbXBvcnQgPHd0Zi9T
b2Z0TGlua2luZy5oPgotCi0jaWYgUExBVEZPUk0oTUFDKQotU09GVF9MSU5LX1BSSVZBVEVfRlJB
TUVXT1JLKFBhc3NLaXQpCi0jZWxzZQotU09GVF9MSU5LX0ZSQU1FV09SSyhQYXNzS2l0KQotI2Vu
ZGlmCi0KLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS0NvbnRhY3QpOwotU09GVF9MSU5LX0NM
QVNTKFBhc3NLaXQsIFBLUGF5bWVudCk7Ci1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXlt
ZW50TWV0aG9kKTsKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRNZXJjaGFudFNl
c3Npb24pOwogCiBuYW1lc3BhY2UgSVBDIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAt
NjcsNyArNTUsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQYXltZW50JgogICAgIGF1dG8gZGF0YSA9IGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3Ro
OmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwogICAgIGF1dG8gdW5hcmNo
aXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShkYXRhLmdldCgpKTsKICAgICBAdHJ5IHsK
LSAgICAgICAgUEtQYXltZW50ICpwa1BheW1lbnQgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RP
ZkNsYXNzOmdldFBLUGF5bWVudENsYXNzKCkgZm9yS2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVj
dEtleV07CisgICAgICAgIFBLUGF5bWVudCAqcGtQYXltZW50ID0gW3VuYXJjaGl2ZXIgZGVjb2Rl
T2JqZWN0T2ZDbGFzczpQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudENsYXNzKCkgZm9yS2V5Ok5T
S2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgICAgIHBheW1lbnQgPSBQYXltZW50KHBr
UGF5bWVudCk7CiAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIFBLUGF5bWVudDogJUAiLCBleGNlcHRpb24p
OwpAQCAtMTE4LDcgKzEwNiw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50
Q29udGFjdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQCiAgICAgYXV0byBk
YXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weTpjb25zdF9j
YXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkp
KSBsZW5ndGg6ZGF0YVJlZmVyZW5jZS5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7CiAgICAgYXV0
byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKGRhdGEuZ2V0KCkpOwogICAg
IEB0cnkgewotICAgICAgICBQS0NvbnRhY3QgKnBrQ29udGFjdCA9IFt1bmFyY2hpdmVyIGRlY29k
ZU9iamVjdE9mQ2xhc3M6Z2V0UEtDb250YWN0Q2xhc3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVS
b290T2JqZWN0S2V5XTsKKyAgICAgICAgUEtDb250YWN0ICpwa0NvbnRhY3QgPSBbdW5hcmNoaXZl
ciBkZWNvZGVPYmplY3RPZkNsYXNzOlBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0Q2xhc3MoKSBm
b3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKICAgICAgICAgcGF5bWVudENvbnRh
Y3QgPSBQYXltZW50Q29udGFjdChwa0NvbnRhY3QpOwogICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlv
biAqZXhjZXB0aW9uKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBQS0Nv
bnRhY3Q6ICVAIiwgZXhjZXB0aW9uKTsKQEAgLTE3NSw3ICsxNjMsNyBAQCBib29sIEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBXZQogICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRX
aXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+
KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgpIGZyZWVX
aGVuRG9uZTpOT10pOwogICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9t
RGF0YShkYXRhLmdldCgpKTsKICAgICBAdHJ5IHsKLSAgICAgICAgUEtQYXltZW50TWVyY2hhbnRT
ZXNzaW9uICpwa1BheW1lbnRNZXJjaGFudFNlc3Npb24gPSBbdW5hcmNoaXZlciBkZWNvZGVPYmpl
Y3RPZkNsYXNzOmdldFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNsYXNzKCkgZm9yS2V5Ok5TS2V5
ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CisgICAgICAgIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lv
biAqcGtQYXltZW50TWVyY2hhbnRTZXNzaW9uID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZD
bGFzczpQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNsYXNzKCkgZm9y
S2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgICAgIHBheW1lbnRNZXJjaGFu
dFNlc3Npb24gPSBQYXltZW50TWVyY2hhbnRTZXNzaW9uKHBrUGF5bWVudE1lcmNoYW50U2Vzc2lv
bik7CiAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKICAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gZGVjb2RlIFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbjogJUAiLCBl
eGNlcHRpb24pOwpAQCAtMjA1LDcgKzE5Myw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpQYXltZW50TWV0aG9kPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlBhCiAg
ICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29w
eTpjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oZGF0YVJlZmVyZW5j
ZS5kYXRhKCkpKSBsZW5ndGg6ZGF0YVJlZmVyZW5jZS5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7
CiAgICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKGRhdGEuZ2V0
KCkpOwogICAgIEB0cnkgewotICAgICAgICBQS1BheW1lbnRNZXRob2QgKnBrUGF5bWVudE1ldGhv
ZCA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6Z2V0UEtQYXltZW50TWV0aG9kQ2xh
c3MoKSBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKKyAgICAgICAgUEtQYXlt
ZW50TWV0aG9kICpwa1BheW1lbnRNZXRob2QgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNs
YXNzOlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50TWV0aG9kQ2xhc3MoKSBmb3JLZXk6TlNLZXll
ZEFyY2hpdmVSb290T2JqZWN0S2V5XTsKICAgICAgICAgcGF5bWVudE1ldGhvZCA9IFBheW1lbnRN
ZXRob2QocGtQYXltZW50TWV0aG9kKTsKICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2Vw
dGlvbikgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgUEtQYXltZW50OiAl
QCIsIGV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMDhkYmQ3YjY1NmQ0NTA0
YmZlNzBhY2U5YTRmOWUxMGZjMjkwODQ2Yi4uZTg4YzVmZTZhY2ExYjk0MWZjMDkwYWFhNDZlMTlj
OGI4OTg0Y2I4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMjk0LDkgKzI5NCw5IEBAIFVJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQogCiBVSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQogCi1VSVByb2Nlc3MvQXBwbGVQYXkvaW9z
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tIEBuby11bmlmeQorVUlQcm9jZXNzL0Fw
cGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQogCi1VSVByb2Nlc3Mv
QXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIEBuby11bmlmeQor
VUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQog
CiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cm94eUNvY29hLm1tCiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vY29jb2EvU2VjS2V5UHJveHlT
dG9yZS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29j
b2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0K
aW5kZXggZGIyYjZjOGJkMjBmY2NmMDA5NDk0MjA1ZDIxMWRjYzQxOTIzODE3OC4uYzk0YTVmMGM0
MzdiYmU1YTM0MjVkMmE4MjMyMGQ0YzdmZGFkYzljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCkBAIC0zMywyNSArMzMsMTEgQEAKICNpbXBvcnQg
PFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UGF5bWVudEhlYWRlcnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+Ci0jaW1wb3J0IDxwYWwv
c3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExp
bmsuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4K
LSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi0jaWYgUExBVEZPUk0oTUFDKQotU09GVF9M
SU5LX1BSSVZBVEVfRlJBTUVXT1JLX09QVElPTkFMKFBhc3NLaXQpCi0jZWxzZQotU09GVF9MSU5L
X0ZSQU1FV09SSyhQYXNzS2l0KQotI2VuZGlmCi0KLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQ
S1Bhc3NMaWJyYXJ5KTsKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIpOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVu
dE1lcmNoYW50U2Vzc2lvbik7Ci1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50UmVx
dWVzdCk7Ci1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50U3VtbWFyeUl0ZW0pOwot
U09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLU2hpcHBpbmdNZXRob2QpOwotCi0jaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMTAwMDApCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMzAwKQogU09GVF9MSU5LX0ZSQU1FV09S
SyhDb250YWN0cykKIFNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNz
U3RyZWV0S2V5LCBOU1N0cmluZyAqKTsKIFNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Q
b3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXksIE5TU3RyaW5nICopOwpAQCAtNjEsMzAgKzQ3LDkg
QEAgU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NTdGF0ZUtleSwg
TlNTdHJpbmcgKik7CiBTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVz
c1Bvc3RhbENvZGVLZXksIE5TU3RyaW5nICopOwogU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3Rz
LCBDTlBvc3RhbEFkZHJlc3NDb3VudHJ5S2V5LCBOU1N0cmluZyAqKTsKIFNPRlRfTElOS19DT05T
VEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzSVNPQ291bnRyeUNvZGVLZXksIE5TU3RyaW5n
ICopOwotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1
bHQpCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRo
b2RVcGRhdGUpCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50UmVxdWVzdFNoaXBw
aW5nQ29udGFjdFVwZGF0ZSkKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRSZXF1
ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUpCi1TT0ZUX0xJTktfQ09OU1RBTlQoUGFzc0tpdCwgUEtQ
YXltZW50RXJyb3JEb21haW4sIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NL
aXQsIFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcywgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktf
Q09OU1RBTlQoUGFzc0tpdCwgUEtDb250YWN0RmllbGRFbWFpbEFkZHJlc3MsIE5TU3RyaW5nICop
OwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmVOdW1iZXIs
IE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLQ29udGFjdEZpZWxk
TmFtZSwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoUGFzc0tpdCwgUEtDb250YWN0
RmllbGRQaG9uZXRpY05hbWUsIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NL
aXQsIFBLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNlckluZm9LZXksIE5TU3RyaW5nICopOwot
U09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLUGF5bWVudEVycm9yUG9zdGFsQWRkcmVzc1Vz
ZXJJbmZvS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChQQUw6OlBhc3NLaXQs
IFBLUGF5bWVudEVycm9yRG9tYWluLCBOU1N0cmluZyAqKTsKICNlbmRpZgogCi10eXBlZGVmIHZv
aWQgKF5QS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24pKEJPT0wgaXNWYWxpZCwgTlNFcnJvciAq
ZXJyb3IpOwotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQotZXh0ZXJuICJDIiB2b2lkIFBLQ2FuTWFr
ZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9u
KE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBOU1N0cmluZyAqc291cmNl
QXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBQS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRp
b24gY29tcGxldGlvbik7Ci1TT0ZUX0xJTktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX1NPVVJDRShX
ZWJLaXQsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRv
bWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uLCB2b2lkLCAoTlNTdHJpbmcgKmlkZW50aWZpZXIsIE5T
U3RyaW5nICpkb21haW4sIE5TU3RyaW5nICpzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXIsIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbiBjb21wbGV0aW9uKSwgKGlkZW50aWZp
ZXIsIGRvbWFpbiwgc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyLCBjb21wbGV0
aW9uKSk7Ci0jZWxzZQotZXh0ZXJuICJDIiB2b2lkIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNo
YW50SWRlbnRpZmllckFuZERvbWFpbihOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRv
bWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pOwotU09GVF9MSU5L
X0ZVTkNUSU9OX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViS2l0LCBQYXNzS2l0LCBQS0Nhbk1ha2VQ
YXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAq
aWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9u
IGNvbXBsZXRpb24pLCAoaWRlbnRpZmllciwgZG9tYWluLCBjb21wbGV0aW9uKSk7Ci0jZW5kaWYK
LQotCiBAaW1wbGVtZW50YXRpb24gV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKXdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5CkBAIC0xMDIsNyArNjcsNyBAQCAtICh2b2lkKWludmFsaWRhdGUKICAgICBfd2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkgPSBudWxscHRyOwogICAgIGlmIChfcGF5bWVudEF1dGhv
cml6ZWRDb21wbGV0aW9uKSB7CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCi0gICAgICAgIF9wYXlt
ZW50QXV0aG9yaXplZENvbXBsZXRpb24oYWRvcHROUyhbYWxsb2NQS1BheW1lbnRBdXRob3JpemF0
aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0aFN0YXR1czpQS1BheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzRmFpbHVyZSBlcnJvcnM6QFsgXV0pLmdldCgpKTsKKyAgICAgICAgX3BheW1lbnRBdXRo
b3JpemVkQ29tcGxldGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlv
blJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6UEtQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF1dKS5nZXQoKSk7CiAjZWxzZQogICAgICAgICBfcGF5bWVu
dEF1dGhvcml6ZWRDb21wbGV0aW9uKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJl
KTsKICNlbmRpZgpAQCAtMTE5LDcgKzg0LDcgQEAgLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIKICAg
ICBBU1NFUlQoIV9zZXNzaW9uQmxvY2spOwogICAgIF9zZXNzaW9uQmxvY2sgPSBzZXNzaW9uQmxv
Y2s7CiAKLSAgICBbZ2V0UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3Mo
KSBwYXltZW50U2VydmljZXNNZXJjaGFudFVSTDpeKE5TVVJMICptZXJjaGFudFVSTCwgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICBbUEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXJDbGFzcygpIHBheW1lbnRTZXJ2aWNlc01lcmNoYW50VVJMOl4oTlNVUkwg
Km1lcmNoYW50VVJMLCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBpZiAoZXJyb3IpCiAgICAg
ICAgICAgICBMT0dfRVJST1IoIlBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmll
ckFuZERvbWFpbiBlcnJvciAlQCIsIGVycm9yKTsKIApAQCAtMTU1LDcgKzEyMCw3IEBAIC0gKHZv
aWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyCiB7CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAgICAgaWYgKCFf
d2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihhZG9wdE5T
KFthbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRoU3Rh
dHVzOlBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIGVycm9yczpAWyBdXSkuZ2V0
KCkpOworICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRo
b3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0aFN0YXR1czpQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzRmFpbHVyZSBlcnJvcnM6QFsgXV0pLmdldCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTcwLDcgKzEzNSw3IEBAIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyCiB7
CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAgICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVl
c3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRl
bXM6QFsgXV0pLmdldCgpKTsKKyAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFtQQUw6OmFsbG9j
UEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5
bWVudFN1bW1hcnlJdGVtczpAWyBdXSkuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xODMsNyArMTQ4LDcgQEAgLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIKIC0gKHZvaWQpcGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RTaGlwcGluZ01ldGhvZDooUEtTaGlw
cGluZ01ldGhvZCAqKXNoaXBwaW5nTWV0aG9kIGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudFJl
cXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSAqdXBkYXRlKSljb21wbGV0aW9uIHsKICNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkg
fHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDExMDAwMCkKICAgICBpZiAoIV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewot
ICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW2FsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5n
TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0p
LmdldCgpKTsKKyAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50
UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1t
YXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTk3
LDcgKzE2Miw3IEBAIC0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjoo
UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyCiB7CiAjaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MTAwMDApCiAgICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAg
Y29tcGxldGlvbihhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RV
cGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoRXJyb3JzOkBbIF0gcGF5bWVudFN1bW1hcnlJdGVtczpA
WyBdIHNoaXBwaW5nTWV0aG9kczpAWyBdXSkuZ2V0KCkpOworICAgICAgICBjb21wbGV0aW9uKGFk
b3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5z
dGFuY2UoKSBpbml0V2l0aEVycm9yczpAWyBdIHBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXSBzaGlw
cGluZ01ldGhvZHM6QFsgXV0pLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MjkzLDMyICsyNTgsMTMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzKCkKIHsKLSNpZiBQTEFURk9S
TShNQUMpCi0gICAgaWYgKCFQYXNzS2l0TGlicmFyeSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0jZW5kaWYKLQotICAgIHJldHVybiBbZ2V0UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyQ2xhc3MoKSBjYW5NYWtlUGF5bWVudHNdOworICAgIHJldHVybiBbUEFMOjpnZXRfUGFz
c0tpdF9QS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJDbGFzcygpIGNhbk1ha2VQ
YXltZW50c107CiB9CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3Jt
Q2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFQ
YXNzS2l0TGlicmFyeSgpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCi0g
ICAgaWYgKCFjYW5Mb2FkX1Bhc3NLaXRfUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVu
dGlmaWVyRG9tYWluQW5kU291cmNlQXBwbGljYXRpb24oKSkgewotICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICAgICAg
fSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzb2Z0TGlua19QYXNzS2l0X1BLQ2Fu
TWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0
aW9uKG1lcmNoYW50SWRlbnRpZmllciwgZG9tYWluTmFtZSwgbV93ZWJQYWdlUHJveHkucHJvY2Vz
cygpLnByb2Nlc3NQb29sKCkuY29uZmlndXJhdGlvbigpLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25k
YXJ5SWRlbnRpZmllcigpLCBCbG9ja1B0cjx2b2lkIChCT09MLCBOU0Vycm9yICopPjo6ZnJvbUNh
bGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShC
T09MIGNhbk1ha2VQYXltZW50cywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgIFBLQ2Fu
TWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0
aW9uKG1lcmNoYW50SWRlbnRpZmllciwgZG9tYWluTmFtZSwgbV93ZWJQYWdlUHJveHkucHJvY2Vz
cygpLnByb2Nlc3NQb29sKCkuY29uZmlndXJhdGlvbigpLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25k
YXJ5SWRlbnRpZmllcigpLCBCbG9ja1B0cjx2b2lkKEJPT0wsIE5TRXJyb3IgKik+Ojpmcm9tQ2Fs
bGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJP
T0wgY2FuTWFrZVBheW1lbnRzLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlm
IChlcnJvcikKICAgICAgICAgICAgIExPR19FUlJPUigiUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVy
Y2hhbnRJZGVudGlmaWVyQW5kRG9tYWluIGVycm9yICVAIiwgZXJyb3IpOwogCkBAIC0zMjcsMTQg
KzI3Myw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ2FuTWFr
ZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyCiAgICAgICAgIH0pOwogICAgIH0pLmdl
dCgpKTsKICNlbHNlCi0gICAgaWYgKCFjYW5Mb2FkX1Bhc3NLaXRfUEtDYW5NYWtlUGF5bWVudHNX
aXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWluKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIH0p
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc29mdExpbmtfUGFzc0tpdF9QS0Nhbk1h
a2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4obWVyY2hhbnRJZGVudGlm
aWVyLCBkb21haW5OYW1lLCBCbG9ja1B0cjx2b2lkIChCT09MLCBOU0Vycm9yICopPjo6ZnJvbUNh
bGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShC
T09MIGNhbk1ha2VQYXltZW50cywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgIFBLQ2Fu
TWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbihtZXJjaGFudElkZW50
aWZpZXIsIGRvbWFpbk5hbWUsIEJsb2NrUHRyPHZvaWQoQk9PTCwgTlNFcnJvciAqKT46OmZyb21D
YWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
Qk9PTCBjYW5NYWtlUGF5bWVudHMsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKGVycm9yKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJQS0Nhbk1ha2VQYXltZW50c1dpdGhN
ZXJjaGFudElkZW50aWZpZXJBbmREb21haW4gZXJyb3IgJUAiLCBlcnJvcik7CiAKQEAgLTM0Nywx
NCArMjg2LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5N
YWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHIKIAogdm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6cGxhdGZvcm1PcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVy
Y2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248
dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQot
ICAgIGlmICghUGFzc0tpdExpYnJhcnkoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGF1dG8gcGFzc0xp
YnJhcnkgPSBhZG9wdE5TKFthbGxvY1BLUGFzc0xpYnJhcnlJbnN0YW5jZSgpIGluaXRdKTsKKyAg
ICBhdXRvIHBhc3NMaWJyYXJ5ID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGFzc0xpYnJhcnlJbnN0
YW5jZSgpIGluaXRdKTsKICAgICBbcGFzc0xpYnJhcnkgb3BlblBheW1lbnRTZXR1cEZvck1lcmNo
YW50SWRlbnRpZmllcjptZXJjaGFudElkZW50aWZpZXIgZG9tYWluOmRvbWFpbk5hbWUgY29tcGxl
dGlvbjpCbG9ja1B0cjx2b2lkIChCT09MKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQk9PTCByZXN1bHQpIG11dGFibGUgewog
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc3VsdF0gewogICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIocmVzdWx0KTsKQEAgLTM2OCwxNSArMzAwLDE1IEBAIHN0YXRpYyBSZXRhaW5QdHI8
TlNTZXQ+IHRvUEtDb250YWN0RmllbGRzKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSCiAgICAgVmVjdG9yPE5TU3RyaW5nICo+IHJlc3VsdDsKIAogICAgIGlmIChjb250YWN0
RmllbGRzLnBvc3RhbEFkZHJlc3MpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0UEtDb250YWN0
RmllbGRQb3N0YWxBZGRyZXNzKCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKFBBTDo6Z2V0X1Bh
c3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCkpOwogICAgIGlmIChjb250YWN0Rmll
bGRzLnBob25lKQotICAgICAgICByZXN1bHQuYXBwZW5kKGdldFBLQ29udGFjdEZpZWxkUGhvbmVO
dW1iZXIoKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRh
Y3RGaWVsZFBob25lTnVtYmVyKCkpOwogICAgIGlmIChjb250YWN0RmllbGRzLmVtYWlsKQotICAg
ICAgICByZXN1bHQuYXBwZW5kKGdldFBLQ29udGFjdEZpZWxkRW1haWxBZGRyZXNzKCkpOworICAg
ICAgICByZXN1bHQuYXBwZW5kKFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRFbWFpbEFk
ZHJlc3MoKSk7CiAgICAgaWYgKGNvbnRhY3RGaWVsZHMubmFtZSkKLSAgICAgICAgcmVzdWx0LmFw
cGVuZChnZXRQS0NvbnRhY3RGaWVsZE5hbWUoKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoUEFM
OjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZE5hbWUoKSk7CiAgICAgaWYgKGNvbnRhY3RGaWVs
ZHMucGhvbmV0aWNOYW1lKQotICAgICAgICByZXN1bHQuYXBwZW5kKGdldFBLQ29udGFjdEZpZWxk
UGhvbmV0aWNOYW1lKCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKFBBTDo6Z2V0X1Bhc3NLaXRf
UEtDb250YWN0RmllbGRQaG9uZXRpY05hbWUoKSk7CiAKICAgICByZXR1cm4gYWRvcHROUyhbW05T
U2V0IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6cmVzdWx0LmRhdGEoKSBjb3VudDpyZXN1bHQuc2l6
ZSgpXSk7CiB9CkBAIC00MTgsNyArMzUwLDcgQEAgc3RhdGljIE5TRGVjaW1hbE51bWJlciAqdG9E
ZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQogCiBzdGF0aWMgUmV0YWluUHRyPFBL
UGF5bWVudFN1bW1hcnlJdGVtPiB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYgbGluZUl0ZW0pCiB7Ci0g
ICAgcmV0dXJuIFtnZXRQS1BheW1lbnRTdW1tYXJ5SXRlbUNsYXNzKCkgc3VtbWFyeUl0ZW1XaXRo
TGFiZWw6bGluZUl0ZW0ubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihsaW5lSXRlbS5hbW91
bnQpIHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUobGluZUl0ZW0udHlwZSldOworICAg
IHJldHVybiBbUEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRTdW1tYXJ5SXRlbUNsYXNzKCkgc3Vt
bWFyeUl0ZW1XaXRoTGFiZWw6bGluZUl0ZW0ubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihs
aW5lSXRlbS5hbW91bnQpIHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUobGluZUl0ZW0u
dHlwZSldOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHRvUEtQYXltZW50U3VtbWFy
eUl0ZW1zKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3Rh
bEFuZExpbmVJdGVtcyYgdG90YWxBbmRMaW5lSXRlbXMpCkBAIC00NzcsNyArNDA5LDcgQEAgc3Rh
dGljIFBLU2hpcHBpbmdUeXBlIHRvUEtTaGlwcGluZ1R5cGUoV2ViQ29yZTo6QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3Q6OlMKIAogc3RhdGljIFJldGFpblB0cjxQS1NoaXBwaW5nTWV0aG9k
PiB0b1BLU2hpcHBpbmdNZXRob2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kJiBzaGlwcGluZ01ldGhvZCkKIHsKLSAgICBSZXRhaW5Q
dHI8UEtTaGlwcGluZ01ldGhvZD4gcmVzdWx0ID0gW2dldFBLU2hpcHBpbmdNZXRob2RDbGFzcygp
IHN1bW1hcnlJdGVtV2l0aExhYmVsOnNoaXBwaW5nTWV0aG9kLmxhYmVsIGFtb3VudDp0b0RlY2lt
YWxOdW1iZXIoc2hpcHBpbmdNZXRob2QuYW1vdW50KV07CisgICAgUmV0YWluUHRyPFBLU2hpcHBp
bmdNZXRob2Q+IHJlc3VsdCA9IFtQQUw6OmdldF9QYXNzS2l0X1BLU2hpcHBpbmdNZXRob2RDbGFz
cygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOnNoaXBwaW5nTWV0aG9kLmxhYmVsIGFtb3VudDp0b0Rl
Y2ltYWxOdW1iZXIoc2hpcHBpbmdNZXRob2QuYW1vdW50KV07CiAgICAgW3Jlc3VsdCBzZXRJZGVu
dGlmaWVyOnNoaXBwaW5nTWV0aG9kLmlkZW50aWZpZXJdOwogICAgIFtyZXN1bHQgc2V0RGV0YWls
OnNoaXBwaW5nTWV0aG9kLmRldGFpbF07CiAKQEAgLTUxMiw3ICs0NDQsNyBAQCBzdGF0aWMgUEtQ
YXltZW50UmVxdWVzdEFQSVR5cGUgdG9BUElUeXBlKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0OgogCiBSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4gdG9QS1BheW1lbnRS
ZXF1ZXN0KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBjb25zdCBXZWJDb3JlOjpVUkwmIG9y
aWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5bWVudFJlcXVl
c3QpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RJ
bnN0YW5jZSgpIGluaXRdKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQ
S1BheW1lbnRSZXF1ZXN0SW5zdGFuY2UoKSBpbml0XSk7CiAKICAgICBbcmVzdWx0IHNldE9yaWdp
bmF0aW5nVVJMOm9yaWdpbmF0aW5nVVJMXTsKIApAQCAtNjMyLDY5ICs1NjQsNjkgQEAgc3RhdGlj
IFJldGFpblB0cjxOU0Vycm9yPiB0b05TRXJyb3IoY29uc3QgV2ViQ29yZTo6UGF5bWVudEVycm9y
JiBlcnJvcikKIAogICAgICAgICBzd2l0Y2ggKCplcnJvci5jb250YWN0RmllbGQpIHsKICAgICAg
ICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmVOdW1iZXI6
Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxkUGhvbmVOdW1i
ZXIoKTsKKyAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0Nv
bnRhY3RGaWVsZFBob25lTnVtYmVyKCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj
YXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpFbWFpbEFkZHJlc3M6Ci0g
ICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxkRW1haWxBZGRyZXNz
KCk7CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250
YWN0RmllbGRFbWFpbEFkZHJlc3MoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6Ok5hbWU6Ci0gICAgICAgICAg
ICBwa0NvbnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxkTmFtZSgpOworICAgICAgICAgICAg
cGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkTmFtZSgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6
OkNvbnRhY3RGaWVsZDo6UGhvbmV0aWNOYW1lOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQg
PSBnZXRQS0NvbnRhY3RGaWVsZFBob25ldGljTmFtZSgpOworICAgICAgICAgICAgcGtDb250YWN0
RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lKCk7CiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6
Q29udGFjdEZpZWxkOjpQb3N0YWxBZGRyZXNzOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQg
PSBnZXRQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKKyAgICAgICAgICAgIHBrQ29udGFj
dEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsK
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9y
OjpDb250YWN0RmllbGQ6OkFkZHJlc3NMaW5lczoKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxk
ID0gZ2V0UEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CisgICAgICAgICAgICBwa0NvbnRh
Y3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7
CiAgICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3RyZWV0
S2V5KCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1l
bnRFcnJvcjo6Q29udGFjdEZpZWxkOjpTdWJMb2NhbGl0eToKLSAgICAgICAgICAgIHBrQ29udGFj
dEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CisgICAgICAgICAgICBw
a0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRy
ZXNzKCk7CiAgICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNz
U3ViTG9jYWxpdHlLZXkoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgV2Vi
Q29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkxvY2FsaXR5OgotICAgICAgICAgICAg
cGtDb250YWN0RmllbGQgPSBnZXRQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKKyAgICAg
ICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBv
c3RhbEFkZHJlc3MoKTsKICAgICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3Rh
bEFkZHJlc3NDaXR5S2V5KCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdl
YkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQb3N0YWxDb2RlOgotICAgICAgICAg
ICAgcGtDb250YWN0RmllbGQgPSBnZXRQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKKyAg
ICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVs
ZFBvc3RhbEFkZHJlc3MoKTsKICAgICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBv
c3RhbEFkZHJlc3NQb3N0YWxDb2RlS2V5KCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpTdWJBZG1pbmlzdHJh
dGl2ZUFyZWE6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxk
UG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9Q
YXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwogICAgICAgICAgICAgcG9zdGFs
QWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N1YkFkbWluaXN0cmF0aXZlQXJlYUtleSgp
OwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJy
b3I6OkNvbnRhY3RGaWVsZDo6QWRtaW5pc3RyYXRpdmVBcmVhOgotICAgICAgICAgICAgcGtDb250
YWN0RmllbGQgPSBnZXRQS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKKyAgICAgICAgICAg
IHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFk
ZHJlc3MoKTsKICAgICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJl
c3NTdGF0ZUtleSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBXZWJDb3Jl
OjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6Q291bnRyeToKLSAgICAgICAgICAgIHBrQ29u
dGFjdEZpZWxkID0gZ2V0UEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CisgICAgICAgICAg
ICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxB
ZGRyZXNzKCk7CiAgICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRy
ZXNzQ291bnRyeUtleSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBXZWJD
b3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6Q291bnRyeUNvZGU6Ci0gICAgICAgICAg
ICBwa0NvbnRhY3RGaWVsZCA9IGdldFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAg
ICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxk
UG9zdGFsQWRkcmVzcygpOwogICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9z
dGFsQWRkcmVzc0lTT0NvdW50cnlDb2RlS2V5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCi0gICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6cGtDb250YWN0RmllbGQgZm9yS2V5
OmdldFBLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNlckluZm9LZXkoKV07CisgICAgICAgIFt1
c2VySW5mbyBzZXRPYmplY3Q6cGtDb250YWN0RmllbGQgZm9yS2V5OlBBTDo6Z2V0X1Bhc3NLaXRf
UEtQYXltZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5mb0tleSgpXTsKICAgICAgICAgaWYgKHBv
c3RhbEFkZHJlc3NLZXkpCi0gICAgICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OnBvc3RhbEFk
ZHJlc3NLZXkgZm9yS2V5OmdldFBLUGF5bWVudEVycm9yUG9zdGFsQWRkcmVzc1VzZXJJbmZvS2V5
KCldOworICAgICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpwb3N0YWxBZGRyZXNzS2V5IGZv
cktleTpQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudEVycm9yUG9zdGFsQWRkcmVzc1VzZXJJbmZv
S2V5KCldOwogICAgIH0KIAogICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5p
dFdpdGhEb21haW46Z2V0UEtQYXltZW50RXJyb3JEb21haW4oKSBjb2RlOnRvUEtQYXltZW50RXJy
b3JDb2RlKGVycm9yLmNvZGUpIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXSk7CkBAIC03NjEsNyAr
NjkzLDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0
ZVBheW1lbnRTZXNzaW9uKGNvbnN0IHN0ZDo6b3B0aW8KIAogI2lmIChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAw
KQogICAgIGF1dG8gc3RhdHVzID0gcmVzdWx0ID8gcmVzdWx0LT5zdGF0dXMgOiBXZWJDb3JlOjpQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6U3VjY2VzczsKLSAgICBhdXRvIHBrUGF5bWVudEF1
dGhvcml6YXRpb25SZXN1bHQgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25S
ZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOnRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1cyhzdGF0dXMpIGVycm9yczpyZXN1bHQgPyB0b05TRXJyb3JzKHJlc3VsdC0+ZXJyb3JzKS5n
ZXQoKSA6IEBbIF1dKTsKKyAgICBhdXRvIHBrUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgPSBh
ZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkg
aW5pdFdpdGhTdGF0dXM6dG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHN0YXR1cykgZXJy
b3JzOnJlc3VsdCA/IHRvTlNFcnJvcnMocmVzdWx0LT5lcnJvcnMpLmdldCgpIDogQFsgXV0pOwog
ICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVu
dEF1dGhvcml6ZWRDb21wbGV0aW9uKHBrUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQuZ2V0KCkp
OwogI2Vsc2UKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZS0+X3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbih0b1BLUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXMocmVzdWx0KSk7CkBAIC03ODcsNyArNzE5LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0
IHMKICAgICAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUt
Pl9wYXltZW50U3VtbWFyeUl0ZW1zID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXModXBkYXRlLT5u
ZXdUb3RhbEFuZExpbmVJdGVtcyk7CiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKLSAgICBhdXRv
IHBrU2hpcHBpbmdNZXRob2RVcGRhdGUgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RT
aGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1z
Om1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1
bW1hcnlJdGVtcy5nZXQoKV0pOworICAgIGF1dG8gcGtTaGlwcGluZ01ldGhvZFVwZGF0ZSA9IGFk
b3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGVJbnN0
YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczptX3BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCldKTsKICAg
ICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVj
dFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbihwa1NoaXBwaW5nTWV0aG9kVXBkYXRlLmdldCgpKTsK
ICNlbHNlCiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUt
Pl9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24oUEtQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1c1N1Y2Nlc3MsIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSk7CkBAIC04MzksNyArNzcxLDcgQEAgdm9p
ZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29u
dGFjdFNlbGVjdGlvbihjb25zdAogICAgIH0KIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQotICAg
IGF1dG8gcGtTaGlwcGluZ0NvbnRhY3RVcGRhdGUgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJl
cXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoRXJyb3JzOnVwZGF0
ZSA/IHRvTlNFcnJvcnModXBkYXRlLT5lcnJvcnMpLmdldCgpIDogQFsgXSBwYXltZW50U3VtbWFy
eUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5
bWVudFN1bW1hcnlJdGVtcy5nZXQoKSBzaGlwcGluZ01ldGhvZHM6bV9wYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMuZ2V0KCldKTsKKyAg
ICBhdXRvIHBrU2hpcHBpbmdDb250YWN0VXBkYXRlID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5
bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoRXJyb3Jz
OnVwZGF0ZSA/IHRvTlNFcnJvcnModXBkYXRlLT5lcnJvcnMpLmdldCgpIDogQFsgXSBwYXltZW50
U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRl
LT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSBzaGlwcGluZ01ldGhvZHM6bV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMuZ2V0KCld
KTsKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2Rp
ZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24ocGtTaGlwcGluZ0NvbnRhY3RVcGRhdGUu
Z2V0KCkpOwogI2Vsc2UKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24odG9QS1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzKHVwZGF0ZSksIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzLmdldCgpLCBtX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkp
OwpAQCAtODU2LDcgKzc4OCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBs
YXRmb3JtQ29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKGNvbnN0IHN0CiAgICAgICAgIG1f
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1h
cnlJdGVtcyA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5l
SXRlbXMpOwogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCi0gICAgYXV0byBwa1BheW1lbnRNZXRo
b2RVcGRhdGUgPSBhZG9wdE5TKFthbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBk
YXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6bV9wYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgp
XSk7CisgICAgYXV0byBwa1BheW1lbnRNZXRob2RVcGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9j
UEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5
bWVudFN1bW1hcnlJdGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCldKTsKICAgICBtX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21w
bGV0aW9uKHBrUGF5bWVudE1ldGhvZFVwZGF0ZS5nZXQoKSk7CiAjZWxzZQogICAgIG1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0UGF5bWVudE1l
dGhvZENvbXBsZXRpb24obV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdh
dGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpKTsKQEAgLTg2NiwxMiArNzk4LDcgQEAgdm9p
ZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRNZXRo
b2RTZWxlY3Rpb24oY29uc3Qgc3QKIAogVmVjdG9yPFN0cmluZz4gV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnBsYXRmb3JtQXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzKCkKIHsKLSNpZiBQTEFU
Rk9STShNQUMpCi0gICAgaWYgKCFQYXNzS2l0TGlicmFyeSgpKQotICAgICAgICByZXR1cm4geyB9
OwotI2VuZGlmCi0gICAgCi0gICAgTlNBcnJheTxQS1BheW1lbnROZXR3b3JrPiAqYXZhaWxhYmxl
TmV0d29ya3MgPSBbZ2V0UEtQYXltZW50UmVxdWVzdENsYXNzKCkgYXZhaWxhYmxlTmV0d29ya3Nd
OworICAgIE5TQXJyYXk8UEtQYXltZW50TmV0d29yaz4gKmF2YWlsYWJsZU5ldHdvcmtzID0gW1BB
TDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50UmVxdWVzdENsYXNzKCkgYXZhaWxhYmxlTmV0d29ya3Nd
OwogICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShhdmFpbGFibGVOZXR3b3Jrcy5jb3VudCk7CiAgICAgZm9yIChQS1BheW1lbnROZXR3
b3JrIG5ldHdvcmsgaW4gYXZhaWxhYmxlTmV0d29ya3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlJT1MubW0KaW5kZXggYzBkZjNjODlkYjRjZjQxNzQ5OGFjMjY4ZTk5ZTExNWJh
NDA1ZDc2Mi4uZjllMjgwZDFjOTU2YTZkOGRlNzI1NDFmZmYwOTdmNThjZGVhYTg2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5
L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAtMzQsMTAgKzM0LDcgQEAK
ICNpbXBvcnQgPFBhc3NLaXQvUGFzc0tpdC5oPgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Q29udHJv
bGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgot
I2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tp
dCkKLVNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXIpOworI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIApAQCAtNTQsNyArNTEsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmln
aQogCiAgICAgYXV0byBwYXltZW50UmVxdWVzdCA9IHRvUEtQYXltZW50UmVxdWVzdChtX3dlYlBh
Z2VQcm94eSwgb3JpZ2luYXRpbmdVUkwsIGxpbmtJY29uVVJMU3RyaW5ncywgcmVxdWVzdCk7CiAK
LSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxv
Y1BLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdFdpdGhQ
YXltZW50UmVxdWVzdDpwYXltZW50UmVxdWVzdC5nZXQoKV0pOworICAgIG1fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFJlcXVlc3Q6
cGF5bWVudFJlcXVlc3QuZ2V0KCldKTsKICAgICBpZiAoIW1fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlcikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5
L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQppbmRl
eCA3NDE1OTM4M2YxOTU0MjdkYjk3NjBhOGMwMWVjNzA2N2E2N2M2Zjk1Li4yZTk5Y2IxNDc3MjM3
NWE0ZTg3YzI5ZjU3MmFmZTk3NWNmYTE4NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5TWFjLm1tCkBAIC0zMCwyOSArMzAsMTggQEAKIAogI2ltcG9ydCAiV2ViUGFnZVBy
b3h5LmgiCiAjaW1wb3J0ICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgiCi0jaW1w
b3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNz
S2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgotI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+Ci0KLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChQYXNz
S2l0KQotCi1TT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyKTsKLVNPRlRfTElOS19DT05TVEFOVChQYXNzS2l0LCBQS0V4dGVuc2lvblBh
eW1lbnRBdXRob3JpemF0aW9uVUlFeHRlbnNpb25Qb2ludE5hbWUsIE5TU3RyaW5nICopOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNv
cmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmICghUGFzc0tpdExp
YnJhcnkoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KICAgICBhdXRvIHBheW1lbnRSZXF1ZXN0ID0gdG9QS1BheW1lbnRSZXF1
ZXN0KG1fd2ViUGFnZVByb3h5LCBvcmlnaW5hdGluZ1VSTCwgbGlua0ljb25VUkxTdHJpbmdzLCBy
ZXF1ZXN0KTsKIAogICAgIGF1dG8gc2hvd1BheW1lbnRVSVJlcXVlc3RTZWVkID0gbV9zaG93UGF5
bWVudFVJUmVxdWVzdFNlZWQ7CiAgICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KTsKLSAgICBbZ2V0UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSBy
ZXF1ZXN0Vmlld0NvbnRyb2xsZXJXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3QuZ2V0
KCkgY29tcGxldGlvbjpCbG9ja1B0cjx2b2lkIChQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXIgKiwgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShbcGF5bWVudFJlcXVlc3QsIHNo
b3dQYXltZW50VUlSZXF1ZXN0U2VlZCwgd2Vha1RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlciAqdmlld0NvbnRyb2xsZXIsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgW1BBTDo6Z2V0X1Bh
c3NLaXRfUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSByZXF1ZXN0
Vmlld0NvbnRyb2xsZXJXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3QuZ2V0KCkgY29t
cGxldGlvbjpCbG9ja1B0cjx2b2lkKFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ciAqLCBOU0Vycm9yICopPjo6ZnJvbUNhbGxhYmxlKFtwYXltZW50UmVxdWVzdCwgc2hvd1BheW1l
bnRVSVJlcXVlc3RTZWVkLCB3ZWFrVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICp2
aWV3Q29udHJvbGxlciwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgYXV0byBwYXltZW50Q29v
cmRpbmF0b3JQcm94eSA9IHdlYWtUaGlzLmdldCgpOwogICAgICAgICBpZiAoIXBheW1lbnRDb29y
ZGluYXRvclByb3h5KQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4
IDgzZmZlZDM0NWQyNjE2YTkxYzBhZTdiMzY4MzVlZmM4YjM5NGRkOTcuLjAzNzViODNiMmE3ZjUz
YzYxYTlmZGM0NjhlYjFiNmFkNWFkMTcyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2ltcG9ydCAiU2FmZUJyb3dzaW5nU1BJLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L0xvY2FsaXplZFN0cmluZ3MuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVk
U3RyaW5nU1BJLmg+CiAjaW1wb3J0IDx3dGYvTGFuZ3VhZ2UuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1By
b3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQcm94eU1h
Yy5tbQppbmRleCA0OTA0ZTI2OGJjZmIzZmJkNmQ5MzZiNTgwODJkNDBmMDJmZDBhZjZmLi44Mzll
YTY4MjliMzNlYjdlYjA3ZWM5M2Q2NDdiNzllZmMzOTdiYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW0KQEAgLTMwLDYgKzMwLDcg
QEAKICNpZiBQTEFURk9STShNQUMpCiAKICNpbXBvcnQgIldLRnVsbEtleWJvYXJkQWNjZXNzV2F0
Y2hlci5oIgorI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KIAogI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwCiAjaW1wb3J0IDxLZXJuZWwva2Vybi9j
c19ibG9icy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYTllNWQwNzExMGFjZDNlMjA0MTRhOTFmZTA5YzVkZGRlMjAyMWFkOC4uZjQ0
NDFmZDljN2UzM2VhYWVkZDI4ZmY3ZTY2ZjA1ODhhNjVkYjMyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02ODYsOCArNjg2LDYgQEAK
IAkJMkQ5MkE3OTUyMTJCNkFENDAwRjQ5M0ZEIC8qIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUEyRDkwRDExMjgxQzk2NjAwMUVCOTYyIC8qIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwICovOyB9OwogCQkyRDkyQTc5NjIxMkI2QURBMDBGNDkzRkQgLyogTmV0c2NhcGVQbHVn
aW5Nb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUE0QTlDNTMxMkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCAq
LzsgfTsKIAkJMkQ5MkE3OTcyMTJCNkFEQTAwRjQ5M0ZEIC8qIFBsdWdpbkluZm9ybWF0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0Y4QzhF
MTczQUY1MkQwMDdCN0YzOSAvKiBQbHVnaW5JbmZvcm1hdGlvbi5jcHAgKi87IH07Ci0JCTJEOTJB
Nzk4MjEzNDhEODUwMEY0OTNGRCAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFGNzdEMUQx
QjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbSAqLzsgfTsK
LQkJMkQ5MkE3OUYyMTM0QjA3RTAwRjQ5M0ZEIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFC
MUY3N0IxRDFCMzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1t
ICovOyB9OwogCQkyRDkzMTE2OTIxMkY2MUIyMDAwNDRCRkUgLyogV0tDb250ZW50Vmlldy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0I0RTNEMThC
QkUwNDQwMDBGQ0ZDOSAvKiBXS0NvbnRlbnRWaWV3Lm1tICovOyB9OwogCQkyRDkzMTE2QTIxMkY2
MUI1MDAwNDRCRkUgLyogV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDQjRFNkIxOEJCRjI2QTAwMEZDRkM5
IC8qIFdLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSAqLzsgfTsKIAkJMkQ5RUEzMEQxQTk2Q0I1
OTAwMkQyODA3IC8qIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDlFQTMwQzFBOTZDQjU5MDAyRDI4MDcg
LyogV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTEwMTAsOCArMTEwMDgsNiBAQAogCQkJCTdDRTlD
RTEwMUZBMDc2N0EwMDAxNzdERSAvKiBXZWJQYWdlVXBkYXRlUHJlZmVyZW5jZXMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0M0Njk0QzkxQTRCNEVBMTAwQUQ1ODQ1IC8qIFdlYlBhc3RlYm9hcmRQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUIxRjc5NjFEMUIz
NjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTJEOTJBNzlGMjEzNEIwN0UwMEY0OTNGRCAvKiBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eUlPUy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTJEOTJBNzk4MjEzNDhE
ODUwMEY0OTNGRCAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBQjFGNzk4MUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4RDIx
MkI2QUIxMDBGNDkzRkQgLyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJEOTEzNDRFMjEyQ0Y5RjAwMDEyOEFGRCAvKiBXZWJQbHVnaW5JbmZvUHJvdmlkZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>