<?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>124534</bug_id>
          
          <creation_ts>2013-11-18 13:01:44 -0800</creation_ts>
          <short_desc>[GStreamer] Remove 0.10 codepath</short_desc>
          <delta_ts>2013-11-25 09:25:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>124654</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Xabier Rodríguez Calvar">calvaris</reporter>
          <assigned_to name="Xabier Rodríguez Calvar">calvaris</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>peavo</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>951763</commentid>
    <comment_count>0</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-11-18 13:01:44 -0800</bug_when>
    <thetext>[GStreamer] Remove 0.10 codepath</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951865</commentid>
    <comment_count>1</comment_count>
      <attachid>217247</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-11-18 16:30:16 -0800</bug_when>
    <thetext>Created attachment 217247
Patch

Removed the GStreamer 0.10 path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951873</commentid>
    <comment_count>2</comment_count>
      <attachid>217247</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-18 16:37:14 -0800</bug_when>
    <thetext>Comment on attachment 217247
Patch

Attachment 217247 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/28618017</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951885</commentid>
    <comment_count>3</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-11-18 17:02:34 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 217247 [details])
&gt; Attachment 217247 [details] did not pass efl-ews (efl):
&gt; Output: http://webkit-queues.appspot.com/results/28618017

Please remove FullscreenVideoControllerEfl.cpp from Source/WebKit/PlatformEfl.cmake as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951898</commentid>
    <comment_count>4</comment_count>
      <attachid>217247</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-11-18 17:18:23 -0800</bug_when>
    <thetext>Comment on attachment 217247
Patch

This patch makes me happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951981</commentid>
    <comment_count>5</comment_count>
      <attachid>217247</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-11-18 23:15:15 -0800</bug_when>
    <thetext>Comment on attachment 217247
Patch

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

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:40
&gt;  static const char* gDecodebinName = &quot;decodebin&quot;;

This doesn&apos;t need to be a static global anymore

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerVersioning.cpp:34
&gt;      gst_object_ref_sink(gstObject);

For functions that are now a single line implementation I&apos;m not sure it&apos;s worth to keep them, what do you think?

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerVersioning.cpp:62
&gt;      return adoptGRef(gst_pipeline_get_bus(pipeline));

Same question :)

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:-982
&gt; -        if (!priv-&gt;haveAppSrc27) {

That member can be removed too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952067</commentid>
    <comment_count>6</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-11-19 08:01:47 -0800</bug_when>
    <thetext>Please also remove GST_API_VERSION_1 from the EFL cmake stuff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952071</commentid>
    <comment_count>7</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-11-19 08:18:24 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 217247 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=217247&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:40
&gt; &gt;  static const char* gDecodebinName = &quot;decodebin&quot;;

Missed it.

&gt; This doesn&apos;t need to be a static global anymore
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/GStreamerVersioning.cpp:34
&gt; &gt;      gst_object_ref_sink(gstObject);
&gt; 
&gt; For functions that are now a single line implementation I&apos;m not sure it&apos;s worth to keep them, what do you think?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/GStreamerVersioning.cpp:62
&gt; &gt;      return adoptGRef(gst_pipeline_get_bus(pipeline));
&gt; 
&gt; Same question :)

Actually I was thinking if the whole versioning still made sense, but I think there&apos;s still some stuff. I&apos;ll have a deeper look anyway and I agree on fixing these one liners.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:-982
&gt; &gt; -        if (!priv-&gt;haveAppSrc27) {
&gt; 
&gt; That member can be removed too

Roger.

(In reply to comment #3)
&gt; Please remove FullscreenVideoControllerEfl.cpp from Source/WebKit/PlatformEfl.cmake as well.

Roger.

(In reply to comment #6)
&gt; Please also remove GST_API_VERSION_1 from the EFL cmake stuff

Roger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953358</commentid>
    <comment_count>8</comment_count>
      <attachid>217632</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-11-21 17:11:49 -0800</bug_when>
    <thetext>Created attachment 217632
Patch

Honored comments and removed versioning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953370</commentid>
    <comment_count>9</comment_count>
      <attachid>217635</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-11-21 17:32:13 -0800</bug_when>
    <thetext>Created attachment 217635
Patch

Honored comments and removed versioning. Fixed a typo in ver project filters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953455</commentid>
    <comment_count>10</comment_count>
      <attachid>217635</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-11-21 23:40:39 -0800</bug_when>
    <thetext>Comment on attachment 217635
Patch

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

Looks nice! Just a small comment/question

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.h:74
&gt; +void mapGstBuffer(GstBuffer*);
&gt; +void unmapGstBuffer(GstBuffer*);
&gt; +
&gt;  namespace WebCore {
&gt;  bool initializeGStreamer();
&gt;  }

I wonder why the moved functions aren&apos;t in the WebCore namespace like the initializeGStreamer function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953472</commentid>
    <comment_count>11</comment_count>
      <attachid>217635</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-11-22 00:50:34 -0800</bug_when>
    <thetext>Comment on attachment 217635
Patch

(In reply to comment #10)
Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.h:74
&gt; &gt; +void mapGstBuffer(GstBuffer*);
&gt; &gt; +void unmapGstBuffer(GstBuffer*);
&gt; &gt; +
&gt; &gt;  namespace WebCore {
&gt; &gt;  bool initializeGStreamer();
&gt; &gt;  }
&gt; 
&gt; I wonder why the moved functions aren&apos;t in the WebCore namespace like the initializeGStreamer function.

Cause they weren&apos;t before. Do you prefer them inside?

Btw, I spotted a little problem with the IntSize class, which is now included in the .h instead of forwarded. I&apos;ll upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953476</commentid>
    <comment_count>12</comment_count>
      <attachid>217658</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-11-22 00:59:34 -0800</bug_when>
    <thetext>Created attachment 217658
Patch

Moved IntSize.h include and forwarded declaration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953485</commentid>
    <comment_count>13</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-11-22 02:08:54 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 217635 [details])
&gt; (In reply to comment #10)
&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.h:74
&gt; &gt; &gt; +void mapGstBuffer(GstBuffer*);
&gt; &gt; &gt; +void unmapGstBuffer(GstBuffer*);
&gt; &gt; &gt; +
&gt; &gt; &gt;  namespace WebCore {
&gt; &gt; &gt;  bool initializeGStreamer();
&gt; &gt; &gt;  }
&gt; &gt; 
&gt; &gt; I wonder why the moved functions aren&apos;t in the WebCore namespace like the initializeGStreamer function.
&gt; 
&gt; Cause they weren&apos;t before. Do you prefer them inside?

Yes please it would be coherent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953570</commentid>
    <comment_count>14</comment_count>
      <attachid>217692</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-11-22 09:18:34 -0800</bug_when>
    <thetext>Created attachment 217692
Patch

Added GStreamer utility functions to WebCore namespace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953801</commentid>
    <comment_count>15</comment_count>
      <attachid>217692</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-23 06:33:01 -0800</bug_when>
    <thetext>Comment on attachment 217692
Patch

Clearing flags on attachment: 217692

Committed r159730: &lt;http://trac.webkit.org/changeset/159730&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953802</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-23 06:33:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954018</commentid>
    <comment_count>17</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-11-25 09:05:07 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 217692 [details])
&gt; Clearing flags on attachment: 217692
&gt; 
&gt; Committed r159730: &lt;http://trac.webkit.org/changeset/159730&gt;

It broke the WinCairo build:

8&gt;c:\projects\buildslave\win-cairo-release\build\source\webcore\platform\graphics\gstreamer\GStreamerUtilities.h(21): fatal error C1083: Cannot open include file: &apos;gst/gst.h&apos;: No such file or directory

Brent, any idea?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954021</commentid>
    <comment_count>18</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-11-25 09:20:46 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954022</commentid>
    <comment_count>19</comment_count>
      <attachid>217813</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-11-25 09:20:51 -0800</bug_when>
    <thetext>Created attachment 217813
patch for wrong bug

Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954023</commentid>
    <comment_count>20</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-11-25 09:23:52 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; Rebased

Ooops, patch for wrong bug O:)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217247</attachid>
            <date>2013-11-18 16:30:16 -0800</date>
            <delta_ts>2013-11-21 17:11:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124534-20131119013014.patch</filename>
            <type>text/plain</type>
            <size>79640</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2ZGU1N2U0MjE2NjM5MDEyYzhiMWFi
NjI2NWY1ODgwMmQ2OTZlNjMuLjg1YTEzNzgxMDkwMDg0NjlhMzQ4OTJmMmQxODIxYTA3MTI3YjE4
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTEtMTggIFhhYmllciBSb2RyaWd1ZXogQ2Fs
dmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBSZW1vdmUg
MC4xMCBjb2RlcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI0NTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm0uaDogUmVtb3ZlZCBtYWNybyBmb3IgR1N0cmVhbWVyIDEuMCBh
cyBpdCBpcyB0aGUKKyAgICAgICAgb25seSBjb2RlcGF0aCBub3cuCisKIDIwMTMtMTEtMTYgIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHVpbnQ4X3Qg
dmVjdG9ycyBmb3IgV2ViQ3J5cHRvIGRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MWEwZWU2ZWY3NjE3MzNl
NGNjYjYwMDJhNDVkZDdkZWIwM2NkNDkzLi42NGQxYmQyYzZiYjUzMGI2MzNiY2IxZDQ1YmRkOTg3
NWI2NTk5NzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE1IEBACisyMDEzLTExLTE4ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gUmVtb3ZlIDAuMTAgY29kZXBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFsbCBHU3RyZWFtZXIgcG9ydHMgYXJlIHVzaW5nIDEuMCBu
b3cgc28gd2UgcmVtb3ZlIHRoZSAwLjEwCisgICAgICAgIGNvZGVwYXRoLgorCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwOgor
ICAgICAgICAob25HU3RyZWFtZXJXYXZwYXJzZVBhZEFkZGVkQ2FsbGJhY2spOiBSZW1vdmVkLgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lcik6CisgICAgICAgIFJlbW92ZWQgMC4xMCBjb2RlcGF0aC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlQnVmZmVyKTogUmVtb3Zl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvcHlHc3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwp
OgorICAgICAgICAoV2ViQ29yZTo6b25BcHBzaW5rUHVsbFJlcXVpcmVkQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjp+QXVkaW9GaWxlUmVhZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlU2FtcGxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTmV3RGVpbnRlcmxlYXZlUGFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKTogUmVtb3ZlZCAwLjEwIGNv
ZGVwYXRoLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRp
b1NvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChnZXRHU3RyZWFtZXJNb25vQXVkaW9DYXBz
KToKKyAgICAgICAgKHdlYktpdFdlYkF1ZGlvR1N0cmVhbWVyQ2hhbm5lbFBvc2l0aW9uKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfYXVkaW9fc3JjX2luaXQpOgorICAgICAgICAod2ViS2l0V2ViQXVk
aW9TcmNDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJLaXRXZWJBdWRpb1NyY0ZpbmFsaXplKToK
KyAgICAgICAgKHdlYktpdFdlYkF1ZGlvU3JjTG9vcCk6IFJlbW92ZWQgMC4xMCBjb2RlcGF0aC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5oOiBSZW1vdmVkIGNoZWNrCisgICAgICAgIGZv
ciAxLjAgYXMgaXQgaXMgdGhlIG9ubHkgbm93LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcDoKKyAgICAgICAgKHdlYmtpdEdzdE9i
amVjdFJlZlNpbmspOgorICAgICAgICAod2Via2l0R3N0R2hvc3RQYWRGcm9tU3RhdGljVGVtcGxh
dGUpOgorICAgICAgICAod2Via2l0R3N0R2V0UGFkQ2Fwcyk6CisgICAgICAgICh3ZWJraXRHc3RQ
aXBlbGluZUdldEJ1cyk6CisgICAgICAgIChnZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9tQ2Fwcyk6
CisgICAgICAgIChjcmVhdGVHc3RCdWZmZXIpOgorICAgICAgICAoY3JlYXRlR3N0QnVmZmVyRm9y
RGF0YSk6CisgICAgICAgIChnZXRHc3RCdWZmZXJTaXplKToKKyAgICAgICAgKHNldEdzdEJ1ZmZl
clNpemUpOgorICAgICAgICAoZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIpOgorICAgICAgICAodW5t
YXBHc3RCdWZmZXIpOgorICAgICAgICAoc2V0R3N0RWxlbWVudENsYXNzTWV0YWRhdGEpOgorICAg
ICAgICAoZ3N0T2JqZWN0SXNGbG9hdGluZyk6CisgICAgICAgIChub3RpZnlHc3RUYWdzT25QYWQp
OgorICAgICAgICAoZ2V0R3N0QXVkaW9DYXBzKTogUmVtb3ZlZCAwLjEwIGNvZGVwYXRoLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmg6
IFJlbW92ZWQgY2hlY2sgZm9yCisgICAgICAgIDEuMCBhcyBpdCBpcyB0aGUgb25seSBub3cuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8u
Y3BwOgorICAgICAgICAoSW1hZ2VHU3RyZWFtZXI6OkltYWdlR1N0cmVhbWVyKToKKyAgICAgICAg
KEltYWdlR1N0cmVhbWVyOjp+SW1hZ2VHU3RyZWFtZXIpOiBSZW1vdmVkIDAuMTAgY29kZXBhdGgu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZE1ldGFkYXRhVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5oOgorICAgICAgICBSZW1vdmVkIGNoZWNrIGZvciAxLjAgYXMgaXQgaXMgdGhlIG9ubHkgbm93
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICBSZW1vdmVkIGdQbGF5YmluTmFtZSBhbmQgZ1BlcmNl
bnRNYXguCisgICAgICAgIChXZWJDb3JlOjpzZXRBdWRpb1N0cmVhbVByb3BlcnRpZXNDYWxsYmFj
ayk6IFJlbW92ZWQgMC4xMAorICAgICAgICBjb2RlcGF0aC4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aXNBdmFpbGFibGUpOiBVc2VkIHBsYXliaW4KKyAg
ICAgICAgZGlyZWN0bHkuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW8pOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJP
ZkF1ZGlvKToKKyAgICAgICAgUmVtb3ZlZCAwLjEwIGNvZGVwYXRoLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCk6IFVzZWQKKyAgICAgICAg
R1NUX0ZPUk1BVF9QRVJDRU5UX01BWCBpbnN0ZWFkIG9mIGdQZXJjZW50TWF4LgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxCeXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdT
VFBsYXlCaW4pOiBSZW1vdmVkCisgICAgICAgIDAuMTAgY29kZXBhdGguCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgor
ICAgICAgICBSZW1vdmVkIGNoZWNrIGZvciAxLjAgYXMgaXQgaXMgdGhlIG9ubHkgbm93LgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6Om5hdHVyYWxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQpOiBSZW1vdmVkIDAuMTAKKyAgICAg
ICAgY29kZXBhdGguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRD
b21iaW5lckdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1RleHRDb21iaW5lckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UZXh0U2lua0dTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1RleHRTaW5rR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJl
YW1lci5jcHA6CisgICAgICAgICh3ZWJraXRWaWRlb1NpbmtNYXJzaGFsVm9pZEFuZE1pbmlPYmpl
Y3QpOiBSZW1vdmVkLgorICAgICAgICAod2Via2l0VmlkZW9TaW5rUmVuZGVyKToKKyAgICAgICAg
KHdlYmtpdFZpZGVvU2lua1NldENhcHMpOgorICAgICAgICAod2Via2l0VmlkZW9TaW5rUHJvcG9z
ZUFsbG9jYXRpb24pOgorICAgICAgICAod2Via2l0X3ZpZGVvX3NpbmtfY2xhc3NfaW5pdCk6IFJl
bW92ZWQgMC4xMCBjb2RlcGF0aC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICBS
ZW1vdmVkIGNoZWNrIGZvciAxLjAgYXMgaXQgaXMgdGhlIG9ubHkgbm93LgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAod2ViS2l0V2ViU3JjVXJpR2V0VHlwZSk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNH
ZXRQcm90b2NvbHMpOgorICAgICAgICAod2ViS2l0V2ViU3JjUXVlcnkpOgorICAgICAgICAod2Vi
S2l0V2ViU3JjR2V0VXJpKToKKyAgICAgICAgKHdlYktpdFdlYlNyY1NldFVyaSk6IFJlbW92ZWQu
CisgICAgICAgICh3ZWJraXRfd2ViX3NyY19pbml0KToKKyAgICAgICAgKHdlYktpdFdlYlNyY1Nl
dFByb3BlcnR5KToKKyAgICAgICAgKHdlYktpdFdlYlNyY1N0b3ApOgorICAgICAgICAoU3RyZWFt
aW5nQ2xpZW50OjpjcmVhdGVSZWFkQnVmZmVyKToKKyAgICAgICAgKFN0cmVhbWluZ0NsaWVudDo6
aGFuZGxlUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChTdHJlYW1pbmdDbGllbnQ6OmhhbmRs
ZURhdGFSZWNlaXZlZCk6IFJlbW92ZWQgMC4xMCBjb2RlcGF0aC4KKwogMjAxMy0xMS0xOCAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4gVXBkYXRlIEdPYmplY3QgRE9NIHN5bWJvbHMgZmlsZSBhZnRlciByMTU4NzYwLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nCmluZGV4IGJjMDdiNzYyMDVkM2Q2MGIzZjg4OTgxZTBhMGE4NTM4M2E5OTBmYTAu
LjlkZTM4MzgzNmQ5MzZiM2ZiMzMyZGYyY2Q2MTIyYjNkZTIzZjY5NzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMS0xOCAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIg
IDxjYWx2YXJpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIFJlbW92ZSAwLjEw
IGNvZGVwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjQ1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJFZmwuY3BwOiBSZW1v
dmVkLgorCiAyMDEzLTExLTE1ICBBbGJlcnRvIEdhcmNpYSAgPGJlcnRvQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0VGTF0gTGVhayBpbiBld2tfZnJhbWVfY2VydGlmaWNhdGVfc3RhdHVzX2dldCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm0uaAppbmRleCBiMmIyNDc5NDRjOWYxMDdkMWYwOTI1NjkxMzJlNmJmOGIxZjRiYjNk
Li5lYjQ3YWFjY2ZiMzhkNjJjZGUzMGJlMzUzM2M3MjdhMTRhYTU4ZWQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgK
QEAgLTQ5NCw3ICs0OTQsNiBAQAogI2RlZmluZSBXVEZfVVNFX1NPVVAgMQogI2RlZmluZSBXVEZf
VVNFX1dFQlAgMQogI2RlZmluZSBFTkFCTEVfR0xPQkFMX0ZBU1RNQUxMT0NfTkVXIDAKLSNkZWZp
bmUgR1NUX0FQSV9WRVJTSU9OXzEgMQogI2VuZGlmCiAKIC8qIE9uIFdpbmRvd3MsIHVzZSBRdWVy
eVBlcmZvcm1hbmNlQ291bnRlciBieSBkZWZhdWx0ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lci5jcHAKaW5kZXggY2NmMDQ1MDcyYmUwYjk3NDdkOGI3Y2Y2Yjg3YzJiZWJi
Mzg1YTZlNC4uY2I0NzlkMTliZDMwNzg5Nzg2YzEwMTc2YWRkOWI2YzE0YzU5ZWI5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGlu
YXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtNzAsMTMgKzcwLDYgQEAg
dW5zaWduZWQgbG9uZyBBdWRpb0Rlc3RpbmF0aW9uOjptYXhDaGFubmVsQ291bnQoKQogICAgIHJl
dHVybiAwOwogfQogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi1zdGF0aWMgdm9pZCBvbkdT
dHJlYW1lcldhdnBhcnNlUGFkQWRkZWRDYWxsYmFjayhHc3RFbGVtZW50KiwgR3N0UGFkKiBwYWQs
IEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIqIGRlc3RpbmF0aW9uKQotewotICAgIGRlc3RpbmF0
aW9uLT5maW5pc2hCdWlsZGluZ1BpcGVsaW5lQWZ0ZXJXYXZQYXJzZXJQYWRSZWFkeShwYWQpOwot
fQotI2VuZGlmCi0KIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgZmxvYXQgc2FtcGxlUmF0ZSkKICAg
ICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgLCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3Jl
YXRlKDIsIGZyYW1lc1RvUHVsbCwgZmFsc2UpKQpAQCAtMTAyLDE2ICs5NSwxMSBAQCBBdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssCiAgICAgaWYgKCFtX3dhdlBhcnNlckF2YWlsYWJsZSkKICAgICAgICAg
cmV0dXJuOwogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgZ19zaWduYWxfY29ubmVj
dCh3YXZQYXJzZXIsICJwYWQtYWRkZWQiLCBHX0NBTExCQUNLKG9uR1N0cmVhbWVyV2F2cGFyc2VQ
YWRBZGRlZENhbGxiYWNrKSwgdGhpcyk7Ci0jZW5kaWYKICAgICBnc3RfYmluX2FkZF9tYW55KEdT
VF9CSU4obV9waXBlbGluZSksIHdlYmtpdEF1ZGlvU3JjLCB3YXZQYXJzZXIsIE5VTEwpOwogICAg
IGdzdF9lbGVtZW50X2xpbmtfcGFkc19mdWxsKHdlYmtpdEF1ZGlvU3JjLCAic3JjIiwgd2F2UGFy
c2VyLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKIAotI2lmZGVmIEdTVF9B
UElfVkVSU0lPTl8xCiAgICAgR1JlZlB0cjxHc3RQYWQ+IHNyY1BhZCA9IGFkb3B0R1JlZihnc3Rf
ZWxlbWVudF9nZXRfc3RhdGljX3BhZCh3YXZQYXJzZXIsICJzcmMiKSk7CiAgICAgZmluaXNoQnVp
bGRpbmdQaXBlbGluZUFmdGVyV2F2UGFyc2VyUGFkUmVhZHkoc3JjUGFkLmdldCgpKTsKLSNlbmRp
ZgogfQogCiBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjp+QXVkaW9EZXN0aW5hdGlvbkdTdHJl
YW1lcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCmluZGV4IGNiNTVm
YzdjODQ4NjM5MTA2NTBmZWY0YjMwYWZjMGYyNWJjMDNlYmUuLmE1NDE4NTE1ZTQ2MTNiYmMxMTMz
MDlhY2U5NzQ4YTY5YzA0YWJkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFt
ZXIuY3BwCkBAIC0zNSwxNyArMzUsOSBAQAogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAKLSNpZmRlZiBHU1RfQVBJX1ZF
UlNJT05fMQogI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgotI2Vsc2UKLSNpbmNsdWRlIDxn
c3QvYXVkaW8vbXVsdGljaGFubmVsLmg+Ci0jZW5kaWYKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCiBzdGF0aWMgY29uc3QgY2hhciogZ0RlY29kZWJpbk5hbWUgPSAiZGVjb2RlYmluIjsKLSNl
bHNlCi1zdGF0aWMgY29uc3QgY2hhciogZ0RlY29kZWJpbk5hbWUgPSAiZGVjb2RlYmluMiI7Ci0j
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OCwxMSArNTAsNyBAQCBwdWJsaWM6
CiAKICAgICBQYXNzUmVmUHRyPEF1ZGlvQnVzPiBjcmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwg
Ym9vbCBtaXhUb01vbm8pOwogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBHc3RGbG93
UmV0dXJuIGhhbmRsZVNhbXBsZShHc3RBcHBTaW5rKik7Ci0jZWxzZQotICAgIEdzdEZsb3dSZXR1
cm4gaGFuZGxlQnVmZmVyKEdzdEFwcFNpbmsqKTsKLSNlbmRpZgogICAgIGdib29sZWFuIGhhbmRs
ZU1lc3NhZ2UoR3N0TWVzc2FnZSopOwogICAgIHZvaWQgaGFuZGxlTmV3RGVpbnRlcmxlYXZlUGFk
KEdzdFBhZCopOwogICAgIHZvaWQgZGVpbnRlcmxlYXZlUGFkc0NvbmZpZ3VyZWQoKTsKQEAgLTc4
LDExICs2Niw2IEBAIHByaXZhdGU6CiAgICAgR3N0QnVmZmVyTGlzdCogbV9mcm9udExlZnRCdWZm
ZXJzOwogICAgIEdzdEJ1ZmZlckxpc3QqIG1fZnJvbnRSaWdodEJ1ZmZlcnM7CiAKLSNpZm5kZWYg
R1NUX0FQSV9WRVJTSU9OXzEKLSAgICBHc3RCdWZmZXJMaXN0SXRlcmF0b3IqIG1fZnJvbnRMZWZ0
QnVmZmVyc0l0ZXJhdG9yOwotICAgIEdzdEJ1ZmZlckxpc3RJdGVyYXRvciogbV9mcm9udFJpZ2h0
QnVmZmVyc0l0ZXJhdG9yOwotI2VuZGlmCi0KICAgICBHc3RFbGVtZW50KiBtX3BpcGVsaW5lOwog
ICAgIHVuc2lnbmVkIG1fY2hhbm5lbFNpemU7CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX2Rl
Y29kZWJpbjsKQEAgLTkzLDcgKzc2LDYgQEAgcHJpdmF0ZToKIAogc3RhdGljIHZvaWQgY29weUdz
dHJlYW1lckJ1ZmZlcnNUb0F1ZGlvQ2hhbm5lbChHc3RCdWZmZXJMaXN0KiBidWZmZXJzLCBBdWRp
b0NoYW5uZWwqIGF1ZGlvQ2hhbm5lbCkKIHsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAg
IGZsb2F0KiBkZXN0aW5hdGlvbiA9IGF1ZGlvQ2hhbm5lbC0+bXV0YWJsZURhdGEoKTsKICAgICB1
bnNpZ25lZCBidWZmZXJDb3VudCA9IGdzdF9idWZmZXJfbGlzdF9sZW5ndGgoYnVmZmVycyk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1ZmZlckNvdW50OyArK2kpIHsKQEAgLTEwMywy
NiArODUsMTEgQEAgc3RhdGljIHZvaWQgY29weUdzdHJlYW1lckJ1ZmZlcnNUb0F1ZGlvQ2hhbm5l
bChHc3RCdWZmZXJMaXN0KiBidWZmZXJzLCBBdWRpb0NoYW4KICAgICAgICAgZ3N0X2J1ZmZlcl9l
eHRyYWN0KGJ1ZmZlciwgMCwgZGVzdGluYXRpb24sIGJ1ZmZlclNpemUpOwogICAgICAgICBkZXN0
aW5hdGlvbiArPSBidWZmZXJTaXplIC8gc2l6ZW9mKGZsb2F0KTsKICAgICB9Ci0jZWxzZQotICAg
IEdzdEJ1ZmZlckxpc3RJdGVyYXRvciogaXRlciA9IGdzdF9idWZmZXJfbGlzdF9pdGVyYXRlKGJ1
ZmZlcnMpOwotICAgIGdzdF9idWZmZXJfbGlzdF9pdGVyYXRvcl9uZXh0X2dyb3VwKGl0ZXIpOwot
ICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX21lcmdlX2dy
b3VwKGl0ZXIpOwotICAgIGlmIChidWZmZXIpIHsKLSAgICAgICAgbWVtY3B5KGF1ZGlvQ2hhbm5l
bC0+bXV0YWJsZURhdGEoKSwgcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KEdTVF9CVUZGRVJfREFU
QShidWZmZXIpKSwgR1NUX0JVRkZFUl9TSVpFKGJ1ZmZlcikpOwotICAgICAgICBnc3RfYnVmZmVy
X3VucmVmKGJ1ZmZlcik7Ci0gICAgfQotCi0gICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX2Zy
ZWUoaXRlcik7Ci0jZW5kaWYKIH0KIAogc3RhdGljIEdzdEZsb3dSZXR1cm4gb25BcHBzaW5rUHVs
bFJlcXVpcmVkQ2FsbGJhY2soR3N0QXBwU2luayogc2luaywgZ3BvaW50ZXIgdXNlckRhdGEpCiB7
Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXVkaW9G
aWxlUmVhZGVyKj4odXNlckRhdGEpLT5oYW5kbGVTYW1wbGUoc2luayk7Ci0jZWxzZQotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxBdWRpb0ZpbGVSZWFkZXIqPih1c2VyRGF0YSktPmhhbmRsZUJ1ZmZl
cihzaW5rKTsKLSNlbmRpZgogfQogCiBnYm9vbGVhbiBtZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiwg
R3N0TWVzc2FnZSogbWVzc2FnZSwgQXVkaW9GaWxlUmVhZGVyKiByZWFkZXIpCkBAIC0xOTMsMTUg
KzE2MCwxMCBAQCBBdWRpb0ZpbGVSZWFkZXI6On5BdWRpb0ZpbGVSZWFkZXIoKQogICAgICAgICBt
X2RlSW50ZXJsZWF2ZS5jbGVhcigpOwogICAgIH0KIAotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05f
MQotICAgIGdzdF9idWZmZXJfbGlzdF9pdGVyYXRvcl9mcmVlKG1fZnJvbnRMZWZ0QnVmZmVyc0l0
ZXJhdG9yKTsKLSAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfZnJlZShtX2Zyb250UmlnaHRC
dWZmZXJzSXRlcmF0b3IpOwotI2VuZGlmCiAgICAgZ3N0X2J1ZmZlcl9saXN0X3VucmVmKG1fZnJv
bnRMZWZ0QnVmZmVycyk7CiAgICAgZ3N0X2J1ZmZlcl9saXN0X3VucmVmKG1fZnJvbnRSaWdodEJ1
ZmZlcnMpOwogfQogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKIEdzdEZsb3dSZXR1cm4gQXVk
aW9GaWxlUmVhZGVyOjpoYW5kbGVTYW1wbGUoR3N0QXBwU2luayogc2luaykKIHsKICAgICBHc3RT
YW1wbGUqIHNhbXBsZSA9IGdzdF9hcHBfc2lua19wdWxsX3NhbXBsZShzaW5rKTsKQEAgLTI0Miw2
MyArMjA0LDYgQEAgR3N0Rmxvd1JldHVybiBBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZVNhbXBsZShH
c3RBcHBTaW5rKiBzaW5rKQogICAgIHJldHVybiBHU1RfRkxPV19PSzsKIAogfQotI2VuZGlmCi0K
LSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLUdzdEZsb3dSZXR1cm4gQXVkaW9GaWxlUmVhZGVy
OjpoYW5kbGVCdWZmZXIoR3N0QXBwU2luayogc2luaykKLXsKLSAgICBHc3RCdWZmZXIqIGJ1ZmZl
ciA9IGdzdF9hcHBfc2lua19wdWxsX2J1ZmZlcihzaW5rKTsKLSAgICBpZiAoIWJ1ZmZlcikKLSAg
ICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwotCi0gICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9i
dWZmZXJfZ2V0X2NhcHMoYnVmZmVyKTsKLSAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdz
dF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2FwcywgMCk7Ci0KLSAgICBnaW50IGNoYW5uZWxzID0gMDsK
LSAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2ludChzdHJ1Y3R1cmUsICJjaGFubmVscyIsICZj
aGFubmVscykgfHwgIWNoYW5uZWxzKSB7Ci0gICAgICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOwot
ICAgICAgICBnc3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7Ci0gICAgICAgIHJldHVybiBHU1RfRkxP
V19FUlJPUjsKLSAgICB9Ci0KLSAgICBnaW50IHNhbXBsZVJhdGUgPSAwOwotICAgIGlmICghZ3N0
X3N0cnVjdHVyZV9nZXRfaW50KHN0cnVjdHVyZSwgInJhdGUiLCAmc2FtcGxlUmF0ZSkgfHwgIXNh
bXBsZVJhdGUpIHsKLSAgICAgICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7Ci0gICAgICAgIGdzdF9i
dWZmZXJfdW5yZWYoYnVmZmVyKTsKLSAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwotICAg
IH0KLQotICAgIGdpbnQgd2lkdGggPSAwOwotICAgIGlmICghZ3N0X3N0cnVjdHVyZV9nZXRfaW50
KHN0cnVjdHVyZSwgIndpZHRoIiwgJndpZHRoKSB8fCAhd2lkdGgpIHsKLSAgICAgICAgZ3N0X2Nh
cHNfdW5yZWYoY2Fwcyk7Ci0gICAgICAgIGdzdF9idWZmZXJfdW5yZWYoYnVmZmVyKTsKLSAgICAg
ICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwotICAgIH0KLQotICAgIEdzdENsb2NrVGltZSBkdXJh
dGlvbiA9IChzdGF0aWNfY2FzdDxndWludDY0PihHU1RfQlVGRkVSX1NJWkUoYnVmZmVyKSkgKiA4
ICogR1NUX1NFQ09ORCkgLyAoc2FtcGxlUmF0ZSAqIGNoYW5uZWxzICogd2lkdGgpOwotICAgIGlu
dCBmcmFtZXMgPSBHU1RfQ0xPQ0tfVElNRV9UT19GUkFNRVMoZHVyYXRpb24sIHNhbXBsZVJhdGUp
OwotCi0gICAgLy8gQ2hlY2sgdGhlIGZpcnN0IGF1ZGlvIGNoYW5uZWwuIFRoZSBidWZmZXIgaXMg
c3VwcG9zZWQgdG8gc3RvcmUKLSAgICAvLyBkYXRhIG9mIGEgc2luZ2xlIGNoYW5uZWwgYW55d2F5
LgotICAgIEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uKiBwb3NpdGlvbnMgPSBnc3RfYXVkaW9fZ2V0
X2NoYW5uZWxfcG9zaXRpb25zKHN0cnVjdHVyZSk7Ci0gICAgc3dpdGNoIChwb3NpdGlvbnNbMF0p
IHsKLSAgICBjYXNlIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0xFRlQ6Ci0gICAg
ICAgIGdzdF9idWZmZXJfbGlzdF9pdGVyYXRvcl9hZGQobV9mcm9udExlZnRCdWZmZXJzSXRlcmF0
b3IsIGJ1ZmZlcik7Ci0gICAgICAgIG1fY2hhbm5lbFNpemUgKz0gZnJhbWVzOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUOgot
ICAgICAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfYWRkKG1fZnJvbnRSaWdodEJ1ZmZlcnNJ
dGVyYXRvciwgYnVmZmVyKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
Z3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBn
X2ZyZWUocG9zaXRpb25zKTsKLSAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsKLSAgICByZXR1cm4g
R1NUX0ZMT1dfT0s7Ci19Ci0jZW5kaWYKIAogZ2Jvb2xlYW4gQXVkaW9GaWxlUmVhZGVyOjpoYW5k
bGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CkBAIC0zMzcsMTIgKzI0Miw3IEBAIHZv
aWQgQXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVOZXdEZWludGVybGVhdmVQYWQoR3N0UGFkKiBwYWQp
CiAgICAgR3N0QXBwU2lua0NhbGxiYWNrcyBjYWxsYmFja3M7CiAgICAgY2FsbGJhY2tzLmVvcyA9
IDA7CiAgICAgY2FsbGJhY2tzLm5ld19wcmVyb2xsID0gMDsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJ
T05fMQogICAgIGNhbGxiYWNrcy5uZXdfc2FtcGxlID0gb25BcHBzaW5rUHVsbFJlcXVpcmVkQ2Fs
bGJhY2s7Ci0jZWxzZQotICAgIGNhbGxiYWNrcy5uZXdfYnVmZmVyX2xpc3QgPSAwOwotICAgIGNh
bGxiYWNrcy5uZXdfYnVmZmVyID0gb25BcHBzaW5rUHVsbFJlcXVpcmVkQ2FsbGJhY2s7Ci0jZW5k
aWYKICAgICBnc3RfYXBwX3Npbmtfc2V0X2NhbGxiYWNrcyhHU1RfQVBQX1NJTksoc2luayksICZj
YWxsYmFja3MsIHRoaXMsIDApOwogCiAgICAgZ19vYmplY3Rfc2V0KHNpbmssICJzeW5jIiwgRkFM
U0UsIE5VTEwpOwpAQCAtNDM3LDE0ICszMzcsNiBAQCBQYXNzUmVmUHRyPEF1ZGlvQnVzPiBBdWRp
b0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRvTW9ubwog
ICAgIG1fZnJvbnRMZWZ0QnVmZmVycyA9IGdzdF9idWZmZXJfbGlzdF9uZXcoKTsKICAgICBtX2Zy
b250UmlnaHRCdWZmZXJzID0gZ3N0X2J1ZmZlcl9saXN0X25ldygpOwogCi0jaWZuZGVmIEdTVF9B
UElfVkVSU0lPTl8xCi0gICAgbV9mcm9udExlZnRCdWZmZXJzSXRlcmF0b3IgPSBnc3RfYnVmZmVy
X2xpc3RfaXRlcmF0ZShtX2Zyb250TGVmdEJ1ZmZlcnMpOwotICAgIGdzdF9idWZmZXJfbGlzdF9p
dGVyYXRvcl9hZGRfZ3JvdXAobV9mcm9udExlZnRCdWZmZXJzSXRlcmF0b3IpOwotCi0gICAgbV9m
cm9udFJpZ2h0QnVmZmVyc0l0ZXJhdG9yID0gZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdGUobV9mcm9u
dFJpZ2h0QnVmZmVycyk7Ci0gICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX2FkZF9ncm91cCht
X2Zyb250UmlnaHRCdWZmZXJzSXRlcmF0b3IpOwotI2VuZGlmCi0KICAgICBHUmVmUHRyPEdNYWlu
Q29udGV4dD4gY29udGV4dCA9IGFkb3B0R1JlZihnX21haW5fY29udGV4dF9uZXcoKSk7CiAgICAg
Z19tYWluX2NvbnRleHRfcHVzaF90aHJlYWRfZGVmYXVsdChjb250ZXh0LmdldCgpKTsKICAgICBt
X2xvb3AgPSBhZG9wdEdSZWYoZ19tYWluX2xvb3BfbmV3KGNvbnRleHQuZ2V0KCksIEZBTFNFKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2Vi
S2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA1
NWRiZWQ0ZjgwZDIzOTRkZWEzODMxYWE1ZGUxOGRkZmZjZmVkMzI5Li5iNTBmNjJlYzA0MDY3OTBi
YzE1NzgyN2QzNzFhZDExOGFlNDc4ZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRp
b1NvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTI3LDE4ICsyNyw5IEBACiAjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRl
ICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICNpbmNs
dWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KLSNlbHNlCi0jaW5jbHVkZSA8Z3N0L2F1ZGlvL211bHRp
Y2hhbm5lbC5oPgotI2VuZGlmCiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgogCi0v
LyBHU3RhdGljUmVjTXV0ZXggaXMgZGVwcmVjYXRlZCBpbiBHbGliLCBidXQgcmVxdWlyZWQgaW4g
R1N0cmVhbWVyIDAuMTAKLSNpZiAoQ09NUElMRVIoR0NDKSAmJiBHQ0NfVkVSU0lPTl9BVF9MRUFT
VCg0LCA2LCAwKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkpCi0jcHJhZ21hIEdDQyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0jZW5kaWYKLQog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJBdWRp
b1NyY0NsYXNzICAgV2ViS2l0V2ViQXVkaW9TcmNDbGFzczsKQEAgLTY1LDExICs1Niw3IEBAIHN0
cnVjdCBfV2ViS2l0V2ViQXVkaW9Tb3VyY2VQcml2YXRlIHsKICAgICBHUmVmUHRyPEdzdEVsZW1l
bnQ+IHdhdkVuY29kZXI7CiAKICAgICBHUmVmUHRyPEdzdFRhc2s+IHRhc2s7Ci0jaWZkZWYgR1NU
X0FQSV9WRVJTSU9OXzEKICAgICBHUmVjTXV0ZXggbXV0ZXg7Ci0jZWxzZQotICAgIEdTdGF0aWNS
ZWNNdXRleCBtdXRleDsKLSNlbmRpZgogCiAgICAgR1NMaXN0KiBwYWRzOyAvLyBMaXN0IG9mIHF1
ZXVlIHNpbmsgcGFkcy4gT25lIHF1ZXVlIGZvciBlYWNoIHBsYW5hciBhdWRpbyBjaGFubmVsLgog
ICAgIEdzdFBhZCogc291cmNlUGFkOyAvLyBzcmMgcGFkIG9mIHRoZSBlbGVtZW50LCBpbnRlcmxl
YXZlZCB3YXYgZGF0YSBpcyBwdXNoZWQgdG8gaXQuCkBAIC05OSwxNyArODYsMTAgQEAgc3RhdGlj
IHZvaWQgd2ViS2l0V2ViQXVkaW9TcmNMb29wKFdlYktpdFdlYkF1ZGlvU3JjKik7CiAKIHN0YXRp
YyBHc3RDYXBzKiBnZXRHU3RyZWFtZXJNb25vQXVkaW9DYXBzKGZsb2F0IHNhbXBsZVJhdGUpCiB7
Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICByZXR1cm4gZ3N0X2NhcHNfbmV3X3NpbXBs
ZSgiYXVkaW8veC1yYXciLCAicmF0ZSIsIEdfVFlQRV9JTlQsIHN0YXRpY19jYXN0PGludD4oc2Ft
cGxlUmF0ZSksCiAgICAgICAgICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIDEsCiAgICAgICAgICJm
b3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBnc3RfYXVkaW9fZm9ybWF0X3RvX3N0cmluZyhHU1RfQVVE
SU9fRk9STUFUX0YzMiksCiAgICAgICAgICJsYXlvdXQiLCBHX1RZUEVfU1RSSU5HLCAibm9uLWlu
dGVybGVhdmVkIiwgTlVMTCk7Ci0jZWxzZQotICAgIHJldHVybiBnc3RfY2Fwc19uZXdfc2ltcGxl
KCJhdWRpby94LXJhdy1mbG9hdCIsICJyYXRlIiwgR19UWVBFX0lOVCwgc3RhdGljX2Nhc3Q8aW50
PihzYW1wbGVSYXRlKSwKLSAgICAgICAgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgMSwKLSAgICAg
ICAgImVuZGlhbm5lc3MiLCBHX1RZUEVfSU5ULCBHX0JZVEVfT1JERVIsCi0gICAgICAgICJ3aWR0
aCIsIEdfVFlQRV9JTlQsIDMyLCBOVUxMKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgR3N0QXVkaW9D
aGFubmVsUG9zaXRpb24gd2ViS2l0V2ViQXVkaW9HU3RyZWFtZXJDaGFubmVsUG9zaXRpb24oaW50
IGNoYW5uZWxJbmRleCkKQEAgLTEyNywxMSArMTA3LDcgQEAgc3RhdGljIEdzdEF1ZGlvQ2hhbm5l
bFBvc2l0aW9uIHdlYktpdFdlYkF1ZGlvR1N0cmVhbWVyQ2hhbm5lbFBvc2l0aW9uKGludCBjaGFu
bmUKICAgICAgICAgcG9zaXRpb24gPSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9D
RU5URVI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVkaW9CdXM6OkNoYW5uZWxMRkU6Ci0j
aWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICAgICAgcG9zaXRpb24gPSBHU1RfQVVESU9fQ0hB
Tk5FTF9QT1NJVElPTl9MRkUxOwotI2Vsc2UKLSAgICAgICAgcG9zaXRpb24gPSBHU1RfQVVESU9f
Q0hBTk5FTF9QT1NJVElPTl9MRkU7Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBB
dWRpb0J1czo6Q2hhbm5lbFN1cnJvdW5kTGVmdDoKICAgICAgICAgcG9zaXRpb24gPSBHU1RfQVVE
SU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0xFRlQ7CkBAIC0yMDUsMTMgKzE4MSw4IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfYXVkaW9fc3JjX2luaXQoV2ViS2l0V2ViQXVkaW9TcmMqIHNyYykK
ICAgICBwcml2LT5wcm92aWRlciA9IDA7CiAgICAgcHJpdi0+YnVzID0gMDsKIAotI2lmZGVmIEdT
VF9BUElfVkVSU0lPTl8xCiAgICAgZ19yZWNfbXV0ZXhfaW5pdCgmcHJpdi0+bXV0ZXgpOwogICAg
IHByaXYtPnRhc2sgPSBnc3RfdGFza19uZXcocmVpbnRlcnByZXRfY2FzdDxHc3RUYXNrRnVuY3Rp
b24+KHdlYktpdFdlYkF1ZGlvU3JjTG9vcCksIHNyYywgMCk7Ci0jZWxzZQotICAgIGdfc3RhdGlj
X3JlY19tdXRleF9pbml0KCZwcml2LT5tdXRleCk7Ci0gICAgcHJpdi0+dGFzayA9IGdzdF90YXNr
X2NyZWF0ZShyZWludGVycHJldF9jYXN0PEdzdFRhc2tGdW5jdGlvbj4od2ViS2l0V2ViQXVkaW9T
cmNMb29wKSwgc3JjKTsKLSNlbmRpZgogCiAgICAgZ3N0X3Rhc2tfc2V0X2xvY2socHJpdi0+dGFz
ay5nZXQoKSwgJnByaXYtPm11dGV4KTsKIH0KQEAgLTI1MCwxNSArMjIxLDExIEBAIHN0YXRpYyB2
b2lkIHdlYktpdFdlYkF1ZGlvU3JjQ29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAg
ICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbW9ub0NhcHMgPSBhZG9wdEdSZWYoZ2V0R1N0cmVhbWVyTW9u
b0F1ZGlvQ2Fwcyhwcml2LT5zYW1wbGVSYXRlKSk7CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05f
MQogICAgICAgICBHc3RBdWRpb0luZm8gaW5mbzsKICAgICAgICAgZ3N0X2F1ZGlvX2luZm9fZnJv
bV9jYXBzKCZpbmZvLCBtb25vQ2Fwcy5nZXQoKSk7CiAgICAgICAgIEdTVF9BVURJT19JTkZPX1BP
U0lUSU9OKCZpbmZvLCAwKSA9IHdlYktpdFdlYkF1ZGlvR1N0cmVhbWVyQ2hhbm5lbFBvc2l0aW9u
KGNoYW5uZWxJbmRleCk7CiAgICAgICAgIEdSZWZQdHI8R3N0Q2Fwcz4gY2FwcyA9IGFkb3B0R1Jl
Zihnc3RfYXVkaW9faW5mb190b19jYXBzKCZpbmZvKSk7CiAgICAgICAgIGdfb2JqZWN0X3NldChj
YXBzZmlsdGVyLCAiY2FwcyIsIGNhcHMuZ2V0KCksIE5VTEwpOwotI2Vsc2UKLSAgICAgICAgZ19v
YmplY3Rfc2V0KGNhcHNmaWx0ZXIsICJjYXBzIiwgbW9ub0NhcHMuZ2V0KCksIE5VTEwpOwotI2Vu
ZGlmCiAKICAgICAgICAgLy8gQ29uZmlndXJlIHRoZSBxdWV1ZSBmb3IgbWluaW1hbCBsYXRlbmN5
LgogICAgICAgICBnX29iamVjdF9zZXQocXVldWUsICJtYXgtc2l6ZS1idWZmZXJzIiwgc3RhdGlj
X2Nhc3Q8Z3VpbnQ+KDEpLCBOVUxMKTsKQEAgLTI4NCwxMSArMjUxLDcgQEAgc3RhdGljIHZvaWQg
d2ViS2l0V2ViQXVkaW9TcmNGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiAgICAgV2ViS2l0V2Vi
QXVkaW9TcmMqIHNyYyA9IFdFQktJVF9XRUJfQVVESU9fU1JDKG9iamVjdCk7CiAgICAgV2ViS2l0
V2ViQXVkaW9Tb3VyY2VQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCi0jaWZkZWYgR1NUX0FQ
SV9WRVJTSU9OXzEKICAgICBnX3JlY19tdXRleF9jbGVhcigmcHJpdi0+bXV0ZXgpOwotI2Vsc2UK
LSAgICBnX3N0YXRpY19yZWNfbXV0ZXhfZnJlZSgmcHJpdi0+bXV0ZXgpOwotI2VuZGlmCiAKICAg
ICBnX3NsaXN0X2ZyZWVfZnVsbChwcml2LT5wYWRzLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95
Tm90aWZ5Pihnc3Rfb2JqZWN0X3VucmVmKSk7CiAKQEAgLTM2MCwxNCArMzIzLDEwIEBAIHN0YXRp
YyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjTG9vcChXZWJLaXRXZWJBdWRpb1NyYyogc3JjKQogICAg
ICAgICBHc3RCdWZmZXIqIGNoYW5uZWxCdWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2Mo
YnVmZmVyU2l6ZSk7CiAgICAgICAgIEFTU0VSVChjaGFubmVsQnVmZmVyKTsKICAgICAgICAgY2hh
bm5lbEJ1ZmZlckxpc3QgPSBnX3NsaXN0X3ByZXBlbmQoY2hhbm5lbEJ1ZmZlckxpc3QsIGNoYW5u
ZWxCdWZmZXIpOwotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgICAgIEdzdE1hcEluZm8g
aW5mbzsKICAgICAgICAgZ3N0X2J1ZmZlcl9tYXAoY2hhbm5lbEJ1ZmZlciwgJmluZm8sIEdTVF9N
QVBfUkVBRCk7CiAgICAgICAgIHByaXYtPmJ1cy0+c2V0Q2hhbm5lbE1lbW9yeShpLCByZWludGVy
cHJldF9jYXN0PGZsb2F0Kj4oaW5mby5kYXRhKSwgcHJpdi0+ZnJhbWVzVG9QdWxsKTsKICAgICAg
ICAgZ3N0X2J1ZmZlcl91bm1hcChjaGFubmVsQnVmZmVyLCAmaW5mbyk7Ci0jZWxzZQotICAgICAg
ICBwcml2LT5idXMtPnNldENoYW5uZWxNZW1vcnkoaSwgcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+
KEdTVF9CVUZGRVJfREFUQShjaGFubmVsQnVmZmVyKSksIHByaXYtPmZyYW1lc1RvUHVsbCk7Ci0j
ZW5kaWYKICAgICB9CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGxvY2FsL2xpdmUg
YXVkaW8gaW5wdXQuCkBAIC0zNzksMTQgKzMzOCw2IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1
ZGlvU3JjTG9vcChXZWJLaXRXZWJBdWRpb1NyYyogc3JjKQogICAgICAgICBHc3RQYWQqIHBhZCA9
IHN0YXRpY19jYXN0PEdzdFBhZCo+KHBhZHNJdC0+ZGF0YSk7CiAgICAgICAgIEdzdEJ1ZmZlciog
Y2hhbm5lbEJ1ZmZlciA9IHN0YXRpY19jYXN0PEdzdEJ1ZmZlcio+KGJ1ZmZlcnNJdC0+ZGF0YSk7
CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICAgICAgR1JlZlB0cjxHc3RDYXBzPiBt
b25vQ2FwcyA9IGFkb3B0R1JlZihnZXRHU3RyZWFtZXJNb25vQXVkaW9DYXBzKHByaXYtPnNhbXBs
ZVJhdGUpKTsKLSAgICAgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRf
c3RydWN0dXJlKG1vbm9DYXBzLmdldCgpLCAwKTsKLSAgICAgICAgR3N0QXVkaW9DaGFubmVsUG9z
aXRpb24gY2hhbm5lbFBvc2l0aW9uID0gd2ViS2l0V2ViQXVkaW9HU3RyZWFtZXJDaGFubmVsUG9z
aXRpb24oaSk7Ci0gICAgICAgIGdzdF9hdWRpb19zZXRfY2hhbm5lbF9wb3NpdGlvbnMoc3RydWN0
dXJlLCAmY2hhbm5lbFBvc2l0aW9uKTsKLSAgICAgICAgZ3N0X2J1ZmZlcl9zZXRfY2FwcyhjaGFu
bmVsQnVmZmVyLCBtb25vQ2Fwcy5nZXQoKSk7Ci0jZW5kaWYKLQogICAgICAgICBHc3RGbG93UmV0
dXJuIHJldCA9IGdzdF9wYWRfY2hhaW4ocGFkLCBjaGFubmVsQnVmZmVyKTsKICAgICAgICAgaWYg
KHJldCAhPSBHU1RfRkxPV19PSykKICAgICAgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKHNyYywg
Q09SRSwgUEFELCAoIkludGVybmFsIFdlYkF1ZGlvU3JjIGVycm9yIiksICgiRmFpbGVkIHRvIHB1
c2ggYnVmZmVyIG9uICVzOiVzIiwgR1NUX0RFQlVHX1BBRF9OQU1FKHBhZCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNr
UHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDkwZDMwYTY5YTQ2
ODBiYzQxYjg5N2RkYzEzMmYxNmRlOWU0OWYwYTEuLjJmMGRlYmNjMDg3YzZmOWFmNDdkMTUzNzY2
NmM5ODIyNDg2ODg1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0
cmVhbWVyLmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNp
ZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykg
JiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShH
U1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmgiCiAKQEAgLTU4LDQgKzU4LDQgQEAgdm9pZCBBdWRpb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lcjo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYg
RU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlm
IC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNL
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBiMWU4
YTQ4Yzc0MWUyZDEyNTU3ZGIxNDJhMDRhYTdmNzAxZjYzMDI1Li4zMjQyNjhiNjY3NzY1NjVlZjFk
ZjY2MzkzMDJiMWI4NjZmM2VkNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBBdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lcl9oCiAjZGVmaW5lIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyX2gKIAotI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAm
JiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdT
VFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiQXVkaW9UcmFja1By
aXZhdGUuaCIKICNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCkBAIC01OSw2ICs1OSw2IEBA
IHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShW
SURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVk
KEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJF
QU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjZW5kaWYgLy8gQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuY3BwCmluZGV4IDJhZGRjY2Qz
M2ZjNDI1NDE2YTY1OWQwY2YxYjVhZTU4ZWI5ODNhZTUuLjUyZDc3MGE2NjhjZTM3NWU5NDVmMzY3
ZDkyMTk1NjQwOTI1MWUwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAKQEAgLTE4
NCw3ICsxODQsNiBAQCB0ZW1wbGF0ZTw+IHZvaWQgZGVyZWZHUHRyPEdzdEJ1ZmZlcj4oR3N0QnVm
ZmVyKiBwdHIpCiAgICAgICAgIGdzdF9idWZmZXJfdW5yZWYocHRyKTsKIH0KIAotI2lmZGVmIEdT
VF9BUElfVkVSU0lPTl8xCiB0ZW1wbGF0ZTw+IEdSZWZQdHI8R3N0U2FtcGxlPiBhZG9wdEdSZWYo
R3N0U2FtcGxlKiBwdHIpCiB7CiAgICAgcmV0dXJuIEdSZWZQdHI8R3N0U2FtcGxlPihwdHIsIEdS
ZWZQdHJBZG9wdCk7CkBAIC0yMjIsNyArMjIxLDYgQEAgdGVtcGxhdGU8PiB2b2lkIGRlcmVmR1B0
cjxHc3RUYWdMaXN0PihHc3RUYWdMaXN0KiBwdHIpCiAgICAgaWYgKHB0cikKICAgICAgICAgZ3N0
X3RhZ19saXN0X3VucmVmKHB0cik7CiB9Ci0jZW5kaWYKIAogdGVtcGxhdGU8PiBHUmVmUHRyPEdz
dEV2ZW50PiBhZG9wdEdSZWYoR3N0RXZlbnQqIHB0cikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1l
ci5oCmluZGV4IDVlMDU2NTdlNTdjN2Y0MDI1Y2ZhMzU1ZGY4YmU3YTY3Njc3M2E0MWIuLjJjZTBh
MWQ4MDhhZTIyNDU2ZWFiMzM4ZjU0MDU1MjU1ZDNhYzE5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3Ry
ZWFtZXIuaApAQCAtMzEsMTAgKzMxLDggQEAgdHlwZWRlZiBzdHJ1Y3QgX0dzdFRhc2sgR3N0VGFz
azsKIHR5cGVkZWYgc3RydWN0IF9Hc3RCdXMgR3N0QnVzOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEVs
ZW1lbnRGYWN0b3J5IEdzdEVsZW1lbnRGYWN0b3J5OwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEJ1ZmZl
ciBHc3RCdWZmZXI7Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKIHR5cGVkZWYgc3RydWN0IF9H
c3RTYW1wbGUgR3N0U2FtcGxlOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdFRhZ0xpc3QgR3N0VGFnTGlz
dDsKLSNlbmRpZgogdHlwZWRlZiBzdHJ1Y3QgX0dzdEV2ZW50IEdzdEV2ZW50OwogdHlwZWRlZiBz
dHJ1Y3QgX0dzdFRvYyBHc3RUb2M7CiAKQEAgLTcyLDE3ICs3MCwxMyBAQCB0ZW1wbGF0ZTw+IEdS
ZWZQdHI8R3N0QnVmZmVyPiBhZG9wdEdSZWYoR3N0QnVmZmVyKiBwdHIpOwogdGVtcGxhdGU8PiBH
c3RCdWZmZXIqIHJlZkdQdHI8R3N0QnVmZmVyPihHc3RCdWZmZXIqIHB0cik7CiB0ZW1wbGF0ZTw+
IHZvaWQgZGVyZWZHUHRyPEdzdEJ1ZmZlcj4oR3N0QnVmZmVyKiBwdHIpOwogCi0jaWZkZWYgR1NU
X0FQSV9WRVJTSU9OXzEKLS8qIEdzdFNhbXBsZSB3YXMgYWRkZWQgaW4gR1N0cmVhbWVyIDEuMCAq
LwogdGVtcGxhdGU8PiBHUmVmUHRyPEdzdFNhbXBsZT4gYWRvcHRHUmVmKEdzdFNhbXBsZSogcHRy
KTsKIHRlbXBsYXRlPD4gR3N0U2FtcGxlKiByZWZHUHRyPEdzdFNhbXBsZT4oR3N0U2FtcGxlKiBw
dHIpOwogdGVtcGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxHc3RTYW1wbGU+KEdzdFNhbXBsZSogcHRy
KTsKIAotLyogR3N0VGFnTGlzdCBpc24ndCByZWZjb3VudGVkIGluIEdTdHJlYW1lciAwLjEwICov
CiB0ZW1wbGF0ZTw+IEdSZWZQdHI8R3N0VGFnTGlzdD4gYWRvcHRHUmVmKEdzdFRhZ0xpc3QqIHB0
cik7CiB0ZW1wbGF0ZTw+IEdzdFRhZ0xpc3QqIHJlZkdQdHI8R3N0VGFnTGlzdD4oR3N0VGFnTGlz
dCogcHRyKTsKIHRlbXBsYXRlPD4gdm9pZCBkZXJlZkdQdHI8R3N0VGFnTGlzdD4oR3N0VGFnTGlz
dCogcHRyKTsKLSNlbmRpZgogCiB0ZW1wbGF0ZTw+IEdSZWZQdHI8R3N0RXZlbnQ+IGFkb3B0R1Jl
ZihHc3RFdmVudCogcHRyKTsKIHRlbXBsYXRlPD4gR3N0RXZlbnQqIHJlZkdQdHI8R3N0RXZlbnQ+
KEdzdEV2ZW50KiBwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3BwCmluZGV4
IDM1ZTk2YjM0MmJiZDdiZDcyNDBkYWMyZjMxNDE1OTg1M2FhYTkzNDUuLjM3NzMwNGI5N2I4Nzhh
YTI1OGMxMmQxN2VmZTNmZDVmMDEzNGRlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lv
bmluZy5jcHAKQEAgLTI1LDI1ICsyNSwxMyBAQAogI2lmIFVTRShHU1RSRUFNRVIpCiAjaW5jbHVk
ZSAiSW50U2l6ZS5oIgogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICNpbmNsdWRlIDxnc3Qv
YXVkaW8vYXVkaW8uaD4KLSNlbHNlCi0jaW5jbHVkZSA8Z3N0L2F1ZGlvL211bHRpY2hhbm5lbC5o
PgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2VuZGlmCiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05f
MQogY29uc3QgY2hhciogd2Via2l0R3N0TWFwSW5mb1F1YXJrU3RyaW5nID0gIndlYmtpdC1nc3Qt
bWFwLWluZm8iOwotI2VuZGlmCiAKIHZvaWQgd2Via2l0R3N0T2JqZWN0UmVmU2luayhHc3RPYmpl
Y3QqIGdzdE9iamVjdCkKIHsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGdzdF9vYmpl
Y3RfcmVmX3NpbmsoZ3N0T2JqZWN0KTsKLSNlbHNlCi0gICAgZ3N0X29iamVjdF9yZWYoZ3N0T2Jq
ZWN0KTsKLSAgICBnc3Rfb2JqZWN0X3NpbmsoZ3N0T2JqZWN0KTsKLSNlbmRpZgogfQogCiBHc3RQ
YWQqIHdlYmtpdEdzdEdob3N0UGFkRnJvbVN0YXRpY1RlbXBsYXRlKEdzdFN0YXRpY1BhZFRlbXBs
YXRlKiBzdGF0aWNQYWRUZW1wbGF0ZSwgY29uc3QgZ2NoYXIqIG5hbWUsIEdzdFBhZCogdGFyZ2V0
KQpAQCAtNTYsOSArNDQsNyBAQCBHc3RQYWQqIHdlYmtpdEdzdEdob3N0UGFkRnJvbVN0YXRpY1Rl
bXBsYXRlKEdzdFN0YXRpY1BhZFRlbXBsYXRlKiBzdGF0aWNQYWRUZW1wbAogICAgIGVsc2UKICAg
ICAgICAgcGFkID0gZ3N0X2dob3N0X3BhZF9uZXdfbm9fdGFyZ2V0X2Zyb21fdGVtcGxhdGUobmFt
ZSwgcGFkVGVtcGxhdGUpOwogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBnc3Rfb2Jq
ZWN0X3VucmVmKHBhZFRlbXBsYXRlKTsKLSNlbmRpZgogCiAgICAgcmV0dXJuIHBhZDsKIH0KQEAg
LTY4LDI4ICs1NCwxNyBAQCBHUmVmUHRyPEdzdENhcHM+IHdlYmtpdEdzdEdldFBhZENhcHMoR3N0
UGFkKiBwYWQpCiAgICAgaWYgKCFwYWQpCiAgICAgICAgIHJldHVybiAwOwogCi0jaWZkZWYgR1NU
X0FQSV9WRVJTSU9OXzEKICAgICByZXR1cm4gYWRvcHRHUmVmKGdzdF9wYWRfZ2V0X2N1cnJlbnRf
Y2FwcyhwYWQpKTsgLy8gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIHJldHVybiBhIG5ldyByZWZl
cmVuY2UuCi0jZWxzZQotICAgIHJldHVybiBHU1RfUEFEX0NBUFMocGFkKTsKLSNlbmRpZgogfQog
CiBHUmVmUHRyPEdzdEJ1cz4gd2Via2l0R3N0UGlwZWxpbmVHZXRCdXMoR3N0UGlwZWxpbmUqIHBp
cGVsaW5lKQogewotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgcmV0dXJuIGFkb3B0R1Jl
Zihnc3RfcGlwZWxpbmVfZ2V0X2J1cyhwaXBlbGluZSkpOwotI2Vsc2UKLSAgICAvLyBnc3RfcGlw
ZWxpbmVfZ2V0X2J1cyByZXR1cm5zIGEgZmxvYXRpbmcgcmVmZXJlbmNlIGluCi0gICAgLy8gZ3N0
cmVhbWVyIDAuMTAgc28gd2Ugc2hvdWxkIG5vdCBhZG9wdC4KLSAgICByZXR1cm4gZ3N0X3BpcGVs
aW5lX2dldF9idXMocGlwZWxpbmUpOwotI2VuZGlmCiB9CiAKICNpZiBFTkFCTEUoVklERU8pCiBi
b29sIGdldFZpZGVvU2l6ZUFuZEZvcm1hdEZyb21DYXBzKEdzdENhcHMqIGNhcHMsIFdlYkNvcmU6
OkludFNpemUmIHNpemUsIEdzdFZpZGVvRm9ybWF0JiBmb3JtYXQsIGludCYgcGl4ZWxBc3BlY3RS
YXRpb051bWVyYXRvciwgaW50JiBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IsIGludCYgc3Ry
aWRlKQogewotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgR3N0VmlkZW9JbmZvIGluZm87
CiAKICAgICBpZiAoIWdzdF9jYXBzX2lzX2ZpeGVkKGNhcHMpIHx8ICFnc3RfdmlkZW9faW5mb19m
cm9tX2NhcHMoJmluZm8sIGNhcHMpKQpAQCAtMTAxLDE3ICs3Niw2IEBAIGJvb2wgZ2V0VmlkZW9T
aXplQW5kRm9ybWF0RnJvbUNhcHMoR3N0Q2FwcyogY2FwcywgV2ViQ29yZTo6SW50U2l6ZSYgc2l6
ZSwgR3N0VmlkCiAgICAgcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciA9IEdTVF9WSURFT19JTkZP
X1BBUl9OKCZpbmZvKTsKICAgICBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IgPSBHU1RfVklE
RU9fSU5GT19QQVJfRCgmaW5mbyk7CiAgICAgc3RyaWRlID0gR1NUX1ZJREVPX0lORk9fUExBTkVf
U1RSSURFKCZpbmZvLCAwKTsKLSNlbHNlCi0gICAgZ2ludCB3aWR0aCwgaGVpZ2h0OwotICAgIGlm
ICghR1NUX0lTX0NBUFMoY2FwcykgfHwgIWdzdF9jYXBzX2lzX2ZpeGVkKGNhcHMpCi0gICAgICAg
IHx8ICFnc3RfdmlkZW9fZm9ybWF0X3BhcnNlX2NhcHMoY2FwcywgJmZvcm1hdCwgJndpZHRoLCAm
aGVpZ2h0KQotICAgICAgICB8fCAhZ3N0X3ZpZGVvX3BhcnNlX2NhcHNfcGl4ZWxfYXNwZWN0X3Jh
dGlvKGNhcHMsICZwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwaXhlbEFzcGVjdFJhdGlvRGVub21p
bmF0b3IpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgc2l6ZS5zZXRXaWR0aCh3aWR0aCk7
Ci0gICAgc2l6ZS5zZXRIZWlnaHQoaGVpZ2h0KTsKLSAgICBzdHJpZGUgPSBzaXplLndpZHRoKCkg
KiA0OwotI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTExOSwyMSArODMsMTMgQEAg
Ym9vbCBnZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9tQ2FwcyhHc3RDYXBzKiBjYXBzLCBXZWJDb3Jl
OjpJbnRTaXplJiBzaXplLCBHc3RWaWQKIAogR3N0QnVmZmVyKiBjcmVhdGVHc3RCdWZmZXIoR3N0
QnVmZmVyKiBidWZmZXIpCiB7Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgR3N0QnVm
ZmVyKiBuZXdCdWZmZXIgPSBnc3RfYnVmZmVyX3RyeV9uZXdfYW5kX2FsbG9jKEdTVF9CVUZGRVJf
U0laRShidWZmZXIpKTsKLSNlbHNlCiAgICAgZ3NpemUgYnVmZmVyU2l6ZSA9IGdzdF9idWZmZXJf
Z2V0X3NpemUoYnVmZmVyKTsKICAgICBHc3RCdWZmZXIqIG5ld0J1ZmZlciA9IGdzdF9idWZmZXJf
bmV3X2FuZF9hbGxvYyhidWZmZXJTaXplKTsKLSNlbmRpZgogCiAgICAgaWYgKCFuZXdCdWZmZXIp
CiAgICAgICAgIHJldHVybiAwOwogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgZ3N0
X2J1ZmZlcl9jb3B5X21ldGFkYXRhKG5ld0J1ZmZlciwgYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RC
dWZmZXJDb3B5RmxhZ3M+KEdTVF9CVUZGRVJfQ09QWV9BTEwpKTsKLSNlbHNlCiAgICAgZ3N0X2J1
ZmZlcl9jb3B5X2ludG8obmV3QnVmZmVyLCBidWZmZXIsIHN0YXRpY19jYXN0PEdzdEJ1ZmZlckNv
cHlGbGFncz4oR1NUX0JVRkZFUl9DT1BZX01FVEFEQVRBKSwgMCwgYnVmZmVyU2l6ZSk7Ci0jZW5k
aWYKICAgICByZXR1cm4gbmV3QnVmZmVyOwogfQogCkBAIC0xNDEsNDUgKzk3LDI4IEBAIEdzdEJ1
ZmZlciogY3JlYXRlR3N0QnVmZmVyRm9yRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQogewogICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jKGxl
bmd0aCk7CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGdzdF9idWZmZXJfZmlsbChi
dWZmZXIsIDAsIGRhdGEsIGxlbmd0aCk7Ci0jZWxzZQotICAgIG1lbWNweShHU1RfQlVGRkVSX0RB
VEEoYnVmZmVyKSwgZGF0YSwgbGVuZ3RoKTsKLSNlbmRpZgogCiAgICAgcmV0dXJuIGJ1ZmZlcjsK
IH0KIAogaW50IGdldEdzdEJ1ZmZlclNpemUoR3N0QnVmZmVyKiBidWZmZXIpCiB7Ci0jaWZkZWYg
R1NUX0FQSV9WRVJTSU9OXzEKICAgICByZXR1cm4gZ3N0X2J1ZmZlcl9nZXRfc2l6ZShidWZmZXIp
OwotI2Vsc2UKLSAgICByZXR1cm4gR1NUX0JVRkZFUl9TSVpFKGJ1ZmZlcik7Ci0jZW5kaWYKIH0K
IAogdm9pZCBzZXRHc3RCdWZmZXJTaXplKEdzdEJ1ZmZlciogYnVmZmVyLCBpbnQgbmV3U2l6ZSkK
IHsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGdzdF9idWZmZXJfc2V0X3NpemUoYnVm
ZmVyLCBzdGF0aWNfY2FzdDxnc3NpemU+KG5ld1NpemUpKTsKLSNlbHNlCi0gICAgR1NUX0JVRkZF
Ul9TSVpFKGJ1ZmZlcikgPSBzdGF0aWNfY2FzdDxnc2l6ZT4obmV3U2l6ZSk7Ci0jZW5kaWYKIH0K
IAogY2hhciogZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIoR3N0QnVmZmVyKiBidWZmZXIpCiB7Ci0j
aWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBHc3RNaW5pT2JqZWN0KiBtaW5pT2JqZWN0ID0g
cmVpbnRlcnByZXRfY2FzdDxHc3RNaW5pT2JqZWN0Kj4oYnVmZmVyKTsKICAgICBHc3RNYXBJbmZv
KiBtYXBJbmZvID0gc3RhdGljX2Nhc3Q8R3N0TWFwSW5mbyo+KGdzdF9taW5pX29iamVjdF9nZXRf
cWRhdGEobWluaU9iamVjdCwgZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcod2Via2l0R3N0TWFw
SW5mb1F1YXJrU3RyaW5nKSkpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPiht
YXBJbmZvLT5kYXRhKTsKLSNlbHNlCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KEdTVF9CVUZGRVJfREFUQShidWZmZXIpKTsKLSNlbmRpZgogfQogCi0jaWZkZWYgR1NUX0FQSV9W
RVJTSU9OXzEKIHZvaWQgbWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciogYnVmZmVyKQogewogICAgIEdz
dE1hcEluZm8qIG1hcEluZm8gPSBnX3NsaWNlX25ldyhHc3RNYXBJbmZvKTsKQEAgLTIwNCw1MCAr
MTQzLDMwIEBAIHZvaWQgdW5tYXBHc3RCdWZmZXIoR3N0QnVmZmVyKiBidWZmZXIpCiAgICAgZ3N0
X2J1ZmZlcl91bm1hcChidWZmZXIsIG1hcEluZm8pOwogICAgIGdfc2xpY2VfZnJlZShHc3RNYXBJ
bmZvLCBtYXBJbmZvKTsKIH0KLSNlbmRpZgogCiB2b2lkIHNldEdzdEVsZW1lbnRDbGFzc01ldGFk
YXRhKEdzdEVsZW1lbnRDbGFzcyogZWxlbWVudENsYXNzLCBjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBjaGFyKiBsb25nTmFtZSwgY29uc3QgY2hhciogZGVzY3JpcHRpb24sIGNvbnN0IGNoYXIqIGF1
dGhvcikKIHsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGdzdF9lbGVtZW50X2NsYXNz
X3NldF9tZXRhZGF0YShlbGVtZW50Q2xhc3MsIG5hbWUsIGxvbmdOYW1lLCBkZXNjcmlwdGlvbiwg
YXV0aG9yKTsKLSNlbHNlCi0gICAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X2RldGFpbHNfc2ltcGxl
KGVsZW1lbnRDbGFzcywgbmFtZSwgbG9uZ05hbWUsIGRlc2NyaXB0aW9uLCBhdXRob3IpOwotI2Vu
ZGlmCiB9CiAKIGJvb2wgZ3N0T2JqZWN0SXNGbG9hdGluZyhHc3RPYmplY3QqIGdzdE9iamVjdCkK
IHsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIHJldHVybiBnX29iamVjdF9pc19mbG9h
dGluZyhHX09CSkVDVChnc3RPYmplY3QpKTsKLSNlbHNlCi0gICAgcmV0dXJuIEdTVF9PQkpFQ1Rf
SVNfRkxPQVRJTkcoZ3N0T2JqZWN0KTsKLSNlbmRpZgogfQogCiB2b2lkIG5vdGlmeUdzdFRhZ3NP
blBhZChHc3RFbGVtZW50KiBlbGVtZW50LCBHc3RQYWQqIHBhZCwgR3N0VGFnTGlzdCogdGFncykK
IHsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsK
ICAgICBnc3RfcGFkX3B1c2hfZXZlbnQoR1NUX1BBRF9DQVNUKHBhZCksIGdzdF9ldmVudF9uZXdf
dGFnKHRhZ3MpKTsKLSNlbHNlCi0gICAgZ3N0X2VsZW1lbnRfZm91bmRfdGFnc19mb3JfcGFkKGVs
ZW1lbnQsIHBhZCwgdGFncyk7Ci0jZW5kaWYKIH0KIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiBH
c3RDYXBzKiBnZXRHc3RBdWRpb0NhcHMoaW50IGNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQog
ewotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgcmV0dXJuIGdzdF9jYXBzX25ld19zaW1w
bGUoImF1ZGlvL3gtcmF3IiwgInJhdGUiLCBHX1RZUEVfSU5ULCBzdGF0aWNfY2FzdDxpbnQ+KHNh
bXBsZVJhdGUpLAogICAgICAgICAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCBjaGFubmVscywKICAg
ICAgICAgImZvcm1hdCIsIEdfVFlQRV9TVFJJTkcsIGdzdF9hdWRpb19mb3JtYXRfdG9fc3RyaW5n
KEdTVF9BVURJT19GT1JNQVRfRjMyKSwKICAgICAgICAgImxheW91dCIsIEdfVFlQRV9TVFJJTkcs
ICJpbnRlcmxlYXZlZCIsIE5VTEwpOwotI2Vsc2UKLSAgICByZXR1cm4gZ3N0X2NhcHNfbmV3X3Np
bXBsZSgiYXVkaW8veC1yYXctZmxvYXQiLCAicmF0ZSIsIEdfVFlQRV9JTlQsIHN0YXRpY19jYXN0
PGludD4oc2FtcGxlUmF0ZSksCi0gICAgICAgICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIGNoYW5u
ZWxzLAotICAgICAgICAiZW5kaWFubmVzcyIsIEdfVFlQRV9JTlQsIEdfQllURV9PUkRFUiwKLSAg
ICAgICAgIndpZHRoIiwgR19UWVBFX0lOVCwgMzIsIE5VTEwpOwotI2VuZGlmCiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclZlcnNpb25pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmgKaW5kZXggMjQwNTViYjc0MWZkOTA3YWRj
MjU5YzVhNzg0MzEzNGQ2YzU3ZWVmZC4uYmM1ZGExZWYyYzA2YTgwOTg5ODkwZTQ3MTY1M2ViNWQx
OGE3NzJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5oCkBAIC02MiwxMCArNjIs
OCBAQCBHc3RCdWZmZXIqIGNyZWF0ZUdzdEJ1ZmZlckZvckRhdGEoY29uc3QgY2hhciogZGF0YSwg
aW50IGxlbmd0aCk7CiBpbnQgZ2V0R3N0QnVmZmVyU2l6ZShHc3RCdWZmZXIqKTsKIHZvaWQgc2V0
R3N0QnVmZmVyU2l6ZShHc3RCdWZmZXIqLCBpbnQgbmV3U2l6ZSk7CiBjaGFyKiBnZXRHc3RCdWZm
ZXJEYXRhUG9pbnRlcihHc3RCdWZmZXIqKTsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogdm9p
ZCBtYXBHc3RCdWZmZXIoR3N0QnVmZmVyKik7CiB2b2lkIHVubWFwR3N0QnVmZmVyKEdzdEJ1ZmZl
ciopOwotI2VuZGlmCiB2b2lkIHNldEdzdEVsZW1lbnRDbGFzc01ldGFkYXRhKEdzdEVsZW1lbnRD
bGFzcyosIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIGxvbmdOYW1lLCBjb25zdCBjaGFy
KiBkZXNjcmlwdGlvbiwgY29uc3QgY2hhciogYXV0aG9yKTsKIGJvb2wgZ3N0T2JqZWN0SXNGbG9h
dGluZyhHc3RPYmplY3QqKTsKIHZvaWQgbm90aWZ5R3N0VGFnc09uUGFkKEdzdEVsZW1lbnQqLCBH
c3RQYWQqLCBHc3RUYWdMaXN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCmluZGV4IDhiNDZjZDY4
OGQyZDQzZDBmNmE2Y2RlMGMwNDhmYWU2YjMxYzRmZWIuLjhmNTYwNTBmNDU5YzRjNDI4NWFlZDI3
N2ZhMTk1MTM1MjhiYzFlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCkBAIC02MCw3ICs2MCw3
IEBAIGNsYXNzIEltYWdlR1N0cmVhbWVyIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VHU3RyZWFt
ZXI+IHsKICAgICAgICAgUmVmUHRyPEJpdG1hcEltYWdlPiBtX2ltYWdlOwogICAgICAgICBGbG9h
dFJlY3QgbV9jcm9wUmVjdDsKIAotI2lmIFVTRShDQUlSTykgJiYgZGVmaW5lZChHU1RfQVBJX1ZF
UlNJT05fMSkKKyNpZiBVU0UoQ0FJUk8pCiAgICAgICAgIEdSZWZQdHI8R3N0QnVmZmVyPiBtX2J1
ZmZlcjsKICAgICAgICAgR3N0TWFwSW5mbyBtX21hcEluZm87CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1l
ckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lckNhaXJvLmNwcAppbmRleCA3NWUxMjZmMWI0ODk2ZjUyNWE2OWQ1Y2M5NzQy
M2UzNDYyYzYwMTMyLi4zMTI2MzMyODQ3YjNiYmIxMzUxNTNlYzNjYTdiNmNkZmU0MDg1OWY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VHU3RyZWFtZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwCkBAIC0yNiwzMCArMjYsMjIgQEAK
ICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgog
Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9t
ZXRhLmg+Ci0jZW5kaWYKIAogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIEltYWdlR1N0cmVhbWVyOjpJbWFnZUdTdHJlYW1lcihHc3RCdWZmZXIqIGJ1
ZmZlciwgR3N0Q2FwcyogY2FwcykKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIDogbV9i
dWZmZXIoYnVmZmVyKQotI2VuZGlmCiB7CiAgICAgR3N0VmlkZW9Gb3JtYXQgZm9ybWF0OwogICAg
IEludFNpemUgc2l6ZTsKICAgICBpbnQgcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciwgcGl4ZWxB
c3BlY3RSYXRpb0Rlbm9taW5hdG9yLCBzdHJpZGU7CiAgICAgZ2V0VmlkZW9TaXplQW5kRm9ybWF0
RnJvbUNhcHMoY2Fwcywgc2l6ZSwgZm9ybWF0LCBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBw
aXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IsIHN0cmlkZSk7CiAKLSNpZmRlZiBHU1RfQVBJX1ZF
UlNJT05fMQogICAgIGdzdF9idWZmZXJfbWFwKGJ1ZmZlciwgJm1fbWFwSW5mbywgR1NUX01BUF9S
RUFEKTsKICAgICB1bnNpZ25lZCBjaGFyKiBidWZmZXJEYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1
bnNpZ25lZCBjaGFyKj4obV9tYXBJbmZvLmRhdGEpOwotI2Vsc2UKLSAgICB1bnNpZ25lZCBjaGFy
KiBidWZmZXJEYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oR1NUX0JVRkZF
Ul9EQVRBKGJ1ZmZlcikpOwotI2VuZGlmCiAKICAgICBjYWlyb19mb3JtYXRfdCBjYWlyb0Zvcm1h
dDsKICNpZiBHX0JZVEVfT1JERVIgPT0gR19MSVRUTEVfRU5ESUFOCkBAIC02MiwxMCArNTQsOCBA
QCBJbWFnZUdTdHJlYW1lcjo6SW1hZ2VHU3RyZWFtZXIoR3N0QnVmZmVyKiBidWZmZXIsIEdzdENh
cHMqIGNhcHMpCiAgICAgQVNTRVJUKGNhaXJvX3N1cmZhY2Vfc3RhdHVzKHN1cmZhY2UuZ2V0KCkp
ID09IENBSVJPX1NUQVRVU19TVUNDRVNTKTsKICAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNy
ZWF0ZShzdXJmYWNlLnJlbGVhc2UoKSk7CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAg
IGlmIChHc3RWaWRlb0Nyb3BNZXRhKiBjcm9wTWV0YSA9IGdzdF9idWZmZXJfZ2V0X3ZpZGVvX2Ny
b3BfbWV0YShidWZmZXIpKQogICAgICAgICBzZXRDcm9wUmVjdChGbG9hdFJlY3QoY3JvcE1ldGEt
PngsIGNyb3BNZXRhLT55LCBjcm9wTWV0YS0+d2lkdGgsIGNyb3BNZXRhLT5oZWlnaHQpKTsKLSNl
bmRpZgogfQogCiBJbWFnZUdTdHJlYW1lcjo6fkltYWdlR1N0cmVhbWVyKCkKQEAgLTc1LDEwICs2
NSw4IEBAIEltYWdlR1N0cmVhbWVyOjp+SW1hZ2VHU3RyZWFtZXIoKQogCiAgICAgbV9pbWFnZSA9
IDA7CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIC8vIFdlIGtlZXAgdGhlIGJ1ZmZl
ciBtZW1vcnkgbWFwcGVkIHVudGlsIHRoZSBpbWFnZSBpcyBkZXN0cm95ZWQgYmVjYXVzZSB0aGUg
aW50ZXJuYWwKICAgICAvLyBjYWlyb19zdXJmYWNlX3Qgd2FzIGNyZWF0ZWQgdXNpbmcgY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoKS4KICAgICBnc3RfYnVmZmVyX3VubWFwKG1f
YnVmZmVyLmdldCgpLCAmbV9tYXBJbmZvKTsKLSNlbmRpZgogfQogI2VuZGlmIC8vIFVTRShHU1RS
RUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggMmRiNjVlNGY1YzZhMmFiMWMxZWU1ZjUxZTQ4ZjM3
M2M4NmE2ZTA0MS4uMDNlNDAxZGE2ZGEzZDQ2NGRiMzE2NTg0NTk4MWM1MmE5MjIxNTJjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFu
ZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXIuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBJbmJhbmRNZXRhZGF0YVRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXJfaAogI2RlZmluZSBJbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXJfaAogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVS
KSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisj
aWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0sp
CiAKICNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZS5oIgpAQCAtNTcsNiArNTcsNiBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYm
IEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNlbmRp
ZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFD
SykKIAogI2VuZGlmIC8vIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5j
cHAKaW5kZXggYzg0OWI4Y2ViMDdmNzJjNjMwNDhmODg3NDEyNWVmYThmZGZmZmVkZC4uYmVkMTBm
YWE3YzI1NWJmNmY3ZjBlYWU5MTUyZjg4NzEzYmViNmRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjUsNyArMjUsNyBA
QAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RS
RUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05f
MSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19U
UkFDSykKIAogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKIApA
QCAtMTU3LDQgKzE1Nyw0IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6
bm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURF
T19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNlbmRpZiAvLyBFTkFCTEUo
VklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDQzODhm
OTgwYzA2NmEzNjJlM2Y3MDU1NGZhNjYzMGNlYjY3N2FkMjYuLmFjNWQyMDZmYjU2MzRjZTZmYjhl
MDNkZDA4NzZlN2NlZTJiMTk1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRU
cmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyX2gKICNkZWZpbmUgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUdTdHJlYW1lcl9oCiAKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVO
QUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFC
TEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2lu
Y2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2
YXRlLmgiCkBAIC03MSw2ICs3MSw2IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxF
KFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVO
QUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAj
ZW5kaWYgLy8gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDQ2MDI5Nzk3ZjFmNjc5
NDM3ZjE2NTdlMDFlZGUxMWE1ZGQwMzI3ZmUuLmE3NWFlYjdkMzdlODNmMDJiZTc0YTMyODdjNWJm
MjM4N2JjMGQ4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShWSURFT19U
UkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCiAjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJJ
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJJbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCkBAIC01MCwxMSArNTAsNyBAQAogI2luY2x1
ZGUgIlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCiAjZW5kaWYKIAotI2lmZGVmIEdTVF9B
UElfVkVSU0lPTl8xCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL3N0cmVhbXZvbHVtZS5oPgotI2Vsc2UK
LSNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy9zdHJlYW12b2x1bWUuaD4KLSNlbmRpZgogCiAjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKICNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgpAQCAtNzYsMTgg
KzcyLDYgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBHU1RfUExBWV9GTEFHX0JVRkZFUklORyAgICAg
PSAweDAwMDAwMDEwMAogfSBHc3RQbGF5RmxhZ3M7CiAKLS8vIGdQZXJjZW50TWF4IGlzIHVzZWQg
d2hlbiBwYXJzaW5nIGJ1ZmZlcmluZyByYW5nZXMgd2l0aAotLy8gZ3N0X3F1ZXJ5X3BhcnNlX250
aF9idWZmZXJpbmdfcmFuZ2UgYXMgdGhlcmUgd2FzIGEgYnVnIGluIEdTdHJlYW1lcgotLy8gMC4x
MCB0aGF0IHdhcyB1c2luZyAxMDAgaW5zdGVhZCBvZiBHU1RfRk9STUFUX1BFUkNFTlRfTUFYLiBU
aGlzIHdhcwotLy8gY29ycmVjdGVkIGluIDEuMC4gZ3N0X3F1ZXJ5X3BhcnNlX2J1ZmZlcmluZ19y
YW5nZSB3b3JrZWQgYXMKLS8vIGV4cGVjdGVkIHdpdGggR1NUX0ZPUk1BVF9QRVJDRU5UX01BWCBp
biBib3RoIGNhc2VzLgotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi1zdGF0aWMgY29uc3QgY2hh
ciogZ1BsYXliaW5OYW1lID0gInBsYXliaW4iOwotc3RhdGljIGNvbnN0IGdpbnQ2NCBnUGVyY2Vu
dE1heCA9IEdTVF9GT1JNQVRfUEVSQ0VOVF9NQVg7Ci0jZWxzZQotc3RhdGljIGNvbnN0IGNoYXIq
IGdQbGF5YmluTmFtZSA9ICJwbGF5YmluMiI7Ci1zdGF0aWMgY29uc3QgZ2ludDY0IGdQZXJjZW50
TWF4ID0gMTAwOwotI2VuZGlmCiAvLyBNYXggaW50ZXJ2YWwgaW4gc2Vjb25kcyB0byBzdGF5IGlu
IHRoZSBSRUFEWSBzdGF0ZSBvbiBtYW51YWwKIC8vIHN0YXRlIGNoYW5nZSByZXF1ZXN0cy4KIHN0
YXRpYyBjb25zdCBndWludCBnUmVhZHlTdGF0ZVRpbWVySW50ZXJ2YWwgPSA2MDsKQEAgLTEzMSwx
MiArMTE1LDggQEAgc3RhdGljIGdib29sZWFuIG1lZGlhUGxheWVyUHJpdmF0ZUF1ZGlvQ2hhbmdl
VGltZW91dENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdmF0ZUcKICAgICByZXR1cm4gRkFMU0U7CiB9
CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogc3RhdGljIHZvaWQgc2V0QXVkaW9TdHJlYW1Q
cm9wZXJ0aWVzQ2FsbGJhY2soR3N0Q2hpbGRQcm94eSosIEdPYmplY3QqIG9iamVjdCwgZ2NoYXIq
LAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQotI2Vsc2UKLXN0YXRp
YyB2b2lkIHNldEF1ZGlvU3RyZWFtUHJvcGVydGllc0NhbGxiYWNrKEdzdENoaWxkUHJveHkqLCBH
T2JqZWN0KiBvYmplY3QsIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQotI2Vu
ZGlmCiB7CiAgICAgcGxheWVyLT5zZXRBdWRpb1N0cmVhbVByb3BlcnRpZXMob2JqZWN0KTsKIH0K
QEAgLTE1NSw3ICsxMzUsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2YXRlVmlk
ZW9DYXBzQ2hhbmdlVGltZW91dENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdgogICAgIHJldHVybiBG
QUxTRTsKIH0KIAotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZF
UlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBzdGF0aWMgdm9pZCBtZWRpYVBsYXll
clByaXZhdGVUZXh0Q2hhbmdlZENhbGxiYWNrKEdPYmplY3QqLCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIqIHBsYXllcikKIHsKICAgICBwbGF5ZXItPnRleHRDaGFuZ2VkKCk7CkBAIC0yNTAs
NyArMjMwLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmlzQXZhaWxhYmxl
KCkKICAgICBpZiAoIWluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdpc3RlcldlYktpdEVsZW1lbnRz
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudEZhY3Rv
cnk+IGZhY3RvcnkgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2ZpbmQoZ1BsYXliaW5OYW1lKTsKKyAg
ICBHUmVmUHRyPEdzdEVsZW1lbnRGYWN0b3J5PiBmYWN0b3J5ID0gZ3N0X2VsZW1lbnRfZmFjdG9y
eV9maW5kKCJwbGF5YmluIik7CiAgICAgcmV0dXJuIGZhY3Rvcnk7CiB9CiAKQEAgLTI5OSw3ICsy
NzksNyBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcihNZWRpYVBsYXllciogcGxheWVyKQogCiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogewotI2lmIEVOQUJMRShWSURFT19U
UkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2F1ZGlvVHJhY2tzLnNpemUoKTsgKytp
KQogICAgICAgICBtX2F1ZGlvVHJhY2tzW2ldLT5kaXNjb25uZWN0KCk7CiAKQEAgLTMzMyw3ICsz
MTMsNyBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIoKQogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMo
bV9wbGF5QmluLmdldCgpLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPihtZWRpYVBsYXllclBy
aXZhdGVTb3VyY2VDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgZ19zaWduYWxfaGFu
ZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fcGxheUJpbi5nZXQoKSwgcmVpbnRlcnByZXRfY2Fz
dDxncG9pbnRlcj4obWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DaGFuZ2VkQ2FsbGJhY2spLCB0aGlz
KTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fcGxheUJp
bi5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4obWVkaWFQbGF5ZXJQcml2YXRlQXVk
aW9DaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRl
ZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICAg
ICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMobV9wbGF5QmluLmdldCgpLCBy
ZWludGVycHJldF9jYXN0PGdwb2ludGVyPihtZWRpYVBsYXllclByaXZhdGVOZXdUZXh0U2FtcGxl
Q2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9i
eV9mdW5jKG1fcGxheUJpbi5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4obWVkaWFQ
bGF5ZXJQcml2YXRlVGV4dENoYW5nZWRDYWxsYmFjayksIHRoaXMpOwogI2VuZGlmCkBAIC01NDMs
MTEgKzUyMyw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZHVyYXRpb24o
KSBjb25zdAogICAgIEdzdEZvcm1hdCB0aW1lRm9ybWF0ID0gR1NUX0ZPUk1BVF9USU1FOwogICAg
IGdpbnQ2NCB0aW1lTGVuZ3RoID0gMDsKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAg
Ym9vbCBmYWlsdXJlID0gIWdzdF9lbGVtZW50X3F1ZXJ5X2R1cmF0aW9uKG1fcGxheUJpbi5nZXQo
KSwgdGltZUZvcm1hdCwgJnRpbWVMZW5ndGgpIHx8IHN0YXRpY19jYXN0PGd1aW50NjQ+KHRpbWVM
ZW5ndGgpID09IEdTVF9DTE9DS19USU1FX05PTkU7Ci0jZWxzZQotICAgIGJvb2wgZmFpbHVyZSA9
ICFnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbihtX3BsYXlCaW4uZ2V0KCksICZ0aW1lRm9ybWF0
LCAmdGltZUxlbmd0aCkgfHwgdGltZUZvcm1hdCAhPSBHU1RfRk9STUFUX1RJTUUgfHwgc3RhdGlj
X2Nhc3Q8Z3VpbnQ2ND4odGltZUxlbmd0aCkgPT0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLSNlbmRp
ZgogICAgIGlmIChmYWlsdXJlKSB7CiAgICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJUaW1lIGR1
cmF0aW9uIHF1ZXJ5IGZhaWxlZCBmb3IgJXMiLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKQEAg
LTY4OCw3ICs2NjQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5
UGxheWVyT2ZWaWRlbygpCiAKICAgICBtX2hhc1ZpZGVvID0gbnVtVHJhY2tzID4gMDsKIAotI2lm
IEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCiAgICAgZm9yIChnaW50IGkgPSAwOyBpIDwgbnVtVHJhY2tzOyAr
K2kpIHsKICAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHBhZDsKICAgICAgICAgZ19zaWduYWxfZW1p
dF9ieV9uYW1lKG1fcGxheUJpbi5nZXQoKSwgImdldC12aWRlby1wYWQiLCBpLCAmcGFkLm91dFB0
cigpLCBOVUxMKTsKQEAgLTc0MSw3ICs3MTcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygpCiAKICAgICBtX2hhc0F1ZGlvID0gbnVtVHJh
Y2tzID4gMDsKIAotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZF
UlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgZm9yIChnaW50IGkgPSAwOyBp
IDwgbnVtVHJhY2tzOyArK2kpIHsKICAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHBhZDsKICAgICAg
ICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fcGxheUJpbi5nZXQoKSwgImdldC1hdWRpby1wYWQi
LCBpLCAmcGFkLm91dFB0cigpLCBOVUxMKTsKQEAgLTc3MCw3ICs3NDYsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygpCiAgICAgbV9wbGF5
ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyRW5naW5lVXBkYXRlZChtX3BsYXll
cik7CiB9CiAKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJT
SU9OXzEpCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OnRleHRDaGFuZ2VkKCkKIHsKICAgICBpZiAobV90ZXh0VGltZXJIYW5kbGVyKQpA
QCAtOTI3LDggKzkwMyw4IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpidWZmZXJlZCgpIGNvbnN0CiAgICAgZm9yIChndWludCBpbmRleCA9IDA7
IGluZGV4IDwgZ3N0X3F1ZXJ5X2dldF9uX2J1ZmZlcmluZ19yYW5nZXMocXVlcnkpOyBpbmRleCsr
KSB7CiAgICAgICAgIGdpbnQ2NCByYW5nZVN0YXJ0ID0gMCwgcmFuZ2VTdG9wID0gMDsKICAgICAg
ICAgaWYgKGdzdF9xdWVyeV9wYXJzZV9udGhfYnVmZmVyaW5nX3JhbmdlKHF1ZXJ5LCBpbmRleCwg
JnJhbmdlU3RhcnQsICZyYW5nZVN0b3ApKQotICAgICAgICAgICAgdGltZVJhbmdlcy0+YWRkKHN0
YXRpY19jYXN0PGZsb2F0PigocmFuZ2VTdGFydCAqIG1lZGlhRHVyYXRpb24pIC8gZ1BlcmNlbnRN
YXgpLAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0PigocmFuZ2VTdG9wICogbWVk
aWFEdXJhdGlvbikgLyBnUGVyY2VudE1heCkpOworICAgICAgICAgICAgdGltZVJhbmdlcy0+YWRk
KHN0YXRpY19jYXN0PGZsb2F0PigocmFuZ2VTdGFydCAqIG1lZGlhRHVyYXRpb24pIC8gR1NUX0ZP
Uk1BVF9QRVJDRU5UX01BWCksCisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KChy
YW5nZVN0b3AgKiBtZWRpYUR1cmF0aW9uKSAvIEdTVF9GT1JNQVRfUEVSQ0VOVF9NQVgpKTsKICAg
ICB9CiAKICAgICAvLyBGYWxsYmFjayB0byB0aGUgbW9yZSBnZW5lcmFsIG1heFRpbWVMb2FkZWQo
KSBpZiBubyByYW5nZSBoYXMKQEAgLTEwMzMsMTEgKzEwMDksNyBAQCBnYm9vbGVhbiBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkK
ICAgICBjYXNlIEdTVF9NRVNTQUdFX0JVRkZFUklORzoKICAgICAgICAgcHJvY2Vzc0J1ZmZlcmlu
Z1N0YXRzKG1lc3NhZ2UpOwogICAgICAgICBicmVhazsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05f
MQogICAgIGNhc2UgR1NUX01FU1NBR0VfRFVSQVRJT05fQ0hBTkdFRDoKLSNlbHNlCi0gICAgY2Fz
ZSBHU1RfTUVTU0FHRV9EVVJBVElPTjoKLSNlbmRpZgogICAgICAgICBpZiAobWVzc2FnZVNvdXJj
ZUlzUGxheWJpbikKICAgICAgICAgICAgIGR1cmF0aW9uQ2hhbmdlZCgpOwogICAgICAgICBicmVh
azsKQEAgLTEwNjIsNyArMTAzNCw3IEBAIGdib29sZWFuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICAgICAgZ19m
cmVlKGRldGFpbCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0jaWYgRU5BQkxFKFZJREVP
X1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFT19U
UkFDSykKICAgICBjYXNlIEdTVF9NRVNTQUdFX1RPQzoKICAgICAgICAgcHJvY2Vzc1RhYmxlT2ZD
b250ZW50cyhtZXNzYWdlKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMDk1LDcgKzEwNjcsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc0J1ZmZlcmluZ1N0YXRzKEdz
dE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgdXBkYXRlU3RhdGVzKCk7CiB9CiAKLSNpZiBFTkFCTEUo
VklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NUYWJs
ZU9mQ29udGVudHMoR3N0TWVzc2FnZSogbWVzc2FnZSkKIHsKICAgICBpZiAobV9jaGFwdGVyc1Ry
YWNrKQpAQCAtMTIzOSwxMSArMTIxMSw3IEBAIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6dG90YWxCeXRlcygpIGNvbnN0CiAKICAgICBHc3RGb3JtYXQgZm10ID0gR1NUX0ZP
Uk1BVF9CWVRFUzsKICAgICBnaW50NjQgbGVuZ3RoID0gMDsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJ
T05fMQogICAgIGlmIChnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbihtX3NvdXJjZS5nZXQoKSwg
Zm10LCAmbGVuZ3RoKSkgewotI2Vsc2UKLSAgICBpZiAoZ3N0X2VsZW1lbnRfcXVlcnlfZHVyYXRp
b24obV9zb3VyY2UuZ2V0KCksICZmbXQsICZsZW5ndGgpKSB7Ci0jZW5kaWYKICAgICAgICAgSU5G
T19NRURJQV9NRVNTQUdFKCJ0b3RhbEJ5dGVzICUiIEdfR0lOVDY0X0ZPUk1BVCwgbGVuZ3RoKTsK
ICAgICAgICAgbV90b3RhbEJ5dGVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCk7CiAg
ICAgICAgIG1faXNTdHJlYW1pbmcgPSAhbGVuZ3RoOwpAQCAtMTI1NSw3ICsxMjIzLDYgQEAgdW5z
aWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0b3RhbEJ5dGVzKCkgY29uc3QKICAg
ICBHc3RJdGVyYXRvciogaXRlciA9IGdzdF9lbGVtZW50X2l0ZXJhdGVfc3JjX3BhZHMobV9zb3Vy
Y2UuZ2V0KCkpOwogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwogICAgIHdoaWxlICghZG9uZSkgewot
I2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgICAgIEdWYWx1ZSBpdGVtID0gR19WQUxVRV9J
TklUOwogICAgICAgICBzd2l0Y2ggKGdzdF9pdGVyYXRvcl9uZXh0KGl0ZXIsICZpdGVtKSkgewog
ICAgICAgICBjYXNlIEdTVF9JVEVSQVRPUl9PSzogewpAQCAtMTI2NSwxOCArMTIzMiw2IEBAIHVu
c2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxCeXRlcygpIGNvbnN0CiAg
ICAgICAgICAgICAgICAgbGVuZ3RoID0gcGFkTGVuZ3RoOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KLSNlbHNlCi0gICAgICAgIGdwb2ludGVyIGRhdGE7Ci0KLSAgICAgICAgc3dpdGNo
IChnc3RfaXRlcmF0b3JfbmV4dChpdGVyLCAmZGF0YSkpIHsKLSAgICAgICAgY2FzZSBHU1RfSVRF
UkFUT1JfT0s6IHsKLSAgICAgICAgICAgIEdSZWZQdHI8R3N0UGFkPiBwYWQgPSBhZG9wdEdSZWYo
R1NUX1BBRF9DQVNUKGRhdGEpKTsKLSAgICAgICAgICAgIGdpbnQ2NCBwYWRMZW5ndGggPSAwOwot
ICAgICAgICAgICAgaWYgKGdzdF9wYWRfcXVlcnlfZHVyYXRpb24ocGFkLmdldCgpLCAmZm10LCAm
cGFkTGVuZ3RoKSAmJiBwYWRMZW5ndGggPiBsZW5ndGgpCi0gICAgICAgICAgICAgICAgbGVuZ3Ro
ID0gcGFkTGVuZ3RoOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSNlbmRpZgogICAg
ICAgICBjYXNlIEdTVF9JVEVSQVRPUl9SRVNZTkM6CiAgICAgICAgICAgICBnc3RfaXRlcmF0b3Jf
cmVzeW5jKGl0ZXIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjg3LDkgKzEyNDIsNyBAQCB1
bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRvdGFsQnl0ZXMoKSBjb25zdAog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8x
CiAgICAgICAgIGdfdmFsdWVfdW5zZXQoJml0ZW0pOwotI2VuZGlmCiAgICAgfQogCiAgICAgZ3N0
X2l0ZXJhdG9yX2ZyZWUoaXRlcik7CkBAIC0xOTA1LDcgKzE4NTgsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbigpCiAKICAgICAvLyBnc3RfZWxl
bWVudF9mYWN0b3J5X21ha2UoKSByZXR1cm5zIGEgZmxvYXRpbmcgcmVmZXJlbmNlIHNvCiAgICAg
Ly8gd2Ugc2hvdWxkIG5vdCBhZG9wdC4KLSAgICBtX3BsYXlCaW4gPSBnc3RfZWxlbWVudF9mYWN0
b3J5X21ha2UoZ1BsYXliaW5OYW1lLCAicGxheSIpOworICAgIG1fcGxheUJpbiA9IGdzdF9lbGVt
ZW50X2ZhY3RvcnlfbWFrZSgicGxheWJpbiIsICJwbGF5Iik7CiAgICAgc2V0U3RyZWFtVm9sdW1l
RWxlbWVudChHU1RfU1RSRUFNX1ZPTFVNRShtX3BsYXlCaW4uZ2V0KCkpKTsKIAogICAgIEdSZWZQ
dHI8R3N0QnVzPiBidXMgPSB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUobV9w
bGF5QmluLmdldCgpKSk7CkBAIC0xOTE3LDcgKzE4NzAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbigpCiAgICAgZ19zaWduYWxfY29ubmVjdCht
X3BsYXlCaW4uZ2V0KCksICJub3RpZnk6OnNvdXJjZSIsIEdfQ0FMTEJBQ0sobWVkaWFQbGF5ZXJQ
cml2YXRlU291cmNlQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CiAgICAgZ19zaWduYWxfY29ubmVj
dChtX3BsYXlCaW4uZ2V0KCksICJ2aWRlby1jaGFuZ2VkIiwgR19DQUxMQkFDSyhtZWRpYVBsYXll
clByaXZhdGVWaWRlb0NoYW5nZWRDYWxsYmFjayksIHRoaXMpOwogICAgIGdfc2lnbmFsX2Nvbm5l
Y3QobV9wbGF5QmluLmdldCgpLCAiYXVkaW8tY2hhbmdlZCIsIEdfQ0FMTEJBQ0sobWVkaWFQbGF5
ZXJQcml2YXRlQXVkaW9DaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKLSNpZiBFTkFCTEUoVklERU9f
VFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQogICAgIGlmICh3ZWJraXRHc3RDaGVja1ZlcnNpb24oMSwgMSwgMikpIHsKICAgICAgICAg
Z19zaWduYWxfY29ubmVjdChtX3BsYXlCaW4uZ2V0KCksICJ0ZXh0LWNoYW5nZWQiLCBHX0NBTExC
QUNLKG1lZGlhUGxheWVyUHJpdmF0ZVRleHRDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGQ3ZjUzYzQz
NmVkZDVkNWJiYmE5YzFmODk3ZDkzZDRlZWY1MzRlZmYuLjdmNmUyZDY3YTc2ZjBiYjdiNTdlOWM5
YmQyN2MxMmMxZTY3OTc4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RpZnlQ
bGF5ZXJPZlZpZGVvQ2FwcygpOwogICAgIHZvaWQgbm90aWZ5UGxheWVyT2ZBdWRpbygpOwogCi0j
aWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lm
IEVOQUJMRShWSURFT19UUkFDSykKICAgICB2b2lkIHRleHRDaGFuZ2VkKCk7CiAgICAgdm9pZCBu
b3RpZnlQbGF5ZXJPZlRleHQoKTsKIApAQCAtMTQzLDcgKzE0Myw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHNldERvd25sb2FkQnVmZmVyaW5nKCk7CiAgICAgdm9pZCBwcm9jZXNzQnVmZmVyaW5n
U3RhdHMoR3N0TWVzc2FnZSopOwotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChH
U1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgdm9pZCBwcm9j
ZXNzVGFibGVPZkNvbnRlbnRzKEdzdE1lc3NhZ2UqKTsKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9m
Q29udGVudHNFbnRyeShHc3RUb2NFbnRyeSosIEdzdFRvY0VudHJ5KiBwYXJlbnQpOwogI2VuZGlm
CkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKIHByaXZhdGU6CiAgICAgR1JlZlB0cjxHc3RF
bGVtZW50PiBtX3BsYXlCaW47CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3NvdXJjZTsKLSNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV90ZXh0QXBwU2lu
azsKICAgICBHUmVmUHRyPEdzdFBhZD4gbV90ZXh0QXBwU2lua1BhZDsKICNlbmRpZgpAQCAtMTk4
LDcgKzE5OCw3IEBAIHByaXZhdGU6CiAgICAgR3N0U3RhdGUgbV9yZXF1ZXN0ZWRTdGF0ZTsKICAg
ICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fYXV0b0F1ZGlvU2luazsKICAgICBib29sIG1fbWlzc2lu
Z1BsdWdpbnM7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVS
U0lPTl8xKQorI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBWZWN0b3I8UmVmUHRyPEF1ZGlv
VHJhY2tQcml2YXRlR1N0cmVhbWVyPj4gbV9hdWRpb1RyYWNrczsKICAgICBWZWN0b3I8UmVmUHRy
PEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+PiBtX3RleHRUcmFja3M7CiAgICAgVmVj
dG9yPFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4+IG1fdmlkZW9UcmFja3M7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAK
aW5kZXggOTk1ZGQ4ZGE0ZDdiNzNkYjg1N2FhNjM5OGRkNzA5OWQ0OGQ0YzI1OC4uOTNkMDc0Nzgz
YjQ4NjM2NzUzYzE2NzY4NjY5MGUxMTFjMjJhYmFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtNDEsMTEgKzQxLDcgQEAK
ICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCi0j
aWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICNpbmNsdWRlIDxnc3QvYXVkaW8vc3RyZWFtdm9sdW1l
Lmg+Ci0jZWxzZQotI2luY2x1ZGUgPGdzdC9pbnRlcmZhY2VzL3N0cmVhbXZvbHVtZS5oPgotI2Vu
ZGlmCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAxLCAwKSAmJiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKICNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyR0wuaCIKQEAgLTE2NCwxMyArMTYwLDcgQEAgSW50U2l6ZSBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSgpIGNvbnN0CiAgICAgaWYgKCFtX3ZpZGVvU2l6
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX3ZpZGVvU2l6ZTsKIAotI2lmZGVmIEdTVF9B
UElfVkVSU0lPTl8xCiAgICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBzID0gY3VycmVudFZpZGVvU2lu
a0NhcHMoKTsKLSNlbHNlCi0gICAgZ19tdXRleF9sb2NrKG1fYnVmZmVyTXV0ZXgpOwotICAgIEdS
ZWZQdHI8R3N0Q2Fwcz4gY2FwcyA9IG1fYnVmZmVyID8gR1NUX0JVRkZFUl9DQVBTKG1fYnVmZmVy
KSA6IDA7Ci0gICAgZ19tdXRleF91bmxvY2sobV9idWZmZXJNdXRleCk7Ci0jZW5kaWYKICAgICBp
ZiAoIWNhcHMpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKQEAgLTMyNCwxMSArMzE0LDcg
QEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjp1cGRhdGVUZXh0dXJlKFRleHR1cmUKICAgICB9CiAKICAgICBjb25zdCB2b2lkKiBzcmNE
YXRhID0gMDsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIEdSZWZQdHI8R3N0Q2Fwcz4g
Y2FwcyA9IGN1cnJlbnRWaWRlb1NpbmtDYXBzKCk7Ci0jZWxzZQotICAgIEdSZWZQdHI8R3N0Q2Fw
cz4gY2FwcyA9IEdTVF9CVUZGRVJfQ0FQUyhtX2J1ZmZlcik7Ci0jZW5kaWYKICAgICBpZiAoIWNh
cHMpIHsKICAgICAgICAgZ19tdXRleF91bmxvY2sobV9idWZmZXJNdXRleCk7CiAgICAgICAgIHJl
dHVybiAwOwpAQCAtMzU5LDE5ICszNDUsMTMgQEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKFRleHR1cmUKICAg
ICB9CiAjZW5kaWYKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgR3N0TWFwSW5mbyBz
cmNJbmZvOwogICAgIGdzdF9idWZmZXJfbWFwKG1fYnVmZmVyLCAmc3JjSW5mbywgR1NUX01BUF9S
RUFEKTsKICAgICBzcmNEYXRhID0gc3JjSW5mby5kYXRhOwotI2Vsc2UKLSAgICBzcmNEYXRhID0g
R1NUX0JVRkZFUl9EQVRBKG1fYnVmZmVyKTsKLSNlbmRpZgogCiAgICAgdGV4dHVyZS0+dXBkYXRl
Q29udGVudHMoc3JjRGF0YSwgV2ViQ29yZTo6SW50UmVjdChXZWJDb3JlOjpJbnRQb2ludCgwLCAw
KSwgc2l6ZSksIFdlYkNvcmU6OkludFBvaW50KDAsIDApLCBzdHJpZGUsIEJpdG1hcFRleHR1cmU6
OlVwZGF0ZUNhbm5vdE1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKIAotI2lmZGVmIEdTVF9BUElf
VkVSU0lPTl8xCiAgICAgZ3N0X2J1ZmZlcl91bm1hcChtX2J1ZmZlciwgJnNyY0luZm8pOwotI2Vu
ZGlmCiAKICAgICBnX211dGV4X3VubG9jayhtX2J1ZmZlck11dGV4KTsKICAgICByZXR1cm4gdGV4
dHVyZTsKQEAgLTQyMCwxMSArNDAwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFIKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgR1JlZlB0
cjxHc3RDYXBzPiBjYXBzID0gY3VycmVudFZpZGVvU2lua0NhcHMoKTsKLSNlbHNlCi0gICAgR1Jl
ZlB0cjxHc3RDYXBzPiBjYXBzID0gR1NUX0JVRkZFUl9DQVBTKG1fYnVmZmVyKTsKLSNlbmRpZgog
ICAgIGlmICghY2FwcykgewogICAgICAgICBnX211dGV4X3VubG9jayhtX2J1ZmZlck11dGV4KTsK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1RleHRDb21iaW5lckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dENvbWJpbmVyR1N0cmVhbWVyLmNwcApp
bmRleCBmOTIyODQ1YmM5YjY5NTMwNjlkM2M2OTQ4MzBjYTJmYzY1NDQ4YjEwLi5jMGViZTdjMDFk
YjAwNjBhNjU4YzVkYjQ1MmM4YTcwNjY0ZDdjNTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dENvbWJpbmVyR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dENvbWJp
bmVyR1N0cmVhbWVyLmNwcApAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURF
T19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8p
ICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2luY2x1ZGUgIlRl
eHRDb21iaW5lckdTdHJlYW1lci5oIgogCkBAIC0yOTEsNCArMjkxLDQgQEAgR3N0RWxlbWVudCog
d2Via2l0VGV4dENvbWJpbmVyTmV3KCkKICAgICByZXR1cm4gR1NUX0VMRU1FTlQoZ19vYmplY3Rf
bmV3KFdFQktJVF9UWVBFX1RFWFRfQ09NQklORVIsIDApKTsKIH0KIAotI2VuZGlmIC8vIEVOQUJM
RShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZp
bmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdT
VFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRDb21iaW5lckdTdHJlYW1lci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRDb21iaW5lckdT
dHJlYW1lci5oCmluZGV4IGExOTMwM2RjMjUxMGM4YmU4MTQwZjRkMzUxOWQwMWMzMzI5NThjYzku
LjIwYzU3OTY5N2U0NjgzNGYzODA0N2IzNTA0M2Y3YWE0Y2JiOWUyYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3Ry
ZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VGV4dENvbWJpbmVyR1N0cmVhbWVyLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgVGV4dENv
bWJpbmVyR1N0cmVhbWVyX2gKICNkZWZpbmUgVGV4dENvbWJpbmVyR1N0cmVhbWVyX2gKIAotI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAm
JiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdT
VFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSA8Z2xpYi1vYmplY3Qu
aD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CkBAIC02Miw1ICs2Miw1IEBAIHN0cnVjdCBfV2ViS2l0
VGV4dENvbWJpbmVyQ2xhc3MgewogCiBHc3RFbGVtZW50KiB3ZWJraXRUZXh0Q29tYmluZXJOZXco
KTsKIAotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxF
KFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVO
QUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVGV4dFNpbmtHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1RleHRTaW5rR1N0cmVhbWVyLmNwcAppbmRleCAxNGZkNDY5MmJiZjNhMmRh
OTA4ZGU3ZDcwNGViYmI5YTZkNGEwYTM3Li42NzhlN2FjMzU2ZWQ1YzVhZmZlMzNkNjBhOGQwNTc4
NTAwZmNiOTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVGV4dFNpbmtHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0U2lua0dTdHJlYW1lci5jcHAKQEAgLTI0LDcgKzI0
LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBV
U0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9W
RVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUo
VklERU9fVFJBQ0spCiAKICNpbmNsdWRlICJUZXh0U2lua0dTdHJlYW1lci5oIgogCkBAIC05OCw0
ICs5OCw0IEBAIEdzdEVsZW1lbnQqIHdlYmtpdFRleHRTaW5rTmV3KCkKICAgICByZXR1cm4gR1NU
X0VMRU1FTlQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1RFWFRfU0lOSywgMCkpOwogfQogCi0j
ZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9f
VFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJ
REVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dFNpbmtHU3Ry
ZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0
U2lua0dTdHJlYW1lci5oCmluZGV4IDZjNmI2YWJkYzM5NzU0NTc0MzcwMDg2YjQ1MjQ2MzdiZDg2
NTBlMDIuLmQwOWJlODYyYjg5ZWZkMzcyM2QyNjkxMjA5ZjU1MmExOTBjMTA5NjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0U2lua0dT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9UZXh0U2lua0dTdHJlYW1lci5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFRleHRTaW5r
R1N0cmVhbWVyX2gKICNkZWZpbmUgVGV4dFNpbmtHU3RyZWFtZXJfaAogCi0jaWYgRU5BQkxFKFZJ
REVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQo
R1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAm
JiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1
ZGUgPGdzdC9hcHAvZ3N0YXBwc2luay5oPgpAQCAtNjEsNSArNjEsNSBAQCBzdHJ1Y3QgX1dlYktp
dFRleHRTaW5rQ2xhc3MgewogCiBHc3RFbGVtZW50KiB3ZWJraXRUZXh0U2lua05ldygpOwogCi0j
ZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9f
VFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJ
REVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFj
a1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAppbmRleCBiMzIwMTU3
NTdjYTVjZDBiOTU2ODU5ZjIzYmRkYjkzN2UzNzVhYjVhLi5iZDdhNjhkYzVlZGU3MjQyNzZlZmJh
YjdiN2UwNjU5MGYxNTA0NmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VH
U3RyZWFtZXIuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAot
I2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNL
KSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNF
KEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiVHJhY2tQcml2
YXRlQmFzZUdTdHJlYW1lci5oIgogCkBAIC0xNjIsNCArMTYyLDQgQEAgdm9pZCBUcmFja1ByaXZh
dGVCYXNlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mVGFnc0NoYW5nZWQoKQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIp
ICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNl
bmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19U
UkFDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5oCmluZGV4IDk5
NWRhNGZmOGE3ZjFlNTBhNjA0NTcwZjY3MDcyOTRjYjQ5YjE2YWIuLjRmYWY5YjI1ODc1MjI4NjZk
YThkNmY3N2RlM2M5NDU3Mzk5MjJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXIuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBUcmFja1ByaXZhdGVCYXNl
R1N0cmVhbWVyX2gKICNkZWZpbmUgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcl9oCiAKLSNpZiBF
TkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYg
ZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RS
RUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFt
ZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTcxLDYgKzcxLDYgQEAg
cHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKFZJ
REVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQo
R1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVB
TUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNlbmRpZiAvLyBUcmFja1ByaXZhdGVCYXNl
R1N0cmVhbWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKaW5kZXggZjI0MzIz
ZDc3NjRjNWExYTdlOGI1OTg0Y2NjMDhiYjY2MDg3ZDNhMS4uZDQyMDY4MTZlODE1ZmQxM2VhZWIz
NWJiNGRlNjkzNzNmODYyMTdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAK
QEAgLTM0LDEzICszNCwxMCBAQAogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlIDxnbGli
Lmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAjaW5j
bHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvbWV0YS5oPgotI2VuZGlmCiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgogCiAvLyBDQUlST19GT1JNQVRfUkdCMjQgdXNlZCB0byByZW5kZXIgdGhlIHZpZGVv
IGJ1ZmZlcnMgaXMgbGl0dGxlL2JpZyBlbmRpYW4gZGVwZW5kYW50LgotI2lmZGVmIEdTVF9BUElf
VkVSU0lPTl8xCiAjaWYgR19CWVRFX09SREVSID09IEdfTElUVExFX0VORElBTgogI2RlZmluZSBH
U1RfQ0FQU19GT1JNQVQgInsgQkdSeCwgQkdSQSB9IgogI2Vsc2UKQEAgLTUxLDE3ICs0OCw4IEBA
CiAjZWxzZQogI2RlZmluZSBHU1RfRkVBVFVSRURfQ0FQUwogI2VuZGlmCi0jZW5kaWYgLy8gR1NU
X0FQSV9WRVJTSU9OXzEKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAjZGVmaW5lIFdFQktJ
VF9WSURFT19TSU5LX1BBRF9DQVBTIEdTVF9GRUFUVVJFRF9DQVBTIEdTVF9WSURFT19DQVBTX01B
S0UoR1NUX0NBUFNfRk9STUFUKQotI2Vsc2UKLSNpZiBHX0JZVEVfT1JERVIgPT0gR19MSVRUTEVf
RU5ESUFOCi0jZGVmaW5lIFdFQktJVF9WSURFT19TSU5LX1BBRF9DQVBTIEdTVF9WSURFT19DQVBT
X0JHUnggIjsiIEdTVF9WSURFT19DQVBTX0JHUkEKLSNlbHNlCi0jZGVmaW5lIFdFQktJVF9WSURF
T19TSU5LX1BBRF9DQVBTIEdTVF9WSURFT19DQVBTX3hSR0IgIjsiIEdTVF9WSURFT19DQVBTX0FS
R0IKLSNlbmRpZgotI2VuZGlmIC8vIEdTVF9BUElfVkVSU0lPTl8xCiAKIHN0YXRpYyBHc3RTdGF0
aWNQYWRUZW1wbGF0ZSBzX3NpbmtUZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFKCJz
aW5rIiwgR1NUX1BBRF9TSU5LLCBHU1RfUEFEX0FMV0FZUywgR1NUX1NUQVRJQ19DQVBTKFdFQktJ
VF9WSURFT19TSU5LX1BBRF9DQVBTKSk7CiAKQEAgLTg3LDkgKzc1LDcgQEAgc3RydWN0IF9XZWJL
aXRWaWRlb1NpbmtQcml2YXRlIHsKICAgICBHTXV0ZXgqIGJ1ZmZlck11dGV4OwogICAgIEdDb25k
KiBkYXRhQ29uZGl0aW9uOwogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBHc3RWaWRl
b0luZm8gaW5mbzsKLSNlbmRpZgogCiAgICAgR3N0Q2FwcyogY3VycmVudENhcHM7CiAKQEAgLTEy
MSw5ICsxMDcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfdmlkZW9fc2lua19pbml0KFdlYktpdFZp
ZGVvU2luayogc2luaykKICAgICBzaW5rLT5wcml2LT5idWZmZXJNdXRleCA9IGdfbXV0ZXhfbmV3
KCk7CiAjZW5kaWYKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgZ3N0X3ZpZGVvX2lu
Zm9faW5pdCgmc2luay0+cHJpdi0+aW5mbyk7Ci0jZW5kaWYKIH0KIAogc3RhdGljIGdib29sZWFu
IHdlYmtpdFZpZGVvU2lua1RpbWVvdXRDYWxsYmFjayhncG9pbnRlciBkYXRhKQpAQCAtMTY0LDIz
ICsxNDgsMTIgQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4gd2Via2l0VmlkZW9TaW5rUmVuZGVyKEdz
dEJhc2VTaW5rKiBiYXNlU2luaywgR3N0QnVmZmVyKiBidWYKIAogICAgIHByaXYtPmJ1ZmZlciA9
IGdzdF9idWZmZXJfcmVmKGJ1ZmZlcik7CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAg
ICAvLyBGb3IgdGhlIHVubGlrZWx5IGNhc2Ugd2hlcmUgdGhlIGJ1ZmZlciBoYXMgbm8gY2Fwcywg
dGhlIGNhcHMKLSAgICAvLyBhcmUgaW1wbGljaXRlbHkgdGhlIGNhcHMgb2YgdGhlIHBhZC4gVGhp
cyBzaG91bGRuJ3QgaGFwcGVuLgotICAgIGlmIChVTkxJS0VMWSghR1NUX0JVRkZFUl9DQVBTKGJ1
ZmZlcikpKSB7Ci0gICAgICAgIGJ1ZmZlciA9IHByaXYtPmJ1ZmZlciA9IGdzdF9idWZmZXJfbWFr
ZV9tZXRhZGF0YV93cml0YWJsZShwcml2LT5idWZmZXIpOwotICAgICAgICBnc3RfYnVmZmVyX3Nl
dF9jYXBzKHByaXYtPmJ1ZmZlciwgR1NUX1BBRF9DQVBTKEdTVF9CQVNFX1NJTktfUEFEKGJhc2VT
aW5rKSkpOwotICAgIH0KLQotICAgIEdSZWZQdHI8R3N0Q2Fwcz4gY2FwcyA9IEdTVF9CVUZGRVJf
Q0FQUyhidWZmZXIpOwotI2Vsc2UKICAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHM7CiAgICAgLy8g
VGhlIHZpZGVvIGluZm8gc3RydWN0dXJlIGlzIHZhbGlkIG9ubHkgaWYgdGhlIHNpbmsgaGFuZGxl
ZCBhbiBhbGxvY2F0aW9uIHF1ZXJ5LgogICAgIGlmIChHU1RfVklERU9fSU5GT19GT1JNQVQoJnBy
aXYtPmluZm8pICE9IEdTVF9WSURFT19GT1JNQVRfVU5LTk9XTikKICAgICAgICAgY2FwcyA9IGFk
b3B0R1JlZihnc3RfdmlkZW9faW5mb190b19jYXBzKCZwcml2LT5pbmZvKSk7CiAgICAgZWxzZQog
ICAgICAgICBjYXBzID0gcHJpdi0+Y3VycmVudENhcHM7Ci0jZW5kaWYKIAogICAgIEdzdFZpZGVv
Rm9ybWF0IGZvcm1hdDsKICAgICBXZWJDb3JlOjpJbnRTaXplIHNpemU7CkBAIC0yMTEsMTcgKzE4
NCwxMiBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJraXRWaWRlb1NpbmtSZW5kZXIoR3N0QmFz
ZVNpbmsqIGJhc2VTaW5rLCBHc3RCdWZmZXIqIGJ1ZgogICAgICAgICAvLyBvbmUgZnVuY3Rpb24g
Y2FsbCBwZXIgdmlkZW8gcGl4ZWwgaXMganVzdCB0b28gZXhwZW5zaXZlOgogICAgICAgICAvLyBG
b3IgNzIwcC9QQUwgZm9yIGV4YW1wbGUgdGhpcyBtZWFucyAxMjgwKjcyMCoyNT0yMzA0MDAwMAog
ICAgICAgICAvLyBmdW5jdGlvbiBjYWxscyBwZXIgc2Vjb25kIQotI2lmbmRlZiBHU1RfQVBJX1ZF
UlNJT05fMQotICAgICAgICBjb25zdCBndWludDgqIHNvdXJjZSA9IEdTVF9CVUZGRVJfREFUQShi
dWZmZXIpOwotICAgICAgICBndWludDgqIGRlc3RpbmF0aW9uID0gR1NUX0JVRkZFUl9EQVRBKG5l
d0J1ZmZlcik7Ci0jZWxzZQogICAgICAgICBHc3RNYXBJbmZvIHNvdXJjZUluZm87CiAgICAgICAg
IEdzdE1hcEluZm8gZGVzdGluYXRpb25JbmZvOwogICAgICAgICBnc3RfYnVmZmVyX21hcChidWZm
ZXIsICZzb3VyY2VJbmZvLCBHU1RfTUFQX1JFQUQpOwogICAgICAgICBjb25zdCBndWludDgqIHNv
dXJjZSA9IGNvbnN0X2Nhc3Q8Z3VpbnQ4Kj4oc291cmNlSW5mby5kYXRhKTsKICAgICAgICAgZ3N0
X2J1ZmZlcl9tYXAobmV3QnVmZmVyLCAmZGVzdGluYXRpb25JbmZvLCBHU1RfTUFQX1dSSVRFKTsK
ICAgICAgICAgZ3VpbnQ4KiBkZXN0aW5hdGlvbiA9IHN0YXRpY19jYXN0PGd1aW50OCo+KGRlc3Rp
bmF0aW9uSW5mby5kYXRhKTsKLSNlbmRpZgogCiAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwg
c2l6ZS5oZWlnaHQoKTsgeCsrKSB7CiAgICAgICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IHNp
emUud2lkdGgoKTsgeSsrKSB7CkBAIC0yNDMsMTAgKzIxMSw4IEBAIHN0YXRpYyBHc3RGbG93UmV0
dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRlcihHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdEJ1ZmZl
ciogYnVmCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotI2lmZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCiAgICAgICAgIGdzdF9idWZmZXJfdW5tYXAoYnVmZmVyLCAmc291cmNlSW5mbyk7CiAgICAg
ICAgIGdzdF9idWZmZXJfdW5tYXAobmV3QnVmZmVyLCAmZGVzdGluYXRpb25JbmZvKTsKLSNlbmRp
ZgogICAgICAgICBnc3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7CiAgICAgICAgIGJ1ZmZlciA9IHBy
aXYtPmJ1ZmZlciA9IG5ld0J1ZmZlcjsKICAgICB9CkBAIC0zNzUsMTkgKzM0MSwxNiBAQCBzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0VmlkZW9TaW5rU2V0Q2FwcyhHc3RCYXNlU2luayogYmFzZVNpbmss
IEdzdENhcHMqIGNhcHMpCiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNpbmssICJDdXJyZW50IGNh
cHMgJSIgR1NUX1BUUl9GT1JNQVQgIiwgc2V0dGluZyBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBw
cml2LT5jdXJyZW50Q2FwcywgY2Fwcyk7CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAg
IEdzdFZpZGVvSW5mbyBpbmZvOwogICAgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZp
bmZvLCBjYXBzKSkgewogICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNpbmssICJJbnZhbGlkIGNh
cHMgJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOwogICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAg
fQotI2VuZGlmCiAKICAgICBnc3RfY2Fwc19yZXBsYWNlKCZwcml2LT5jdXJyZW50Q2FwcywgY2Fw
cyk7CiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogc3Rh
dGljIGdib29sZWFuIHdlYmtpdFZpZGVvU2lua1Byb3Bvc2VBbGxvY2F0aW9uKEdzdEJhc2VTaW5r
KiBiYXNlU2luaywgR3N0UXVlcnkqIHF1ZXJ5KQogewogICAgIEdzdENhcHMqIGNhcHM7CkBAIC00
MDYsMzAgKzM2OSw2IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRWaWRlb1NpbmtQcm9wb3NlQWxs
b2NhdGlvbihHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdFF1ZXJ5CiAjZW5kaWYKICAgICByZXR1
cm4gVFJVRTsKIH0KLSNlbmRpZgotCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi1zdGF0aWMg
dm9pZCB3ZWJraXRWaWRlb1NpbmtNYXJzaGFsVm9pZEFuZE1pbmlPYmplY3QoR0Nsb3N1cmUqIGNs
b3N1cmUsIEdWYWx1ZSosIGd1aW50IHBhcmFtZXRlcnNOdW1iZXIsIGNvbnN0IEdWYWx1ZSogcGFy
YW1ldGVyVmFsdWVzLCBncG9pbnRlciwgZ3BvaW50ZXIgbWFyc2hhbERhdGEpCi17Ci0gICAgdHlw
ZWRlZiB2b2lkICgqbWFyc2hhbGZ1bmNfVk9JRF9fTUlOSU9CSkVDVCkgKGdwb2ludGVyIG9iaiwg
Z3BvaW50ZXIgYXJnMSwgZ3BvaW50ZXIgZGF0YTIpOwotICAgIG1hcnNoYWxmdW5jX1ZPSURfX01J
TklPQkpFQ1QgY2FsbGJhY2s7Ci0gICAgR0NDbG9zdXJlKiBjY2xvc3VyZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8R0NDbG9zdXJlKj4oY2xvc3VyZSk7Ci0gICAgZ3BvaW50ZXIgZGF0YTEsIGRhdGEyOwot
Ci0gICAgZ19yZXR1cm5faWZfZmFpbChwYXJhbWV0ZXJzTnVtYmVyID09IDIpOwotCi0gICAgaWYg
KEdfQ0NMT1NVUkVfU1dBUF9EQVRBKGNsb3N1cmUpKSB7Ci0gICAgICAgIGRhdGExID0gY2xvc3Vy
ZS0+ZGF0YTsKLSAgICAgICAgZGF0YTIgPSBnX3ZhbHVlX3BlZWtfcG9pbnRlcihwYXJhbWV0ZXJW
YWx1ZXMgKyAwKTsKLSAgICB9IGVsc2UgewotICAgICAgICBkYXRhMSA9IGdfdmFsdWVfcGVla19w
b2ludGVyKHBhcmFtZXRlclZhbHVlcyArIDApOwotICAgICAgICBkYXRhMiA9IGNsb3N1cmUtPmRh
dGE7Ci0gICAgfQotCi0gICAgY2FsbGJhY2sgPSAobWFyc2hhbGZ1bmNfVk9JRF9fTUlOSU9CSkVD
VCkgKG1hcnNoYWxEYXRhID8gbWFyc2hhbERhdGEgOiBjY2xvc3VyZS0+Y2FsbGJhY2spOwotICAg
IGNhbGxiYWNrKGRhdGExLCBnc3RfdmFsdWVfZ2V0X21pbmlfb2JqZWN0KHBhcmFtZXRlclZhbHVl
cyArIDEpLCBkYXRhMik7Ci19Ci0jZW5kaWYKIAogc3RhdGljIHZvaWQgd2Via2l0X3ZpZGVvX3Np
bmtfY2xhc3NfaW5pdChXZWJLaXRWaWRlb1NpbmtDbGFzcyoga2xhc3MpCiB7CkBAIC00NTIsOSAr
MzkxLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3ZpZGVvX3NpbmtfY2xhc3NfaW5pdChXZWJLaXRW
aWRlb1NpbmtDbGFzcyoga2xhc3MpCiAgICAgYmFzZVNpbmtDbGFzcy0+c3RvcCA9IHdlYmtpdFZp
ZGVvU2lua1N0b3A7CiAgICAgYmFzZVNpbmtDbGFzcy0+c3RhcnQgPSB3ZWJraXRWaWRlb1NpbmtT
dGFydDsKICAgICBiYXNlU2lua0NsYXNzLT5zZXRfY2FwcyA9IHdlYmtpdFZpZGVvU2lua1NldENh
cHM7Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBiYXNlU2lua0NsYXNzLT5wcm9wb3Nl
X2FsbG9jYXRpb24gPSB3ZWJraXRWaWRlb1NpbmtQcm9wb3NlQWxsb2NhdGlvbjsKLSNlbmRpZgog
CiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsIFBST1Bf
Q0FQUywKICAgICAgICAgZ19wYXJhbV9zcGVjX2JveGVkKCJjdXJyZW50LWNhcHMiLCAiQ3VycmVu
dC1DYXBzIiwgIkN1cnJlbnQgY2FwcyIsIEdTVF9UWVBFX0NBUFMsIEdfUEFSQU1fUkVBREFCTEUp
KTsKQEAgLTQ2NSwxMSArNDAyLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3ZpZGVvX3NpbmtfY2xh
c3NfaW5pdChXZWJLaXRWaWRlb1NpbmtDbGFzcyoga2xhc3MpCiAgICAgICAgICAgICAwLCAvLyBD
bGFzcyBvZmZzZXQKICAgICAgICAgICAgIDAsIC8vIEFjY3VtdWxhdG9yCiAgICAgICAgICAgICAw
LCAvLyBBY2N1bXVsYXRvciBkYXRhCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgICAg
ICAgICB3ZWJraXRWaWRlb1NpbmtNYXJzaGFsVm9pZEFuZE1pbmlPYmplY3QsCi0jZWxzZQogICAg
ICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX2dlbmVyaWMsCi0jZW5kaWYKICAgICAgICAgICAg
IEdfVFlQRV9OT05FLCAvLyBSZXR1cm4gdHlwZQogICAgICAgICAgICAgMSwgLy8gT25seSBvbmUg
cGFyYW1ldGVyCiAgICAgICAgICAgICBHU1RfVFlQRV9CVUZGRVIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMjdkZTU3ZmQ2MWQwZTliOTRl
ZjQ1MWE3YWQzZTYwZTRmNzcyYmFkZi4uZTM2NTJjMzUwZTNkZmEzYWUxYTViZTVlNjVjY2FmZWYx
NTBlYzEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIu
Y3BwCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJM
RShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZp
bmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1F
UikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIuaCIKIApAQCAtNTgsNCArNTgsNCBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlR1N0
cmVhbWVyOjpzZXRTZWxlY3RlZChib29sIHNlbGVjdGVkKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJM
RShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNlbmRpZiAvLyBF
TkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggYWVmMWY1OGVk
NTI1ODc0NjIxYjdhMWFkMjcwNTFmZDEwMzE0ZDU5OC4uZWU3YTAzOGQwYzBkYmZiMmIzNWZlZTlj
ZWE3NWVmZWVmMTE2NzMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0
cmVhbWVyLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgVmlkZW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXJfaAogI2RlZmluZSBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcl9oCiAKLSNpZiBFTkFC
TEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVm
aW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFN
RVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIu
aCIKICNpbmNsdWRlICJUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmgiCkBAIC01OSw2ICs1OSw2
IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJM
RShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZp
bmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdT
VFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjZW5kaWYgLy8gVmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAppbmRleCAzZjlhMDc1YzY1ZjI2MzczYzg0OTg2ZTZkYTE0OGYyNTQzMGVjMzM4Li5lZWM0
ZTU4ZGQ5ZTZiMDIwYWY0MTkwYzY3ODBlNjU3MDY0OTZjN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
V2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMTcwLDkgKzE3MCw2IEBAIHN0YXRpYyB2
b2lkIHdlYktpdFdlYlNyY0dldFByb3BlcnR5KEdPYmplY3QqLCBndWludCBwcm9wZXJ0eUlELCBH
VmFsdWUqLCBHUGFyYW1TCiBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0V2ViU3Jj
Q2hhbmdlU3RhdGUoR3N0RWxlbWVudCosIEdzdFN0YXRlQ2hhbmdlKTsKIAogc3RhdGljIGdib29s
ZWFuIHdlYktpdFdlYlNyY1F1ZXJ5V2l0aFBhcmVudChHc3RQYWQqLCBHc3RPYmplY3QqLCBHc3RR
dWVyeSopOwotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotc3RhdGljIGdib29sZWFuIHdlYktp
dFdlYlNyY1F1ZXJ5KEdzdFBhZCosIEdzdFF1ZXJ5Kik7Ci0jZW5kaWYKIAogc3RhdGljIHZvaWQg
d2ViS2l0V2ViU3JjTmVlZERhdGFDYihHc3RBcHBTcmMqLCBndWludCBsZW5ndGgsIGdwb2ludGVy
IHVzZXJEYXRhKTsKIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY0Vub3VnaERhdGFDYihHc3RBcHBT
cmMqLCBncG9pbnRlciB1c2VyRGF0YSk7CkBAIC0yODYsMTIgKzI4Myw4IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfc3JjX2luaXQoV2ViS2l0V2ViU3JjKiBzcmMpCiAKICAgICBnc3RfZWxlbWVu
dF9hZGRfcGFkKEdTVF9FTEVNRU5UKHNyYyksIHByaXYtPnNyY3BhZCk7CiAKLSNpZmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQogICAgIEdTVF9PQkpFQ1RfRkxBR19TRVQocHJpdi0+c3JjcGFkLCBHU1Rf
UEFEX0ZMQUdfTkVFRF9QQVJFTlQpOwogICAgIGdzdF9wYWRfc2V0X3F1ZXJ5X2Z1bmN0aW9uKHBy
aXYtPnNyY3BhZCwgd2ViS2l0V2ViU3JjUXVlcnlXaXRoUGFyZW50KTsKLSNlbHNlCi0gICAgZ3N0
X3BhZF9zZXRfcXVlcnlfZnVuY3Rpb24ocHJpdi0+c3JjcGFkLCB3ZWJLaXRXZWJTcmNRdWVyeSk7
Ci0jZW5kaWYKIAogICAgIGdzdF9hcHBfc3JjX3NldF9jYWxsYmFja3MocHJpdi0+YXBwc3JjLCAm
YXBwc3JjQ2FsbGJhY2tzLCBzcmMsIDApOwogICAgIGdzdF9hcHBfc3JjX3NldF9lbWl0X3NpZ25h
bHMocHJpdi0+YXBwc3JjLCBGQUxTRSk7CkBAIC0zNTMsMTEgKzM0Niw3IEBAIHN0YXRpYyB2b2lk
IHdlYktpdFdlYlNyY1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBj
b25zdCBHVmFsdWUqCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFBST1BfTE9DQVRJ
T046Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICAgICAgZ3N0X3VyaV9oYW5kbGVyX3Nl
dF91cmkocmVpbnRlcnByZXRfY2FzdDxHc3RVUklIYW5kbGVyKj4oc3JjKSwgZ192YWx1ZV9nZXRf
c3RyaW5nKHZhbHVlKSwgMCk7Ci0jZWxzZQotICAgICAgICBnc3RfdXJpX2hhbmRsZXJfc2V0X3Vy
aShyZWludGVycHJldF9jYXN0PEdzdFVSSUhhbmRsZXIqPihzcmMpLCBnX3ZhbHVlX2dldF9zdHJp
bmcodmFsdWUpKTsKLSNlbmRpZgogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAg
ICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSUQsIHBzcGVj
KTsKQEAgLTQzNiw5ICs0MjUsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjU3RvcChX
ZWJLaXRXZWJTcmMqIHNyYykKICAgICB9CiAKICAgICBpZiAocHJpdi0+YnVmZmVyKSB7Ci0jaWZk
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICAgICAgdW5tYXBHc3RCdWZmZXIocHJpdi0+YnVmZmVy
LmdldCgpKTsKLSNlbmRpZgogICAgICAgICBwcml2LT5idWZmZXIuY2xlYXIoKTsKICAgICB9CiAK
QEAgLTYzOCwxNCArNjI1LDYgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1F1ZXJ5V2l0
aFBhcmVudChHc3RQYWQqIHBhZCwgR3N0T2JqZWN0KiBwYXJlbnQsIEdzdFEKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi1zdGF0aWMgZ2Jvb2xlYW4g
d2ViS2l0V2ViU3JjUXVlcnkoR3N0UGFkKiBwYWQsIEdzdFF1ZXJ5KiBxdWVyeSkKLXsKLSAgICBH
UmVmUHRyPEdzdEVsZW1lbnQ+IHNyYyA9IGFkb3B0R1JlZihnc3RfcGFkX2dldF9wYXJlbnRfZWxl
bWVudChwYWQpKTsKLSAgICByZXR1cm4gd2ViS2l0V2ViU3JjUXVlcnlXaXRoUGFyZW50KHBhZCwg
R1NUX09CSkVDVChzcmMuZ2V0KCkpLCBxdWVyeSk7Ci19Ci0jZW5kaWYKLQogc3RhdGljIGJvb2wg
dXJsSGFzU3VwcG9ydGVkUHJvdG9jb2woY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIHVy
bC5pc1ZhbGlkKCkgJiYgKHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgdXJsLnByb3Rv
Y29sSXMoImJsb2IiKSk7CkBAIC02NTMsNyArNjMyLDYgQEAgc3RhdGljIGJvb2wgdXJsSGFzU3Vw
cG9ydGVkUHJvdG9jb2woY29uc3QgVVJMJiB1cmwpCiAKIC8vIHVyaSBoYW5kbGVyIGludGVyZmFj
ZQogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKIHN0YXRpYyBHc3RVUklUeXBlIHdlYktpdFdl
YlNyY1VyaUdldFR5cGUoR1R5cGUpCiB7CiAgICAgcmV0dXJuIEdTVF9VUklfU1JDOwpAQCAtNzAz
LDU3ICs2ODEsNiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjU2V0VXJpKEdzdFVSSUhh
bmRsZXIqIGhhbmRsZXIsIGNvbnN0IGdjaGFyKiB1cmksIEdFcgogICAgIHJldHVybiBUUlVFOwog
fQogCi0jZWxzZQotc3RhdGljIEdzdFVSSVR5cGUgd2ViS2l0V2ViU3JjVXJpR2V0VHlwZSh2b2lk
KQotewotICAgIHJldHVybiBHU1RfVVJJX1NSQzsKLX0KLQotc3RhdGljIGdjaGFyKiogd2ViS2l0
V2ViU3JjR2V0UHJvdG9jb2xzKHZvaWQpCi17Ci0gICAgc3RhdGljIGdjaGFyKiBwcm90b2NvbHNb
XSA9IHsoZ2NoYXIqKSAiaHR0cCIsIChnY2hhciopICJodHRwcyIsIChnY2hhciopICJibG9iIiwg
MCB9OwotICAgIHJldHVybiBwcm90b2NvbHM7Ci19Ci0KLXN0YXRpYyBjb25zdCBnY2hhciogd2Vi
S2l0V2ViU3JjR2V0VXJpKEdzdFVSSUhhbmRsZXIqIGhhbmRsZXIpCi17Ci0gICAgV2ViS2l0V2Vi
U3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhoYW5kbGVyKTsKLSAgICBnY2hhciogcmV0OwotCi0g
ICAgR011dGV4TG9ja2VyIGxvY2tlcihHU1RfT0JKRUNUX0dFVF9MT0NLKHNyYykpOwotICAgIHJl
dCA9IGdfc3RyZHVwKHNyYy0+cHJpdi0+dXJpKTsKLSAgICByZXR1cm4gcmV0OwotfQotCi1zdGF0
aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjU2V0VXJpKEdzdFVSSUhhbmRsZXIqIGhhbmRsZXIsIGNv
bnN0IGdjaGFyKiB1cmkpCi17Ci0gICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NS
QyhoYW5kbGVyKTsKLSAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2Owot
Ci0gICAgaWYgKEdTVF9TVEFURShzcmMpID49IEdTVF9TVEFURV9QQVVTRUQpIHsKLSAgICAgICAg
R1NUX0VSUk9SX09CSkVDVChzcmMsICJVUkkgY2FuIG9ubHkgYmUgc2V0IGluIHN0YXRlcyA8IFBB
VVNFRCIpOwotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotCi0gICAgR011dGV4TG9ja2Vy
IGxvY2tlcihHU1RfT0JKRUNUX0dFVF9MT0NLKHNyYykpOwotCi0gICAgZ19mcmVlKHByaXYtPnVy
aSk7Ci0gICAgcHJpdi0+dXJpID0gMDsKLQotICAgIGlmICghdXJpKQotICAgICAgICByZXR1cm4g
VFJVRTsKLQotICAgIFVSTCB1cmwoVVJMKCksIHVyaSk7Ci0gICAgaWYgKCF1cmxIYXNTdXBwb3J0
ZWRQcm90b2NvbCh1cmwpKSB7Ci0gICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiSW52YWxp
ZCBVUkkgJyVzJyIsIHVyaSk7Ci0gICAgICAgIHJldHVybiBGQUxTRTsKLSAgICB9Ci0KLSAgICBw
cml2LT51cmkgPSBnX3N0cmR1cCh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgcmV0
dXJuIFRSVUU7Ci19Ci0jZW5kaWYKLQogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjVXJpSGFuZGxl
ckluaXQoZ3BvaW50ZXIgZ0lmYWNlLCBncG9pbnRlcikKIHsKICAgICBHc3RVUklIYW5kbGVySW50
ZXJmYWNlKiBpZmFjZSA9IChHc3RVUklIYW5kbGVySW50ZXJmYWNlICopIGdJZmFjZTsKQEAgLTkw
MSw5ICs4MjgsNyBAQCBjaGFyKiBTdHJlYW1pbmdDbGllbnQ6OmNyZWF0ZVJlYWRCdWZmZXIoc2l6
ZV90IHJlcXVlc3RlZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6ZQogCiAgICAgR3N0QnVmZmVyKiBi
dWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MocmVxdWVzdGVkU2l6ZSk7CiAKLSNpZmRl
ZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIG1hcEdzdEJ1ZmZlcihidWZmZXIpOwotI2VuZGlmCiAK
ICAgICBHTXV0ZXhMb2NrZXIgbG9ja2VyKEdTVF9PQkpFQ1RfR0VUX0xPQ0soc3JjKSk7CiAgICAg
cHJpdi0+YnVmZmVyID0gYWRvcHRHUmVmKGJ1ZmZlcik7CkBAIC05MzgsMTEgKzg2Myw3IEBAIHZv
aWQgU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIHByaXYtPnNpemUgPSBsZW5ndGggPj0gMCA/IGxlbmd0
aCA6IDA7CiAgICAgcHJpdi0+c2Vla2FibGUgPSBsZW5ndGggPiAwICYmIGdfYXNjaWlfc3RyY2Fz
ZWNtcCgibm9uZSIsIHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiQWNjZXB0LVJhbmdlcyIpLnV0
ZjgoKS5kYXRhKCkpOwogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBHc3RUYWdMaXN0
KiB0YWdzID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSgpOwotI2Vsc2UKLSAgICBHc3RUYWdMaXN0
KiB0YWdzID0gZ3N0X3RhZ19saXN0X25ldygpOwotI2VuZGlmCiAgICAgU3RyaW5nIHZhbHVlID0g
cmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJpY3ktbmFtZSIpOwogICAgIGlmICghdmFsdWUuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGdfZnJlZShwcml2LT5pcmFkaW9OYW1lKTsKQEAgLTk3NywxNSAr
ODk4LDYgQEAgdm9pZCBTdHJlYW1pbmdDbGllbnQ6OmhhbmRsZVJlc3BvbnNlUmVjZWl2ZWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgLy8gbm90aWZ5IHNpemUvZHVyYXRp
b24KICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBnc3RfYXBwX3NyY19zZXRfc2l6ZShw
cml2LT5hcHBzcmMsIGxlbmd0aCk7Ci0KLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICAg
ICAgaWYgKCFwcml2LT5oYXZlQXBwU3JjMjcpIHsKLSAgICAgICAgICAgIGdzdF9zZWdtZW50X3Nl
dF9kdXJhdGlvbigmR1NUX0JBU0VfU1JDKHByaXYtPmFwcHNyYyktPnNlZ21lbnQsIEdTVF9GT1JN
QVRfQllURVMsIGxlbmd0aCk7Ci0gICAgICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2Uo
R1NUX0VMRU1FTlQocHJpdi0+YXBwc3JjKSwKLSAgICAgICAgICAgICAgICBnc3RfbWVzc2FnZV9u
ZXdfZHVyYXRpb24oR1NUX09CSkVDVChwcml2LT5hcHBzcmMpLAotICAgICAgICAgICAgICAgICAg
ICBHU1RfRk9STUFUX0JZVEVTLCBsZW5ndGgpKTsKLSAgICAgICAgfQotI2VuZGlmCiAgICAgfSBl
bHNlCiAgICAgICAgIGdzdF9hcHBfc3JjX3NldF9zaXplKHByaXYtPmFwcHNyYywgLTEpOwogCkBA
IC0xMDA1LDExICs5MTcsNyBAQCB2b2lkIFN0cmVhbWluZ0NsaWVudDo6aGFuZGxlUmVzcG9uc2VS
ZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIAogICAgIC8vIG5vdGlm
eSB0YWdzCiAgICAgaWYgKGdzdF90YWdfbGlzdF9pc19lbXB0eSh0YWdzKSkKLSNpZmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQogICAgICAgICBnc3RfdGFnX2xpc3RfdW5yZWYodGFncyk7Ci0jZWxzZQot
ICAgICAgICBnc3RfdGFnX2xpc3RfZnJlZSh0YWdzKTsKLSNlbmRpZgogICAgIGVsc2UKICAgICAg
ICAgbm90aWZ5R3N0VGFnc09uUGFkKEdTVF9FTEVNRU5UKHNyYyksIHByaXYtPnNyY3BhZCwgdGFn
cyk7CiB9CkBAIC0xMDI1LDEwICs5MzMsOCBAQCB2b2lkIFN0cmVhbWluZ0NsaWVudDo6aGFuZGxl
RGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiAKICAgICBBU1NFUlQo
IXByaXYtPmJ1ZmZlciB8fCBkYXRhID09IGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKHByaXYtPmJ1
ZmZlci5nZXQoKSkpOwogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBpZiAocHJpdi0+
YnVmZmVyKQogICAgICAgICB1bm1hcEdzdEJ1ZmZlcihwcml2LT5idWZmZXIuZ2V0KCkpOwotI2Vu
ZGlmCiAKICAgICBpZiAocHJpdi0+c2Vla0lEKSB7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdub3JpbmcgZGF0YSIpOwpAQCAtMTA1OCwxMSArOTY0
LDcgQEAgdm9pZCBTdHJlYW1pbmdDbGllbnQ6OmhhbmRsZURhdGFSZWNlaXZlZChjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKQogICAgIGxvY2tlci51bmxvY2soKTsKIAogICAgIEdzdEZsb3dS
ZXR1cm4gcmV0ID0gZ3N0X2FwcF9zcmNfcHVzaF9idWZmZXIocHJpdi0+YXBwc3JjLCBwcml2LT5i
dWZmZXIubGVha1JlZigpKTsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGlmIChyZXQg
IT0gR1NUX0ZMT1dfT0sgJiYgcmV0ICE9IEdTVF9GTE9XX0VPUykKLSNlbHNlCi0gICAgaWYgKHJl
dCAhPSBHU1RfRkxPV19PSyAmJiByZXQgIT0gR1NUX0ZMT1dfVU5FWFBFQ1RFRCkKLSNlbmRpZgog
ICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUihzcmMsIENPUkUsIEZBSUxFRCwgKDApLCAoMCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJFZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4ZGMyNTUyZTA2MDQ5ZDFlNzJlMTQ0NzQwNmJlYmM4MDk3ZTE2ZjFmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJFZmwuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTkzICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEwIEln
YWxpYSBTLkwKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoVklERU8pICYmICFkZWZp
bmVkKEdTVF9BUElfVkVSU0lPTl8xKQotCi0jaW5jbHVkZSAiRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckVmbC5oIgotCi0jaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKLSNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgotCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotCi11c2luZyBuYW1lc3BhY2Ugc3Rk
OwotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLUZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6
OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKQotICAgIDogbV9odWRUaW1lb3V0SWQoMCkKLSAg
ICAsIG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCgwKQotICAgICwgbV9zZWVrTG9jayhmYWxzZSkKLSAg
ICAsIG1fd2luZG93KDApCi0gICAgLCBtX2h1ZFdpbmRvdygwKQotewotfQotCi1GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjp+RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpCi17Ci0gICAgZXhp
dEZ1bGxzY3JlZW4oKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRN
ZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotewotICAgIGlmICht
ZWRpYUVsZW1lbnQgPT0gbV9tZWRpYUVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1f
bWVkaWFFbGVtZW50ID0gbWVkaWFFbGVtZW50OwotICAgIGlmICghbV9tZWRpYUVsZW1lbnQpIHsK
LSAgICAgICAgLy8gQ2FuJ3QgZG8gZnVsbC1zY3JlZW4sIGp1c3QgZ2V0IG91dAotICAgICAgICBl
eGl0RnVsbHNjcmVlbigpOwotICAgIH0KLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpzaG93SHVkKGJvb2wgLyphdXRvSGlkZSovKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6aGlkZUh1ZCgpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpl
bnRlckZ1bGxzY3JlZW4oKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dXBkYXRlSHVkUG9zaXRpb24oKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZXhpdE9u
VXNlclJlcXVlc3QoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6ZXhpdEZ1bGxzY3JlZW4oKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLWJvb2wgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y2FuUGxheSgpIGNv
bnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZv
aWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6cGxheSgpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwYXVzZSgpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
OjpwbGF5U3RhdGVDaGFuZ2VkKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnRvZ2dsZVBsYXkoKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLWZsb2F0IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnZvbHVtZSgp
IGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotYm9v
bCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjptdXRlZCgpIGNvbnN0Ci17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6c2V0Vm9sdW1lKGZsb2F0IC8qdm9sdW1lKi8pCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp2b2x1bWVDaGFu
Z2VkKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6Om11dGVDaGFuZ2VkKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci1mbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjdXJyZW50VGltZSgpIGNvbnN0Ci17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpzZXRDdXJyZW50VGltZShmbG9hdCAvKnZhbHVlKi8pCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotZmxvYXQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cjo6ZHVyYXRpb24oKSBjb25zdAotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IDA7Ci19Ci0KLWZsb2F0IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBlcmNlbnRMb2FkZWQo
KSBjb25zdAotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZv
aWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6YmVnaW5TZWVrKCkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmRvU2Vlaygp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjplbmRTZWVrKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnVwZGF0ZUh1ZFByb2dyZXNzQmFyKCkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpjcmVhdGVIdWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLSNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217632</attachid>
            <date>2013-11-21 17:11:49 -0800</date>
            <delta_ts>2013-11-21 17:32:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124534-20131122021147.patch</filename>
            <type>text/plain</type>
            <size>114248</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2ZGU1N2U0MjE2NjM5MDEyYzhiMWFi
NjI2NWY1ODgwMmQ2OTZlNjMuLjBkNTc0ZTFhYzQwOGExNTJiOTE2ODNkOGYyZjQ4NTFhZjM3MTdj
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTEtMjEgIFhhYmllciBSb2RyaWd1ZXogQ2Fs
dmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBSZW1vdmUg
MC4xMCBjb2RlcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI0NTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm0uaDogUmVtb3ZlZCBtYWNybyBmb3IgR1N0cmVhbWVyIDEuMCBh
cyBpdCBpcyB0aGUKKyAgICAgICAgb25seSBjb2RlcGF0aCBub3cuCisKIDIwMTMtMTEtMTYgIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHVpbnQ4X3Qg
dmVjdG9ycyBmb3IgV2ViQ3J5cHRvIGRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MWEwZWU2ZWY3NjE3MzNl
NGNjYjYwMDJhNDVkZDdkZWIwM2NkNDkzLi5hZmNhNzg1MTQ5ZmZkODZmOWU4MGE3NGExNWMyNTc5
NzRmOGJjNjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYwIEBACisyMDEzLTExLTIxICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gUmVtb3ZlIDAuMTAgY29kZXBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFsbCBHU3RyZWFtZXIgcG9ydHMgYXJlIHVzaW5nIDEuMCBu
b3cgc28gd2UgcmVtb3ZlIHRoZSAwLjEwCisgICAgICAgIGNvZGVwYXRoLgorCisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAg
ICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmls
dGVyczogUmVtb3ZlZAorICAgICAgICBHU3RyZWFtZXJWZXJzaW9uaW5nLgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKG9uR1N0cmVhbWVyV2F2cGFyc2VQYWRBZGRlZENhbGxiYWNrKTogUmVtb3ZlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIpOgorICAgICAgICBSZXBsYWNlZCB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyBh
bmQgcmVtb3ZlZCAwLjEwIGNvZGVwYXRoLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lcjo6fkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIpOgorICAgICAgICBSZXBs
YWNlZCB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvcHlHc3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6
b25BcHBzaW5rUHVsbFJlcXVpcmVkQ2FsbGJhY2spOiBSZW1vdmVkIDAuMTAgY29kZXBhdGguCisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6On5BdWRpb0ZpbGVSZWFkZXIpOiBSZXBs
YWNlZAorICAgICAgICB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyBhbmQgcmVtb3ZlZCAwLjEwIGNv
ZGVwYXRoLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVTYW1wbGUp
OiBMZWZ0IGFzIG9ubHkgY29kZXBhdGguCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFk
ZXI6OmhhbmRsZUJ1ZmZlcik6IFJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVS
ZWFkZXI6OmhhbmRsZU5ld0RlaW50ZXJsZWF2ZVBhZCk6IFJlbW92ZWQgMC4xMAorICAgICAgICBj
b2RlcGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6cGx1Z0RlaW50ZXJs
ZWF2ZSk6IFJlcGxhY2VkCisgICAgICAgIGdldEdzdEF1ZGlvQ2Fwcy4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlQXVkaW9Gb3JCdXNDcmVhdGlvbik6IFJlcGxhY2Vk
CisgICAgICAgIHdlYmtpdEdzdFBpcGVsaW5lR2V0QnVzLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMpOiBSZW1vdmVkIDAuMTAgY29kZXBhdGguCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVy
LmNwcDoKKyAgICAgICAgKGdldEdTdHJlYW1lck1vbm9BdWRpb0NhcHMpOgorICAgICAgICAod2Vi
S2l0V2ViQXVkaW9HU3RyZWFtZXJDaGFubmVsUG9zaXRpb24pOiBSZW1vdmVkIDAuMTAgY29kZXBh
dGguCisgICAgICAgICh3ZWJraXRfd2ViX2F1ZGlvX3NyY19jbGFzc19pbml0KTogUmVwbGFjZWQK
KyAgICAgICAgc2V0R3N0RWxlbWVudENsYXNzTWV0YWRhdGEuCisgICAgICAgICh3ZWJraXRfd2Vi
X2F1ZGlvX3NyY19pbml0KToKKyAgICAgICAgKHdlYktpdFdlYkF1ZGlvU3JjQ29uc3RydWN0ZWQp
OgorICAgICAgICAod2ViS2l0V2ViQXVkaW9TcmNGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJLaXRX
ZWJBdWRpb1NyY0xvb3ApOiBSZW1vdmVkIDAuMTAgY29kZXBhdGguCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuaDoKKyAgICAgICAgUmVtb3ZlZCBjaGVja3MgZm9yIDEuMCBhcyBpdCBpcyB0aGUgb25s
eSBjb2RlcGF0aCBub3cuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dS
ZWZQdHJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV1RGOjpHc3RFbGVtZW50KToKKyAgICAgICAg
KFdURjo6R3N0UGFkKToKKyAgICAgICAgKFdURjo6R3N0UGFkVGVtcGxhdGUpOgorICAgICAgICAo
V1RGOjpHc3RUYXNrKToKKyAgICAgICAgKFdURjo6R3N0QnVzKToKKyAgICAgICAgKFdURjo6R3N0
RWxlbWVudEZhY3RvcnkpOgorICAgICAgICAoV1RGOjphZG9wdEdSZWYpOiBSZXBsYWNlZCBnc3RP
YmplY3RJc0Zsb2F0aW5nLgorICAgICAgICAoV1RGOjpyZWZHUmVmKTogUmVwbGFjZWQgd2Via2l0
R3N0T2JqZWN0UmVmU2luay4KKyAgICAgICAgKFdURjo6R3N0VGFnTGlzdCk6CisgICAgICAgIChX
VEY6OkdzdFNhbXBsZSk6IFJlbW92ZWQgY2hlY2tzIGZvciAxLjAgYXMgaXQgaXMgdGhlIG9ubHkK
KyAgICAgICAgY29kZXBhdGggbm93LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HUmVmUHRyR1N0cmVhbWVyLmg6IFJlbW92ZWQgY2hlY2tzCisgICAgICAgIGZvciAxLjAg
YXMgaXQgaXMgdGhlIG9ubHkgY29kZXBhdGggbm93LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwOgorICAgICAgICAod2Via2l0R3N0
R2hvc3RQYWRGcm9tU3RhdGljVGVtcGxhdGUpOgorICAgICAgICAoZ2V0VmlkZW9TaXplQW5kRm9y
bWF0RnJvbUNhcHMpOgorICAgICAgICAoY3JlYXRlR3N0QnVmZmVyKToKKyAgICAgICAgKGNyZWF0
ZUdzdEJ1ZmZlckZvckRhdGEpOgorICAgICAgICAoZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIpOgor
ICAgICAgICAobWFwR3N0QnVmZmVyKToKKyAgICAgICAgKHVubWFwR3N0QnVmZmVyKTogTW92ZWQg
aGVyZSBmcm9tIEdzdFZlcnNpb25pbmcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oOgorICAgICAgICAod2Via2l0R3N0Q2hlY2tWZXJz
aW9uKTogTW92ZWQgaGVyZSBmcm9tIEdzdFZlcnNpb25pbmcuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmg6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0
cmVhbWVyLmg6IFJlbW92ZWQgY2hlY2tzIGZvcgorICAgICAgICAxLjAgYXMgaXQgaXMgdGhlIG9u
bHkgY29kZXBhdGggbm93LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lckNhaXJvLmNwcDoKKyAgICAgICAgKEltYWdlR1N0cmVhbWVyOjpJbWFnZUdT
dHJlYW1lcik6IFJlbW92ZWQgMC4xMCBjb2RlcGF0aC4KKyAgICAgICAgKEltYWdlR1N0cmVhbWVy
Ojp+SW1hZ2VHU3RyZWFtZXIpOiBSZW1vdmVkIGNoZWNrcyBmb3IgMS4wIGFzIGl0IGlzCisgICAg
ICAgIHRoZSBvbmx5IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgIFJlbW92ZWQgY2hlY2tzIGZv
ciAxLjAgYXMgaXQgaXMgdGhlIG9ubHkgY29kZXBhdGggbm93LgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0QXVkaW9TdHJlYW1Qcm9wZXJ0aWVzQ2FsbGJhY2spOiBSZW1vdmVk
IDAuMTAgY29kZXBhdGguCisgICAgICAgIChXZWJDb3JlOjptZWRpYVBsYXllclByaXZhdGVUZXh0
Q2hhbmdlZENhbGxiYWNrKTogUmVtb3ZlZCBjaGVja3MKKyAgICAgICAgZm9yIDEuMCBhcyBpdCBp
cyB0aGUgb25seSBjb2RlcGF0aCBub3cuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmlzQXZhaWxhYmxlKTogUmVwbGFjZWQKKyAgICAgICAgZ1BsYXliaW5O
YW1lLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgUmVtb3ZlZCBjaGVja3MgZm9yIDEu
MCBhbmQgcmVwbGFjZWQgd2Via2l0R3N0UGlwZWxpbmVHZXRCdXMuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmR1cmF0aW9uKTogUmVtb3ZlZCAwLjEwCisg
ICAgICAgIGNvZGVwYXRoLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRleHRDaGFuZ2VkKToKKyAgICAgICAg
UmVtb3ZlZCBjaGVja3MgZm9yIDEuMCBhcyBpdCBpcyB0aGUgb25seSBjb2RlcGF0aCBub3cuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmJ1ZmZlcmVkKTog
UmVwbGFjZWQKKyAgICAgICAgZ1BlcmNlbnRNYXguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOiBSZW1vdmVkCisgICAgICAgIDAu
MTAgY29kZXBhdGguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OnByb2Nlc3NUYWJsZU9mQ29udGVudHMpOgorICAgICAgICBSZW1vdmVkIGNoZWNrcyBmb3Ig
MS4wIGFzIGl0IGlzIHRoZSBvbmx5IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxCeXRlcyk6IFJlbW92ZWQgMC4xMAorICAg
ICAgICBjb2RlcGF0aC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y3JlYXRlR1NUUGxheUJpbik6IFJlcGxhY2VkCisgICAgICAgIGdQbGF5YmluTmFtZSBh
bmQgd2Via2l0R3N0UGlwZWxpbmVHZXRCdXMgYW5kIHJlbW92ZWQgY2hlY2tzIGZvcgorICAgICAg
ICAxLjAuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICBSZW1vdmVkIGNoZWNrcyBmb3IgMS4wIGFzIGl0
IGlzIHRoZSBvbmx5IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnBhaW50KTogUmVtb3ZlZCAwLjEwCisgICAgICAgIGNvZGVwYXRoLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dFNpbmtHU3RyZWFt
ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0U2lua0dT
dHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5oOiBSZW1vdmVkCisgICAgICAgIGNoZWNr
cyBmb3IgMS4wIGFzIGl0IGlzIHRoZSBvbmx5IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KHdlYmtpdFZpZGVvU2lua1JlbmRlcik6CisgICAgICAgICh3ZWJraXRWaWRlb1NpbmtTZXRDYXBz
KTogUmVtb3ZlZCAwLjEwIGNvZGVwYXRoLgorICAgICAgICAod2Via2l0VmlkZW9TaW5rUHJvcG9z
ZUFsbG9jYXRpb24pOiBSZW1vdmVkIGNoZWNrcyBmb3IgMS4wIGFzIGl0CisgICAgICAgIGlzIHRo
ZSBvbmx5IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKHdlYmtpdFZpZGVvU2lua01hcnNoYWxWb2lk
QW5kTWluaU9iamVjdCk6IFJlbW92ZWQgYXMgaXQgd2FzIDAuMTAuCisgICAgICAgICh3ZWJraXRf
dmlkZW9fc2lua19jbGFzc19pbml0KTogUmVtb3ZlZCAwLjEwIGNvZGVwYXRoIGFuZCByZXBsYWNl
ZAorICAgICAgICBzZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lci5oOgorICAgICAgICBSZW1vdmVkIGNoZWNrcyBmb3IgMS4wIGFzIGl0IGlzIHRoZSBvbmx5
IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2Via2l0X21lZGlhX3NyY19j
bGFzc19pbml0KTogUmVwbGFjZWQKKyAgICAgICAgc2V0R3N0RWxlbWVudENsYXNzTWV0YWRhdGEu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHA6CisgICAgICAgIFJlbW92ZWQgMC4xMCBjb2RlcGF0aC4KKyAgICAgICAgKHdl
YktpdFdlYlNyY1F1ZXJ5KTogUmVtb3ZlZCBhcyBpdCB3YXMgMC4xMCBvbmx5LgorICAgICAgICAo
dm9pZCB3ZWJraXRfd2ViX3NyY19jbGFzc19pbml0KTogUmVwbGFjZWQgc2V0R3N0RWxlbWVudENs
YXNzTWV0YWRhdGEuCisgICAgICAgICh3ZWJraXRfd2ViX3NyY19pbml0KTogUmVtb3ZlZCBoYXZl
QXBwU3JjMjcgcHJpdmF0ZSBhdHRyaWJ1dGUgYW5kCisgICAgICAgIDAuMTAgY29kZXBhdGguCisg
ICAgICAgICh3ZWJLaXRXZWJTcmNTdG9wKTogUmVtb3ZlZCBjaGVja3MgZm9yIDEuMCBhcyBpdCBp
cyB0aGUgb25seQorICAgICAgICBjb2RlcGF0aCBub3cuCisgICAgICAgICh3ZWJLaXRXZWJTcmNT
ZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNVcmlHZXRUeXBlKToKKyAgICAgICAg
KHdlYktpdFdlYlNyY0dldFByb3RvY29scyk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNHZXRVcmkp
OgorICAgICAgICAod2ViS2l0V2ViU3JjU2V0VXJpKTogUmVtb3ZlZCAwLjEwIGNvZGVwYXRoLgor
ICAgICAgICAoU3RyZWFtaW5nQ2xpZW50OjpjcmVhdGVSZWFkQnVmZmVyKTogUmVtb3ZlZCBjaGVj
a3MgZm9yIDEuMCBhbmQKKyAgICAgICAgcmVwbGFjZWQgZ2V0R3N0QnVmZmVyU2l6ZS4KKyAgICAg
ICAgKFN0cmVhbWluZ0NsaWVudDo6aGFuZGxlUmVzcG9uc2VSZWNlaXZlZCk6IFJlbW92ZWQgMC4x
MCBjb2RlcGF0aAorICAgICAgICBhbmQgcmVwbGFjZWQgbm90aWZ5R3N0VGFnc09uUGFkLgorICAg
ICAgICAoU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVEYXRhUmVjZWl2ZWQpOiBSZW1vdmVkIDAuMTAg
Y29kZXBhdGggYW5kCisgICAgICAgIHJlcGxhY2VkIHNldEdzdEJ1ZmZlclNpemUgYW5kIGdzdF9i
dWZmZXJfZ2V0X3NpemUuCisKIDIwMTMtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBHT2JqZWN0IERP
TSBzeW1ib2xzIGZpbGUgYWZ0ZXIgcjE1ODc2MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjhiNGMyODU1ZDNmMzI4
YzQ1ZjdlYTlkZmQ3MmRjNDUxNzdlYTgzZi4uMDRjNTI4MTEyZDI0YjE1ODZjNTA5MmUwODQ4NTc3
MWMxZDZhNjVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMS0yMSAgWGFiaWVy
IFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3Ry
ZWFtZXJdIFJlbW92ZSAwLjEwIGNvZGVwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBSZW1vdmVkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJFZmwuY3BwLgorCiAyMDEzLTExLTEzICBKb3NlcGggUGVjb3Jhcm8g
IDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCByb2xsb3V0IG9mIHIx
NTkyNzEsIGJyb2tlIE1vdW50YWluIExpb24gYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggYmMw
N2I3NjIwNWQzZDYwYjNmODg5ODFlMGEwYTg1MzgzYTk5MGZhMC4uNjJlNTBmYzUyZTM3Y2RjMDdj
ZDQzMGM1NzMzOTZhYWY5MDVkY2U2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDEzLTExLTIxICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gUmVtb3ZlIDAuMTAgY29kZXBhdGgKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDUzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckVmbC5jcHA6IFJlbW92ZWQuCisKIDIwMTMtMTEtMTUg
IEFsYmVydG8gR2FyY2lhICA8YmVydG9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbRUZMXSBMZWFr
IGluIGV3a19mcmFtZV9jZXJ0aWZpY2F0ZV9zdGF0dXNfZ2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGIy
YjI0Nzk0NGM5ZjEwN2QxZjA5MjU2OTEzMmU2YmY4YjFmNGJiM2QuLmViNDdhYWNjZmIzOGQ2MmNk
ZTMwYmUzNTMzYzcyN2ExNGFhNThlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtNDk0LDcgKzQ5NCw2IEBA
CiAjZGVmaW5lIFdURl9VU0VfU09VUCAxCiAjZGVmaW5lIFdURl9VU0VfV0VCUCAxCiAjZGVmaW5l
IEVOQUJMRV9HTE9CQUxfRkFTVE1BTExPQ19ORVcgMAotI2RlZmluZSBHU1RfQVBJX1ZFUlNJT05f
MSAxCiAjZW5kaWYKIAogLyogT24gV2luZG93cywgdXNlIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVy
IGJ5IGRlZmF1bHQgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDNhNGE4NWEz
NWJmZTY0NjBmZThlZDNjZDBiMTQzYTI1Y2ZhZDUzOTEuLmIwMmZmZDRiMzc1Mzc3NjU4NzdiMWIw
N2EzMDU0MzNmY2E1YjgyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjMx
OCw4ICs2MzE4LDYgQEAgcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJV
dGlsaXRpZXMuaCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclZlcnNpb25pbmcuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1FZmwuY21ha2UKaW5kZXggMTJkOGUwYmEwN2RjNzlkZjJhMDVhYTE3NTY4M2ZiZjM3MDk4
NWUyZi4uMWU5OTU4ODc2ZjA4MzkyNjcwOTZhMDYyNDQ2NjFjNzA2Yjc2MjkxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTEyNiw3ICsxMjYsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJH
U3RyZWFtZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0
aWxpdGllcy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVy
c2lvbmluZy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFt
ZXJDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpp
bmRleCAxOTdlMWQ2Y2IxZGFkZDI2N2ZjMmUyMDlmYzI3ZGYyMjMyMzI2YzRhLi41NTc3NzQyYTVh
MjU5MWQ0MmQ2YjEzZmVjODRmNGYxMGU3M2Q0NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFr
ZQpAQCAtOTksNyArOTksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwCi0gICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCmluZGV4IDNlMzhkNzMwZDA2ZjQ2YmFhMzkwMDY2NGU2ZWY3OWVlZWQ5NDBjODQuLjg3Njhi
MzE3ZmM2YTViYjA3MWM5MDdmMDQyMTg3MzIzMTNhN2M3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtNzI3NSwxNiArNzI3NSw2IEBA
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgog
ICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcZ3N0cmVhbWVyXEdTdHJlYW1lclZlcnNpb25pbmcuY3BwIj4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyXEltYWdlR1N0cmVhbWVyQ2Fpcm8u
Y3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE5
MDE2LDcgKzE5MDA2LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXGdzdHJlYW1lclxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyXEdSZWZQdHJH
U3RyZWFtZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXGdzdHJlYW1lclxHU3RyZWFtZXJVdGlsaXRpZXMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1lclxHU3RyZWFtZXJWZXJzaW9uaW5n
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xnc3Ry
ZWFtZXJcSW1hZ2VHU3RyZWFtZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1lclxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXGdzdHJlYW1lclxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKaW5kZXggYTM5NWRhYjliNjM2MjY3YzFhOGE2YmFiY2M1YTFjMDYyZWNmNTJjYy4uNzIy
YmE4MTFjZGM0ZmM0YzU3OTVlNzNmNDQ3YmY3MWE2NjAzOGE4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAt
MSw0ICsxLDQgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogPFByb2plY3QgVG9vbHNWZXJz
aW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9t
c2J1aWxkLzIwMDMiPgogICA8SXRlbUdyb3VwPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iRGVyaXZl
ZFNvdXJjZXMiPgpAQCAtNzA1Nyw5ICs3MDU3LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1lclxHU3RyZWFtZXJVdGlsaXRpZXMuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xnc3RyZWFtZXJcR1N0cmVhbWVyVmVyc2lvbmluZy5jcHAiPgotICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVxncmFwaGljc1xnc3RyZWFtZXI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1lclxJbWFnZUdT
dHJlYW1lckNhaXJvLmNwcCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXGdzdHJl
YW1lcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTQ4ODIsOSArMTQ4NzksNiBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyXEdT
dHJlYW1lclV0aWxpdGllcy5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcZ3N0
cmVhbWVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xnc3RyZWFtZXJcR1N0cmVhbWVyVmVyc2lvbmluZy5oIj4K
LSAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyPC9GaWx0ZXI+Ci0gICAg
PC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xnc3RyZWFtZXJcSW1hZ2VHU3RyZWFtZXIuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdy
YXBoaWNzXGdzdHJlYW1lcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1
ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGNjZjA0NTA3MmJlMGI5NzQ3ZDhiN2Nm
NmI4N2MyYmViYjM4NWE2ZTQuLmRkMjQ0YmExNjkxZTE2ZDdjNDQxNmE5MTc1MTk2MzhhMmZhZmI0
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKQEAgLTI2LDcg
KzI2LDYgQEAKICNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKLSNpbmNs
dWRlICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIldlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSA8Z3N0L2dzdC5o
PgpAQCAtNzAsMTMgKzY5LDYgQEAgdW5zaWduZWQgbG9uZyBBdWRpb0Rlc3RpbmF0aW9uOjptYXhD
aGFubmVsQ291bnQoKQogICAgIHJldHVybiAwOwogfQogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCi1zdGF0aWMgdm9pZCBvbkdTdHJlYW1lcldhdnBhcnNlUGFkQWRkZWRDYWxsYmFjayhHc3RF
bGVtZW50KiwgR3N0UGFkKiBwYWQsIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIqIGRlc3RpbmF0
aW9uKQotewotICAgIGRlc3RpbmF0aW9uLT5maW5pc2hCdWlsZGluZ1BpcGVsaW5lQWZ0ZXJXYXZQ
YXJzZXJQYWRSZWFkeShwYWQpOwotfQotI2VuZGlmCi0KIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywg
ZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgLCBtX3Jl
bmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKDIsIGZyYW1lc1RvUHVsbCwgZmFsc2UpKQpAQCAtODQs
NyArNzYsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssCiAgICAgLCBtX2lzUGxheWluZyhmYWxz
ZSkKIHsKICAgICBtX3BpcGVsaW5lID0gZ3N0X3BpcGVsaW5lX25ldygicGxheSIpOwotICAgIEdS
ZWZQdHI8R3N0QnVzPiBidXMgPSB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUo
bV9waXBlbGluZSkpOworICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3Bp
cGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUpKSk7CiAgICAgQVNTRVJUKGJ1
cyk7CiAgICAgZ3N0X2J1c19hZGRfc2lnbmFsX3dhdGNoKGJ1cy5nZXQoKSk7CiAgICAgZ19zaWdu
YWxfY29ubmVjdChidXMuZ2V0KCksICJtZXNzYWdlIiwgR19DQUxMQkFDSyhtZXNzYWdlQ2FsbGJh
Y2spLCB0aGlzKTsKQEAgLTEwMiwyMSArOTQsMTYgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAog
ICAgIGlmICghbV93YXZQYXJzZXJBdmFpbGFibGUpCiAgICAgICAgIHJldHVybjsKIAotI2lmbmRl
ZiBHU1RfQVBJX1ZFUlNJT05fMQotICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2F2UGFyc2VyLCAicGFk
LWFkZGVkIiwgR19DQUxMQkFDSyhvbkdTdHJlYW1lcldhdnBhcnNlUGFkQWRkZWRDYWxsYmFjayks
IHRoaXMpOwotI2VuZGlmCiAgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKG1fcGlwZWxpbmUp
LCB3ZWJraXRBdWRpb1NyYywgd2F2UGFyc2VyLCBOVUxMKTsKICAgICBnc3RfZWxlbWVudF9saW5r
X3BhZHNfZnVsbCh3ZWJraXRBdWRpb1NyYywgInNyYyIsIHdhdlBhcnNlciwgInNpbmsiLCBHU1Rf
UEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAg
IEdSZWZQdHI8R3N0UGFkPiBzcmNQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRp
Y19wYWQod2F2UGFyc2VyLCAic3JjIikpOwogICAgIGZpbmlzaEJ1aWxkaW5nUGlwZWxpbmVBZnRl
cldhdlBhcnNlclBhZFJlYWR5KHNyY1BhZC5nZXQoKSk7Ci0jZW5kaWYKIH0KIAogQXVkaW9EZXN0
aW5hdGlvbkdTdHJlYW1lcjo6fkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoKQogewotICAgIEdS
ZWZQdHI8R3N0QnVzPiBidXMgPSB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUo
bV9waXBlbGluZSkpOworICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3Bp
cGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUpKSk7CiAgICAgQVNTRVJUKGJ1
cyk7CiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKGJ1cy5nZXQoKSwg
cmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4obWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7CiAgICAg
Z3N0X2J1c19yZW1vdmVfc2lnbmFsX3dhdGNoKGJ1cy5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Zp
bGVSZWFkZXJHU3RyZWFtZXIuY3BwCmluZGV4IGNiNTVmYzdjODQ4NjM5MTA2NTBmZWY0YjMwYWZj
MGYyNWJjMDNlYmUuLjY3MmFlYzFhZTA5ZDdiYTg1M2FhNTI0NWE4OTgyMDEyMmMxYzlmZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Zp
bGVSZWFkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0yNCw3ICsyNCw2IEBA
CiAjaW5jbHVkZSAiQXVkaW9GaWxlUmVhZGVyLmgiCiAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgot
I2luY2x1ZGUgIkdTdHJlYW1lclZlcnNpb25pbmcuaCIKIAogI2luY2x1ZGUgPGdpby9naW8uaD4K
ICNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4KQEAgLTM1LDE3ICszNCw3IEBACiAjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQ
dHIuaD4KIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1
ZGlvLmg+Ci0jZWxzZQotI2luY2x1ZGUgPGdzdC9hdWRpby9tdWx0aWNoYW5uZWwuaD4KLSNlbmRp
ZgotCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLXN0YXRpYyBjb25zdCBjaGFyKiBnRGVjb2Rl
YmluTmFtZSA9ICJkZWNvZGViaW4iOwotI2Vsc2UKLXN0YXRpYyBjb25zdCBjaGFyKiBnRGVjb2Rl
YmluTmFtZSA9ICJkZWNvZGViaW4yIjsKLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTU4LDExICs0Nyw3IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8QXVkaW9CdXM+IGNy
ZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRvTW9ubyk7CiAKLSNpZmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQogICAgIEdzdEZsb3dSZXR1cm4gaGFuZGxlU2FtcGxlKEdzdEFwcFNpbmsq
KTsKLSNlbHNlCi0gICAgR3N0Rmxvd1JldHVybiBoYW5kbGVCdWZmZXIoR3N0QXBwU2luayopOwot
I2VuZGlmCiAgICAgZ2Jvb2xlYW4gaGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKik7CiAgICAgdm9p
ZCBoYW5kbGVOZXdEZWludGVybGVhdmVQYWQoR3N0UGFkKik7CiAgICAgdm9pZCBkZWludGVybGVh
dmVQYWRzQ29uZmlndXJlZCgpOwpAQCAtNzgsMTEgKzYzLDYgQEAgcHJpdmF0ZToKICAgICBHc3RC
dWZmZXJMaXN0KiBtX2Zyb250TGVmdEJ1ZmZlcnM7CiAgICAgR3N0QnVmZmVyTGlzdCogbV9mcm9u
dFJpZ2h0QnVmZmVyczsKIAotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotICAgIEdzdEJ1ZmZl
ckxpc3RJdGVyYXRvciogbV9mcm9udExlZnRCdWZmZXJzSXRlcmF0b3I7Ci0gICAgR3N0QnVmZmVy
TGlzdEl0ZXJhdG9yKiBtX2Zyb250UmlnaHRCdWZmZXJzSXRlcmF0b3I7Ci0jZW5kaWYKLQogICAg
IEdzdEVsZW1lbnQqIG1fcGlwZWxpbmU7CiAgICAgdW5zaWduZWQgbV9jaGFubmVsU2l6ZTsKICAg
ICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fZGVjb2RlYmluOwpAQCAtOTMsNyArNzMsNiBAQCBwcml2
YXRlOgogCiBzdGF0aWMgdm9pZCBjb3B5R3N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVsKEdz
dEJ1ZmZlckxpc3QqIGJ1ZmZlcnMsIEF1ZGlvQ2hhbm5lbCogYXVkaW9DaGFubmVsKQogewotI2lm
ZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gYXVkaW9DaGFu
bmVsLT5tdXRhYmxlRGF0YSgpOwogICAgIHVuc2lnbmVkIGJ1ZmZlckNvdW50ID0gZ3N0X2J1ZmZl
cl9saXN0X2xlbmd0aChidWZmZXJzKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVm
ZmVyQ291bnQ7ICsraSkgewpAQCAtMTAzLDI2ICs4MiwxMSBAQCBzdGF0aWMgdm9pZCBjb3B5R3N0
cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVsKEdzdEJ1ZmZlckxpc3QqIGJ1ZmZlcnMsIEF1ZGlv
Q2hhbgogICAgICAgICBnc3RfYnVmZmVyX2V4dHJhY3QoYnVmZmVyLCAwLCBkZXN0aW5hdGlvbiwg
YnVmZmVyU2l6ZSk7CiAgICAgICAgIGRlc3RpbmF0aW9uICs9IGJ1ZmZlclNpemUgLyBzaXplb2Yo
ZmxvYXQpOwogICAgIH0KLSNlbHNlCi0gICAgR3N0QnVmZmVyTGlzdEl0ZXJhdG9yKiBpdGVyID0g
Z3N0X2J1ZmZlcl9saXN0X2l0ZXJhdGUoYnVmZmVycyk7Ci0gICAgZ3N0X2J1ZmZlcl9saXN0X2l0
ZXJhdG9yX25leHRfZ3JvdXAoaXRlcik7Ci0gICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RfYnVm
ZmVyX2xpc3RfaXRlcmF0b3JfbWVyZ2VfZ3JvdXAoaXRlcik7Ci0gICAgaWYgKGJ1ZmZlcikgewot
ICAgICAgICBtZW1jcHkoYXVkaW9DaGFubmVsLT5tdXRhYmxlRGF0YSgpLCByZWludGVycHJldF9j
YXN0PGZsb2F0Kj4oR1NUX0JVRkZFUl9EQVRBKGJ1ZmZlcikpLCBHU1RfQlVGRkVSX1NJWkUoYnVm
ZmVyKSk7Ci0gICAgICAgIGdzdF9idWZmZXJfdW5yZWYoYnVmZmVyKTsKLSAgICB9Ci0KLSAgICBn
c3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfZnJlZShpdGVyKTsKLSNlbmRpZgogfQogCiBzdGF0aWMg
R3N0Rmxvd1JldHVybiBvbkFwcHNpbmtQdWxsUmVxdWlyZWRDYWxsYmFjayhHc3RBcHBTaW5rKiBz
aW5rLCBncG9pbnRlciB1c2VyRGF0YSkKIHsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxBdWRpb0ZpbGVSZWFkZXIqPih1c2VyRGF0YSktPmhhbmRsZVNh
bXBsZShzaW5rKTsKLSNlbHNlCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlvRmlsZVJlYWRl
cio+KHVzZXJEYXRhKS0+aGFuZGxlQnVmZmVyKHNpbmspOwotI2VuZGlmCiB9CiAKIGdib29sZWFu
IG1lc3NhZ2VDYWxsYmFjayhHc3RCdXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBBdWRpb0ZpbGVS
ZWFkZXIqIHJlYWRlcikKQEAgLTE3Myw3ICsxMzcsNyBAQCBBdWRpb0ZpbGVSZWFkZXI6OkF1ZGlv
RmlsZVJlYWRlcihjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YVNpemUpCiBBdWRpb0ZpbGVS
ZWFkZXI6On5BdWRpb0ZpbGVSZWFkZXIoKQogewogICAgIGlmIChtX3BpcGVsaW5lKSB7Ci0gICAg
ICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQ
RUxJTkUobV9waXBlbGluZSkpOworICAgICAgICBHUmVmUHRyPEdzdEJ1cz4gYnVzID0gYWRvcHRH
UmVmKGdzdF9waXBlbGluZV9nZXRfYnVzKEdTVF9QSVBFTElORShtX3BpcGVsaW5lKSkpOwogICAg
ICAgICBBU1NFUlQoYnVzKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9i
eV9mdW5jKGJ1cy5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4obWVzc2FnZUNhbGxi
YWNrKSwgdGhpcyk7CiAgICAgICAgIGdzdF9idXNfcmVtb3ZlX3NpZ25hbF93YXRjaChidXMuZ2V0
KCkpOwpAQCAtMTkzLDE1ICsxNTcsMTAgQEAgQXVkaW9GaWxlUmVhZGVyOjp+QXVkaW9GaWxlUmVh
ZGVyKCkKICAgICAgICAgbV9kZUludGVybGVhdmUuY2xlYXIoKTsKICAgICB9CiAKLSNpZm5kZWYg
R1NUX0FQSV9WRVJTSU9OXzEKLSAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfZnJlZShtX2Zy
b250TGVmdEJ1ZmZlcnNJdGVyYXRvcik7Ci0gICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX2Zy
ZWUobV9mcm9udFJpZ2h0QnVmZmVyc0l0ZXJhdG9yKTsKLSNlbmRpZgogICAgIGdzdF9idWZmZXJf
bGlzdF91bnJlZihtX2Zyb250TGVmdEJ1ZmZlcnMpOwogICAgIGdzdF9idWZmZXJfbGlzdF91bnJl
ZihtX2Zyb250UmlnaHRCdWZmZXJzKTsKIH0KIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiBH
c3RGbG93UmV0dXJuIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlU2FtcGxlKEdzdEFwcFNpbmsqIHNp
bmspCiB7CiAgICAgR3N0U2FtcGxlKiBzYW1wbGUgPSBnc3RfYXBwX3NpbmtfcHVsbF9zYW1wbGUo
c2luayk7CkBAIC0yNDIsNjMgKzIwMSw2IEBAIEdzdEZsb3dSZXR1cm4gQXVkaW9GaWxlUmVhZGVy
OjpoYW5kbGVTYW1wbGUoR3N0QXBwU2luayogc2luaykKICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7
CiAKIH0KLSNlbmRpZgotCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi1Hc3RGbG93UmV0dXJu
IEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlQnVmZmVyKEdzdEFwcFNpbmsqIHNpbmspCi17Ci0gICAg
R3N0QnVmZmVyKiBidWZmZXIgPSBnc3RfYXBwX3NpbmtfcHVsbF9idWZmZXIoc2luayk7Ci0gICAg
aWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLQotICAgIEdzdENh
cHMqIGNhcHMgPSBnc3RfYnVmZmVyX2dldF9jYXBzKGJ1ZmZlcik7Ci0gICAgR3N0U3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKGNhcHMsIDApOwotCi0gICAgZ2lu
dCBjaGFubmVscyA9IDA7Ci0gICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJl
LCAiY2hhbm5lbHMiLCAmY2hhbm5lbHMpIHx8ICFjaGFubmVscykgewotICAgICAgICBnc3RfY2Fw
c191bnJlZihjYXBzKTsKLSAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOwotICAgICAg
ICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7Ci0gICAgfQotCi0gICAgZ2ludCBzYW1wbGVSYXRlID0g
MDsKLSAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2ludChzdHJ1Y3R1cmUsICJyYXRlIiwgJnNh
bXBsZVJhdGUpIHx8ICFzYW1wbGVSYXRlKSB7Ci0gICAgICAgIGdzdF9jYXBzX3VucmVmKGNhcHMp
OwotICAgICAgICBnc3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7Ci0gICAgICAgIHJldHVybiBHU1Rf
RkxPV19FUlJPUjsKLSAgICB9Ci0KLSAgICBnaW50IHdpZHRoID0gMDsKLSAgICBpZiAoIWdzdF9z
dHJ1Y3R1cmVfZ2V0X2ludChzdHJ1Y3R1cmUsICJ3aWR0aCIsICZ3aWR0aCkgfHwgIXdpZHRoKSB7
Ci0gICAgICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOwotICAgICAgICBnc3RfYnVmZmVyX3VucmVm
KGJ1ZmZlcik7Ci0gICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLSAgICB9Ci0KLSAgICBH
c3RDbG9ja1RpbWUgZHVyYXRpb24gPSAoc3RhdGljX2Nhc3Q8Z3VpbnQ2ND4oR1NUX0JVRkZFUl9T
SVpFKGJ1ZmZlcikpICogOCAqIEdTVF9TRUNPTkQpIC8gKHNhbXBsZVJhdGUgKiBjaGFubmVscyAq
IHdpZHRoKTsKLSAgICBpbnQgZnJhbWVzID0gR1NUX0NMT0NLX1RJTUVfVE9fRlJBTUVTKGR1cmF0
aW9uLCBzYW1wbGVSYXRlKTsKLQotICAgIC8vIENoZWNrIHRoZSBmaXJzdCBhdWRpbyBjaGFubmVs
LiBUaGUgYnVmZmVyIGlzIHN1cHBvc2VkIHRvIHN0b3JlCi0gICAgLy8gZGF0YSBvZiBhIHNpbmds
ZSBjaGFubmVsIGFueXdheS4KLSAgICBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiogcG9zaXRpb25z
ID0gZ3N0X2F1ZGlvX2dldF9jaGFubmVsX3Bvc2l0aW9ucyhzdHJ1Y3R1cmUpOwotICAgIHN3aXRj
aCAocG9zaXRpb25zWzBdKSB7Ci0gICAgY2FzZSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9G
Uk9OVF9MRUZUOgotICAgICAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfYWRkKG1fZnJvbnRM
ZWZ0QnVmZmVyc0l0ZXJhdG9yLCBidWZmZXIpOwotICAgICAgICBtX2NoYW5uZWxTaXplICs9IGZy
YW1lczsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElP
Tl9GUk9OVF9SSUdIVDoKLSAgICAgICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX2FkZChtX2Zy
b250UmlnaHRCdWZmZXJzSXRlcmF0b3IsIGJ1ZmZlcik7Ci0gICAgICAgIGJyZWFrOwotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIGdzdF9idWZmZXJfdW5yZWYoYnVmZmVyKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotCi0gICAgZ19mcmVlKHBvc2l0aW9ucyk7Ci0gICAgZ3N0X2NhcHNfdW5yZWYoY2Fw
cyk7Ci0gICAgcmV0dXJuIEdTVF9GTE9XX09LOwotfQotI2VuZGlmCiAKIGdib29sZWFuIEF1ZGlv
RmlsZVJlYWRlcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogewpAQCAtMzM3
LDEyICsyMzksNyBAQCB2b2lkIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTmV3RGVpbnRlcmxlYXZl
UGFkKEdzdFBhZCogcGFkKQogICAgIEdzdEFwcFNpbmtDYWxsYmFja3MgY2FsbGJhY2tzOwogICAg
IGNhbGxiYWNrcy5lb3MgPSAwOwogICAgIGNhbGxiYWNrcy5uZXdfcHJlcm9sbCA9IDA7Ci0jaWZk
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBjYWxsYmFja3MubmV3X3NhbXBsZSA9IG9uQXBwc2lu
a1B1bGxSZXF1aXJlZENhbGxiYWNrOwotI2Vsc2UKLSAgICBjYWxsYmFja3MubmV3X2J1ZmZlcl9s
aXN0ID0gMDsKLSAgICBjYWxsYmFja3MubmV3X2J1ZmZlciA9IG9uQXBwc2lua1B1bGxSZXF1aXJl
ZENhbGxiYWNrOwotI2VuZGlmCiAgICAgZ3N0X2FwcF9zaW5rX3NldF9jYWxsYmFja3MoR1NUX0FQ
UF9TSU5LKHNpbmspLCAmY2FsbGJhY2tzLCB0aGlzLCAwKTsKIAogICAgIGdfb2JqZWN0X3NldChz
aW5rLCAic3luYyIsIEZBTFNFLCBOVUxMKTsKQEAgLTM4MCw3ICsyNzcsMTAgQEAgdm9pZCBBdWRp
b0ZpbGVSZWFkZXI6OnBsdWdEZWludGVybGVhdmUoR3N0UGFkKiBwYWQpCiAgICAgZ19zaWduYWxf
Y29ubmVjdChtX2RlSW50ZXJsZWF2ZS5nZXQoKSwgInBhZC1hZGRlZCIsIEdfQ0FMTEJBQ0sob25H
U3RyZWFtZXJEZWludGVybGVhdmVQYWRBZGRlZENhbGxiYWNrKSwgdGhpcyk7CiAgICAgZ19zaWdu
YWxfY29ubmVjdChtX2RlSW50ZXJsZWF2ZS5nZXQoKSwgIm5vLW1vcmUtcGFkcyIsIEdfQ0FMTEJB
Q0sob25HU3RyZWFtZXJEZWludGVybGVhdmVSZWFkeUNhbGxiYWNrKSwgdGhpcyk7CiAKLSAgICBH
c3RDYXBzKiBjYXBzID0gZ2V0R3N0QXVkaW9DYXBzKDIsIG1fc2FtcGxlUmF0ZSk7CisgICAgR3N0
Q2FwcyogY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUoImF1ZGlvL3gtcmF3IiwgInJhdGUiLCBH
X1RZUEVfSU5ULCBzdGF0aWNfY2FzdDxpbnQ+KG1fc2FtcGxlUmF0ZSksCisgICAgICAgICJjaGFu
bmVscyIsIEdfVFlQRV9JTlQsIDIsCisgICAgICAgICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBn
c3RfYXVkaW9fZm9ybWF0X3RvX3N0cmluZyhHU1RfQVVESU9fRk9STUFUX0YzMiksCisgICAgICAg
ICJsYXlvdXQiLCBHX1RZUEVfU1RSSU5HLCAiaW50ZXJsZWF2ZWQiLCBudWxscHRyKTsKICAgICBn
X29iamVjdF9zZXQoY2Fwc0ZpbHRlciwgImNhcHMiLCBjYXBzLCBOVUxMKTsKICAgICBnc3RfY2Fw
c191bnJlZihjYXBzKTsKIApAQCAtNDA2LDcgKzMwNiw3IEBAIHZvaWQgQXVkaW9GaWxlUmVhZGVy
OjpkZWNvZGVBdWRpb0ZvckJ1c0NyZWF0aW9uKCkKICAgICAvLyBBIGRlaW50ZXJsZWF2ZSBlbGVt
ZW50IGlzIGFkZGVkIG9uY2UgYSBzcmMgcGFkIGJlY29tZXMgYXZhaWxhYmxlIGluIGRlY29kZWJp
bi4KICAgICBtX3BpcGVsaW5lID0gZ3N0X3BpcGVsaW5lX25ldygwKTsKIAotICAgIEdSZWZQdHI8
R3N0QnVzPiBidXMgPSB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUobV9waXBl
bGluZSkpOworICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5l
X2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUpKSk7CiAgICAgQVNTRVJUKGJ1cyk7CiAg
ICAgZ3N0X2J1c19hZGRfc2lnbmFsX3dhdGNoKGJ1cy5nZXQoKSk7CiAgICAgZ19zaWduYWxfY29u
bmVjdChidXMuZ2V0KCksICJtZXNzYWdlIiwgR19DQUxMQkFDSyhtZXNzYWdlQ2FsbGJhY2spLCB0
aGlzKTsKQEAgLTQyMiw3ICszMjIsNyBAQCB2b2lkIEF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlQXVk
aW9Gb3JCdXNDcmVhdGlvbigpCiAgICAgICAgIGdfb2JqZWN0X3NldChzb3VyY2UsICJsb2NhdGlv
biIsIG1fZmlsZVBhdGgsIE5VTEwpOwogICAgIH0KIAotICAgIG1fZGVjb2RlYmluID0gZ3N0X2Vs
ZW1lbnRfZmFjdG9yeV9tYWtlKGdEZWNvZGViaW5OYW1lLCAiZGVjb2RlYmluIik7CisgICAgbV9k
ZWNvZGViaW4gPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImRlY29kZWJpbiIsICJkZWNvZGVi
aW4iKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fZGVjb2RlYmluLmdldCgpLCAicGFkLWFkZGVk
IiwgR19DQUxMQkFDSyhvbkdTdHJlYW1lckRlY29kZWJpblBhZEFkZGVkQ2FsbGJhY2spLCB0aGlz
KTsKIAogICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTihtX3BpcGVsaW5lKSwgc291cmNlLCBt
X2RlY29kZWJpbi5nZXQoKSwgTlVMTCk7CkBAIC00MzcsMTQgKzMzNyw2IEBAIFBhc3NSZWZQdHI8
QXVkaW9CdXM+IEF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJv
b2wgbWl4VG9Nb25vCiAgICAgbV9mcm9udExlZnRCdWZmZXJzID0gZ3N0X2J1ZmZlcl9saXN0X25l
dygpOwogICAgIG1fZnJvbnRSaWdodEJ1ZmZlcnMgPSBnc3RfYnVmZmVyX2xpc3RfbmV3KCk7CiAK
LSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBtX2Zyb250TGVmdEJ1ZmZlcnNJdGVyYXRv
ciA9IGdzdF9idWZmZXJfbGlzdF9pdGVyYXRlKG1fZnJvbnRMZWZ0QnVmZmVycyk7Ci0gICAgZ3N0
X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX2FkZF9ncm91cChtX2Zyb250TGVmdEJ1ZmZlcnNJdGVyYXRv
cik7Ci0KLSAgICBtX2Zyb250UmlnaHRCdWZmZXJzSXRlcmF0b3IgPSBnc3RfYnVmZmVyX2xpc3Rf
aXRlcmF0ZShtX2Zyb250UmlnaHRCdWZmZXJzKTsKLSAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0
b3JfYWRkX2dyb3VwKG1fZnJvbnRSaWdodEJ1ZmZlcnNJdGVyYXRvcik7Ci0jZW5kaWYKLQogICAg
IEdSZWZQdHI8R01haW5Db250ZXh0PiBjb250ZXh0ID0gYWRvcHRHUmVmKGdfbWFpbl9jb250ZXh0
X25ldygpKTsKICAgICBnX21haW5fY29udGV4dF9wdXNoX3RocmVhZF9kZWZhdWx0KGNvbnRleHQu
Z2V0KCkpOwogICAgIG1fbG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9uZXcoY29udGV4dC5n
ZXQoKSwgRkFMU0UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFt
ZXIuY3BwCmluZGV4IDU1ZGJlZDRmODBkMjM5NGRlYTM4MzFhYTVkZTE4ZGRmZmNmZWQzMjkuLjc3
YmY5MjA2OGRlMzllMmIyYmE3MmMyZDhjYTY4MDg2ZjE5NTQxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMjYsMTkgKzI2LDEwIEBACiAj
aW5jbHVkZSAiQXVkaW9JT0NhbGxiYWNrLmgiCiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJW
ZXJzaW9uaW5nLmgiCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpbmNsdWRlICJHU3RyZWFt
ZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KLSNlbHNlCi0jaW5j
bHVkZSA8Z3N0L2F1ZGlvL211bHRpY2hhbm5lbC5oPgotI2VuZGlmCiAjaW5jbHVkZSA8Z3N0L3Bi
dXRpbHMvcGJ1dGlscy5oPgogCi0vLyBHU3RhdGljUmVjTXV0ZXggaXMgZGVwcmVjYXRlZCBpbiBH
bGliLCBidXQgcmVxdWlyZWQgaW4gR1N0cmVhbWVyIDAuMTAKLSNpZiAoQ09NUElMRVIoR0NDKSAm
JiBHQ0NfVkVSU0lPTl9BVF9MRUFTVCg0LCA2LCAwKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJ
T05fMSkpCi0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNs
YXJhdGlvbnMiCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHR5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJBdWRpb1NyY0NsYXNzICAgV2ViS2l0V2ViQXVkaW9TcmNDbGFzczsK
QEAgLTY1LDExICs1Niw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViQXVkaW9Tb3VyY2VQcml2YXRlIHsK
ICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHdhdkVuY29kZXI7CiAKICAgICBHUmVmUHRyPEdzdFRh
c2s+IHRhc2s7Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBHUmVjTXV0ZXggbXV0ZXg7
Ci0jZWxzZQotICAgIEdTdGF0aWNSZWNNdXRleCBtdXRleDsKLSNlbmRpZgogCiAgICAgR1NMaXN0
KiBwYWRzOyAvLyBMaXN0IG9mIHF1ZXVlIHNpbmsgcGFkcy4gT25lIHF1ZXVlIGZvciBlYWNoIHBs
YW5hciBhdWRpbyBjaGFubmVsLgogICAgIEdzdFBhZCogc291cmNlUGFkOyAvLyBzcmMgcGFkIG9m
IHRoZSBlbGVtZW50LCBpbnRlcmxlYXZlZCB3YXYgZGF0YSBpcyBwdXNoZWQgdG8gaXQuCkBAIC05
OSwxNyArODYsMTAgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViQXVkaW9TcmNMb29wKFdlYktpdFdl
YkF1ZGlvU3JjKik7CiAKIHN0YXRpYyBHc3RDYXBzKiBnZXRHU3RyZWFtZXJNb25vQXVkaW9DYXBz
KGZsb2F0IHNhbXBsZVJhdGUpCiB7Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICByZXR1
cm4gZ3N0X2NhcHNfbmV3X3NpbXBsZSgiYXVkaW8veC1yYXciLCAicmF0ZSIsIEdfVFlQRV9JTlQs
IHN0YXRpY19jYXN0PGludD4oc2FtcGxlUmF0ZSksCiAgICAgICAgICJjaGFubmVscyIsIEdfVFlQ
RV9JTlQsIDEsCiAgICAgICAgICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBnc3RfYXVkaW9fZm9y
bWF0X3RvX3N0cmluZyhHU1RfQVVESU9fRk9STUFUX0YzMiksCiAgICAgICAgICJsYXlvdXQiLCBH
X1RZUEVfU1RSSU5HLCAibm9uLWludGVybGVhdmVkIiwgTlVMTCk7Ci0jZWxzZQotICAgIHJldHVy
biBnc3RfY2Fwc19uZXdfc2ltcGxlKCJhdWRpby94LXJhdy1mbG9hdCIsICJyYXRlIiwgR19UWVBF
X0lOVCwgc3RhdGljX2Nhc3Q8aW50PihzYW1wbGVSYXRlKSwKLSAgICAgICAgImNoYW5uZWxzIiwg
R19UWVBFX0lOVCwgMSwKLSAgICAgICAgImVuZGlhbm5lc3MiLCBHX1RZUEVfSU5ULCBHX0JZVEVf
T1JERVIsCi0gICAgICAgICJ3aWR0aCIsIEdfVFlQRV9JTlQsIDMyLCBOVUxMKTsKLSNlbmRpZgog
fQogCiBzdGF0aWMgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gd2ViS2l0V2ViQXVkaW9HU3RyZWFt
ZXJDaGFubmVsUG9zaXRpb24oaW50IGNoYW5uZWxJbmRleCkKQEAgLTEyNywxMSArMTA3LDcgQEAg
c3RhdGljIEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uIHdlYktpdFdlYkF1ZGlvR1N0cmVhbWVyQ2hh
bm5lbFBvc2l0aW9uKGludCBjaGFubmUKICAgICAgICAgcG9zaXRpb24gPSBHU1RfQVVESU9fQ0hB
Tk5FTF9QT1NJVElPTl9GUk9OVF9DRU5URVI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVk
aW9CdXM6OkNoYW5uZWxMRkU6Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICAgICAgcG9z
aXRpb24gPSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9MRkUxOwotI2Vsc2UKLSAgICAgICAg
cG9zaXRpb24gPSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9MRkU7Ci0jZW5kaWYKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBBdWRpb0J1czo6Q2hhbm5lbFN1cnJvdW5kTGVmdDoKICAgICAg
ICAgcG9zaXRpb24gPSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0xFRlQ7CkBAIC0x
NTgsNyArMTM0LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9hdWRpb19zcmNfY2xhc3NfaW5p
dChXZWJLaXRXZWJBdWRpb1NyY0NsYXNzKiB3ZWJLaXRXZWJBdWQKICAgICBHc3RFbGVtZW50Q2xh
c3MqIGVsZW1lbnRDbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTKHdlYktpdFdlYkF1ZGlvU3JjQ2xh
c3MpOwogCiAgICAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZShlbGVtZW50Q2xh
c3MsIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCgmc3JjVGVtcGxhdGUpKTsKLSAgICBzZXRH
c3RFbGVtZW50Q2xhc3NNZXRhZGF0YShlbGVtZW50Q2xhc3MsICJXZWJLaXQgV2ViQXVkaW8gc291
cmNlIGVsZW1lbnQiLCAiU291cmNlIiwgIkhhbmRsZXMgV2ViQXVkaW8gZGF0YSBmcm9tIFdlYkNv
cmUiLCAiUGhpbGlwcGUgTm9ybWFuZCA8cG5vcm1hbmRAaWdhbGlhLmNvbT4iKTsKKyAgICBnc3Rf
ZWxlbWVudF9jbGFzc19zZXRfbWV0YWRhdGEoZWxlbWVudENsYXNzLCAiV2ViS2l0IFdlYkF1ZGlv
IHNvdXJjZSBlbGVtZW50IiwgIlNvdXJjZSIsICJIYW5kbGVzIFdlYkF1ZGlvIGRhdGEgZnJvbSBX
ZWJDb3JlIiwgIlBoaWxpcHBlIE5vcm1hbmQgPHBub3JtYW5kQGlnYWxpYS5jb20+Iik7CiAKICAg
ICBvYmplY3RDbGFzcy0+Y29uc3RydWN0ZWQgPSB3ZWJLaXRXZWJBdWRpb1NyY0NvbnN0cnVjdGVk
OwogICAgIG9iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYktpdFdlYkF1ZGlvU3JjRmluYWxpemU7
CkBAIC0yMDUsMTMgKzE4MSw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfYXVkaW9fc3JjX2lu
aXQoV2ViS2l0V2ViQXVkaW9TcmMqIHNyYykKICAgICBwcml2LT5wcm92aWRlciA9IDA7CiAgICAg
cHJpdi0+YnVzID0gMDsKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgZ19yZWNfbXV0
ZXhfaW5pdCgmcHJpdi0+bXV0ZXgpOwogICAgIHByaXYtPnRhc2sgPSBnc3RfdGFza19uZXcocmVp
bnRlcnByZXRfY2FzdDxHc3RUYXNrRnVuY3Rpb24+KHdlYktpdFdlYkF1ZGlvU3JjTG9vcCksIHNy
YywgMCk7Ci0jZWxzZQotICAgIGdfc3RhdGljX3JlY19tdXRleF9pbml0KCZwcml2LT5tdXRleCk7
Ci0gICAgcHJpdi0+dGFzayA9IGdzdF90YXNrX2NyZWF0ZShyZWludGVycHJldF9jYXN0PEdzdFRh
c2tGdW5jdGlvbj4od2ViS2l0V2ViQXVkaW9TcmNMb29wKSwgc3JjKTsKLSNlbmRpZgogCiAgICAg
Z3N0X3Rhc2tfc2V0X2xvY2socHJpdi0+dGFzay5nZXQoKSwgJnByaXYtPm11dGV4KTsKIH0KQEAg
LTI1MCwxNSArMjIxLDExIEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjQ29uc3RydWN0
ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbW9ub0NhcHMg
PSBhZG9wdEdSZWYoZ2V0R1N0cmVhbWVyTW9ub0F1ZGlvQ2Fwcyhwcml2LT5zYW1wbGVSYXRlKSk7
CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgICAgICBHc3RBdWRpb0luZm8gaW5mbzsK
ICAgICAgICAgZ3N0X2F1ZGlvX2luZm9fZnJvbV9jYXBzKCZpbmZvLCBtb25vQ2Fwcy5nZXQoKSk7
CiAgICAgICAgIEdTVF9BVURJT19JTkZPX1BPU0lUSU9OKCZpbmZvLCAwKSA9IHdlYktpdFdlYkF1
ZGlvR1N0cmVhbWVyQ2hhbm5lbFBvc2l0aW9uKGNoYW5uZWxJbmRleCk7CiAgICAgICAgIEdSZWZQ
dHI8R3N0Q2Fwcz4gY2FwcyA9IGFkb3B0R1JlZihnc3RfYXVkaW9faW5mb190b19jYXBzKCZpbmZv
KSk7CiAgICAgICAgIGdfb2JqZWN0X3NldChjYXBzZmlsdGVyLCAiY2FwcyIsIGNhcHMuZ2V0KCks
IE5VTEwpOwotI2Vsc2UKLSAgICAgICAgZ19vYmplY3Rfc2V0KGNhcHNmaWx0ZXIsICJjYXBzIiwg
bW9ub0NhcHMuZ2V0KCksIE5VTEwpOwotI2VuZGlmCiAKICAgICAgICAgLy8gQ29uZmlndXJlIHRo
ZSBxdWV1ZSBmb3IgbWluaW1hbCBsYXRlbmN5LgogICAgICAgICBnX29iamVjdF9zZXQocXVldWUs
ICJtYXgtc2l6ZS1idWZmZXJzIiwgc3RhdGljX2Nhc3Q8Z3VpbnQ+KDEpLCBOVUxMKTsKQEAgLTI4
NCwxMSArMjUxLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViQXVkaW9TcmNGaW5hbGl6ZShHT2Jq
ZWN0KiBvYmplY3QpCiAgICAgV2ViS2l0V2ViQXVkaW9TcmMqIHNyYyA9IFdFQktJVF9XRUJfQVVE
SU9fU1JDKG9iamVjdCk7CiAgICAgV2ViS2l0V2ViQXVkaW9Tb3VyY2VQcml2YXRlKiBwcml2ID0g
c3JjLT5wcml2OwogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBnX3JlY19tdXRleF9j
bGVhcigmcHJpdi0+bXV0ZXgpOwotI2Vsc2UKLSAgICBnX3N0YXRpY19yZWNfbXV0ZXhfZnJlZSgm
cHJpdi0+bXV0ZXgpOwotI2VuZGlmCiAKICAgICBnX3NsaXN0X2ZyZWVfZnVsbChwcml2LT5wYWRz
LCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5Pihnc3Rfb2JqZWN0X3VucmVmKSk7CiAK
QEAgLTM2MCwxNCArMzIzLDEwIEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjTG9vcChX
ZWJLaXRXZWJBdWRpb1NyYyogc3JjKQogICAgICAgICBHc3RCdWZmZXIqIGNoYW5uZWxCdWZmZXIg
PSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MoYnVmZmVyU2l6ZSk7CiAgICAgICAgIEFTU0VSVChj
aGFubmVsQnVmZmVyKTsKICAgICAgICAgY2hhbm5lbEJ1ZmZlckxpc3QgPSBnX3NsaXN0X3ByZXBl
bmQoY2hhbm5lbEJ1ZmZlckxpc3QsIGNoYW5uZWxCdWZmZXIpOwotI2lmZGVmIEdTVF9BUElfVkVS
U0lPTl8xCiAgICAgICAgIEdzdE1hcEluZm8gaW5mbzsKICAgICAgICAgZ3N0X2J1ZmZlcl9tYXAo
Y2hhbm5lbEJ1ZmZlciwgJmluZm8sIEdTVF9NQVBfUkVBRCk7CiAgICAgICAgIHByaXYtPmJ1cy0+
c2V0Q2hhbm5lbE1lbW9yeShpLCByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oaW5mby5kYXRhKSwg
cHJpdi0+ZnJhbWVzVG9QdWxsKTsKICAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcChjaGFubmVsQnVm
ZmVyLCAmaW5mbyk7Ci0jZWxzZQotICAgICAgICBwcml2LT5idXMtPnNldENoYW5uZWxNZW1vcnko
aSwgcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KEdTVF9CVUZGRVJfREFUQShjaGFubmVsQnVmZmVy
KSksIHByaXYtPmZyYW1lc1RvUHVsbCk7Ci0jZW5kaWYKICAgICB9CiAKICAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIGxvY2FsL2xpdmUgYXVkaW8gaW5wdXQuCkBAIC0zNzksMTQgKzMzOCw2
IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjTG9vcChXZWJLaXRXZWJBdWRpb1NyYyog
c3JjKQogICAgICAgICBHc3RQYWQqIHBhZCA9IHN0YXRpY19jYXN0PEdzdFBhZCo+KHBhZHNJdC0+
ZGF0YSk7CiAgICAgICAgIEdzdEJ1ZmZlciogY2hhbm5lbEJ1ZmZlciA9IHN0YXRpY19jYXN0PEdz
dEJ1ZmZlcio+KGJ1ZmZlcnNJdC0+ZGF0YSk7CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEK
LSAgICAgICAgR1JlZlB0cjxHc3RDYXBzPiBtb25vQ2FwcyA9IGFkb3B0R1JlZihnZXRHU3RyZWFt
ZXJNb25vQXVkaW9DYXBzKHByaXYtPnNhbXBsZVJhdGUpKTsKLSAgICAgICAgR3N0U3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKG1vbm9DYXBzLmdldCgpLCAwKTsK
LSAgICAgICAgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gY2hhbm5lbFBvc2l0aW9uID0gd2ViS2l0
V2ViQXVkaW9HU3RyZWFtZXJDaGFubmVsUG9zaXRpb24oaSk7Ci0gICAgICAgIGdzdF9hdWRpb19z
ZXRfY2hhbm5lbF9wb3NpdGlvbnMoc3RydWN0dXJlLCAmY2hhbm5lbFBvc2l0aW9uKTsKLSAgICAg
ICAgZ3N0X2J1ZmZlcl9zZXRfY2FwcyhjaGFubmVsQnVmZmVyLCBtb25vQ2Fwcy5nZXQoKSk7Ci0j
ZW5kaWYKLQogICAgICAgICBHc3RGbG93UmV0dXJuIHJldCA9IGdzdF9wYWRfY2hhaW4ocGFkLCBj
aGFubmVsQnVmZmVyKTsKICAgICAgICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykKICAgICAgICAg
ICAgIEdTVF9FTEVNRU5UX0VSUk9SKHNyYywgQ09SRSwgUEFELCAoIkludGVybmFsIFdlYkF1ZGlv
U3JjIGVycm9yIiksICgiRmFpbGVkIHRvIHB1c2ggYnVmZmVyIG9uICVzOiVzIiwgR1NUX0RFQlVH
X1BBRF9OQU1FKHBhZCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuY3BwCmluZGV4IDkwZDMwYTY5YTQ2ODBiYzQxYjg5N2RkYzEzMmYxNmRlOWU0OWYwYTEu
LjJmMGRlYmNjMDg3YzZmOWFmNDdkMTUzNzY2NmM5ODIyNDg2ODg1MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjUsNyArMjUsNyBAQAog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFN
RVIpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkK
KyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFD
SykKIAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCiAKQEAgLTU4LDQg
KzU4LDQgQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6c2V0RW5hYmxlZChib29s
IGVuYWJsZWQpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShW
SURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVk
KEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJF
QU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1By
aXZhdGVHU3RyZWFtZXIuaAppbmRleCBiMWU4YTQ4Yzc0MWUyZDEyNTU3ZGIxNDJhMDRhYTdmNzAx
ZjYzMDI1Li4zMjQyNjhiNjY3NzY1NjVlZjFkZjY2MzkzMDJiMWI4NjZmM2VkNDk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjYsNyArMjYsNyBA
QAogI2lmbmRlZiBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcl9oCiAjZGVmaW5lIEF1ZGlvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyX2gKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1F
UikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQor
I2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNL
KQogCiAjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJHUmVmUHRyR1N0
cmVhbWVyLmgiCkBAIC01OSw2ICs1OSw2IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5B
QkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8v
IEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQog
CiAjZW5kaWYgLy8gQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJH
U3RyZWFtZXIuY3BwCmluZGV4IDJhZGRjY2QzM2ZjNDI1NDE2YTY1OWQwY2YxYjVhZTU4ZWI5ODNh
ZTUuLmY3ZWY0NmRkODM5MGQ5NDUzNDFmZTM4MDYzMjkwM2U1YWZiNjk2ZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVh
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1JlZlB0ckdTdHJlYW1lci5jcHAKQEAgLTE5LDcgKzE5LDYgQEAKIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJW
ZXJzaW9uaW5nLmgiCiAKICNpZiBVU0UoR1NUUkVBTUVSKQogI2luY2x1ZGUgPGdzdC9nc3QuaD4K
QEAgLTI4LDE0ICsyNywxNCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGUgPD4gR1JlZlB0
cjxHc3RFbGVtZW50PiBhZG9wdEdSZWYoR3N0RWxlbWVudCogcHRyKQogewotICAgIEFTU0VSVCgh
cHRyIHx8ICFnc3RPYmplY3RJc0Zsb2F0aW5nKEdTVF9PQkpFQ1QocHRyKSkpOworICAgIEFTU0VS
VCghcHRyIHx8ICFnX29iamVjdF9pc19mbG9hdGluZyhHX09CSkVDVChwdHIpKSk7CiAgICAgcmV0
dXJuIEdSZWZQdHI8R3N0RWxlbWVudD4ocHRyLCBHUmVmUHRyQWRvcHQpOwogfQogCiB0ZW1wbGF0
ZSA8PiBHc3RFbGVtZW50KiByZWZHUHRyPEdzdEVsZW1lbnQ+KEdzdEVsZW1lbnQqIHB0cikKIHsK
ICAgICBpZiAocHRyKQotICAgICAgICB3ZWJraXRHc3RPYmplY3RSZWZTaW5rKEdTVF9PQkpFQ1Qo
cHRyKSk7CisgICAgICAgIGdzdF9vYmplY3RfcmVmX3NpbmsoR1NUX09CSkVDVChwdHIpKTsKIAog
ICAgIHJldHVybiBwdHI7CiB9CkBAIC00OCwxNCArNDcsMTQgQEAgdGVtcGxhdGUgPD4gdm9pZCBk
ZXJlZkdQdHI8R3N0RWxlbWVudD4oR3N0RWxlbWVudCogcHRyKQogCiB0ZW1wbGF0ZSA8PiBHUmVm
UHRyPEdzdFBhZD4gYWRvcHRHUmVmKEdzdFBhZCogcHRyKQogewotICAgIEFTU0VSVCghcHRyIHx8
ICFnc3RPYmplY3RJc0Zsb2F0aW5nKEdTVF9PQkpFQ1QocHRyKSkpOworICAgIEFTU0VSVCghcHRy
IHx8ICFnX29iamVjdF9pc19mbG9hdGluZyhHX09CSkVDVChwdHIpKSk7CiAgICAgcmV0dXJuIEdS
ZWZQdHI8R3N0UGFkPihwdHIsIEdSZWZQdHJBZG9wdCk7CiB9CiAKIHRlbXBsYXRlIDw+IEdzdFBh
ZCogcmVmR1B0cjxHc3RQYWQ+KEdzdFBhZCogcHRyKQogewogICAgIGlmIChwdHIpCi0gICAgICAg
IHdlYmtpdEdzdE9iamVjdFJlZlNpbmsoR1NUX09CSkVDVChwdHIpKTsKKyAgICAgICAgZ3N0X29i
amVjdF9yZWZfc2luayhHU1RfT0JKRUNUKHB0cikpOwogCiAgICAgcmV0dXJuIHB0cjsKIH0KQEAg
LTY4LDE0ICs2NywxNCBAQCB0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cjxHc3RQYWQ+KEdzdFBh
ZCogcHRyKQogCiB0ZW1wbGF0ZSA8PiBHUmVmUHRyPEdzdFBhZFRlbXBsYXRlPiBhZG9wdEdSZWYo
R3N0UGFkVGVtcGxhdGUqIHB0cikKIHsKLSAgICBBU1NFUlQoIXB0ciB8fCAhZ3N0T2JqZWN0SXNG
bG9hdGluZyhHU1RfT0JKRUNUKHB0cikpKTsKKyAgICBBU1NFUlQoIXB0ciB8fCAhZ19vYmplY3Rf
aXNfZmxvYXRpbmcoR19PQkpFQ1QocHRyKSkpOwogICAgIHJldHVybiBHUmVmUHRyPEdzdFBhZFRl
bXBsYXRlPihwdHIsIEdSZWZQdHJBZG9wdCk7CiB9CiAKIHRlbXBsYXRlIDw+IEdzdFBhZFRlbXBs
YXRlKiByZWZHUHRyPEdzdFBhZFRlbXBsYXRlPihHc3RQYWRUZW1wbGF0ZSogcHRyKQogewogICAg
IGlmIChwdHIpCi0gICAgICAgIHdlYmtpdEdzdE9iamVjdFJlZlNpbmsoR1NUX09CSkVDVChwdHIp
KTsKKyAgICAgICAgZ3N0X29iamVjdF9yZWZfc2luayhHU1RfT0JKRUNUKHB0cikpOwogCiAgICAg
cmV0dXJuIHB0cjsKIH0KQEAgLTEwNywxNCArMTA2LDE0IEBAIHRlbXBsYXRlIDw+IHZvaWQgZGVy
ZWZHUHRyPEdzdENhcHM+KEdzdENhcHMqIHB0cikKIAogdGVtcGxhdGUgPD4gR1JlZlB0cjxHc3RU
YXNrPiBhZG9wdEdSZWYoR3N0VGFzayogcHRyKQogewotICAgIEFTU0VSVCghZ3N0T2JqZWN0SXNG
bG9hdGluZyhHU1RfT0JKRUNUKHB0cikpKTsKKyAgICBBU1NFUlQoIWdfb2JqZWN0X2lzX2Zsb2F0
aW5nKEdfT0JKRUNUKHB0cikpKTsKICAgICByZXR1cm4gR1JlZlB0cjxHc3RUYXNrPihwdHIsIEdS
ZWZQdHJBZG9wdCk7CiB9CiAKIHRlbXBsYXRlIDw+IEdzdFRhc2sqIHJlZkdQdHI8R3N0VGFzaz4o
R3N0VGFzayogcHRyKQogewogICAgIGlmIChwdHIpCi0gICAgICAgIHdlYmtpdEdzdE9iamVjdFJl
ZlNpbmsoR1NUX09CSkVDVChwdHIpKTsKKyAgICAgICAgZ3N0X29iamVjdF9yZWZfc2luayhHU1Rf
T0JKRUNUKHB0cikpOwogCiAgICAgcmV0dXJuIHB0cjsKIH0KQEAgLTEyNywxNCArMTI2LDE0IEBA
IHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyPEdzdFRhc2s+KEdzdFRhc2sqIHB0cikKIAogdGVt
cGxhdGUgPD4gR1JlZlB0cjxHc3RCdXM+IGFkb3B0R1JlZihHc3RCdXMqIHB0cikKIHsKLSAgICBB
U1NFUlQoIWdzdE9iamVjdElzRmxvYXRpbmcoR1NUX09CSkVDVChwdHIpKSk7CisgICAgQVNTRVJU
KCFnX29iamVjdF9pc19mbG9hdGluZyhHX09CSkVDVChwdHIpKSk7CiAgICAgcmV0dXJuIEdSZWZQ
dHI8R3N0QnVzPihwdHIsIEdSZWZQdHJBZG9wdCk7CiB9CiAKIHRlbXBsYXRlIDw+IEdzdEJ1cyog
cmVmR1B0cjxHc3RCdXM+KEdzdEJ1cyogcHRyKQogewogICAgIGlmIChwdHIpCi0gICAgICAgIHdl
YmtpdEdzdE9iamVjdFJlZlNpbmsoR1NUX09CSkVDVChwdHIpKTsKKyAgICAgICAgZ3N0X29iamVj
dF9yZWZfc2luayhHU1RfT0JKRUNUKHB0cikpOwogCiAgICAgcmV0dXJuIHB0cjsKIH0KQEAgLTE0
NywxNCArMTQ2LDE0IEBAIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyPEdzdEJ1cz4oR3N0QnVz
KiBwdHIpCiAKIHRlbXBsYXRlIDw+IEdSZWZQdHI8R3N0RWxlbWVudEZhY3Rvcnk+IGFkb3B0R1Jl
ZihHc3RFbGVtZW50RmFjdG9yeSogcHRyKQogewotICAgIEFTU0VSVCghZ3N0T2JqZWN0SXNGbG9h
dGluZyhHU1RfT0JKRUNUKHB0cikpKTsKKyAgICBBU1NFUlQoIWdfb2JqZWN0X2lzX2Zsb2F0aW5n
KEdfT0JKRUNUKHB0cikpKTsKICAgICByZXR1cm4gR1JlZlB0cjxHc3RFbGVtZW50RmFjdG9yeT4o
cHRyLCBHUmVmUHRyQWRvcHQpOwogfQogCiB0ZW1wbGF0ZSA8PiBHc3RFbGVtZW50RmFjdG9yeSog
cmVmR1B0cjxHc3RFbGVtZW50RmFjdG9yeT4oR3N0RWxlbWVudEZhY3RvcnkqIHB0cikKIHsKICAg
ICBpZiAocHRyKQotICAgICAgICB3ZWJraXRHc3RPYmplY3RSZWZTaW5rKEdTVF9PQkpFQ1QocHRy
KSk7CisgICAgICAgIGdzdF9vYmplY3RfcmVmX3NpbmsoR1NUX09CSkVDVChwdHIpKTsKIAogICAg
IHJldHVybiBwdHI7CiB9CkBAIC0xODQsNyArMTgzLDYgQEAgdGVtcGxhdGU8PiB2b2lkIGRlcmVm
R1B0cjxHc3RCdWZmZXI+KEdzdEJ1ZmZlciogcHRyKQogICAgICAgICBnc3RfYnVmZmVyX3VucmVm
KHB0cik7CiB9CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogdGVtcGxhdGU8PiBHUmVmUHRy
PEdzdFNhbXBsZT4gYWRvcHRHUmVmKEdzdFNhbXBsZSogcHRyKQogewogICAgIHJldHVybiBHUmVm
UHRyPEdzdFNhbXBsZT4ocHRyLCBHUmVmUHRyQWRvcHQpOwpAQCAtMjIyLDcgKzIyMCw2IEBAIHRl
bXBsYXRlPD4gdm9pZCBkZXJlZkdQdHI8R3N0VGFnTGlzdD4oR3N0VGFnTGlzdCogcHRyKQogICAg
IGlmIChwdHIpCiAgICAgICAgIGdzdF90YWdfbGlzdF91bnJlZihwdHIpOwogfQotI2VuZGlmCiAK
IHRlbXBsYXRlPD4gR1JlZlB0cjxHc3RFdmVudD4gYWRvcHRHUmVmKEdzdEV2ZW50KiBwdHIpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1JlZlB0ckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuaAppbmRleCA1ZTA1NjU3ZTU3YzdmNDAyNWNmYTM1NWRm
OGJlN2E2NzY3NzNhNDFiLi4yY2UwYTFkODA4YWUyMjQ1NmVhYjMzOGY1NDA1NTI1NWQzYWMxOThi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1JlZlB0ckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmgKQEAgLTMxLDEwICszMSw4IEBAIHR5cGVkZWYg
c3RydWN0IF9Hc3RUYXNrIEdzdFRhc2s7CiB0eXBlZGVmIHN0cnVjdCBfR3N0QnVzIEdzdEJ1czsK
IHR5cGVkZWYgc3RydWN0IF9Hc3RFbGVtZW50RmFjdG9yeSBHc3RFbGVtZW50RmFjdG9yeTsKIHR5
cGVkZWYgc3RydWN0IF9Hc3RCdWZmZXIgR3N0QnVmZmVyOwotI2lmZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCiB0eXBlZGVmIHN0cnVjdCBfR3N0U2FtcGxlIEdzdFNhbXBsZTsKIHR5cGVkZWYgc3RydWN0
IF9Hc3RUYWdMaXN0IEdzdFRhZ0xpc3Q7Ci0jZW5kaWYKIHR5cGVkZWYgc3RydWN0IF9Hc3RFdmVu
dCBHc3RFdmVudDsKIHR5cGVkZWYgc3RydWN0IF9Hc3RUb2MgR3N0VG9jOwogCkBAIC03MiwxNyAr
NzAsMTMgQEAgdGVtcGxhdGU8PiBHUmVmUHRyPEdzdEJ1ZmZlcj4gYWRvcHRHUmVmKEdzdEJ1ZmZl
ciogcHRyKTsKIHRlbXBsYXRlPD4gR3N0QnVmZmVyKiByZWZHUHRyPEdzdEJ1ZmZlcj4oR3N0QnVm
ZmVyKiBwdHIpOwogdGVtcGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxHc3RCdWZmZXI+KEdzdEJ1ZmZl
ciogcHRyKTsKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0vKiBHc3RTYW1wbGUgd2FzIGFk
ZGVkIGluIEdTdHJlYW1lciAxLjAgKi8KIHRlbXBsYXRlPD4gR1JlZlB0cjxHc3RTYW1wbGU+IGFk
b3B0R1JlZihHc3RTYW1wbGUqIHB0cik7CiB0ZW1wbGF0ZTw+IEdzdFNhbXBsZSogcmVmR1B0cjxH
c3RTYW1wbGU+KEdzdFNhbXBsZSogcHRyKTsKIHRlbXBsYXRlPD4gdm9pZCBkZXJlZkdQdHI8R3N0
U2FtcGxlPihHc3RTYW1wbGUqIHB0cik7CiAKLS8qIEdzdFRhZ0xpc3QgaXNuJ3QgcmVmY291bnRl
ZCBpbiBHU3RyZWFtZXIgMC4xMCAqLwogdGVtcGxhdGU8PiBHUmVmUHRyPEdzdFRhZ0xpc3Q+IGFk
b3B0R1JlZihHc3RUYWdMaXN0KiBwdHIpOwogdGVtcGxhdGU8PiBHc3RUYWdMaXN0KiByZWZHUHRy
PEdzdFRhZ0xpc3Q+KEdzdFRhZ0xpc3QqIHB0cik7CiB0ZW1wbGF0ZTw+IHZvaWQgZGVyZWZHUHRy
PEdzdFRhZ0xpc3Q+KEdzdFRhZ0xpc3QqIHB0cik7Ci0jZW5kaWYKIAogdGVtcGxhdGU8PiBHUmVm
UHRyPEdzdEV2ZW50PiBhZG9wdEdSZWYoR3N0RXZlbnQqIHB0cik7CiB0ZW1wbGF0ZTw+IEdzdEV2
ZW50KiByZWZHUHRyPEdzdEV2ZW50PihHc3RFdmVudCogcHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
clV0aWxpdGllcy5jcHAKaW5kZXggZmMzODYyZGE4MWI4NDM0ZjBlMTU2YmM2OThkNzM0NzNmN2Yz
MmU5Ny4uYjc1OGI0YmU1YjZiMDhhYzZkN2FkYzVlOWQ5M2YzNTZmNmJhYmQxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAKQEAgLTIxLDkgKzIxLDEwMCBAQAogI2luY2x1ZGUg
IkdTdHJlYW1lclV0aWxpdGllcy5oIgogCiAjaWYgVVNFKEdTVFJFQU1FUikKKworI2luY2x1ZGUg
PGdzdC9hdWRpby9hdWRpby5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HT3duUHRyLmg+CiAKK2NvbnN0IGNoYXIqIHdlYmtpdEdzdE1hcEluZm9RdWFya1N0
cmluZyA9ICJ3ZWJraXQtZ3N0LW1hcC1pbmZvIjsKKworR3N0UGFkKiB3ZWJraXRHc3RHaG9zdFBh
ZEZyb21TdGF0aWNUZW1wbGF0ZShHc3RTdGF0aWNQYWRUZW1wbGF0ZSogc3RhdGljUGFkVGVtcGxh
dGUsIGNvbnN0IGdjaGFyKiBuYW1lLCBHc3RQYWQqIHRhcmdldCkKK3sKKyAgICBHc3RQYWQqIHBh
ZDsKKyAgICBHc3RQYWRUZW1wbGF0ZSogcGFkVGVtcGxhdGUgPSBnc3Rfc3RhdGljX3BhZF90ZW1w
bGF0ZV9nZXQoc3RhdGljUGFkVGVtcGxhdGUpOworCisgICAgaWYgKHRhcmdldCkKKyAgICAgICAg
cGFkID0gZ3N0X2dob3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZShuYW1lLCB0YXJnZXQsIHBhZFRl
bXBsYXRlKTsKKyAgICBlbHNlCisgICAgICAgIHBhZCA9IGdzdF9naG9zdF9wYWRfbmV3X25vX3Rh
cmdldF9mcm9tX3RlbXBsYXRlKG5hbWUsIHBhZFRlbXBsYXRlKTsKKworICAgIGdzdF9vYmplY3Rf
dW5yZWYocGFkVGVtcGxhdGUpOworCisgICAgcmV0dXJuIHBhZDsKK30KKworI2lmIEVOQUJMRShW
SURFTykKK2Jvb2wgZ2V0VmlkZW9TaXplQW5kRm9ybWF0RnJvbUNhcHMoR3N0Q2FwcyogY2Fwcywg
V2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgR3N0VmlkZW9Gb3JtYXQmIGZvcm1hdCwgaW50JiBwaXhl
bEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciwg
aW50JiBzdHJpZGUpCit7CisgICAgR3N0VmlkZW9JbmZvIGluZm87CisKKyAgICBpZiAoIWdzdF9j
YXBzX2lzX2ZpeGVkKGNhcHMpIHx8ICFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNh
cHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3JtYXQgPSBHU1RfVklERU9fSU5G
T19GT1JNQVQoJmluZm8pOworICAgIHNpemUuc2V0V2lkdGgoR1NUX1ZJREVPX0lORk9fV0lEVEgo
JmluZm8pKTsKKyAgICBzaXplLnNldEhlaWdodChHU1RfVklERU9fSU5GT19IRUlHSFQoJmluZm8p
KTsKKyAgICBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yID0gR1NUX1ZJREVPX0lORk9fUEFSX04o
JmluZm8pOworICAgIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciA9IEdTVF9WSURFT19JTkZP
X1BBUl9EKCZpbmZvKTsKKyAgICBzdHJpZGUgPSBHU1RfVklERU9fSU5GT19QTEFORV9TVFJJREUo
JmluZm8sIDApOworCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKworR3N0QnVmZmVyKiBj
cmVhdGVHc3RCdWZmZXIoR3N0QnVmZmVyKiBidWZmZXIpCit7CisgICAgZ3NpemUgYnVmZmVyU2l6
ZSA9IGdzdF9idWZmZXJfZ2V0X3NpemUoYnVmZmVyKTsKKyAgICBHc3RCdWZmZXIqIG5ld0J1ZmZl
ciA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyhidWZmZXJTaXplKTsKKworICAgIGlmICghbmV3
QnVmZmVyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGdzdF9idWZmZXJfY29weV9pbnRvKG5l
d0J1ZmZlciwgYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RCdWZmZXJDb3B5RmxhZ3M+KEdTVF9CVUZG
RVJfQ09QWV9NRVRBREFUQSksIDAsIGJ1ZmZlclNpemUpOworICAgIHJldHVybiBuZXdCdWZmZXI7
Cit9CisKK0dzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVyRm9yRGF0YShjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKQoreworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXdf
YW5kX2FsbG9jKGxlbmd0aCk7CisKKyAgICBnc3RfYnVmZmVyX2ZpbGwoYnVmZmVyLCAwLCBkYXRh
LCBsZW5ndGgpOworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworY2hhciogZ2V0R3N0QnVmZmVy
RGF0YVBvaW50ZXIoR3N0QnVmZmVyKiBidWZmZXIpCit7CisgICAgR3N0TWluaU9iamVjdCogbWlu
aU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+KGJ1ZmZlcik7CisgICAg
R3N0TWFwSW5mbyogbWFwSW5mbyA9IHN0YXRpY19jYXN0PEdzdE1hcEluZm8qPihnc3RfbWluaV9v
YmplY3RfZ2V0X3FkYXRhKG1pbmlPYmplY3QsIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKHdl
YmtpdEdzdE1hcEluZm9RdWFya1N0cmluZykpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4obWFwSW5mby0+ZGF0YSk7Cit9CisKK3ZvaWQgbWFwR3N0QnVmZmVyKEdzdEJ1ZmZl
ciogYnVmZmVyKQoreworICAgIEdzdE1hcEluZm8qIG1hcEluZm8gPSBnX3NsaWNlX25ldyhHc3RN
YXBJbmZvKTsKKyAgICBpZiAoIWdzdF9idWZmZXJfbWFwKGJ1ZmZlciwgbWFwSW5mbywgR1NUX01B
UF9XUklURSkpIHsKKyAgICAgICAgZ19zbGljZV9mcmVlKEdzdE1hcEluZm8sIG1hcEluZm8pOwor
ICAgICAgICBnc3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBHc3RNaW5pT2JqZWN0KiBtaW5pT2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RN
aW5pT2JqZWN0Kj4oYnVmZmVyKTsKKyAgICBnc3RfbWluaV9vYmplY3Rfc2V0X3FkYXRhKG1pbmlP
YmplY3QsIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKHdlYmtpdEdzdE1hcEluZm9RdWFya1N0
cmluZyksIG1hcEluZm8sIDApOworfQorCit2b2lkIHVubWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciog
YnVmZmVyKQoreworICAgIEdzdE1pbmlPYmplY3QqIG1pbmlPYmplY3QgPSByZWludGVycHJldF9j
YXN0PEdzdE1pbmlPYmplY3QqPihidWZmZXIpOworICAgIEdzdE1hcEluZm8qIG1hcEluZm8gPSBz
dGF0aWNfY2FzdDxHc3RNYXBJbmZvKj4oZ3N0X21pbmlfb2JqZWN0X3N0ZWFsX3FkYXRhKG1pbmlP
YmplY3QsIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKHdlYmtpdEdzdE1hcEluZm9RdWFya1N0
cmluZykpKTsKKworICAgIGlmICghbWFwSW5mbykKKyAgICAgICAgcmV0dXJuOworCisgICAgZ3N0
X2J1ZmZlcl91bm1hcChidWZmZXIsIG1hcEluZm8pOworICAgIGdfc2xpY2VfZnJlZShHc3RNYXBJ
bmZvLCBtYXBJbmZvKTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIGluaXRpYWxp
emVHU3RyZWFtZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oCmluZGV4IDNlZGRjYjcx
NTkxM2M4OGY4OGM0NWI1ZmZhMWE1M2NiZjY1ZDE1OTcuLmM4MTBjOWM3OWQ5ZjgxM2Q4MjlmOTU2
ZGVlOWViMWFhYzE5Mjk1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmgKQEAgLTE2
LDggKzE2LDEyIEBACiAgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAgKi8KIAorI2luY2x1ZGUg
IkludFNpemUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+
CisjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CisKICNkZWZpbmUgTE9HX01FRElBX01FU1NB
R0UoLi4uKSBkbyB7IFwKICAgICBHU1RfREVCVUcoX19WQV9BUkdTX18pOyBcCiAgICAgTE9HX1ZF
UkJPU0UoTWVkaWEsIF9fVkFfQVJHU19fKTsgfSB3aGlsZSAoMCkKQEAgLTM0LDYgKzM4LDM3IEBA
CiAgICAgR1NUX1dBUk5JTkcoX19WQV9BUkdTX18pOyBcCiAgICAgTE9HX1ZFUkJPU0UoTWVkaWEs
IF9fVkFfQVJHU19fKTsgfSB3aGlsZSAoMCkKIAoraW5saW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tW
ZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8pCit7CisgICAgZ3Vp
bnQgY3VycmVudE1ham9yLCBjdXJyZW50TWlub3IsIGN1cnJlbnRNaWNybywgY3VycmVudE5hbm87
CisgICAgZ3N0X3ZlcnNpb24oJmN1cnJlbnRNYWpvciwgJmN1cnJlbnRNaW5vciwgJmN1cnJlbnRN
aWNybywgJmN1cnJlbnROYW5vKTsKKworICAgIGlmIChjdXJyZW50TWFqb3IgPCBtYWpvcikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjdXJyZW50TWFqb3IgPiBtYWpvcikKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoY3VycmVudE1pbm9yIDwgbWlub3IpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoY3VycmVudE1pbm9yID4gbWlub3IpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgaWYgKGN1cnJlbnRNaWNybyA8IG1pY3JvKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworR3N0UGFkKiB3ZWJraXRHc3RHaG9z
dFBhZEZyb21TdGF0aWNUZW1wbGF0ZShHc3RTdGF0aWNQYWRUZW1wbGF0ZSosIGNvbnN0IGdjaGFy
KiBuYW1lLCBHc3RQYWQqIHRhcmdldCk7CisjaWYgRU5BQkxFKFZJREVPKQorYm9vbCBnZXRWaWRl
b1NpemVBbmRGb3JtYXRGcm9tQ2FwcyhHc3RDYXBzKiwgV2ViQ29yZTo6SW50U2l6ZSYsIEdzdFZp
ZGVvRm9ybWF0JiwgaW50JiBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBpbnQmIHBpeGVsQXNw
ZWN0UmF0aW9EZW5vbWluYXRvciwgaW50JiBzdHJpZGUpOworI2VuZGlmCitHc3RCdWZmZXIqIGNy
ZWF0ZUdzdEJ1ZmZlcihHc3RCdWZmZXIqKTsKK0dzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVyRm9y
RGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKK2NoYXIqIGdldEdzdEJ1ZmZlckRh
dGFQb2ludGVyKEdzdEJ1ZmZlciopOwordm9pZCBtYXBHc3RCdWZmZXIoR3N0QnVmZmVyKik7Cit2
b2lkIHVubWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciopOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBi
b29sIGluaXRpYWxpemVHU3RyZWFtZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9u
aW5nLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVlOTZiMzQyYmJkN2JkNzI0
MGRhYzJmMzE0MTU5ODUzYWFhOTM0NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyVmVyc2lvbmluZy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNTQgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEsIFMuTC4KLSAqIENvcHlyaWdodCAoQykg
MjAxMyBDb2xsYWJvcmEgTHRkLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNp
bmNsdWRlICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCi0KLSNpZiBVU0UoR1NUUkVBTUVSKQotI2lu
Y2x1ZGUgIkludFNpemUuaCIKLQotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0jaW5jbHVkZSA8
Z3N0L2F1ZGlvL2F1ZGlvLmg+Ci0jZWxzZQotI2luY2x1ZGUgPGdzdC9hdWRpby9tdWx0aWNoYW5u
ZWwuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNlbmRpZgotCi0jaWZkZWYgR1NUX0FQSV9WRVJT
SU9OXzEKLWNvbnN0IGNoYXIqIHdlYmtpdEdzdE1hcEluZm9RdWFya1N0cmluZyA9ICJ3ZWJraXQt
Z3N0LW1hcC1pbmZvIjsKLSNlbmRpZgotCi12b2lkIHdlYmtpdEdzdE9iamVjdFJlZlNpbmsoR3N0
T2JqZWN0KiBnc3RPYmplY3QpCi17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBnc3Rf
b2JqZWN0X3JlZl9zaW5rKGdzdE9iamVjdCk7Ci0jZWxzZQotICAgIGdzdF9vYmplY3RfcmVmKGdz
dE9iamVjdCk7Ci0gICAgZ3N0X29iamVjdF9zaW5rKGdzdE9iamVjdCk7Ci0jZW5kaWYKLX0KLQot
R3N0UGFkKiB3ZWJraXRHc3RHaG9zdFBhZEZyb21TdGF0aWNUZW1wbGF0ZShHc3RTdGF0aWNQYWRU
ZW1wbGF0ZSogc3RhdGljUGFkVGVtcGxhdGUsIGNvbnN0IGdjaGFyKiBuYW1lLCBHc3RQYWQqIHRh
cmdldCkKLXsKLSAgICBHc3RQYWQqIHBhZDsKLSAgICBHc3RQYWRUZW1wbGF0ZSogcGFkVGVtcGxh
dGUgPSBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQoc3RhdGljUGFkVGVtcGxhdGUpOwotCi0g
ICAgaWYgKHRhcmdldCkKLSAgICAgICAgcGFkID0gZ3N0X2dob3N0X3BhZF9uZXdfZnJvbV90ZW1w
bGF0ZShuYW1lLCB0YXJnZXQsIHBhZFRlbXBsYXRlKTsKLSAgICBlbHNlCi0gICAgICAgIHBhZCA9
IGdzdF9naG9zdF9wYWRfbmV3X25vX3RhcmdldF9mcm9tX3RlbXBsYXRlKG5hbWUsIHBhZFRlbXBs
YXRlKTsKLQotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgZ3N0X29iamVjdF91bnJlZihw
YWRUZW1wbGF0ZSk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBwYWQ7Ci19Ci0KLUdSZWZQdHI8R3N0
Q2Fwcz4gd2Via2l0R3N0R2V0UGFkQ2FwcyhHc3RQYWQqIHBhZCkKLXsKLSAgICBpZiAoIXBhZCkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotICAgIHJldHVy
biBhZG9wdEdSZWYoZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzKHBhZCkpOyAvLyBnc3RfcGFkX2dl
dF9jdXJyZW50X2NhcHMgcmV0dXJuIGEgbmV3IHJlZmVyZW5jZS4KLSNlbHNlCi0gICAgcmV0dXJu
IEdTVF9QQURfQ0FQUyhwYWQpOwotI2VuZGlmCi19Ci0KLUdSZWZQdHI8R3N0QnVzPiB3ZWJraXRH
c3RQaXBlbGluZUdldEJ1cyhHc3RQaXBlbGluZSogcGlwZWxpbmUpCi17Ci0jaWZkZWYgR1NUX0FQ
SV9WRVJTSU9OXzEKLSAgICByZXR1cm4gYWRvcHRHUmVmKGdzdF9waXBlbGluZV9nZXRfYnVzKHBp
cGVsaW5lKSk7Ci0jZWxzZQotICAgIC8vIGdzdF9waXBlbGluZV9nZXRfYnVzIHJldHVybnMgYSBm
bG9hdGluZyByZWZlcmVuY2UgaW4KLSAgICAvLyBnc3RyZWFtZXIgMC4xMCBzbyB3ZSBzaG91bGQg
bm90IGFkb3B0LgotICAgIHJldHVybiBnc3RfcGlwZWxpbmVfZ2V0X2J1cyhwaXBlbGluZSk7Ci0j
ZW5kaWYKLX0KLQotI2lmIEVOQUJMRShWSURFTykKLWJvb2wgZ2V0VmlkZW9TaXplQW5kRm9ybWF0
RnJvbUNhcHMoR3N0Q2FwcyogY2FwcywgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgR3N0VmlkZW9G
b3JtYXQmIGZvcm1hdCwgaW50JiBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBpbnQmIHBpeGVs
QXNwZWN0UmF0aW9EZW5vbWluYXRvciwgaW50JiBzdHJpZGUpCi17Ci0jaWZkZWYgR1NUX0FQSV9W
RVJTSU9OXzEKLSAgICBHc3RWaWRlb0luZm8gaW5mbzsKLQotICAgIGlmICghZ3N0X2NhcHNfaXNf
Zml4ZWQoY2FwcykgfHwgIWdzdF92aWRlb19pbmZvX2Zyb21fY2FwcygmaW5mbywgY2FwcykpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvcm1hdCA9IEdTVF9WSURFT19JTkZPX0ZPUk1B
VCgmaW5mbyk7Ci0gICAgc2l6ZS5zZXRXaWR0aChHU1RfVklERU9fSU5GT19XSURUSCgmaW5mbykp
OwotICAgIHNpemUuc2V0SGVpZ2h0KEdTVF9WSURFT19JTkZPX0hFSUdIVCgmaW5mbykpOwotICAg
IHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IgPSBHU1RfVklERU9fSU5GT19QQVJfTigmaW5mbyk7
Ci0gICAgcGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yID0gR1NUX1ZJREVPX0lORk9fUEFSX0Qo
JmluZm8pOwotICAgIHN0cmlkZSA9IEdTVF9WSURFT19JTkZPX1BMQU5FX1NUUklERSgmaW5mbywg
MCk7Ci0jZWxzZQotICAgIGdpbnQgd2lkdGgsIGhlaWdodDsKLSAgICBpZiAoIUdTVF9JU19DQVBT
KGNhcHMpIHx8ICFnc3RfY2Fwc19pc19maXhlZChjYXBzKQotICAgICAgICB8fCAhZ3N0X3ZpZGVv
X2Zvcm1hdF9wYXJzZV9jYXBzKGNhcHMsICZmb3JtYXQsICZ3aWR0aCwgJmhlaWdodCkKLSAgICAg
ICAgfHwgIWdzdF92aWRlb19wYXJzZV9jYXBzX3BpeGVsX2FzcGVjdF9yYXRpbyhjYXBzLCAmcGl4
ZWxBc3BlY3RSYXRpb051bWVyYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmcGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHNpemUuc2V0V2lkdGgod2lkdGgpOwotICAgIHNpemUuc2V0
SGVpZ2h0KGhlaWdodCk7Ci0gICAgc3RyaWRlID0gc2l6ZS53aWR0aCgpICogNDsKLSNlbmRpZgot
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYKLQotR3N0QnVmZmVyKiBjcmVhdGVHc3RCdWZm
ZXIoR3N0QnVmZmVyKiBidWZmZXIpCi17Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAg
R3N0QnVmZmVyKiBuZXdCdWZmZXIgPSBnc3RfYnVmZmVyX3RyeV9uZXdfYW5kX2FsbG9jKEdTVF9C
VUZGRVJfU0laRShidWZmZXIpKTsKLSNlbHNlCi0gICAgZ3NpemUgYnVmZmVyU2l6ZSA9IGdzdF9i
dWZmZXJfZ2V0X3NpemUoYnVmZmVyKTsKLSAgICBHc3RCdWZmZXIqIG5ld0J1ZmZlciA9IGdzdF9i
dWZmZXJfbmV3X2FuZF9hbGxvYyhidWZmZXJTaXplKTsKLSNlbmRpZgotCi0gICAgaWYgKCFuZXdC
dWZmZXIpCi0gICAgICAgIHJldHVybiAwOwotCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0g
ICAgZ3N0X2J1ZmZlcl9jb3B5X21ldGFkYXRhKG5ld0J1ZmZlciwgYnVmZmVyLCBzdGF0aWNfY2Fz
dDxHc3RCdWZmZXJDb3B5RmxhZ3M+KEdTVF9CVUZGRVJfQ09QWV9BTEwpKTsKLSNlbHNlCi0gICAg
Z3N0X2J1ZmZlcl9jb3B5X2ludG8obmV3QnVmZmVyLCBidWZmZXIsIHN0YXRpY19jYXN0PEdzdEJ1
ZmZlckNvcHlGbGFncz4oR1NUX0JVRkZFUl9DT1BZX01FVEFEQVRBKSwgMCwgYnVmZmVyU2l6ZSk7
Ci0jZW5kaWYKLSAgICByZXR1cm4gbmV3QnVmZmVyOwotfQotCi1Hc3RCdWZmZXIqIGNyZWF0ZUdz
dEJ1ZmZlckZvckRhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICBHc3RC
dWZmZXIqIGJ1ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyhsZW5ndGgpOwotCi0jaWZk
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBnc3RfYnVmZmVyX2ZpbGwoYnVmZmVyLCAwLCBkYXRh
LCBsZW5ndGgpOwotI2Vsc2UKLSAgICBtZW1jcHkoR1NUX0JVRkZFUl9EQVRBKGJ1ZmZlciksIGRh
dGEsIGxlbmd0aCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBidWZmZXI7Ci19Ci0KLWludCBnZXRH
c3RCdWZmZXJTaXplKEdzdEJ1ZmZlciogYnVmZmVyKQotewotI2lmZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCi0gICAgcmV0dXJuIGdzdF9idWZmZXJfZ2V0X3NpemUoYnVmZmVyKTsKLSNlbHNlCi0gICAg
cmV0dXJuIEdTVF9CVUZGRVJfU0laRShidWZmZXIpOwotI2VuZGlmCi19Ci0KLXZvaWQgc2V0R3N0
QnVmZmVyU2l6ZShHc3RCdWZmZXIqIGJ1ZmZlciwgaW50IG5ld1NpemUpCi17Ci0jaWZkZWYgR1NU
X0FQSV9WRVJTSU9OXzEKLSAgICBnc3RfYnVmZmVyX3NldF9zaXplKGJ1ZmZlciwgc3RhdGljX2Nh
c3Q8Z3NzaXplPihuZXdTaXplKSk7Ci0jZWxzZQotICAgIEdTVF9CVUZGRVJfU0laRShidWZmZXIp
ID0gc3RhdGljX2Nhc3Q8Z3NpemU+KG5ld1NpemUpOwotI2VuZGlmCi19Ci0KLWNoYXIqIGdldEdz
dEJ1ZmZlckRhdGFQb2ludGVyKEdzdEJ1ZmZlciogYnVmZmVyKQotewotI2lmZGVmIEdTVF9BUElf
VkVSU0lPTl8xCi0gICAgR3N0TWluaU9iamVjdCogbWluaU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8R3N0TWluaU9iamVjdCo+KGJ1ZmZlcik7Ci0gICAgR3N0TWFwSW5mbyogbWFwSW5mbyA9IHN0
YXRpY19jYXN0PEdzdE1hcEluZm8qPihnc3RfbWluaV9vYmplY3RfZ2V0X3FkYXRhKG1pbmlPYmpl
Y3QsIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKHdlYmtpdEdzdE1hcEluZm9RdWFya1N0cmlu
ZykpKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWFwSW5mby0+ZGF0YSk7
Ci0jZWxzZQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihHU1RfQlVGRkVSX0RB
VEEoYnVmZmVyKSk7Ci0jZW5kaWYKLX0KLQotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi12b2lk
IG1hcEdzdEJ1ZmZlcihHc3RCdWZmZXIqIGJ1ZmZlcikKLXsKLSAgICBHc3RNYXBJbmZvKiBtYXBJ
bmZvID0gZ19zbGljZV9uZXcoR3N0TWFwSW5mbyk7Ci0gICAgaWYgKCFnc3RfYnVmZmVyX21hcChi
dWZmZXIsIG1hcEluZm8sIEdTVF9NQVBfV1JJVEUpKSB7Ci0gICAgICAgIGdfc2xpY2VfZnJlZShH
c3RNYXBJbmZvLCBtYXBJbmZvKTsKLSAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR3N0TWluaU9iamVjdCogbWluaU9iamVjdCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+KGJ1ZmZlcik7Ci0gICAgZ3N0X21pbmlf
b2JqZWN0X3NldF9xZGF0YShtaW5pT2JqZWN0LCBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZyh3
ZWJraXRHc3RNYXBJbmZvUXVhcmtTdHJpbmcpLCBtYXBJbmZvLCAwKTsKLX0KLQotdm9pZCB1bm1h
cEdzdEJ1ZmZlcihHc3RCdWZmZXIqIGJ1ZmZlcikKLXsKLSAgICBHc3RNaW5pT2JqZWN0KiBtaW5p
T2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RNaW5pT2JqZWN0Kj4oYnVmZmVyKTsKLSAgICBH
c3RNYXBJbmZvKiBtYXBJbmZvID0gc3RhdGljX2Nhc3Q8R3N0TWFwSW5mbyo+KGdzdF9taW5pX29i
amVjdF9zdGVhbF9xZGF0YShtaW5pT2JqZWN0LCBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZyh3
ZWJraXRHc3RNYXBJbmZvUXVhcmtTdHJpbmcpKSk7Ci0KLSAgICBpZiAoIW1hcEluZm8pCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGdzdF9idWZmZXJfdW5tYXAoYnVmZmVyLCBtYXBJbmZvKTsKLSAg
ICBnX3NsaWNlX2ZyZWUoR3N0TWFwSW5mbywgbWFwSW5mbyk7Ci19Ci0jZW5kaWYKLQotdm9pZCBz
ZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YShHc3RFbGVtZW50Q2xhc3MqIGVsZW1lbnRDbGFzcywg
Y29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogbG9uZ05hbWUsIGNvbnN0IGNoYXIqIGRlc2Ny
aXB0aW9uLCBjb25zdCBjaGFyKiBhdXRob3IpCi17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEK
LSAgICBnc3RfZWxlbWVudF9jbGFzc19zZXRfbWV0YWRhdGEoZWxlbWVudENsYXNzLCBuYW1lLCBs
b25nTmFtZSwgZGVzY3JpcHRpb24sIGF1dGhvcik7Ci0jZWxzZQotICAgIGdzdF9lbGVtZW50X2Ns
YXNzX3NldF9kZXRhaWxzX3NpbXBsZShlbGVtZW50Q2xhc3MsIG5hbWUsIGxvbmdOYW1lLCBkZXNj
cmlwdGlvbiwgYXV0aG9yKTsKLSNlbmRpZgotfQotCi1ib29sIGdzdE9iamVjdElzRmxvYXRpbmco
R3N0T2JqZWN0KiBnc3RPYmplY3QpCi17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBy
ZXR1cm4gZ19vYmplY3RfaXNfZmxvYXRpbmcoR19PQkpFQ1QoZ3N0T2JqZWN0KSk7Ci0jZWxzZQot
ICAgIHJldHVybiBHU1RfT0JKRUNUX0lTX0ZMT0FUSU5HKGdzdE9iamVjdCk7Ci0jZW5kaWYKLX0K
LQotdm9pZCBub3RpZnlHc3RUYWdzT25QYWQoR3N0RWxlbWVudCogZWxlbWVudCwgR3N0UGFkKiBw
YWQsIEdzdFRhZ0xpc3QqIHRhZ3MpCi17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBV
TlVTRURfUEFSQU0oZWxlbWVudCk7Ci0gICAgZ3N0X3BhZF9wdXNoX2V2ZW50KEdTVF9QQURfQ0FT
VChwYWQpLCBnc3RfZXZlbnRfbmV3X3RhZyh0YWdzKSk7Ci0jZWxzZQotICAgIGdzdF9lbGVtZW50
X2ZvdW5kX3RhZ3NfZm9yX3BhZChlbGVtZW50LCBwYWQsIHRhZ3MpOwotI2VuZGlmCi19Ci0KLSNp
ZiBFTkFCTEUoV0VCX0FVRElPKQotR3N0Q2FwcyogZ2V0R3N0QXVkaW9DYXBzKGludCBjaGFubmVs
cywgZmxvYXQgc2FtcGxlUmF0ZSkKLXsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotICAgIHJl
dHVybiBnc3RfY2Fwc19uZXdfc2ltcGxlKCJhdWRpby94LXJhdyIsICJyYXRlIiwgR19UWVBFX0lO
VCwgc3RhdGljX2Nhc3Q8aW50PihzYW1wbGVSYXRlKSwKLSAgICAgICAgImNoYW5uZWxzIiwgR19U
WVBFX0lOVCwgY2hhbm5lbHMsCi0gICAgICAgICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBnc3Rf
YXVkaW9fZm9ybWF0X3RvX3N0cmluZyhHU1RfQVVESU9fRk9STUFUX0YzMiksCi0gICAgICAgICJs
YXlvdXQiLCBHX1RZUEVfU1RSSU5HLCAiaW50ZXJsZWF2ZWQiLCBOVUxMKTsKLSNlbHNlCi0gICAg
cmV0dXJuIGdzdF9jYXBzX25ld19zaW1wbGUoImF1ZGlvL3gtcmF3LWZsb2F0IiwgInJhdGUiLCBH
X1RZUEVfSU5ULCBzdGF0aWNfY2FzdDxpbnQ+KHNhbXBsZVJhdGUpLAotICAgICAgICAiY2hhbm5l
bHMiLCBHX1RZUEVfSU5ULCBjaGFubmVscywKLSAgICAgICAgImVuZGlhbm5lc3MiLCBHX1RZUEVf
SU5ULCBHX0JZVEVfT1JERVIsCi0gICAgICAgICJ3aWR0aCIsIEdfVFlQRV9JTlQsIDMyLCBOVUxM
KTsKLSNlbmRpZgotfQotI2VuZGlmCi0KLSNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
clZlcnNpb25pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJWZXJzaW9uaW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0
MDU1YmI3NDFmZDkwN2FkYzI1OWM1YTc4NDMxMzRkNmM1N2VlZmQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuaAorKysgL2Rldi9udWxsCkBAIC0x
LDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhLCBTLkwuCi0gKgot
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
ICovCi0KLSNpZm5kZWYgR1N0cmVhbWVyVmVyc2lvbmluZ19oCi0jZGVmaW5lIEdTdHJlYW1lclZl
cnNpb25pbmdfaAotI2lmIFVTRShHU1RSRUFNRVIpCi0KLSNpbmNsdWRlICJHUmVmUHRyR1N0cmVh
bWVyLmgiCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBJbnRTaXplOwotfTsKLQotaW5saW5lIGJv
b2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQg
bWljcm8pCi17Ci0gICAgZ3VpbnQgY3VycmVudE1ham9yLCBjdXJyZW50TWlub3IsIGN1cnJlbnRN
aWNybywgY3VycmVudE5hbm87Ci0gICAgZ3N0X3ZlcnNpb24oJmN1cnJlbnRNYWpvciwgJmN1cnJl
bnRNaW5vciwgJmN1cnJlbnRNaWNybywgJmN1cnJlbnROYW5vKTsKLQotICAgIGlmIChjdXJyZW50
TWFqb3IgPCBtYWpvcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjdXJyZW50TWFq
b3IgPiBtYWpvcikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoY3VycmVudE1pbm9y
IDwgbWlub3IpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoY3VycmVudE1pbm9yID4g
bWlub3IpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKGN1cnJlbnRNaWNybyA8IG1p
Y3JvKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9p
ZCB3ZWJraXRHc3RPYmplY3RSZWZTaW5rKEdzdE9iamVjdCopOwotR3N0UGFkKiB3ZWJraXRHc3RH
aG9zdFBhZEZyb21TdGF0aWNUZW1wbGF0ZShHc3RTdGF0aWNQYWRUZW1wbGF0ZSosIGNvbnN0IGdj
aGFyKiBuYW1lLCBHc3RQYWQqIHRhcmdldCk7Ci1HUmVmUHRyPEdzdENhcHM+IHdlYmtpdEdzdEdl
dFBhZENhcHMoR3N0UGFkKik7Ci1HUmVmUHRyPEdzdEJ1cz4gd2Via2l0R3N0UGlwZWxpbmVHZXRC
dXMoR3N0UGlwZWxpbmUqKTsKLSNpZiBFTkFCTEUoVklERU8pCi1ib29sIGdldFZpZGVvU2l6ZUFu
ZEZvcm1hdEZyb21DYXBzKEdzdENhcHMqLCBXZWJDb3JlOjpJbnRTaXplJiwgR3N0VmlkZW9Gb3Jt
YXQmLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IsIGludCYgcGl4ZWxBc3BlY3RSYXRp
b0Rlbm9taW5hdG9yLCBpbnQmIHN0cmlkZSk7Ci0jZW5kaWYKLUdzdEJ1ZmZlciogY3JlYXRlR3N0
QnVmZmVyKEdzdEJ1ZmZlciopOwotR3N0QnVmZmVyKiBjcmVhdGVHc3RCdWZmZXJGb3JEYXRhKGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwotaW50IGdldEdzdEJ1ZmZlclNpemUoR3N0QnVm
ZmVyKik7Ci12b2lkIHNldEdzdEJ1ZmZlclNpemUoR3N0QnVmZmVyKiwgaW50IG5ld1NpemUpOwot
Y2hhciogZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIoR3N0QnVmZmVyKik7Ci0jaWZkZWYgR1NUX0FQ
SV9WRVJTSU9OXzEKLXZvaWQgbWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciopOwotdm9pZCB1bm1hcEdz
dEJ1ZmZlcihHc3RCdWZmZXIqKTsKLSNlbmRpZgotdm9pZCBzZXRHc3RFbGVtZW50Q2xhc3NNZXRh
ZGF0YShHc3RFbGVtZW50Q2xhc3MqLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBsb25n
TmFtZSwgY29uc3QgY2hhciogZGVzY3JpcHRpb24sIGNvbnN0IGNoYXIqIGF1dGhvcik7Ci1ib29s
IGdzdE9iamVjdElzRmxvYXRpbmcoR3N0T2JqZWN0Kik7Ci12b2lkIG5vdGlmeUdzdFRhZ3NPblBh
ZChHc3RFbGVtZW50KiwgR3N0UGFkKiwgR3N0VGFnTGlzdCopOwotI2lmIEVOQUJMRShXRUJfQVVE
SU8pCi1Hc3RDYXBzKiBnZXRHc3RBdWRpb0NhcHMoaW50IGNoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlKTsKLSNlbmRpZgotI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpCi0jZW5kaWYgLy8gR1N0cmVh
bWVyVmVyc2lvbmluZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCmluZGV4IDhiNDZjZDY4OGQyZDQz
ZDBmNmE2Y2RlMGMwNDhmYWU2YjMxYzRmZWIuLjM4YmYzYjRkMWFkMTNiNjI3NjQxMTc2NmFhZDJi
YTE0MGM5NmFiMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCkBAIC0yNCw3ICsyNCwxMCBAQAog
CiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNs
dWRlICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCisjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5o
IgorCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAg
LTYwLDcgKzYzLDcgQEAgY2xhc3MgSW1hZ2VHU3RyZWFtZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJ
bWFnZUdTdHJlYW1lcj4gewogICAgICAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IG1faW1hZ2U7CiAg
ICAgICAgIEZsb2F0UmVjdCBtX2Nyb3BSZWN0OwogCi0jaWYgVVNFKENBSVJPKSAmJiBkZWZpbmVk
KEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIFVTRShDQUlSTykKICAgICAgICAgR1JlZlB0cjxHc3RC
dWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBHc3RNYXBJbmZvIG1fbWFwSW5mbzsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlR1N0cmVhbWVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwCmluZGV4IDc1ZTEyNmYxYjQ4OTZmNTI1
YTY5ZDVjYzk3NDIzZTM0NjJjNjAxMzIuLjA5MDkyMDdkNzVjZjViNmMyMzAwM2RmYzBhMTQzMjE4
ZDExMWYyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAKQEAgLTIyLDM0
ICsyMiwyOCBAQAogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQogCisjaW5j
bHVkZSAiR1N0cmVhbWVyVXRpbGl0aWVzLmgiCisKICNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1
ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAKLSNpZmRl
ZiBHU1RfQVBJX1ZFUlNJT05fMQogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4K
LSNlbmRpZgogCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogSW1hZ2VHU3RyZWFtZXI6OkltYWdlR1N0cmVhbWVyKEdzdEJ1ZmZlciogYnVmZmVyLCBH
c3RDYXBzKiBjYXBzKQotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgOiBtX2J1ZmZlcihi
dWZmZXIpCi0jZW5kaWYKIHsKICAgICBHc3RWaWRlb0Zvcm1hdCBmb3JtYXQ7CiAgICAgSW50U2l6
ZSBzaXplOwogICAgIGludCBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBwaXhlbEFzcGVjdFJh
dGlvRGVub21pbmF0b3IsIHN0cmlkZTsKICAgICBnZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9tQ2Fw
cyhjYXBzLCBzaXplLCBmb3JtYXQsIHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IsIHBpeGVsQXNw
ZWN0UmF0aW9EZW5vbWluYXRvciwgc3RyaWRlKTsKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8x
CiAgICAgZ3N0X2J1ZmZlcl9tYXAoYnVmZmVyLCAmbV9tYXBJbmZvLCBHU1RfTUFQX1JFQUQpOwog
ICAgIHVuc2lnbmVkIGNoYXIqIGJ1ZmZlckRhdGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVk
IGNoYXIqPihtX21hcEluZm8uZGF0YSk7Ci0jZWxzZQotICAgIHVuc2lnbmVkIGNoYXIqIGJ1ZmZl
ckRhdGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihHU1RfQlVGRkVSX0RBVEEo
YnVmZmVyKSk7Ci0jZW5kaWYKIAogICAgIGNhaXJvX2Zvcm1hdF90IGNhaXJvRm9ybWF0OwogI2lm
IEdfQllURV9PUkRFUiA9PSBHX0xJVFRMRV9FTkRJQU4KQEAgLTYyLDEwICs1Niw4IEBAIEltYWdl
R1N0cmVhbWVyOjpJbWFnZUdTdHJlYW1lcihHc3RCdWZmZXIqIGJ1ZmZlciwgR3N0Q2FwcyogY2Fw
cykKICAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9zdGF0dXMoc3VyZmFjZS5nZXQoKSkgPT0gQ0FJ
Uk9fU1RBVFVTX1NVQ0NFU1MpOwogICAgIG1faW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKHN1
cmZhY2UucmVsZWFzZSgpKTsKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgaWYgKEdz
dFZpZGVvQ3JvcE1ldGEqIGNyb3BNZXRhID0gZ3N0X2J1ZmZlcl9nZXRfdmlkZW9fY3JvcF9tZXRh
KGJ1ZmZlcikpCiAgICAgICAgIHNldENyb3BSZWN0KEZsb2F0UmVjdChjcm9wTWV0YS0+eCwgY3Jv
cE1ldGEtPnksIGNyb3BNZXRhLT53aWR0aCwgY3JvcE1ldGEtPmhlaWdodCkpOwotI2VuZGlmCiB9
CiAKIEltYWdlR1N0cmVhbWVyOjp+SW1hZ2VHU3RyZWFtZXIoKQpAQCAtNzUsMTAgKzY3LDggQEAg
SW1hZ2VHU3RyZWFtZXI6On5JbWFnZUdTdHJlYW1lcigpCiAKICAgICBtX2ltYWdlID0gMDsKIAot
I2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgLy8gV2Uga2VlcCB0aGUgYnVmZmVyIG1lbW9y
eSBtYXBwZWQgdW50aWwgdGhlIGltYWdlIGlzIGRlc3Ryb3llZCBiZWNhdXNlIHRoZSBpbnRlcm5h
bAogICAgIC8vIGNhaXJvX3N1cmZhY2VfdCB3YXMgY3JlYXRlZCB1c2luZyBjYWlyb19pbWFnZV9z
dXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgpLgogICAgIGdzdF9idWZmZXJfdW5tYXAobV9idWZmZXIu
Z2V0KCksICZtX21hcEluZm8pOwotI2VuZGlmCiB9CiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXIuaAppbmRleCAyZGI2NWU0ZjVjNmEyYWIxYzFlZTVmNTFlNDhmMzczYzg2YTZl
MDQxLi4wM2U0MDFkYTZkYTNkNDY0ZGIzMTY1ODQ1OTgxYzUyYTkyMjE1MmNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0YWRh
dGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJl
YW1lci5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNr
UHJpdmF0ZUdTdHJlYW1lcl9oCiAjZGVmaW5lIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0
ZUdTdHJlYW1lcl9oCiAKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVO
QUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFC
TEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2lu
Y2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2
YXRlLmgiCkBAIC01Nyw2ICs1Nyw2IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxF
KFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVO
QUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAj
ZW5kaWYgLy8gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRl
eCBjODQ5YjhjZWIwN2Y3MmM2MzA0OGY4ODc0MTI1ZWZhOGZkZmZmZWRkLi5iZWQxMGZhYTdjMjU1
YmY2ZjdmMGVhZTkxNTJmODg3MTNiZWI2ZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAKICNp
bmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikg
JiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQog
CiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIgogCkBAIC0xNTcs
NCArMTU3LDQgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlU
cmFja09mU3RyZWFtQ2hhbmdlZCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlm
IC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNL
KSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykg
JiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggNDM4OGY5ODBjMDY2
YTM2MmUzZjcwNTU0ZmE2NjMwY2ViNjc3YWQyNi4uYWM1ZDIwNmZiNTYzNGNlNmZiOGUwM2RkMDg3
NmU3Y2VlMmIxOTU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lci5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEluYmFuZFRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXJfaAogI2RlZmluZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyX2gKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJ
REVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURF
TykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAi
R1JlZlB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIK
QEAgLTcxLDYgKzcxLDYgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9f
VFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJ
REVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNlbmRpZiAv
LyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNDYwMjk3OTdmMWY2Nzk0MzdmMTY1
N2UwMWVkZTExYTVkZDAzMjdmZS4uYmEzMWM2MzNmZWEyNGZiODNiMTYyOGNiZWQ3OTZhYWEyYzk2
NDU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIp
CiAKICNpbmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJW
ZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCkBAIC00MSw3ICs0MCw3IEBACiAjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuaCIKICNpbmNsdWRlICJJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCkBAIC01
MCwxMSArNDksNyBAQAogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCiAj
ZW5kaWYKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL3N0
cmVhbXZvbHVtZS5oPgotI2Vsc2UKLSNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy9zdHJlYW12b2x1
bWUuaD4KLSNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICNpbmNsdWRlICJNZWRp
YVNvdXJjZS5oIgpAQCAtNzYsMTggKzcxLDYgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBHU1RfUExB
WV9GTEFHX0JVRkZFUklORyAgICAgPSAweDAwMDAwMDEwMAogfSBHc3RQbGF5RmxhZ3M7CiAKLS8v
IGdQZXJjZW50TWF4IGlzIHVzZWQgd2hlbiBwYXJzaW5nIGJ1ZmZlcmluZyByYW5nZXMgd2l0aAot
Ly8gZ3N0X3F1ZXJ5X3BhcnNlX250aF9idWZmZXJpbmdfcmFuZ2UgYXMgdGhlcmUgd2FzIGEgYnVn
IGluIEdTdHJlYW1lcgotLy8gMC4xMCB0aGF0IHdhcyB1c2luZyAxMDAgaW5zdGVhZCBvZiBHU1Rf
Rk9STUFUX1BFUkNFTlRfTUFYLiBUaGlzIHdhcwotLy8gY29ycmVjdGVkIGluIDEuMC4gZ3N0X3F1
ZXJ5X3BhcnNlX2J1ZmZlcmluZ19yYW5nZSB3b3JrZWQgYXMKLS8vIGV4cGVjdGVkIHdpdGggR1NU
X0ZPUk1BVF9QRVJDRU5UX01BWCBpbiBib3RoIGNhc2VzLgotI2lmZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCi1zdGF0aWMgY29uc3QgY2hhciogZ1BsYXliaW5OYW1lID0gInBsYXliaW4iOwotc3RhdGlj
IGNvbnN0IGdpbnQ2NCBnUGVyY2VudE1heCA9IEdTVF9GT1JNQVRfUEVSQ0VOVF9NQVg7Ci0jZWxz
ZQotc3RhdGljIGNvbnN0IGNoYXIqIGdQbGF5YmluTmFtZSA9ICJwbGF5YmluMiI7Ci1zdGF0aWMg
Y29uc3QgZ2ludDY0IGdQZXJjZW50TWF4ID0gMTAwOwotI2VuZGlmCiAvLyBNYXggaW50ZXJ2YWwg
aW4gc2Vjb25kcyB0byBzdGF5IGluIHRoZSBSRUFEWSBzdGF0ZSBvbiBtYW51YWwKIC8vIHN0YXRl
IGNoYW5nZSByZXF1ZXN0cy4KIHN0YXRpYyBjb25zdCBndWludCBnUmVhZHlTdGF0ZVRpbWVySW50
ZXJ2YWwgPSA2MDsKQEAgLTEzMSwxMiArMTE0LDggQEAgc3RhdGljIGdib29sZWFuIG1lZGlhUGxh
eWVyUHJpdmF0ZUF1ZGlvQ2hhbmdlVGltZW91dENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdmF0ZUcK
ICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogc3RhdGlj
IHZvaWQgc2V0QXVkaW9TdHJlYW1Qcm9wZXJ0aWVzQ2FsbGJhY2soR3N0Q2hpbGRQcm94eSosIEdP
YmplY3QqIG9iamVjdCwgZ2NoYXIqLAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciog
cGxheWVyKQotI2Vsc2UKLXN0YXRpYyB2b2lkIHNldEF1ZGlvU3RyZWFtUHJvcGVydGllc0NhbGxi
YWNrKEdzdENoaWxkUHJveHkqLCBHT2JqZWN0KiBvYmplY3QsIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lciogcGxheWVyKQotI2VuZGlmCiB7CiAgICAgcGxheWVyLT5zZXRBdWRpb1N0cmVhbVBy
b3BlcnRpZXMob2JqZWN0KTsKIH0KQEAgLTE1NSw3ICsxMzQsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4g
bWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DYXBzQ2hhbmdlVGltZW91dENhbGxiYWNrKE1lZGlhUGxh
eWVyUHJpdgogICAgIHJldHVybiBGQUxTRTsKIH0KIAotI2lmIEVOQUJMRShWSURFT19UUkFDSykg
JiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBz
dGF0aWMgdm9pZCBtZWRpYVBsYXllclByaXZhdGVUZXh0Q2hhbmdlZENhbGxiYWNrKEdPYmplY3Qq
LCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKIHsKICAgICBwbGF5ZXItPnRl
eHRDaGFuZ2VkKCk7CkBAIC0yNTAsNyArMjI5LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmlzQXZhaWxhYmxlKCkKICAgICBpZiAoIWluaXRpYWxpemVHU3RyZWFtZXJBbmRS
ZWdpc3RlcldlYktpdEVsZW1lbnRzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEdS
ZWZQdHI8R3N0RWxlbWVudEZhY3Rvcnk+IGZhY3RvcnkgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2Zp
bmQoZ1BsYXliaW5OYW1lKTsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnRGYWN0b3J5PiBmYWN0b3J5
ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9maW5kKCJwbGF5YmluIik7CiAgICAgcmV0dXJuIGZhY3Rv
cnk7CiB9CiAKQEAgLTI5OSw3ICsyNzgsNyBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVBsYXllciogcGxheWVyKQogCiBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQog
ewotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2F1
ZGlvVHJhY2tzLnNpemUoKTsgKytpKQogICAgICAgICBtX2F1ZGlvVHJhY2tzW2ldLT5kaXNjb25u
ZWN0KCk7CiAKQEAgLTMyNSw3ICszMDQsNyBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogICAgICAgICBnX3NvdXJjZV9yZW1vdmUo
bV9yZWFkeVRpbWVySGFuZGxlcik7CiAKICAgICBpZiAobV9wbGF5QmluKSB7Ci0gICAgICAgIEdS
ZWZQdHI8R3N0QnVzPiBidXMgPSB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUo
bV9wbGF5QmluLmdldCgpKSk7CisgICAgICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdS
ZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGxheUJpbi5nZXQoKSkpKTsK
ICAgICAgICAgQVNTRVJUKGJ1cyk7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5l
Y3RfYnlfZnVuYyhidXMuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KG1lZGlhUGxh
eWVyUHJpdmF0ZU1lc3NhZ2VDYWxsYmFjayksIHRoaXMpOwogICAgICAgICBnc3RfYnVzX3JlbW92
ZV9zaWduYWxfd2F0Y2goYnVzLmdldCgpKTsKQEAgLTMzMyw3ICszMTIsNyBAQCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogICAgICAg
ICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMobV9wbGF5QmluLmdldCgpLCBy
ZWludGVycHJldF9jYXN0PGdwb2ludGVyPihtZWRpYVBsYXllclByaXZhdGVTb3VyY2VDaGFuZ2Vk
Q2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9i
eV9mdW5jKG1fcGxheUJpbi5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4obWVkaWFQ
bGF5ZXJQcml2YXRlVmlkZW9DaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgZ19zaWdu
YWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fcGxheUJpbi5nZXQoKSwgcmVpbnRlcnBy
ZXRfY2FzdDxncG9pbnRlcj4obWVkaWFQbGF5ZXJQcml2YXRlQXVkaW9DaGFuZ2VkQ2FsbGJhY2sp
LCB0aGlzKTsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJT
SU9OXzEpCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICAgICBnX3NpZ25hbF9oYW5kbGVy
c19kaXNjb25uZWN0X2J5X2Z1bmMobV9wbGF5QmluLmdldCgpLCByZWludGVycHJldF9jYXN0PGdw
b2ludGVyPihtZWRpYVBsYXllclByaXZhdGVOZXdUZXh0U2FtcGxlQ2FsbGJhY2spLCB0aGlzKTsK
ICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fcGxheUJpbi5n
ZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4obWVkaWFQbGF5ZXJQcml2YXRlVGV4dENo
YW5nZWRDYWxsYmFjayksIHRoaXMpOwogI2VuZGlmCkBAIC01NDMsMTEgKzUyMiw3IEBAIGZsb2F0
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZHVyYXRpb24oKSBjb25zdAogICAgIEdzdEZv
cm1hdCB0aW1lRm9ybWF0ID0gR1NUX0ZPUk1BVF9USU1FOwogICAgIGdpbnQ2NCB0aW1lTGVuZ3Ro
ID0gMDsKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgYm9vbCBmYWlsdXJlID0gIWdz
dF9lbGVtZW50X3F1ZXJ5X2R1cmF0aW9uKG1fcGxheUJpbi5nZXQoKSwgdGltZUZvcm1hdCwgJnRp
bWVMZW5ndGgpIHx8IHN0YXRpY19jYXN0PGd1aW50NjQ+KHRpbWVMZW5ndGgpID09IEdTVF9DTE9D
S19USU1FX05PTkU7Ci0jZWxzZQotICAgIGJvb2wgZmFpbHVyZSA9ICFnc3RfZWxlbWVudF9xdWVy
eV9kdXJhdGlvbihtX3BsYXlCaW4uZ2V0KCksICZ0aW1lRm9ybWF0LCAmdGltZUxlbmd0aCkgfHwg
dGltZUZvcm1hdCAhPSBHU1RfRk9STUFUX1RJTUUgfHwgc3RhdGljX2Nhc3Q8Z3VpbnQ2ND4odGlt
ZUxlbmd0aCkgPT0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLSNlbmRpZgogICAgIGlmIChmYWlsdXJl
KSB7CiAgICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJUaW1lIGR1cmF0aW9uIHF1ZXJ5IGZhaWxl
ZCBmb3IgJXMiLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJu
IG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKQEAgLTY4OCw3ICs2NjMsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZWaWRlbygpCiAK
ICAgICBtX2hhc1ZpZGVvID0gbnVtVHJhY2tzID4gMDsKIAotI2lmIEVOQUJMRShWSURFT19UUkFD
SykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CiAgICAgZm9yIChnaW50IGkgPSAwOyBpIDwgbnVtVHJhY2tzOyArK2kpIHsKICAgICAgICAgR1Jl
ZlB0cjxHc3RQYWQ+IHBhZDsKICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fcGxheUJp
bi5nZXQoKSwgImdldC12aWRlby1wYWQiLCBpLCAmcGFkLm91dFB0cigpLCBOVUxMKTsKQEAgLTc0
MSw3ICs3MTYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxh
eWVyT2ZBdWRpbygpCiAKICAgICBtX2hhc0F1ZGlvID0gbnVtVHJhY2tzID4gMDsKIAotI2lmIEVO
QUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCiAgICAgZm9yIChnaW50IGkgPSAwOyBpIDwgbnVtVHJhY2tzOyArK2kp
IHsKICAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHBhZDsKICAgICAgICAgZ19zaWduYWxfZW1pdF9i
eV9uYW1lKG1fcGxheUJpbi5nZXQoKSwgImdldC1hdWRpby1wYWQiLCBpLCAmcGFkLm91dFB0cigp
LCBOVUxMKTsKQEAgLTc3MCw3ICs3NDUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygpCiAgICAgbV9wbGF5ZXItPm1lZGlhUGxheWVyQ2xp
ZW50KCktPm1lZGlhUGxheWVyRW5naW5lVXBkYXRlZChtX3BsYXllcik7CiB9CiAKLSNpZiBFTkFC
TEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRleHRDaGFu
Z2VkKCkKIHsKICAgICBpZiAobV90ZXh0VGltZXJIYW5kbGVyKQpAQCAtOTI3LDggKzkwMiw4IEBA
IFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZm
ZXJlZCgpIGNvbnN0CiAgICAgZm9yIChndWludCBpbmRleCA9IDA7IGluZGV4IDwgZ3N0X3F1ZXJ5
X2dldF9uX2J1ZmZlcmluZ19yYW5nZXMocXVlcnkpOyBpbmRleCsrKSB7CiAgICAgICAgIGdpbnQ2
NCByYW5nZVN0YXJ0ID0gMCwgcmFuZ2VTdG9wID0gMDsKICAgICAgICAgaWYgKGdzdF9xdWVyeV9w
YXJzZV9udGhfYnVmZmVyaW5nX3JhbmdlKHF1ZXJ5LCBpbmRleCwgJnJhbmdlU3RhcnQsICZyYW5n
ZVN0b3ApKQotICAgICAgICAgICAgdGltZVJhbmdlcy0+YWRkKHN0YXRpY19jYXN0PGZsb2F0Pigo
cmFuZ2VTdGFydCAqIG1lZGlhRHVyYXRpb24pIC8gZ1BlcmNlbnRNYXgpLAotICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGZsb2F0PigocmFuZ2VTdG9wICogbWVkaWFEdXJhdGlvbikgLyBnUGVy
Y2VudE1heCkpOworICAgICAgICAgICAgdGltZVJhbmdlcy0+YWRkKHN0YXRpY19jYXN0PGZsb2F0
PigocmFuZ2VTdGFydCAqIG1lZGlhRHVyYXRpb24pIC8gR1NUX0ZPUk1BVF9QRVJDRU5UX01BWCks
CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KChyYW5nZVN0b3AgKiBtZWRpYUR1
cmF0aW9uKSAvIEdTVF9GT1JNQVRfUEVSQ0VOVF9NQVgpKTsKICAgICB9CiAKICAgICAvLyBGYWxs
YmFjayB0byB0aGUgbW9yZSBnZW5lcmFsIG1heFRpbWVMb2FkZWQoKSBpZiBubyByYW5nZSBoYXMK
QEAgLTEwMzMsMTEgKzEwMDgsNyBAQCBnYm9vbGVhbiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICBjYXNlIEdTVF9NRVNT
QUdFX0JVRkZFUklORzoKICAgICAgICAgcHJvY2Vzc0J1ZmZlcmluZ1N0YXRzKG1lc3NhZ2UpOwog
ICAgICAgICBicmVhazsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGNhc2UgR1NUX01F
U1NBR0VfRFVSQVRJT05fQ0hBTkdFRDoKLSNlbHNlCi0gICAgY2FzZSBHU1RfTUVTU0FHRV9EVVJB
VElPTjoKLSNlbmRpZgogICAgICAgICBpZiAobWVzc2FnZVNvdXJjZUlzUGxheWJpbikKICAgICAg
ICAgICAgIGR1cmF0aW9uQ2hhbmdlZCgpOwogICAgICAgICBicmVhazsKQEAgLTEwNjIsNyArMTAz
Myw3IEBAIGdib29sZWFuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2Fn
ZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICAgICAgZ19mcmVlKGRldGFpbCk7CiAgICAg
ICAgIH0KICAgICAgICAgYnJlYWs7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVk
KEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBjYXNlIEdT
VF9NRVNTQUdFX1RPQzoKICAgICAgICAgcHJvY2Vzc1RhYmxlT2ZDb250ZW50cyhtZXNzYWdlKTsK
ICAgICAgICAgYnJlYWs7CkBAIC0xMDk1LDcgKzEwNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc0J1ZmZlcmluZ1N0YXRzKEdzdE1lc3NhZ2UqIG1lc3NhZ2Up
CiAgICAgdXBkYXRlU3RhdGVzKCk7CiB9CiAKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRl
ZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSogbWVzc2FnZSkKIHsKICAgICBpZiAobV9jaGFwdGVyc1RyYWNrKQpAQCAtMTIzOSwxMSAr
MTIxMCw3IEBAIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxCeXRl
cygpIGNvbnN0CiAKICAgICBHc3RGb3JtYXQgZm10ID0gR1NUX0ZPUk1BVF9CWVRFUzsKICAgICBn
aW50NjQgbGVuZ3RoID0gMDsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGlmIChnc3Rf
ZWxlbWVudF9xdWVyeV9kdXJhdGlvbihtX3NvdXJjZS5nZXQoKSwgZm10LCAmbGVuZ3RoKSkgewot
I2Vsc2UKLSAgICBpZiAoZ3N0X2VsZW1lbnRfcXVlcnlfZHVyYXRpb24obV9zb3VyY2UuZ2V0KCks
ICZmbXQsICZsZW5ndGgpKSB7Ci0jZW5kaWYKICAgICAgICAgSU5GT19NRURJQV9NRVNTQUdFKCJ0
b3RhbEJ5dGVzICUiIEdfR0lOVDY0X0ZPUk1BVCwgbGVuZ3RoKTsKICAgICAgICAgbV90b3RhbEJ5
dGVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCk7CiAgICAgICAgIG1faXNTdHJlYW1p
bmcgPSAhbGVuZ3RoOwpAQCAtMTI1NSw3ICsxMjIyLDYgQEAgdW5zaWduZWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjp0b3RhbEJ5dGVzKCkgY29uc3QKICAgICBHc3RJdGVyYXRvciogaXRl
ciA9IGdzdF9lbGVtZW50X2l0ZXJhdGVfc3JjX3BhZHMobV9zb3VyY2UuZ2V0KCkpOwogICAgIGJv
b2wgZG9uZSA9IGZhbHNlOwogICAgIHdoaWxlICghZG9uZSkgewotI2lmZGVmIEdTVF9BUElfVkVS
U0lPTl8xCiAgICAgICAgIEdWYWx1ZSBpdGVtID0gR19WQUxVRV9JTklUOwogICAgICAgICBzd2l0
Y2ggKGdzdF9pdGVyYXRvcl9uZXh0KGl0ZXIsICZpdGVtKSkgewogICAgICAgICBjYXNlIEdTVF9J
VEVSQVRPUl9PSzogewpAQCAtMTI2NSwxOCArMTIzMSw2IEBAIHVuc2lnbmVkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxCeXRlcygpIGNvbnN0CiAgICAgICAgICAgICAgICAgbGVu
Z3RoID0gcGFkTGVuZ3RoOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSNlbHNlCi0g
ICAgICAgIGdwb2ludGVyIGRhdGE7Ci0KLSAgICAgICAgc3dpdGNoIChnc3RfaXRlcmF0b3JfbmV4
dChpdGVyLCAmZGF0YSkpIHsKLSAgICAgICAgY2FzZSBHU1RfSVRFUkFUT1JfT0s6IHsKLSAgICAg
ICAgICAgIEdSZWZQdHI8R3N0UGFkPiBwYWQgPSBhZG9wdEdSZWYoR1NUX1BBRF9DQVNUKGRhdGEp
KTsKLSAgICAgICAgICAgIGdpbnQ2NCBwYWRMZW5ndGggPSAwOwotICAgICAgICAgICAgaWYgKGdz
dF9wYWRfcXVlcnlfZHVyYXRpb24ocGFkLmdldCgpLCAmZm10LCAmcGFkTGVuZ3RoKSAmJiBwYWRM
ZW5ndGggPiBsZW5ndGgpCi0gICAgICAgICAgICAgICAgbGVuZ3RoID0gcGFkTGVuZ3RoOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBjYXNlIEdTVF9JVEVS
QVRPUl9SRVNZTkM6CiAgICAgICAgICAgICBnc3RfaXRlcmF0b3JfcmVzeW5jKGl0ZXIpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xMjg3LDkgKzEyNDEsNyBAQCB1bnNpZ25lZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnRvdGFsQnl0ZXMoKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgICAgIGdfdmFsdWVf
dW5zZXQoJml0ZW0pOwotI2VuZGlmCiAgICAgfQogCiAgICAgZ3N0X2l0ZXJhdG9yX2ZyZWUoaXRl
cik7CkBAIC0xOTA1LDEwICsxODU3LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjcmVhdGVHU1RQbGF5QmluKCkKIAogICAgIC8vIGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFr
ZSgpIHJldHVybnMgYSBmbG9hdGluZyByZWZlcmVuY2Ugc28KICAgICAvLyB3ZSBzaG91bGQgbm90
IGFkb3B0LgotICAgIG1fcGxheUJpbiA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZShnUGxheWJp
bk5hbWUsICJwbGF5Iik7CisgICAgbV9wbGF5QmluID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtl
KCJwbGF5YmluIiwgInBsYXkiKTsKICAgICBzZXRTdHJlYW1Wb2x1bWVFbGVtZW50KEdTVF9TVFJF
QU1fVk9MVU1FKG1fcGxheUJpbi5nZXQoKSkpOwogCi0gICAgR1JlZlB0cjxHc3RCdXM+IGJ1cyA9
IHdlYmtpdEdzdFBpcGVsaW5lR2V0QnVzKEdTVF9QSVBFTElORShtX3BsYXlCaW4uZ2V0KCkpKTsK
KyAgICBHUmVmUHRyPEdzdEJ1cz4gYnVzID0gYWRvcHRHUmVmKGdzdF9waXBlbGluZV9nZXRfYnVz
KEdTVF9QSVBFTElORShtX3BsYXlCaW4uZ2V0KCkpKSk7CiAgICAgZ3N0X2J1c19hZGRfc2lnbmFs
X3dhdGNoKGJ1cy5nZXQoKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChidXMuZ2V0KCksICJtZXNz
YWdlIiwgR19DQUxMQkFDSyhtZWRpYVBsYXllclByaXZhdGVNZXNzYWdlQ2FsbGJhY2spLCB0aGlz
KTsKIApAQCAtMTkxNyw3ICsxODY5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmNyZWF0ZUdTVFBsYXlCaW4oKQogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wbGF5QmluLmdl
dCgpLCAibm90aWZ5Ojpzb3VyY2UiLCBHX0NBTExCQUNLKG1lZGlhUGxheWVyUHJpdmF0ZVNvdXJj
ZUNoYW5nZWRDYWxsYmFjayksIHRoaXMpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wbGF5Qmlu
LmdldCgpLCAidmlkZW8tY2hhbmdlZCIsIEdfQ0FMTEJBQ0sobWVkaWFQbGF5ZXJQcml2YXRlVmlk
ZW9DaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fcGxheUJp
bi5nZXQoKSwgImF1ZGlvLWNoYW5nZWQiLCBHX0NBTExCQUNLKG1lZGlhUGxheWVyUHJpdmF0ZUF1
ZGlvQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBk
ZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBp
ZiAod2Via2l0R3N0Q2hlY2tWZXJzaW9uKDEsIDEsIDIpKSB7CiAgICAgICAgIGdfc2lnbmFsX2Nv
bm5lY3QobV9wbGF5QmluLmdldCgpLCAidGV4dC1jaGFuZ2VkIiwgR19DQUxMQkFDSyhtZWRpYVBs
YXllclByaXZhdGVUZXh0Q2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBkN2Y1M2M0MzZlZGQ1ZDViYmJh
OWMxZjg5N2Q5M2Q0ZWVmNTM0ZWZmLi43ZjZlMmQ2N2E3NmYwYmI3YjU3ZTljOWJkMjdjMTJjMWU2
Nzk3ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
CkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5UGxheWVyT2ZWaWRl
b0NhcHMoKTsKICAgICB2b2lkIG5vdGlmeVBsYXllck9mQXVkaW8oKTsKIAotI2lmIEVOQUJMRShW
SURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAgICAgdm9pZCB0ZXh0Q2hhbmdlZCgpOwogICAgIHZvaWQgbm90aWZ5UGxheWVy
T2ZUZXh0KCk7CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRE
b3dubG9hZEJ1ZmZlcmluZygpOwogICAgIHZvaWQgcHJvY2Vzc0J1ZmZlcmluZ1N0YXRzKEdzdE1l
c3NhZ2UqKTsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJT
SU9OXzEpCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZD
b250ZW50cyhHc3RNZXNzYWdlKik7CiAgICAgdm9pZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50
cnkoR3N0VG9jRW50cnkqLCBHc3RUb2NFbnRyeSogcGFyZW50KTsKICNlbmRpZgpAQCAtMTU0LDcg
KzE1NCw3IEBAIHByaXZhdGU6CiBwcml2YXRlOgogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9w
bGF5QmluOwogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9zb3VyY2U7Ci0jaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURF
T19UUkFDSykKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fdGV4dEFwcFNpbms7CiAgICAgR1Jl
ZlB0cjxHc3RQYWQ+IG1fdGV4dEFwcFNpbmtQYWQ7CiAjZW5kaWYKQEAgLTE5OCw3ICsxOTgsNyBA
QCBwcml2YXRlOgogICAgIEdzdFN0YXRlIG1fcmVxdWVzdGVkU3RhdGU7CiAgICAgR1JlZlB0cjxH
c3RFbGVtZW50PiBtX2F1dG9BdWRpb1Npbms7CiAgICAgYm9vbCBtX21pc3NpbmdQbHVnaW5zOwot
I2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgVmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lcj4+IG1fYXVkaW9UcmFja3M7CiAgICAgVmVjdG9yPFJlZlB0cjxJbmJhbmRUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyPj4gbV90ZXh0VHJhY2tzOwogICAgIFZlY3RvcjxSZWZQdHI8
VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+PiBtX3ZpZGVvVHJhY2tzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IDk5NWRk
OGRhNGQ3YjczZGI4NTdhYTYzOThkZDcwOTlkNDhkNGMyNTguLmE5N2I0ZmI3ZmQ3ODQwNWI5MjVi
ODk2N2I5MTgxOTJiODdlZDYzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUg
IkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKLSNpbmNsdWRl
ICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkltYWdlR1N0cmVhbWVyLmgiCkBA
IC00MSwxMSArNDAsNyBAQAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogI2luY2x1ZGUgPGdzdC9h
dWRpby9zdHJlYW12b2x1bWUuaD4KLSNlbHNlCi0jaW5jbHVkZSA8Z3N0L2ludGVyZmFjZXMvc3Ry
ZWFtdm9sdW1lLmg+Ci0jZW5kaWYKIAogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDEsIDApICYm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQog
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgpAQCAtMTY0LDEzICsxNTksNyBAQCBJbnRTaXpl
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdHVyYWxTaXplKCkgY29uc3QKICAg
ICBpZiAoIW1fdmlkZW9TaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1fdmlkZW9TaXpl
OwogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHMg
PSBjdXJyZW50VmlkZW9TaW5rQ2FwcygpOwotI2Vsc2UKLSAgICBnX211dGV4X2xvY2sobV9idWZm
ZXJNdXRleCk7Ci0gICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBzID0gbV9idWZmZXIgPyBHU1RfQlVG
RkVSX0NBUFMobV9idWZmZXIpIDogMDsKLSAgICBnX211dGV4X3VubG9jayhtX2J1ZmZlck11dGV4
KTsKLSNlbmRpZgogICAgIGlmICghY2FwcykKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIApA
QCAtMzI0LDExICszMTMsNyBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoVGV4dHVyZQogICAgIH0KIAogICAg
IGNvbnN0IHZvaWQqIHNyY0RhdGEgPSAwOwotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAg
R1JlZlB0cjxHc3RDYXBzPiBjYXBzID0gY3VycmVudFZpZGVvU2lua0NhcHMoKTsKLSNlbHNlCi0g
ICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBzID0gR1NUX0JVRkZFUl9DQVBTKG1fYnVmZmVyKTsKLSNl
bmRpZgogICAgIGlmICghY2FwcykgewogICAgICAgICBnX211dGV4X3VubG9jayhtX2J1ZmZlck11
dGV4KTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zNTksMTkgKzM0NCwxMyBAQCBQYXNzUmVmUHRy
PEJpdG1hcFRleHR1cmU+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRl
eHR1cmUoVGV4dHVyZQogICAgIH0KICNlbmRpZgogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEK
ICAgICBHc3RNYXBJbmZvIHNyY0luZm87CiAgICAgZ3N0X2J1ZmZlcl9tYXAobV9idWZmZXIsICZz
cmNJbmZvLCBHU1RfTUFQX1JFQUQpOwogICAgIHNyY0RhdGEgPSBzcmNJbmZvLmRhdGE7Ci0jZWxz
ZQotICAgIHNyY0RhdGEgPSBHU1RfQlVGRkVSX0RBVEEobV9idWZmZXIpOwotI2VuZGlmCiAKICAg
ICB0ZXh0dXJlLT51cGRhdGVDb250ZW50cyhzcmNEYXRhLCBXZWJDb3JlOjpJbnRSZWN0KFdlYkNv
cmU6OkludFBvaW50KDAsIDApLCBzaXplKSwgV2ViQ29yZTo6SW50UG9pbnQoMCwgMCksIHN0cmlk
ZSwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2Fubm90TW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwog
Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBnc3RfYnVmZmVyX3VubWFwKG1fYnVmZmVy
LCAmc3JjSW5mbyk7Ci0jZW5kaWYKIAogICAgIGdfbXV0ZXhfdW5sb2NrKG1fYnVmZmVyTXV0ZXgp
OwogICAgIHJldHVybiB0ZXh0dXJlOwpAQCAtNDIwLDExICszOTksNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWZkZWYgR1NUX0FQSV9WRVJT
SU9OXzEKICAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHMgPSBjdXJyZW50VmlkZW9TaW5rQ2Fwcygp
OwotI2Vsc2UKLSAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHMgPSBHU1RfQlVGRkVSX0NBUFMobV9i
dWZmZXIpOwotI2VuZGlmCiAgICAgaWYgKCFjYXBzKSB7CiAgICAgICAgIGdfbXV0ZXhfdW5sb2Nr
KG1fYnVmZmVyTXV0ZXgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dENvbWJpbmVyR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmlu
ZXJHU3RyZWFtZXIuY3BwCmluZGV4IGY5MjI4NDViYzliNjk1MzA2OWQzYzY5NDgzMGNhMmZjNjU0
NDhiMTAuLmMwZWJlN2MwMWRiMDA2MGE2NThjNWRiNDUyYzhhNzA2NjRkN2M1MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmlu
ZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1F
UikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQor
I2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNL
KQogCiAjaW5jbHVkZSAiVGV4dENvbWJpbmVyR1N0cmVhbWVyLmgiCiAKQEAgLTI5MSw0ICsyOTEs
NCBAQCBHc3RFbGVtZW50KiB3ZWJraXRUZXh0Q29tYmluZXJOZXcoKQogICAgIHJldHVybiBHU1Rf
RUxFTUVOVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVEVYVF9DT01CSU5FUiwgMCkpOwogfQog
Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklE
RU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxF
KFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dENvbWJp
bmVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVGV4dENvbWJpbmVyR1N0cmVhbWVyLmgKaW5kZXggYTE5MzAzZGMyNTEwYzhiZTgxNDBmNGQz
NTE5ZDAxYzMzMjk1OGNjOS4uMjBjNTc5Njk3ZTQ2ODM0ZjM4MDQ3YjM1MDQzZjdhYTRjYmI5ZTJi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1RleHRDb21iaW5lckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIuaApAQCAtMjYsNyArMjYsNyBA
QAogI2lmbmRlZiBUZXh0Q29tYmluZXJHU3RyZWFtZXJfaAogI2RlZmluZSBUZXh0Q29tYmluZXJH
U3RyZWFtZXJfaAogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFC
TEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxF
KFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNpbmNs
dWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KQEAgLTYyLDUgKzYyLDUg
QEAgc3RydWN0IF9XZWJLaXRUZXh0Q29tYmluZXJDbGFzcyB7CiAKIEdzdEVsZW1lbnQqIHdlYmtp
dFRleHRDb21iaW5lck5ldygpOwogCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NU
UkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9O
XzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUo
VklERU9fVFJBQ0spCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0U2lua0dTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dFNpbmtHU3RyZWFtZXIuY3BwCmluZGV4
IDE0ZmQ0NjkyYmJmM2EyZGE5MDhkZTdkNzA0ZWJiYjlhNmQ0YTBhMzcuLjY3OGU3YWMzNTZlZDVj
NWFmZmUzM2Q2MGE4ZDA1Nzg1MDBmY2I5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0U2lua0dTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRTaW5rR1N0cmVhbWVy
LmNwcApAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBF
TkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYg
ZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RS
RUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2luY2x1ZGUgIlRleHRTaW5rR1N0cmVh
bWVyLmgiCiAKQEAgLTk4LDQgKzk4LDQgQEAgR3N0RWxlbWVudCogd2Via2l0VGV4dFNpbmtOZXco
KQogICAgIHJldHVybiBHU1RfRUxFTUVOVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVEVYVF9T
SU5LLCAwKSk7CiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIp
ICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNl
bmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19U
UkFDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9UZXh0U2lua0dTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1RleHRTaW5rR1N0cmVhbWVyLmgKaW5kZXggNmM2YjZhYmRjMzk3NTQ1NzQz
NzAwODZiNDUyNDYzN2JkODY1MGUwMi4uZDA5YmU4NjJiODllZmQzNzIzZDI2OTEyMDlmNTUyYTE5
MGMxMDk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RleHRTaW5rR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRTaW5rR1N0cmVhbWVyLmgKQEAgLTI2LDcgKzI2LDcgQEAK
ICNpZm5kZWYgVGV4dFNpbmtHU3RyZWFtZXJfaAogI2RlZmluZSBUZXh0U2lua0dTdHJlYW1lcl9o
CiAKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19U
UkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYm
IFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2luY2x1ZGUgPGdsaWIt
b2JqZWN0Lmg+CiAjaW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBzaW5rLmg+CkBAIC02MSw1ICs2MSw1
IEBAIHN0cnVjdCBfV2ViS2l0VGV4dFNpbmtDbGFzcyB7CiAKIEdzdEVsZW1lbnQqIHdlYmtpdFRl
eHRTaW5rTmV3KCk7CiAKLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIp
ICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNl
bmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19U
UkFDSykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIu
Y3BwCmluZGV4IGIzMjAxNTc1N2NhNWNkMGI5NTY4NTlmMjNiZGRiOTM3ZTM3NWFiNWEuLmJkN2E2
OGRjNWVkZTcyNDI3NmVmYmFiN2I3ZTA2NTkwZjE1MDQ2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVh
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1
ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBF
TkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNp
bmNsdWRlICJUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmgiCiAKQEAgLTE2Miw0ICsxNjIsNCBA
QCB2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZUYWdzQ2hhbmdl
ZCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURFTykg
JiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9B
UElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikg
JiYgRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyLmgKaW5kZXggOTk1ZGE0ZmY4YTdmMWU1MGE2MDQ1NzBmNjcwNzI5NGNiNDliMTZhYi4u
NGZhZjliMjU4NzUyMjg2NmRhOGQ2Zjc3ZGUzYzk0NTczOTkyMmNmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVm
IFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXJfaAogI2RlZmluZSBUcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyX2gKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxF
KFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShW
SURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVk
ZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpA
QCAtNzEsNiArNzEsNiBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNl
bmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19U
UkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNlbmRpZiAvLyBFTkFCTEUoVklE
RU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2VuZGlmIC8v
IFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVy
LmNwcAppbmRleCBmMjQzMjNkNzc2NGM1YTFhN2U4YjU5ODRjY2MwOGJiNjYwODdkM2ExLi5jN2Fl
NzFjNjJhNTBlZjcyNzk4NGIzNWU5NWJhMTNkOTZlNGFkM2U3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9T
aW5rR1N0cmVhbWVyLmNwcApAQCAtMzAsMTcgKzMwLDE0IEBACiAKICNpZiBFTkFCTEUoVklERU8p
ICYmIFVTRShHU1RSRUFNRVIpCiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgotI2luY2x1
ZGUgIkdTdHJlYW1lclZlcnNpb25pbmcuaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMu
aCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGdz
dC9nc3QuaD4KLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogI2luY2x1ZGUgPGdzdC92aWRlby9n
c3R2aWRlb21ldGEuaD4KLSNlbmRpZgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogLy8gQ0FJ
Uk9fRk9STUFUX1JHQjI0IHVzZWQgdG8gcmVuZGVyIHRoZSB2aWRlbyBidWZmZXJzIGlzIGxpdHRs
ZS9iaWcgZW5kaWFuIGRlcGVuZGFudC4KLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogI2lmIEdf
QllURV9PUkRFUiA9PSBHX0xJVFRMRV9FTkRJQU4KICNkZWZpbmUgR1NUX0NBUFNfRk9STUFUICJ7
IEJHUngsIEJHUkEgfSIKICNlbHNlCkBAIC01MSwxNyArNDgsOCBAQAogI2Vsc2UKICNkZWZpbmUg
R1NUX0ZFQVRVUkVEX0NBUFMKICNlbmRpZgotI2VuZGlmIC8vIEdTVF9BUElfVkVSU0lPTl8xCiAK
LSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogI2RlZmluZSBXRUJLSVRfVklERU9fU0lOS19QQURf
Q0FQUyBHU1RfRkVBVFVSRURfQ0FQUyBHU1RfVklERU9fQ0FQU19NQUtFKEdTVF9DQVBTX0ZPUk1B
VCkKLSNlbHNlCi0jaWYgR19CWVRFX09SREVSID09IEdfTElUVExFX0VORElBTgotI2RlZmluZSBX
RUJLSVRfVklERU9fU0lOS19QQURfQ0FQUyBHU1RfVklERU9fQ0FQU19CR1J4ICI7IiBHU1RfVklE
RU9fQ0FQU19CR1JBCi0jZWxzZQotI2RlZmluZSBXRUJLSVRfVklERU9fU0lOS19QQURfQ0FQUyBH
U1RfVklERU9fQ0FQU194UkdCICI7IiBHU1RfVklERU9fQ0FQU19BUkdCCi0jZW5kaWYKLSNlbmRp
ZiAvLyBHU1RfQVBJX1ZFUlNJT05fMQogCiBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc19z
aW5rVGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSgic2luayIsIEdTVF9QQURfU0lO
SywgR1NUX1BBRF9BTFdBWVMsIEdTVF9TVEFUSUNfQ0FQUyhXRUJLSVRfVklERU9fU0lOS19QQURf
Q0FQUykpOwogCkBAIC04Nyw5ICs3NSw3IEBAIHN0cnVjdCBfV2ViS2l0VmlkZW9TaW5rUHJpdmF0
ZSB7CiAgICAgR011dGV4KiBidWZmZXJNdXRleDsKICAgICBHQ29uZCogZGF0YUNvbmRpdGlvbjsK
IAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgR3N0VmlkZW9JbmZvIGluZm87Ci0jZW5k
aWYKIAogICAgIEdzdENhcHMqIGN1cnJlbnRDYXBzOwogCkBAIC0xMjEsOSArMTA3LDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3ZpZGVvX3NpbmtfaW5pdChXZWJLaXRWaWRlb1NpbmsqIHNpbmspCiAg
ICAgc2luay0+cHJpdi0+YnVmZmVyTXV0ZXggPSBnX211dGV4X25ldygpOwogI2VuZGlmCiAKLSNp
ZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGdzdF92aWRlb19pbmZvX2luaXQoJnNpbmstPnBy
aXYtPmluZm8pOwotI2VuZGlmCiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRWaWRlb1NpbmtU
aW1lb3V0Q2FsbGJhY2soZ3BvaW50ZXIgZGF0YSkKQEAgLTE2NCwyMyArMTQ4LDEyIEBAIHN0YXRp
YyBHc3RGbG93UmV0dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRlcihHc3RCYXNlU2luayogYmFzZVNp
bmssIEdzdEJ1ZmZlciogYnVmCiAKICAgICBwcml2LT5idWZmZXIgPSBnc3RfYnVmZmVyX3JlZihi
dWZmZXIpOwogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgLy8gRm9yIHRoZSB1bmxp
a2VseSBjYXNlIHdoZXJlIHRoZSBidWZmZXIgaGFzIG5vIGNhcHMsIHRoZSBjYXBzCi0gICAgLy8g
YXJlIGltcGxpY2l0ZWx5IHRoZSBjYXBzIG9mIHRoZSBwYWQuIFRoaXMgc2hvdWxkbid0IGhhcHBl
bi4KLSAgICBpZiAoVU5MSUtFTFkoIUdTVF9CVUZGRVJfQ0FQUyhidWZmZXIpKSkgewotICAgICAg
ICBidWZmZXIgPSBwcml2LT5idWZmZXIgPSBnc3RfYnVmZmVyX21ha2VfbWV0YWRhdGFfd3JpdGFi
bGUocHJpdi0+YnVmZmVyKTsKLSAgICAgICAgZ3N0X2J1ZmZlcl9zZXRfY2Fwcyhwcml2LT5idWZm
ZXIsIEdTVF9QQURfQ0FQUyhHU1RfQkFTRV9TSU5LX1BBRChiYXNlU2luaykpKTsKLSAgICB9Ci0K
LSAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHMgPSBHU1RfQlVGRkVSX0NBUFMoYnVmZmVyKTsKLSNl
bHNlCiAgICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBzOwogICAgIC8vIFRoZSB2aWRlbyBpbmZvIHN0
cnVjdHVyZSBpcyB2YWxpZCBvbmx5IGlmIHRoZSBzaW5rIGhhbmRsZWQgYW4gYWxsb2NhdGlvbiBx
dWVyeS4KICAgICBpZiAoR1NUX1ZJREVPX0lORk9fRk9STUFUKCZwcml2LT5pbmZvKSAhPSBHU1Rf
VklERU9fRk9STUFUX1VOS05PV04pCiAgICAgICAgIGNhcHMgPSBhZG9wdEdSZWYoZ3N0X3ZpZGVv
X2luZm9fdG9fY2FwcygmcHJpdi0+aW5mbykpOwogICAgIGVsc2UKICAgICAgICAgY2FwcyA9IHBy
aXYtPmN1cnJlbnRDYXBzOwotI2VuZGlmCiAKICAgICBHc3RWaWRlb0Zvcm1hdCBmb3JtYXQ7CiAg
ICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplOwpAQCAtMjExLDE3ICsxODQsMTIgQEAgc3RhdGljIEdz
dEZsb3dSZXR1cm4gd2Via2l0VmlkZW9TaW5rUmVuZGVyKEdzdEJhc2VTaW5rKiBiYXNlU2luaywg
R3N0QnVmZmVyKiBidWYKICAgICAgICAgLy8gb25lIGZ1bmN0aW9uIGNhbGwgcGVyIHZpZGVvIHBp
eGVsIGlzIGp1c3QgdG9vIGV4cGVuc2l2ZToKICAgICAgICAgLy8gRm9yIDcyMHAvUEFMIGZvciBl
eGFtcGxlIHRoaXMgbWVhbnMgMTI4MCo3MjAqMjU9MjMwNDAwMDAKICAgICAgICAgLy8gZnVuY3Rp
b24gY2FsbHMgcGVyIHNlY29uZCEKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICAgICAg
Y29uc3QgZ3VpbnQ4KiBzb3VyY2UgPSBHU1RfQlVGRkVSX0RBVEEoYnVmZmVyKTsKLSAgICAgICAg
Z3VpbnQ4KiBkZXN0aW5hdGlvbiA9IEdTVF9CVUZGRVJfREFUQShuZXdCdWZmZXIpOwotI2Vsc2UK
ICAgICAgICAgR3N0TWFwSW5mbyBzb3VyY2VJbmZvOwogICAgICAgICBHc3RNYXBJbmZvIGRlc3Rp
bmF0aW9uSW5mbzsKICAgICAgICAgZ3N0X2J1ZmZlcl9tYXAoYnVmZmVyLCAmc291cmNlSW5mbywg
R1NUX01BUF9SRUFEKTsKICAgICAgICAgY29uc3QgZ3VpbnQ4KiBzb3VyY2UgPSBjb25zdF9jYXN0
PGd1aW50OCo+KHNvdXJjZUluZm8uZGF0YSk7CiAgICAgICAgIGdzdF9idWZmZXJfbWFwKG5ld0J1
ZmZlciwgJmRlc3RpbmF0aW9uSW5mbywgR1NUX01BUF9XUklURSk7CiAgICAgICAgIGd1aW50OCog
ZGVzdGluYXRpb24gPSBzdGF0aWNfY2FzdDxndWludDgqPihkZXN0aW5hdGlvbkluZm8uZGF0YSk7
Ci0jZW5kaWYKIAogICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHNpemUuaGVpZ2h0KCk7IHgr
KykgewogICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBzaXplLndpZHRoKCk7IHkrKykg
ewpAQCAtMjQzLDEwICsyMTEsOCBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJraXRWaWRlb1Np
bmtSZW5kZXIoR3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBHc3RCdWZmZXIqIGJ1ZgogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgICAgICBnc3Rf
YnVmZmVyX3VubWFwKGJ1ZmZlciwgJnNvdXJjZUluZm8pOwogICAgICAgICBnc3RfYnVmZmVyX3Vu
bWFwKG5ld0J1ZmZlciwgJmRlc3RpbmF0aW9uSW5mbyk7Ci0jZW5kaWYKICAgICAgICAgZ3N0X2J1
ZmZlcl91bnJlZihidWZmZXIpOwogICAgICAgICBidWZmZXIgPSBwcml2LT5idWZmZXIgPSBuZXdC
dWZmZXI7CiAgICAgfQpAQCAtMzc1LDE5ICszNDEsMTYgQEAgc3RhdGljIGdib29sZWFuIHdlYmtp
dFZpZGVvU2lua1NldENhcHMoR3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBHc3RDYXBzKiBjYXBzKQog
CiAgICAgR1NUX0RFQlVHX09CSkVDVChzaW5rLCAiQ3VycmVudCBjYXBzICUiIEdTVF9QVFJfRk9S
TUFUICIsIHNldHRpbmcgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgcHJpdi0+Y3VycmVudENhcHMs
IGNhcHMpOwogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBHc3RWaWRlb0luZm8gaW5m
bzsKICAgICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2FwcygmaW5mbywgY2FwcykpIHsKICAg
ICAgICAgR1NUX0VSUk9SX09CSkVDVChzaW5rLCAiSW52YWxpZCBjYXBzICUiIEdTVF9QVFJfRk9S
TUFULCBjYXBzKTsKICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KLSNlbmRpZgogCiAgICAg
Z3N0X2NhcHNfcmVwbGFjZSgmcHJpdi0+Y3VycmVudENhcHMsIGNhcHMpOwogICAgIHJldHVybiBU
UlVFOwogfQogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKIHN0YXRpYyBnYm9vbGVhbiB3ZWJr
aXRWaWRlb1NpbmtQcm9wb3NlQWxsb2NhdGlvbihHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdFF1
ZXJ5KiBxdWVyeSkKIHsKICAgICBHc3RDYXBzKiBjYXBzOwpAQCAtNDA2LDMwICszNjksNiBAQCBz
dGF0aWMgZ2Jvb2xlYW4gd2Via2l0VmlkZW9TaW5rUHJvcG9zZUFsbG9jYXRpb24oR3N0QmFzZVNp
bmsqIGJhc2VTaW5rLCBHc3RRdWVyeQogI2VuZGlmCiAgICAgcmV0dXJuIFRSVUU7CiB9Ci0jZW5k
aWYKLQotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotc3RhdGljIHZvaWQgd2Via2l0VmlkZW9T
aW5rTWFyc2hhbFZvaWRBbmRNaW5pT2JqZWN0KEdDbG9zdXJlKiBjbG9zdXJlLCBHVmFsdWUqLCBn
dWludCBwYXJhbWV0ZXJzTnVtYmVyLCBjb25zdCBHVmFsdWUqIHBhcmFtZXRlclZhbHVlcywgZ3Bv
aW50ZXIsIGdwb2ludGVyIG1hcnNoYWxEYXRhKQotewotICAgIHR5cGVkZWYgdm9pZCAoKm1hcnNo
YWxmdW5jX1ZPSURfX01JTklPQkpFQ1QpIChncG9pbnRlciBvYmosIGdwb2ludGVyIGFyZzEsIGdw
b2ludGVyIGRhdGEyKTsKLSAgICBtYXJzaGFsZnVuY19WT0lEX19NSU5JT0JKRUNUIGNhbGxiYWNr
OwotICAgIEdDQ2xvc3VyZSogY2Nsb3N1cmUgPSByZWludGVycHJldF9jYXN0PEdDQ2xvc3VyZSo+
KGNsb3N1cmUpOwotICAgIGdwb2ludGVyIGRhdGExLCBkYXRhMjsKLQotICAgIGdfcmV0dXJuX2lm
X2ZhaWwocGFyYW1ldGVyc051bWJlciA9PSAyKTsKLQotICAgIGlmIChHX0NDTE9TVVJFX1NXQVBf
REFUQShjbG9zdXJlKSkgewotICAgICAgICBkYXRhMSA9IGNsb3N1cmUtPmRhdGE7Ci0gICAgICAg
IGRhdGEyID0gZ192YWx1ZV9wZWVrX3BvaW50ZXIocGFyYW1ldGVyVmFsdWVzICsgMCk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgZGF0YTEgPSBnX3ZhbHVlX3BlZWtfcG9pbnRlcihwYXJhbWV0ZXJW
YWx1ZXMgKyAwKTsKLSAgICAgICAgZGF0YTIgPSBjbG9zdXJlLT5kYXRhOwotICAgIH0KLQotICAg
IGNhbGxiYWNrID0gKG1hcnNoYWxmdW5jX1ZPSURfX01JTklPQkpFQ1QpIChtYXJzaGFsRGF0YSA/
IG1hcnNoYWxEYXRhIDogY2Nsb3N1cmUtPmNhbGxiYWNrKTsKLSAgICBjYWxsYmFjayhkYXRhMSwg
Z3N0X3ZhbHVlX2dldF9taW5pX29iamVjdChwYXJhbWV0ZXJWYWx1ZXMgKyAxKSwgZGF0YTIpOwot
fQotI2VuZGlmCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF92aWRlb19zaW5rX2NsYXNzX2luaXQoV2Vi
S2l0VmlkZW9TaW5rQ2xhc3MqIGtsYXNzKQogewpAQCAtNDM4LDcgKzM3Nyw3IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF92aWRlb19zaW5rX2NsYXNzX2luaXQoV2ViS2l0VmlkZW9TaW5rQ2xhc3MqIGts
YXNzKQogICAgIEdzdEVsZW1lbnRDbGFzcyogZWxlbWVudENsYXNzID0gR1NUX0VMRU1FTlRfQ0xB
U1Moa2xhc3MpOwogCiAgICAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZShlbGVt
ZW50Q2xhc3MsIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCgmc19zaW5rVGVtcGxhdGUpKTsK
LSAgICBzZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YShlbGVtZW50Q2xhc3MsICJXZWJLaXQgdmlk
ZW8gc2luayIsICJTaW5rL1ZpZGVvIiwgIlNlbmRzIHZpZGVvIGRhdGEgZnJvbSBhIEdTdHJlYW1l
ciBwaXBlbGluZSB0byBhIENhaXJvIHN1cmZhY2UiLCAiQWxwIFRva2VyIDxhbHBAYXRva2VyLmNv
bT4iKTsKKyAgICBnc3RfZWxlbWVudF9jbGFzc19zZXRfbWV0YWRhdGEoZWxlbWVudENsYXNzLCAi
V2ViS2l0IHZpZGVvIHNpbmsiLCAiU2luay9WaWRlbyIsICJTZW5kcyB2aWRlbyBkYXRhIGZyb20g
YSBHU3RyZWFtZXIgcGlwZWxpbmUgdG8gYSBDYWlybyBzdXJmYWNlIiwgIkFscCBUb2tlciA8YWxw
QGF0b2tlci5jb20+Iik7CiAKICAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNp
emVvZihXZWJLaXRWaWRlb1NpbmtQcml2YXRlKSk7CiAKQEAgLTQ1Miw5ICszOTEsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfdmlkZW9fc2lua19jbGFzc19pbml0KFdlYktpdFZpZGVvU2lua0NsYXNz
KiBrbGFzcykKICAgICBiYXNlU2lua0NsYXNzLT5zdG9wID0gd2Via2l0VmlkZW9TaW5rU3RvcDsK
ICAgICBiYXNlU2lua0NsYXNzLT5zdGFydCA9IHdlYmtpdFZpZGVvU2lua1N0YXJ0OwogICAgIGJh
c2VTaW5rQ2xhc3MtPnNldF9jYXBzID0gd2Via2l0VmlkZW9TaW5rU2V0Q2FwczsKLSNpZmRlZiBH
U1RfQVBJX1ZFUlNJT05fMQogICAgIGJhc2VTaW5rQ2xhc3MtPnByb3Bvc2VfYWxsb2NhdGlvbiA9
IHdlYmtpdFZpZGVvU2lua1Byb3Bvc2VBbGxvY2F0aW9uOwotI2VuZGlmCiAKICAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywgUFJPUF9DQVBTLAogICAgICAg
ICBnX3BhcmFtX3NwZWNfYm94ZWQoImN1cnJlbnQtY2FwcyIsICJDdXJyZW50LUNhcHMiLCAiQ3Vy
cmVudCBjYXBzIiwgR1NUX1RZUEVfQ0FQUywgR19QQVJBTV9SRUFEQUJMRSkpOwpAQCAtNDY1LDEx
ICs0MDIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfdmlkZW9fc2lua19jbGFzc19pbml0KFdlYktp
dFZpZGVvU2lua0NsYXNzKiBrbGFzcykKICAgICAgICAgICAgIDAsIC8vIENsYXNzIG9mZnNldAog
ICAgICAgICAgICAgMCwgLy8gQWNjdW11bGF0b3IKICAgICAgICAgICAgIDAsIC8vIEFjY3VtdWxh
dG9yIGRhdGEKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICAgICAgICAgIHdlYmtpdFZp
ZGVvU2lua01hcnNoYWxWb2lkQW5kTWluaU9iamVjdCwKLSNlbHNlCiAgICAgICAgICAgICBnX2Nj
bG9zdXJlX21hcnNoYWxfZ2VuZXJpYywKLSNlbmRpZgogICAgICAgICAgICAgR19UWVBFX05PTkUs
IC8vIFJldHVybiB0eXBlCiAgICAgICAgICAgICAxLCAvLyBPbmx5IG9uZSBwYXJhbWV0ZXIKICAg
ICAgICAgICAgIEdTVF9UWVBFX0JVRkZFUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAyN2RlNTdmZDYxZDBlOWI5NGVmNDUxYTdhZDNlNjBl
NGY3NzJiYWRmLi5lMzY1MmMzNTBlM2RmYTNhZTFhNWJlNWU2NWNjYWZlZjE1MGVjMTNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9U
cmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI1LDcg
KzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBV
U0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9W
RVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUo
VklERU9fVFJBQ0spCiAKICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIgog
CkBAIC01OCw0ICs1OCw0IEBAIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OnNldFNl
bGVjdGVkKGJvb2wgc2VsZWN0ZWQpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlm
IC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNL
KSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykg
JiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRl
R1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBhZWYxZjU4ZWQ1MjU4NzQ2MjFiN2Ex
YWQyNzA1MWZkMTAzMTRkNTk4Li5lZTdhMDM4ZDBjMGRiZmIyYjM1ZmVlOWNlYTc1ZWZlZWYxMTY3
MzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAt
MjYsNyArMjYsNyBAQAogI2lmbmRlZiBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcl9oCiAjZGVm
aW5lIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyX2gKIAotI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElf
VkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxF
KFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUg
IlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaCIKQEAgLTU5LDYgKzU5LDYgQEAgcHJpdmF0ZToK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBV
U0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9W
RVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBF
TkFCTEUoVklERU9fVFJBQ0spCiAKICNlbmRpZiAvLyBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcAppbmRl
eCAwOGFjZGNhNDQ1MzA0NGYzY2FjNGRhMWFkZmNjNTE3YjhjNjAxM2FlLi44ZDVmNmM5Njg1NmEy
NTIwMzI2OGQwNzk3YmU4MDllMzQ5MjBkZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRN
ZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTIzLDcgKzIzLDggQEAKIAogI2lmIEVOQUJMRShW
SURFTykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEdTVFJFQU1FUikKIAotI2luY2x1
ZGUgIkdTdHJlYW1lclZlcnNpb25pbmcuaCIKKyNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgi
CisjaW5jbHVkZSAiR1N0cmVhbWVyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBz
cmMuaD4KQEAgLTEyMiw3ICsxMjMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfbWVkaWFfc3JjX2Ns
YXNzX2luaXQoV2ViS2l0TWVkaWFTcmNDbGFzcyoga2xhc3MpCiAKICAgICBnc3RfZWxlbWVudF9j
bGFzc19hZGRfcGFkX3RlbXBsYXRlKGVrbGFzcywgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0
KCZzcmNUZW1wbGF0ZSkpOwogCi0gICAgc2V0R3N0RWxlbWVudENsYXNzTWV0YWRhdGEoZWtsYXNz
LCAiV2ViS2l0IE1lZGlhIHNvdXJjZSBlbGVtZW50IiwgIlNvdXJjZSIsICJIYW5kbGVzIEJsb2Ig
dXJpcyIsICJTdGVwaGFuZSBKYWRhdWQgPHNqYWRhdWRAc2lpLmZyPiIpOworICAgIGdzdF9lbGVt
ZW50X2NsYXNzX3NldF9tZXRhZGF0YShla2xhc3MsICJXZWJLaXQgTWVkaWEgc291cmNlIGVsZW1l
bnQiLCAiU291cmNlIiwgIkhhbmRsZXMgQmxvYiB1cmlzIiwgIlN0ZXBoYW5lIEphZGF1ZCA8c2ph
ZGF1ZEBzaWkuZnI+Iik7CiAKICAgICAvKiBBbGxvd3Mgc2V0dGluZyB0aGUgdXJpIHVzaW5nIHRo
ZSAnbG9jYXRpb24nIHByb3BlcnR5LCB3aGljaCBpcyB1c2VkCiAgICAgICogZm9yIGV4YW1wbGUg
YnkgZ3N0X2VsZW1lbnRfbWFrZV9mcm9tX3VyaSgpICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDNmOWEwNzVjNjVmMjYzNzNjODQ5ODZlNmRhMTQ4
ZjI1NDMwZWMzMzguLmZmMTg4OWE1ZTczNzViZjExY2YwMTIzN2JlMzNlZTllMjA3MzU5ODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0yOCw3ICsy
OCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCi0jaW5j
bHVkZSAiR1N0cmVhbWVyVmVyc2lvbmluZy5oIgorI2luY2x1ZGUgIkdTdHJlYW1lclV0aWxpdGll
cy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgpAQCAtMTM4LDEwICsxMzgsNiBAQCBzdHJ1
Y3QgX1dlYktpdFdlYlNyY1ByaXZhdGUgewogICAgIGdjaGFyKiBpcmFkaW9HZW5yZTsKICAgICBn
Y2hhciogaXJhZGlvVXJsOwogICAgIGdjaGFyKiBpcmFkaW9UaXRsZTsKLQotICAgIC8vIFRSVUUg
aWYgYXBwc3JjJ3MgdmVyc2lvbiBpcyA+PSAwLjEwLjI3LCBzZWUKLSAgICAvLyBodHRwczovL2J1
Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA5NDIzCi0gICAgZ2Jvb2xlYW4gaGF2
ZUFwcFNyYzI3OwogfTsKIAogZW51bSB7CkBAIC0xNzAsOSArMTY2LDYgQEAgc3RhdGljIHZvaWQg
d2ViS2l0V2ViU3JjR2V0UHJvcGVydHkoR09iamVjdCosIGd1aW50IHByb3BlcnR5SUQsIEdWYWx1
ZSosIEdQYXJhbVMKIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiB3ZWJLaXRXZWJTcmNDaGFu
Z2VTdGF0ZShHc3RFbGVtZW50KiwgR3N0U3RhdGVDaGFuZ2UpOwogCiBzdGF0aWMgZ2Jvb2xlYW4g
d2ViS2l0V2ViU3JjUXVlcnlXaXRoUGFyZW50KEdzdFBhZCosIEdzdE9iamVjdCosIEdzdFF1ZXJ5
Kik7Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi1zdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2Vi
U3JjUXVlcnkoR3N0UGFkKiwgR3N0UXVlcnkqKTsKLSNlbmRpZgogCiBzdGF0aWMgdm9pZCB3ZWJL
aXRXZWJTcmNOZWVkRGF0YUNiKEdzdEFwcFNyYyosIGd1aW50IGxlbmd0aCwgZ3BvaW50ZXIgdXNl
ckRhdGEpOwogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjRW5vdWdoRGF0YUNiKEdzdEFwcFNyYyos
IGdwb2ludGVyIHVzZXJEYXRhKTsKQEAgLTIwNCw3ICsxOTcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3NyY19jbGFzc19pbml0KFdlYktpdFdlYlNyY0NsYXNzKiBrbGFzcykKIAogICAgIGdz
dF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUoZWtsYXNzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0KCZzcmNU
ZW1wbGF0ZSkpOwotICAgIHNldEdzdEVsZW1lbnRDbGFzc01ldGFkYXRhKGVrbGFzcywgIldlYktp
dCBXZWIgc291cmNlIGVsZW1lbnQiLCAiU291cmNlIiwgIkhhbmRsZXMgSFRUUC9IVFRQUyB1cmlz
IiwKKyAgICBnc3RfZWxlbWVudF9jbGFzc19zZXRfbWV0YWRhdGEoZWtsYXNzLCAiV2ViS2l0IFdl
YiBzb3VyY2UgZWxlbWVudCIsICJTb3VyY2UiLCAiSGFuZGxlcyBIVFRQL0hUVFBTIHVyaXMiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3Rp
YW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4iKTsKIAogICAgIC8vIGljZWNhc3Qgc3R1ZmYKQEAg
LTI3NSw5ICsyNjgsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19pbml0KFdlYktpdFdl
YlNyYyogc3JjKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgR3N0RWxlbWVudEZhY3Rv
cnkqIGZhY3RvcnkgPSBHU1RfRUxFTUVOVF9GQUNUT1JZKEdTVF9FTEVNRU5UX0dFVF9DTEFTUyhw
cml2LT5hcHBzcmMpLT5lbGVtZW50ZmFjdG9yeSk7Ci0gICAgcHJpdi0+aGF2ZUFwcFNyYzI3ID0g
Z3N0X3BsdWdpbl9mZWF0dXJlX2NoZWNrX3ZlcnNpb24oR1NUX1BMVUdJTl9GRUFUVVJFKGZhY3Rv
cnkpLCAwLCAxMCwgMjcpOwotCiAgICAgZ3N0X2Jpbl9hZGQoR1NUX0JJTihzcmMpLCBHU1RfRUxF
TUVOVChwcml2LT5hcHBzcmMpKTsKIAogCkBAIC0yODYsMTIgKzI3Niw4IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfc3JjX2luaXQoV2ViS2l0V2ViU3JjKiBzcmMpCiAKICAgICBnc3RfZWxlbWVu
dF9hZGRfcGFkKEdTVF9FTEVNRU5UKHNyYyksIHByaXYtPnNyY3BhZCk7CiAKLSNpZmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQogICAgIEdTVF9PQkpFQ1RfRkxBR19TRVQocHJpdi0+c3JjcGFkLCBHU1Rf
UEFEX0ZMQUdfTkVFRF9QQVJFTlQpOwogICAgIGdzdF9wYWRfc2V0X3F1ZXJ5X2Z1bmN0aW9uKHBy
aXYtPnNyY3BhZCwgd2ViS2l0V2ViU3JjUXVlcnlXaXRoUGFyZW50KTsKLSNlbHNlCi0gICAgZ3N0
X3BhZF9zZXRfcXVlcnlfZnVuY3Rpb24ocHJpdi0+c3JjcGFkLCB3ZWJLaXRXZWJTcmNRdWVyeSk7
Ci0jZW5kaWYKIAogICAgIGdzdF9hcHBfc3JjX3NldF9jYWxsYmFja3MocHJpdi0+YXBwc3JjLCAm
YXBwc3JjQ2FsbGJhY2tzLCBzcmMsIDApOwogICAgIGdzdF9hcHBfc3JjX3NldF9lbWl0X3NpZ25h
bHMocHJpdi0+YXBwc3JjLCBGQUxTRSk7CkBAIC0zMTQsOCArMzAwLDcgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl9zcmNfaW5pdChXZWJLaXRXZWJTcmMqIHNyYykKICAgICAvLyBsaWtlbHkgdGhh
dCBsaWJzb3VwIGFscmVhZHkgcHJvdmlkZXMgbmV3IGRhdGEgYmVmb3JlCiAgICAgLy8gdGhlIHF1
ZXVlIGlzIHJlYWxseSBlbXB0eS4KICAgICAvLyBUaGlzIG1pZ2h0IG5lZWQgdHdlYWtpbmcgZm9y
IHBvcnRzIG5vdCB1c2luZyBsaWJzb3VwLgotICAgIGlmIChwcml2LT5oYXZlQXBwU3JjMjcpCi0g
ICAgICAgIGdfb2JqZWN0X3NldChwcml2LT5hcHBzcmMsICJtaW4tcGVyY2VudCIsIDIwLCBOVUxM
KTsKKyAgICBnX29iamVjdF9zZXQocHJpdi0+YXBwc3JjLCAibWluLXBlcmNlbnQiLCAyMCwgTlVM
TCk7CiAKICAgICBnc3RfYXBwX3NyY19zZXRfY2Fwcyhwcml2LT5hcHBzcmMsIDApOwogICAgIGdz
dF9hcHBfc3JjX3NldF9zaXplKHByaXYtPmFwcHNyYywgLTEpOwpAQCAtMzUzLDExICszMzgsNyBA
QCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BJRCwgY29uc3QgR1ZhbHVlKgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2Fz
ZSBQUk9QX0xPQ0FUSU9OOgotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgICAgIGdzdF91
cmlfaGFuZGxlcl9zZXRfdXJpKHJlaW50ZXJwcmV0X2Nhc3Q8R3N0VVJJSGFuZGxlcio+KHNyYyks
IGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSksIDApOwotI2Vsc2UKLSAgICAgICAgZ3N0X3VyaV9o
YW5kbGVyX3NldF91cmkocmVpbnRlcnByZXRfY2FzdDxHc3RVUklIYW5kbGVyKj4oc3JjKSwgZ192
YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwg
cHJvcElELCBwc3BlYyk7CkBAIC00MzYsOSArNDE3LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktp
dFdlYlNyY1N0b3AoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgfQogCiAgICAgaWYgKHByaXYtPmJ1
ZmZlcikgewotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgICAgIHVubWFwR3N0QnVmZmVy
KHByaXYtPmJ1ZmZlci5nZXQoKSk7Ci0jZW5kaWYKICAgICAgICAgcHJpdi0+YnVmZmVyLmNsZWFy
KCk7CiAgICAgfQogCkBAIC02MzgsMTQgKzYxNyw2IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRX
ZWJTcmNRdWVyeVdpdGhQYXJlbnQoR3N0UGFkKiBwYWQsIEdzdE9iamVjdCogcGFyZW50LCBHc3RR
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotc3Rh
dGljIGdib29sZWFuIHdlYktpdFdlYlNyY1F1ZXJ5KEdzdFBhZCogcGFkLCBHc3RRdWVyeSogcXVl
cnkpCi17Ci0gICAgR1JlZlB0cjxHc3RFbGVtZW50PiBzcmMgPSBhZG9wdEdSZWYoZ3N0X3BhZF9n
ZXRfcGFyZW50X2VsZW1lbnQocGFkKSk7Ci0gICAgcmV0dXJuIHdlYktpdFdlYlNyY1F1ZXJ5V2l0
aFBhcmVudChwYWQsIEdTVF9PQkpFQ1Qoc3JjLmdldCgpKSwgcXVlcnkpOwotfQotI2VuZGlmCi0K
IHN0YXRpYyBib29sIHVybEhhc1N1cHBvcnRlZFByb3RvY29sKGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIHJldHVybiB1cmwuaXNWYWxpZCgpICYmICh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgp
IHx8IHVybC5wcm90b2NvbElzKCJibG9iIikpOwpAQCAtNjUzLDcgKzYyNCw2IEBAIHN0YXRpYyBi
b29sIHVybEhhc1N1cHBvcnRlZFByb3RvY29sKGNvbnN0IFVSTCYgdXJsKQogCiAvLyB1cmkgaGFu
ZGxlciBpbnRlcmZhY2UKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiBzdGF0aWMgR3N0VVJJ
VHlwZSB3ZWJLaXRXZWJTcmNVcmlHZXRUeXBlKEdUeXBlKQogewogICAgIHJldHVybiBHU1RfVVJJ
X1NSQzsKQEAgLTcwMyw1NyArNjczLDYgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1Nl
dFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyLCBjb25zdCBnY2hhciogdXJpLCBHRXIKICAgICBy
ZXR1cm4gVFJVRTsKIH0KIAotI2Vsc2UKLXN0YXRpYyBHc3RVUklUeXBlIHdlYktpdFdlYlNyY1Vy
aUdldFR5cGUodm9pZCkKLXsKLSAgICByZXR1cm4gR1NUX1VSSV9TUkM7Ci19Ci0KLXN0YXRpYyBn
Y2hhcioqIHdlYktpdFdlYlNyY0dldFByb3RvY29scyh2b2lkKQotewotICAgIHN0YXRpYyBnY2hh
ciogcHJvdG9jb2xzW10gPSB7KGdjaGFyKikgImh0dHAiLCAoZ2NoYXIqKSAiaHR0cHMiLCAoZ2No
YXIqKSAiYmxvYiIsIDAgfTsKLSAgICByZXR1cm4gcHJvdG9jb2xzOwotfQotCi1zdGF0aWMgY29u
c3QgZ2NoYXIqIHdlYktpdFdlYlNyY0dldFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyKQotewot
ICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMoaGFuZGxlcik7Ci0gICAgZ2No
YXIqIHJldDsKLQotICAgIEdNdXRleExvY2tlciBsb2NrZXIoR1NUX09CSkVDVF9HRVRfTE9DSyhz
cmMpKTsKLSAgICByZXQgPSBnX3N0cmR1cChzcmMtPnByaXYtPnVyaSk7Ci0gICAgcmV0dXJuIHJl
dDsKLX0KLQotc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1NldFVyaShHc3RVUklIYW5kbGVy
KiBoYW5kbGVyLCBjb25zdCBnY2hhciogdXJpKQotewotICAgIFdlYktpdFdlYlNyYyogc3JjID0g
V0VCS0lUX1dFQl9TUkMoaGFuZGxlcik7Ci0gICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9
IHNyYy0+cHJpdjsKLQotICAgIGlmIChHU1RfU1RBVEUoc3JjKSA+PSBHU1RfU1RBVEVfUEFVU0VE
KSB7Ci0gICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiVVJJIGNhbiBvbmx5IGJlIHNldCBp
biBzdGF0ZXMgPCBQQVVTRUQiKTsKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0KLQotICAg
IEdNdXRleExvY2tlciBsb2NrZXIoR1NUX09CSkVDVF9HRVRfTE9DSyhzcmMpKTsKLQotICAgIGdf
ZnJlZShwcml2LT51cmkpOwotICAgIHByaXYtPnVyaSA9IDA7Ci0KLSAgICBpZiAoIXVyaSkKLSAg
ICAgICAgcmV0dXJuIFRSVUU7Ci0KLSAgICBVUkwgdXJsKFVSTCgpLCB1cmkpOwotICAgIGlmICgh
dXJsSGFzU3VwcG9ydGVkUHJvdG9jb2wodXJsKSkgewotICAgICAgICBHU1RfRVJST1JfT0JKRUNU
KHNyYywgIkludmFsaWQgVVJJICclcyciLCB1cmkpOwotICAgICAgICByZXR1cm4gRkFMU0U7Ci0g
ICAgfQotCi0gICAgcHJpdi0+dXJpID0gZ19zdHJkdXAodXJsLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwotICAgIHJldHVybiBUUlVFOwotfQotI2VuZGlmCi0KIHN0YXRpYyB2b2lkIHdlYktpdFdl
YlNyY1VyaUhhbmRsZXJJbml0KGdwb2ludGVyIGdJZmFjZSwgZ3BvaW50ZXIpCiB7CiAgICAgR3N0
VVJJSGFuZGxlckludGVyZmFjZSogaWZhY2UgPSAoR3N0VVJJSGFuZGxlckludGVyZmFjZSAqKSBn
SWZhY2U7CkBAIC05MDEsMTUgKzgyMCwxMyBAQCBjaGFyKiBTdHJlYW1pbmdDbGllbnQ6OmNyZWF0
ZVJlYWRCdWZmZXIoc2l6ZV90IHJlcXVlc3RlZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6ZQogCiAg
ICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MocmVxdWVzdGVk
U2l6ZSk7CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIG1hcEdzdEJ1ZmZlcihidWZm
ZXIpOwotI2VuZGlmCiAKICAgICBHTXV0ZXhMb2NrZXIgbG9ja2VyKEdTVF9PQkpFQ1RfR0VUX0xP
Q0soc3JjKSk7CiAgICAgcHJpdi0+YnVmZmVyID0gYWRvcHRHUmVmKGJ1ZmZlcik7CiAgICAgbG9j
a2VyLnVubG9jaygpOwogCi0gICAgYWN0dWFsU2l6ZSA9IGdldEdzdEJ1ZmZlclNpemUoYnVmZmVy
KTsKKyAgICBhY3R1YWxTaXplID0gZ3N0X2J1ZmZlcl9nZXRfc2l6ZShidWZmZXIpOwogICAgIHJl
dHVybiBnZXRHc3RCdWZmZXJEYXRhUG9pbnRlcihidWZmZXIpOwogfQogCkBAIC05MzgsMTEgKzg1
NSw3IEBAIHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVSZXNwb25zZVJlY2VpdmVkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIHByaXYtPnNpemUgPSBsZW5ndGggPj0g
MCA/IGxlbmd0aCA6IDA7CiAgICAgcHJpdi0+c2Vla2FibGUgPSBsZW5ndGggPiAwICYmIGdfYXNj
aWlfc3RyY2FzZWNtcCgibm9uZSIsIHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiQWNjZXB0LVJh
bmdlcyIpLnV0ZjgoKS5kYXRhKCkpOwogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBH
c3RUYWdMaXN0KiB0YWdzID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSgpOwotI2Vsc2UKLSAgICBH
c3RUYWdMaXN0KiB0YWdzID0gZ3N0X3RhZ19saXN0X25ldygpOwotI2VuZGlmCiAgICAgU3RyaW5n
IHZhbHVlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJpY3ktbmFtZSIpOwogICAgIGlmICgh
dmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGdfZnJlZShwcml2LT5pcmFkaW9OYW1lKTsKQEAg
LTk3NywxNSArODkwLDYgQEAgdm9pZCBTdHJlYW1pbmdDbGllbnQ6OmhhbmRsZVJlc3BvbnNlUmVj
ZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgLy8gbm90aWZ5IHNp
emUvZHVyYXRpb24KICAgICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBnc3RfYXBwX3NyY19z
ZXRfc2l6ZShwcml2LT5hcHBzcmMsIGxlbmd0aCk7Ci0KLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9O
XzEKLSAgICAgICAgaWYgKCFwcml2LT5oYXZlQXBwU3JjMjcpIHsKLSAgICAgICAgICAgIGdzdF9z
ZWdtZW50X3NldF9kdXJhdGlvbigmR1NUX0JBU0VfU1JDKHByaXYtPmFwcHNyYyktPnNlZ21lbnQs
IEdTVF9GT1JNQVRfQllURVMsIGxlbmd0aCk7Ci0gICAgICAgICAgICBnc3RfZWxlbWVudF9wb3N0
X21lc3NhZ2UoR1NUX0VMRU1FTlQocHJpdi0+YXBwc3JjKSwKLSAgICAgICAgICAgICAgICBnc3Rf
bWVzc2FnZV9uZXdfZHVyYXRpb24oR1NUX09CSkVDVChwcml2LT5hcHBzcmMpLAotICAgICAgICAg
ICAgICAgICAgICBHU1RfRk9STUFUX0JZVEVTLCBsZW5ndGgpKTsKLSAgICAgICAgfQotI2VuZGlm
CiAgICAgfSBlbHNlCiAgICAgICAgIGdzdF9hcHBfc3JjX3NldF9zaXplKHByaXYtPmFwcHNyYywg
LTEpOwogCkBAIC0xMDA1LDEzICs5MDksOSBAQCB2b2lkIFN0cmVhbWluZ0NsaWVudDo6aGFuZGxl
UmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIAogICAg
IC8vIG5vdGlmeSB0YWdzCiAgICAgaWYgKGdzdF90YWdfbGlzdF9pc19lbXB0eSh0YWdzKSkKLSNp
ZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgICAgICBnc3RfdGFnX2xpc3RfdW5yZWYodGFncyk7
Ci0jZWxzZQotICAgICAgICBnc3RfdGFnX2xpc3RfZnJlZSh0YWdzKTsKLSNlbmRpZgogICAgIGVs
c2UKLSAgICAgICAgbm90aWZ5R3N0VGFnc09uUGFkKEdTVF9FTEVNRU5UKHNyYyksIHByaXYtPnNy
Y3BhZCwgdGFncyk7CisgICAgICAgIGdzdF9wYWRfcHVzaF9ldmVudChwcml2LT5zcmNwYWQsIGdz
dF9ldmVudF9uZXdfdGFnKHRhZ3MpKTsKIH0KIAogdm9pZCBTdHJlYW1pbmdDbGllbnQ6OmhhbmRs
ZURhdGFSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQpAQCAtMTAyMSwxNCAr
OTIxLDEyIEBAIHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVEYXRhUmVjZWl2ZWQoY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkKIAogICAgIEdNdXRleExvY2tlciBsb2NrZXIoR1NUX09C
SkVDVF9HRVRfTE9DSyhzcmMpKTsKIAotICAgIEdTVF9MT0dfT0JKRUNUKHNyYywgIkhhdmUgJWQg
Ynl0ZXMgb2YgZGF0YSIsIHByaXYtPmJ1ZmZlciA/IGdldEdzdEJ1ZmZlclNpemUocHJpdi0+YnVm
ZmVyLmdldCgpKSA6IGxlbmd0aCk7CisgICAgR1NUX0xPR19PQkpFQ1Qoc3JjLCAiSGF2ZSAlbGQg
Ynl0ZXMgb2YgZGF0YSIsIHByaXYtPmJ1ZmZlciA/IGdzdF9idWZmZXJfZ2V0X3NpemUocHJpdi0+
YnVmZmVyLmdldCgpKSA6IGxlbmd0aCk7CiAKICAgICBBU1NFUlQoIXByaXYtPmJ1ZmZlciB8fCBk
YXRhID09IGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKHByaXYtPmJ1ZmZlci5nZXQoKSkpOwogCi0j
aWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBpZiAocHJpdi0+YnVmZmVyKQogICAgICAgICB1
bm1hcEdzdEJ1ZmZlcihwcml2LT5idWZmZXIuZ2V0KCkpOwotI2VuZGlmCiAKICAgICBpZiAocHJp
di0+c2Vla0lEKSB7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiU2VlayBpbiBwcm9n
cmVzcywgaWdub3JpbmcgZGF0YSIpOwpAQCAtMTA0MSw3ICs5MzksNyBAQCB2b2lkIFN0cmVhbWlu
Z0NsaWVudDo6aGFuZGxlRGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgp
CiAgICAgaWYgKCFwcml2LT5idWZmZXIpCiAgICAgICAgIHByaXYtPmJ1ZmZlciA9IGFkb3B0R1Jl
ZihjcmVhdGVHc3RCdWZmZXJGb3JEYXRhKGRhdGEsIGxlbmd0aCkpOwogICAgIGVsc2UKLSAgICAg
ICAgc2V0R3N0QnVmZmVyU2l6ZShwcml2LT5idWZmZXIuZ2V0KCksIGxlbmd0aCk7CisgICAgICAg
IGdzdF9idWZmZXJfc2V0X3NpemUocHJpdi0+YnVmZmVyLmdldCgpLCBzdGF0aWNfY2FzdDxnc3Np
emU+KGxlbmd0aCkpOwogCiAgICAgR1NUX0JVRkZFUl9PRkZTRVQocHJpdi0+YnVmZmVyLmdldCgp
KSA9IHByaXYtPm9mZnNldDsKICAgICBpZiAocHJpdi0+cmVxdWVzdGVkT2Zmc2V0ID09IHByaXYt
Pm9mZnNldCkKQEAgLTEwNTgsMTEgKzk1Niw3IEBAIHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpoYW5k
bGVEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKICAgICBsb2NrZXIu
dW5sb2NrKCk7CiAKICAgICBHc3RGbG93UmV0dXJuIHJldCA9IGdzdF9hcHBfc3JjX3B1c2hfYnVm
ZmVyKHByaXYtPmFwcHNyYywgcHJpdi0+YnVmZmVyLmxlYWtSZWYoKSk7Ci0jaWZkZWYgR1NUX0FQ
SV9WRVJTSU9OXzEKICAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LICYmIHJldCAhPSBHU1RfRkxP
V19FT1MpCi0jZWxzZQotICAgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0sgJiYgcmV0ICE9IEdTVF9G
TE9XX1VORVhQRUNURUQpCi0jZW5kaWYKICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc3JjLCBD
T1JFLCBGQUlMRUQsICgwKSwgKDApKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXgg
NjUyOWY3N2E4ZTk3OWUyNDZiMTc3OTE5NGEzZTM2OWU5ZTIzZTczMy4uNDEwYjVhZGQ2ZTc2OTVj
MDA5YWQzMzIxNzlmYTdlNDk5ZTU0OWE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0x
MTMsNyArMTEzLDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBlZmwvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAogICAgIGVmbC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEVmbC5jcHAKICAgICBlZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dEVmbC5jcHAKLSAgICBlZmwvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlckVmbC5jcHAKICAgICBlZmwvV2ViQ29yZVN1cHBvcnQvSWNvbkRhdGFiYXNlQ2xp
ZW50RWZsLmNwcAogICAgIGVmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3Bw
CiAgICAgZWZsL1dlYkNvcmVTdXBwb3J0L05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEVmbC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDhkYzI1NTJlMDYwNDlkMWU3MmUxNDQ3NDA2YmViYzgwOTdlMTZmMWYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckVmbC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwxOTMgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSWdh
bGlhIFMuTAotICogIENvcHlyaWdodCAoQykgMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgot
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShWSURFTykgJiYgIWRlZmlu
ZWQoR1NUX0FQSV9WRVJTSU9OXzEpCi0KLSNpbmNsdWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyRWZsLmgiCi0KLSNpbmNsdWRlICJNZWRpYVBsYXllci5oIgotI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7
Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpCi0gICAgOiBtX2h1ZFRpbWVvdXRJZCgwKQotICAg
ICwgbV9wcm9ncmVzc0JhclVwZGF0ZUlkKDApCi0gICAgLCBtX3NlZWtMb2NrKGZhbHNlKQotICAg
ICwgbV93aW5kb3coMCkKLSAgICAsIG1faHVkV2luZG93KDApCi17Ci19Ci0KLUZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6On5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCkKLXsKLSAgICBleGl0
RnVsbHNjcmVlbigpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldE1l
ZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi17Ci0gICAgaWYgKG1l
ZGlhRWxlbWVudCA9PSBtX21lZGlhRWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9t
ZWRpYUVsZW1lbnQgPSBtZWRpYUVsZW1lbnQ7Ci0gICAgaWYgKCFtX21lZGlhRWxlbWVudCkgewot
ICAgICAgICAvLyBDYW4ndCBkbyBmdWxsLXNjcmVlbiwganVzdCBnZXQgb3V0Ci0gICAgICAgIGV4
aXRGdWxsc2NyZWVuKCk7Ci0gICAgfQotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6OnNob3dIdWQoYm9vbCAvKmF1dG9IaWRlKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpoaWRlSHVkKCkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVu
dGVyRnVsbHNjcmVlbigpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjp1cGRhdGVIdWRQb3NpdGlvbigpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpleGl0T25V
c2VyUmVxdWVzdCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpleGl0RnVsbHNjcmVlbigpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotYm9vbCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjYW5QbGF5KCkgY29u
c3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9p
ZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwbGF5KCkKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBhdXNlKCkKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6
OnBsYXlTdGF0ZUNoYW5nZWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dG9nZ2xlUGxheSgpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotZmxvYXQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dm9sdW1lKCkg
Y29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi1ib29s
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om11dGVkKCkgY29uc3QKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpzZXRWb2x1bWUoZmxvYXQgLyp2b2x1bWUqLykKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnZvbHVtZUNoYW5n
ZWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6bXV0ZUNoYW5nZWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LWZsb2F0IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKCkgY29uc3QKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi12b2lkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKGZsb2F0IC8qdmFsdWUqLykKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1mbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
OjpkdXJhdGlvbigpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
MDsKLX0KLQotZmxvYXQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6cGVyY2VudExvYWRlZCgp
IGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9p
ZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpiZWdpblNlZWsoKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZG9TZWVrKCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6OmVuZFNlZWsoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLWJvb2wgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dXBkYXRlSHVkUHJvZ3Jlc3NCYXIoKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OmNyZWF0ZUh1ZCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZSBiL1Nv
dXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IDhlNTA5Y2FlOGI0NTg0ZjQ2YmMwNjUx
NTUzM2ZjODRiNzViMTdkMGUuLjhhNTRlNGQxZGZlNjY3MDZhZjY1NGFlN2NmZWY5ODVkZmFhMzg4
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisrKyBiL1NvdXJj
ZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCkBAIC0xNTgsNyArMTU4LDcgQEAgZW5kaWYgKCkKIGlm
IChFTkFCTEVfVklERU8gT1IgRU5BQkxFX1dFQl9BVURJTykKICAgICBzZXQoR1NUUkVBTUVSX0NP
TVBPTkVOVFMgYXBwIHBidXRpbHMpCiAgICAgc2V0KFdURl9VU0VfR1NUUkVBTUVSIDEpCi0gICAg
YWRkX2RlZmluaXRpb25zKC1EV1RGX1VTRV9HU1RSRUFNRVI9MSAtREdTVF9BUElfVkVSU0lPTl8x
PTEpCisgICAgYWRkX2RlZmluaXRpb25zKC1EV1RGX1VTRV9HU1RSRUFNRVI9MSkKIAogICAgIGlm
IChFTkFCTEVfVklERU8pCiAgICAgICAgIGxpc3QoQVBQRU5EIEdTVFJFQU1FUl9DT01QT05FTlRT
IHZpZGVvKQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGZiOWNjNDMz
ZjFiYzEwMWI0MDRmMjE0ZjkyN2RmYjdhOWU3NGQ1NjYuLmY2MzkxZmIzMTNiMmM4MjhiN2RlMDZm
N2MxZTRiYTVjZDA0YzMwMzkgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMS0yMSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxj
YWx2YXJpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIFJlbW92ZSAwLjEwIGNv
ZGVwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjQ1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOiBSZW1vdmVkIEdTVF9BUElfVkVSU0lPTl8x
CisgICAgICAgIGRlZmluaXRpb24uCisKIDIwMTMtMTEtMDYgIEtyenlzenRvZiBDemVjaCAgPGsu
Y3plY2hAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gQ2hhbmdlIHJlcXVpcmVkIHZlcnNp
b24gb2YgQVRLIHRvIDIuMTAuMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217635</attachid>
            <date>2013-11-21 17:32:13 -0800</date>
            <delta_ts>2013-11-22 00:59:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124534-20131122023211.patch</filename>
            <type>text/plain</type>
            <size>114005</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2ZGU1N2U0MjE2NjM5MDEyYzhiMWFi
NjI2NWY1ODgwMmQ2OTZlNjMuLjBkNTc0ZTFhYzQwOGExNTJiOTE2ODNkOGYyZjQ4NTFhZjM3MTdj
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTEtMjEgIFhhYmllciBSb2RyaWd1ZXogQ2Fs
dmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBSZW1vdmUg
MC4xMCBjb2RlcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI0NTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm0uaDogUmVtb3ZlZCBtYWNybyBmb3IgR1N0cmVhbWVyIDEuMCBh
cyBpdCBpcyB0aGUKKyAgICAgICAgb25seSBjb2RlcGF0aCBub3cuCisKIDIwMTMtMTEtMTYgIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHVpbnQ4X3Qg
dmVjdG9ycyBmb3IgV2ViQ3J5cHRvIGRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MWEwZWU2ZWY3NjE3MzNl
NGNjYjYwMDJhNDVkZDdkZWIwM2NkNDkzLi5hZmNhNzg1MTQ5ZmZkODZmOWU4MGE3NGExNWMyNTc5
NzRmOGJjNjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYwIEBACisyMDEzLTExLTIxICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gUmVtb3ZlIDAuMTAgY29kZXBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFsbCBHU3RyZWFtZXIgcG9ydHMgYXJlIHVzaW5nIDEuMCBu
b3cgc28gd2UgcmVtb3ZlIHRoZSAwLjEwCisgICAgICAgIGNvZGVwYXRoLgorCisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAg
ICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmls
dGVyczogUmVtb3ZlZAorICAgICAgICBHU3RyZWFtZXJWZXJzaW9uaW5nLgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKG9uR1N0cmVhbWVyV2F2cGFyc2VQYWRBZGRlZENhbGxiYWNrKTogUmVtb3ZlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIpOgorICAgICAgICBSZXBsYWNlZCB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyBh
bmQgcmVtb3ZlZCAwLjEwIGNvZGVwYXRoLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lcjo6fkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIpOgorICAgICAgICBSZXBs
YWNlZCB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvcHlHc3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6
b25BcHBzaW5rUHVsbFJlcXVpcmVkQ2FsbGJhY2spOiBSZW1vdmVkIDAuMTAgY29kZXBhdGguCisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6On5BdWRpb0ZpbGVSZWFkZXIpOiBSZXBs
YWNlZAorICAgICAgICB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyBhbmQgcmVtb3ZlZCAwLjEwIGNv
ZGVwYXRoLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVTYW1wbGUp
OiBMZWZ0IGFzIG9ubHkgY29kZXBhdGguCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFk
ZXI6OmhhbmRsZUJ1ZmZlcik6IFJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVS
ZWFkZXI6OmhhbmRsZU5ld0RlaW50ZXJsZWF2ZVBhZCk6IFJlbW92ZWQgMC4xMAorICAgICAgICBj
b2RlcGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6cGx1Z0RlaW50ZXJs
ZWF2ZSk6IFJlcGxhY2VkCisgICAgICAgIGdldEdzdEF1ZGlvQ2Fwcy4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlQXVkaW9Gb3JCdXNDcmVhdGlvbik6IFJlcGxhY2Vk
CisgICAgICAgIHdlYmtpdEdzdFBpcGVsaW5lR2V0QnVzLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMpOiBSZW1vdmVkIDAuMTAgY29kZXBhdGguCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVy
LmNwcDoKKyAgICAgICAgKGdldEdTdHJlYW1lck1vbm9BdWRpb0NhcHMpOgorICAgICAgICAod2Vi
S2l0V2ViQXVkaW9HU3RyZWFtZXJDaGFubmVsUG9zaXRpb24pOiBSZW1vdmVkIDAuMTAgY29kZXBh
dGguCisgICAgICAgICh3ZWJraXRfd2ViX2F1ZGlvX3NyY19jbGFzc19pbml0KTogUmVwbGFjZWQK
KyAgICAgICAgc2V0R3N0RWxlbWVudENsYXNzTWV0YWRhdGEuCisgICAgICAgICh3ZWJraXRfd2Vi
X2F1ZGlvX3NyY19pbml0KToKKyAgICAgICAgKHdlYktpdFdlYkF1ZGlvU3JjQ29uc3RydWN0ZWQp
OgorICAgICAgICAod2ViS2l0V2ViQXVkaW9TcmNGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJLaXRX
ZWJBdWRpb1NyY0xvb3ApOiBSZW1vdmVkIDAuMTAgY29kZXBhdGguCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuaDoKKyAgICAgICAgUmVtb3ZlZCBjaGVja3MgZm9yIDEuMCBhcyBpdCBpcyB0aGUgb25s
eSBjb2RlcGF0aCBub3cuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dS
ZWZQdHJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV1RGOjpHc3RFbGVtZW50KToKKyAgICAgICAg
KFdURjo6R3N0UGFkKToKKyAgICAgICAgKFdURjo6R3N0UGFkVGVtcGxhdGUpOgorICAgICAgICAo
V1RGOjpHc3RUYXNrKToKKyAgICAgICAgKFdURjo6R3N0QnVzKToKKyAgICAgICAgKFdURjo6R3N0
RWxlbWVudEZhY3RvcnkpOgorICAgICAgICAoV1RGOjphZG9wdEdSZWYpOiBSZXBsYWNlZCBnc3RP
YmplY3RJc0Zsb2F0aW5nLgorICAgICAgICAoV1RGOjpyZWZHUmVmKTogUmVwbGFjZWQgd2Via2l0
R3N0T2JqZWN0UmVmU2luay4KKyAgICAgICAgKFdURjo6R3N0VGFnTGlzdCk6CisgICAgICAgIChX
VEY6OkdzdFNhbXBsZSk6IFJlbW92ZWQgY2hlY2tzIGZvciAxLjAgYXMgaXQgaXMgdGhlIG9ubHkK
KyAgICAgICAgY29kZXBhdGggbm93LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HUmVmUHRyR1N0cmVhbWVyLmg6IFJlbW92ZWQgY2hlY2tzCisgICAgICAgIGZvciAxLjAg
YXMgaXQgaXMgdGhlIG9ubHkgY29kZXBhdGggbm93LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwOgorICAgICAgICAod2Via2l0R3N0
R2hvc3RQYWRGcm9tU3RhdGljVGVtcGxhdGUpOgorICAgICAgICAoZ2V0VmlkZW9TaXplQW5kRm9y
bWF0RnJvbUNhcHMpOgorICAgICAgICAoY3JlYXRlR3N0QnVmZmVyKToKKyAgICAgICAgKGNyZWF0
ZUdzdEJ1ZmZlckZvckRhdGEpOgorICAgICAgICAoZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIpOgor
ICAgICAgICAobWFwR3N0QnVmZmVyKToKKyAgICAgICAgKHVubWFwR3N0QnVmZmVyKTogTW92ZWQg
aGVyZSBmcm9tIEdzdFZlcnNpb25pbmcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oOgorICAgICAgICAod2Via2l0R3N0Q2hlY2tWZXJz
aW9uKTogTW92ZWQgaGVyZSBmcm9tIEdzdFZlcnNpb25pbmcuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmg6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0
cmVhbWVyLmg6IFJlbW92ZWQgY2hlY2tzIGZvcgorICAgICAgICAxLjAgYXMgaXQgaXMgdGhlIG9u
bHkgY29kZXBhdGggbm93LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lckNhaXJvLmNwcDoKKyAgICAgICAgKEltYWdlR1N0cmVhbWVyOjpJbWFnZUdT
dHJlYW1lcik6IFJlbW92ZWQgMC4xMCBjb2RlcGF0aC4KKyAgICAgICAgKEltYWdlR1N0cmVhbWVy
Ojp+SW1hZ2VHU3RyZWFtZXIpOiBSZW1vdmVkIGNoZWNrcyBmb3IgMS4wIGFzIGl0IGlzCisgICAg
ICAgIHRoZSBvbmx5IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgIFJlbW92ZWQgY2hlY2tzIGZv
ciAxLjAgYXMgaXQgaXMgdGhlIG9ubHkgY29kZXBhdGggbm93LgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0QXVkaW9TdHJlYW1Qcm9wZXJ0aWVzQ2FsbGJhY2spOiBSZW1vdmVk
IDAuMTAgY29kZXBhdGguCisgICAgICAgIChXZWJDb3JlOjptZWRpYVBsYXllclByaXZhdGVUZXh0
Q2hhbmdlZENhbGxiYWNrKTogUmVtb3ZlZCBjaGVja3MKKyAgICAgICAgZm9yIDEuMCBhcyBpdCBp
cyB0aGUgb25seSBjb2RlcGF0aCBub3cuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmlzQXZhaWxhYmxlKTogUmVwbGFjZWQKKyAgICAgICAgZ1BsYXliaW5O
YW1lLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgUmVtb3ZlZCBjaGVja3MgZm9yIDEu
MCBhbmQgcmVwbGFjZWQgd2Via2l0R3N0UGlwZWxpbmVHZXRCdXMuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmR1cmF0aW9uKTogUmVtb3ZlZCAwLjEwCisg
ICAgICAgIGNvZGVwYXRoLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRleHRDaGFuZ2VkKToKKyAgICAgICAg
UmVtb3ZlZCBjaGVja3MgZm9yIDEuMCBhcyBpdCBpcyB0aGUgb25seSBjb2RlcGF0aCBub3cuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmJ1ZmZlcmVkKTog
UmVwbGFjZWQKKyAgICAgICAgZ1BlcmNlbnRNYXguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOiBSZW1vdmVkCisgICAgICAgIDAu
MTAgY29kZXBhdGguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OnByb2Nlc3NUYWJsZU9mQ29udGVudHMpOgorICAgICAgICBSZW1vdmVkIGNoZWNrcyBmb3Ig
MS4wIGFzIGl0IGlzIHRoZSBvbmx5IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxCeXRlcyk6IFJlbW92ZWQgMC4xMAorICAg
ICAgICBjb2RlcGF0aC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y3JlYXRlR1NUUGxheUJpbik6IFJlcGxhY2VkCisgICAgICAgIGdQbGF5YmluTmFtZSBh
bmQgd2Via2l0R3N0UGlwZWxpbmVHZXRCdXMgYW5kIHJlbW92ZWQgY2hlY2tzIGZvcgorICAgICAg
ICAxLjAuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICBSZW1vdmVkIGNoZWNrcyBmb3IgMS4wIGFzIGl0
IGlzIHRoZSBvbmx5IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnBhaW50KTogUmVtb3ZlZCAwLjEwCisgICAgICAgIGNvZGVwYXRoLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dFNpbmtHU3RyZWFt
ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0U2lua0dT
dHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5oOiBSZW1vdmVkCisgICAgICAgIGNoZWNr
cyBmb3IgMS4wIGFzIGl0IGlzIHRoZSBvbmx5IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KHdlYmtpdFZpZGVvU2lua1JlbmRlcik6CisgICAgICAgICh3ZWJraXRWaWRlb1NpbmtTZXRDYXBz
KTogUmVtb3ZlZCAwLjEwIGNvZGVwYXRoLgorICAgICAgICAod2Via2l0VmlkZW9TaW5rUHJvcG9z
ZUFsbG9jYXRpb24pOiBSZW1vdmVkIGNoZWNrcyBmb3IgMS4wIGFzIGl0CisgICAgICAgIGlzIHRo
ZSBvbmx5IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKHdlYmtpdFZpZGVvU2lua01hcnNoYWxWb2lk
QW5kTWluaU9iamVjdCk6IFJlbW92ZWQgYXMgaXQgd2FzIDAuMTAuCisgICAgICAgICh3ZWJraXRf
dmlkZW9fc2lua19jbGFzc19pbml0KTogUmVtb3ZlZCAwLjEwIGNvZGVwYXRoIGFuZCByZXBsYWNl
ZAorICAgICAgICBzZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lci5oOgorICAgICAgICBSZW1vdmVkIGNoZWNrcyBmb3IgMS4wIGFzIGl0IGlzIHRoZSBvbmx5
IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2Via2l0X21lZGlhX3NyY19j
bGFzc19pbml0KTogUmVwbGFjZWQKKyAgICAgICAgc2V0R3N0RWxlbWVudENsYXNzTWV0YWRhdGEu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHA6CisgICAgICAgIFJlbW92ZWQgMC4xMCBjb2RlcGF0aC4KKyAgICAgICAgKHdl
YktpdFdlYlNyY1F1ZXJ5KTogUmVtb3ZlZCBhcyBpdCB3YXMgMC4xMCBvbmx5LgorICAgICAgICAo
dm9pZCB3ZWJraXRfd2ViX3NyY19jbGFzc19pbml0KTogUmVwbGFjZWQgc2V0R3N0RWxlbWVudENs
YXNzTWV0YWRhdGEuCisgICAgICAgICh3ZWJraXRfd2ViX3NyY19pbml0KTogUmVtb3ZlZCBoYXZl
QXBwU3JjMjcgcHJpdmF0ZSBhdHRyaWJ1dGUgYW5kCisgICAgICAgIDAuMTAgY29kZXBhdGguCisg
ICAgICAgICh3ZWJLaXRXZWJTcmNTdG9wKTogUmVtb3ZlZCBjaGVja3MgZm9yIDEuMCBhcyBpdCBp
cyB0aGUgb25seQorICAgICAgICBjb2RlcGF0aCBub3cuCisgICAgICAgICh3ZWJLaXRXZWJTcmNT
ZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNVcmlHZXRUeXBlKToKKyAgICAgICAg
KHdlYktpdFdlYlNyY0dldFByb3RvY29scyk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNHZXRVcmkp
OgorICAgICAgICAod2ViS2l0V2ViU3JjU2V0VXJpKTogUmVtb3ZlZCAwLjEwIGNvZGVwYXRoLgor
ICAgICAgICAoU3RyZWFtaW5nQ2xpZW50OjpjcmVhdGVSZWFkQnVmZmVyKTogUmVtb3ZlZCBjaGVj
a3MgZm9yIDEuMCBhbmQKKyAgICAgICAgcmVwbGFjZWQgZ2V0R3N0QnVmZmVyU2l6ZS4KKyAgICAg
ICAgKFN0cmVhbWluZ0NsaWVudDo6aGFuZGxlUmVzcG9uc2VSZWNlaXZlZCk6IFJlbW92ZWQgMC4x
MCBjb2RlcGF0aAorICAgICAgICBhbmQgcmVwbGFjZWQgbm90aWZ5R3N0VGFnc09uUGFkLgorICAg
ICAgICAoU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVEYXRhUmVjZWl2ZWQpOiBSZW1vdmVkIDAuMTAg
Y29kZXBhdGggYW5kCisgICAgICAgIHJlcGxhY2VkIHNldEdzdEJ1ZmZlclNpemUgYW5kIGdzdF9i
dWZmZXJfZ2V0X3NpemUuCisKIDIwMTMtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBHT2JqZWN0IERP
TSBzeW1ib2xzIGZpbGUgYWZ0ZXIgcjE1ODc2MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjhiNGMyODU1ZDNmMzI4
YzQ1ZjdlYTlkZmQ3MmRjNDUxNzdlYTgzZi4uMDRjNTI4MTEyZDI0YjE1ODZjNTA5MmUwODQ4NTc3
MWMxZDZhNjVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMS0yMSAgWGFiaWVy
IFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3Ry
ZWFtZXJdIFJlbW92ZSAwLjEwIGNvZGVwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBSZW1vdmVkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJFZmwuY3BwLgorCiAyMDEzLTExLTEzICBKb3NlcGggUGVjb3Jhcm8g
IDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCByb2xsb3V0IG9mIHIx
NTkyNzEsIGJyb2tlIE1vdW50YWluIExpb24gYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggYmMw
N2I3NjIwNWQzZDYwYjNmODg5ODFlMGEwYTg1MzgzYTk5MGZhMC4uNjJlNTBmYzUyZTM3Y2RjMDdj
ZDQzMGM1NzMzOTZhYWY5MDVkY2U2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDEzLTExLTIxICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gUmVtb3ZlIDAuMTAgY29kZXBhdGgKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDUzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckVmbC5jcHA6IFJlbW92ZWQuCisKIDIwMTMtMTEtMTUg
IEFsYmVydG8gR2FyY2lhICA8YmVydG9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbRUZMXSBMZWFr
IGluIGV3a19mcmFtZV9jZXJ0aWZpY2F0ZV9zdGF0dXNfZ2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGIy
YjI0Nzk0NGM5ZjEwN2QxZjA5MjU2OTEzMmU2YmY4YjFmNGJiM2QuLmViNDdhYWNjZmIzOGQ2MmNk
ZTMwYmUzNTMzYzcyN2ExNGFhNThlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtNDk0LDcgKzQ5NCw2IEBA
CiAjZGVmaW5lIFdURl9VU0VfU09VUCAxCiAjZGVmaW5lIFdURl9VU0VfV0VCUCAxCiAjZGVmaW5l
IEVOQUJMRV9HTE9CQUxfRkFTVE1BTExPQ19ORVcgMAotI2RlZmluZSBHU1RfQVBJX1ZFUlNJT05f
MSAxCiAjZW5kaWYKIAogLyogT24gV2luZG93cywgdXNlIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVy
IGJ5IGRlZmF1bHQgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDNhNGE4NWEz
NWJmZTY0NjBmZThlZDNjZDBiMTQzYTI1Y2ZhZDUzOTEuLmIwMmZmZDRiMzc1Mzc3NjU4NzdiMWIw
N2EzMDU0MzNmY2E1YjgyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjMx
OCw4ICs2MzE4LDYgQEAgcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJV
dGlsaXRpZXMuaCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclZlcnNpb25pbmcuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1FZmwuY21ha2UKaW5kZXggMTJkOGUwYmEwN2RjNzlkZjJhMDVhYTE3NTY4M2ZiZjM3MDk4
NWUyZi4uMWU5OTU4ODc2ZjA4MzkyNjcwOTZhMDYyNDQ2NjFjNzA2Yjc2MjkxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTEyNiw3ICsxMjYsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJH
U3RyZWFtZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0
aWxpdGllcy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVy
c2lvbmluZy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFt
ZXJDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpp
bmRleCAxOTdlMWQ2Y2IxZGFkZDI2N2ZjMmUyMDlmYzI3ZGYyMjMyMzI2YzRhLi41NTc3NzQyYTVh
MjU5MWQ0MmQ2YjEzZmVjODRmNGYxMGU3M2Q0NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFr
ZQpAQCAtOTksNyArOTksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwCi0gICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCmluZGV4IDNlMzhkNzMwZDA2ZjQ2YmFhMzkwMDY2NGU2ZWY3OWVlZWQ5NDBjODQuLjg3Njhi
MzE3ZmM2YTViYjA3MWM5MDdmMDQyMTg3MzIzMTNhN2M3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtNzI3NSwxNiArNzI3NSw2IEBA
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgog
ICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcZ3N0cmVhbWVyXEdTdHJlYW1lclZlcnNpb25pbmcuY3BwIj4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyXEltYWdlR1N0cmVhbWVyQ2Fpcm8u
Y3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE5
MDE2LDcgKzE5MDA2LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXGdzdHJlYW1lclxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyXEdSZWZQdHJH
U3RyZWFtZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXGdzdHJlYW1lclxHU3RyZWFtZXJVdGlsaXRpZXMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1lclxHU3RyZWFtZXJWZXJzaW9uaW5n
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xnc3Ry
ZWFtZXJcSW1hZ2VHU3RyZWFtZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1lclxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXGdzdHJlYW1lclxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKaW5kZXggYTM5NWRhYjliNjM2MjY3YzFhOGE2YmFiY2M1YTFjMDYyZWNmNTJjYy4uOGQ5
NDM1ZmM0MmI3N2E1MDgxMzBkMmZjZTNmNDcyZGI2OWVjNWVhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAt
NzA1Nyw5ICs3MDU3LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXGdzdHJlYW1lclxHU3RyZWFtZXJVdGlsaXRpZXMuY3BwIj4KICAgICAgIDxGaWx0ZXI+
cGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0g
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xnc3RyZWFtZXJcR1N0
cmVhbWVyVmVyc2lvbmluZy5jcHAiPgotICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1xn
c3RyZWFtZXI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1lclxJbWFnZUdTdHJlYW1lckNhaXJvLmNw
cCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1lcjwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgpAQCAtMTQ4ODIsOSArMTQ4NzksNiBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyXEdTdHJlYW1lclV0aWxpdGll
cy5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xnc3RyZWFtZXJcR1N0cmVhbWVyVmVyc2lvbmluZy5oIj4KLSAgICAgIDxGaWx0ZXI+
cGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xnc3RyZWFtZXJcSW1h
Z2VHU3RyZWFtZXIuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1l
cjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCmluZGV4IGNjZjA0NTA3MmJlMGI5NzQ3ZDhiN2NmNmI4N2MyYmViYjM4NWE2
ZTQuLmRkMjQ0YmExNjkxZTE2ZDdjNDQxNmE5MTc1MTk2MzhhMmZhZmI0MzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNs
dWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJW
ZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIldlYktpdFdlYkF1
ZGlvU291cmNlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgpAQCAtNzAsMTMgKzY5
LDYgQEAgdW5zaWduZWQgbG9uZyBBdWRpb0Rlc3RpbmF0aW9uOjptYXhDaGFubmVsQ291bnQoKQog
ICAgIHJldHVybiAwOwogfQogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi1zdGF0aWMgdm9p
ZCBvbkdTdHJlYW1lcldhdnBhcnNlUGFkQWRkZWRDYWxsYmFjayhHc3RFbGVtZW50KiwgR3N0UGFk
KiBwYWQsIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIqIGRlc3RpbmF0aW9uKQotewotICAgIGRl
c3RpbmF0aW9uLT5maW5pc2hCdWlsZGluZ1BpcGVsaW5lQWZ0ZXJXYXZQYXJzZXJQYWRSZWFkeShw
YWQpOwotfQotI2VuZGlmCi0KIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGlu
YXRpb25HU3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgZmxvYXQgc2FtcGxlUmF0
ZSkKICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgLCBtX3JlbmRlckJ1cyhBdWRpb0J1
czo6Y3JlYXRlKDIsIGZyYW1lc1RvUHVsbCwgZmFsc2UpKQpAQCAtODQsNyArNzYsNyBAQCBBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKEF1ZGlvSU9D
YWxsYmFjayYgY2FsbGJhY2ssCiAgICAgLCBtX2lzUGxheWluZyhmYWxzZSkKIHsKICAgICBtX3Bp
cGVsaW5lID0gZ3N0X3BpcGVsaW5lX25ldygicGxheSIpOwotICAgIEdSZWZQdHI8R3N0QnVzPiBi
dXMgPSB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUobV9waXBlbGluZSkpOwor
ICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMo
R1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUpKSk7CiAgICAgQVNTRVJUKGJ1cyk7CiAgICAgZ3N0X2J1
c19hZGRfc2lnbmFsX3dhdGNoKGJ1cy5nZXQoKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChidXMu
Z2V0KCksICJtZXNzYWdlIiwgR19DQUxMQkFDSyhtZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKQEAg
LTEwMiwyMSArOTQsMTYgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAogICAgIGlmICghbV93YXZQ
YXJzZXJBdmFpbGFibGUpCiAgICAgICAgIHJldHVybjsKIAotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJ
T05fMQotICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2F2UGFyc2VyLCAicGFkLWFkZGVkIiwgR19DQUxM
QkFDSyhvbkdTdHJlYW1lcldhdnBhcnNlUGFkQWRkZWRDYWxsYmFjayksIHRoaXMpOwotI2VuZGlm
CiAgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKG1fcGlwZWxpbmUpLCB3ZWJraXRBdWRpb1Ny
Yywgd2F2UGFyc2VyLCBOVUxMKTsKICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbCh3ZWJr
aXRBdWRpb1NyYywgInNyYyIsIHdhdlBhcnNlciwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tf
Tk9USElORyk7CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIEdSZWZQdHI8R3N0UGFk
PiBzcmNQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQod2F2UGFyc2Vy
LCAic3JjIikpOwogICAgIGZpbmlzaEJ1aWxkaW5nUGlwZWxpbmVBZnRlcldhdlBhcnNlclBhZFJl
YWR5KHNyY1BhZC5nZXQoKSk7Ci0jZW5kaWYKIH0KIAogQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6fkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoKQogewotICAgIEdSZWZQdHI8R3N0QnVzPiBi
dXMgPSB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUobV9waXBlbGluZSkpOwor
ICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMo
R1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUpKSk7CiAgICAgQVNTRVJUKGJ1cyk7CiAgICAgZ19zaWdu
YWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKGJ1cy5nZXQoKSwgcmVpbnRlcnByZXRfY2Fz
dDxncG9pbnRlcj4obWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7CiAgICAgZ3N0X2J1c19yZW1vdmVf
c2lnbmFsX3dhdGNoKGJ1cy5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFt
ZXIuY3BwCmluZGV4IGNiNTVmYzdjODQ4NjM5MTA2NTBmZWY0YjMwYWZjMGYyNWJjMDNlYmUuLjY3
MmFlYzFhZTA5ZDdiYTg1M2FhNTI0NWE4OTgyMDEyMmMxYzlmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAiQXVk
aW9GaWxlUmVhZGVyLmgiCiAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2luY2x1ZGUgIkdTdHJl
YW1lclZlcnNpb25pbmcuaCIKIAogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDxnc3Qv
YXBwL2dzdGFwcHNpbmsuaD4KQEAgLTM1LDE3ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIAotI2lmZGVm
IEdTVF9BUElfVkVSU0lPTl8xCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+Ci0jZWxzZQot
I2luY2x1ZGUgPGdzdC9hdWRpby9tdWx0aWNoYW5uZWwuaD4KLSNlbmRpZgotCi0jaWZkZWYgR1NU
X0FQSV9WRVJTSU9OXzEKLXN0YXRpYyBjb25zdCBjaGFyKiBnRGVjb2RlYmluTmFtZSA9ICJkZWNv
ZGViaW4iOwotI2Vsc2UKLXN0YXRpYyBjb25zdCBjaGFyKiBnRGVjb2RlYmluTmFtZSA9ICJkZWNv
ZGViaW4yIjsKLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU4LDExICs0Nyw3
IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1cyhmbG9hdCBz
YW1wbGVSYXRlLCBib29sIG1peFRvTW9ubyk7CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQog
ICAgIEdzdEZsb3dSZXR1cm4gaGFuZGxlU2FtcGxlKEdzdEFwcFNpbmsqKTsKLSNlbHNlCi0gICAg
R3N0Rmxvd1JldHVybiBoYW5kbGVCdWZmZXIoR3N0QXBwU2luayopOwotI2VuZGlmCiAgICAgZ2Jv
b2xlYW4gaGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKik7CiAgICAgdm9pZCBoYW5kbGVOZXdEZWlu
dGVybGVhdmVQYWQoR3N0UGFkKik7CiAgICAgdm9pZCBkZWludGVybGVhdmVQYWRzQ29uZmlndXJl
ZCgpOwpAQCAtNzgsMTEgKzYzLDYgQEAgcHJpdmF0ZToKICAgICBHc3RCdWZmZXJMaXN0KiBtX2Zy
b250TGVmdEJ1ZmZlcnM7CiAgICAgR3N0QnVmZmVyTGlzdCogbV9mcm9udFJpZ2h0QnVmZmVyczsK
IAotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotICAgIEdzdEJ1ZmZlckxpc3RJdGVyYXRvciog
bV9mcm9udExlZnRCdWZmZXJzSXRlcmF0b3I7Ci0gICAgR3N0QnVmZmVyTGlzdEl0ZXJhdG9yKiBt
X2Zyb250UmlnaHRCdWZmZXJzSXRlcmF0b3I7Ci0jZW5kaWYKLQogICAgIEdzdEVsZW1lbnQqIG1f
cGlwZWxpbmU7CiAgICAgdW5zaWduZWQgbV9jaGFubmVsU2l6ZTsKICAgICBHUmVmUHRyPEdzdEVs
ZW1lbnQ+IG1fZGVjb2RlYmluOwpAQCAtOTMsNyArNzMsNiBAQCBwcml2YXRlOgogCiBzdGF0aWMg
dm9pZCBjb3B5R3N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVsKEdzdEJ1ZmZlckxpc3QqIGJ1
ZmZlcnMsIEF1ZGlvQ2hhbm5lbCogYXVkaW9DaGFubmVsKQogewotI2lmZGVmIEdTVF9BUElfVkVS
U0lPTl8xCiAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gYXVkaW9DaGFubmVsLT5tdXRhYmxlRGF0
YSgpOwogICAgIHVuc2lnbmVkIGJ1ZmZlckNvdW50ID0gZ3N0X2J1ZmZlcl9saXN0X2xlbmd0aChi
dWZmZXJzKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVmZmVyQ291bnQ7ICsraSkg
ewpAQCAtMTAzLDI2ICs4MiwxMSBAQCBzdGF0aWMgdm9pZCBjb3B5R3N0cmVhbWVyQnVmZmVyc1Rv
QXVkaW9DaGFubmVsKEdzdEJ1ZmZlckxpc3QqIGJ1ZmZlcnMsIEF1ZGlvQ2hhbgogICAgICAgICBn
c3RfYnVmZmVyX2V4dHJhY3QoYnVmZmVyLCAwLCBkZXN0aW5hdGlvbiwgYnVmZmVyU2l6ZSk7CiAg
ICAgICAgIGRlc3RpbmF0aW9uICs9IGJ1ZmZlclNpemUgLyBzaXplb2YoZmxvYXQpOwogICAgIH0K
LSNlbHNlCi0gICAgR3N0QnVmZmVyTGlzdEl0ZXJhdG9yKiBpdGVyID0gZ3N0X2J1ZmZlcl9saXN0
X2l0ZXJhdGUoYnVmZmVycyk7Ci0gICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX25leHRfZ3Jv
dXAoaXRlcik7Ci0gICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0
b3JfbWVyZ2VfZ3JvdXAoaXRlcik7Ci0gICAgaWYgKGJ1ZmZlcikgewotICAgICAgICBtZW1jcHko
YXVkaW9DaGFubmVsLT5tdXRhYmxlRGF0YSgpLCByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oR1NU
X0JVRkZFUl9EQVRBKGJ1ZmZlcikpLCBHU1RfQlVGRkVSX1NJWkUoYnVmZmVyKSk7Ci0gICAgICAg
IGdzdF9idWZmZXJfdW5yZWYoYnVmZmVyKTsKLSAgICB9Ci0KLSAgICBnc3RfYnVmZmVyX2xpc3Rf
aXRlcmF0b3JfZnJlZShpdGVyKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgR3N0Rmxvd1JldHVybiBv
bkFwcHNpbmtQdWxsUmVxdWlyZWRDYWxsYmFjayhHc3RBcHBTaW5rKiBzaW5rLCBncG9pbnRlciB1
c2VyRGF0YSkKIHsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxBdWRpb0ZpbGVSZWFkZXIqPih1c2VyRGF0YSktPmhhbmRsZVNhbXBsZShzaW5rKTsKLSNl
bHNlCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlvRmlsZVJlYWRlcio+KHVzZXJEYXRhKS0+
aGFuZGxlQnVmZmVyKHNpbmspOwotI2VuZGlmCiB9CiAKIGdib29sZWFuIG1lc3NhZ2VDYWxsYmFj
ayhHc3RCdXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBBdWRpb0ZpbGVSZWFkZXIqIHJlYWRlcikK
QEAgLTE3Myw3ICsxMzcsNyBAQCBBdWRpb0ZpbGVSZWFkZXI6OkF1ZGlvRmlsZVJlYWRlcihjb25z
dCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YVNpemUpCiBBdWRpb0ZpbGVSZWFkZXI6On5BdWRpb0Zp
bGVSZWFkZXIoKQogewogICAgIGlmIChtX3BpcGVsaW5lKSB7Ci0gICAgICAgIEdSZWZQdHI8R3N0
QnVzPiBidXMgPSB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUobV9waXBlbGlu
ZSkpOworICAgICAgICBHUmVmUHRyPEdzdEJ1cz4gYnVzID0gYWRvcHRHUmVmKGdzdF9waXBlbGlu
ZV9nZXRfYnVzKEdTVF9QSVBFTElORShtX3BpcGVsaW5lKSkpOwogICAgICAgICBBU1NFUlQoYnVz
KTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKGJ1cy5nZXQo
KSwgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4obWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7CiAg
ICAgICAgIGdzdF9idXNfcmVtb3ZlX3NpZ25hbF93YXRjaChidXMuZ2V0KCkpOwpAQCAtMTkzLDE1
ICsxNTcsMTAgQEAgQXVkaW9GaWxlUmVhZGVyOjp+QXVkaW9GaWxlUmVhZGVyKCkKICAgICAgICAg
bV9kZUludGVybGVhdmUuY2xlYXIoKTsKICAgICB9CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9O
XzEKLSAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfZnJlZShtX2Zyb250TGVmdEJ1ZmZlcnNJ
dGVyYXRvcik7Ci0gICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX2ZyZWUobV9mcm9udFJpZ2h0
QnVmZmVyc0l0ZXJhdG9yKTsKLSNlbmRpZgogICAgIGdzdF9idWZmZXJfbGlzdF91bnJlZihtX2Zy
b250TGVmdEJ1ZmZlcnMpOwogICAgIGdzdF9idWZmZXJfbGlzdF91bnJlZihtX2Zyb250UmlnaHRC
dWZmZXJzKTsKIH0KIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiBHc3RGbG93UmV0dXJuIEF1
ZGlvRmlsZVJlYWRlcjo6aGFuZGxlU2FtcGxlKEdzdEFwcFNpbmsqIHNpbmspCiB7CiAgICAgR3N0
U2FtcGxlKiBzYW1wbGUgPSBnc3RfYXBwX3NpbmtfcHVsbF9zYW1wbGUoc2luayk7CkBAIC0yNDIs
NjMgKzIwMSw2IEBAIEdzdEZsb3dSZXR1cm4gQXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVTYW1wbGUo
R3N0QXBwU2luayogc2luaykKICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CiAKIH0KLSNlbmRpZgot
Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi1Hc3RGbG93UmV0dXJuIEF1ZGlvRmlsZVJlYWRl
cjo6aGFuZGxlQnVmZmVyKEdzdEFwcFNpbmsqIHNpbmspCi17Ci0gICAgR3N0QnVmZmVyKiBidWZm
ZXIgPSBnc3RfYXBwX3NpbmtfcHVsbF9idWZmZXIoc2luayk7Ci0gICAgaWYgKCFidWZmZXIpCi0g
ICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLQotICAgIEdzdENhcHMqIGNhcHMgPSBnc3Rf
YnVmZmVyX2dldF9jYXBzKGJ1ZmZlcik7Ci0gICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
c3RfY2Fwc19nZXRfc3RydWN0dXJlKGNhcHMsIDApOwotCi0gICAgZ2ludCBjaGFubmVscyA9IDA7
Ci0gICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAiY2hhbm5lbHMiLCAm
Y2hhbm5lbHMpIHx8ICFjaGFubmVscykgewotICAgICAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsK
LSAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOwotICAgICAgICByZXR1cm4gR1NUX0ZM
T1dfRVJST1I7Ci0gICAgfQotCi0gICAgZ2ludCBzYW1wbGVSYXRlID0gMDsKLSAgICBpZiAoIWdz
dF9zdHJ1Y3R1cmVfZ2V0X2ludChzdHJ1Y3R1cmUsICJyYXRlIiwgJnNhbXBsZVJhdGUpIHx8ICFz
YW1wbGVSYXRlKSB7Ci0gICAgICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOwotICAgICAgICBnc3Rf
YnVmZmVyX3VucmVmKGJ1ZmZlcik7Ci0gICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLSAg
ICB9Ci0KLSAgICBnaW50IHdpZHRoID0gMDsKLSAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2lu
dChzdHJ1Y3R1cmUsICJ3aWR0aCIsICZ3aWR0aCkgfHwgIXdpZHRoKSB7Ci0gICAgICAgIGdzdF9j
YXBzX3VucmVmKGNhcHMpOwotICAgICAgICBnc3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7Ci0gICAg
ICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLSAgICB9Ci0KLSAgICBHc3RDbG9ja1RpbWUgZHVy
YXRpb24gPSAoc3RhdGljX2Nhc3Q8Z3VpbnQ2ND4oR1NUX0JVRkZFUl9TSVpFKGJ1ZmZlcikpICog
OCAqIEdTVF9TRUNPTkQpIC8gKHNhbXBsZVJhdGUgKiBjaGFubmVscyAqIHdpZHRoKTsKLSAgICBp
bnQgZnJhbWVzID0gR1NUX0NMT0NLX1RJTUVfVE9fRlJBTUVTKGR1cmF0aW9uLCBzYW1wbGVSYXRl
KTsKLQotICAgIC8vIENoZWNrIHRoZSBmaXJzdCBhdWRpbyBjaGFubmVsLiBUaGUgYnVmZmVyIGlz
IHN1cHBvc2VkIHRvIHN0b3JlCi0gICAgLy8gZGF0YSBvZiBhIHNpbmdsZSBjaGFubmVsIGFueXdh
eS4KLSAgICBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiogcG9zaXRpb25zID0gZ3N0X2F1ZGlvX2dl
dF9jaGFubmVsX3Bvc2l0aW9ucyhzdHJ1Y3R1cmUpOwotICAgIHN3aXRjaCAocG9zaXRpb25zWzBd
KSB7Ci0gICAgY2FzZSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZUOgotICAg
ICAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfYWRkKG1fZnJvbnRMZWZ0QnVmZmVyc0l0ZXJh
dG9yLCBidWZmZXIpOwotICAgICAgICBtX2NoYW5uZWxTaXplICs9IGZyYW1lczsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVDoK
LSAgICAgICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX2FkZChtX2Zyb250UmlnaHRCdWZmZXJz
SXRlcmF0b3IsIGJ1ZmZlcik7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IGdzdF9idWZmZXJfdW5yZWYoYnVmZmVyKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
Z19mcmVlKHBvc2l0aW9ucyk7Ci0gICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7Ci0gICAgcmV0dXJu
IEdTVF9GTE9XX09LOwotfQotI2VuZGlmCiAKIGdib29sZWFuIEF1ZGlvRmlsZVJlYWRlcjo6aGFu
ZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogewpAQCAtMzM3LDEyICsyMzksNyBAQCB2
b2lkIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTmV3RGVpbnRlcmxlYXZlUGFkKEdzdFBhZCogcGFk
KQogICAgIEdzdEFwcFNpbmtDYWxsYmFja3MgY2FsbGJhY2tzOwogICAgIGNhbGxiYWNrcy5lb3Mg
PSAwOwogICAgIGNhbGxiYWNrcy5uZXdfcHJlcm9sbCA9IDA7Ci0jaWZkZWYgR1NUX0FQSV9WRVJT
SU9OXzEKICAgICBjYWxsYmFja3MubmV3X3NhbXBsZSA9IG9uQXBwc2lua1B1bGxSZXF1aXJlZENh
bGxiYWNrOwotI2Vsc2UKLSAgICBjYWxsYmFja3MubmV3X2J1ZmZlcl9saXN0ID0gMDsKLSAgICBj
YWxsYmFja3MubmV3X2J1ZmZlciA9IG9uQXBwc2lua1B1bGxSZXF1aXJlZENhbGxiYWNrOwotI2Vu
ZGlmCiAgICAgZ3N0X2FwcF9zaW5rX3NldF9jYWxsYmFja3MoR1NUX0FQUF9TSU5LKHNpbmspLCAm
Y2FsbGJhY2tzLCB0aGlzLCAwKTsKIAogICAgIGdfb2JqZWN0X3NldChzaW5rLCAic3luYyIsIEZB
TFNFLCBOVUxMKTsKQEAgLTM4MCw3ICsyNzcsMTAgQEAgdm9pZCBBdWRpb0ZpbGVSZWFkZXI6OnBs
dWdEZWludGVybGVhdmUoR3N0UGFkKiBwYWQpCiAgICAgZ19zaWduYWxfY29ubmVjdChtX2RlSW50
ZXJsZWF2ZS5nZXQoKSwgInBhZC1hZGRlZCIsIEdfQ0FMTEJBQ0sob25HU3RyZWFtZXJEZWludGVy
bGVhdmVQYWRBZGRlZENhbGxiYWNrKSwgdGhpcyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChtX2Rl
SW50ZXJsZWF2ZS5nZXQoKSwgIm5vLW1vcmUtcGFkcyIsIEdfQ0FMTEJBQ0sob25HU3RyZWFtZXJE
ZWludGVybGVhdmVSZWFkeUNhbGxiYWNrKSwgdGhpcyk7CiAKLSAgICBHc3RDYXBzKiBjYXBzID0g
Z2V0R3N0QXVkaW9DYXBzKDIsIG1fc2FtcGxlUmF0ZSk7CisgICAgR3N0Q2FwcyogY2FwcyA9IGdz
dF9jYXBzX25ld19zaW1wbGUoImF1ZGlvL3gtcmF3IiwgInJhdGUiLCBHX1RZUEVfSU5ULCBzdGF0
aWNfY2FzdDxpbnQ+KG1fc2FtcGxlUmF0ZSksCisgICAgICAgICJjaGFubmVscyIsIEdfVFlQRV9J
TlQsIDIsCisgICAgICAgICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBnc3RfYXVkaW9fZm9ybWF0
X3RvX3N0cmluZyhHU1RfQVVESU9fRk9STUFUX0YzMiksCisgICAgICAgICJsYXlvdXQiLCBHX1RZ
UEVfU1RSSU5HLCAiaW50ZXJsZWF2ZWQiLCBudWxscHRyKTsKICAgICBnX29iamVjdF9zZXQoY2Fw
c0ZpbHRlciwgImNhcHMiLCBjYXBzLCBOVUxMKTsKICAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsK
IApAQCAtNDA2LDcgKzMwNiw3IEBAIHZvaWQgQXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVBdWRpb0Zv
ckJ1c0NyZWF0aW9uKCkKICAgICAvLyBBIGRlaW50ZXJsZWF2ZSBlbGVtZW50IGlzIGFkZGVkIG9u
Y2UgYSBzcmMgcGFkIGJlY29tZXMgYXZhaWxhYmxlIGluIGRlY29kZWJpbi4KICAgICBtX3BpcGVs
aW5lID0gZ3N0X3BpcGVsaW5lX25ldygwKTsKIAotICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSB3
ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUobV9waXBlbGluZSkpOworICAgIEdS
ZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJ
UEVMSU5FKG1fcGlwZWxpbmUpKSk7CiAgICAgQVNTRVJUKGJ1cyk7CiAgICAgZ3N0X2J1c19hZGRf
c2lnbmFsX3dhdGNoKGJ1cy5nZXQoKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChidXMuZ2V0KCks
ICJtZXNzYWdlIiwgR19DQUxMQkFDSyhtZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKQEAgLTQyMiw3
ICszMjIsNyBAQCB2b2lkIEF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlQXVkaW9Gb3JCdXNDcmVhdGlv
bigpCiAgICAgICAgIGdfb2JqZWN0X3NldChzb3VyY2UsICJsb2NhdGlvbiIsIG1fZmlsZVBhdGgs
IE5VTEwpOwogICAgIH0KIAotICAgIG1fZGVjb2RlYmluID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9t
YWtlKGdEZWNvZGViaW5OYW1lLCAiZGVjb2RlYmluIik7CisgICAgbV9kZWNvZGViaW4gPSBnc3Rf
ZWxlbWVudF9mYWN0b3J5X21ha2UoImRlY29kZWJpbiIsICJkZWNvZGViaW4iKTsKICAgICBnX3Np
Z25hbF9jb25uZWN0KG1fZGVjb2RlYmluLmdldCgpLCAicGFkLWFkZGVkIiwgR19DQUxMQkFDSyhv
bkdTdHJlYW1lckRlY29kZWJpblBhZEFkZGVkQ2FsbGJhY2spLCB0aGlzKTsKIAogICAgIGdzdF9i
aW5fYWRkX21hbnkoR1NUX0JJTihtX3BpcGVsaW5lKSwgc291cmNlLCBtX2RlY29kZWJpbi5nZXQo
KSwgTlVMTCk7CkBAIC00MzcsMTQgKzMzNyw2IEBAIFBhc3NSZWZQdHI8QXVkaW9CdXM+IEF1ZGlv
RmlsZVJlYWRlcjo6Y3JlYXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vCiAg
ICAgbV9mcm9udExlZnRCdWZmZXJzID0gZ3N0X2J1ZmZlcl9saXN0X25ldygpOwogICAgIG1fZnJv
bnRSaWdodEJ1ZmZlcnMgPSBnc3RfYnVmZmVyX2xpc3RfbmV3KCk7CiAKLSNpZm5kZWYgR1NUX0FQ
SV9WRVJTSU9OXzEKLSAgICBtX2Zyb250TGVmdEJ1ZmZlcnNJdGVyYXRvciA9IGdzdF9idWZmZXJf
bGlzdF9pdGVyYXRlKG1fZnJvbnRMZWZ0QnVmZmVycyk7Ci0gICAgZ3N0X2J1ZmZlcl9saXN0X2l0
ZXJhdG9yX2FkZF9ncm91cChtX2Zyb250TGVmdEJ1ZmZlcnNJdGVyYXRvcik7Ci0KLSAgICBtX2Zy
b250UmlnaHRCdWZmZXJzSXRlcmF0b3IgPSBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0ZShtX2Zyb250
UmlnaHRCdWZmZXJzKTsKLSAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfYWRkX2dyb3VwKG1f
ZnJvbnRSaWdodEJ1ZmZlcnNJdGVyYXRvcik7Ci0jZW5kaWYKLQogICAgIEdSZWZQdHI8R01haW5D
b250ZXh0PiBjb250ZXh0ID0gYWRvcHRHUmVmKGdfbWFpbl9jb250ZXh0X25ldygpKTsKICAgICBn
X21haW5fY29udGV4dF9wdXNoX3RocmVhZF9kZWZhdWx0KGNvbnRleHQuZ2V0KCkpOwogICAgIG1f
bG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9uZXcoY29udGV4dC5nZXQoKSwgRkFMU0UpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJL
aXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDU1
ZGJlZDRmODBkMjM5NGRlYTM4MzFhYTVkZTE4ZGRmZmNmZWQzMjkuLjc3YmY5MjA2OGRlMzllMmIy
YmE3MmMyZDhjYTY4MDg2ZjE5NTQxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlv
U291cmNlR1N0cmVhbWVyLmNwcApAQCAtMjYsMTkgKzI2LDEwIEBACiAjaW5jbHVkZSAiQXVkaW9J
T0NhbGxiYWNrLmgiCiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUg
IkdSZWZQdHJHU3RyZWFtZXIuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCi0j
aWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpbmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIK
ICNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KLSNlbHNlCi0jaW5jbHVkZSA8Z3N0L2F1ZGlv
L211bHRpY2hhbm5lbC5oPgotI2VuZGlmCiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5o
PgogCi0vLyBHU3RhdGljUmVjTXV0ZXggaXMgZGVwcmVjYXRlZCBpbiBHbGliLCBidXQgcmVxdWly
ZWQgaW4gR1N0cmVhbWVyIDAuMTAKLSNpZiAoQ09NUElMRVIoR0NDKSAmJiBHQ0NfVkVSU0lPTl9B
VF9MRUFTVCg0LCA2LCAwKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkpCi0jcHJhZ21h
IEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0jZW5k
aWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJBdWRpb1NyY0NsYXNzICAgV2ViS2l0V2ViQXVkaW9TcmNDbGFzczsKQEAgLTY1LDExICs1Niw3
IEBAIHN0cnVjdCBfV2ViS2l0V2ViQXVkaW9Tb3VyY2VQcml2YXRlIHsKICAgICBHUmVmUHRyPEdz
dEVsZW1lbnQ+IHdhdkVuY29kZXI7CiAKICAgICBHUmVmUHRyPEdzdFRhc2s+IHRhc2s7Ci0jaWZk
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBHUmVjTXV0ZXggbXV0ZXg7Ci0jZWxzZQotICAgIEdT
dGF0aWNSZWNNdXRleCBtdXRleDsKLSNlbmRpZgogCiAgICAgR1NMaXN0KiBwYWRzOyAvLyBMaXN0
IG9mIHF1ZXVlIHNpbmsgcGFkcy4gT25lIHF1ZXVlIGZvciBlYWNoIHBsYW5hciBhdWRpbyBjaGFu
bmVsLgogICAgIEdzdFBhZCogc291cmNlUGFkOyAvLyBzcmMgcGFkIG9mIHRoZSBlbGVtZW50LCBp
bnRlcmxlYXZlZCB3YXYgZGF0YSBpcyBwdXNoZWQgdG8gaXQuCkBAIC05OSwxNyArODYsMTAgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViQXVkaW9TcmNMb29wKFdlYktpdFdlYkF1ZGlvU3JjKik7CiAK
IHN0YXRpYyBHc3RDYXBzKiBnZXRHU3RyZWFtZXJNb25vQXVkaW9DYXBzKGZsb2F0IHNhbXBsZVJh
dGUpCiB7Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICByZXR1cm4gZ3N0X2NhcHNfbmV3
X3NpbXBsZSgiYXVkaW8veC1yYXciLCAicmF0ZSIsIEdfVFlQRV9JTlQsIHN0YXRpY19jYXN0PGlu
dD4oc2FtcGxlUmF0ZSksCiAgICAgICAgICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIDEsCiAgICAg
ICAgICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBnc3RfYXVkaW9fZm9ybWF0X3RvX3N0cmluZyhH
U1RfQVVESU9fRk9STUFUX0YzMiksCiAgICAgICAgICJsYXlvdXQiLCBHX1RZUEVfU1RSSU5HLCAi
bm9uLWludGVybGVhdmVkIiwgTlVMTCk7Ci0jZWxzZQotICAgIHJldHVybiBnc3RfY2Fwc19uZXdf
c2ltcGxlKCJhdWRpby94LXJhdy1mbG9hdCIsICJyYXRlIiwgR19UWVBFX0lOVCwgc3RhdGljX2Nh
c3Q8aW50PihzYW1wbGVSYXRlKSwKLSAgICAgICAgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgMSwK
LSAgICAgICAgImVuZGlhbm5lc3MiLCBHX1RZUEVfSU5ULCBHX0JZVEVfT1JERVIsCi0gICAgICAg
ICJ3aWR0aCIsIEdfVFlQRV9JTlQsIDMyLCBOVUxMKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgR3N0
QXVkaW9DaGFubmVsUG9zaXRpb24gd2ViS2l0V2ViQXVkaW9HU3RyZWFtZXJDaGFubmVsUG9zaXRp
b24oaW50IGNoYW5uZWxJbmRleCkKQEAgLTEyNywxMSArMTA3LDcgQEAgc3RhdGljIEdzdEF1ZGlv
Q2hhbm5lbFBvc2l0aW9uIHdlYktpdFdlYkF1ZGlvR1N0cmVhbWVyQ2hhbm5lbFBvc2l0aW9uKGlu
dCBjaGFubmUKICAgICAgICAgcG9zaXRpb24gPSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9G
Uk9OVF9DRU5URVI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVkaW9CdXM6OkNoYW5uZWxM
RkU6Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICAgICAgcG9zaXRpb24gPSBHU1RfQVVE
SU9fQ0hBTk5FTF9QT1NJVElPTl9MRkUxOwotI2Vsc2UKLSAgICAgICAgcG9zaXRpb24gPSBHU1Rf
QVVESU9fQ0hBTk5FTF9QT1NJVElPTl9MRkU7Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBBdWRpb0J1czo6Q2hhbm5lbFN1cnJvdW5kTGVmdDoKICAgICAgICAgcG9zaXRpb24gPSBH
U1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0xFRlQ7CkBAIC0xNTgsNyArMTM0LDcgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9hdWRpb19zcmNfY2xhc3NfaW5pdChXZWJLaXRXZWJBdWRp
b1NyY0NsYXNzKiB3ZWJLaXRXZWJBdWQKICAgICBHc3RFbGVtZW50Q2xhc3MqIGVsZW1lbnRDbGFz
cyA9IEdTVF9FTEVNRU5UX0NMQVNTKHdlYktpdFdlYkF1ZGlvU3JjQ2xhc3MpOwogCiAgICAgZ3N0
X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZShlbGVtZW50Q2xhc3MsIGdzdF9zdGF0aWNf
cGFkX3RlbXBsYXRlX2dldCgmc3JjVGVtcGxhdGUpKTsKLSAgICBzZXRHc3RFbGVtZW50Q2xhc3NN
ZXRhZGF0YShlbGVtZW50Q2xhc3MsICJXZWJLaXQgV2ViQXVkaW8gc291cmNlIGVsZW1lbnQiLCAi
U291cmNlIiwgIkhhbmRsZXMgV2ViQXVkaW8gZGF0YSBmcm9tIFdlYkNvcmUiLCAiUGhpbGlwcGUg
Tm9ybWFuZCA8cG5vcm1hbmRAaWdhbGlhLmNvbT4iKTsKKyAgICBnc3RfZWxlbWVudF9jbGFzc19z
ZXRfbWV0YWRhdGEoZWxlbWVudENsYXNzLCAiV2ViS2l0IFdlYkF1ZGlvIHNvdXJjZSBlbGVtZW50
IiwgIlNvdXJjZSIsICJIYW5kbGVzIFdlYkF1ZGlvIGRhdGEgZnJvbSBXZWJDb3JlIiwgIlBoaWxp
cHBlIE5vcm1hbmQgPHBub3JtYW5kQGlnYWxpYS5jb20+Iik7CiAKICAgICBvYmplY3RDbGFzcy0+
Y29uc3RydWN0ZWQgPSB3ZWJLaXRXZWJBdWRpb1NyY0NvbnN0cnVjdGVkOwogICAgIG9iamVjdENs
YXNzLT5maW5hbGl6ZSA9IHdlYktpdFdlYkF1ZGlvU3JjRmluYWxpemU7CkBAIC0yMDUsMTMgKzE4
MSw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfYXVkaW9fc3JjX2luaXQoV2ViS2l0V2ViQXVk
aW9TcmMqIHNyYykKICAgICBwcml2LT5wcm92aWRlciA9IDA7CiAgICAgcHJpdi0+YnVzID0gMDsK
IAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgZ19yZWNfbXV0ZXhfaW5pdCgmcHJpdi0+
bXV0ZXgpOwogICAgIHByaXYtPnRhc2sgPSBnc3RfdGFza19uZXcocmVpbnRlcnByZXRfY2FzdDxH
c3RUYXNrRnVuY3Rpb24+KHdlYktpdFdlYkF1ZGlvU3JjTG9vcCksIHNyYywgMCk7Ci0jZWxzZQot
ICAgIGdfc3RhdGljX3JlY19tdXRleF9pbml0KCZwcml2LT5tdXRleCk7Ci0gICAgcHJpdi0+dGFz
ayA9IGdzdF90YXNrX2NyZWF0ZShyZWludGVycHJldF9jYXN0PEdzdFRhc2tGdW5jdGlvbj4od2Vi
S2l0V2ViQXVkaW9TcmNMb29wKSwgc3JjKTsKLSNlbmRpZgogCiAgICAgZ3N0X3Rhc2tfc2V0X2xv
Y2socHJpdi0+dGFzay5nZXQoKSwgJnByaXYtPm11dGV4KTsKIH0KQEAgLTI1MCwxNSArMjIxLDEx
IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjQ29uc3RydWN0ZWQoR09iamVjdCogb2Jq
ZWN0KQogCiAgICAgICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbW9ub0NhcHMgPSBhZG9wdEdSZWYoZ2V0
R1N0cmVhbWVyTW9ub0F1ZGlvQ2Fwcyhwcml2LT5zYW1wbGVSYXRlKSk7CiAKLSNpZmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQogICAgICAgICBHc3RBdWRpb0luZm8gaW5mbzsKICAgICAgICAgZ3N0X2F1
ZGlvX2luZm9fZnJvbV9jYXBzKCZpbmZvLCBtb25vQ2Fwcy5nZXQoKSk7CiAgICAgICAgIEdTVF9B
VURJT19JTkZPX1BPU0lUSU9OKCZpbmZvLCAwKSA9IHdlYktpdFdlYkF1ZGlvR1N0cmVhbWVyQ2hh
bm5lbFBvc2l0aW9uKGNoYW5uZWxJbmRleCk7CiAgICAgICAgIEdSZWZQdHI8R3N0Q2Fwcz4gY2Fw
cyA9IGFkb3B0R1JlZihnc3RfYXVkaW9faW5mb190b19jYXBzKCZpbmZvKSk7CiAgICAgICAgIGdf
b2JqZWN0X3NldChjYXBzZmlsdGVyLCAiY2FwcyIsIGNhcHMuZ2V0KCksIE5VTEwpOwotI2Vsc2UK
LSAgICAgICAgZ19vYmplY3Rfc2V0KGNhcHNmaWx0ZXIsICJjYXBzIiwgbW9ub0NhcHMuZ2V0KCks
IE5VTEwpOwotI2VuZGlmCiAKICAgICAgICAgLy8gQ29uZmlndXJlIHRoZSBxdWV1ZSBmb3IgbWlu
aW1hbCBsYXRlbmN5LgogICAgICAgICBnX29iamVjdF9zZXQocXVldWUsICJtYXgtc2l6ZS1idWZm
ZXJzIiwgc3RhdGljX2Nhc3Q8Z3VpbnQ+KDEpLCBOVUxMKTsKQEAgLTI4NCwxMSArMjUxLDcgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViQXVkaW9TcmNGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiAg
ICAgV2ViS2l0V2ViQXVkaW9TcmMqIHNyYyA9IFdFQktJVF9XRUJfQVVESU9fU1JDKG9iamVjdCk7
CiAgICAgV2ViS2l0V2ViQXVkaW9Tb3VyY2VQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCi0j
aWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBnX3JlY19tdXRleF9jbGVhcigmcHJpdi0+bXV0
ZXgpOwotI2Vsc2UKLSAgICBnX3N0YXRpY19yZWNfbXV0ZXhfZnJlZSgmcHJpdi0+bXV0ZXgpOwot
I2VuZGlmCiAKICAgICBnX3NsaXN0X2ZyZWVfZnVsbChwcml2LT5wYWRzLCByZWludGVycHJldF9j
YXN0PEdEZXN0cm95Tm90aWZ5Pihnc3Rfb2JqZWN0X3VucmVmKSk7CiAKQEAgLTM2MCwxNCArMzIz
LDEwIEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjTG9vcChXZWJLaXRXZWJBdWRpb1Ny
Yyogc3JjKQogICAgICAgICBHc3RCdWZmZXIqIGNoYW5uZWxCdWZmZXIgPSBnc3RfYnVmZmVyX25l
d19hbmRfYWxsb2MoYnVmZmVyU2l6ZSk7CiAgICAgICAgIEFTU0VSVChjaGFubmVsQnVmZmVyKTsK
ICAgICAgICAgY2hhbm5lbEJ1ZmZlckxpc3QgPSBnX3NsaXN0X3ByZXBlbmQoY2hhbm5lbEJ1ZmZl
ckxpc3QsIGNoYW5uZWxCdWZmZXIpOwotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgICAg
IEdzdE1hcEluZm8gaW5mbzsKICAgICAgICAgZ3N0X2J1ZmZlcl9tYXAoY2hhbm5lbEJ1ZmZlciwg
JmluZm8sIEdTVF9NQVBfUkVBRCk7CiAgICAgICAgIHByaXYtPmJ1cy0+c2V0Q2hhbm5lbE1lbW9y
eShpLCByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oaW5mby5kYXRhKSwgcHJpdi0+ZnJhbWVzVG9Q
dWxsKTsKICAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcChjaGFubmVsQnVmZmVyLCAmaW5mbyk7Ci0j
ZWxzZQotICAgICAgICBwcml2LT5idXMtPnNldENoYW5uZWxNZW1vcnkoaSwgcmVpbnRlcnByZXRf
Y2FzdDxmbG9hdCo+KEdTVF9CVUZGRVJfREFUQShjaGFubmVsQnVmZmVyKSksIHByaXYtPmZyYW1l
c1RvUHVsbCk7Ci0jZW5kaWYKICAgICB9CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9y
IGxvY2FsL2xpdmUgYXVkaW8gaW5wdXQuCkBAIC0zNzksMTQgKzMzOCw2IEBAIHN0YXRpYyB2b2lk
IHdlYktpdFdlYkF1ZGlvU3JjTG9vcChXZWJLaXRXZWJBdWRpb1NyYyogc3JjKQogICAgICAgICBH
c3RQYWQqIHBhZCA9IHN0YXRpY19jYXN0PEdzdFBhZCo+KHBhZHNJdC0+ZGF0YSk7CiAgICAgICAg
IEdzdEJ1ZmZlciogY2hhbm5lbEJ1ZmZlciA9IHN0YXRpY19jYXN0PEdzdEJ1ZmZlcio+KGJ1ZmZl
cnNJdC0+ZGF0YSk7CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICAgICAgR1JlZlB0
cjxHc3RDYXBzPiBtb25vQ2FwcyA9IGFkb3B0R1JlZihnZXRHU3RyZWFtZXJNb25vQXVkaW9DYXBz
KHByaXYtPnNhbXBsZVJhdGUpKTsKLSAgICAgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
c3RfY2Fwc19nZXRfc3RydWN0dXJlKG1vbm9DYXBzLmdldCgpLCAwKTsKLSAgICAgICAgR3N0QXVk
aW9DaGFubmVsUG9zaXRpb24gY2hhbm5lbFBvc2l0aW9uID0gd2ViS2l0V2ViQXVkaW9HU3RyZWFt
ZXJDaGFubmVsUG9zaXRpb24oaSk7Ci0gICAgICAgIGdzdF9hdWRpb19zZXRfY2hhbm5lbF9wb3Np
dGlvbnMoc3RydWN0dXJlLCAmY2hhbm5lbFBvc2l0aW9uKTsKLSAgICAgICAgZ3N0X2J1ZmZlcl9z
ZXRfY2FwcyhjaGFubmVsQnVmZmVyLCBtb25vQ2Fwcy5nZXQoKSk7Ci0jZW5kaWYKLQogICAgICAg
ICBHc3RGbG93UmV0dXJuIHJldCA9IGdzdF9wYWRfY2hhaW4ocGFkLCBjaGFubmVsQnVmZmVyKTsK
ICAgICAgICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykKICAgICAgICAgICAgIEdTVF9FTEVNRU5U
X0VSUk9SKHNyYywgQ09SRSwgUEFELCAoIkludGVybmFsIFdlYkF1ZGlvU3JjIGVycm9yIiksICgi
RmFpbGVkIHRvIHB1c2ggYnVmZmVyIG9uICVzOiVzIiwgR1NUX0RFQlVHX1BBRF9OQU1FKHBhZCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4
IDkwZDMwYTY5YTQ2ODBiYzQxYjg5N2RkYzEzMmYxNmRlOWU0OWYwYTEuLjJmMGRlYmNjMDg3YzZm
OWFmNDdkMTUzNzY2NmM5ODIyNDg2ODg1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShW
SURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklE
RU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2luY2x1ZGUg
IkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCiAKQEAgLTU4LDQgKzU4LDQgQEAgdm9pZCBB
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdT
VFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lP
Tl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxF
KFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIu
aAppbmRleCBiMWU4YTQ4Yzc0MWUyZDEyNTU3ZGIxNDJhMDRhYTdmNzAxZjYzMDI1Li4zMjQyNjhi
NjY3NzY1NjVlZjFkZjY2MzkzMDJiMWI4NjZmM2VkNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVk
aW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBBdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lcl9oCiAjZGVmaW5lIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVh
bWVyX2gKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJ
REVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURF
TykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAi
QXVkaW9UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCkBAIC01
OSw2ICs1OSw2IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlm
IC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNL
KSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykg
JiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjZW5kaWYgLy8gQXVk
aW9UcmFja1ByaXZhdGVHU3RyZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuY3BwCmlu
ZGV4IDJhZGRjY2QzM2ZjNDI1NDE2YTY1OWQwY2YxYjVhZTU4ZWI5ODNhZTUuLmY3ZWY0NmRkODM5
MGQ5NDUzNDFmZTM4MDYzMjkwM2U1YWZiNjk2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1l
ci5jcHAKQEAgLTE5LDcgKzE5LDYgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkdSZWZQdHJHU3RyZWFtZXIuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCiAK
ICNpZiBVU0UoR1NUUkVBTUVSKQogI2luY2x1ZGUgPGdzdC9nc3QuaD4KQEAgLTI4LDE0ICsyNywx
NCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGUgPD4gR1JlZlB0cjxHc3RFbGVtZW50PiBh
ZG9wdEdSZWYoR3N0RWxlbWVudCogcHRyKQogewotICAgIEFTU0VSVCghcHRyIHx8ICFnc3RPYmpl
Y3RJc0Zsb2F0aW5nKEdTVF9PQkpFQ1QocHRyKSkpOworICAgIEFTU0VSVCghcHRyIHx8ICFnX29i
amVjdF9pc19mbG9hdGluZyhHX09CSkVDVChwdHIpKSk7CiAgICAgcmV0dXJuIEdSZWZQdHI8R3N0
RWxlbWVudD4ocHRyLCBHUmVmUHRyQWRvcHQpOwogfQogCiB0ZW1wbGF0ZSA8PiBHc3RFbGVtZW50
KiByZWZHUHRyPEdzdEVsZW1lbnQ+KEdzdEVsZW1lbnQqIHB0cikKIHsKICAgICBpZiAocHRyKQot
ICAgICAgICB3ZWJraXRHc3RPYmplY3RSZWZTaW5rKEdTVF9PQkpFQ1QocHRyKSk7CisgICAgICAg
IGdzdF9vYmplY3RfcmVmX3NpbmsoR1NUX09CSkVDVChwdHIpKTsKIAogICAgIHJldHVybiBwdHI7
CiB9CkBAIC00OCwxNCArNDcsMTQgQEAgdGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHI8R3N0RWxl
bWVudD4oR3N0RWxlbWVudCogcHRyKQogCiB0ZW1wbGF0ZSA8PiBHUmVmUHRyPEdzdFBhZD4gYWRv
cHRHUmVmKEdzdFBhZCogcHRyKQogewotICAgIEFTU0VSVCghcHRyIHx8ICFnc3RPYmplY3RJc0Zs
b2F0aW5nKEdTVF9PQkpFQ1QocHRyKSkpOworICAgIEFTU0VSVCghcHRyIHx8ICFnX29iamVjdF9p
c19mbG9hdGluZyhHX09CSkVDVChwdHIpKSk7CiAgICAgcmV0dXJuIEdSZWZQdHI8R3N0UGFkPihw
dHIsIEdSZWZQdHJBZG9wdCk7CiB9CiAKIHRlbXBsYXRlIDw+IEdzdFBhZCogcmVmR1B0cjxHc3RQ
YWQ+KEdzdFBhZCogcHRyKQogewogICAgIGlmIChwdHIpCi0gICAgICAgIHdlYmtpdEdzdE9iamVj
dFJlZlNpbmsoR1NUX09CSkVDVChwdHIpKTsKKyAgICAgICAgZ3N0X29iamVjdF9yZWZfc2luayhH
U1RfT0JKRUNUKHB0cikpOwogCiAgICAgcmV0dXJuIHB0cjsKIH0KQEAgLTY4LDE0ICs2NywxNCBA
QCB0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cjxHc3RQYWQ+KEdzdFBhZCogcHRyKQogCiB0ZW1w
bGF0ZSA8PiBHUmVmUHRyPEdzdFBhZFRlbXBsYXRlPiBhZG9wdEdSZWYoR3N0UGFkVGVtcGxhdGUq
IHB0cikKIHsKLSAgICBBU1NFUlQoIXB0ciB8fCAhZ3N0T2JqZWN0SXNGbG9hdGluZyhHU1RfT0JK
RUNUKHB0cikpKTsKKyAgICBBU1NFUlQoIXB0ciB8fCAhZ19vYmplY3RfaXNfZmxvYXRpbmcoR19P
QkpFQ1QocHRyKSkpOwogICAgIHJldHVybiBHUmVmUHRyPEdzdFBhZFRlbXBsYXRlPihwdHIsIEdS
ZWZQdHJBZG9wdCk7CiB9CiAKIHRlbXBsYXRlIDw+IEdzdFBhZFRlbXBsYXRlKiByZWZHUHRyPEdz
dFBhZFRlbXBsYXRlPihHc3RQYWRUZW1wbGF0ZSogcHRyKQogewogICAgIGlmIChwdHIpCi0gICAg
ICAgIHdlYmtpdEdzdE9iamVjdFJlZlNpbmsoR1NUX09CSkVDVChwdHIpKTsKKyAgICAgICAgZ3N0
X29iamVjdF9yZWZfc2luayhHU1RfT0JKRUNUKHB0cikpOwogCiAgICAgcmV0dXJuIHB0cjsKIH0K
QEAgLTEwNywxNCArMTA2LDE0IEBAIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyPEdzdENhcHM+
KEdzdENhcHMqIHB0cikKIAogdGVtcGxhdGUgPD4gR1JlZlB0cjxHc3RUYXNrPiBhZG9wdEdSZWYo
R3N0VGFzayogcHRyKQogewotICAgIEFTU0VSVCghZ3N0T2JqZWN0SXNGbG9hdGluZyhHU1RfT0JK
RUNUKHB0cikpKTsKKyAgICBBU1NFUlQoIWdfb2JqZWN0X2lzX2Zsb2F0aW5nKEdfT0JKRUNUKHB0
cikpKTsKICAgICByZXR1cm4gR1JlZlB0cjxHc3RUYXNrPihwdHIsIEdSZWZQdHJBZG9wdCk7CiB9
CiAKIHRlbXBsYXRlIDw+IEdzdFRhc2sqIHJlZkdQdHI8R3N0VGFzaz4oR3N0VGFzayogcHRyKQog
ewogICAgIGlmIChwdHIpCi0gICAgICAgIHdlYmtpdEdzdE9iamVjdFJlZlNpbmsoR1NUX09CSkVD
VChwdHIpKTsKKyAgICAgICAgZ3N0X29iamVjdF9yZWZfc2luayhHU1RfT0JKRUNUKHB0cikpOwog
CiAgICAgcmV0dXJuIHB0cjsKIH0KQEAgLTEyNywxNCArMTI2LDE0IEBAIHRlbXBsYXRlIDw+IHZv
aWQgZGVyZWZHUHRyPEdzdFRhc2s+KEdzdFRhc2sqIHB0cikKIAogdGVtcGxhdGUgPD4gR1JlZlB0
cjxHc3RCdXM+IGFkb3B0R1JlZihHc3RCdXMqIHB0cikKIHsKLSAgICBBU1NFUlQoIWdzdE9iamVj
dElzRmxvYXRpbmcoR1NUX09CSkVDVChwdHIpKSk7CisgICAgQVNTRVJUKCFnX29iamVjdF9pc19m
bG9hdGluZyhHX09CSkVDVChwdHIpKSk7CiAgICAgcmV0dXJuIEdSZWZQdHI8R3N0QnVzPihwdHIs
IEdSZWZQdHJBZG9wdCk7CiB9CiAKIHRlbXBsYXRlIDw+IEdzdEJ1cyogcmVmR1B0cjxHc3RCdXM+
KEdzdEJ1cyogcHRyKQogewogICAgIGlmIChwdHIpCi0gICAgICAgIHdlYmtpdEdzdE9iamVjdFJl
ZlNpbmsoR1NUX09CSkVDVChwdHIpKTsKKyAgICAgICAgZ3N0X29iamVjdF9yZWZfc2luayhHU1Rf
T0JKRUNUKHB0cikpOwogCiAgICAgcmV0dXJuIHB0cjsKIH0KQEAgLTE0NywxNCArMTQ2LDE0IEBA
IHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyPEdzdEJ1cz4oR3N0QnVzKiBwdHIpCiAKIHRlbXBs
YXRlIDw+IEdSZWZQdHI8R3N0RWxlbWVudEZhY3Rvcnk+IGFkb3B0R1JlZihHc3RFbGVtZW50RmFj
dG9yeSogcHRyKQogewotICAgIEFTU0VSVCghZ3N0T2JqZWN0SXNGbG9hdGluZyhHU1RfT0JKRUNU
KHB0cikpKTsKKyAgICBBU1NFUlQoIWdfb2JqZWN0X2lzX2Zsb2F0aW5nKEdfT0JKRUNUKHB0cikp
KTsKICAgICByZXR1cm4gR1JlZlB0cjxHc3RFbGVtZW50RmFjdG9yeT4ocHRyLCBHUmVmUHRyQWRv
cHQpOwogfQogCiB0ZW1wbGF0ZSA8PiBHc3RFbGVtZW50RmFjdG9yeSogcmVmR1B0cjxHc3RFbGVt
ZW50RmFjdG9yeT4oR3N0RWxlbWVudEZhY3RvcnkqIHB0cikKIHsKICAgICBpZiAocHRyKQotICAg
ICAgICB3ZWJraXRHc3RPYmplY3RSZWZTaW5rKEdTVF9PQkpFQ1QocHRyKSk7CisgICAgICAgIGdz
dF9vYmplY3RfcmVmX3NpbmsoR1NUX09CSkVDVChwdHIpKTsKIAogICAgIHJldHVybiBwdHI7CiB9
CkBAIC0xODQsNyArMTgzLDYgQEAgdGVtcGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxHc3RCdWZmZXI+
KEdzdEJ1ZmZlciogcHRyKQogICAgICAgICBnc3RfYnVmZmVyX3VucmVmKHB0cik7CiB9CiAKLSNp
ZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogdGVtcGxhdGU8PiBHUmVmUHRyPEdzdFNhbXBsZT4gYWRv
cHRHUmVmKEdzdFNhbXBsZSogcHRyKQogewogICAgIHJldHVybiBHUmVmUHRyPEdzdFNhbXBsZT4o
cHRyLCBHUmVmUHRyQWRvcHQpOwpAQCAtMjIyLDcgKzIyMCw2IEBAIHRlbXBsYXRlPD4gdm9pZCBk
ZXJlZkdQdHI8R3N0VGFnTGlzdD4oR3N0VGFnTGlzdCogcHRyKQogICAgIGlmIChwdHIpCiAgICAg
ICAgIGdzdF90YWdfbGlzdF91bnJlZihwdHIpOwogfQotI2VuZGlmCiAKIHRlbXBsYXRlPD4gR1Jl
ZlB0cjxHc3RFdmVudD4gYWRvcHRHUmVmKEdzdEV2ZW50KiBwdHIpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJH
U3RyZWFtZXIuaAppbmRleCA1ZTA1NjU3ZTU3YzdmNDAyNWNmYTM1NWRmOGJlN2E2NzY3NzNhNDFi
Li4yY2UwYTFkODA4YWUyMjQ1NmVhYjMzOGY1NDA1NTI1NWQzYWMxOThiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVm
UHRyR1N0cmVhbWVyLmgKQEAgLTMxLDEwICszMSw4IEBAIHR5cGVkZWYgc3RydWN0IF9Hc3RUYXNr
IEdzdFRhc2s7CiB0eXBlZGVmIHN0cnVjdCBfR3N0QnVzIEdzdEJ1czsKIHR5cGVkZWYgc3RydWN0
IF9Hc3RFbGVtZW50RmFjdG9yeSBHc3RFbGVtZW50RmFjdG9yeTsKIHR5cGVkZWYgc3RydWN0IF9H
c3RCdWZmZXIgR3N0QnVmZmVyOwotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiB0eXBlZGVmIHN0
cnVjdCBfR3N0U2FtcGxlIEdzdFNhbXBsZTsKIHR5cGVkZWYgc3RydWN0IF9Hc3RUYWdMaXN0IEdz
dFRhZ0xpc3Q7Ci0jZW5kaWYKIHR5cGVkZWYgc3RydWN0IF9Hc3RFdmVudCBHc3RFdmVudDsKIHR5
cGVkZWYgc3RydWN0IF9Hc3RUb2MgR3N0VG9jOwogCkBAIC03MiwxNyArNzAsMTMgQEAgdGVtcGxh
dGU8PiBHUmVmUHRyPEdzdEJ1ZmZlcj4gYWRvcHRHUmVmKEdzdEJ1ZmZlciogcHRyKTsKIHRlbXBs
YXRlPD4gR3N0QnVmZmVyKiByZWZHUHRyPEdzdEJ1ZmZlcj4oR3N0QnVmZmVyKiBwdHIpOwogdGVt
cGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxHc3RCdWZmZXI+KEdzdEJ1ZmZlciogcHRyKTsKIAotI2lm
ZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0vKiBHc3RTYW1wbGUgd2FzIGFkZGVkIGluIEdTdHJlYW1l
ciAxLjAgKi8KIHRlbXBsYXRlPD4gR1JlZlB0cjxHc3RTYW1wbGU+IGFkb3B0R1JlZihHc3RTYW1w
bGUqIHB0cik7CiB0ZW1wbGF0ZTw+IEdzdFNhbXBsZSogcmVmR1B0cjxHc3RTYW1wbGU+KEdzdFNh
bXBsZSogcHRyKTsKIHRlbXBsYXRlPD4gdm9pZCBkZXJlZkdQdHI8R3N0U2FtcGxlPihHc3RTYW1w
bGUqIHB0cik7CiAKLS8qIEdzdFRhZ0xpc3QgaXNuJ3QgcmVmY291bnRlZCBpbiBHU3RyZWFtZXIg
MC4xMCAqLwogdGVtcGxhdGU8PiBHUmVmUHRyPEdzdFRhZ0xpc3Q+IGFkb3B0R1JlZihHc3RUYWdM
aXN0KiBwdHIpOwogdGVtcGxhdGU8PiBHc3RUYWdMaXN0KiByZWZHUHRyPEdzdFRhZ0xpc3Q+KEdz
dFRhZ0xpc3QqIHB0cik7CiB0ZW1wbGF0ZTw+IHZvaWQgZGVyZWZHUHRyPEdzdFRhZ0xpc3Q+KEdz
dFRhZ0xpc3QqIHB0cik7Ci0jZW5kaWYKIAogdGVtcGxhdGU8PiBHUmVmUHRyPEdzdEV2ZW50PiBh
ZG9wdEdSZWYoR3N0RXZlbnQqIHB0cik7CiB0ZW1wbGF0ZTw+IEdzdEV2ZW50KiByZWZHUHRyPEdz
dEV2ZW50PihHc3RFdmVudCogcHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAK
aW5kZXggZmMzODYyZGE4MWI4NDM0ZjBlMTU2YmM2OThkNzM0NzNmN2YzMmU5Ny4uYjc1OGI0YmU1
YjZiMDhhYzZkN2FkYzVlOWQ5M2YzNTZmNmJhYmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0
aWxpdGllcy5jcHAKQEAgLTIxLDkgKzIxLDEwMCBAQAogI2luY2x1ZGUgIkdTdHJlYW1lclV0aWxp
dGllcy5oIgogCiAjaWYgVVNFKEdTVFJFQU1FUikKKworI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRp
by5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRy
Lmg+CiAKK2NvbnN0IGNoYXIqIHdlYmtpdEdzdE1hcEluZm9RdWFya1N0cmluZyA9ICJ3ZWJraXQt
Z3N0LW1hcC1pbmZvIjsKKworR3N0UGFkKiB3ZWJraXRHc3RHaG9zdFBhZEZyb21TdGF0aWNUZW1w
bGF0ZShHc3RTdGF0aWNQYWRUZW1wbGF0ZSogc3RhdGljUGFkVGVtcGxhdGUsIGNvbnN0IGdjaGFy
KiBuYW1lLCBHc3RQYWQqIHRhcmdldCkKK3sKKyAgICBHc3RQYWQqIHBhZDsKKyAgICBHc3RQYWRU
ZW1wbGF0ZSogcGFkVGVtcGxhdGUgPSBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQoc3RhdGlj
UGFkVGVtcGxhdGUpOworCisgICAgaWYgKHRhcmdldCkKKyAgICAgICAgcGFkID0gZ3N0X2dob3N0
X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZShuYW1lLCB0YXJnZXQsIHBhZFRlbXBsYXRlKTsKKyAgICBl
bHNlCisgICAgICAgIHBhZCA9IGdzdF9naG9zdF9wYWRfbmV3X25vX3RhcmdldF9mcm9tX3RlbXBs
YXRlKG5hbWUsIHBhZFRlbXBsYXRlKTsKKworICAgIGdzdF9vYmplY3RfdW5yZWYocGFkVGVtcGxh
dGUpOworCisgICAgcmV0dXJuIHBhZDsKK30KKworI2lmIEVOQUJMRShWSURFTykKK2Jvb2wgZ2V0
VmlkZW9TaXplQW5kRm9ybWF0RnJvbUNhcHMoR3N0Q2FwcyogY2FwcywgV2ViQ29yZTo6SW50U2l6
ZSYgc2l6ZSwgR3N0VmlkZW9Gb3JtYXQmIGZvcm1hdCwgaW50JiBwaXhlbEFzcGVjdFJhdGlvTnVt
ZXJhdG9yLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciwgaW50JiBzdHJpZGUpCit7
CisgICAgR3N0VmlkZW9JbmZvIGluZm87CisKKyAgICBpZiAoIWdzdF9jYXBzX2lzX2ZpeGVkKGNh
cHMpIHx8ICFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNhcHMpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBmb3JtYXQgPSBHU1RfVklERU9fSU5GT19GT1JNQVQoJmluZm8p
OworICAgIHNpemUuc2V0V2lkdGgoR1NUX1ZJREVPX0lORk9fV0lEVEgoJmluZm8pKTsKKyAgICBz
aXplLnNldEhlaWdodChHU1RfVklERU9fSU5GT19IRUlHSFQoJmluZm8pKTsKKyAgICBwaXhlbEFz
cGVjdFJhdGlvTnVtZXJhdG9yID0gR1NUX1ZJREVPX0lORk9fUEFSX04oJmluZm8pOworICAgIHBp
eGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciA9IEdTVF9WSURFT19JTkZPX1BBUl9EKCZpbmZvKTsK
KyAgICBzdHJpZGUgPSBHU1RfVklERU9fSU5GT19QTEFORV9TVFJJREUoJmluZm8sIDApOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKworR3N0QnVmZmVyKiBjcmVhdGVHc3RCdWZmZXIo
R3N0QnVmZmVyKiBidWZmZXIpCit7CisgICAgZ3NpemUgYnVmZmVyU2l6ZSA9IGdzdF9idWZmZXJf
Z2V0X3NpemUoYnVmZmVyKTsKKyAgICBHc3RCdWZmZXIqIG5ld0J1ZmZlciA9IGdzdF9idWZmZXJf
bmV3X2FuZF9hbGxvYyhidWZmZXJTaXplKTsKKworICAgIGlmICghbmV3QnVmZmVyKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIGdzdF9idWZmZXJfY29weV9pbnRvKG5ld0J1ZmZlciwgYnVmZmVy
LCBzdGF0aWNfY2FzdDxHc3RCdWZmZXJDb3B5RmxhZ3M+KEdTVF9CVUZGRVJfQ09QWV9NRVRBREFU
QSksIDAsIGJ1ZmZlclNpemUpOworICAgIHJldHVybiBuZXdCdWZmZXI7Cit9CisKK0dzdEJ1ZmZl
ciogY3JlYXRlR3N0QnVmZmVyRm9yRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQor
eworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jKGxlbmd0
aCk7CisKKyAgICBnc3RfYnVmZmVyX2ZpbGwoYnVmZmVyLCAwLCBkYXRhLCBsZW5ndGgpOworCisg
ICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworY2hhciogZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIoR3N0
QnVmZmVyKiBidWZmZXIpCit7CisgICAgR3N0TWluaU9iamVjdCogbWluaU9iamVjdCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+KGJ1ZmZlcik7CisgICAgR3N0TWFwSW5mbyogbWFw
SW5mbyA9IHN0YXRpY19jYXN0PEdzdE1hcEluZm8qPihnc3RfbWluaV9vYmplY3RfZ2V0X3FkYXRh
KG1pbmlPYmplY3QsIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKHdlYmtpdEdzdE1hcEluZm9R
dWFya1N0cmluZykpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWFwSW5m
by0+ZGF0YSk7Cit9CisKK3ZvaWQgbWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciogYnVmZmVyKQorewor
ICAgIEdzdE1hcEluZm8qIG1hcEluZm8gPSBnX3NsaWNlX25ldyhHc3RNYXBJbmZvKTsKKyAgICBp
ZiAoIWdzdF9idWZmZXJfbWFwKGJ1ZmZlciwgbWFwSW5mbywgR1NUX01BUF9XUklURSkpIHsKKyAg
ICAgICAgZ19zbGljZV9mcmVlKEdzdE1hcEluZm8sIG1hcEluZm8pOworICAgICAgICBnc3RfYnVm
ZmVyX3VucmVmKGJ1ZmZlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHc3RNaW5p
T2JqZWN0KiBtaW5pT2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RNaW5pT2JqZWN0Kj4oYnVm
ZmVyKTsKKyAgICBnc3RfbWluaV9vYmplY3Rfc2V0X3FkYXRhKG1pbmlPYmplY3QsIGdfcXVhcmtf
ZnJvbV9zdGF0aWNfc3RyaW5nKHdlYmtpdEdzdE1hcEluZm9RdWFya1N0cmluZyksIG1hcEluZm8s
IDApOworfQorCit2b2lkIHVubWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciogYnVmZmVyKQoreworICAg
IEdzdE1pbmlPYmplY3QqIG1pbmlPYmplY3QgPSByZWludGVycHJldF9jYXN0PEdzdE1pbmlPYmpl
Y3QqPihidWZmZXIpOworICAgIEdzdE1hcEluZm8qIG1hcEluZm8gPSBzdGF0aWNfY2FzdDxHc3RN
YXBJbmZvKj4oZ3N0X21pbmlfb2JqZWN0X3N0ZWFsX3FkYXRhKG1pbmlPYmplY3QsIGdfcXVhcmtf
ZnJvbV9zdGF0aWNfc3RyaW5nKHdlYmtpdEdzdE1hcEluZm9RdWFya1N0cmluZykpKTsKKworICAg
IGlmICghbWFwSW5mbykKKyAgICAgICAgcmV0dXJuOworCisgICAgZ3N0X2J1ZmZlcl91bm1hcChi
dWZmZXIsIG1hcEluZm8pOworICAgIGdfc2xpY2VfZnJlZShHc3RNYXBJbmZvLCBtYXBJbmZvKTsK
K30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIGluaXRpYWxpemVHU3RyZWFtZXIoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lclV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oCmluZGV4IDNlZGRjYjcxNTkxM2M4OGY4OGM0NWI1
ZmZhMWE1M2NiZjY1ZDE1OTcuLmM4MTBjOWM3OWQ5ZjgxM2Q4MjlmOTU2ZGVlOWViMWFhYzE5Mjk1
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmgKQEAgLTE2LDggKzE2LDEyIEBACiAg
KiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAgKi8KIAorI2luY2x1ZGUgIkludFNpemUuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0
L3ZpZGVvL3ZpZGVvLmg+CisKICNkZWZpbmUgTE9HX01FRElBX01FU1NBR0UoLi4uKSBkbyB7IFwK
ICAgICBHU1RfREVCVUcoX19WQV9BUkdTX18pOyBcCiAgICAgTE9HX1ZFUkJPU0UoTWVkaWEsIF9f
VkFfQVJHU19fKTsgfSB3aGlsZSAoMCkKQEAgLTM0LDYgKzM4LDM3IEBACiAgICAgR1NUX1dBUk5J
TkcoX19WQV9BUkdTX18pOyBcCiAgICAgTE9HX1ZFUkJPU0UoTWVkaWEsIF9fVkFfQVJHU19fKTsg
fSB3aGlsZSAoMCkKIAoraW5saW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1h
am9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8pCit7CisgICAgZ3VpbnQgY3VycmVudE1ham9y
LCBjdXJyZW50TWlub3IsIGN1cnJlbnRNaWNybywgY3VycmVudE5hbm87CisgICAgZ3N0X3ZlcnNp
b24oJmN1cnJlbnRNYWpvciwgJmN1cnJlbnRNaW5vciwgJmN1cnJlbnRNaWNybywgJmN1cnJlbnRO
YW5vKTsKKworICAgIGlmIChjdXJyZW50TWFqb3IgPCBtYWpvcikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmIChjdXJyZW50TWFqb3IgPiBtYWpvcikKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICBpZiAoY3VycmVudE1pbm9yIDwgbWlub3IpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoY3VycmVudE1pbm9yID4gbWlub3IpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgaWYgKGN1cnJlbnRNaWNybyA8IG1pY3JvKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworR3N0UGFkKiB3ZWJraXRHc3RHaG9zdFBhZEZyb21TdGF0aWNU
ZW1wbGF0ZShHc3RTdGF0aWNQYWRUZW1wbGF0ZSosIGNvbnN0IGdjaGFyKiBuYW1lLCBHc3RQYWQq
IHRhcmdldCk7CisjaWYgRU5BQkxFKFZJREVPKQorYm9vbCBnZXRWaWRlb1NpemVBbmRGb3JtYXRG
cm9tQ2FwcyhHc3RDYXBzKiwgV2ViQ29yZTo6SW50U2l6ZSYsIEdzdFZpZGVvRm9ybWF0JiwgaW50
JiBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWlu
YXRvciwgaW50JiBzdHJpZGUpOworI2VuZGlmCitHc3RCdWZmZXIqIGNyZWF0ZUdzdEJ1ZmZlcihH
c3RCdWZmZXIqKTsKK0dzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVyRm9yRGF0YShjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKTsKK2NoYXIqIGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKEdzdEJ1
ZmZlciopOwordm9pZCBtYXBHc3RCdWZmZXIoR3N0QnVmZmVyKik7Cit2b2lkIHVubWFwR3N0QnVm
ZmVyKEdzdEJ1ZmZlciopOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBib29sIGluaXRpYWxpemVH
U3RyZWFtZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVlOTZiMzQyYmJkN2JkNzI0MGRhYzJmMzE0MTU5ODUz
YWFhOTM0NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lv
bmluZy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBJZ2FsaWEsIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBDb2xsYWJvcmEg
THRkLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
ICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJHU3RyZWFt
ZXJWZXJzaW9uaW5nLmgiCi0KLSNpZiBVU0UoR1NUUkVBTUVSKQotI2luY2x1ZGUgIkludFNpemUu
aCIKLQotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0jaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlv
Lmg+Ci0jZWxzZQotI2luY2x1ZGUgPGdzdC9hdWRpby9tdWx0aWNoYW5uZWwuaD4KLSNpbmNsdWRl
IDxzdHJpbmcuaD4KLSNlbmRpZgotCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLWNvbnN0IGNo
YXIqIHdlYmtpdEdzdE1hcEluZm9RdWFya1N0cmluZyA9ICJ3ZWJraXQtZ3N0LW1hcC1pbmZvIjsK
LSNlbmRpZgotCi12b2lkIHdlYmtpdEdzdE9iamVjdFJlZlNpbmsoR3N0T2JqZWN0KiBnc3RPYmpl
Y3QpCi17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBnc3Rfb2JqZWN0X3JlZl9zaW5r
KGdzdE9iamVjdCk7Ci0jZWxzZQotICAgIGdzdF9vYmplY3RfcmVmKGdzdE9iamVjdCk7Ci0gICAg
Z3N0X29iamVjdF9zaW5rKGdzdE9iamVjdCk7Ci0jZW5kaWYKLX0KLQotR3N0UGFkKiB3ZWJraXRH
c3RHaG9zdFBhZEZyb21TdGF0aWNUZW1wbGF0ZShHc3RTdGF0aWNQYWRUZW1wbGF0ZSogc3RhdGlj
UGFkVGVtcGxhdGUsIGNvbnN0IGdjaGFyKiBuYW1lLCBHc3RQYWQqIHRhcmdldCkKLXsKLSAgICBH
c3RQYWQqIHBhZDsKLSAgICBHc3RQYWRUZW1wbGF0ZSogcGFkVGVtcGxhdGUgPSBnc3Rfc3RhdGlj
X3BhZF90ZW1wbGF0ZV9nZXQoc3RhdGljUGFkVGVtcGxhdGUpOwotCi0gICAgaWYgKHRhcmdldCkK
LSAgICAgICAgcGFkID0gZ3N0X2dob3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZShuYW1lLCB0YXJn
ZXQsIHBhZFRlbXBsYXRlKTsKLSAgICBlbHNlCi0gICAgICAgIHBhZCA9IGdzdF9naG9zdF9wYWRf
bmV3X25vX3RhcmdldF9mcm9tX3RlbXBsYXRlKG5hbWUsIHBhZFRlbXBsYXRlKTsKLQotI2lmZGVm
IEdTVF9BUElfVkVSU0lPTl8xCi0gICAgZ3N0X29iamVjdF91bnJlZihwYWRUZW1wbGF0ZSk7Ci0j
ZW5kaWYKLQotICAgIHJldHVybiBwYWQ7Ci19Ci0KLUdSZWZQdHI8R3N0Q2Fwcz4gd2Via2l0R3N0
R2V0UGFkQ2FwcyhHc3RQYWQqIHBhZCkKLXsKLSAgICBpZiAoIXBhZCkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotICAgIHJldHVybiBhZG9wdEdSZWYoZ3N0
X3BhZF9nZXRfY3VycmVudF9jYXBzKHBhZCkpOyAvLyBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMg
cmV0dXJuIGEgbmV3IHJlZmVyZW5jZS4KLSNlbHNlCi0gICAgcmV0dXJuIEdTVF9QQURfQ0FQUyhw
YWQpOwotI2VuZGlmCi19Ci0KLUdSZWZQdHI8R3N0QnVzPiB3ZWJraXRHc3RQaXBlbGluZUdldEJ1
cyhHc3RQaXBlbGluZSogcGlwZWxpbmUpCi17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAg
ICByZXR1cm4gYWRvcHRHUmVmKGdzdF9waXBlbGluZV9nZXRfYnVzKHBpcGVsaW5lKSk7Ci0jZWxz
ZQotICAgIC8vIGdzdF9waXBlbGluZV9nZXRfYnVzIHJldHVybnMgYSBmbG9hdGluZyByZWZlcmVu
Y2UgaW4KLSAgICAvLyBnc3RyZWFtZXIgMC4xMCBzbyB3ZSBzaG91bGQgbm90IGFkb3B0LgotICAg
IHJldHVybiBnc3RfcGlwZWxpbmVfZ2V0X2J1cyhwaXBlbGluZSk7Ci0jZW5kaWYKLX0KLQotI2lm
IEVOQUJMRShWSURFTykKLWJvb2wgZ2V0VmlkZW9TaXplQW5kRm9ybWF0RnJvbUNhcHMoR3N0Q2Fw
cyogY2FwcywgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgR3N0VmlkZW9Gb3JtYXQmIGZvcm1hdCwg
aW50JiBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9EZW5v
bWluYXRvciwgaW50JiBzdHJpZGUpCi17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBH
c3RWaWRlb0luZm8gaW5mbzsKLQotICAgIGlmICghZ3N0X2NhcHNfaXNfZml4ZWQoY2FwcykgfHwg
IWdzdF92aWRlb19pbmZvX2Zyb21fY2FwcygmaW5mbywgY2FwcykpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGZvcm1hdCA9IEdTVF9WSURFT19JTkZPX0ZPUk1BVCgmaW5mbyk7Ci0gICAg
c2l6ZS5zZXRXaWR0aChHU1RfVklERU9fSU5GT19XSURUSCgmaW5mbykpOwotICAgIHNpemUuc2V0
SGVpZ2h0KEdTVF9WSURFT19JTkZPX0hFSUdIVCgmaW5mbykpOwotICAgIHBpeGVsQXNwZWN0UmF0
aW9OdW1lcmF0b3IgPSBHU1RfVklERU9fSU5GT19QQVJfTigmaW5mbyk7Ci0gICAgcGl4ZWxBc3Bl
Y3RSYXRpb0Rlbm9taW5hdG9yID0gR1NUX1ZJREVPX0lORk9fUEFSX0QoJmluZm8pOwotICAgIHN0
cmlkZSA9IEdTVF9WSURFT19JTkZPX1BMQU5FX1NUUklERSgmaW5mbywgMCk7Ci0jZWxzZQotICAg
IGdpbnQgd2lkdGgsIGhlaWdodDsKLSAgICBpZiAoIUdTVF9JU19DQVBTKGNhcHMpIHx8ICFnc3Rf
Y2Fwc19pc19maXhlZChjYXBzKQotICAgICAgICB8fCAhZ3N0X3ZpZGVvX2Zvcm1hdF9wYXJzZV9j
YXBzKGNhcHMsICZmb3JtYXQsICZ3aWR0aCwgJmhlaWdodCkKLSAgICAgICAgfHwgIWdzdF92aWRl
b19wYXJzZV9jYXBzX3BpeGVsX2FzcGVjdF9yYXRpbyhjYXBzLCAmcGl4ZWxBc3BlY3RSYXRpb051
bWVyYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmcGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHNpemUuc2V0V2lkdGgod2lkdGgpOwotICAgIHNpemUuc2V0SGVpZ2h0KGhlaWdodCk7
Ci0gICAgc3RyaWRlID0gc2l6ZS53aWR0aCgpICogNDsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0jZW5kaWYKLQotR3N0QnVmZmVyKiBjcmVhdGVHc3RCdWZmZXIoR3N0QnVmZmVyKiBi
dWZmZXIpCi17Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgR3N0QnVmZmVyKiBuZXdC
dWZmZXIgPSBnc3RfYnVmZmVyX3RyeV9uZXdfYW5kX2FsbG9jKEdTVF9CVUZGRVJfU0laRShidWZm
ZXIpKTsKLSNlbHNlCi0gICAgZ3NpemUgYnVmZmVyU2l6ZSA9IGdzdF9idWZmZXJfZ2V0X3NpemUo
YnVmZmVyKTsKLSAgICBHc3RCdWZmZXIqIG5ld0J1ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FuZF9h
bGxvYyhidWZmZXJTaXplKTsKLSNlbmRpZgotCi0gICAgaWYgKCFuZXdCdWZmZXIpCi0gICAgICAg
IHJldHVybiAwOwotCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgZ3N0X2J1ZmZlcl9j
b3B5X21ldGFkYXRhKG5ld0J1ZmZlciwgYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RCdWZmZXJDb3B5
RmxhZ3M+KEdTVF9CVUZGRVJfQ09QWV9BTEwpKTsKLSNlbHNlCi0gICAgZ3N0X2J1ZmZlcl9jb3B5
X2ludG8obmV3QnVmZmVyLCBidWZmZXIsIHN0YXRpY19jYXN0PEdzdEJ1ZmZlckNvcHlGbGFncz4o
R1NUX0JVRkZFUl9DT1BZX01FVEFEQVRBKSwgMCwgYnVmZmVyU2l6ZSk7Ci0jZW5kaWYKLSAgICBy
ZXR1cm4gbmV3QnVmZmVyOwotfQotCi1Hc3RCdWZmZXIqIGNyZWF0ZUdzdEJ1ZmZlckZvckRhdGEo
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9
IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyhsZW5ndGgpOwotCi0jaWZkZWYgR1NUX0FQSV9WRVJT
SU9OXzEKLSAgICBnc3RfYnVmZmVyX2ZpbGwoYnVmZmVyLCAwLCBkYXRhLCBsZW5ndGgpOwotI2Vs
c2UKLSAgICBtZW1jcHkoR1NUX0JVRkZFUl9EQVRBKGJ1ZmZlciksIGRhdGEsIGxlbmd0aCk7Ci0j
ZW5kaWYKLQotICAgIHJldHVybiBidWZmZXI7Ci19Ci0KLWludCBnZXRHc3RCdWZmZXJTaXplKEdz
dEJ1ZmZlciogYnVmZmVyKQotewotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgcmV0dXJu
IGdzdF9idWZmZXJfZ2V0X3NpemUoYnVmZmVyKTsKLSNlbHNlCi0gICAgcmV0dXJuIEdTVF9CVUZG
RVJfU0laRShidWZmZXIpOwotI2VuZGlmCi19Ci0KLXZvaWQgc2V0R3N0QnVmZmVyU2l6ZShHc3RC
dWZmZXIqIGJ1ZmZlciwgaW50IG5ld1NpemUpCi17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEK
LSAgICBnc3RfYnVmZmVyX3NldF9zaXplKGJ1ZmZlciwgc3RhdGljX2Nhc3Q8Z3NzaXplPihuZXdT
aXplKSk7Ci0jZWxzZQotICAgIEdTVF9CVUZGRVJfU0laRShidWZmZXIpID0gc3RhdGljX2Nhc3Q8
Z3NpemU+KG5ld1NpemUpOwotI2VuZGlmCi19Ci0KLWNoYXIqIGdldEdzdEJ1ZmZlckRhdGFQb2lu
dGVyKEdzdEJ1ZmZlciogYnVmZmVyKQotewotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAg
R3N0TWluaU9iamVjdCogbWluaU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVj
dCo+KGJ1ZmZlcik7Ci0gICAgR3N0TWFwSW5mbyogbWFwSW5mbyA9IHN0YXRpY19jYXN0PEdzdE1h
cEluZm8qPihnc3RfbWluaV9vYmplY3RfZ2V0X3FkYXRhKG1pbmlPYmplY3QsIGdfcXVhcmtfZnJv
bV9zdGF0aWNfc3RyaW5nKHdlYmtpdEdzdE1hcEluZm9RdWFya1N0cmluZykpKTsKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWFwSW5mby0+ZGF0YSk7Ci0jZWxzZQotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihHU1RfQlVGRkVSX0RBVEEoYnVmZmVyKSk7Ci0j
ZW5kaWYKLX0KLQotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi12b2lkIG1hcEdzdEJ1ZmZlcihH
c3RCdWZmZXIqIGJ1ZmZlcikKLXsKLSAgICBHc3RNYXBJbmZvKiBtYXBJbmZvID0gZ19zbGljZV9u
ZXcoR3N0TWFwSW5mbyk7Ci0gICAgaWYgKCFnc3RfYnVmZmVyX21hcChidWZmZXIsIG1hcEluZm8s
IEdTVF9NQVBfV1JJVEUpKSB7Ci0gICAgICAgIGdfc2xpY2VfZnJlZShHc3RNYXBJbmZvLCBtYXBJ
bmZvKTsKLSAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgR3N0TWluaU9iamVjdCogbWluaU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8R3N0TWluaU9iamVjdCo+KGJ1ZmZlcik7Ci0gICAgZ3N0X21pbmlfb2JqZWN0X3NldF9xZGF0
YShtaW5pT2JqZWN0LCBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZyh3ZWJraXRHc3RNYXBJbmZv
UXVhcmtTdHJpbmcpLCBtYXBJbmZvLCAwKTsKLX0KLQotdm9pZCB1bm1hcEdzdEJ1ZmZlcihHc3RC
dWZmZXIqIGJ1ZmZlcikKLXsKLSAgICBHc3RNaW5pT2JqZWN0KiBtaW5pT2JqZWN0ID0gcmVpbnRl
cnByZXRfY2FzdDxHc3RNaW5pT2JqZWN0Kj4oYnVmZmVyKTsKLSAgICBHc3RNYXBJbmZvKiBtYXBJ
bmZvID0gc3RhdGljX2Nhc3Q8R3N0TWFwSW5mbyo+KGdzdF9taW5pX29iamVjdF9zdGVhbF9xZGF0
YShtaW5pT2JqZWN0LCBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZyh3ZWJraXRHc3RNYXBJbmZv
UXVhcmtTdHJpbmcpKSk7Ci0KLSAgICBpZiAoIW1hcEluZm8pCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGdzdF9idWZmZXJfdW5tYXAoYnVmZmVyLCBtYXBJbmZvKTsKLSAgICBnX3NsaWNlX2ZyZWUo
R3N0TWFwSW5mbywgbWFwSW5mbyk7Ci19Ci0jZW5kaWYKLQotdm9pZCBzZXRHc3RFbGVtZW50Q2xh
c3NNZXRhZGF0YShHc3RFbGVtZW50Q2xhc3MqIGVsZW1lbnRDbGFzcywgY29uc3QgY2hhciogbmFt
ZSwgY29uc3QgY2hhciogbG9uZ05hbWUsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uLCBjb25zdCBj
aGFyKiBhdXRob3IpCi17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBnc3RfZWxlbWVu
dF9jbGFzc19zZXRfbWV0YWRhdGEoZWxlbWVudENsYXNzLCBuYW1lLCBsb25nTmFtZSwgZGVzY3Jp
cHRpb24sIGF1dGhvcik7Ci0jZWxzZQotICAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9kZXRhaWxz
X3NpbXBsZShlbGVtZW50Q2xhc3MsIG5hbWUsIGxvbmdOYW1lLCBkZXNjcmlwdGlvbiwgYXV0aG9y
KTsKLSNlbmRpZgotfQotCi1ib29sIGdzdE9iamVjdElzRmxvYXRpbmcoR3N0T2JqZWN0KiBnc3RP
YmplY3QpCi17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICByZXR1cm4gZ19vYmplY3Rf
aXNfZmxvYXRpbmcoR19PQkpFQ1QoZ3N0T2JqZWN0KSk7Ci0jZWxzZQotICAgIHJldHVybiBHU1Rf
T0JKRUNUX0lTX0ZMT0FUSU5HKGdzdE9iamVjdCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBub3RpZnlH
c3RUYWdzT25QYWQoR3N0RWxlbWVudCogZWxlbWVudCwgR3N0UGFkKiBwYWQsIEdzdFRhZ0xpc3Qq
IHRhZ3MpCi17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBVTlVTRURfUEFSQU0oZWxl
bWVudCk7Ci0gICAgZ3N0X3BhZF9wdXNoX2V2ZW50KEdTVF9QQURfQ0FTVChwYWQpLCBnc3RfZXZl
bnRfbmV3X3RhZyh0YWdzKSk7Ci0jZWxzZQotICAgIGdzdF9lbGVtZW50X2ZvdW5kX3RhZ3NfZm9y
X3BhZChlbGVtZW50LCBwYWQsIHRhZ3MpOwotI2VuZGlmCi19Ci0KLSNpZiBFTkFCTEUoV0VCX0FV
RElPKQotR3N0Q2FwcyogZ2V0R3N0QXVkaW9DYXBzKGludCBjaGFubmVscywgZmxvYXQgc2FtcGxl
UmF0ZSkKLXsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotICAgIHJldHVybiBnc3RfY2Fwc19u
ZXdfc2ltcGxlKCJhdWRpby94LXJhdyIsICJyYXRlIiwgR19UWVBFX0lOVCwgc3RhdGljX2Nhc3Q8
aW50PihzYW1wbGVSYXRlKSwKLSAgICAgICAgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgY2hhbm5l
bHMsCi0gICAgICAgICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBnc3RfYXVkaW9fZm9ybWF0X3Rv
X3N0cmluZyhHU1RfQVVESU9fRk9STUFUX0YzMiksCi0gICAgICAgICJsYXlvdXQiLCBHX1RZUEVf
U1RSSU5HLCAiaW50ZXJsZWF2ZWQiLCBOVUxMKTsKLSNlbHNlCi0gICAgcmV0dXJuIGdzdF9jYXBz
X25ld19zaW1wbGUoImF1ZGlvL3gtcmF3LWZsb2F0IiwgInJhdGUiLCBHX1RZUEVfSU5ULCBzdGF0
aWNfY2FzdDxpbnQ+KHNhbXBsZVJhdGUpLAotICAgICAgICAiY2hhbm5lbHMiLCBHX1RZUEVfSU5U
LCBjaGFubmVscywKLSAgICAgICAgImVuZGlhbm5lc3MiLCBHX1RZUEVfSU5ULCBHX0JZVEVfT1JE
RVIsCi0gICAgICAgICJ3aWR0aCIsIEdfVFlQRV9JTlQsIDMyLCBOVUxMKTsKLSNlbmRpZgotfQot
I2VuZGlmCi0KLSNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJz
aW9uaW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MDU1YmI3NDFmZDkwN2Fk
YzI1OWM1YTc4NDMxMzRkNmM1N2VlZmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclZlcnNpb25pbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhLCBTLkwuCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYg
R1N0cmVhbWVyVmVyc2lvbmluZ19oCi0jZGVmaW5lIEdTdHJlYW1lclZlcnNpb25pbmdfaAotI2lm
IFVTRShHU1RSRUFNRVIpCi0KLSNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCi0jaW5jbHVk
ZSA8Z3N0L2dzdC5oPgotI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBJbnRTaXplOwotfTsKLQotaW5saW5lIGJvb2wgd2Via2l0R3N0Q2hl
Y2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8pCi17Ci0gICAg
Z3VpbnQgY3VycmVudE1ham9yLCBjdXJyZW50TWlub3IsIGN1cnJlbnRNaWNybywgY3VycmVudE5h
bm87Ci0gICAgZ3N0X3ZlcnNpb24oJmN1cnJlbnRNYWpvciwgJmN1cnJlbnRNaW5vciwgJmN1cnJl
bnRNaWNybywgJmN1cnJlbnROYW5vKTsKLQotICAgIGlmIChjdXJyZW50TWFqb3IgPCBtYWpvcikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjdXJyZW50TWFqb3IgPiBtYWpvcikKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoY3VycmVudE1pbm9yIDwgbWlub3IpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoY3VycmVudE1pbm9yID4gbWlub3IpCi0gICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgaWYgKGN1cnJlbnRNaWNybyA8IG1pY3JvKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCB3ZWJraXRHc3RPYmpl
Y3RSZWZTaW5rKEdzdE9iamVjdCopOwotR3N0UGFkKiB3ZWJraXRHc3RHaG9zdFBhZEZyb21TdGF0
aWNUZW1wbGF0ZShHc3RTdGF0aWNQYWRUZW1wbGF0ZSosIGNvbnN0IGdjaGFyKiBuYW1lLCBHc3RQ
YWQqIHRhcmdldCk7Ci1HUmVmUHRyPEdzdENhcHM+IHdlYmtpdEdzdEdldFBhZENhcHMoR3N0UGFk
Kik7Ci1HUmVmUHRyPEdzdEJ1cz4gd2Via2l0R3N0UGlwZWxpbmVHZXRCdXMoR3N0UGlwZWxpbmUq
KTsKLSNpZiBFTkFCTEUoVklERU8pCi1ib29sIGdldFZpZGVvU2l6ZUFuZEZvcm1hdEZyb21DYXBz
KEdzdENhcHMqLCBXZWJDb3JlOjpJbnRTaXplJiwgR3N0VmlkZW9Gb3JtYXQmLCBpbnQmIHBpeGVs
QXNwZWN0UmF0aW9OdW1lcmF0b3IsIGludCYgcGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yLCBp
bnQmIHN0cmlkZSk7Ci0jZW5kaWYKLUdzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVyKEdzdEJ1ZmZl
ciopOwotR3N0QnVmZmVyKiBjcmVhdGVHc3RCdWZmZXJGb3JEYXRhKGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW5ndGgpOwotaW50IGdldEdzdEJ1ZmZlclNpemUoR3N0QnVmZmVyKik7Ci12b2lkIHNl
dEdzdEJ1ZmZlclNpemUoR3N0QnVmZmVyKiwgaW50IG5ld1NpemUpOwotY2hhciogZ2V0R3N0QnVm
ZmVyRGF0YVBvaW50ZXIoR3N0QnVmZmVyKik7Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLXZv
aWQgbWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciopOwotdm9pZCB1bm1hcEdzdEJ1ZmZlcihHc3RCdWZm
ZXIqKTsKLSNlbmRpZgotdm9pZCBzZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YShHc3RFbGVtZW50
Q2xhc3MqLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBsb25nTmFtZSwgY29uc3QgY2hh
ciogZGVzY3JpcHRpb24sIGNvbnN0IGNoYXIqIGF1dGhvcik7Ci1ib29sIGdzdE9iamVjdElzRmxv
YXRpbmcoR3N0T2JqZWN0Kik7Ci12b2lkIG5vdGlmeUdzdFRhZ3NPblBhZChHc3RFbGVtZW50Kiwg
R3N0UGFkKiwgR3N0VGFnTGlzdCopOwotI2lmIEVOQUJMRShXRUJfQVVESU8pCi1Hc3RDYXBzKiBn
ZXRHc3RBdWRpb0NhcHMoaW50IGNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsKLSNlbmRpZgot
I2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpCi0jZW5kaWYgLy8gR1N0cmVhbWVyVmVyc2lvbmluZ19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZUdTdHJlYW1lci5oCmluZGV4IDhiNDZjZDY4OGQyZDQzZDBmNmE2Y2RlMGMwNDhm
YWU2YjMxYzRmZWIuLjM4YmYzYjRkMWFkMTNiNjI3NjQxMTc2NmFhZDJiYTE0MGM5NmFiMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZUdTdHJlYW1lci5oCkBAIC0yNCw3ICsyNCwxMCBAQAogCiAjaW5jbHVkZSAiQml0
bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJW
ZXJzaW9uaW5nLmgiCisjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgorCisjaW5jbHVkZSA8
Z3N0L2dzdC5oPgorCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTYwLDcgKzYzLDcgQEAg
Y2xhc3MgSW1hZ2VHU3RyZWFtZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUdTdHJlYW1lcj4g
ewogICAgICAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IG1faW1hZ2U7CiAgICAgICAgIEZsb2F0UmVj
dCBtX2Nyb3BSZWN0OwogCi0jaWYgVVNFKENBSVJPKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lP
Tl8xKQorI2lmIFVTRShDQUlSTykKICAgICAgICAgR1JlZlB0cjxHc3RCdWZmZXI+IG1fYnVmZmVy
OwogICAgICAgICBHc3RNYXBJbmZvIG1fbWFwSW5mbzsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
R1N0cmVhbWVyQ2Fpcm8uY3BwCmluZGV4IDc1ZTEyNmYxYjQ4OTZmNTI1YTY5ZDVjYzk3NDIzZTM0
NjJjNjAxMzIuLjA5MDkyMDdkNzVjZjViNmMyMzAwM2RmYzBhMTQzMjE4ZDExMWYyYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdT
dHJlYW1lckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAKQEAgLTIyLDM0ICsyMiwyOCBAQAogCiAj
aWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQogCisjaW5jbHVkZSAiR1N0cmVhbWVy
VXRpbGl0aWVzLmgiCisKICNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4K
ICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJ
T05fMQogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4KLSNlbmRpZgogCiAKIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogSW1hZ2VHU3Ry
ZWFtZXI6OkltYWdlR1N0cmVhbWVyKEdzdEJ1ZmZlciogYnVmZmVyLCBHc3RDYXBzKiBjYXBzKQot
I2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgOiBtX2J1ZmZlcihidWZmZXIpCi0jZW5kaWYK
IHsKICAgICBHc3RWaWRlb0Zvcm1hdCBmb3JtYXQ7CiAgICAgSW50U2l6ZSBzaXplOwogICAgIGlu
dCBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3Is
IHN0cmlkZTsKICAgICBnZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9tQ2FwcyhjYXBzLCBzaXplLCBm
b3JtYXQsIHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IsIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWlu
YXRvciwgc3RyaWRlKTsKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgZ3N0X2J1ZmZl
cl9tYXAoYnVmZmVyLCAmbV9tYXBJbmZvLCBHU1RfTUFQX1JFQUQpOwogICAgIHVuc2lnbmVkIGNo
YXIqIGJ1ZmZlckRhdGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihtX21hcElu
Zm8uZGF0YSk7Ci0jZWxzZQotICAgIHVuc2lnbmVkIGNoYXIqIGJ1ZmZlckRhdGEgPSByZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihHU1RfQlVGRkVSX0RBVEEoYnVmZmVyKSk7Ci0jZW5k
aWYKIAogICAgIGNhaXJvX2Zvcm1hdF90IGNhaXJvRm9ybWF0OwogI2lmIEdfQllURV9PUkRFUiA9
PSBHX0xJVFRMRV9FTkRJQU4KQEAgLTYyLDEwICs1Niw4IEBAIEltYWdlR1N0cmVhbWVyOjpJbWFn
ZUdTdHJlYW1lcihHc3RCdWZmZXIqIGJ1ZmZlciwgR3N0Q2FwcyogY2FwcykKICAgICBBU1NFUlQo
Y2Fpcm9fc3VyZmFjZV9zdGF0dXMoc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fU1RBVFVTX1NVQ0NF
U1MpOwogICAgIG1faW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKHN1cmZhY2UucmVsZWFzZSgp
KTsKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgaWYgKEdzdFZpZGVvQ3JvcE1ldGEq
IGNyb3BNZXRhID0gZ3N0X2J1ZmZlcl9nZXRfdmlkZW9fY3JvcF9tZXRhKGJ1ZmZlcikpCiAgICAg
ICAgIHNldENyb3BSZWN0KEZsb2F0UmVjdChjcm9wTWV0YS0+eCwgY3JvcE1ldGEtPnksIGNyb3BN
ZXRhLT53aWR0aCwgY3JvcE1ldGEtPmhlaWdodCkpOwotI2VuZGlmCiB9CiAKIEltYWdlR1N0cmVh
bWVyOjp+SW1hZ2VHU3RyZWFtZXIoKQpAQCAtNzUsMTAgKzY3LDggQEAgSW1hZ2VHU3RyZWFtZXI6
On5JbWFnZUdTdHJlYW1lcigpCiAKICAgICBtX2ltYWdlID0gMDsKIAotI2lmZGVmIEdTVF9BUElf
VkVSU0lPTl8xCiAgICAgLy8gV2Uga2VlcCB0aGUgYnVmZmVyIG1lbW9yeSBtYXBwZWQgdW50aWwg
dGhlIGltYWdlIGlzIGRlc3Ryb3llZCBiZWNhdXNlIHRoZSBpbnRlcm5hbAogICAgIC8vIGNhaXJv
X3N1cmZhY2VfdCB3YXMgY3JlYXRlZCB1c2luZyBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9m
b3JfZGF0YSgpLgogICAgIGdzdF9idWZmZXJfdW5tYXAobV9idWZmZXIuZ2V0KCksICZtX21hcElu
Zm8pOwotI2VuZGlmCiB9CiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaApp
bmRleCAyZGI2NWU0ZjVjNmEyYWIxYzFlZTVmNTFlNDhmMzczYzg2YTZlMDQxLi4wM2U0MDFkYTZk
YTNkNDY0ZGIzMTY1ODQ1OTgxYzUyYTkyMjE1MmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0yNiw3
ICsyNiw3IEBACiAjaWZuZGVmIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
cl9oCiAjZGVmaW5lIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcl9oCiAK
LSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFD
SykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVT
RShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2luY2x1ZGUgIkdSZWZQdHJH
U3RyZWFtZXIuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCkBAIC01Nyw2
ICs1Nyw2IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8v
IEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAm
JiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYg
VVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjZW5kaWYgLy8gSW5iYW5k
TWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBjODQ5YjhjZWIwN2Y3
MmM2MzA0OGY4ODc0MTI1ZWZhOGZkZmZmZWRkLi5iZWQxMGZhYTdjMjU1YmY2ZjdmMGVhZTkxNTJm
ODg3MTNiZWI2ZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcu
aCIKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVP
X1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykg
JiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIgogCkBAIC0xNTcsNCArMTU3LDQgQEAgdm9p
ZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mU3RyZWFtQ2hh
bmdlZCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURF
TykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdT
VF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1F
UikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggNDM4OGY5ODBjMDY2YTM2MmUzZjcwNTU0ZmE2
NjMwY2ViNjc3YWQyNi4uYWM1ZDIwNmZiNTYzNGNlNmZiOGUwM2RkMDg3NmU3Y2VlMmIxOTU5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5o
CkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXJfaAogI2RlZmluZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyX2gKIAotI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBk
ZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJF
QU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1l
ci5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKQEAgLTcxLDYgKzcxLDYg
QEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxF
KFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmlu
ZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NU
UkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNlbmRpZiAvLyBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKaW5kZXggNDYwMjk3OTdmMWY2Nzk0MzdmMTY1N2UwMWVkZTExYTVkZDAz
MjdmZS4uYmEzMWM2MzNmZWEyNGZiODNiMTYyOGNiZWQ3OTZhYWEyYzk2NDU5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI3LDcgKzI3
LDYgQEAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAKICNpbmNsdWRlICJH
U3RyZWFtZXJVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCiAj
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUg
Ik1lZGlhUGxheWVyLmgiCkBAIC00MSw3ICs0MCw3IEBACiAjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShW
SURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKICNpbmNs
dWRlICJJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKICNpbmNsdWRl
ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCkBAIC01MCwxMSArNDksNyBAQAog
I2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCiAjZW5kaWYKIAotI2lmZGVm
IEdTVF9BUElfVkVSU0lPTl8xCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL3N0cmVhbXZvbHVtZS5oPgot
I2Vsc2UKLSNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy9zdHJlYW12b2x1bWUuaD4KLSNlbmRpZgog
CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgpAQCAt
NzYsMTggKzcxLDYgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBHU1RfUExBWV9GTEFHX0JVRkZFUklO
RyAgICAgPSAweDAwMDAwMDEwMAogfSBHc3RQbGF5RmxhZ3M7CiAKLS8vIGdQZXJjZW50TWF4IGlz
IHVzZWQgd2hlbiBwYXJzaW5nIGJ1ZmZlcmluZyByYW5nZXMgd2l0aAotLy8gZ3N0X3F1ZXJ5X3Bh
cnNlX250aF9idWZmZXJpbmdfcmFuZ2UgYXMgdGhlcmUgd2FzIGEgYnVnIGluIEdTdHJlYW1lcgot
Ly8gMC4xMCB0aGF0IHdhcyB1c2luZyAxMDAgaW5zdGVhZCBvZiBHU1RfRk9STUFUX1BFUkNFTlRf
TUFYLiBUaGlzIHdhcwotLy8gY29ycmVjdGVkIGluIDEuMC4gZ3N0X3F1ZXJ5X3BhcnNlX2J1ZmZl
cmluZ19yYW5nZSB3b3JrZWQgYXMKLS8vIGV4cGVjdGVkIHdpdGggR1NUX0ZPUk1BVF9QRVJDRU5U
X01BWCBpbiBib3RoIGNhc2VzLgotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi1zdGF0aWMgY29u
c3QgY2hhciogZ1BsYXliaW5OYW1lID0gInBsYXliaW4iOwotc3RhdGljIGNvbnN0IGdpbnQ2NCBn
UGVyY2VudE1heCA9IEdTVF9GT1JNQVRfUEVSQ0VOVF9NQVg7Ci0jZWxzZQotc3RhdGljIGNvbnN0
IGNoYXIqIGdQbGF5YmluTmFtZSA9ICJwbGF5YmluMiI7Ci1zdGF0aWMgY29uc3QgZ2ludDY0IGdQ
ZXJjZW50TWF4ID0gMTAwOwotI2VuZGlmCiAvLyBNYXggaW50ZXJ2YWwgaW4gc2Vjb25kcyB0byBz
dGF5IGluIHRoZSBSRUFEWSBzdGF0ZSBvbiBtYW51YWwKIC8vIHN0YXRlIGNoYW5nZSByZXF1ZXN0
cy4KIHN0YXRpYyBjb25zdCBndWludCBnUmVhZHlTdGF0ZVRpbWVySW50ZXJ2YWwgPSA2MDsKQEAg
LTEzMSwxMiArMTE0LDggQEAgc3RhdGljIGdib29sZWFuIG1lZGlhUGxheWVyUHJpdmF0ZUF1ZGlv
Q2hhbmdlVGltZW91dENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdmF0ZUcKICAgICByZXR1cm4gRkFM
U0U7CiB9CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogc3RhdGljIHZvaWQgc2V0QXVkaW9T
dHJlYW1Qcm9wZXJ0aWVzQ2FsbGJhY2soR3N0Q2hpbGRQcm94eSosIEdPYmplY3QqIG9iamVjdCwg
Z2NoYXIqLAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQotI2Vsc2UK
LXN0YXRpYyB2b2lkIHNldEF1ZGlvU3RyZWFtUHJvcGVydGllc0NhbGxiYWNrKEdzdENoaWxkUHJv
eHkqLCBHT2JqZWN0KiBvYmplY3QsIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVy
KQotI2VuZGlmCiB7CiAgICAgcGxheWVyLT5zZXRBdWRpb1N0cmVhbVByb3BlcnRpZXMob2JqZWN0
KTsKIH0KQEAgLTE1NSw3ICsxMzQsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2
YXRlVmlkZW9DYXBzQ2hhbmdlVGltZW91dENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdgogICAgIHJl
dHVybiBGQUxTRTsKIH0KIAotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1Rf
QVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBzdGF0aWMgdm9pZCBtZWRp
YVBsYXllclByaXZhdGVUZXh0Q2hhbmdlZENhbGxiYWNrKEdPYmplY3QqLCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIqIHBsYXllcikKIHsKICAgICBwbGF5ZXItPnRleHRDaGFuZ2VkKCk7CkBA
IC0yNTAsNyArMjI5LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmlzQXZh
aWxhYmxlKCkKICAgICBpZiAoIWluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdpc3RlcldlYktpdEVs
ZW1lbnRzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVu
dEZhY3Rvcnk+IGZhY3RvcnkgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2ZpbmQoZ1BsYXliaW5OYW1l
KTsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnRGYWN0b3J5PiBmYWN0b3J5ID0gZ3N0X2VsZW1lbnRf
ZmFjdG9yeV9maW5kKCJwbGF5YmluIik7CiAgICAgcmV0dXJuIGZhY3Rvcnk7CiB9CiAKQEAgLTI5
OSw3ICsyNzgsNyBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcihNZWRpYVBsYXllciogcGxheWVyKQogCiBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogewotI2lmIEVOQUJMRShW
SURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2F1ZGlvVHJhY2tzLnNpemUo
KTsgKytpKQogICAgICAgICBtX2F1ZGlvVHJhY2tzW2ldLT5kaXNjb25uZWN0KCk7CiAKQEAgLTMy
NSw3ICszMDQsNyBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIoKQogICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9yZWFkeVRpbWVySGFu
ZGxlcik7CiAKICAgICBpZiAobV9wbGF5QmluKSB7Ci0gICAgICAgIEdSZWZQdHI8R3N0QnVzPiBi
dXMgPSB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUobV9wbGF5QmluLmdldCgp
KSk7CisgICAgICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5l
X2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGxheUJpbi5nZXQoKSkpKTsKICAgICAgICAgQVNTRVJU
KGJ1cyk7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhidXMu
Z2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KG1lZGlhUGxheWVyUHJpdmF0ZU1lc3Nh
Z2VDYWxsYmFjayksIHRoaXMpOwogICAgICAgICBnc3RfYnVzX3JlbW92ZV9zaWduYWxfd2F0Y2go
YnVzLmdldCgpKTsKQEAgLTMzMyw3ICszMTIsNyBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogICAgICAgICBnX3NpZ25hbF9oYW5k
bGVyc19kaXNjb25uZWN0X2J5X2Z1bmMobV9wbGF5QmluLmdldCgpLCByZWludGVycHJldF9jYXN0
PGdwb2ludGVyPihtZWRpYVBsYXllclByaXZhdGVTb3VyY2VDaGFuZ2VkQ2FsbGJhY2spLCB0aGlz
KTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fcGxheUJp
bi5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4obWVkaWFQbGF5ZXJQcml2YXRlVmlk
ZW9DaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlz
Y29ubmVjdF9ieV9mdW5jKG1fcGxheUJpbi5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRl
cj4obWVkaWFQbGF5ZXJQcml2YXRlQXVkaW9DaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKLSNpZiBF
TkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2Z1bmMobV9wbGF5QmluLmdldCgpLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPihtZWRpYVBs
YXllclByaXZhdGVOZXdUZXh0U2FtcGxlQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgZ19zaWdu
YWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fcGxheUJpbi5nZXQoKSwgcmVpbnRlcnBy
ZXRfY2FzdDxncG9pbnRlcj4obWVkaWFQbGF5ZXJQcml2YXRlVGV4dENoYW5nZWRDYWxsYmFjayks
IHRoaXMpOwogI2VuZGlmCkBAIC01NDMsMTEgKzUyMiw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6ZHVyYXRpb24oKSBjb25zdAogICAgIEdzdEZvcm1hdCB0aW1lRm9ybWF0
ID0gR1NUX0ZPUk1BVF9USU1FOwogICAgIGdpbnQ2NCB0aW1lTGVuZ3RoID0gMDsKIAotI2lmZGVm
IEdTVF9BUElfVkVSU0lPTl8xCiAgICAgYm9vbCBmYWlsdXJlID0gIWdzdF9lbGVtZW50X3F1ZXJ5
X2R1cmF0aW9uKG1fcGxheUJpbi5nZXQoKSwgdGltZUZvcm1hdCwgJnRpbWVMZW5ndGgpIHx8IHN0
YXRpY19jYXN0PGd1aW50NjQ+KHRpbWVMZW5ndGgpID09IEdTVF9DTE9DS19USU1FX05PTkU7Ci0j
ZWxzZQotICAgIGJvb2wgZmFpbHVyZSA9ICFnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbihtX3Bs
YXlCaW4uZ2V0KCksICZ0aW1lRm9ybWF0LCAmdGltZUxlbmd0aCkgfHwgdGltZUZvcm1hdCAhPSBH
U1RfRk9STUFUX1RJTUUgfHwgc3RhdGljX2Nhc3Q8Z3VpbnQ2ND4odGltZUxlbmd0aCkgPT0gR1NU
X0NMT0NLX1RJTUVfTk9ORTsKLSNlbmRpZgogICAgIGlmIChmYWlsdXJlKSB7CiAgICAgICAgIExP
R19NRURJQV9NRVNTQUdFKCJUaW1lIGR1cmF0aW9uIHF1ZXJ5IGZhaWxlZCBmb3IgJXMiLCBtX3Vy
bC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIG51bWVyaWNfbGltaXRz
PGZsb2F0Pjo6aW5maW5pdHkoKTsKQEAgLTY4OCw3ICs2NjMsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZWaWRlbygpCiAKICAgICBtX2hhc1ZpZGVv
ID0gbnVtVHJhY2tzID4gMDsKIAotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChH
U1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgZm9yIChnaW50
IGkgPSAwOyBpIDwgbnVtVHJhY2tzOyArK2kpIHsKICAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHBh
ZDsKICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fcGxheUJpbi5nZXQoKSwgImdldC12
aWRlby1wYWQiLCBpLCAmcGFkLm91dFB0cigpLCBOVUxMKTsKQEAgLTc0MSw3ICs3MTYsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygpCiAK
ICAgICBtX2hhc0F1ZGlvID0gbnVtVHJhY2tzID4gMDsKIAotI2lmIEVOQUJMRShWSURFT19UUkFD
SykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CiAgICAgZm9yIChnaW50IGkgPSAwOyBpIDwgbnVtVHJhY2tzOyArK2kpIHsKICAgICAgICAgR1Jl
ZlB0cjxHc3RQYWQ+IHBhZDsKICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fcGxheUJp
bi5nZXQoKSwgImdldC1hdWRpby1wYWQiLCBpLCAmcGFkLm91dFB0cigpLCBOVUxMKTsKQEAgLTc3
MCw3ICs3NDUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxh
eWVyT2ZBdWRpbygpCiAgICAgbV9wbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxh
eWVyRW5naW5lVXBkYXRlZChtX3BsYXllcik7CiB9CiAKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
ICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRleHRDaGFuZ2VkKCkKIHsKICAgICBp
ZiAobV90ZXh0VGltZXJIYW5kbGVyKQpAQCAtOTI3LDggKzkwMiw4IEBAIFBhc3NSZWZQdHI8VGlt
ZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCgpIGNvbnN0CiAg
ICAgZm9yIChndWludCBpbmRleCA9IDA7IGluZGV4IDwgZ3N0X3F1ZXJ5X2dldF9uX2J1ZmZlcmlu
Z19yYW5nZXMocXVlcnkpOyBpbmRleCsrKSB7CiAgICAgICAgIGdpbnQ2NCByYW5nZVN0YXJ0ID0g
MCwgcmFuZ2VTdG9wID0gMDsKICAgICAgICAgaWYgKGdzdF9xdWVyeV9wYXJzZV9udGhfYnVmZmVy
aW5nX3JhbmdlKHF1ZXJ5LCBpbmRleCwgJnJhbmdlU3RhcnQsICZyYW5nZVN0b3ApKQotICAgICAg
ICAgICAgdGltZVJhbmdlcy0+YWRkKHN0YXRpY19jYXN0PGZsb2F0PigocmFuZ2VTdGFydCAqIG1l
ZGlhRHVyYXRpb24pIC8gZ1BlcmNlbnRNYXgpLAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PGZsb2F0PigocmFuZ2VTdG9wICogbWVkaWFEdXJhdGlvbikgLyBnUGVyY2VudE1heCkpOworICAg
ICAgICAgICAgdGltZVJhbmdlcy0+YWRkKHN0YXRpY19jYXN0PGZsb2F0PigocmFuZ2VTdGFydCAq
IG1lZGlhRHVyYXRpb24pIC8gR1NUX0ZPUk1BVF9QRVJDRU5UX01BWCksCisgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KChyYW5nZVN0b3AgKiBtZWRpYUR1cmF0aW9uKSAvIEdTVF9G
T1JNQVRfUEVSQ0VOVF9NQVgpKTsKICAgICB9CiAKICAgICAvLyBGYWxsYmFjayB0byB0aGUgbW9y
ZSBnZW5lcmFsIG1heFRpbWVMb2FkZWQoKSBpZiBubyByYW5nZSBoYXMKQEAgLTEwMzMsMTEgKzEw
MDgsNyBAQCBnYm9vbGVhbiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3Nh
Z2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICBjYXNlIEdTVF9NRVNTQUdFX0JVRkZFUklORzoK
ICAgICAgICAgcHJvY2Vzc0J1ZmZlcmluZ1N0YXRzKG1lc3NhZ2UpOwogICAgICAgICBicmVhazsK
LSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGNhc2UgR1NUX01FU1NBR0VfRFVSQVRJT05f
Q0hBTkdFRDoKLSNlbHNlCi0gICAgY2FzZSBHU1RfTUVTU0FHRV9EVVJBVElPTjoKLSNlbmRpZgog
ICAgICAgICBpZiAobWVzc2FnZVNvdXJjZUlzUGxheWJpbikKICAgICAgICAgICAgIGR1cmF0aW9u
Q2hhbmdlZCgpOwogICAgICAgICBicmVhazsKQEAgLTEwNjIsNyArMTAzMyw3IEBAIGdib29sZWFu
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBt
ZXNzYWdlKQogICAgICAgICAgICAgZ19mcmVlKGRldGFpbCk7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lP
Tl8xKQorI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBjYXNlIEdTVF9NRVNTQUdFX1RPQzoK
ICAgICAgICAgcHJvY2Vzc1RhYmxlT2ZDb250ZW50cyhtZXNzYWdlKTsKICAgICAgICAgYnJlYWs7
CkBAIC0xMDk1LDcgKzEwNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
cHJvY2Vzc0J1ZmZlcmluZ1N0YXRzKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgdXBkYXRlU3Rh
dGVzKCk7CiB9CiAKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9W
RVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVzc2FnZSogbWVzc2FnZSkK
IHsKICAgICBpZiAobV9jaGFwdGVyc1RyYWNrKQpAQCAtMTIzOSwxMSArMTIxMCw3IEBAIHVuc2ln
bmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxCeXRlcygpIGNvbnN0CiAKICAg
ICBHc3RGb3JtYXQgZm10ID0gR1NUX0ZPUk1BVF9CWVRFUzsKICAgICBnaW50NjQgbGVuZ3RoID0g
MDsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGlmIChnc3RfZWxlbWVudF9xdWVyeV9k
dXJhdGlvbihtX3NvdXJjZS5nZXQoKSwgZm10LCAmbGVuZ3RoKSkgewotI2Vsc2UKLSAgICBpZiAo
Z3N0X2VsZW1lbnRfcXVlcnlfZHVyYXRpb24obV9zb3VyY2UuZ2V0KCksICZmbXQsICZsZW5ndGgp
KSB7Ci0jZW5kaWYKICAgICAgICAgSU5GT19NRURJQV9NRVNTQUdFKCJ0b3RhbEJ5dGVzICUiIEdf
R0lOVDY0X0ZPUk1BVCwgbGVuZ3RoKTsKICAgICAgICAgbV90b3RhbEJ5dGVzID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGxlbmd0aCk7CiAgICAgICAgIG1faXNTdHJlYW1pbmcgPSAhbGVuZ3RoOwpA
QCAtMTI1NSw3ICsxMjIyLDYgQEAgdW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp0b3RhbEJ5dGVzKCkgY29uc3QKICAgICBHc3RJdGVyYXRvciogaXRlciA9IGdzdF9lbGVtZW50
X2l0ZXJhdGVfc3JjX3BhZHMobV9zb3VyY2UuZ2V0KCkpOwogICAgIGJvb2wgZG9uZSA9IGZhbHNl
OwogICAgIHdoaWxlICghZG9uZSkgewotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgICAg
IEdWYWx1ZSBpdGVtID0gR19WQUxVRV9JTklUOwogICAgICAgICBzd2l0Y2ggKGdzdF9pdGVyYXRv
cl9uZXh0KGl0ZXIsICZpdGVtKSkgewogICAgICAgICBjYXNlIEdTVF9JVEVSQVRPUl9PSzogewpA
QCAtMTI2NSwxOCArMTIzMSw2IEBAIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6dG90YWxCeXRlcygpIGNvbnN0CiAgICAgICAgICAgICAgICAgbGVuZ3RoID0gcGFkTGVuZ3Ro
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgIGdwb2ludGVy
IGRhdGE7Ci0KLSAgICAgICAgc3dpdGNoIChnc3RfaXRlcmF0b3JfbmV4dChpdGVyLCAmZGF0YSkp
IHsKLSAgICAgICAgY2FzZSBHU1RfSVRFUkFUT1JfT0s6IHsKLSAgICAgICAgICAgIEdSZWZQdHI8
R3N0UGFkPiBwYWQgPSBhZG9wdEdSZWYoR1NUX1BBRF9DQVNUKGRhdGEpKTsKLSAgICAgICAgICAg
IGdpbnQ2NCBwYWRMZW5ndGggPSAwOwotICAgICAgICAgICAgaWYgKGdzdF9wYWRfcXVlcnlfZHVy
YXRpb24ocGFkLmdldCgpLCAmZm10LCAmcGFkTGVuZ3RoKSAmJiBwYWRMZW5ndGggPiBsZW5ndGgp
Ci0gICAgICAgICAgICAgICAgbGVuZ3RoID0gcGFkTGVuZ3RoOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBjYXNlIEdTVF9JVEVSQVRPUl9SRVNZTkM6CiAg
ICAgICAgICAgICBnc3RfaXRlcmF0b3JfcmVzeW5jKGl0ZXIpOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC0xMjg3LDkgKzEyNDEsNyBAQCB1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OnRvdGFsQnl0ZXMoKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAot
I2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgICAgIGdfdmFsdWVfdW5zZXQoJml0ZW0pOwot
I2VuZGlmCiAgICAgfQogCiAgICAgZ3N0X2l0ZXJhdG9yX2ZyZWUoaXRlcik7CkBAIC0xOTA1LDEw
ICsxODU3LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQ
bGF5QmluKCkKIAogICAgIC8vIGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgpIHJldHVybnMgYSBm
bG9hdGluZyByZWZlcmVuY2Ugc28KICAgICAvLyB3ZSBzaG91bGQgbm90IGFkb3B0LgotICAgIG1f
cGxheUJpbiA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZShnUGxheWJpbk5hbWUsICJwbGF5Iik7
CisgICAgbV9wbGF5QmluID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJwbGF5YmluIiwgInBs
YXkiKTsKICAgICBzZXRTdHJlYW1Wb2x1bWVFbGVtZW50KEdTVF9TVFJFQU1fVk9MVU1FKG1fcGxh
eUJpbi5nZXQoKSkpOwogCi0gICAgR1JlZlB0cjxHc3RCdXM+IGJ1cyA9IHdlYmtpdEdzdFBpcGVs
aW5lR2V0QnVzKEdTVF9QSVBFTElORShtX3BsYXlCaW4uZ2V0KCkpKTsKKyAgICBHUmVmUHRyPEdz
dEJ1cz4gYnVzID0gYWRvcHRHUmVmKGdzdF9waXBlbGluZV9nZXRfYnVzKEdTVF9QSVBFTElORSht
X3BsYXlCaW4uZ2V0KCkpKSk7CiAgICAgZ3N0X2J1c19hZGRfc2lnbmFsX3dhdGNoKGJ1cy5nZXQo
KSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChidXMuZ2V0KCksICJtZXNzYWdlIiwgR19DQUxMQkFD
SyhtZWRpYVBsYXllclByaXZhdGVNZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKIApAQCAtMTkxNyw3
ICsxODY5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBs
YXlCaW4oKQogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wbGF5QmluLmdldCgpLCAibm90aWZ5Ojpz
b3VyY2UiLCBHX0NBTExCQUNLKG1lZGlhUGxheWVyUHJpdmF0ZVNvdXJjZUNoYW5nZWRDYWxsYmFj
ayksIHRoaXMpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wbGF5QmluLmdldCgpLCAidmlkZW8t
Y2hhbmdlZCIsIEdfQ0FMTEJBQ0sobWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DaGFuZ2VkQ2FsbGJh
Y2spLCB0aGlzKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fcGxheUJpbi5nZXQoKSwgImF1ZGlv
LWNoYW5nZWQiLCBHX0NBTExCQUNLKG1lZGlhUGxheWVyUHJpdmF0ZUF1ZGlvQ2hhbmdlZENhbGxi
YWNrKSwgdGhpcyk7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElf
VkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAod2Via2l0R3N0Q2hl
Y2tWZXJzaW9uKDEsIDEsIDIpKSB7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wbGF5Qmlu
LmdldCgpLCAidGV4dC1jaGFuZ2VkIiwgR19DQUxMQkFDSyhtZWRpYVBsYXllclByaXZhdGVUZXh0
Q2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuaAppbmRleCBkN2Y1M2M0MzZlZGQ1ZDViYmJhOWMxZjg5N2Q5M2Q0ZWVm
NTM0ZWZmLi43ZjZlMmQ2N2E3NmYwYmI3YjU3ZTljOWJkMjdjMTJjMWU2Nzk3ODlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0xMDAsNyArMTAw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5UGxheWVyT2ZWaWRlb0NhcHMoKTsKICAgICB2
b2lkIG5vdGlmeVBsYXllck9mQXVkaW8oKTsKIAotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYg
ZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAg
dm9pZCB0ZXh0Q2hhbmdlZCgpOwogICAgIHZvaWQgbm90aWZ5UGxheWVyT2ZUZXh0KCk7CiAKQEAg
LTE0Myw3ICsxNDMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXREb3dubG9hZEJ1ZmZlcmlu
ZygpOwogICAgIHZvaWQgcHJvY2Vzc0J1ZmZlcmluZ1N0YXRzKEdzdE1lc3NhZ2UqKTsKLSNpZiBF
TkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50cyhHc3RNZXNz
YWdlKik7CiAgICAgdm9pZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkoR3N0VG9jRW50cnkq
LCBHc3RUb2NFbnRyeSogcGFyZW50KTsKICNlbmRpZgpAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZh
dGU6CiBwcml2YXRlOgogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9wbGF5QmluOwogICAgIEdS
ZWZQdHI8R3N0RWxlbWVudD4gbV9zb3VyY2U7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBk
ZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBH
UmVmUHRyPEdzdEVsZW1lbnQ+IG1fdGV4dEFwcFNpbms7CiAgICAgR1JlZlB0cjxHc3RQYWQ+IG1f
dGV4dEFwcFNpbmtQYWQ7CiAjZW5kaWYKQEAgLTE5OCw3ICsxOTgsNyBAQCBwcml2YXRlOgogICAg
IEdzdFN0YXRlIG1fcmVxdWVzdGVkU3RhdGU7CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX2F1
dG9BdWRpb1Npbms7CiAgICAgYm9vbCBtX21pc3NpbmdQbHVnaW5zOwotI2lmIEVOQUJMRShWSURF
T19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCiAgICAgVmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4+IG1f
YXVkaW9UcmFja3M7CiAgICAgVmVjdG9yPFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyPj4gbV90ZXh0VHJhY2tzOwogICAgIFZlY3RvcjxSZWZQdHI8VmlkZW9UcmFja1ByaXZh
dGVHU3RyZWFtZXI+PiBtX3ZpZGVvVHJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IDk5NWRkOGRhNGQ3YjczZGI4NTdh
YTYzOThkZDcwOTlkNDhkNGMyNTguLmE5N2I0ZmI3ZmQ3ODQwNWI5MjViODk2N2I5MTgxOTJiODdl
ZDYzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIK
ICNpbmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJWZXJz
aW9uaW5nLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NUeXBlcy5oIgogI2luY2x1ZGUgIkltYWdlR1N0cmVhbWVyLmgiCkBAIC00MSwxMSArNDAsNyBA
QAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
LSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogI2luY2x1ZGUgPGdzdC9hdWRpby9zdHJlYW12b2x1
bWUuaD4KLSNlbHNlCi0jaW5jbHVkZSA8Z3N0L2ludGVyZmFjZXMvc3RyZWFtdm9sdW1lLmg+Ci0j
ZW5kaWYKIAogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDEsIDApICYmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJHTC5oIgpAQCAtMTY0LDEzICsxNTksNyBAQCBJbnRTaXplIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6Om5hdHVyYWxTaXplKCkgY29uc3QKICAgICBpZiAoIW1fdmlkZW9T
aXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1fdmlkZW9TaXplOwogCi0jaWZkZWYgR1NU
X0FQSV9WRVJTSU9OXzEKICAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHMgPSBjdXJyZW50VmlkZW9T
aW5rQ2FwcygpOwotI2Vsc2UKLSAgICBnX211dGV4X2xvY2sobV9idWZmZXJNdXRleCk7Ci0gICAg
R1JlZlB0cjxHc3RDYXBzPiBjYXBzID0gbV9idWZmZXIgPyBHU1RfQlVGRkVSX0NBUFMobV9idWZm
ZXIpIDogMDsKLSAgICBnX211dGV4X3VubG9jayhtX2J1ZmZlck11dGV4KTsKLSNlbmRpZgogICAg
IGlmICghY2FwcykKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIApAQCAtMzI0LDExICszMTMs
NyBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnVwZGF0ZVRleHR1cmUoVGV4dHVyZQogICAgIH0KIAogICAgIGNvbnN0IHZvaWQqIHNy
Y0RhdGEgPSAwOwotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgR1JlZlB0cjxHc3RDYXBz
PiBjYXBzID0gY3VycmVudFZpZGVvU2lua0NhcHMoKTsKLSNlbHNlCi0gICAgR1JlZlB0cjxHc3RD
YXBzPiBjYXBzID0gR1NUX0JVRkZFUl9DQVBTKG1fYnVmZmVyKTsKLSNlbmRpZgogICAgIGlmICgh
Y2FwcykgewogICAgICAgICBnX211dGV4X3VubG9jayhtX2J1ZmZlck11dGV4KTsKICAgICAgICAg
cmV0dXJuIDA7CkBAIC0zNTksMTkgKzM0NCwxMyBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoVGV4dHVyZQog
ICAgIH0KICNlbmRpZgogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBHc3RNYXBJbmZv
IHNyY0luZm87CiAgICAgZ3N0X2J1ZmZlcl9tYXAobV9idWZmZXIsICZzcmNJbmZvLCBHU1RfTUFQ
X1JFQUQpOwogICAgIHNyY0RhdGEgPSBzcmNJbmZvLmRhdGE7Ci0jZWxzZQotICAgIHNyY0RhdGEg
PSBHU1RfQlVGRkVSX0RBVEEobV9idWZmZXIpOwotI2VuZGlmCiAKICAgICB0ZXh0dXJlLT51cGRh
dGVDb250ZW50cyhzcmNEYXRhLCBXZWJDb3JlOjpJbnRSZWN0KFdlYkNvcmU6OkludFBvaW50KDAs
IDApLCBzaXplKSwgV2ViQ29yZTo6SW50UG9pbnQoMCwgMCksIHN0cmlkZSwgQml0bWFwVGV4dHVy
ZTo6VXBkYXRlQ2Fubm90TW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwogCi0jaWZkZWYgR1NUX0FQ
SV9WRVJTSU9OXzEKICAgICBnc3RfYnVmZmVyX3VubWFwKG1fYnVmZmVyLCAmc3JjSW5mbyk7Ci0j
ZW5kaWYKIAogICAgIGdfbXV0ZXhfdW5sb2NrKG1fYnVmZmVyTXV0ZXgpOwogICAgIHJldHVybiB0
ZXh0dXJlOwpAQCAtNDIwLDExICszOTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBHUmVm
UHRyPEdzdENhcHM+IGNhcHMgPSBjdXJyZW50VmlkZW9TaW5rQ2FwcygpOwotI2Vsc2UKLSAgICBH
UmVmUHRyPEdzdENhcHM+IGNhcHMgPSBHU1RfQlVGRkVSX0NBUFMobV9idWZmZXIpOwotI2VuZGlm
CiAgICAgaWYgKCFjYXBzKSB7CiAgICAgICAgIGdfbXV0ZXhfdW5sb2NrKG1fYnVmZmVyTXV0ZXgp
OwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVGV4dENvbWJpbmVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIuY3Bw
CmluZGV4IGY5MjI4NDViYzliNjk1MzA2OWQzYzY5NDgzMGNhMmZjNjU0NDhiMTAuLmMwZWJlN2Mw
MWRiMDA2MGE2NThjNWRiNDUyYzhhNzA2NjRkN2M1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29t
YmluZXJHU3RyZWFtZXIuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJ
REVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURF
TykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAi
VGV4dENvbWJpbmVyR1N0cmVhbWVyLmgiCiAKQEAgLTI5MSw0ICsyOTEsNCBAQCBHc3RFbGVtZW50
KiB3ZWJraXRUZXh0Q29tYmluZXJOZXcoKQogICAgIHJldHVybiBHU1RfRUxFTUVOVChnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfVEVYVF9DT01CSU5FUiwgMCkpOwogfQogCi0jZW5kaWYgLy8gRU5B
QkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRl
ZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0Uo
R1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dENvbWJpbmVyR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dENvbWJpbmVy
R1N0cmVhbWVyLmgKaW5kZXggYTE5MzAzZGMyNTEwYzhiZTgxNDBmNGQzNTE5ZDAxYzMzMjk1OGNj
OS4uMjBjNTc5Njk3ZTQ2ODM0ZjM4MDQ3YjM1MDQzZjdhYTRjYmI5ZTJiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRDb21iaW5lckdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9UZXh0Q29tYmluZXJHU3RyZWFtZXIuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBUZXh0
Q29tYmluZXJHU3RyZWFtZXJfaAogI2RlZmluZSBUZXh0Q29tYmluZXJHU3RyZWFtZXJfaAogCi0j
aWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0sp
ICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0Uo
R1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNpbmNsdWRlIDxnbGliLW9iamVj
dC5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KQEAgLTYyLDUgKzYyLDUgQEAgc3RydWN0IF9XZWJL
aXRUZXh0Q29tYmluZXJDbGFzcyB7CiAKIEdzdEVsZW1lbnQqIHdlYmtpdFRleHRDb21iaW5lck5l
dygpOwogCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFC
TEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8g
RU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9UZXh0U2lua0dTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVGV4dFNpbmtHU3RyZWFtZXIuY3BwCmluZGV4IDE0ZmQ0NjkyYmJmM2Ey
ZGE5MDhkZTdkNzA0ZWJiYjlhNmQ0YTBhMzcuLjY3OGU3YWMzNTZlZDVjNWFmZmUzM2Q2MGE4ZDA1
Nzg1MDBmY2I5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UZXh0U2lua0dTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRTaW5rR1N0cmVhbWVyLmNwcApAQCAtMjQsNyAr
MjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBFTkFCTEUoVklERU8pICYm
IFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJ
X1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJM
RShWSURFT19UUkFDSykKIAogI2luY2x1ZGUgIlRleHRTaW5rR1N0cmVhbWVyLmgiCiAKQEAgLTk4
LDQgKzk4LDQgQEAgR3N0RWxlbWVudCogd2Via2l0VGV4dFNpbmtOZXcoKQogICAgIHJldHVybiBH
U1RfRUxFTUVOVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVEVYVF9TSU5LLCAwKSk7CiB9CiAK
LSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURF
T19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNlbmRpZiAvLyBFTkFCTEUo
VklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0U2lua0dT
dHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Rl
eHRTaW5rR1N0cmVhbWVyLmgKaW5kZXggNmM2YjZhYmRjMzk3NTQ1NzQzNzAwODZiNDUyNDYzN2Jk
ODY1MGUwMi4uZDA5YmU4NjJiODllZmQzNzIzZDI2OTEyMDlmNTUyYTE5MGMxMDk2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRTaW5r
R1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1RleHRTaW5rR1N0cmVhbWVyLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgVGV4dFNp
bmtHU3RyZWFtZXJfaAogI2RlZmluZSBUZXh0U2lua0dTdHJlYW1lcl9oCiAKLSNpZiBFTkFCTEUo
VklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5l
ZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIp
ICYmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5j
bHVkZSA8Z3N0L2FwcC9nc3RhcHBzaW5rLmg+CkBAIC02MSw1ICs2MSw1IEBAIHN0cnVjdCBfV2Vi
S2l0VGV4dFNpbmtDbGFzcyB7CiAKIEdzdEVsZW1lbnQqIHdlYmtpdFRleHRTaW5rTmV3KCk7CiAK
LSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURF
T19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNlbmRpZiAvLyBFTkFCTEUo
VklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Ry
YWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCmluZGV4IGIzMjAx
NTc1N2NhNWNkMGI5NTY4NTlmMjNiZGRiOTM3ZTM3NWFiNWEuLmJkN2E2OGRjNWVkZTcyNDI3NmVm
YmFiN2I3ZTA2NTkwZjE1MDQ2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
Ci0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJB
Q0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPKSAmJiBV
U0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNpbmNsdWRlICJUcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyLmgiCiAKQEAgLTE2Miw0ICsxNjIsNCBAQCB2b2lkIFRyYWNrUHJp
dmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZUYWdzQ2hhbmdlZCgpCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1F
UikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQor
I2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVP
X1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmgKaW5kZXgg
OTk1ZGE0ZmY4YTdmMWU1MGE2MDQ1NzBmNjcwNzI5NGNiNDliMTZhYi4uNGZhZjliMjU4NzUyMjg2
NmRhOGQ2Zjc3ZGUzYzk0NTczOTkyMmNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRl
QmFzZUdTdHJlYW1lci5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXJfaAogI2RlZmluZSBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyX2gKIAotI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAm
JiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdT
VFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJl
YW1lci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzEsNiArNzEsNiBA
QCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUo
VklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5l
ZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RS
RUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2VuZGlmIC8vIFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAppbmRleCBmMjQz
MjNkNzc2NGM1YTFhN2U4YjU5ODRjY2MwOGJiNjYwODdkM2ExLi5jN2FlNzFjNjJhNTBlZjcyNzk4
NGIzNWU5NWJhMTNkOTZlNGFkM2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNw
cApAQCAtMzAsMTcgKzMwLDE0IEBACiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFN
RVIpCiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgotI2luY2x1ZGUgIkdTdHJlYW1lclZl
cnNpb25pbmcuaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJ
bnRTaXplLmgiCiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpZmRl
ZiBHU1RfQVBJX1ZFUlNJT05fMQogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4K
LSNlbmRpZgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogLy8gQ0FJUk9fRk9STUFUX1JHQjI0
IHVzZWQgdG8gcmVuZGVyIHRoZSB2aWRlbyBidWZmZXJzIGlzIGxpdHRsZS9iaWcgZW5kaWFuIGRl
cGVuZGFudC4KLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogI2lmIEdfQllURV9PUkRFUiA9PSBH
X0xJVFRMRV9FTkRJQU4KICNkZWZpbmUgR1NUX0NBUFNfRk9STUFUICJ7IEJHUngsIEJHUkEgfSIK
ICNlbHNlCkBAIC01MSwxNyArNDgsOCBAQAogI2Vsc2UKICNkZWZpbmUgR1NUX0ZFQVRVUkVEX0NB
UFMKICNlbmRpZgotI2VuZGlmIC8vIEdTVF9BUElfVkVSU0lPTl8xCiAKLSNpZmRlZiBHU1RfQVBJ
X1ZFUlNJT05fMQogI2RlZmluZSBXRUJLSVRfVklERU9fU0lOS19QQURfQ0FQUyBHU1RfRkVBVFVS
RURfQ0FQUyBHU1RfVklERU9fQ0FQU19NQUtFKEdTVF9DQVBTX0ZPUk1BVCkKLSNlbHNlCi0jaWYg
R19CWVRFX09SREVSID09IEdfTElUVExFX0VORElBTgotI2RlZmluZSBXRUJLSVRfVklERU9fU0lO
S19QQURfQ0FQUyBHU1RfVklERU9fQ0FQU19CR1J4ICI7IiBHU1RfVklERU9fQ0FQU19CR1JBCi0j
ZWxzZQotI2RlZmluZSBXRUJLSVRfVklERU9fU0lOS19QQURfQ0FQUyBHU1RfVklERU9fQ0FQU194
UkdCICI7IiBHU1RfVklERU9fQ0FQU19BUkdCCi0jZW5kaWYKLSNlbmRpZiAvLyBHU1RfQVBJX1ZF
UlNJT05fMQogCiBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc19zaW5rVGVtcGxhdGUgPSBH
U1RfU1RBVElDX1BBRF9URU1QTEFURSgic2luayIsIEdTVF9QQURfU0lOSywgR1NUX1BBRF9BTFdB
WVMsIEdTVF9TVEFUSUNfQ0FQUyhXRUJLSVRfVklERU9fU0lOS19QQURfQ0FQUykpOwogCkBAIC04
Nyw5ICs3NSw3IEBAIHN0cnVjdCBfV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSB7CiAgICAgR011dGV4
KiBidWZmZXJNdXRleDsKICAgICBHQ29uZCogZGF0YUNvbmRpdGlvbjsKIAotI2lmZGVmIEdTVF9B
UElfVkVSU0lPTl8xCiAgICAgR3N0VmlkZW9JbmZvIGluZm87Ci0jZW5kaWYKIAogICAgIEdzdENh
cHMqIGN1cnJlbnRDYXBzOwogCkBAIC0xMjEsOSArMTA3LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0
X3ZpZGVvX3NpbmtfaW5pdChXZWJLaXRWaWRlb1NpbmsqIHNpbmspCiAgICAgc2luay0+cHJpdi0+
YnVmZmVyTXV0ZXggPSBnX211dGV4X25ldygpOwogI2VuZGlmCiAKLSNpZmRlZiBHU1RfQVBJX1ZF
UlNJT05fMQogICAgIGdzdF92aWRlb19pbmZvX2luaXQoJnNpbmstPnByaXYtPmluZm8pOwotI2Vu
ZGlmCiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRWaWRlb1NpbmtUaW1lb3V0Q2FsbGJhY2so
Z3BvaW50ZXIgZGF0YSkKQEAgLTE2NCwyMyArMTQ4LDEyIEBAIHN0YXRpYyBHc3RGbG93UmV0dXJu
IHdlYmtpdFZpZGVvU2lua1JlbmRlcihHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdEJ1ZmZlciog
YnVmCiAKICAgICBwcml2LT5idWZmZXIgPSBnc3RfYnVmZmVyX3JlZihidWZmZXIpOwogCi0jaWZu
ZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgLy8gRm9yIHRoZSB1bmxpa2VseSBjYXNlIHdoZXJl
IHRoZSBidWZmZXIgaGFzIG5vIGNhcHMsIHRoZSBjYXBzCi0gICAgLy8gYXJlIGltcGxpY2l0ZWx5
IHRoZSBjYXBzIG9mIHRoZSBwYWQuIFRoaXMgc2hvdWxkbid0IGhhcHBlbi4KLSAgICBpZiAoVU5M
SUtFTFkoIUdTVF9CVUZGRVJfQ0FQUyhidWZmZXIpKSkgewotICAgICAgICBidWZmZXIgPSBwcml2
LT5idWZmZXIgPSBnc3RfYnVmZmVyX21ha2VfbWV0YWRhdGFfd3JpdGFibGUocHJpdi0+YnVmZmVy
KTsKLSAgICAgICAgZ3N0X2J1ZmZlcl9zZXRfY2Fwcyhwcml2LT5idWZmZXIsIEdTVF9QQURfQ0FQ
UyhHU1RfQkFTRV9TSU5LX1BBRChiYXNlU2luaykpKTsKLSAgICB9Ci0KLSAgICBHUmVmUHRyPEdz
dENhcHM+IGNhcHMgPSBHU1RfQlVGRkVSX0NBUFMoYnVmZmVyKTsKLSNlbHNlCiAgICAgR1JlZlB0
cjxHc3RDYXBzPiBjYXBzOwogICAgIC8vIFRoZSB2aWRlbyBpbmZvIHN0cnVjdHVyZSBpcyB2YWxp
ZCBvbmx5IGlmIHRoZSBzaW5rIGhhbmRsZWQgYW4gYWxsb2NhdGlvbiBxdWVyeS4KICAgICBpZiAo
R1NUX1ZJREVPX0lORk9fRk9STUFUKCZwcml2LT5pbmZvKSAhPSBHU1RfVklERU9fRk9STUFUX1VO
S05PV04pCiAgICAgICAgIGNhcHMgPSBhZG9wdEdSZWYoZ3N0X3ZpZGVvX2luZm9fdG9fY2Fwcygm
cHJpdi0+aW5mbykpOwogICAgIGVsc2UKICAgICAgICAgY2FwcyA9IHByaXYtPmN1cnJlbnRDYXBz
OwotI2VuZGlmCiAKICAgICBHc3RWaWRlb0Zvcm1hdCBmb3JtYXQ7CiAgICAgV2ViQ29yZTo6SW50
U2l6ZSBzaXplOwpAQCAtMjExLDE3ICsxODQsMTIgQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4gd2Vi
a2l0VmlkZW9TaW5rUmVuZGVyKEdzdEJhc2VTaW5rKiBiYXNlU2luaywgR3N0QnVmZmVyKiBidWYK
ICAgICAgICAgLy8gb25lIGZ1bmN0aW9uIGNhbGwgcGVyIHZpZGVvIHBpeGVsIGlzIGp1c3QgdG9v
IGV4cGVuc2l2ZToKICAgICAgICAgLy8gRm9yIDcyMHAvUEFMIGZvciBleGFtcGxlIHRoaXMgbWVh
bnMgMTI4MCo3MjAqMjU9MjMwNDAwMDAKICAgICAgICAgLy8gZnVuY3Rpb24gY2FsbHMgcGVyIHNl
Y29uZCEKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICAgICAgY29uc3QgZ3VpbnQ4KiBz
b3VyY2UgPSBHU1RfQlVGRkVSX0RBVEEoYnVmZmVyKTsKLSAgICAgICAgZ3VpbnQ4KiBkZXN0aW5h
dGlvbiA9IEdTVF9CVUZGRVJfREFUQShuZXdCdWZmZXIpOwotI2Vsc2UKICAgICAgICAgR3N0TWFw
SW5mbyBzb3VyY2VJbmZvOwogICAgICAgICBHc3RNYXBJbmZvIGRlc3RpbmF0aW9uSW5mbzsKICAg
ICAgICAgZ3N0X2J1ZmZlcl9tYXAoYnVmZmVyLCAmc291cmNlSW5mbywgR1NUX01BUF9SRUFEKTsK
ICAgICAgICAgY29uc3QgZ3VpbnQ4KiBzb3VyY2UgPSBjb25zdF9jYXN0PGd1aW50OCo+KHNvdXJj
ZUluZm8uZGF0YSk7CiAgICAgICAgIGdzdF9idWZmZXJfbWFwKG5ld0J1ZmZlciwgJmRlc3RpbmF0
aW9uSW5mbywgR1NUX01BUF9XUklURSk7CiAgICAgICAgIGd1aW50OCogZGVzdGluYXRpb24gPSBz
dGF0aWNfY2FzdDxndWludDgqPihkZXN0aW5hdGlvbkluZm8uZGF0YSk7Ci0jZW5kaWYKIAogICAg
ICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHNpemUuaGVpZ2h0KCk7IHgrKykgewogICAgICAgICAg
ICAgZm9yIChpbnQgeSA9IDA7IHkgPCBzaXplLndpZHRoKCk7IHkrKykgewpAQCAtMjQzLDEwICsy
MTEsOCBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJraXRWaWRlb1NpbmtSZW5kZXIoR3N0QmFz
ZVNpbmsqIGJhc2VTaW5rLCBHc3RCdWZmZXIqIGJ1ZgogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgICAgICBnc3RfYnVmZmVyX3VubWFwKGJ1
ZmZlciwgJnNvdXJjZUluZm8pOwogICAgICAgICBnc3RfYnVmZmVyX3VubWFwKG5ld0J1ZmZlciwg
JmRlc3RpbmF0aW9uSW5mbyk7Ci0jZW5kaWYKICAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZm
ZXIpOwogICAgICAgICBidWZmZXIgPSBwcml2LT5idWZmZXIgPSBuZXdCdWZmZXI7CiAgICAgfQpA
QCAtMzc1LDE5ICszNDEsMTYgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFZpZGVvU2lua1NldENh
cHMoR3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBHc3RDYXBzKiBjYXBzKQogCiAgICAgR1NUX0RFQlVH
X09CSkVDVChzaW5rLCAiQ3VycmVudCBjYXBzICUiIEdTVF9QVFJfRk9STUFUICIsIHNldHRpbmcg
Y2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgcHJpdi0+Y3VycmVudENhcHMsIGNhcHMpOwogCi0jaWZk
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBHc3RWaWRlb0luZm8gaW5mbzsKICAgICBpZiAoIWdz
dF92aWRlb19pbmZvX2Zyb21fY2FwcygmaW5mbywgY2FwcykpIHsKICAgICAgICAgR1NUX0VSUk9S
X09CSkVDVChzaW5rLCAiSW52YWxpZCBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKICAg
ICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KLSNlbmRpZgogCiAgICAgZ3N0X2NhcHNfcmVwbGFj
ZSgmcHJpdi0+Y3VycmVudENhcHMsIGNhcHMpOwogICAgIHJldHVybiBUUlVFOwogfQogCi0jaWZk
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRWaWRlb1NpbmtQcm9w
b3NlQWxsb2NhdGlvbihHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdFF1ZXJ5KiBxdWVyeSkKIHsK
ICAgICBHc3RDYXBzKiBjYXBzOwpAQCAtNDA2LDMwICszNjksNiBAQCBzdGF0aWMgZ2Jvb2xlYW4g
d2Via2l0VmlkZW9TaW5rUHJvcG9zZUFsbG9jYXRpb24oR3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBH
c3RRdWVyeQogI2VuZGlmCiAgICAgcmV0dXJuIFRSVUU7CiB9Ci0jZW5kaWYKLQotI2lmbmRlZiBH
U1RfQVBJX1ZFUlNJT05fMQotc3RhdGljIHZvaWQgd2Via2l0VmlkZW9TaW5rTWFyc2hhbFZvaWRB
bmRNaW5pT2JqZWN0KEdDbG9zdXJlKiBjbG9zdXJlLCBHVmFsdWUqLCBndWludCBwYXJhbWV0ZXJz
TnVtYmVyLCBjb25zdCBHVmFsdWUqIHBhcmFtZXRlclZhbHVlcywgZ3BvaW50ZXIsIGdwb2ludGVy
IG1hcnNoYWxEYXRhKQotewotICAgIHR5cGVkZWYgdm9pZCAoKm1hcnNoYWxmdW5jX1ZPSURfX01J
TklPQkpFQ1QpIChncG9pbnRlciBvYmosIGdwb2ludGVyIGFyZzEsIGdwb2ludGVyIGRhdGEyKTsK
LSAgICBtYXJzaGFsZnVuY19WT0lEX19NSU5JT0JKRUNUIGNhbGxiYWNrOwotICAgIEdDQ2xvc3Vy
ZSogY2Nsb3N1cmUgPSByZWludGVycHJldF9jYXN0PEdDQ2xvc3VyZSo+KGNsb3N1cmUpOwotICAg
IGdwb2ludGVyIGRhdGExLCBkYXRhMjsKLQotICAgIGdfcmV0dXJuX2lmX2ZhaWwocGFyYW1ldGVy
c051bWJlciA9PSAyKTsKLQotICAgIGlmIChHX0NDTE9TVVJFX1NXQVBfREFUQShjbG9zdXJlKSkg
ewotICAgICAgICBkYXRhMSA9IGNsb3N1cmUtPmRhdGE7Ci0gICAgICAgIGRhdGEyID0gZ192YWx1
ZV9wZWVrX3BvaW50ZXIocGFyYW1ldGVyVmFsdWVzICsgMCk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgZGF0YTEgPSBnX3ZhbHVlX3BlZWtfcG9pbnRlcihwYXJhbWV0ZXJWYWx1ZXMgKyAwKTsKLSAg
ICAgICAgZGF0YTIgPSBjbG9zdXJlLT5kYXRhOwotICAgIH0KLQotICAgIGNhbGxiYWNrID0gKG1h
cnNoYWxmdW5jX1ZPSURfX01JTklPQkpFQ1QpIChtYXJzaGFsRGF0YSA/IG1hcnNoYWxEYXRhIDog
Y2Nsb3N1cmUtPmNhbGxiYWNrKTsKLSAgICBjYWxsYmFjayhkYXRhMSwgZ3N0X3ZhbHVlX2dldF9t
aW5pX29iamVjdChwYXJhbWV0ZXJWYWx1ZXMgKyAxKSwgZGF0YTIpOwotfQotI2VuZGlmCiAKIHN0
YXRpYyB2b2lkIHdlYmtpdF92aWRlb19zaW5rX2NsYXNzX2luaXQoV2ViS2l0VmlkZW9TaW5rQ2xh
c3MqIGtsYXNzKQogewpAQCAtNDM4LDcgKzM3Nyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF92aWRl
b19zaW5rX2NsYXNzX2luaXQoV2ViS2l0VmlkZW9TaW5rQ2xhc3MqIGtsYXNzKQogICAgIEdzdEVs
ZW1lbnRDbGFzcyogZWxlbWVudENsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1Moa2xhc3MpOwogCiAg
ICAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZShlbGVtZW50Q2xhc3MsIGdzdF9z
dGF0aWNfcGFkX3RlbXBsYXRlX2dldCgmc19zaW5rVGVtcGxhdGUpKTsKLSAgICBzZXRHc3RFbGVt
ZW50Q2xhc3NNZXRhZGF0YShlbGVtZW50Q2xhc3MsICJXZWJLaXQgdmlkZW8gc2luayIsICJTaW5r
L1ZpZGVvIiwgIlNlbmRzIHZpZGVvIGRhdGEgZnJvbSBhIEdTdHJlYW1lciBwaXBlbGluZSB0byBh
IENhaXJvIHN1cmZhY2UiLCAiQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4iKTsKKyAgICBnc3Rf
ZWxlbWVudF9jbGFzc19zZXRfbWV0YWRhdGEoZWxlbWVudENsYXNzLCAiV2ViS2l0IHZpZGVvIHNp
bmsiLCAiU2luay9WaWRlbyIsICJTZW5kcyB2aWRlbyBkYXRhIGZyb20gYSBHU3RyZWFtZXIgcGlw
ZWxpbmUgdG8gYSBDYWlybyBzdXJmYWNlIiwgIkFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+Iik7
CiAKICAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRWaWRl
b1NpbmtQcml2YXRlKSk7CiAKQEAgLTQ1Miw5ICszOTEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
dmlkZW9fc2lua19jbGFzc19pbml0KFdlYktpdFZpZGVvU2lua0NsYXNzKiBrbGFzcykKICAgICBi
YXNlU2lua0NsYXNzLT5zdG9wID0gd2Via2l0VmlkZW9TaW5rU3RvcDsKICAgICBiYXNlU2lua0Ns
YXNzLT5zdGFydCA9IHdlYmtpdFZpZGVvU2lua1N0YXJ0OwogICAgIGJhc2VTaW5rQ2xhc3MtPnNl
dF9jYXBzID0gd2Via2l0VmlkZW9TaW5rU2V0Q2FwczsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05f
MQogICAgIGJhc2VTaW5rQ2xhc3MtPnByb3Bvc2VfYWxsb2NhdGlvbiA9IHdlYmtpdFZpZGVvU2lu
a1Byb3Bvc2VBbGxvY2F0aW9uOwotI2VuZGlmCiAKICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KGdvYmplY3RDbGFzcywgUFJPUF9DQVBTLAogICAgICAgICBnX3BhcmFtX3NwZWNf
Ym94ZWQoImN1cnJlbnQtY2FwcyIsICJDdXJyZW50LUNhcHMiLCAiQ3VycmVudCBjYXBzIiwgR1NU
X1RZUEVfQ0FQUywgR19QQVJBTV9SRUFEQUJMRSkpOwpAQCAtNDY1LDExICs0MDIsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfdmlkZW9fc2lua19jbGFzc19pbml0KFdlYktpdFZpZGVvU2lua0NsYXNz
KiBrbGFzcykKICAgICAgICAgICAgIDAsIC8vIENsYXNzIG9mZnNldAogICAgICAgICAgICAgMCwg
Ly8gQWNjdW11bGF0b3IKICAgICAgICAgICAgIDAsIC8vIEFjY3VtdWxhdG9yIGRhdGEKLSNpZm5k
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICAgICAgICAgIHdlYmtpdFZpZGVvU2lua01hcnNoYWxW
b2lkQW5kTWluaU9iamVjdCwKLSNlbHNlCiAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxf
Z2VuZXJpYywKLSNlbmRpZgogICAgICAgICAgICAgR19UWVBFX05PTkUsIC8vIFJldHVybiB0eXBl
CiAgICAgICAgICAgICAxLCAvLyBPbmx5IG9uZSBwYXJhbWV0ZXIKICAgICAgICAgICAgIEdTVF9U
WVBFX0JVRkZFUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVy
LmNwcAppbmRleCAyN2RlNTdmZDYxZDBlOWI5NGVmNDUxYTdhZDNlNjBlNGY3NzJiYWRmLi5lMzY1
MmMzNTBlM2RmYTNhZTFhNWJlNWU2NWNjYWZlZjE1MGVjMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAm
JiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYg
RU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAK
ICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIgogCkBAIC01OCw0ICs1OCw0
IEBAIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OnNldFNlbGVjdGVkKGJvb2wgc2Vs
ZWN0ZWQpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURF
TykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdT
VF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1F
UikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuaAppbmRleCBhZWYxZjU4ZWQ1MjU4NzQ2MjFiN2ExYWQyNzA1MWZkMTAzMTRk
NTk4Li5lZTdhMDM4ZDBjMGRiZmIyYjM1ZmVlOWNlYTc1ZWZlZWYxMTY3MzIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjYsNyArMjYsNyBAQAog
I2lmbmRlZiBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcl9oCiAjZGVmaW5lIFZpZGVvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyX2gKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikg
JiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQog
CiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXIuaCIKQEAgLTU5LDYgKzU5LDYgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAm
JiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5k
aWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJB
Q0spCiAKICNlbmRpZiAvLyBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0TWVkaWFT
b3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCAwOGFjZGNhNDQ1MzA0
NGYzY2FjNGRhMWFkZmNjNTE3YjhjNjAxM2FlLi44ZDVmNmM5Njg1NmEyNTIwMzI2OGQwNzk3YmU4
MDllMzQ5MjBkZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRNZWRpYVNvdXJjZUdTdHJl
YW1lci5jcHAKQEAgLTIzLDcgKzIzLDggQEAKIAogI2lmIEVOQUJMRShWSURFTykgJiYgRU5BQkxF
KE1FRElBX1NPVVJDRSkgJiYgVVNFKEdTVFJFQU1FUikKIAotI2luY2x1ZGUgIkdTdHJlYW1lclZl
cnNpb25pbmcuaCIKKyNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCisjaW5jbHVkZSAiR1N0
cmVhbWVyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRl
ICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBzcmMuaD4KQEAgLTEyMiw3
ICsxMjMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfbWVkaWFfc3JjX2NsYXNzX2luaXQoV2ViS2l0
TWVkaWFTcmNDbGFzcyoga2xhc3MpCiAKICAgICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3Rl
bXBsYXRlKGVrbGFzcywgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0KCZzcmNUZW1wbGF0ZSkp
OwogCi0gICAgc2V0R3N0RWxlbWVudENsYXNzTWV0YWRhdGEoZWtsYXNzLCAiV2ViS2l0IE1lZGlh
IHNvdXJjZSBlbGVtZW50IiwgIlNvdXJjZSIsICJIYW5kbGVzIEJsb2IgdXJpcyIsICJTdGVwaGFu
ZSBKYWRhdWQgPHNqYWRhdWRAc2lpLmZyPiIpOworICAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9t
ZXRhZGF0YShla2xhc3MsICJXZWJLaXQgTWVkaWEgc291cmNlIGVsZW1lbnQiLCAiU291cmNlIiwg
IkhhbmRsZXMgQmxvYiB1cmlzIiwgIlN0ZXBoYW5lIEphZGF1ZCA8c2phZGF1ZEBzaWkuZnI+Iik7
CiAKICAgICAvKiBBbGxvd3Mgc2V0dGluZyB0aGUgdXJpIHVzaW5nIHRoZSAnbG9jYXRpb24nIHBy
b3BlcnR5LCB3aGljaCBpcyB1c2VkCiAgICAgICogZm9yIGV4YW1wbGUgYnkgZ3N0X2VsZW1lbnRf
bWFrZV9mcm9tX3VyaSgpICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFt
ZXIuY3BwCmluZGV4IDNmOWEwNzVjNjVmMjYzNzNjODQ5ODZlNmRhMTQ4ZjI1NDMwZWMzMzguLmZm
MTg4OWE1ZTczNzViZjExY2YwMTIzN2JlMzNlZTllMjA3MzU5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVl
c3QuaCIKICNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCi0jaW5jbHVkZSAiR1N0cmVhbWVy
VmVyc2lvbmluZy5oIgorI2luY2x1ZGUgIkdTdHJlYW1lclV0aWxpdGllcy5oIgogI2luY2x1ZGUg
Ik1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUhhbmRsZS5oIgpAQCAtMTM4LDEwICsxMzgsNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlNy
Y1ByaXZhdGUgewogICAgIGdjaGFyKiBpcmFkaW9HZW5yZTsKICAgICBnY2hhciogaXJhZGlvVXJs
OwogICAgIGdjaGFyKiBpcmFkaW9UaXRsZTsKLQotICAgIC8vIFRSVUUgaWYgYXBwc3JjJ3MgdmVy
c2lvbiBpcyA+PSAwLjEwLjI3LCBzZWUKLSAgICAvLyBodHRwczovL2J1Z3ppbGxhLmdub21lLm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjA5NDIzCi0gICAgZ2Jvb2xlYW4gaGF2ZUFwcFNyYzI3OwogfTsK
IAogZW51bSB7CkBAIC0xNzAsOSArMTY2LDYgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjR2V0
UHJvcGVydHkoR09iamVjdCosIGd1aW50IHByb3BlcnR5SUQsIEdWYWx1ZSosIEdQYXJhbVMKIHN0
YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiB3ZWJLaXRXZWJTcmNDaGFuZ2VTdGF0ZShHc3RFbGVt
ZW50KiwgR3N0U3RhdGVDaGFuZ2UpOwogCiBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjUXVl
cnlXaXRoUGFyZW50KEdzdFBhZCosIEdzdE9iamVjdCosIEdzdFF1ZXJ5Kik7Ci0jaWZuZGVmIEdT
VF9BUElfVkVSU0lPTl8xCi1zdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjUXVlcnkoR3N0UGFk
KiwgR3N0UXVlcnkqKTsKLSNlbmRpZgogCiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNOZWVkRGF0
YUNiKEdzdEFwcFNyYyosIGd1aW50IGxlbmd0aCwgZ3BvaW50ZXIgdXNlckRhdGEpOwogc3RhdGlj
IHZvaWQgd2ViS2l0V2ViU3JjRW5vdWdoRGF0YUNiKEdzdEFwcFNyYyosIGdwb2ludGVyIHVzZXJE
YXRhKTsKQEAgLTIwNCw3ICsxOTcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19jbGFz
c19pbml0KFdlYktpdFdlYlNyY0NsYXNzKiBrbGFzcykKIAogICAgIGdzdF9lbGVtZW50X2NsYXNz
X2FkZF9wYWRfdGVtcGxhdGUoZWtsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0KCZzcmNUZW1wbGF0ZSkpOwotICAg
IHNldEdzdEVsZW1lbnRDbGFzc01ldGFkYXRhKGVrbGFzcywgIldlYktpdCBXZWIgc291cmNlIGVs
ZW1lbnQiLCAiU291cmNlIiwgIkhhbmRsZXMgSFRUUC9IVFRQUyB1cmlzIiwKKyAgICBnc3RfZWxl
bWVudF9jbGFzc19zZXRfbWV0YWRhdGEoZWtsYXNzLCAiV2ViS2l0IFdlYiBzb3VyY2UgZWxlbWVu
dCIsICJTb3VyY2UiLCAiSGFuZGxlcyBIVFRQL0hUVFBTIHVyaXMiLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxh
Ym9yYS5jby51az4iKTsKIAogICAgIC8vIGljZWNhc3Qgc3R1ZmYKQEAgLTI3NSw5ICsyNjgsNiBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19pbml0KFdlYktpdFdlYlNyYyogc3JjKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgR3N0RWxlbWVudEZhY3RvcnkqIGZhY3RvcnkgPSBH
U1RfRUxFTUVOVF9GQUNUT1JZKEdTVF9FTEVNRU5UX0dFVF9DTEFTUyhwcml2LT5hcHBzcmMpLT5l
bGVtZW50ZmFjdG9yeSk7Ci0gICAgcHJpdi0+aGF2ZUFwcFNyYzI3ID0gZ3N0X3BsdWdpbl9mZWF0
dXJlX2NoZWNrX3ZlcnNpb24oR1NUX1BMVUdJTl9GRUFUVVJFKGZhY3RvcnkpLCAwLCAxMCwgMjcp
OwotCiAgICAgZ3N0X2Jpbl9hZGQoR1NUX0JJTihzcmMpLCBHU1RfRUxFTUVOVChwcml2LT5hcHBz
cmMpKTsKIAogCkBAIC0yODYsMTIgKzI3Niw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3Jj
X2luaXQoV2ViS2l0V2ViU3JjKiBzcmMpCiAKICAgICBnc3RfZWxlbWVudF9hZGRfcGFkKEdTVF9F
TEVNRU5UKHNyYyksIHByaXYtPnNyY3BhZCk7CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQog
ICAgIEdTVF9PQkpFQ1RfRkxBR19TRVQocHJpdi0+c3JjcGFkLCBHU1RfUEFEX0ZMQUdfTkVFRF9Q
QVJFTlQpOwogICAgIGdzdF9wYWRfc2V0X3F1ZXJ5X2Z1bmN0aW9uKHByaXYtPnNyY3BhZCwgd2Vi
S2l0V2ViU3JjUXVlcnlXaXRoUGFyZW50KTsKLSNlbHNlCi0gICAgZ3N0X3BhZF9zZXRfcXVlcnlf
ZnVuY3Rpb24ocHJpdi0+c3JjcGFkLCB3ZWJLaXRXZWJTcmNRdWVyeSk7Ci0jZW5kaWYKIAogICAg
IGdzdF9hcHBfc3JjX3NldF9jYWxsYmFja3MocHJpdi0+YXBwc3JjLCAmYXBwc3JjQ2FsbGJhY2tz
LCBzcmMsIDApOwogICAgIGdzdF9hcHBfc3JjX3NldF9lbWl0X3NpZ25hbHMocHJpdi0+YXBwc3Jj
LCBGQUxTRSk7CkBAIC0zMTQsOCArMzAwLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNf
aW5pdChXZWJLaXRXZWJTcmMqIHNyYykKICAgICAvLyBsaWtlbHkgdGhhdCBsaWJzb3VwIGFscmVh
ZHkgcHJvdmlkZXMgbmV3IGRhdGEgYmVmb3JlCiAgICAgLy8gdGhlIHF1ZXVlIGlzIHJlYWxseSBl
bXB0eS4KICAgICAvLyBUaGlzIG1pZ2h0IG5lZWQgdHdlYWtpbmcgZm9yIHBvcnRzIG5vdCB1c2lu
ZyBsaWJzb3VwLgotICAgIGlmIChwcml2LT5oYXZlQXBwU3JjMjcpCi0gICAgICAgIGdfb2JqZWN0
X3NldChwcml2LT5hcHBzcmMsICJtaW4tcGVyY2VudCIsIDIwLCBOVUxMKTsKKyAgICBnX29iamVj
dF9zZXQocHJpdi0+YXBwc3JjLCAibWluLXBlcmNlbnQiLCAyMCwgTlVMTCk7CiAKICAgICBnc3Rf
YXBwX3NyY19zZXRfY2Fwcyhwcml2LT5hcHBzcmMsIDApOwogICAgIGdzdF9hcHBfc3JjX3NldF9z
aXplKHByaXYtPmFwcHNyYywgLTEpOwpAQCAtMzUzLDExICszMzgsNyBAQCBzdGF0aWMgdm9pZCB3
ZWJLaXRXZWJTcmNTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgY29u
c3QgR1ZhbHVlKgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBQUk9QX0xPQ0FUSU9O
OgotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgICAgIGdzdF91cmlfaGFuZGxlcl9zZXRf
dXJpKHJlaW50ZXJwcmV0X2Nhc3Q8R3N0VVJJSGFuZGxlcio+KHNyYyksIGdfdmFsdWVfZ2V0X3N0
cmluZyh2YWx1ZSksIDApOwotI2Vsc2UKLSAgICAgICAgZ3N0X3VyaV9oYW5kbGVyX3NldF91cmko
cmVpbnRlcnByZXRfY2FzdDxHc3RVUklIYW5kbGVyKj4oc3JjKSwgZ192YWx1ZV9nZXRfc3RyaW5n
KHZhbHVlKSk7Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
R19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwc3BlYyk7
CkBAIC00MzYsOSArNDE3LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1N0b3AoV2Vi
S2l0V2ViU3JjKiBzcmMpCiAgICAgfQogCiAgICAgaWYgKHByaXYtPmJ1ZmZlcikgewotI2lmZGVm
IEdTVF9BUElfVkVSU0lPTl8xCiAgICAgICAgIHVubWFwR3N0QnVmZmVyKHByaXYtPmJ1ZmZlci5n
ZXQoKSk7Ci0jZW5kaWYKICAgICAgICAgcHJpdi0+YnVmZmVyLmNsZWFyKCk7CiAgICAgfQogCkBA
IC02MzgsMTQgKzYxNyw2IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNRdWVyeVdpdGhQ
YXJlbnQoR3N0UGFkKiBwYWQsIEdzdE9iamVjdCogcGFyZW50LCBHc3RRCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotc3RhdGljIGdib29sZWFuIHdl
YktpdFdlYlNyY1F1ZXJ5KEdzdFBhZCogcGFkLCBHc3RRdWVyeSogcXVlcnkpCi17Ci0gICAgR1Jl
ZlB0cjxHc3RFbGVtZW50PiBzcmMgPSBhZG9wdEdSZWYoZ3N0X3BhZF9nZXRfcGFyZW50X2VsZW1l
bnQocGFkKSk7Ci0gICAgcmV0dXJuIHdlYktpdFdlYlNyY1F1ZXJ5V2l0aFBhcmVudChwYWQsIEdT
VF9PQkpFQ1Qoc3JjLmdldCgpKSwgcXVlcnkpOwotfQotI2VuZGlmCi0KIHN0YXRpYyBib29sIHVy
bEhhc1N1cHBvcnRlZFByb3RvY29sKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiB1cmwu
aXNWYWxpZCgpICYmICh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHVybC5wcm90b2Nv
bElzKCJibG9iIikpOwpAQCAtNjUzLDcgKzYyNCw2IEBAIHN0YXRpYyBib29sIHVybEhhc1N1cHBv
cnRlZFByb3RvY29sKGNvbnN0IFVSTCYgdXJsKQogCiAvLyB1cmkgaGFuZGxlciBpbnRlcmZhY2UK
IAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiBzdGF0aWMgR3N0VVJJVHlwZSB3ZWJLaXRXZWJT
cmNVcmlHZXRUeXBlKEdUeXBlKQogewogICAgIHJldHVybiBHU1RfVVJJX1NSQzsKQEAgLTcwMyw1
NyArNjczLDYgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1NldFVyaShHc3RVUklIYW5k
bGVyKiBoYW5kbGVyLCBjb25zdCBnY2hhciogdXJpLCBHRXIKICAgICByZXR1cm4gVFJVRTsKIH0K
IAotI2Vsc2UKLXN0YXRpYyBHc3RVUklUeXBlIHdlYktpdFdlYlNyY1VyaUdldFR5cGUodm9pZCkK
LXsKLSAgICByZXR1cm4gR1NUX1VSSV9TUkM7Ci19Ci0KLXN0YXRpYyBnY2hhcioqIHdlYktpdFdl
YlNyY0dldFByb3RvY29scyh2b2lkKQotewotICAgIHN0YXRpYyBnY2hhciogcHJvdG9jb2xzW10g
PSB7KGdjaGFyKikgImh0dHAiLCAoZ2NoYXIqKSAiaHR0cHMiLCAoZ2NoYXIqKSAiYmxvYiIsIDAg
fTsKLSAgICByZXR1cm4gcHJvdG9jb2xzOwotfQotCi1zdGF0aWMgY29uc3QgZ2NoYXIqIHdlYktp
dFdlYlNyY0dldFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyKQotewotICAgIFdlYktpdFdlYlNy
Yyogc3JjID0gV0VCS0lUX1dFQl9TUkMoaGFuZGxlcik7Ci0gICAgZ2NoYXIqIHJldDsKLQotICAg
IEdNdXRleExvY2tlciBsb2NrZXIoR1NUX09CSkVDVF9HRVRfTE9DSyhzcmMpKTsKLSAgICByZXQg
PSBnX3N0cmR1cChzcmMtPnByaXYtPnVyaSk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGlj
IGdib29sZWFuIHdlYktpdFdlYlNyY1NldFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyLCBjb25z
dCBnY2hhciogdXJpKQotewotICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMo
aGFuZGxlcik7Ci0gICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKLQot
ICAgIGlmIChHU1RfU1RBVEUoc3JjKSA+PSBHU1RfU1RBVEVfUEFVU0VEKSB7Ci0gICAgICAgIEdT
VF9FUlJPUl9PQkpFQ1Qoc3JjLCAiVVJJIGNhbiBvbmx5IGJlIHNldCBpbiBzdGF0ZXMgPCBQQVVT
RUQiKTsKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0KLQotICAgIEdNdXRleExvY2tlciBs
b2NrZXIoR1NUX09CSkVDVF9HRVRfTE9DSyhzcmMpKTsKLQotICAgIGdfZnJlZShwcml2LT51cmkp
OwotICAgIHByaXYtPnVyaSA9IDA7Ci0KLSAgICBpZiAoIXVyaSkKLSAgICAgICAgcmV0dXJuIFRS
VUU7Ci0KLSAgICBVUkwgdXJsKFVSTCgpLCB1cmkpOwotICAgIGlmICghdXJsSGFzU3VwcG9ydGVk
UHJvdG9jb2wodXJsKSkgewotICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIkludmFsaWQg
VVJJICclcyciLCB1cmkpOwotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotCi0gICAgcHJp
di0+dXJpID0gZ19zdHJkdXAodXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIHJldHVy
biBUUlVFOwotfQotI2VuZGlmCi0KIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1VyaUhhbmRsZXJJ
bml0KGdwb2ludGVyIGdJZmFjZSwgZ3BvaW50ZXIpCiB7CiAgICAgR3N0VVJJSGFuZGxlckludGVy
ZmFjZSogaWZhY2UgPSAoR3N0VVJJSGFuZGxlckludGVyZmFjZSAqKSBnSWZhY2U7CkBAIC05MDEs
MTUgKzgyMCwxMyBAQCBjaGFyKiBTdHJlYW1pbmdDbGllbnQ6OmNyZWF0ZVJlYWRCdWZmZXIoc2l6
ZV90IHJlcXVlc3RlZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6ZQogCiAgICAgR3N0QnVmZmVyKiBi
dWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MocmVxdWVzdGVkU2l6ZSk7CiAKLSNpZmRl
ZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIG1hcEdzdEJ1ZmZlcihidWZmZXIpOwotI2VuZGlmCiAK
ICAgICBHTXV0ZXhMb2NrZXIgbG9ja2VyKEdTVF9PQkpFQ1RfR0VUX0xPQ0soc3JjKSk7CiAgICAg
cHJpdi0+YnVmZmVyID0gYWRvcHRHUmVmKGJ1ZmZlcik7CiAgICAgbG9ja2VyLnVubG9jaygpOwog
Ci0gICAgYWN0dWFsU2l6ZSA9IGdldEdzdEJ1ZmZlclNpemUoYnVmZmVyKTsKKyAgICBhY3R1YWxT
aXplID0gZ3N0X2J1ZmZlcl9nZXRfc2l6ZShidWZmZXIpOwogICAgIHJldHVybiBnZXRHc3RCdWZm
ZXJEYXRhUG9pbnRlcihidWZmZXIpOwogfQogCkBAIC05MzgsMTEgKzg1NSw3IEBAIHZvaWQgU3Ry
ZWFtaW5nQ2xpZW50OjpoYW5kbGVSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIHByaXYtPnNpemUgPSBsZW5ndGggPj0gMCA/IGxlbmd0aCA6IDA7
CiAgICAgcHJpdi0+c2Vla2FibGUgPSBsZW5ndGggPiAwICYmIGdfYXNjaWlfc3RyY2FzZWNtcCgi
bm9uZSIsIHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiQWNjZXB0LVJhbmdlcyIpLnV0ZjgoKS5k
YXRhKCkpOwogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBHc3RUYWdMaXN0KiB0YWdz
ID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSgpOwotI2Vsc2UKLSAgICBHc3RUYWdMaXN0KiB0YWdz
ID0gZ3N0X3RhZ19saXN0X25ldygpOwotI2VuZGlmCiAgICAgU3RyaW5nIHZhbHVlID0gcmVzcG9u
c2UuaHR0cEhlYWRlckZpZWxkKCJpY3ktbmFtZSIpOwogICAgIGlmICghdmFsdWUuaXNFbXB0eSgp
KSB7CiAgICAgICAgIGdfZnJlZShwcml2LT5pcmFkaW9OYW1lKTsKQEAgLTk3NywxNSArODkwLDYg
QEAgdm9pZCBTdHJlYW1pbmdDbGllbnQ6OmhhbmRsZVJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgLy8gbm90aWZ5IHNpemUvZHVyYXRpb24KICAg
ICBpZiAobGVuZ3RoID4gMCkgewogICAgICAgICBnc3RfYXBwX3NyY19zZXRfc2l6ZShwcml2LT5h
cHBzcmMsIGxlbmd0aCk7Ci0KLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICAgICAgaWYg
KCFwcml2LT5oYXZlQXBwU3JjMjcpIHsKLSAgICAgICAgICAgIGdzdF9zZWdtZW50X3NldF9kdXJh
dGlvbigmR1NUX0JBU0VfU1JDKHByaXYtPmFwcHNyYyktPnNlZ21lbnQsIEdTVF9GT1JNQVRfQllU
RVMsIGxlbmd0aCk7Ci0gICAgICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UoR1NUX0VM
RU1FTlQocHJpdi0+YXBwc3JjKSwKLSAgICAgICAgICAgICAgICBnc3RfbWVzc2FnZV9uZXdfZHVy
YXRpb24oR1NUX09CSkVDVChwcml2LT5hcHBzcmMpLAotICAgICAgICAgICAgICAgICAgICBHU1Rf
Rk9STUFUX0JZVEVTLCBsZW5ndGgpKTsKLSAgICAgICAgfQotI2VuZGlmCiAgICAgfSBlbHNlCiAg
ICAgICAgIGdzdF9hcHBfc3JjX3NldF9zaXplKHByaXYtPmFwcHNyYywgLTEpOwogCkBAIC0xMDA1
LDEzICs5MDksOSBAQCB2b2lkIFN0cmVhbWluZ0NsaWVudDo6aGFuZGxlUmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIAogICAgIC8vIG5vdGlmeSB0YWdz
CiAgICAgaWYgKGdzdF90YWdfbGlzdF9pc19lbXB0eSh0YWdzKSkKLSNpZmRlZiBHU1RfQVBJX1ZF
UlNJT05fMQogICAgICAgICBnc3RfdGFnX2xpc3RfdW5yZWYodGFncyk7Ci0jZWxzZQotICAgICAg
ICBnc3RfdGFnX2xpc3RfZnJlZSh0YWdzKTsKLSNlbmRpZgogICAgIGVsc2UKLSAgICAgICAgbm90
aWZ5R3N0VGFnc09uUGFkKEdTVF9FTEVNRU5UKHNyYyksIHByaXYtPnNyY3BhZCwgdGFncyk7Cisg
ICAgICAgIGdzdF9wYWRfcHVzaF9ldmVudChwcml2LT5zcmNwYWQsIGdzdF9ldmVudF9uZXdfdGFn
KHRhZ3MpKTsKIH0KIAogdm9pZCBTdHJlYW1pbmdDbGllbnQ6OmhhbmRsZURhdGFSZWNlaXZlZChj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQpAQCAtMTAyMSwxNCArOTIxLDEyIEBAIHZvaWQg
U3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKIAogICAgIEdNdXRleExvY2tlciBsb2NrZXIoR1NUX09CSkVDVF9HRVRfTE9DSyhz
cmMpKTsKIAotICAgIEdTVF9MT0dfT0JKRUNUKHNyYywgIkhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIs
IHByaXYtPmJ1ZmZlciA/IGdldEdzdEJ1ZmZlclNpemUocHJpdi0+YnVmZmVyLmdldCgpKSA6IGxl
bmd0aCk7CisgICAgR1NUX0xPR19PQkpFQ1Qoc3JjLCAiSGF2ZSAlbGQgYnl0ZXMgb2YgZGF0YSIs
IHByaXYtPmJ1ZmZlciA/IGdzdF9idWZmZXJfZ2V0X3NpemUocHJpdi0+YnVmZmVyLmdldCgpKSA6
IGxlbmd0aCk7CiAKICAgICBBU1NFUlQoIXByaXYtPmJ1ZmZlciB8fCBkYXRhID09IGdldEdzdEJ1
ZmZlckRhdGFQb2ludGVyKHByaXYtPmJ1ZmZlci5nZXQoKSkpOwogCi0jaWZkZWYgR1NUX0FQSV9W
RVJTSU9OXzEKICAgICBpZiAocHJpdi0+YnVmZmVyKQogICAgICAgICB1bm1hcEdzdEJ1ZmZlcihw
cml2LT5idWZmZXIuZ2V0KCkpOwotI2VuZGlmCiAKICAgICBpZiAocHJpdi0+c2Vla0lEKSB7CiAg
ICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdub3Jpbmcg
ZGF0YSIpOwpAQCAtMTA0MSw3ICs5MzksNyBAQCB2b2lkIFN0cmVhbWluZ0NsaWVudDo6aGFuZGxl
RGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiAgICAgaWYgKCFwcml2
LT5idWZmZXIpCiAgICAgICAgIHByaXYtPmJ1ZmZlciA9IGFkb3B0R1JlZihjcmVhdGVHc3RCdWZm
ZXJGb3JEYXRhKGRhdGEsIGxlbmd0aCkpOwogICAgIGVsc2UKLSAgICAgICAgc2V0R3N0QnVmZmVy
U2l6ZShwcml2LT5idWZmZXIuZ2V0KCksIGxlbmd0aCk7CisgICAgICAgIGdzdF9idWZmZXJfc2V0
X3NpemUocHJpdi0+YnVmZmVyLmdldCgpLCBzdGF0aWNfY2FzdDxnc3NpemU+KGxlbmd0aCkpOwog
CiAgICAgR1NUX0JVRkZFUl9PRkZTRVQocHJpdi0+YnVmZmVyLmdldCgpKSA9IHByaXYtPm9mZnNl
dDsKICAgICBpZiAocHJpdi0+cmVxdWVzdGVkT2Zmc2V0ID09IHByaXYtPm9mZnNldCkKQEAgLTEw
NTgsMTEgKzk1Niw3IEBAIHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVEYXRhUmVjZWl2ZWQo
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKICAgICBsb2NrZXIudW5sb2NrKCk7CiAKICAg
ICBHc3RGbG93UmV0dXJuIHJldCA9IGdzdF9hcHBfc3JjX3B1c2hfYnVmZmVyKHByaXYtPmFwcHNy
YywgcHJpdi0+YnVmZmVyLmxlYWtSZWYoKSk7Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAg
ICBpZiAocmV0ICE9IEdTVF9GTE9XX09LICYmIHJldCAhPSBHU1RfRkxPV19FT1MpCi0jZWxzZQot
ICAgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0sgJiYgcmV0ICE9IEdTVF9GTE9XX1VORVhQRUNURUQp
Ci0jZW5kaWYKICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc3JjLCBDT1JFLCBGQUlMRUQsICgw
KSwgKDApKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFr
ZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNjUyOWY3N2E4ZTk3OWUy
NDZiMTc3OTE5NGEzZTM2OWU5ZTIzZTczMy4uNDEwYjVhZGQ2ZTc2OTVjMDA5YWQzMzIxNzlmYTdl
NDk5ZTU0OWE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMTMsNyArMTEzLDYgQEAg
bGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBlZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50RWZsLmNwcAogICAgIGVmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5jcHAKICAgICBlZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbC5j
cHAKLSAgICBlZmwvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckVmbC5j
cHAKICAgICBlZmwvV2ViQ29yZVN1cHBvcnQvSWNvbkRhdGFiYXNlQ2xpZW50RWZsLmNwcAogICAg
IGVmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCiAgICAgZWZsL1dlYkNv
cmVTdXBwb3J0L05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEVmbC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlckVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYzI1
NTJlMDYwNDlkMWU3MmUxNDQ3NDA2YmViYzgwOTdlMTZmMWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwx
OTMgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAotICogIENv
cHlyaWdodCAoQykgMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShWSURFTykgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJT
SU9OXzEpCi0KLSNpbmNsdWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyRWZsLmgiCi0KLSNp
bmNsdWRlICJNZWRpYVBsYXllci5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0KLSNp
bmNsdWRlIDxnc3QvZ3N0Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKLQotRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcigpCi0gICAgOiBtX2h1ZFRpbWVvdXRJZCgwKQotICAgICwgbV9wcm9ncmVzc0Jh
clVwZGF0ZUlkKDApCi0gICAgLCBtX3NlZWtMb2NrKGZhbHNlKQotICAgICwgbV93aW5kb3coMCkK
LSAgICAsIG1faHVkV2luZG93KDApCi17Ci19Ci0KLUZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6
On5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCkKLXsKLSAgICBleGl0RnVsbHNjcmVlbigpOwot
fQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldE1lZGlhRWxlbWVudChIVE1M
TWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi17Ci0gICAgaWYgKG1lZGlhRWxlbWVudCA9PSBt
X21lZGlhRWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9tZWRpYUVsZW1lbnQgPSBt
ZWRpYUVsZW1lbnQ7Ci0gICAgaWYgKCFtX21lZGlhRWxlbWVudCkgewotICAgICAgICAvLyBDYW4n
dCBkbyBmdWxsLXNjcmVlbiwganVzdCBnZXQgb3V0Ci0gICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7
Ci0gICAgfQotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNob3dIdWQoYm9v
bCAvKmF1dG9IaWRlKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpoaWRlSHVkKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsbHNjcmVlbigp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjp1cGRhdGVIdWRQb3NpdGlvbigpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpleGl0T25Vc2VyUmVxdWVzdCgpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpleGl0RnVsbHNjcmVlbigpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9v
bCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjYW5QbGF5KCkgY29uc3QKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyOjpwbGF5KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBhdXNlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBsYXlTdGF0ZUNoYW5n
ZWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6dG9nZ2xlUGxheSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
ZmxvYXQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dm9sdW1lKCkgY29uc3QKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi1ib29sIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6Om11dGVkKCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRW
b2x1bWUoZmxvYXQgLyp2b2x1bWUqLykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnZvbHVtZUNoYW5nZWQoKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6bXV0
ZUNoYW5nZWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLWZsb2F0IEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6OnNldEN1cnJlbnRUaW1lKGZsb2F0IC8qdmFsdWUqLykKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi1mbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkdXJhdGlvbigpIGNv
bnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotZmxvYXQg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6cGVyY2VudExvYWRlZCgpIGNvbnN0Ci17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyOjpiZWdpblNlZWsoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZG9TZWVrKCkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVuZFNlZWso
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLWJvb2wgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6dXBkYXRlSHVkUHJvZ3Jlc3NCYXIoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6
OmNyZWF0ZUh1ZCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRp
b25zRWZsLmNtYWtlCmluZGV4IDhlNTA5Y2FlOGI0NTg0ZjQ2YmMwNjUxNTUzM2ZjODRiNzViMTdk
MGUuLjhhNTRlNGQxZGZlNjY3MDZhZjY1NGFlN2NmZWY5ODVkZmFhMzg4N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25z
RWZsLmNtYWtlCkBAIC0xNTgsNyArMTU4LDcgQEAgZW5kaWYgKCkKIGlmIChFTkFCTEVfVklERU8g
T1IgRU5BQkxFX1dFQl9BVURJTykKICAgICBzZXQoR1NUUkVBTUVSX0NPTVBPTkVOVFMgYXBwIHBi
dXRpbHMpCiAgICAgc2V0KFdURl9VU0VfR1NUUkVBTUVSIDEpCi0gICAgYWRkX2RlZmluaXRpb25z
KC1EV1RGX1VTRV9HU1RSRUFNRVI9MSAtREdTVF9BUElfVkVSU0lPTl8xPTEpCisgICAgYWRkX2Rl
ZmluaXRpb25zKC1EV1RGX1VTRV9HU1RSRUFNRVI9MSkKIAogICAgIGlmIChFTkFCTEVfVklERU8p
CiAgICAgICAgIGxpc3QoQVBQRU5EIEdTVFJFQU1FUl9DT01QT05FTlRTIHZpZGVvKQpkaWZmIC0t
Z2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGZiOWNjNDMzZjFiYzEwMWI0MDRmMjE0
ZjkyN2RmYjdhOWU3NGQ1NjYuLmY2MzkxZmIzMTNiMmM4MjhiN2RlMDZmN2MxZTRiYTVjZDA0YzMw
MzkgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxMy0xMS0yMSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIFJlbW92ZSAwLjEwIGNvZGVwYXRoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ1MzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9P
cHRpb25zRWZsLmNtYWtlOiBSZW1vdmVkIEdTVF9BUElfVkVSU0lPTl8xCisgICAgICAgIGRlZmlu
aXRpb24uCisKIDIwMTMtMTEtMDYgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgW0VGTF0gQ2hhbmdlIHJlcXVpcmVkIHZlcnNpb24gb2YgQVRLIHRvIDIu
MTAuMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217658</attachid>
            <date>2013-11-22 00:59:34 -0800</date>
            <delta_ts>2013-11-22 09:18:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124534-20131122095931.patch</filename>
            <type>text/plain</type>
            <size>113927</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2ZGU1N2U0MjE2NjM5MDEyYzhiMWFi
NjI2NWY1ODgwMmQ2OTZlNjMuLjgzZGQ4OGJkZmY3Y2IzYmM2MjUwNzIyYWJjZjVlNDUzMGM1MTdl
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTEtMjIgIFhhYmllciBSb2RyaWd1ZXogQ2Fs
dmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBSZW1vdmUg
MC4xMCBjb2RlcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI0NTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm0uaDogUmVtb3ZlZCBtYWNybyBmb3IgR1N0cmVhbWVyIDEuMCBh
cyBpdCBpcyB0aGUKKyAgICAgICAgb25seSBjb2RlcGF0aCBub3cuCisKIDIwMTMtMTEtMTYgIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHVpbnQ4X3Qg
dmVjdG9ycyBmb3IgV2ViQ3J5cHRvIGRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MWEwZWU2ZWY3NjE3MzNl
NGNjYjYwMDJhNDVkZDdkZWIwM2NkNDkzLi5lYzA3MDRiYWJlY2U4Mzg1ZDhmYmMxN2IwNGY0N2Vk
OThkZTBmMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYwIEBACisyMDEzLTExLTIyICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gUmVtb3ZlIDAuMTAgY29kZXBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFsbCBHU3RyZWFtZXIgcG9ydHMgYXJlIHVzaW5nIDEuMCBu
b3cgc28gd2UgcmVtb3ZlIHRoZSAwLjEwCisgICAgICAgIGNvZGVwYXRoLgorCisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAg
ICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmls
dGVyczogUmVtb3ZlZAorICAgICAgICBHU3RyZWFtZXJWZXJzaW9uaW5nLgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKG9uR1N0cmVhbWVyV2F2cGFyc2VQYWRBZGRlZENhbGxiYWNrKTogUmVtb3ZlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIpOgorICAgICAgICBSZXBsYWNlZCB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyBh
bmQgcmVtb3ZlZCAwLjEwIGNvZGVwYXRoLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lcjo6fkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIpOgorICAgICAgICBSZXBs
YWNlZCB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvcHlHc3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6
b25BcHBzaW5rUHVsbFJlcXVpcmVkQ2FsbGJhY2spOiBSZW1vdmVkIDAuMTAgY29kZXBhdGguCisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6On5BdWRpb0ZpbGVSZWFkZXIpOiBSZXBs
YWNlZAorICAgICAgICB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyBhbmQgcmVtb3ZlZCAwLjEwIGNv
ZGVwYXRoLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVTYW1wbGUp
OiBMZWZ0IGFzIG9ubHkgY29kZXBhdGguCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFk
ZXI6OmhhbmRsZUJ1ZmZlcik6IFJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVS
ZWFkZXI6OmhhbmRsZU5ld0RlaW50ZXJsZWF2ZVBhZCk6IFJlbW92ZWQgMC4xMAorICAgICAgICBj
b2RlcGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6cGx1Z0RlaW50ZXJs
ZWF2ZSk6IFJlcGxhY2VkCisgICAgICAgIGdldEdzdEF1ZGlvQ2Fwcy4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlQXVkaW9Gb3JCdXNDcmVhdGlvbik6IFJlcGxhY2Vk
CisgICAgICAgIHdlYmtpdEdzdFBpcGVsaW5lR2V0QnVzLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMpOiBSZW1vdmVkIDAuMTAgY29kZXBhdGguCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVy
LmNwcDoKKyAgICAgICAgKGdldEdTdHJlYW1lck1vbm9BdWRpb0NhcHMpOgorICAgICAgICAod2Vi
S2l0V2ViQXVkaW9HU3RyZWFtZXJDaGFubmVsUG9zaXRpb24pOiBSZW1vdmVkIDAuMTAgY29kZXBh
dGguCisgICAgICAgICh3ZWJraXRfd2ViX2F1ZGlvX3NyY19jbGFzc19pbml0KTogUmVwbGFjZWQK
KyAgICAgICAgc2V0R3N0RWxlbWVudENsYXNzTWV0YWRhdGEuCisgICAgICAgICh3ZWJraXRfd2Vi
X2F1ZGlvX3NyY19pbml0KToKKyAgICAgICAgKHdlYktpdFdlYkF1ZGlvU3JjQ29uc3RydWN0ZWQp
OgorICAgICAgICAod2ViS2l0V2ViQXVkaW9TcmNGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJLaXRX
ZWJBdWRpb1NyY0xvb3ApOiBSZW1vdmVkIDAuMTAgY29kZXBhdGguCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuaDoKKyAgICAgICAgUmVtb3ZlZCBjaGVja3MgZm9yIDEuMCBhcyBpdCBpcyB0aGUgb25s
eSBjb2RlcGF0aCBub3cuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dS
ZWZQdHJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV1RGOjpHc3RFbGVtZW50KToKKyAgICAgICAg
KFdURjo6R3N0UGFkKToKKyAgICAgICAgKFdURjo6R3N0UGFkVGVtcGxhdGUpOgorICAgICAgICAo
V1RGOjpHc3RUYXNrKToKKyAgICAgICAgKFdURjo6R3N0QnVzKToKKyAgICAgICAgKFdURjo6R3N0
RWxlbWVudEZhY3RvcnkpOgorICAgICAgICAoV1RGOjphZG9wdEdSZWYpOiBSZXBsYWNlZCBnc3RP
YmplY3RJc0Zsb2F0aW5nLgorICAgICAgICAoV1RGOjpyZWZHUmVmKTogUmVwbGFjZWQgd2Via2l0
R3N0T2JqZWN0UmVmU2luay4KKyAgICAgICAgKFdURjo6R3N0VGFnTGlzdCk6CisgICAgICAgIChX
VEY6OkdzdFNhbXBsZSk6IFJlbW92ZWQgY2hlY2tzIGZvciAxLjAgYXMgaXQgaXMgdGhlIG9ubHkK
KyAgICAgICAgY29kZXBhdGggbm93LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HUmVmUHRyR1N0cmVhbWVyLmg6IFJlbW92ZWQgY2hlY2tzCisgICAgICAgIGZvciAxLjAg
YXMgaXQgaXMgdGhlIG9ubHkgY29kZXBhdGggbm93LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwOgorICAgICAgICAod2Via2l0R3N0
R2hvc3RQYWRGcm9tU3RhdGljVGVtcGxhdGUpOgorICAgICAgICAoZ2V0VmlkZW9TaXplQW5kRm9y
bWF0RnJvbUNhcHMpOgorICAgICAgICAoY3JlYXRlR3N0QnVmZmVyKToKKyAgICAgICAgKGNyZWF0
ZUdzdEJ1ZmZlckZvckRhdGEpOgorICAgICAgICAoZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIpOgor
ICAgICAgICAobWFwR3N0QnVmZmVyKToKKyAgICAgICAgKHVubWFwR3N0QnVmZmVyKTogTW92ZWQg
aGVyZSBmcm9tIEdzdFZlcnNpb25pbmcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oOgorICAgICAgICAod2Via2l0R3N0Q2hlY2tWZXJz
aW9uKTogTW92ZWQgaGVyZSBmcm9tIEdzdFZlcnNpb25pbmcuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmg6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0
cmVhbWVyLmg6IFJlbW92ZWQgY2hlY2tzIGZvcgorICAgICAgICAxLjAgYXMgaXQgaXMgdGhlIG9u
bHkgY29kZXBhdGggbm93LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lckNhaXJvLmNwcDoKKyAgICAgICAgKEltYWdlR1N0cmVhbWVyOjpJbWFnZUdT
dHJlYW1lcik6IFJlbW92ZWQgMC4xMCBjb2RlcGF0aC4KKyAgICAgICAgKEltYWdlR1N0cmVhbWVy
Ojp+SW1hZ2VHU3RyZWFtZXIpOiBSZW1vdmVkIGNoZWNrcyBmb3IgMS4wIGFzIGl0IGlzCisgICAg
ICAgIHRoZSBvbmx5IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgIFJlbW92ZWQgY2hlY2tzIGZv
ciAxLjAgYXMgaXQgaXMgdGhlIG9ubHkgY29kZXBhdGggbm93LgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0QXVkaW9TdHJlYW1Qcm9wZXJ0aWVzQ2FsbGJhY2spOiBSZW1vdmVk
IDAuMTAgY29kZXBhdGguCisgICAgICAgIChXZWJDb3JlOjptZWRpYVBsYXllclByaXZhdGVUZXh0
Q2hhbmdlZENhbGxiYWNrKTogUmVtb3ZlZCBjaGVja3MKKyAgICAgICAgZm9yIDEuMCBhcyBpdCBp
cyB0aGUgb25seSBjb2RlcGF0aCBub3cuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmlzQXZhaWxhYmxlKTogUmVwbGFjZWQKKyAgICAgICAgZ1BsYXliaW5O
YW1lLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgUmVtb3ZlZCBjaGVja3MgZm9yIDEu
MCBhbmQgcmVwbGFjZWQgd2Via2l0R3N0UGlwZWxpbmVHZXRCdXMuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmR1cmF0aW9uKTogUmVtb3ZlZCAwLjEwCisg
ICAgICAgIGNvZGVwYXRoLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRleHRDaGFuZ2VkKToKKyAgICAgICAg
UmVtb3ZlZCBjaGVja3MgZm9yIDEuMCBhcyBpdCBpcyB0aGUgb25seSBjb2RlcGF0aCBub3cuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmJ1ZmZlcmVkKTog
UmVwbGFjZWQKKyAgICAgICAgZ1BlcmNlbnRNYXguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOiBSZW1vdmVkCisgICAgICAgIDAu
MTAgY29kZXBhdGguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OnByb2Nlc3NUYWJsZU9mQ29udGVudHMpOgorICAgICAgICBSZW1vdmVkIGNoZWNrcyBmb3Ig
MS4wIGFzIGl0IGlzIHRoZSBvbmx5IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxCeXRlcyk6IFJlbW92ZWQgMC4xMAorICAg
ICAgICBjb2RlcGF0aC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y3JlYXRlR1NUUGxheUJpbik6IFJlcGxhY2VkCisgICAgICAgIGdQbGF5YmluTmFtZSBh
bmQgd2Via2l0R3N0UGlwZWxpbmVHZXRCdXMgYW5kIHJlbW92ZWQgY2hlY2tzIGZvcgorICAgICAg
ICAxLjAuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICBSZW1vdmVkIGNoZWNrcyBmb3IgMS4wIGFzIGl0
IGlzIHRoZSBvbmx5IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnBhaW50KTogUmVtb3ZlZCAwLjEwCisgICAgICAgIGNvZGVwYXRoLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dFNpbmtHU3RyZWFt
ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0U2lua0dT
dHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5oOiBSZW1vdmVkCisgICAgICAgIGNoZWNr
cyBmb3IgMS4wIGFzIGl0IGlzIHRoZSBvbmx5IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KHdlYmtpdFZpZGVvU2lua1JlbmRlcik6CisgICAgICAgICh3ZWJraXRWaWRlb1NpbmtTZXRDYXBz
KTogUmVtb3ZlZCAwLjEwIGNvZGVwYXRoLgorICAgICAgICAod2Via2l0VmlkZW9TaW5rUHJvcG9z
ZUFsbG9jYXRpb24pOiBSZW1vdmVkIGNoZWNrcyBmb3IgMS4wIGFzIGl0CisgICAgICAgIGlzIHRo
ZSBvbmx5IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKHdlYmtpdFZpZGVvU2lua01hcnNoYWxWb2lk
QW5kTWluaU9iamVjdCk6IFJlbW92ZWQgYXMgaXQgd2FzIDAuMTAuCisgICAgICAgICh3ZWJraXRf
dmlkZW9fc2lua19jbGFzc19pbml0KTogUmVtb3ZlZCAwLjEwIGNvZGVwYXRoIGFuZCByZXBsYWNl
ZAorICAgICAgICBzZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lci5oOgorICAgICAgICBSZW1vdmVkIGNoZWNrcyBmb3IgMS4wIGFzIGl0IGlzIHRoZSBvbmx5
IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2Via2l0X21lZGlhX3NyY19j
bGFzc19pbml0KTogUmVwbGFjZWQKKyAgICAgICAgc2V0R3N0RWxlbWVudENsYXNzTWV0YWRhdGEu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHA6CisgICAgICAgIFJlbW92ZWQgMC4xMCBjb2RlcGF0aC4KKyAgICAgICAgKHdl
YktpdFdlYlNyY1F1ZXJ5KTogUmVtb3ZlZCBhcyBpdCB3YXMgMC4xMCBvbmx5LgorICAgICAgICAo
dm9pZCB3ZWJraXRfd2ViX3NyY19jbGFzc19pbml0KTogUmVwbGFjZWQgc2V0R3N0RWxlbWVudENs
YXNzTWV0YWRhdGEuCisgICAgICAgICh3ZWJraXRfd2ViX3NyY19pbml0KTogUmVtb3ZlZCBoYXZl
QXBwU3JjMjcgcHJpdmF0ZSBhdHRyaWJ1dGUgYW5kCisgICAgICAgIDAuMTAgY29kZXBhdGguCisg
ICAgICAgICh3ZWJLaXRXZWJTcmNTdG9wKTogUmVtb3ZlZCBjaGVja3MgZm9yIDEuMCBhcyBpdCBp
cyB0aGUgb25seQorICAgICAgICBjb2RlcGF0aCBub3cuCisgICAgICAgICh3ZWJLaXRXZWJTcmNT
ZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNVcmlHZXRUeXBlKToKKyAgICAgICAg
KHdlYktpdFdlYlNyY0dldFByb3RvY29scyk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNHZXRVcmkp
OgorICAgICAgICAod2ViS2l0V2ViU3JjU2V0VXJpKTogUmVtb3ZlZCAwLjEwIGNvZGVwYXRoLgor
ICAgICAgICAoU3RyZWFtaW5nQ2xpZW50OjpjcmVhdGVSZWFkQnVmZmVyKTogUmVtb3ZlZCBjaGVj
a3MgZm9yIDEuMCBhbmQKKyAgICAgICAgcmVwbGFjZWQgZ2V0R3N0QnVmZmVyU2l6ZS4KKyAgICAg
ICAgKFN0cmVhbWluZ0NsaWVudDo6aGFuZGxlUmVzcG9uc2VSZWNlaXZlZCk6IFJlbW92ZWQgMC4x
MCBjb2RlcGF0aAorICAgICAgICBhbmQgcmVwbGFjZWQgbm90aWZ5R3N0VGFnc09uUGFkLgorICAg
ICAgICAoU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVEYXRhUmVjZWl2ZWQpOiBSZW1vdmVkIDAuMTAg
Y29kZXBhdGggYW5kCisgICAgICAgIHJlcGxhY2VkIHNldEdzdEJ1ZmZlclNpemUgYW5kIGdzdF9i
dWZmZXJfZ2V0X3NpemUuCisKIDIwMTMtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBHT2JqZWN0IERP
TSBzeW1ib2xzIGZpbGUgYWZ0ZXIgcjE1ODc2MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjhiNGMyODU1ZDNmMzI4
YzQ1ZjdlYTlkZmQ3MmRjNDUxNzdlYTgzZi4uNDU0NDU5OGQyNDExMTBhZjRmZTBiYmYzODY2ZDdh
YmJhOTlkNjA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMS0yMiAgWGFiaWVy
IFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3Ry
ZWFtZXJdIFJlbW92ZSAwLjEwIGNvZGVwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBSZW1vdmVkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJFZmwuY3BwLgorCiAyMDEzLTExLTEzICBKb3NlcGggUGVjb3Jhcm8g
IDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCByb2xsb3V0IG9mIHIx
NTkyNzEsIGJyb2tlIE1vdW50YWluIExpb24gYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggYmMw
N2I3NjIwNWQzZDYwYjNmODg5ODFlMGEwYTg1MzgzYTk5MGZhMC4uMTQ2NzUwMTliMjZjZjg3MmM2
YjA4NjQzODM0NjllNGJjYjExMTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDEzLTExLTIyICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gUmVtb3ZlIDAuMTAgY29kZXBhdGgKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDUzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckVmbC5jcHA6IFJlbW92ZWQuCisKIDIwMTMtMTEtMTUg
IEFsYmVydG8gR2FyY2lhICA8YmVydG9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbRUZMXSBMZWFr
IGluIGV3a19mcmFtZV9jZXJ0aWZpY2F0ZV9zdGF0dXNfZ2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGIy
YjI0Nzk0NGM5ZjEwN2QxZjA5MjU2OTEzMmU2YmY4YjFmNGJiM2QuLmViNDdhYWNjZmIzOGQ2MmNk
ZTMwYmUzNTMzYzcyN2ExNGFhNThlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtNDk0LDcgKzQ5NCw2IEBA
CiAjZGVmaW5lIFdURl9VU0VfU09VUCAxCiAjZGVmaW5lIFdURl9VU0VfV0VCUCAxCiAjZGVmaW5l
IEVOQUJMRV9HTE9CQUxfRkFTVE1BTExPQ19ORVcgMAotI2RlZmluZSBHU1RfQVBJX1ZFUlNJT05f
MSAxCiAjZW5kaWYKIAogLyogT24gV2luZG93cywgdXNlIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVy
IGJ5IGRlZmF1bHQgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDNhNGE4NWEz
NWJmZTY0NjBmZThlZDNjZDBiMTQzYTI1Y2ZhZDUzOTEuLmIwMmZmZDRiMzc1Mzc3NjU4NzdiMWIw
N2EzMDU0MzNmY2E1YjgyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjMx
OCw4ICs2MzE4LDYgQEAgcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJV
dGlsaXRpZXMuaCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclZlcnNpb25pbmcuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1FZmwuY21ha2UKaW5kZXggMTJkOGUwYmEwN2RjNzlkZjJhMDVhYTE3NTY4M2ZiZjM3MDk4
NWUyZi4uMWU5OTU4ODc2ZjA4MzkyNjcwOTZhMDYyNDQ2NjFjNzA2Yjc2MjkxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTEyNiw3ICsxMjYsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJH
U3RyZWFtZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0
aWxpdGllcy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVy
c2lvbmluZy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFt
ZXJDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpp
bmRleCAxOTdlMWQ2Y2IxZGFkZDI2N2ZjMmUyMDlmYzI3ZGYyMjMyMzI2YzRhLi41NTc3NzQyYTVh
MjU5MWQ0MmQ2YjEzZmVjODRmNGYxMGU3M2Q0NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFr
ZQpAQCAtOTksNyArOTksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwCi0gICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCmluZGV4IDNlMzhkNzMwZDA2ZjQ2YmFhMzkwMDY2NGU2ZWY3OWVlZWQ5NDBjODQuLjg3Njhi
MzE3ZmM2YTViYjA3MWM5MDdmMDQyMTg3MzIzMTNhN2M3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtNzI3NSwxNiArNzI3NSw2IEBA
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgog
ICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcZ3N0cmVhbWVyXEdTdHJlYW1lclZlcnNpb25pbmcuY3BwIj4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyXEltYWdlR1N0cmVhbWVyQ2Fpcm8u
Y3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE5
MDE2LDcgKzE5MDA2LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXGdzdHJlYW1lclxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyXEdSZWZQdHJH
U3RyZWFtZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXGdzdHJlYW1lclxHU3RyZWFtZXJVdGlsaXRpZXMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1lclxHU3RyZWFtZXJWZXJzaW9uaW5n
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xnc3Ry
ZWFtZXJcSW1hZ2VHU3RyZWFtZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1lclxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXGdzdHJlYW1lclxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKaW5kZXggYTM5NWRhYjliNjM2MjY3YzFhOGE2YmFiY2M1YTFjMDYyZWNmNTJjYy4uOGQ5
NDM1ZmM0MmI3N2E1MDgxMzBkMmZjZTNmNDcyZGI2OWVjNWVhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAt
NzA1Nyw5ICs3MDU3LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXGdzdHJlYW1lclxHU3RyZWFtZXJVdGlsaXRpZXMuY3BwIj4KICAgICAgIDxGaWx0ZXI+
cGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0g
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xnc3RyZWFtZXJcR1N0
cmVhbWVyVmVyc2lvbmluZy5jcHAiPgotICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1xn
c3RyZWFtZXI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1lclxJbWFnZUdTdHJlYW1lckNhaXJvLmNw
cCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1lcjwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgpAQCAtMTQ4ODIsOSArMTQ4NzksNiBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyXEdTdHJlYW1lclV0aWxpdGll
cy5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xnc3RyZWFtZXJcR1N0cmVhbWVyVmVyc2lvbmluZy5oIj4KLSAgICAgIDxGaWx0ZXI+
cGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xnc3RyZWFtZXJcSW1h
Z2VHU3RyZWFtZXIuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1l
cjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCmluZGV4IGNjZjA0NTA3MmJlMGI5NzQ3ZDhiN2NmNmI4N2MyYmViYjM4NWE2
ZTQuLmRkMjQ0YmExNjkxZTE2ZDdjNDQxNmE5MTc1MTk2MzhhMmZhZmI0MzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNs
dWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJW
ZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIldlYktpdFdlYkF1
ZGlvU291cmNlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgpAQCAtNzAsMTMgKzY5
LDYgQEAgdW5zaWduZWQgbG9uZyBBdWRpb0Rlc3RpbmF0aW9uOjptYXhDaGFubmVsQ291bnQoKQog
ICAgIHJldHVybiAwOwogfQogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi1zdGF0aWMgdm9p
ZCBvbkdTdHJlYW1lcldhdnBhcnNlUGFkQWRkZWRDYWxsYmFjayhHc3RFbGVtZW50KiwgR3N0UGFk
KiBwYWQsIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIqIGRlc3RpbmF0aW9uKQotewotICAgIGRl
c3RpbmF0aW9uLT5maW5pc2hCdWlsZGluZ1BpcGVsaW5lQWZ0ZXJXYXZQYXJzZXJQYWRSZWFkeShw
YWQpOwotfQotI2VuZGlmCi0KIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGlu
YXRpb25HU3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgZmxvYXQgc2FtcGxlUmF0
ZSkKICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgLCBtX3JlbmRlckJ1cyhBdWRpb0J1
czo6Y3JlYXRlKDIsIGZyYW1lc1RvUHVsbCwgZmFsc2UpKQpAQCAtODQsNyArNzYsNyBAQCBBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKEF1ZGlvSU9D
YWxsYmFjayYgY2FsbGJhY2ssCiAgICAgLCBtX2lzUGxheWluZyhmYWxzZSkKIHsKICAgICBtX3Bp
cGVsaW5lID0gZ3N0X3BpcGVsaW5lX25ldygicGxheSIpOwotICAgIEdSZWZQdHI8R3N0QnVzPiBi
dXMgPSB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUobV9waXBlbGluZSkpOwor
ICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMo
R1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUpKSk7CiAgICAgQVNTRVJUKGJ1cyk7CiAgICAgZ3N0X2J1
c19hZGRfc2lnbmFsX3dhdGNoKGJ1cy5nZXQoKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChidXMu
Z2V0KCksICJtZXNzYWdlIiwgR19DQUxMQkFDSyhtZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKQEAg
LTEwMiwyMSArOTQsMTYgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAogICAgIGlmICghbV93YXZQ
YXJzZXJBdmFpbGFibGUpCiAgICAgICAgIHJldHVybjsKIAotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJ
T05fMQotICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2F2UGFyc2VyLCAicGFkLWFkZGVkIiwgR19DQUxM
QkFDSyhvbkdTdHJlYW1lcldhdnBhcnNlUGFkQWRkZWRDYWxsYmFjayksIHRoaXMpOwotI2VuZGlm
CiAgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKG1fcGlwZWxpbmUpLCB3ZWJraXRBdWRpb1Ny
Yywgd2F2UGFyc2VyLCBOVUxMKTsKICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbCh3ZWJr
aXRBdWRpb1NyYywgInNyYyIsIHdhdlBhcnNlciwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tf
Tk9USElORyk7CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIEdSZWZQdHI8R3N0UGFk
PiBzcmNQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQod2F2UGFyc2Vy
LCAic3JjIikpOwogICAgIGZpbmlzaEJ1aWxkaW5nUGlwZWxpbmVBZnRlcldhdlBhcnNlclBhZFJl
YWR5KHNyY1BhZC5nZXQoKSk7Ci0jZW5kaWYKIH0KIAogQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6fkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoKQogewotICAgIEdSZWZQdHI8R3N0QnVzPiBi
dXMgPSB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUobV9waXBlbGluZSkpOwor
ICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMo
R1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUpKSk7CiAgICAgQVNTRVJUKGJ1cyk7CiAgICAgZ19zaWdu
YWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKGJ1cy5nZXQoKSwgcmVpbnRlcnByZXRfY2Fz
dDxncG9pbnRlcj4obWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7CiAgICAgZ3N0X2J1c19yZW1vdmVf
c2lnbmFsX3dhdGNoKGJ1cy5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFt
ZXIuY3BwCmluZGV4IGNiNTVmYzdjODQ4NjM5MTA2NTBmZWY0YjMwYWZjMGYyNWJjMDNlYmUuLjY3
MmFlYzFhZTA5ZDdiYTg1M2FhNTI0NWE4OTgyMDEyMmMxYzlmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAiQXVk
aW9GaWxlUmVhZGVyLmgiCiAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2luY2x1ZGUgIkdTdHJl
YW1lclZlcnNpb25pbmcuaCIKIAogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDxnc3Qv
YXBwL2dzdGFwcHNpbmsuaD4KQEAgLTM1LDE3ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIAotI2lmZGVm
IEdTVF9BUElfVkVSU0lPTl8xCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+Ci0jZWxzZQot
I2luY2x1ZGUgPGdzdC9hdWRpby9tdWx0aWNoYW5uZWwuaD4KLSNlbmRpZgotCi0jaWZkZWYgR1NU
X0FQSV9WRVJTSU9OXzEKLXN0YXRpYyBjb25zdCBjaGFyKiBnRGVjb2RlYmluTmFtZSA9ICJkZWNv
ZGViaW4iOwotI2Vsc2UKLXN0YXRpYyBjb25zdCBjaGFyKiBnRGVjb2RlYmluTmFtZSA9ICJkZWNv
ZGViaW4yIjsKLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU4LDExICs0Nyw3
IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1cyhmbG9hdCBz
YW1wbGVSYXRlLCBib29sIG1peFRvTW9ubyk7CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQog
ICAgIEdzdEZsb3dSZXR1cm4gaGFuZGxlU2FtcGxlKEdzdEFwcFNpbmsqKTsKLSNlbHNlCi0gICAg
R3N0Rmxvd1JldHVybiBoYW5kbGVCdWZmZXIoR3N0QXBwU2luayopOwotI2VuZGlmCiAgICAgZ2Jv
b2xlYW4gaGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKik7CiAgICAgdm9pZCBoYW5kbGVOZXdEZWlu
dGVybGVhdmVQYWQoR3N0UGFkKik7CiAgICAgdm9pZCBkZWludGVybGVhdmVQYWRzQ29uZmlndXJl
ZCgpOwpAQCAtNzgsMTEgKzYzLDYgQEAgcHJpdmF0ZToKICAgICBHc3RCdWZmZXJMaXN0KiBtX2Zy
b250TGVmdEJ1ZmZlcnM7CiAgICAgR3N0QnVmZmVyTGlzdCogbV9mcm9udFJpZ2h0QnVmZmVyczsK
IAotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotICAgIEdzdEJ1ZmZlckxpc3RJdGVyYXRvciog
bV9mcm9udExlZnRCdWZmZXJzSXRlcmF0b3I7Ci0gICAgR3N0QnVmZmVyTGlzdEl0ZXJhdG9yKiBt
X2Zyb250UmlnaHRCdWZmZXJzSXRlcmF0b3I7Ci0jZW5kaWYKLQogICAgIEdzdEVsZW1lbnQqIG1f
cGlwZWxpbmU7CiAgICAgdW5zaWduZWQgbV9jaGFubmVsU2l6ZTsKICAgICBHUmVmUHRyPEdzdEVs
ZW1lbnQ+IG1fZGVjb2RlYmluOwpAQCAtOTMsNyArNzMsNiBAQCBwcml2YXRlOgogCiBzdGF0aWMg
dm9pZCBjb3B5R3N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVsKEdzdEJ1ZmZlckxpc3QqIGJ1
ZmZlcnMsIEF1ZGlvQ2hhbm5lbCogYXVkaW9DaGFubmVsKQogewotI2lmZGVmIEdTVF9BUElfVkVS
U0lPTl8xCiAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gYXVkaW9DaGFubmVsLT5tdXRhYmxlRGF0
YSgpOwogICAgIHVuc2lnbmVkIGJ1ZmZlckNvdW50ID0gZ3N0X2J1ZmZlcl9saXN0X2xlbmd0aChi
dWZmZXJzKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVmZmVyQ291bnQ7ICsraSkg
ewpAQCAtMTAzLDI2ICs4MiwxMSBAQCBzdGF0aWMgdm9pZCBjb3B5R3N0cmVhbWVyQnVmZmVyc1Rv
QXVkaW9DaGFubmVsKEdzdEJ1ZmZlckxpc3QqIGJ1ZmZlcnMsIEF1ZGlvQ2hhbgogICAgICAgICBn
c3RfYnVmZmVyX2V4dHJhY3QoYnVmZmVyLCAwLCBkZXN0aW5hdGlvbiwgYnVmZmVyU2l6ZSk7CiAg
ICAgICAgIGRlc3RpbmF0aW9uICs9IGJ1ZmZlclNpemUgLyBzaXplb2YoZmxvYXQpOwogICAgIH0K
LSNlbHNlCi0gICAgR3N0QnVmZmVyTGlzdEl0ZXJhdG9yKiBpdGVyID0gZ3N0X2J1ZmZlcl9saXN0
X2l0ZXJhdGUoYnVmZmVycyk7Ci0gICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX25leHRfZ3Jv
dXAoaXRlcik7Ci0gICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0
b3JfbWVyZ2VfZ3JvdXAoaXRlcik7Ci0gICAgaWYgKGJ1ZmZlcikgewotICAgICAgICBtZW1jcHko
YXVkaW9DaGFubmVsLT5tdXRhYmxlRGF0YSgpLCByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oR1NU
X0JVRkZFUl9EQVRBKGJ1ZmZlcikpLCBHU1RfQlVGRkVSX1NJWkUoYnVmZmVyKSk7Ci0gICAgICAg
IGdzdF9idWZmZXJfdW5yZWYoYnVmZmVyKTsKLSAgICB9Ci0KLSAgICBnc3RfYnVmZmVyX2xpc3Rf
aXRlcmF0b3JfZnJlZShpdGVyKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgR3N0Rmxvd1JldHVybiBv
bkFwcHNpbmtQdWxsUmVxdWlyZWRDYWxsYmFjayhHc3RBcHBTaW5rKiBzaW5rLCBncG9pbnRlciB1
c2VyRGF0YSkKIHsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxBdWRpb0ZpbGVSZWFkZXIqPih1c2VyRGF0YSktPmhhbmRsZVNhbXBsZShzaW5rKTsKLSNl
bHNlCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlvRmlsZVJlYWRlcio+KHVzZXJEYXRhKS0+
aGFuZGxlQnVmZmVyKHNpbmspOwotI2VuZGlmCiB9CiAKIGdib29sZWFuIG1lc3NhZ2VDYWxsYmFj
ayhHc3RCdXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBBdWRpb0ZpbGVSZWFkZXIqIHJlYWRlcikK
QEAgLTE3Myw3ICsxMzcsNyBAQCBBdWRpb0ZpbGVSZWFkZXI6OkF1ZGlvRmlsZVJlYWRlcihjb25z
dCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YVNpemUpCiBBdWRpb0ZpbGVSZWFkZXI6On5BdWRpb0Zp
bGVSZWFkZXIoKQogewogICAgIGlmIChtX3BpcGVsaW5lKSB7Ci0gICAgICAgIEdSZWZQdHI8R3N0
QnVzPiBidXMgPSB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUobV9waXBlbGlu
ZSkpOworICAgICAgICBHUmVmUHRyPEdzdEJ1cz4gYnVzID0gYWRvcHRHUmVmKGdzdF9waXBlbGlu
ZV9nZXRfYnVzKEdTVF9QSVBFTElORShtX3BpcGVsaW5lKSkpOwogICAgICAgICBBU1NFUlQoYnVz
KTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKGJ1cy5nZXQo
KSwgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4obWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7CiAg
ICAgICAgIGdzdF9idXNfcmVtb3ZlX3NpZ25hbF93YXRjaChidXMuZ2V0KCkpOwpAQCAtMTkzLDE1
ICsxNTcsMTAgQEAgQXVkaW9GaWxlUmVhZGVyOjp+QXVkaW9GaWxlUmVhZGVyKCkKICAgICAgICAg
bV9kZUludGVybGVhdmUuY2xlYXIoKTsKICAgICB9CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9O
XzEKLSAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfZnJlZShtX2Zyb250TGVmdEJ1ZmZlcnNJ
dGVyYXRvcik7Ci0gICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX2ZyZWUobV9mcm9udFJpZ2h0
QnVmZmVyc0l0ZXJhdG9yKTsKLSNlbmRpZgogICAgIGdzdF9idWZmZXJfbGlzdF91bnJlZihtX2Zy
b250TGVmdEJ1ZmZlcnMpOwogICAgIGdzdF9idWZmZXJfbGlzdF91bnJlZihtX2Zyb250UmlnaHRC
dWZmZXJzKTsKIH0KIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiBHc3RGbG93UmV0dXJuIEF1
ZGlvRmlsZVJlYWRlcjo6aGFuZGxlU2FtcGxlKEdzdEFwcFNpbmsqIHNpbmspCiB7CiAgICAgR3N0
U2FtcGxlKiBzYW1wbGUgPSBnc3RfYXBwX3NpbmtfcHVsbF9zYW1wbGUoc2luayk7CkBAIC0yNDIs
NjMgKzIwMSw2IEBAIEdzdEZsb3dSZXR1cm4gQXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVTYW1wbGUo
R3N0QXBwU2luayogc2luaykKICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CiAKIH0KLSNlbmRpZgot
Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi1Hc3RGbG93UmV0dXJuIEF1ZGlvRmlsZVJlYWRl
cjo6aGFuZGxlQnVmZmVyKEdzdEFwcFNpbmsqIHNpbmspCi17Ci0gICAgR3N0QnVmZmVyKiBidWZm
ZXIgPSBnc3RfYXBwX3NpbmtfcHVsbF9idWZmZXIoc2luayk7Ci0gICAgaWYgKCFidWZmZXIpCi0g
ICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLQotICAgIEdzdENhcHMqIGNhcHMgPSBnc3Rf
YnVmZmVyX2dldF9jYXBzKGJ1ZmZlcik7Ci0gICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
c3RfY2Fwc19nZXRfc3RydWN0dXJlKGNhcHMsIDApOwotCi0gICAgZ2ludCBjaGFubmVscyA9IDA7
Ci0gICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAiY2hhbm5lbHMiLCAm
Y2hhbm5lbHMpIHx8ICFjaGFubmVscykgewotICAgICAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsK
LSAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOwotICAgICAgICByZXR1cm4gR1NUX0ZM
T1dfRVJST1I7Ci0gICAgfQotCi0gICAgZ2ludCBzYW1wbGVSYXRlID0gMDsKLSAgICBpZiAoIWdz
dF9zdHJ1Y3R1cmVfZ2V0X2ludChzdHJ1Y3R1cmUsICJyYXRlIiwgJnNhbXBsZVJhdGUpIHx8ICFz
YW1wbGVSYXRlKSB7Ci0gICAgICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOwotICAgICAgICBnc3Rf
YnVmZmVyX3VucmVmKGJ1ZmZlcik7Ci0gICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLSAg
ICB9Ci0KLSAgICBnaW50IHdpZHRoID0gMDsKLSAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2lu
dChzdHJ1Y3R1cmUsICJ3aWR0aCIsICZ3aWR0aCkgfHwgIXdpZHRoKSB7Ci0gICAgICAgIGdzdF9j
YXBzX3VucmVmKGNhcHMpOwotICAgICAgICBnc3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7Ci0gICAg
ICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLSAgICB9Ci0KLSAgICBHc3RDbG9ja1RpbWUgZHVy
YXRpb24gPSAoc3RhdGljX2Nhc3Q8Z3VpbnQ2ND4oR1NUX0JVRkZFUl9TSVpFKGJ1ZmZlcikpICog
OCAqIEdTVF9TRUNPTkQpIC8gKHNhbXBsZVJhdGUgKiBjaGFubmVscyAqIHdpZHRoKTsKLSAgICBp
bnQgZnJhbWVzID0gR1NUX0NMT0NLX1RJTUVfVE9fRlJBTUVTKGR1cmF0aW9uLCBzYW1wbGVSYXRl
KTsKLQotICAgIC8vIENoZWNrIHRoZSBmaXJzdCBhdWRpbyBjaGFubmVsLiBUaGUgYnVmZmVyIGlz
IHN1cHBvc2VkIHRvIHN0b3JlCi0gICAgLy8gZGF0YSBvZiBhIHNpbmdsZSBjaGFubmVsIGFueXdh
eS4KLSAgICBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiogcG9zaXRpb25zID0gZ3N0X2F1ZGlvX2dl
dF9jaGFubmVsX3Bvc2l0aW9ucyhzdHJ1Y3R1cmUpOwotICAgIHN3aXRjaCAocG9zaXRpb25zWzBd
KSB7Ci0gICAgY2FzZSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZUOgotICAg
ICAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfYWRkKG1fZnJvbnRMZWZ0QnVmZmVyc0l0ZXJh
dG9yLCBidWZmZXIpOwotICAgICAgICBtX2NoYW5uZWxTaXplICs9IGZyYW1lczsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVDoK
LSAgICAgICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX2FkZChtX2Zyb250UmlnaHRCdWZmZXJz
SXRlcmF0b3IsIGJ1ZmZlcik7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IGdzdF9idWZmZXJfdW5yZWYoYnVmZmVyKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
Z19mcmVlKHBvc2l0aW9ucyk7Ci0gICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7Ci0gICAgcmV0dXJu
IEdTVF9GTE9XX09LOwotfQotI2VuZGlmCiAKIGdib29sZWFuIEF1ZGlvRmlsZVJlYWRlcjo6aGFu
ZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogewpAQCAtMzM3LDEyICsyMzksNyBAQCB2
b2lkIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTmV3RGVpbnRlcmxlYXZlUGFkKEdzdFBhZCogcGFk
KQogICAgIEdzdEFwcFNpbmtDYWxsYmFja3MgY2FsbGJhY2tzOwogICAgIGNhbGxiYWNrcy5lb3Mg
PSAwOwogICAgIGNhbGxiYWNrcy5uZXdfcHJlcm9sbCA9IDA7Ci0jaWZkZWYgR1NUX0FQSV9WRVJT
SU9OXzEKICAgICBjYWxsYmFja3MubmV3X3NhbXBsZSA9IG9uQXBwc2lua1B1bGxSZXF1aXJlZENh
bGxiYWNrOwotI2Vsc2UKLSAgICBjYWxsYmFja3MubmV3X2J1ZmZlcl9saXN0ID0gMDsKLSAgICBj
YWxsYmFja3MubmV3X2J1ZmZlciA9IG9uQXBwc2lua1B1bGxSZXF1aXJlZENhbGxiYWNrOwotI2Vu
ZGlmCiAgICAgZ3N0X2FwcF9zaW5rX3NldF9jYWxsYmFja3MoR1NUX0FQUF9TSU5LKHNpbmspLCAm
Y2FsbGJhY2tzLCB0aGlzLCAwKTsKIAogICAgIGdfb2JqZWN0X3NldChzaW5rLCAic3luYyIsIEZB
TFNFLCBOVUxMKTsKQEAgLTM4MCw3ICsyNzcsMTAgQEAgdm9pZCBBdWRpb0ZpbGVSZWFkZXI6OnBs
dWdEZWludGVybGVhdmUoR3N0UGFkKiBwYWQpCiAgICAgZ19zaWduYWxfY29ubmVjdChtX2RlSW50
ZXJsZWF2ZS5nZXQoKSwgInBhZC1hZGRlZCIsIEdfQ0FMTEJBQ0sob25HU3RyZWFtZXJEZWludGVy
bGVhdmVQYWRBZGRlZENhbGxiYWNrKSwgdGhpcyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChtX2Rl
SW50ZXJsZWF2ZS5nZXQoKSwgIm5vLW1vcmUtcGFkcyIsIEdfQ0FMTEJBQ0sob25HU3RyZWFtZXJE
ZWludGVybGVhdmVSZWFkeUNhbGxiYWNrKSwgdGhpcyk7CiAKLSAgICBHc3RDYXBzKiBjYXBzID0g
Z2V0R3N0QXVkaW9DYXBzKDIsIG1fc2FtcGxlUmF0ZSk7CisgICAgR3N0Q2FwcyogY2FwcyA9IGdz
dF9jYXBzX25ld19zaW1wbGUoImF1ZGlvL3gtcmF3IiwgInJhdGUiLCBHX1RZUEVfSU5ULCBzdGF0
aWNfY2FzdDxpbnQ+KG1fc2FtcGxlUmF0ZSksCisgICAgICAgICJjaGFubmVscyIsIEdfVFlQRV9J
TlQsIDIsCisgICAgICAgICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBnc3RfYXVkaW9fZm9ybWF0
X3RvX3N0cmluZyhHU1RfQVVESU9fRk9STUFUX0YzMiksCisgICAgICAgICJsYXlvdXQiLCBHX1RZ
UEVfU1RSSU5HLCAiaW50ZXJsZWF2ZWQiLCBudWxscHRyKTsKICAgICBnX29iamVjdF9zZXQoY2Fw
c0ZpbHRlciwgImNhcHMiLCBjYXBzLCBOVUxMKTsKICAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsK
IApAQCAtNDA2LDcgKzMwNiw3IEBAIHZvaWQgQXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVBdWRpb0Zv
ckJ1c0NyZWF0aW9uKCkKICAgICAvLyBBIGRlaW50ZXJsZWF2ZSBlbGVtZW50IGlzIGFkZGVkIG9u
Y2UgYSBzcmMgcGFkIGJlY29tZXMgYXZhaWxhYmxlIGluIGRlY29kZWJpbi4KICAgICBtX3BpcGVs
aW5lID0gZ3N0X3BpcGVsaW5lX25ldygwKTsKIAotICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSB3
ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUobV9waXBlbGluZSkpOworICAgIEdS
ZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJ
UEVMSU5FKG1fcGlwZWxpbmUpKSk7CiAgICAgQVNTRVJUKGJ1cyk7CiAgICAgZ3N0X2J1c19hZGRf
c2lnbmFsX3dhdGNoKGJ1cy5nZXQoKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChidXMuZ2V0KCks
ICJtZXNzYWdlIiwgR19DQUxMQkFDSyhtZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKQEAgLTQyMiw3
ICszMjIsNyBAQCB2b2lkIEF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlQXVkaW9Gb3JCdXNDcmVhdGlv
bigpCiAgICAgICAgIGdfb2JqZWN0X3NldChzb3VyY2UsICJsb2NhdGlvbiIsIG1fZmlsZVBhdGgs
IE5VTEwpOwogICAgIH0KIAotICAgIG1fZGVjb2RlYmluID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9t
YWtlKGdEZWNvZGViaW5OYW1lLCAiZGVjb2RlYmluIik7CisgICAgbV9kZWNvZGViaW4gPSBnc3Rf
ZWxlbWVudF9mYWN0b3J5X21ha2UoImRlY29kZWJpbiIsICJkZWNvZGViaW4iKTsKICAgICBnX3Np
Z25hbF9jb25uZWN0KG1fZGVjb2RlYmluLmdldCgpLCAicGFkLWFkZGVkIiwgR19DQUxMQkFDSyhv
bkdTdHJlYW1lckRlY29kZWJpblBhZEFkZGVkQ2FsbGJhY2spLCB0aGlzKTsKIAogICAgIGdzdF9i
aW5fYWRkX21hbnkoR1NUX0JJTihtX3BpcGVsaW5lKSwgc291cmNlLCBtX2RlY29kZWJpbi5nZXQo
KSwgTlVMTCk7CkBAIC00MzcsMTQgKzMzNyw2IEBAIFBhc3NSZWZQdHI8QXVkaW9CdXM+IEF1ZGlv
RmlsZVJlYWRlcjo6Y3JlYXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vCiAg
ICAgbV9mcm9udExlZnRCdWZmZXJzID0gZ3N0X2J1ZmZlcl9saXN0X25ldygpOwogICAgIG1fZnJv
bnRSaWdodEJ1ZmZlcnMgPSBnc3RfYnVmZmVyX2xpc3RfbmV3KCk7CiAKLSNpZm5kZWYgR1NUX0FQ
SV9WRVJTSU9OXzEKLSAgICBtX2Zyb250TGVmdEJ1ZmZlcnNJdGVyYXRvciA9IGdzdF9idWZmZXJf
bGlzdF9pdGVyYXRlKG1fZnJvbnRMZWZ0QnVmZmVycyk7Ci0gICAgZ3N0X2J1ZmZlcl9saXN0X2l0
ZXJhdG9yX2FkZF9ncm91cChtX2Zyb250TGVmdEJ1ZmZlcnNJdGVyYXRvcik7Ci0KLSAgICBtX2Zy
b250UmlnaHRCdWZmZXJzSXRlcmF0b3IgPSBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0ZShtX2Zyb250
UmlnaHRCdWZmZXJzKTsKLSAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfYWRkX2dyb3VwKG1f
ZnJvbnRSaWdodEJ1ZmZlcnNJdGVyYXRvcik7Ci0jZW5kaWYKLQogICAgIEdSZWZQdHI8R01haW5D
b250ZXh0PiBjb250ZXh0ID0gYWRvcHRHUmVmKGdfbWFpbl9jb250ZXh0X25ldygpKTsKICAgICBn
X21haW5fY29udGV4dF9wdXNoX3RocmVhZF9kZWZhdWx0KGNvbnRleHQuZ2V0KCkpOwogICAgIG1f
bG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9uZXcoY29udGV4dC5nZXQoKSwgRkFMU0UpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJL
aXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDU1
ZGJlZDRmODBkMjM5NGRlYTM4MzFhYTVkZTE4ZGRmZmNmZWQzMjkuLjc3YmY5MjA2OGRlMzllMmIy
YmE3MmMyZDhjYTY4MDg2ZjE5NTQxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlv
U291cmNlR1N0cmVhbWVyLmNwcApAQCAtMjYsMTkgKzI2LDEwIEBACiAjaW5jbHVkZSAiQXVkaW9J
T0NhbGxiYWNrLmgiCiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUg
IkdSZWZQdHJHU3RyZWFtZXIuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCi0j
aWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpbmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIK
ICNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KLSNlbHNlCi0jaW5jbHVkZSA8Z3N0L2F1ZGlv
L211bHRpY2hhbm5lbC5oPgotI2VuZGlmCiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5o
PgogCi0vLyBHU3RhdGljUmVjTXV0ZXggaXMgZGVwcmVjYXRlZCBpbiBHbGliLCBidXQgcmVxdWly
ZWQgaW4gR1N0cmVhbWVyIDAuMTAKLSNpZiAoQ09NUElMRVIoR0NDKSAmJiBHQ0NfVkVSU0lPTl9B
VF9MRUFTVCg0LCA2LCAwKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkpCi0jcHJhZ21h
IEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0jZW5k
aWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJBdWRpb1NyY0NsYXNzICAgV2ViS2l0V2ViQXVkaW9TcmNDbGFzczsKQEAgLTY1LDExICs1Niw3
IEBAIHN0cnVjdCBfV2ViS2l0V2ViQXVkaW9Tb3VyY2VQcml2YXRlIHsKICAgICBHUmVmUHRyPEdz
dEVsZW1lbnQ+IHdhdkVuY29kZXI7CiAKICAgICBHUmVmUHRyPEdzdFRhc2s+IHRhc2s7Ci0jaWZk
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBHUmVjTXV0ZXggbXV0ZXg7Ci0jZWxzZQotICAgIEdT
dGF0aWNSZWNNdXRleCBtdXRleDsKLSNlbmRpZgogCiAgICAgR1NMaXN0KiBwYWRzOyAvLyBMaXN0
IG9mIHF1ZXVlIHNpbmsgcGFkcy4gT25lIHF1ZXVlIGZvciBlYWNoIHBsYW5hciBhdWRpbyBjaGFu
bmVsLgogICAgIEdzdFBhZCogc291cmNlUGFkOyAvLyBzcmMgcGFkIG9mIHRoZSBlbGVtZW50LCBp
bnRlcmxlYXZlZCB3YXYgZGF0YSBpcyBwdXNoZWQgdG8gaXQuCkBAIC05OSwxNyArODYsMTAgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViQXVkaW9TcmNMb29wKFdlYktpdFdlYkF1ZGlvU3JjKik7CiAK
IHN0YXRpYyBHc3RDYXBzKiBnZXRHU3RyZWFtZXJNb25vQXVkaW9DYXBzKGZsb2F0IHNhbXBsZVJh
dGUpCiB7Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICByZXR1cm4gZ3N0X2NhcHNfbmV3
X3NpbXBsZSgiYXVkaW8veC1yYXciLCAicmF0ZSIsIEdfVFlQRV9JTlQsIHN0YXRpY19jYXN0PGlu
dD4oc2FtcGxlUmF0ZSksCiAgICAgICAgICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIDEsCiAgICAg
ICAgICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBnc3RfYXVkaW9fZm9ybWF0X3RvX3N0cmluZyhH
U1RfQVVESU9fRk9STUFUX0YzMiksCiAgICAgICAgICJsYXlvdXQiLCBHX1RZUEVfU1RSSU5HLCAi
bm9uLWludGVybGVhdmVkIiwgTlVMTCk7Ci0jZWxzZQotICAgIHJldHVybiBnc3RfY2Fwc19uZXdf
c2ltcGxlKCJhdWRpby94LXJhdy1mbG9hdCIsICJyYXRlIiwgR19UWVBFX0lOVCwgc3RhdGljX2Nh
c3Q8aW50PihzYW1wbGVSYXRlKSwKLSAgICAgICAgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgMSwK
LSAgICAgICAgImVuZGlhbm5lc3MiLCBHX1RZUEVfSU5ULCBHX0JZVEVfT1JERVIsCi0gICAgICAg
ICJ3aWR0aCIsIEdfVFlQRV9JTlQsIDMyLCBOVUxMKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgR3N0
QXVkaW9DaGFubmVsUG9zaXRpb24gd2ViS2l0V2ViQXVkaW9HU3RyZWFtZXJDaGFubmVsUG9zaXRp
b24oaW50IGNoYW5uZWxJbmRleCkKQEAgLTEyNywxMSArMTA3LDcgQEAgc3RhdGljIEdzdEF1ZGlv
Q2hhbm5lbFBvc2l0aW9uIHdlYktpdFdlYkF1ZGlvR1N0cmVhbWVyQ2hhbm5lbFBvc2l0aW9uKGlu
dCBjaGFubmUKICAgICAgICAgcG9zaXRpb24gPSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9G
Uk9OVF9DRU5URVI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVkaW9CdXM6OkNoYW5uZWxM
RkU6Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICAgICAgcG9zaXRpb24gPSBHU1RfQVVE
SU9fQ0hBTk5FTF9QT1NJVElPTl9MRkUxOwotI2Vsc2UKLSAgICAgICAgcG9zaXRpb24gPSBHU1Rf
QVVESU9fQ0hBTk5FTF9QT1NJVElPTl9MRkU7Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBBdWRpb0J1czo6Q2hhbm5lbFN1cnJvdW5kTGVmdDoKICAgICAgICAgcG9zaXRpb24gPSBH
U1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0xFRlQ7CkBAIC0xNTgsNyArMTM0LDcgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9hdWRpb19zcmNfY2xhc3NfaW5pdChXZWJLaXRXZWJBdWRp
b1NyY0NsYXNzKiB3ZWJLaXRXZWJBdWQKICAgICBHc3RFbGVtZW50Q2xhc3MqIGVsZW1lbnRDbGFz
cyA9IEdTVF9FTEVNRU5UX0NMQVNTKHdlYktpdFdlYkF1ZGlvU3JjQ2xhc3MpOwogCiAgICAgZ3N0
X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZShlbGVtZW50Q2xhc3MsIGdzdF9zdGF0aWNf
cGFkX3RlbXBsYXRlX2dldCgmc3JjVGVtcGxhdGUpKTsKLSAgICBzZXRHc3RFbGVtZW50Q2xhc3NN
ZXRhZGF0YShlbGVtZW50Q2xhc3MsICJXZWJLaXQgV2ViQXVkaW8gc291cmNlIGVsZW1lbnQiLCAi
U291cmNlIiwgIkhhbmRsZXMgV2ViQXVkaW8gZGF0YSBmcm9tIFdlYkNvcmUiLCAiUGhpbGlwcGUg
Tm9ybWFuZCA8cG5vcm1hbmRAaWdhbGlhLmNvbT4iKTsKKyAgICBnc3RfZWxlbWVudF9jbGFzc19z
ZXRfbWV0YWRhdGEoZWxlbWVudENsYXNzLCAiV2ViS2l0IFdlYkF1ZGlvIHNvdXJjZSBlbGVtZW50
IiwgIlNvdXJjZSIsICJIYW5kbGVzIFdlYkF1ZGlvIGRhdGEgZnJvbSBXZWJDb3JlIiwgIlBoaWxp
cHBlIE5vcm1hbmQgPHBub3JtYW5kQGlnYWxpYS5jb20+Iik7CiAKICAgICBvYmplY3RDbGFzcy0+
Y29uc3RydWN0ZWQgPSB3ZWJLaXRXZWJBdWRpb1NyY0NvbnN0cnVjdGVkOwogICAgIG9iamVjdENs
YXNzLT5maW5hbGl6ZSA9IHdlYktpdFdlYkF1ZGlvU3JjRmluYWxpemU7CkBAIC0yMDUsMTMgKzE4
MSw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfYXVkaW9fc3JjX2luaXQoV2ViS2l0V2ViQXVk
aW9TcmMqIHNyYykKICAgICBwcml2LT5wcm92aWRlciA9IDA7CiAgICAgcHJpdi0+YnVzID0gMDsK
IAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgZ19yZWNfbXV0ZXhfaW5pdCgmcHJpdi0+
bXV0ZXgpOwogICAgIHByaXYtPnRhc2sgPSBnc3RfdGFza19uZXcocmVpbnRlcnByZXRfY2FzdDxH
c3RUYXNrRnVuY3Rpb24+KHdlYktpdFdlYkF1ZGlvU3JjTG9vcCksIHNyYywgMCk7Ci0jZWxzZQot
ICAgIGdfc3RhdGljX3JlY19tdXRleF9pbml0KCZwcml2LT5tdXRleCk7Ci0gICAgcHJpdi0+dGFz
ayA9IGdzdF90YXNrX2NyZWF0ZShyZWludGVycHJldF9jYXN0PEdzdFRhc2tGdW5jdGlvbj4od2Vi
S2l0V2ViQXVkaW9TcmNMb29wKSwgc3JjKTsKLSNlbmRpZgogCiAgICAgZ3N0X3Rhc2tfc2V0X2xv
Y2socHJpdi0+dGFzay5nZXQoKSwgJnByaXYtPm11dGV4KTsKIH0KQEAgLTI1MCwxNSArMjIxLDEx
IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjQ29uc3RydWN0ZWQoR09iamVjdCogb2Jq
ZWN0KQogCiAgICAgICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbW9ub0NhcHMgPSBhZG9wdEdSZWYoZ2V0
R1N0cmVhbWVyTW9ub0F1ZGlvQ2Fwcyhwcml2LT5zYW1wbGVSYXRlKSk7CiAKLSNpZmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQogICAgICAgICBHc3RBdWRpb0luZm8gaW5mbzsKICAgICAgICAgZ3N0X2F1
ZGlvX2luZm9fZnJvbV9jYXBzKCZpbmZvLCBtb25vQ2Fwcy5nZXQoKSk7CiAgICAgICAgIEdTVF9B
VURJT19JTkZPX1BPU0lUSU9OKCZpbmZvLCAwKSA9IHdlYktpdFdlYkF1ZGlvR1N0cmVhbWVyQ2hh
bm5lbFBvc2l0aW9uKGNoYW5uZWxJbmRleCk7CiAgICAgICAgIEdSZWZQdHI8R3N0Q2Fwcz4gY2Fw
cyA9IGFkb3B0R1JlZihnc3RfYXVkaW9faW5mb190b19jYXBzKCZpbmZvKSk7CiAgICAgICAgIGdf
b2JqZWN0X3NldChjYXBzZmlsdGVyLCAiY2FwcyIsIGNhcHMuZ2V0KCksIE5VTEwpOwotI2Vsc2UK
LSAgICAgICAgZ19vYmplY3Rfc2V0KGNhcHNmaWx0ZXIsICJjYXBzIiwgbW9ub0NhcHMuZ2V0KCks
IE5VTEwpOwotI2VuZGlmCiAKICAgICAgICAgLy8gQ29uZmlndXJlIHRoZSBxdWV1ZSBmb3IgbWlu
aW1hbCBsYXRlbmN5LgogICAgICAgICBnX29iamVjdF9zZXQocXVldWUsICJtYXgtc2l6ZS1idWZm
ZXJzIiwgc3RhdGljX2Nhc3Q8Z3VpbnQ+KDEpLCBOVUxMKTsKQEAgLTI4NCwxMSArMjUxLDcgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViQXVkaW9TcmNGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiAg
ICAgV2ViS2l0V2ViQXVkaW9TcmMqIHNyYyA9IFdFQktJVF9XRUJfQVVESU9fU1JDKG9iamVjdCk7
CiAgICAgV2ViS2l0V2ViQXVkaW9Tb3VyY2VQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCi0j
aWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBnX3JlY19tdXRleF9jbGVhcigmcHJpdi0+bXV0
ZXgpOwotI2Vsc2UKLSAgICBnX3N0YXRpY19yZWNfbXV0ZXhfZnJlZSgmcHJpdi0+bXV0ZXgpOwot
I2VuZGlmCiAKICAgICBnX3NsaXN0X2ZyZWVfZnVsbChwcml2LT5wYWRzLCByZWludGVycHJldF9j
YXN0PEdEZXN0cm95Tm90aWZ5Pihnc3Rfb2JqZWN0X3VucmVmKSk7CiAKQEAgLTM2MCwxNCArMzIz
LDEwIEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjTG9vcChXZWJLaXRXZWJBdWRpb1Ny
Yyogc3JjKQogICAgICAgICBHc3RCdWZmZXIqIGNoYW5uZWxCdWZmZXIgPSBnc3RfYnVmZmVyX25l
d19hbmRfYWxsb2MoYnVmZmVyU2l6ZSk7CiAgICAgICAgIEFTU0VSVChjaGFubmVsQnVmZmVyKTsK
ICAgICAgICAgY2hhbm5lbEJ1ZmZlckxpc3QgPSBnX3NsaXN0X3ByZXBlbmQoY2hhbm5lbEJ1ZmZl
ckxpc3QsIGNoYW5uZWxCdWZmZXIpOwotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgICAg
IEdzdE1hcEluZm8gaW5mbzsKICAgICAgICAgZ3N0X2J1ZmZlcl9tYXAoY2hhbm5lbEJ1ZmZlciwg
JmluZm8sIEdTVF9NQVBfUkVBRCk7CiAgICAgICAgIHByaXYtPmJ1cy0+c2V0Q2hhbm5lbE1lbW9y
eShpLCByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oaW5mby5kYXRhKSwgcHJpdi0+ZnJhbWVzVG9Q
dWxsKTsKICAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcChjaGFubmVsQnVmZmVyLCAmaW5mbyk7Ci0j
ZWxzZQotICAgICAgICBwcml2LT5idXMtPnNldENoYW5uZWxNZW1vcnkoaSwgcmVpbnRlcnByZXRf
Y2FzdDxmbG9hdCo+KEdTVF9CVUZGRVJfREFUQShjaGFubmVsQnVmZmVyKSksIHByaXYtPmZyYW1l
c1RvUHVsbCk7Ci0jZW5kaWYKICAgICB9CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9y
IGxvY2FsL2xpdmUgYXVkaW8gaW5wdXQuCkBAIC0zNzksMTQgKzMzOCw2IEBAIHN0YXRpYyB2b2lk
IHdlYktpdFdlYkF1ZGlvU3JjTG9vcChXZWJLaXRXZWJBdWRpb1NyYyogc3JjKQogICAgICAgICBH
c3RQYWQqIHBhZCA9IHN0YXRpY19jYXN0PEdzdFBhZCo+KHBhZHNJdC0+ZGF0YSk7CiAgICAgICAg
IEdzdEJ1ZmZlciogY2hhbm5lbEJ1ZmZlciA9IHN0YXRpY19jYXN0PEdzdEJ1ZmZlcio+KGJ1ZmZl
cnNJdC0+ZGF0YSk7CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICAgICAgR1JlZlB0
cjxHc3RDYXBzPiBtb25vQ2FwcyA9IGFkb3B0R1JlZihnZXRHU3RyZWFtZXJNb25vQXVkaW9DYXBz
KHByaXYtPnNhbXBsZVJhdGUpKTsKLSAgICAgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
c3RfY2Fwc19nZXRfc3RydWN0dXJlKG1vbm9DYXBzLmdldCgpLCAwKTsKLSAgICAgICAgR3N0QXVk
aW9DaGFubmVsUG9zaXRpb24gY2hhbm5lbFBvc2l0aW9uID0gd2ViS2l0V2ViQXVkaW9HU3RyZWFt
ZXJDaGFubmVsUG9zaXRpb24oaSk7Ci0gICAgICAgIGdzdF9hdWRpb19zZXRfY2hhbm5lbF9wb3Np
dGlvbnMoc3RydWN0dXJlLCAmY2hhbm5lbFBvc2l0aW9uKTsKLSAgICAgICAgZ3N0X2J1ZmZlcl9z
ZXRfY2FwcyhjaGFubmVsQnVmZmVyLCBtb25vQ2Fwcy5nZXQoKSk7Ci0jZW5kaWYKLQogICAgICAg
ICBHc3RGbG93UmV0dXJuIHJldCA9IGdzdF9wYWRfY2hhaW4ocGFkLCBjaGFubmVsQnVmZmVyKTsK
ICAgICAgICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykKICAgICAgICAgICAgIEdTVF9FTEVNRU5U
X0VSUk9SKHNyYywgQ09SRSwgUEFELCAoIkludGVybmFsIFdlYkF1ZGlvU3JjIGVycm9yIiksICgi
RmFpbGVkIHRvIHB1c2ggYnVmZmVyIG9uICVzOiVzIiwgR1NUX0RFQlVHX1BBRF9OQU1FKHBhZCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4
IDkwZDMwYTY5YTQ2ODBiYzQxYjg5N2RkYzEzMmYxNmRlOWU0OWYwYTEuLjJmMGRlYmNjMDg3YzZm
OWFmNDdkMTUzNzY2NmM5ODIyNDg2ODg1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShW
SURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklE
RU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2luY2x1ZGUg
IkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCiAKQEAgLTU4LDQgKzU4LDQgQEAgdm9pZCBB
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdT
VFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lP
Tl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxF
KFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIu
aAppbmRleCBiMWU4YTQ4Yzc0MWUyZDEyNTU3ZGIxNDJhMDRhYTdmNzAxZjYzMDI1Li4zMjQyNjhi
NjY3NzY1NjVlZjFkZjY2MzkzMDJiMWI4NjZmM2VkNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVk
aW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBBdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lcl9oCiAjZGVmaW5lIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVh
bWVyX2gKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJ
REVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURF
TykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAi
QXVkaW9UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCkBAIC01
OSw2ICs1OSw2IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlm
IC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNL
KSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykg
JiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjZW5kaWYgLy8gQXVk
aW9UcmFja1ByaXZhdGVHU3RyZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuY3BwCmlu
ZGV4IDJhZGRjY2QzM2ZjNDI1NDE2YTY1OWQwY2YxYjVhZTU4ZWI5ODNhZTUuLmY3ZWY0NmRkODM5
MGQ5NDUzNDFmZTM4MDYzMjkwM2U1YWZiNjk2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1l
ci5jcHAKQEAgLTE5LDcgKzE5LDYgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkdSZWZQdHJHU3RyZWFtZXIuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCiAK
ICNpZiBVU0UoR1NUUkVBTUVSKQogI2luY2x1ZGUgPGdzdC9nc3QuaD4KQEAgLTI4LDE0ICsyNywx
NCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGUgPD4gR1JlZlB0cjxHc3RFbGVtZW50PiBh
ZG9wdEdSZWYoR3N0RWxlbWVudCogcHRyKQogewotICAgIEFTU0VSVCghcHRyIHx8ICFnc3RPYmpl
Y3RJc0Zsb2F0aW5nKEdTVF9PQkpFQ1QocHRyKSkpOworICAgIEFTU0VSVCghcHRyIHx8ICFnX29i
amVjdF9pc19mbG9hdGluZyhHX09CSkVDVChwdHIpKSk7CiAgICAgcmV0dXJuIEdSZWZQdHI8R3N0
RWxlbWVudD4ocHRyLCBHUmVmUHRyQWRvcHQpOwogfQogCiB0ZW1wbGF0ZSA8PiBHc3RFbGVtZW50
KiByZWZHUHRyPEdzdEVsZW1lbnQ+KEdzdEVsZW1lbnQqIHB0cikKIHsKICAgICBpZiAocHRyKQot
ICAgICAgICB3ZWJraXRHc3RPYmplY3RSZWZTaW5rKEdTVF9PQkpFQ1QocHRyKSk7CisgICAgICAg
IGdzdF9vYmplY3RfcmVmX3NpbmsoR1NUX09CSkVDVChwdHIpKTsKIAogICAgIHJldHVybiBwdHI7
CiB9CkBAIC00OCwxNCArNDcsMTQgQEAgdGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHI8R3N0RWxl
bWVudD4oR3N0RWxlbWVudCogcHRyKQogCiB0ZW1wbGF0ZSA8PiBHUmVmUHRyPEdzdFBhZD4gYWRv
cHRHUmVmKEdzdFBhZCogcHRyKQogewotICAgIEFTU0VSVCghcHRyIHx8ICFnc3RPYmplY3RJc0Zs
b2F0aW5nKEdTVF9PQkpFQ1QocHRyKSkpOworICAgIEFTU0VSVCghcHRyIHx8ICFnX29iamVjdF9p
c19mbG9hdGluZyhHX09CSkVDVChwdHIpKSk7CiAgICAgcmV0dXJuIEdSZWZQdHI8R3N0UGFkPihw
dHIsIEdSZWZQdHJBZG9wdCk7CiB9CiAKIHRlbXBsYXRlIDw+IEdzdFBhZCogcmVmR1B0cjxHc3RQ
YWQ+KEdzdFBhZCogcHRyKQogewogICAgIGlmIChwdHIpCi0gICAgICAgIHdlYmtpdEdzdE9iamVj
dFJlZlNpbmsoR1NUX09CSkVDVChwdHIpKTsKKyAgICAgICAgZ3N0X29iamVjdF9yZWZfc2luayhH
U1RfT0JKRUNUKHB0cikpOwogCiAgICAgcmV0dXJuIHB0cjsKIH0KQEAgLTY4LDE0ICs2NywxNCBA
QCB0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cjxHc3RQYWQ+KEdzdFBhZCogcHRyKQogCiB0ZW1w
bGF0ZSA8PiBHUmVmUHRyPEdzdFBhZFRlbXBsYXRlPiBhZG9wdEdSZWYoR3N0UGFkVGVtcGxhdGUq
IHB0cikKIHsKLSAgICBBU1NFUlQoIXB0ciB8fCAhZ3N0T2JqZWN0SXNGbG9hdGluZyhHU1RfT0JK
RUNUKHB0cikpKTsKKyAgICBBU1NFUlQoIXB0ciB8fCAhZ19vYmplY3RfaXNfZmxvYXRpbmcoR19P
QkpFQ1QocHRyKSkpOwogICAgIHJldHVybiBHUmVmUHRyPEdzdFBhZFRlbXBsYXRlPihwdHIsIEdS
ZWZQdHJBZG9wdCk7CiB9CiAKIHRlbXBsYXRlIDw+IEdzdFBhZFRlbXBsYXRlKiByZWZHUHRyPEdz
dFBhZFRlbXBsYXRlPihHc3RQYWRUZW1wbGF0ZSogcHRyKQogewogICAgIGlmIChwdHIpCi0gICAg
ICAgIHdlYmtpdEdzdE9iamVjdFJlZlNpbmsoR1NUX09CSkVDVChwdHIpKTsKKyAgICAgICAgZ3N0
X29iamVjdF9yZWZfc2luayhHU1RfT0JKRUNUKHB0cikpOwogCiAgICAgcmV0dXJuIHB0cjsKIH0K
QEAgLTEwNywxNCArMTA2LDE0IEBAIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyPEdzdENhcHM+
KEdzdENhcHMqIHB0cikKIAogdGVtcGxhdGUgPD4gR1JlZlB0cjxHc3RUYXNrPiBhZG9wdEdSZWYo
R3N0VGFzayogcHRyKQogewotICAgIEFTU0VSVCghZ3N0T2JqZWN0SXNGbG9hdGluZyhHU1RfT0JK
RUNUKHB0cikpKTsKKyAgICBBU1NFUlQoIWdfb2JqZWN0X2lzX2Zsb2F0aW5nKEdfT0JKRUNUKHB0
cikpKTsKICAgICByZXR1cm4gR1JlZlB0cjxHc3RUYXNrPihwdHIsIEdSZWZQdHJBZG9wdCk7CiB9
CiAKIHRlbXBsYXRlIDw+IEdzdFRhc2sqIHJlZkdQdHI8R3N0VGFzaz4oR3N0VGFzayogcHRyKQog
ewogICAgIGlmIChwdHIpCi0gICAgICAgIHdlYmtpdEdzdE9iamVjdFJlZlNpbmsoR1NUX09CSkVD
VChwdHIpKTsKKyAgICAgICAgZ3N0X29iamVjdF9yZWZfc2luayhHU1RfT0JKRUNUKHB0cikpOwog
CiAgICAgcmV0dXJuIHB0cjsKIH0KQEAgLTEyNywxNCArMTI2LDE0IEBAIHRlbXBsYXRlIDw+IHZv
aWQgZGVyZWZHUHRyPEdzdFRhc2s+KEdzdFRhc2sqIHB0cikKIAogdGVtcGxhdGUgPD4gR1JlZlB0
cjxHc3RCdXM+IGFkb3B0R1JlZihHc3RCdXMqIHB0cikKIHsKLSAgICBBU1NFUlQoIWdzdE9iamVj
dElzRmxvYXRpbmcoR1NUX09CSkVDVChwdHIpKSk7CisgICAgQVNTRVJUKCFnX29iamVjdF9pc19m
bG9hdGluZyhHX09CSkVDVChwdHIpKSk7CiAgICAgcmV0dXJuIEdSZWZQdHI8R3N0QnVzPihwdHIs
IEdSZWZQdHJBZG9wdCk7CiB9CiAKIHRlbXBsYXRlIDw+IEdzdEJ1cyogcmVmR1B0cjxHc3RCdXM+
KEdzdEJ1cyogcHRyKQogewogICAgIGlmIChwdHIpCi0gICAgICAgIHdlYmtpdEdzdE9iamVjdFJl
ZlNpbmsoR1NUX09CSkVDVChwdHIpKTsKKyAgICAgICAgZ3N0X29iamVjdF9yZWZfc2luayhHU1Rf
T0JKRUNUKHB0cikpOwogCiAgICAgcmV0dXJuIHB0cjsKIH0KQEAgLTE0NywxNCArMTQ2LDE0IEBA
IHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyPEdzdEJ1cz4oR3N0QnVzKiBwdHIpCiAKIHRlbXBs
YXRlIDw+IEdSZWZQdHI8R3N0RWxlbWVudEZhY3Rvcnk+IGFkb3B0R1JlZihHc3RFbGVtZW50RmFj
dG9yeSogcHRyKQogewotICAgIEFTU0VSVCghZ3N0T2JqZWN0SXNGbG9hdGluZyhHU1RfT0JKRUNU
KHB0cikpKTsKKyAgICBBU1NFUlQoIWdfb2JqZWN0X2lzX2Zsb2F0aW5nKEdfT0JKRUNUKHB0cikp
KTsKICAgICByZXR1cm4gR1JlZlB0cjxHc3RFbGVtZW50RmFjdG9yeT4ocHRyLCBHUmVmUHRyQWRv
cHQpOwogfQogCiB0ZW1wbGF0ZSA8PiBHc3RFbGVtZW50RmFjdG9yeSogcmVmR1B0cjxHc3RFbGVt
ZW50RmFjdG9yeT4oR3N0RWxlbWVudEZhY3RvcnkqIHB0cikKIHsKICAgICBpZiAocHRyKQotICAg
ICAgICB3ZWJraXRHc3RPYmplY3RSZWZTaW5rKEdTVF9PQkpFQ1QocHRyKSk7CisgICAgICAgIGdz
dF9vYmplY3RfcmVmX3NpbmsoR1NUX09CSkVDVChwdHIpKTsKIAogICAgIHJldHVybiBwdHI7CiB9
CkBAIC0xODQsNyArMTgzLDYgQEAgdGVtcGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxHc3RCdWZmZXI+
KEdzdEJ1ZmZlciogcHRyKQogICAgICAgICBnc3RfYnVmZmVyX3VucmVmKHB0cik7CiB9CiAKLSNp
ZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogdGVtcGxhdGU8PiBHUmVmUHRyPEdzdFNhbXBsZT4gYWRv
cHRHUmVmKEdzdFNhbXBsZSogcHRyKQogewogICAgIHJldHVybiBHUmVmUHRyPEdzdFNhbXBsZT4o
cHRyLCBHUmVmUHRyQWRvcHQpOwpAQCAtMjIyLDcgKzIyMCw2IEBAIHRlbXBsYXRlPD4gdm9pZCBk
ZXJlZkdQdHI8R3N0VGFnTGlzdD4oR3N0VGFnTGlzdCogcHRyKQogICAgIGlmIChwdHIpCiAgICAg
ICAgIGdzdF90YWdfbGlzdF91bnJlZihwdHIpOwogfQotI2VuZGlmCiAKIHRlbXBsYXRlPD4gR1Jl
ZlB0cjxHc3RFdmVudD4gYWRvcHRHUmVmKEdzdEV2ZW50KiBwdHIpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJH
U3RyZWFtZXIuaAppbmRleCA1ZTA1NjU3ZTU3YzdmNDAyNWNmYTM1NWRmOGJlN2E2NzY3NzNhNDFi
Li4yY2UwYTFkODA4YWUyMjQ1NmVhYjMzOGY1NDA1NTI1NWQzYWMxOThiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVm
UHRyR1N0cmVhbWVyLmgKQEAgLTMxLDEwICszMSw4IEBAIHR5cGVkZWYgc3RydWN0IF9Hc3RUYXNr
IEdzdFRhc2s7CiB0eXBlZGVmIHN0cnVjdCBfR3N0QnVzIEdzdEJ1czsKIHR5cGVkZWYgc3RydWN0
IF9Hc3RFbGVtZW50RmFjdG9yeSBHc3RFbGVtZW50RmFjdG9yeTsKIHR5cGVkZWYgc3RydWN0IF9H
c3RCdWZmZXIgR3N0QnVmZmVyOwotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiB0eXBlZGVmIHN0
cnVjdCBfR3N0U2FtcGxlIEdzdFNhbXBsZTsKIHR5cGVkZWYgc3RydWN0IF9Hc3RUYWdMaXN0IEdz
dFRhZ0xpc3Q7Ci0jZW5kaWYKIHR5cGVkZWYgc3RydWN0IF9Hc3RFdmVudCBHc3RFdmVudDsKIHR5
cGVkZWYgc3RydWN0IF9Hc3RUb2MgR3N0VG9jOwogCkBAIC03MiwxNyArNzAsMTMgQEAgdGVtcGxh
dGU8PiBHUmVmUHRyPEdzdEJ1ZmZlcj4gYWRvcHRHUmVmKEdzdEJ1ZmZlciogcHRyKTsKIHRlbXBs
YXRlPD4gR3N0QnVmZmVyKiByZWZHUHRyPEdzdEJ1ZmZlcj4oR3N0QnVmZmVyKiBwdHIpOwogdGVt
cGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxHc3RCdWZmZXI+KEdzdEJ1ZmZlciogcHRyKTsKIAotI2lm
ZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0vKiBHc3RTYW1wbGUgd2FzIGFkZGVkIGluIEdTdHJlYW1l
ciAxLjAgKi8KIHRlbXBsYXRlPD4gR1JlZlB0cjxHc3RTYW1wbGU+IGFkb3B0R1JlZihHc3RTYW1w
bGUqIHB0cik7CiB0ZW1wbGF0ZTw+IEdzdFNhbXBsZSogcmVmR1B0cjxHc3RTYW1wbGU+KEdzdFNh
bXBsZSogcHRyKTsKIHRlbXBsYXRlPD4gdm9pZCBkZXJlZkdQdHI8R3N0U2FtcGxlPihHc3RTYW1w
bGUqIHB0cik7CiAKLS8qIEdzdFRhZ0xpc3QgaXNuJ3QgcmVmY291bnRlZCBpbiBHU3RyZWFtZXIg
MC4xMCAqLwogdGVtcGxhdGU8PiBHUmVmUHRyPEdzdFRhZ0xpc3Q+IGFkb3B0R1JlZihHc3RUYWdM
aXN0KiBwdHIpOwogdGVtcGxhdGU8PiBHc3RUYWdMaXN0KiByZWZHUHRyPEdzdFRhZ0xpc3Q+KEdz
dFRhZ0xpc3QqIHB0cik7CiB0ZW1wbGF0ZTw+IHZvaWQgZGVyZWZHUHRyPEdzdFRhZ0xpc3Q+KEdz
dFRhZ0xpc3QqIHB0cik7Ci0jZW5kaWYKIAogdGVtcGxhdGU8PiBHUmVmUHRyPEdzdEV2ZW50PiBh
ZG9wdEdSZWYoR3N0RXZlbnQqIHB0cik7CiB0ZW1wbGF0ZTw+IEdzdEV2ZW50KiByZWZHUHRyPEdz
dEV2ZW50PihHc3RFdmVudCogcHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAK
aW5kZXggZmMzODYyZGE4MWI4NDM0ZjBlMTU2YmM2OThkNzM0NzNmN2YzMmU5Ny4uYzRlNzYyOTZl
N2I2NTRmODdlMWRjNmJhMzYyMzlmNzlhZjAyNmNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0
aWxpdGllcy5jcHAKQEAgLTIxLDkgKzIxLDEwMiBAQAogI2luY2x1ZGUgIkdTdHJlYW1lclV0aWxp
dGllcy5oIgogCiAjaWYgVVNFKEdTVFJFQU1FUikKKworI2luY2x1ZGUgIkludFNpemUuaCIKKwor
I2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAKK2NvbnN0IGNoYXIqIHdlYmtpdEdzdE1hcElu
Zm9RdWFya1N0cmluZyA9ICJ3ZWJraXQtZ3N0LW1hcC1pbmZvIjsKKworR3N0UGFkKiB3ZWJraXRH
c3RHaG9zdFBhZEZyb21TdGF0aWNUZW1wbGF0ZShHc3RTdGF0aWNQYWRUZW1wbGF0ZSogc3RhdGlj
UGFkVGVtcGxhdGUsIGNvbnN0IGdjaGFyKiBuYW1lLCBHc3RQYWQqIHRhcmdldCkKK3sKKyAgICBH
c3RQYWQqIHBhZDsKKyAgICBHc3RQYWRUZW1wbGF0ZSogcGFkVGVtcGxhdGUgPSBnc3Rfc3RhdGlj
X3BhZF90ZW1wbGF0ZV9nZXQoc3RhdGljUGFkVGVtcGxhdGUpOworCisgICAgaWYgKHRhcmdldCkK
KyAgICAgICAgcGFkID0gZ3N0X2dob3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZShuYW1lLCB0YXJn
ZXQsIHBhZFRlbXBsYXRlKTsKKyAgICBlbHNlCisgICAgICAgIHBhZCA9IGdzdF9naG9zdF9wYWRf
bmV3X25vX3RhcmdldF9mcm9tX3RlbXBsYXRlKG5hbWUsIHBhZFRlbXBsYXRlKTsKKworICAgIGdz
dF9vYmplY3RfdW5yZWYocGFkVGVtcGxhdGUpOworCisgICAgcmV0dXJuIHBhZDsKK30KKworI2lm
IEVOQUJMRShWSURFTykKK2Jvb2wgZ2V0VmlkZW9TaXplQW5kRm9ybWF0RnJvbUNhcHMoR3N0Q2Fw
cyogY2FwcywgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgR3N0VmlkZW9Gb3JtYXQmIGZvcm1hdCwg
aW50JiBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9EZW5v
bWluYXRvciwgaW50JiBzdHJpZGUpCit7CisgICAgR3N0VmlkZW9JbmZvIGluZm87CisKKyAgICBp
ZiAoIWdzdF9jYXBzX2lzX2ZpeGVkKGNhcHMpIHx8ICFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMo
JmluZm8sIGNhcHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3JtYXQgPSBHU1Rf
VklERU9fSU5GT19GT1JNQVQoJmluZm8pOworICAgIHNpemUuc2V0V2lkdGgoR1NUX1ZJREVPX0lO
Rk9fV0lEVEgoJmluZm8pKTsKKyAgICBzaXplLnNldEhlaWdodChHU1RfVklERU9fSU5GT19IRUlH
SFQoJmluZm8pKTsKKyAgICBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yID0gR1NUX1ZJREVPX0lO
Rk9fUEFSX04oJmluZm8pOworICAgIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciA9IEdTVF9W
SURFT19JTkZPX1BBUl9EKCZpbmZvKTsKKyAgICBzdHJpZGUgPSBHU1RfVklERU9fSU5GT19QTEFO
RV9TVFJJREUoJmluZm8sIDApOworCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKworR3N0
QnVmZmVyKiBjcmVhdGVHc3RCdWZmZXIoR3N0QnVmZmVyKiBidWZmZXIpCit7CisgICAgZ3NpemUg
YnVmZmVyU2l6ZSA9IGdzdF9idWZmZXJfZ2V0X3NpemUoYnVmZmVyKTsKKyAgICBHc3RCdWZmZXIq
IG5ld0J1ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyhidWZmZXJTaXplKTsKKworICAg
IGlmICghbmV3QnVmZmVyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGdzdF9idWZmZXJfY29w
eV9pbnRvKG5ld0J1ZmZlciwgYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RCdWZmZXJDb3B5RmxhZ3M+
KEdTVF9CVUZGRVJfQ09QWV9NRVRBREFUQSksIDAsIGJ1ZmZlclNpemUpOworICAgIHJldHVybiBu
ZXdCdWZmZXI7Cit9CisKK0dzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVyRm9yRGF0YShjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X2J1
ZmZlcl9uZXdfYW5kX2FsbG9jKGxlbmd0aCk7CisKKyAgICBnc3RfYnVmZmVyX2ZpbGwoYnVmZmVy
LCAwLCBkYXRhLCBsZW5ndGgpOworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworY2hhciogZ2V0
R3N0QnVmZmVyRGF0YVBvaW50ZXIoR3N0QnVmZmVyKiBidWZmZXIpCit7CisgICAgR3N0TWluaU9i
amVjdCogbWluaU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+KGJ1ZmZl
cik7CisgICAgR3N0TWFwSW5mbyogbWFwSW5mbyA9IHN0YXRpY19jYXN0PEdzdE1hcEluZm8qPihn
c3RfbWluaV9vYmplY3RfZ2V0X3FkYXRhKG1pbmlPYmplY3QsIGdfcXVhcmtfZnJvbV9zdGF0aWNf
c3RyaW5nKHdlYmtpdEdzdE1hcEluZm9RdWFya1N0cmluZykpKTsKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4obWFwSW5mby0+ZGF0YSk7Cit9CisKK3ZvaWQgbWFwR3N0QnVmZmVy
KEdzdEJ1ZmZlciogYnVmZmVyKQoreworICAgIEdzdE1hcEluZm8qIG1hcEluZm8gPSBnX3NsaWNl
X25ldyhHc3RNYXBJbmZvKTsKKyAgICBpZiAoIWdzdF9idWZmZXJfbWFwKGJ1ZmZlciwgbWFwSW5m
bywgR1NUX01BUF9XUklURSkpIHsKKyAgICAgICAgZ19zbGljZV9mcmVlKEdzdE1hcEluZm8sIG1h
cEluZm8pOworICAgICAgICBnc3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBHc3RNaW5pT2JqZWN0KiBtaW5pT2JqZWN0ID0gcmVpbnRlcnByZXRf
Y2FzdDxHc3RNaW5pT2JqZWN0Kj4oYnVmZmVyKTsKKyAgICBnc3RfbWluaV9vYmplY3Rfc2V0X3Fk
YXRhKG1pbmlPYmplY3QsIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKHdlYmtpdEdzdE1hcElu
Zm9RdWFya1N0cmluZyksIG1hcEluZm8sIDApOworfQorCit2b2lkIHVubWFwR3N0QnVmZmVyKEdz
dEJ1ZmZlciogYnVmZmVyKQoreworICAgIEdzdE1pbmlPYmplY3QqIG1pbmlPYmplY3QgPSByZWlu
dGVycHJldF9jYXN0PEdzdE1pbmlPYmplY3QqPihidWZmZXIpOworICAgIEdzdE1hcEluZm8qIG1h
cEluZm8gPSBzdGF0aWNfY2FzdDxHc3RNYXBJbmZvKj4oZ3N0X21pbmlfb2JqZWN0X3N0ZWFsX3Fk
YXRhKG1pbmlPYmplY3QsIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKHdlYmtpdEdzdE1hcElu
Zm9RdWFya1N0cmluZykpKTsKKworICAgIGlmICghbWFwSW5mbykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZ3N0X2J1ZmZlcl91bm1hcChidWZmZXIsIG1hcEluZm8pOworICAgIGdfc2xpY2VfZnJl
ZShHc3RNYXBJbmZvLCBtYXBJbmZvKTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29s
IGluaXRpYWxpemVHU3RyZWFtZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oCmluZGV4
IDNlZGRjYjcxNTkxM2M4OGY4OGM0NWI1ZmZhMWE1M2NiZjY1ZDE1OTcuLmEwYmZlMzQ3YzU2ZDY4
N2ZjMWZhMGNlYzhkNGJkYmFjNTk3YTc0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVz
LmgKQEAgLTE4LDYgKzE4LDkgQEAKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAorI2luY2x1ZGUg
PGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KKwogI2RlZmluZSBMT0df
TUVESUFfTUVTU0FHRSguLi4pIGRvIHsgXAogICAgIEdTVF9ERUJVRyhfX1ZBX0FSR1NfXyk7IFwK
ICAgICBMT0dfVkVSQk9TRShNZWRpYSwgX19WQV9BUkdTX18pOyB9IHdoaWxlICgwKQpAQCAtMzUs
NSArMzgsNDAgQEAKICAgICBMT0dfVkVSQk9TRShNZWRpYSwgX19WQV9BUkdTX18pOyB9IHdoaWxl
ICgwKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbnRTaXplOworfTsKKworaW5saW5l
IGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3Vp
bnQgbWljcm8pCit7CisgICAgZ3VpbnQgY3VycmVudE1ham9yLCBjdXJyZW50TWlub3IsIGN1cnJl
bnRNaWNybywgY3VycmVudE5hbm87CisgICAgZ3N0X3ZlcnNpb24oJmN1cnJlbnRNYWpvciwgJmN1
cnJlbnRNaW5vciwgJmN1cnJlbnRNaWNybywgJmN1cnJlbnROYW5vKTsKKworICAgIGlmIChjdXJy
ZW50TWFqb3IgPCBtYWpvcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjdXJyZW50
TWFqb3IgPiBtYWpvcikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoY3VycmVudE1p
bm9yIDwgbWlub3IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY3VycmVudE1pbm9y
ID4gbWlub3IpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGN1cnJlbnRNaWNybyA8
IG1pY3JvKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
R3N0UGFkKiB3ZWJraXRHc3RHaG9zdFBhZEZyb21TdGF0aWNUZW1wbGF0ZShHc3RTdGF0aWNQYWRU
ZW1wbGF0ZSosIGNvbnN0IGdjaGFyKiBuYW1lLCBHc3RQYWQqIHRhcmdldCk7CisjaWYgRU5BQkxF
KFZJREVPKQorYm9vbCBnZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9tQ2FwcyhHc3RDYXBzKiwgV2Vi
Q29yZTo6SW50U2l6ZSYsIEdzdFZpZGVvRm9ybWF0JiwgaW50JiBwaXhlbEFzcGVjdFJhdGlvTnVt
ZXJhdG9yLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciwgaW50JiBzdHJpZGUpOwor
I2VuZGlmCitHc3RCdWZmZXIqIGNyZWF0ZUdzdEJ1ZmZlcihHc3RCdWZmZXIqKTsKK0dzdEJ1ZmZl
ciogY3JlYXRlR3N0QnVmZmVyRm9yRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsK
K2NoYXIqIGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKEdzdEJ1ZmZlciopOwordm9pZCBtYXBHc3RC
dWZmZXIoR3N0QnVmZmVyKik7Cit2b2lkIHVubWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciopOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CiBib29sIGluaXRpYWxpemVHU3RyZWFtZXIoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJWZXJzaW9uaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMzVlOTZiMzQyYmJkN2JkNzI0MGRhYzJmMzE0MTU5ODUzYWFhOTM0NS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwyNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEsIFMu
TC4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBDb2xsYWJvcmEgTHRkLgotICoKLSAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCi0KLSNp
ZiBVU0UoR1NUUkVBTUVSKQotI2luY2x1ZGUgIkludFNpemUuaCIKLQotI2lmZGVmIEdTVF9BUElf
VkVSU0lPTl8xCi0jaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+Ci0jZWxzZQotI2luY2x1ZGUg
PGdzdC9hdWRpby9tdWx0aWNoYW5uZWwuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNlbmRpZgot
Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLWNvbnN0IGNoYXIqIHdlYmtpdEdzdE1hcEluZm9R
dWFya1N0cmluZyA9ICJ3ZWJraXQtZ3N0LW1hcC1pbmZvIjsKLSNlbmRpZgotCi12b2lkIHdlYmtp
dEdzdE9iamVjdFJlZlNpbmsoR3N0T2JqZWN0KiBnc3RPYmplY3QpCi17Ci0jaWZkZWYgR1NUX0FQ
SV9WRVJTSU9OXzEKLSAgICBnc3Rfb2JqZWN0X3JlZl9zaW5rKGdzdE9iamVjdCk7Ci0jZWxzZQot
ICAgIGdzdF9vYmplY3RfcmVmKGdzdE9iamVjdCk7Ci0gICAgZ3N0X29iamVjdF9zaW5rKGdzdE9i
amVjdCk7Ci0jZW5kaWYKLX0KLQotR3N0UGFkKiB3ZWJraXRHc3RHaG9zdFBhZEZyb21TdGF0aWNU
ZW1wbGF0ZShHc3RTdGF0aWNQYWRUZW1wbGF0ZSogc3RhdGljUGFkVGVtcGxhdGUsIGNvbnN0IGdj
aGFyKiBuYW1lLCBHc3RQYWQqIHRhcmdldCkKLXsKLSAgICBHc3RQYWQqIHBhZDsKLSAgICBHc3RQ
YWRUZW1wbGF0ZSogcGFkVGVtcGxhdGUgPSBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQoc3Rh
dGljUGFkVGVtcGxhdGUpOwotCi0gICAgaWYgKHRhcmdldCkKLSAgICAgICAgcGFkID0gZ3N0X2do
b3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZShuYW1lLCB0YXJnZXQsIHBhZFRlbXBsYXRlKTsKLSAg
ICBlbHNlCi0gICAgICAgIHBhZCA9IGdzdF9naG9zdF9wYWRfbmV3X25vX3RhcmdldF9mcm9tX3Rl
bXBsYXRlKG5hbWUsIHBhZFRlbXBsYXRlKTsKLQotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0g
ICAgZ3N0X29iamVjdF91bnJlZihwYWRUZW1wbGF0ZSk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBw
YWQ7Ci19Ci0KLUdSZWZQdHI8R3N0Q2Fwcz4gd2Via2l0R3N0R2V0UGFkQ2FwcyhHc3RQYWQqIHBh
ZCkKLXsKLSAgICBpZiAoIXBhZCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSNpZmRlZiBHU1RfQVBJ
X1ZFUlNJT05fMQotICAgIHJldHVybiBhZG9wdEdSZWYoZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBz
KHBhZCkpOyAvLyBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgcmV0dXJuIGEgbmV3IHJlZmVyZW5j
ZS4KLSNlbHNlCi0gICAgcmV0dXJuIEdTVF9QQURfQ0FQUyhwYWQpOwotI2VuZGlmCi19Ci0KLUdS
ZWZQdHI8R3N0QnVzPiB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHc3RQaXBlbGluZSogcGlwZWxp
bmUpCi17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICByZXR1cm4gYWRvcHRHUmVmKGdz
dF9waXBlbGluZV9nZXRfYnVzKHBpcGVsaW5lKSk7Ci0jZWxzZQotICAgIC8vIGdzdF9waXBlbGlu
ZV9nZXRfYnVzIHJldHVybnMgYSBmbG9hdGluZyByZWZlcmVuY2UgaW4KLSAgICAvLyBnc3RyZWFt
ZXIgMC4xMCBzbyB3ZSBzaG91bGQgbm90IGFkb3B0LgotICAgIHJldHVybiBnc3RfcGlwZWxpbmVf
Z2V0X2J1cyhwaXBlbGluZSk7Ci0jZW5kaWYKLX0KLQotI2lmIEVOQUJMRShWSURFTykKLWJvb2wg
Z2V0VmlkZW9TaXplQW5kRm9ybWF0RnJvbUNhcHMoR3N0Q2FwcyogY2FwcywgV2ViQ29yZTo6SW50
U2l6ZSYgc2l6ZSwgR3N0VmlkZW9Gb3JtYXQmIGZvcm1hdCwgaW50JiBwaXhlbEFzcGVjdFJhdGlv
TnVtZXJhdG9yLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciwgaW50JiBzdHJpZGUp
Ci17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBHc3RWaWRlb0luZm8gaW5mbzsKLQot
ICAgIGlmICghZ3N0X2NhcHNfaXNfZml4ZWQoY2FwcykgfHwgIWdzdF92aWRlb19pbmZvX2Zyb21f
Y2FwcygmaW5mbywgY2FwcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvcm1hdCA9
IEdTVF9WSURFT19JTkZPX0ZPUk1BVCgmaW5mbyk7Ci0gICAgc2l6ZS5zZXRXaWR0aChHU1RfVklE
RU9fSU5GT19XSURUSCgmaW5mbykpOwotICAgIHNpemUuc2V0SGVpZ2h0KEdTVF9WSURFT19JTkZP
X0hFSUdIVCgmaW5mbykpOwotICAgIHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IgPSBHU1RfVklE
RU9fSU5GT19QQVJfTigmaW5mbyk7Ci0gICAgcGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yID0g
R1NUX1ZJREVPX0lORk9fUEFSX0QoJmluZm8pOwotICAgIHN0cmlkZSA9IEdTVF9WSURFT19JTkZP
X1BMQU5FX1NUUklERSgmaW5mbywgMCk7Ci0jZWxzZQotICAgIGdpbnQgd2lkdGgsIGhlaWdodDsK
LSAgICBpZiAoIUdTVF9JU19DQVBTKGNhcHMpIHx8ICFnc3RfY2Fwc19pc19maXhlZChjYXBzKQot
ICAgICAgICB8fCAhZ3N0X3ZpZGVvX2Zvcm1hdF9wYXJzZV9jYXBzKGNhcHMsICZmb3JtYXQsICZ3
aWR0aCwgJmhlaWdodCkKLSAgICAgICAgfHwgIWdzdF92aWRlb19wYXJzZV9jYXBzX3BpeGVsX2Fz
cGVjdF9yYXRpbyhjYXBzLCAmcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGl4ZWxBc3BlY3RSYXRp
b0Rlbm9taW5hdG9yKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHNpemUuc2V0V2lkdGgo
d2lkdGgpOwotICAgIHNpemUuc2V0SGVpZ2h0KGhlaWdodCk7Ci0gICAgc3RyaWRlID0gc2l6ZS53
aWR0aCgpICogNDsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYKLQotR3N0
QnVmZmVyKiBjcmVhdGVHc3RCdWZmZXIoR3N0QnVmZmVyKiBidWZmZXIpCi17Ci0jaWZuZGVmIEdT
VF9BUElfVkVSU0lPTl8xCi0gICAgR3N0QnVmZmVyKiBuZXdCdWZmZXIgPSBnc3RfYnVmZmVyX3Ry
eV9uZXdfYW5kX2FsbG9jKEdTVF9CVUZGRVJfU0laRShidWZmZXIpKTsKLSNlbHNlCi0gICAgZ3Np
emUgYnVmZmVyU2l6ZSA9IGdzdF9idWZmZXJfZ2V0X3NpemUoYnVmZmVyKTsKLSAgICBHc3RCdWZm
ZXIqIG5ld0J1ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyhidWZmZXJTaXplKTsKLSNl
bmRpZgotCi0gICAgaWYgKCFuZXdCdWZmZXIpCi0gICAgICAgIHJldHVybiAwOwotCi0jaWZuZGVm
IEdTVF9BUElfVkVSU0lPTl8xCi0gICAgZ3N0X2J1ZmZlcl9jb3B5X21ldGFkYXRhKG5ld0J1ZmZl
ciwgYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RCdWZmZXJDb3B5RmxhZ3M+KEdTVF9CVUZGRVJfQ09Q
WV9BTEwpKTsKLSNlbHNlCi0gICAgZ3N0X2J1ZmZlcl9jb3B5X2ludG8obmV3QnVmZmVyLCBidWZm
ZXIsIHN0YXRpY19jYXN0PEdzdEJ1ZmZlckNvcHlGbGFncz4oR1NUX0JVRkZFUl9DT1BZX01FVEFE
QVRBKSwgMCwgYnVmZmVyU2l6ZSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gbmV3QnVmZmVyOwotfQot
Ci1Hc3RCdWZmZXIqIGNyZWF0ZUdzdEJ1ZmZlckZvckRhdGEoY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKLXsKLSAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FuZF9h
bGxvYyhsZW5ndGgpOwotCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBnc3RfYnVmZmVy
X2ZpbGwoYnVmZmVyLCAwLCBkYXRhLCBsZW5ndGgpOwotI2Vsc2UKLSAgICBtZW1jcHkoR1NUX0JV
RkZFUl9EQVRBKGJ1ZmZlciksIGRhdGEsIGxlbmd0aCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBi
dWZmZXI7Ci19Ci0KLWludCBnZXRHc3RCdWZmZXJTaXplKEdzdEJ1ZmZlciogYnVmZmVyKQotewot
I2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgcmV0dXJuIGdzdF9idWZmZXJfZ2V0X3NpemUo
YnVmZmVyKTsKLSNlbHNlCi0gICAgcmV0dXJuIEdTVF9CVUZGRVJfU0laRShidWZmZXIpOwotI2Vu
ZGlmCi19Ci0KLXZvaWQgc2V0R3N0QnVmZmVyU2l6ZShHc3RCdWZmZXIqIGJ1ZmZlciwgaW50IG5l
d1NpemUpCi17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBnc3RfYnVmZmVyX3NldF9z
aXplKGJ1ZmZlciwgc3RhdGljX2Nhc3Q8Z3NzaXplPihuZXdTaXplKSk7Ci0jZWxzZQotICAgIEdT
VF9CVUZGRVJfU0laRShidWZmZXIpID0gc3RhdGljX2Nhc3Q8Z3NpemU+KG5ld1NpemUpOwotI2Vu
ZGlmCi19Ci0KLWNoYXIqIGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKEdzdEJ1ZmZlciogYnVmZmVy
KQotewotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgR3N0TWluaU9iamVjdCogbWluaU9i
amVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+KGJ1ZmZlcik7Ci0gICAgR3N0
TWFwSW5mbyogbWFwSW5mbyA9IHN0YXRpY19jYXN0PEdzdE1hcEluZm8qPihnc3RfbWluaV9vYmpl
Y3RfZ2V0X3FkYXRhKG1pbmlPYmplY3QsIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKHdlYmtp
dEdzdE1hcEluZm9RdWFya1N0cmluZykpKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4obWFwSW5mby0+ZGF0YSk7Ci0jZWxzZQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNoYXIqPihHU1RfQlVGRkVSX0RBVEEoYnVmZmVyKSk7Ci0jZW5kaWYKLX0KLQotI2lmZGVmIEdT
VF9BUElfVkVSU0lPTl8xCi12b2lkIG1hcEdzdEJ1ZmZlcihHc3RCdWZmZXIqIGJ1ZmZlcikKLXsK
LSAgICBHc3RNYXBJbmZvKiBtYXBJbmZvID0gZ19zbGljZV9uZXcoR3N0TWFwSW5mbyk7Ci0gICAg
aWYgKCFnc3RfYnVmZmVyX21hcChidWZmZXIsIG1hcEluZm8sIEdTVF9NQVBfV1JJVEUpKSB7Ci0g
ICAgICAgIGdfc2xpY2VfZnJlZShHc3RNYXBJbmZvLCBtYXBJbmZvKTsKLSAgICAgICAgZ3N0X2J1
ZmZlcl91bnJlZihidWZmZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR3N0TWlu
aU9iamVjdCogbWluaU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+KGJ1
ZmZlcik7Ci0gICAgZ3N0X21pbmlfb2JqZWN0X3NldF9xZGF0YShtaW5pT2JqZWN0LCBnX3F1YXJr
X2Zyb21fc3RhdGljX3N0cmluZyh3ZWJraXRHc3RNYXBJbmZvUXVhcmtTdHJpbmcpLCBtYXBJbmZv
LCAwKTsKLX0KLQotdm9pZCB1bm1hcEdzdEJ1ZmZlcihHc3RCdWZmZXIqIGJ1ZmZlcikKLXsKLSAg
ICBHc3RNaW5pT2JqZWN0KiBtaW5pT2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RNaW5pT2Jq
ZWN0Kj4oYnVmZmVyKTsKLSAgICBHc3RNYXBJbmZvKiBtYXBJbmZvID0gc3RhdGljX2Nhc3Q8R3N0
TWFwSW5mbyo+KGdzdF9taW5pX29iamVjdF9zdGVhbF9xZGF0YShtaW5pT2JqZWN0LCBnX3F1YXJr
X2Zyb21fc3RhdGljX3N0cmluZyh3ZWJraXRHc3RNYXBJbmZvUXVhcmtTdHJpbmcpKSk7Ci0KLSAg
ICBpZiAoIW1hcEluZm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGdzdF9idWZmZXJfdW5tYXAo
YnVmZmVyLCBtYXBJbmZvKTsKLSAgICBnX3NsaWNlX2ZyZWUoR3N0TWFwSW5mbywgbWFwSW5mbyk7
Ci19Ci0jZW5kaWYKLQotdm9pZCBzZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YShHc3RFbGVtZW50
Q2xhc3MqIGVsZW1lbnRDbGFzcywgY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogbG9uZ05h
bWUsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiBhdXRob3IpCi17Ci0jaWZk
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBnc3RfZWxlbWVudF9jbGFzc19zZXRfbWV0YWRhdGEo
ZWxlbWVudENsYXNzLCBuYW1lLCBsb25nTmFtZSwgZGVzY3JpcHRpb24sIGF1dGhvcik7Ci0jZWxz
ZQotICAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9kZXRhaWxzX3NpbXBsZShlbGVtZW50Q2xhc3Ms
IG5hbWUsIGxvbmdOYW1lLCBkZXNjcmlwdGlvbiwgYXV0aG9yKTsKLSNlbmRpZgotfQotCi1ib29s
IGdzdE9iamVjdElzRmxvYXRpbmcoR3N0T2JqZWN0KiBnc3RPYmplY3QpCi17Ci0jaWZkZWYgR1NU
X0FQSV9WRVJTSU9OXzEKLSAgICByZXR1cm4gZ19vYmplY3RfaXNfZmxvYXRpbmcoR19PQkpFQ1Qo
Z3N0T2JqZWN0KSk7Ci0jZWxzZQotICAgIHJldHVybiBHU1RfT0JKRUNUX0lTX0ZMT0FUSU5HKGdz
dE9iamVjdCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBub3RpZnlHc3RUYWdzT25QYWQoR3N0RWxlbWVu
dCogZWxlbWVudCwgR3N0UGFkKiBwYWQsIEdzdFRhZ0xpc3QqIHRhZ3MpCi17Ci0jaWZkZWYgR1NU
X0FQSV9WRVJTSU9OXzEKLSAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7Ci0gICAgZ3N0X3BhZF9w
dXNoX2V2ZW50KEdTVF9QQURfQ0FTVChwYWQpLCBnc3RfZXZlbnRfbmV3X3RhZyh0YWdzKSk7Ci0j
ZWxzZQotICAgIGdzdF9lbGVtZW50X2ZvdW5kX3RhZ3NfZm9yX3BhZChlbGVtZW50LCBwYWQsIHRh
Z3MpOwotI2VuZGlmCi19Ci0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotR3N0Q2FwcyogZ2V0R3N0
QXVkaW9DYXBzKGludCBjaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKLXsKLSNpZmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQotICAgIHJldHVybiBnc3RfY2Fwc19uZXdfc2ltcGxlKCJhdWRpby94LXJh
dyIsICJyYXRlIiwgR19UWVBFX0lOVCwgc3RhdGljX2Nhc3Q8aW50PihzYW1wbGVSYXRlKSwKLSAg
ICAgICAgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgY2hhbm5lbHMsCi0gICAgICAgICJmb3JtYXQi
LCBHX1RZUEVfU1RSSU5HLCBnc3RfYXVkaW9fZm9ybWF0X3RvX3N0cmluZyhHU1RfQVVESU9fRk9S
TUFUX0YzMiksCi0gICAgICAgICJsYXlvdXQiLCBHX1RZUEVfU1RSSU5HLCAiaW50ZXJsZWF2ZWQi
LCBOVUxMKTsKLSNlbHNlCi0gICAgcmV0dXJuIGdzdF9jYXBzX25ld19zaW1wbGUoImF1ZGlvL3gt
cmF3LWZsb2F0IiwgInJhdGUiLCBHX1RZUEVfSU5ULCBzdGF0aWNfY2FzdDxpbnQ+KHNhbXBsZVJh
dGUpLAotICAgICAgICAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCBjaGFubmVscywKLSAgICAgICAg
ImVuZGlhbm5lc3MiLCBHX1RZUEVfSU5ULCBHX0JZVEVfT1JERVIsCi0gICAgICAgICJ3aWR0aCIs
IEdfVFlQRV9JTlQsIDMyLCBOVUxMKTsKLSNlbmRpZgotfQotI2VuZGlmCi0KLSNlbmRpZiAvLyBV
U0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDI0MDU1YmI3NDFmZDkwN2FkYzI1OWM1YTc4NDMxMzRkNmM1N2Vl
ZmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcu
aAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSWdhbGlhLCBTLkwuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgR1N0cmVhbWVyVmVyc2lvbmluZ19o
Ci0jZGVmaW5lIEdTdHJlYW1lclZlcnNpb25pbmdfaAotI2lmIFVTRShHU1RSRUFNRVIpCi0KLSNp
bmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1
ZGUgPGdzdC92aWRlby92aWRlby5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBJbnRT
aXplOwotfTsKLQotaW5saW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9y
LCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8pCi17Ci0gICAgZ3VpbnQgY3VycmVudE1ham9yLCBj
dXJyZW50TWlub3IsIGN1cnJlbnRNaWNybywgY3VycmVudE5hbm87Ci0gICAgZ3N0X3ZlcnNpb24o
JmN1cnJlbnRNYWpvciwgJmN1cnJlbnRNaW5vciwgJmN1cnJlbnRNaWNybywgJmN1cnJlbnROYW5v
KTsKLQotICAgIGlmIChjdXJyZW50TWFqb3IgPCBtYWpvcikKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmIChjdXJyZW50TWFqb3IgPiBtYWpvcikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICBpZiAoY3VycmVudE1pbm9yIDwgbWlub3IpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoY3VycmVudE1pbm9yID4gbWlub3IpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
aWYgKGN1cnJlbnRNaWNybyA8IG1pY3JvKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCB3ZWJraXRHc3RPYmplY3RSZWZTaW5rKEdzdE9iamVjdCop
OwotR3N0UGFkKiB3ZWJraXRHc3RHaG9zdFBhZEZyb21TdGF0aWNUZW1wbGF0ZShHc3RTdGF0aWNQ
YWRUZW1wbGF0ZSosIGNvbnN0IGdjaGFyKiBuYW1lLCBHc3RQYWQqIHRhcmdldCk7Ci1HUmVmUHRy
PEdzdENhcHM+IHdlYmtpdEdzdEdldFBhZENhcHMoR3N0UGFkKik7Ci1HUmVmUHRyPEdzdEJ1cz4g
d2Via2l0R3N0UGlwZWxpbmVHZXRCdXMoR3N0UGlwZWxpbmUqKTsKLSNpZiBFTkFCTEUoVklERU8p
Ci1ib29sIGdldFZpZGVvU2l6ZUFuZEZvcm1hdEZyb21DYXBzKEdzdENhcHMqLCBXZWJDb3JlOjpJ
bnRTaXplJiwgR3N0VmlkZW9Gb3JtYXQmLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3Is
IGludCYgcGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yLCBpbnQmIHN0cmlkZSk7Ci0jZW5kaWYK
LUdzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVyKEdzdEJ1ZmZlciopOwotR3N0QnVmZmVyKiBjcmVh
dGVHc3RCdWZmZXJGb3JEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwotaW50IGdl
dEdzdEJ1ZmZlclNpemUoR3N0QnVmZmVyKik7Ci12b2lkIHNldEdzdEJ1ZmZlclNpemUoR3N0QnVm
ZmVyKiwgaW50IG5ld1NpemUpOwotY2hhciogZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIoR3N0QnVm
ZmVyKik7Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLXZvaWQgbWFwR3N0QnVmZmVyKEdzdEJ1
ZmZlciopOwotdm9pZCB1bm1hcEdzdEJ1ZmZlcihHc3RCdWZmZXIqKTsKLSNlbmRpZgotdm9pZCBz
ZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YShHc3RFbGVtZW50Q2xhc3MqLCBjb25zdCBjaGFyKiBu
YW1lLCBjb25zdCBjaGFyKiBsb25nTmFtZSwgY29uc3QgY2hhciogZGVzY3JpcHRpb24sIGNvbnN0
IGNoYXIqIGF1dGhvcik7Ci1ib29sIGdzdE9iamVjdElzRmxvYXRpbmcoR3N0T2JqZWN0Kik7Ci12
b2lkIG5vdGlmeUdzdFRhZ3NPblBhZChHc3RFbGVtZW50KiwgR3N0UGFkKiwgR3N0VGFnTGlzdCop
OwotI2lmIEVOQUJMRShXRUJfQVVESU8pCi1Hc3RDYXBzKiBnZXRHc3RBdWRpb0NhcHMoaW50IGNo
YW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsKLSNlbmRpZgotI2VuZGlmIC8vIFVTRShHU1RSRUFN
RVIpCi0jZW5kaWYgLy8gR1N0cmVhbWVyVmVyc2lvbmluZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5o
CmluZGV4IDhiNDZjZDY4OGQyZDQzZDBmNmE2Y2RlMGMwNDhmYWU2YjMxYzRmZWIuLjM4YmYzYjRk
MWFkMTNiNjI3NjQxMTc2NmFhZDJiYTE0MGM5NmFiMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5o
CkBAIC0yNCw3ICsyNCwxMCBAQAogCiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCisjaW5jbHVk
ZSAiR1JlZlB0ckdTdHJlYW1lci5oIgorCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTYwLDcgKzYzLDcgQEAgY2xhc3MgSW1hZ2VHU3RyZWFtZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUdTdHJlYW1lcj4gewogICAgICAgICBSZWZQdHI8Qml0
bWFwSW1hZ2U+IG1faW1hZ2U7CiAgICAgICAgIEZsb2F0UmVjdCBtX2Nyb3BSZWN0OwogCi0jaWYg
VVNFKENBSVJPKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIFVTRShDQUlSTykK
ICAgICAgICAgR1JlZlB0cjxHc3RCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBHc3RNYXBJbmZv
IG1fbWFwSW5mbzsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwCmlu
ZGV4IDc1ZTEyNmYxYjQ4OTZmNTI1YTY5ZDVjYzk3NDIzZTM0NjJjNjAxMzIuLjA5MDkyMDdkNzVj
ZjViNmMyMzAwM2RmYzBhMTQzMjE4ZDExMWYyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFt
ZXJDYWlyby5jcHAKQEAgLTIyLDM0ICsyMiwyOCBAQAogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBV
U0UoR1NUUkVBTUVSKQogCisjaW5jbHVkZSAiR1N0cmVhbWVyVXRpbGl0aWVzLmgiCisKICNpbmNs
dWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HT3duUHRyLmg+CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogI2luY2x1ZGUgPGdzdC92
aWRlby9nc3R2aWRlb21ldGEuaD4KLSNlbmRpZgogCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogSW1hZ2VHU3RyZWFtZXI6OkltYWdlR1N0cmVhbWVy
KEdzdEJ1ZmZlciogYnVmZmVyLCBHc3RDYXBzKiBjYXBzKQotI2lmZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCiAgICAgOiBtX2J1ZmZlcihidWZmZXIpCi0jZW5kaWYKIHsKICAgICBHc3RWaWRlb0Zvcm1h
dCBmb3JtYXQ7CiAgICAgSW50U2l6ZSBzaXplOwogICAgIGludCBwaXhlbEFzcGVjdFJhdGlvTnVt
ZXJhdG9yLCBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IsIHN0cmlkZTsKICAgICBnZXRWaWRl
b1NpemVBbmRGb3JtYXRGcm9tQ2FwcyhjYXBzLCBzaXplLCBmb3JtYXQsIHBpeGVsQXNwZWN0UmF0
aW9OdW1lcmF0b3IsIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciwgc3RyaWRlKTsKIAotI2lm
ZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgZ3N0X2J1ZmZlcl9tYXAoYnVmZmVyLCAmbV9tYXBJ
bmZvLCBHU1RfTUFQX1JFQUQpOwogICAgIHVuc2lnbmVkIGNoYXIqIGJ1ZmZlckRhdGEgPSByZWlu
dGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihtX21hcEluZm8uZGF0YSk7Ci0jZWxzZQotICAg
IHVuc2lnbmVkIGNoYXIqIGJ1ZmZlckRhdGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNo
YXIqPihHU1RfQlVGRkVSX0RBVEEoYnVmZmVyKSk7Ci0jZW5kaWYKIAogICAgIGNhaXJvX2Zvcm1h
dF90IGNhaXJvRm9ybWF0OwogI2lmIEdfQllURV9PUkRFUiA9PSBHX0xJVFRMRV9FTkRJQU4KQEAg
LTYyLDEwICs1Niw4IEBAIEltYWdlR1N0cmVhbWVyOjpJbWFnZUdTdHJlYW1lcihHc3RCdWZmZXIq
IGJ1ZmZlciwgR3N0Q2FwcyogY2FwcykKICAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9zdGF0dXMo
c3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpOwogICAgIG1faW1hZ2UgPSBC
aXRtYXBJbWFnZTo6Y3JlYXRlKHN1cmZhY2UucmVsZWFzZSgpKTsKIAotI2lmZGVmIEdTVF9BUElf
VkVSU0lPTl8xCiAgICAgaWYgKEdzdFZpZGVvQ3JvcE1ldGEqIGNyb3BNZXRhID0gZ3N0X2J1ZmZl
cl9nZXRfdmlkZW9fY3JvcF9tZXRhKGJ1ZmZlcikpCiAgICAgICAgIHNldENyb3BSZWN0KEZsb2F0
UmVjdChjcm9wTWV0YS0+eCwgY3JvcE1ldGEtPnksIGNyb3BNZXRhLT53aWR0aCwgY3JvcE1ldGEt
PmhlaWdodCkpOwotI2VuZGlmCiB9CiAKIEltYWdlR1N0cmVhbWVyOjp+SW1hZ2VHU3RyZWFtZXIo
KQpAQCAtNzUsMTAgKzY3LDggQEAgSW1hZ2VHU3RyZWFtZXI6On5JbWFnZUdTdHJlYW1lcigpCiAK
ICAgICBtX2ltYWdlID0gMDsKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgLy8gV2Ug
a2VlcCB0aGUgYnVmZmVyIG1lbW9yeSBtYXBwZWQgdW50aWwgdGhlIGltYWdlIGlzIGRlc3Ryb3ll
ZCBiZWNhdXNlIHRoZSBpbnRlcm5hbAogICAgIC8vIGNhaXJvX3N1cmZhY2VfdCB3YXMgY3JlYXRl
ZCB1c2luZyBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgpLgogICAgIGdzdF9i
dWZmZXJfdW5tYXAobV9idWZmZXIuZ2V0KCksICZtX21hcEluZm8pOwotI2VuZGlmCiB9CiAjZW5k
aWYgLy8gVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRN
ZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCAyZGI2NWU0ZjVjNmEyYWIx
YzFlZTVmNTFlNDhmMzczYzg2YTZlMDQxLi4wM2U0MDFkYTZkYTNkNDY0ZGIzMTY1ODQ1OTgxYzUy
YTkyMjE1MmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZE1ldGFkYXRh
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIElu
YmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcl9oCiAjZGVmaW5lIEluYmFuZE1l
dGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcl9oCiAKLSNpZiBFTkFCTEUoVklERU8pICYm
IFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJ
X1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJM
RShWSURFT19UUkFDSykKIAogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRl
ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCkBAIC01Nyw2ICs1Nyw2IEBAIHByaXZhdGU6CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNF
KEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVS
U0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5B
QkxFKFZJREVPX1RSQUNLKQogCiAjZW5kaWYgLy8gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyLmNwcAppbmRleCBjODQ5YjhjZWIwN2Y3MmM2MzA0OGY4ODc0MTI1ZWZhOGZk
ZmZmZWRkLi5iZWQxMGZhYTdjMjU1YmY2ZjdmMGVhZTkxNTJmODg3MTNiZWI2ZGY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBA
IC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShWSURF
TykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdT
VF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYg
RU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oIgogCkBAIC0xNTcsNCArMTU3LDQgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mU3RyZWFtQ2hhbmdlZCgpCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikg
JiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2Vu
ZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RS
QUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
LmgKaW5kZXggNDM4OGY5ODBjMDY2YTM2MmUzZjcwNTU0ZmE2NjMwY2ViNjc3YWQyNi4uYWM1ZDIw
NmZiNTYzNGNlNmZiOGUwM2RkMDg3NmU3Y2VlMmIxOTU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0yNiw3ICsyNiw3IEBACiAj
aWZuZGVmIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXJfaAogI2RlZmluZSBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyX2gKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdT
VFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lP
Tl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVP
X1RSQUNLKQogCiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkluYmFu
ZFRleHRUcmFja1ByaXZhdGUuaCIKQEAgLTcxLDYgKzcxLDYgQEAgcHJpdmF0ZToKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVB
TUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEp
CisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAKICNlbmRpZiAvLyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDYwMjk3OTdmMWY2Nzk0MzdmMTY1N2UwMWVkZTExYTVkZDAzMjdmZS4uYmEzMWM2MzNmZWEyNGZi
ODNiMTYyOGNiZWQ3OTZhYWEyYzk2NDU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpZiBFTkFCTEUoVklE
RU8pICYmIFVTRShHU1RSRUFNRVIpCiAKICNpbmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIK
LSNpbmNsdWRlICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCkBAIC00
MSw3ICs0MCw3IEBACiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5l
ZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAjaW5jbHVkZSAi
QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJJbmJhbmRNZXRhZGF0YVRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyLmgiCkBAIC01MCwxMSArNDksNyBAQAogI2luY2x1ZGUgIlZpZGVvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmgiCiAjZW5kaWYKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAj
aW5jbHVkZSA8Z3N0L2F1ZGlvL3N0cmVhbXZvbHVtZS5oPgotI2Vsc2UKLSNpbmNsdWRlIDxnc3Qv
aW50ZXJmYWNlcy9zdHJlYW12b2x1bWUuaD4KLSNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKICNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgpAQCAtNzYsMTggKzcxLDYgQEAgdHlwZWRl
ZiBlbnVtIHsKICAgICBHU1RfUExBWV9GTEFHX0JVRkZFUklORyAgICAgPSAweDAwMDAwMDEwMAog
fSBHc3RQbGF5RmxhZ3M7CiAKLS8vIGdQZXJjZW50TWF4IGlzIHVzZWQgd2hlbiBwYXJzaW5nIGJ1
ZmZlcmluZyByYW5nZXMgd2l0aAotLy8gZ3N0X3F1ZXJ5X3BhcnNlX250aF9idWZmZXJpbmdfcmFu
Z2UgYXMgdGhlcmUgd2FzIGEgYnVnIGluIEdTdHJlYW1lcgotLy8gMC4xMCB0aGF0IHdhcyB1c2lu
ZyAxMDAgaW5zdGVhZCBvZiBHU1RfRk9STUFUX1BFUkNFTlRfTUFYLiBUaGlzIHdhcwotLy8gY29y
cmVjdGVkIGluIDEuMC4gZ3N0X3F1ZXJ5X3BhcnNlX2J1ZmZlcmluZ19yYW5nZSB3b3JrZWQgYXMK
LS8vIGV4cGVjdGVkIHdpdGggR1NUX0ZPUk1BVF9QRVJDRU5UX01BWCBpbiBib3RoIGNhc2VzLgot
I2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi1zdGF0aWMgY29uc3QgY2hhciogZ1BsYXliaW5OYW1l
ID0gInBsYXliaW4iOwotc3RhdGljIGNvbnN0IGdpbnQ2NCBnUGVyY2VudE1heCA9IEdTVF9GT1JN
QVRfUEVSQ0VOVF9NQVg7Ci0jZWxzZQotc3RhdGljIGNvbnN0IGNoYXIqIGdQbGF5YmluTmFtZSA9
ICJwbGF5YmluMiI7Ci1zdGF0aWMgY29uc3QgZ2ludDY0IGdQZXJjZW50TWF4ID0gMTAwOwotI2Vu
ZGlmCiAvLyBNYXggaW50ZXJ2YWwgaW4gc2Vjb25kcyB0byBzdGF5IGluIHRoZSBSRUFEWSBzdGF0
ZSBvbiBtYW51YWwKIC8vIHN0YXRlIGNoYW5nZSByZXF1ZXN0cy4KIHN0YXRpYyBjb25zdCBndWlu
dCBnUmVhZHlTdGF0ZVRpbWVySW50ZXJ2YWwgPSA2MDsKQEAgLTEzMSwxMiArMTE0LDggQEAgc3Rh
dGljIGdib29sZWFuIG1lZGlhUGxheWVyUHJpdmF0ZUF1ZGlvQ2hhbmdlVGltZW91dENhbGxiYWNr
KE1lZGlhUGxheWVyUHJpdmF0ZUcKICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLSNpZmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQogc3RhdGljIHZvaWQgc2V0QXVkaW9TdHJlYW1Qcm9wZXJ0aWVzQ2FsbGJh
Y2soR3N0Q2hpbGRQcm94eSosIEdPYmplY3QqIG9iamVjdCwgZ2NoYXIqLAogICAgIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQotI2Vsc2UKLXN0YXRpYyB2b2lkIHNldEF1ZGlv
U3RyZWFtUHJvcGVydGllc0NhbGxiYWNrKEdzdENoaWxkUHJveHkqLCBHT2JqZWN0KiBvYmplY3Qs
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQotI2VuZGlmCiB7CiAgICAgcGxh
eWVyLT5zZXRBdWRpb1N0cmVhbVByb3BlcnRpZXMob2JqZWN0KTsKIH0KQEAgLTE1NSw3ICsxMzQs
NyBAQCBzdGF0aWMgZ2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DYXBzQ2hhbmdlVGlt
ZW91dENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdgogICAgIHJldHVybiBGQUxTRTsKIH0KIAotI2lm
IEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCiBzdGF0aWMgdm9pZCBtZWRpYVBsYXllclByaXZhdGVUZXh0Q2hh
bmdlZENhbGxiYWNrKEdPYmplY3QqLCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXll
cikKIHsKICAgICBwbGF5ZXItPnRleHRDaGFuZ2VkKCk7CkBAIC0yNTAsNyArMjI5LDcgQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmlzQXZhaWxhYmxlKCkKICAgICBpZiAoIWlu
aXRpYWxpemVHU3RyZWFtZXJBbmRSZWdpc3RlcldlYktpdEVsZW1lbnRzKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudEZhY3Rvcnk+IGZhY3RvcnkgPSBn
c3RfZWxlbWVudF9mYWN0b3J5X2ZpbmQoZ1BsYXliaW5OYW1lKTsKKyAgICBHUmVmUHRyPEdzdEVs
ZW1lbnRGYWN0b3J5PiBmYWN0b3J5ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9maW5kKCJwbGF5Ymlu
Iik7CiAgICAgcmV0dXJuIGZhY3Rvcnk7CiB9CiAKQEAgLTI5OSw3ICsyNzgsNyBAQCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVBs
YXllciogcGxheWVyKQogCiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIoKQogewotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5l
ZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2F1ZGlvVHJhY2tzLnNpemUoKTsgKytpKQogICAgICAgICBtX2F1
ZGlvVHJhY2tzW2ldLT5kaXNjb25uZWN0KCk7CiAKQEAgLTMyNSw3ICszMDQsNyBAQCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogICAg
ICAgICBnX3NvdXJjZV9yZW1vdmUobV9yZWFkeVRpbWVySGFuZGxlcik7CiAKICAgICBpZiAobV9w
bGF5QmluKSB7Ci0gICAgICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSB3ZWJraXRHc3RQaXBlbGlu
ZUdldEJ1cyhHU1RfUElQRUxJTkUobV9wbGF5QmluLmdldCgpKSk7CisgICAgICAgIEdSZWZQdHI8
R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5F
KG1fcGxheUJpbi5nZXQoKSkpKTsKICAgICAgICAgQVNTRVJUKGJ1cyk7CiAgICAgICAgIGdfc2ln
bmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhidXMuZ2V0KCksIHJlaW50ZXJwcmV0X2Nh
c3Q8Z3BvaW50ZXI+KG1lZGlhUGxheWVyUHJpdmF0ZU1lc3NhZ2VDYWxsYmFjayksIHRoaXMpOwog
ICAgICAgICBnc3RfYnVzX3JlbW92ZV9zaWduYWxfd2F0Y2goYnVzLmdldCgpKTsKQEAgLTMzMyw3
ICszMTIsNyBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIoKQogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1
bmMobV9wbGF5QmluLmdldCgpLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPihtZWRpYVBsYXll
clByaXZhdGVTb3VyY2VDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgZ19zaWduYWxf
aGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fcGxheUJpbi5nZXQoKSwgcmVpbnRlcnByZXRf
Y2FzdDxncG9pbnRlcj4obWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DaGFuZ2VkQ2FsbGJhY2spLCB0
aGlzKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fcGxh
eUJpbi5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4obWVkaWFQbGF5ZXJQcml2YXRl
QXVkaW9DaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYm
IGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
ICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMobV9wbGF5QmluLmdldCgp
LCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPihtZWRpYVBsYXllclByaXZhdGVOZXdUZXh0U2Ft
cGxlQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVj
dF9ieV9mdW5jKG1fcGxheUJpbi5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4obWVk
aWFQbGF5ZXJQcml2YXRlVGV4dENoYW5nZWRDYWxsYmFjayksIHRoaXMpOwogI2VuZGlmCkBAIC01
NDMsMTEgKzUyMiw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZHVyYXRp
b24oKSBjb25zdAogICAgIEdzdEZvcm1hdCB0aW1lRm9ybWF0ID0gR1NUX0ZPUk1BVF9USU1FOwog
ICAgIGdpbnQ2NCB0aW1lTGVuZ3RoID0gMDsKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAg
ICAgYm9vbCBmYWlsdXJlID0gIWdzdF9lbGVtZW50X3F1ZXJ5X2R1cmF0aW9uKG1fcGxheUJpbi5n
ZXQoKSwgdGltZUZvcm1hdCwgJnRpbWVMZW5ndGgpIHx8IHN0YXRpY19jYXN0PGd1aW50NjQ+KHRp
bWVMZW5ndGgpID09IEdTVF9DTE9DS19USU1FX05PTkU7Ci0jZWxzZQotICAgIGJvb2wgZmFpbHVy
ZSA9ICFnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbihtX3BsYXlCaW4uZ2V0KCksICZ0aW1lRm9y
bWF0LCAmdGltZUxlbmd0aCkgfHwgdGltZUZvcm1hdCAhPSBHU1RfRk9STUFUX1RJTUUgfHwgc3Rh
dGljX2Nhc3Q8Z3VpbnQ2ND4odGltZUxlbmd0aCkgPT0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLSNl
bmRpZgogICAgIGlmIChmYWlsdXJlKSB7CiAgICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJUaW1l
IGR1cmF0aW9uIHF1ZXJ5IGZhaWxlZCBmb3IgJXMiLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsK
QEAgLTY4OCw3ICs2NjMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90
aWZ5UGxheWVyT2ZWaWRlbygpCiAKICAgICBtX2hhc1ZpZGVvID0gbnVtVHJhY2tzID4gMDsKIAot
I2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgZm9yIChnaW50IGkgPSAwOyBpIDwgbnVtVHJhY2tz
OyArK2kpIHsKICAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHBhZDsKICAgICAgICAgZ19zaWduYWxf
ZW1pdF9ieV9uYW1lKG1fcGxheUJpbi5nZXQoKSwgImdldC12aWRlby1wYWQiLCBpLCAmcGFkLm91
dFB0cigpLCBOVUxMKTsKQEAgLTc0MSw3ICs3MTYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygpCiAKICAgICBtX2hhc0F1ZGlvID0gbnVt
VHJhY2tzID4gMDsKIAotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJ
X1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgZm9yIChnaW50IGkgPSAw
OyBpIDwgbnVtVHJhY2tzOyArK2kpIHsKICAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHBhZDsKICAg
ICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fcGxheUJpbi5nZXQoKSwgImdldC1hdWRpby1w
YWQiLCBpLCAmcGFkLm91dFB0cigpLCBOVUxMKTsKQEAgLTc3MCw3ICs3NDUsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygpCiAgICAgbV9w
bGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyRW5naW5lVXBkYXRlZChtX3Bs
YXllcik7CiB9CiAKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9W
RVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnRleHRDaGFuZ2VkKCkKIHsKICAgICBpZiAobV90ZXh0VGltZXJIYW5kbGVy
KQpAQCAtOTI3LDggKzkwMiw4IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCgpIGNvbnN0CiAgICAgZm9yIChndWludCBpbmRleCA9
IDA7IGluZGV4IDwgZ3N0X3F1ZXJ5X2dldF9uX2J1ZmZlcmluZ19yYW5nZXMocXVlcnkpOyBpbmRl
eCsrKSB7CiAgICAgICAgIGdpbnQ2NCByYW5nZVN0YXJ0ID0gMCwgcmFuZ2VTdG9wID0gMDsKICAg
ICAgICAgaWYgKGdzdF9xdWVyeV9wYXJzZV9udGhfYnVmZmVyaW5nX3JhbmdlKHF1ZXJ5LCBpbmRl
eCwgJnJhbmdlU3RhcnQsICZyYW5nZVN0b3ApKQotICAgICAgICAgICAgdGltZVJhbmdlcy0+YWRk
KHN0YXRpY19jYXN0PGZsb2F0PigocmFuZ2VTdGFydCAqIG1lZGlhRHVyYXRpb24pIC8gZ1BlcmNl
bnRNYXgpLAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0PigocmFuZ2VTdG9wICog
bWVkaWFEdXJhdGlvbikgLyBnUGVyY2VudE1heCkpOworICAgICAgICAgICAgdGltZVJhbmdlcy0+
YWRkKHN0YXRpY19jYXN0PGZsb2F0PigocmFuZ2VTdGFydCAqIG1lZGlhRHVyYXRpb24pIC8gR1NU
X0ZPUk1BVF9QRVJDRU5UX01BWCksCisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KChyYW5nZVN0b3AgKiBtZWRpYUR1cmF0aW9uKSAvIEdTVF9GT1JNQVRfUEVSQ0VOVF9NQVgpKTsK
ICAgICB9CiAKICAgICAvLyBGYWxsYmFjayB0byB0aGUgbW9yZSBnZW5lcmFsIG1heFRpbWVMb2Fk
ZWQoKSBpZiBubyByYW5nZSBoYXMKQEAgLTEwMzMsMTEgKzEwMDgsNyBAQCBnYm9vbGVhbiBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2Fn
ZSkKICAgICBjYXNlIEdTVF9NRVNTQUdFX0JVRkZFUklORzoKICAgICAgICAgcHJvY2Vzc0J1ZmZl
cmluZ1N0YXRzKG1lc3NhZ2UpOwogICAgICAgICBicmVhazsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJ
T05fMQogICAgIGNhc2UgR1NUX01FU1NBR0VfRFVSQVRJT05fQ0hBTkdFRDoKLSNlbHNlCi0gICAg
Y2FzZSBHU1RfTUVTU0FHRV9EVVJBVElPTjoKLSNlbmRpZgogICAgICAgICBpZiAobWVzc2FnZVNv
dXJjZUlzUGxheWJpbikKICAgICAgICAgICAgIGR1cmF0aW9uQ2hhbmdlZCgpOwogICAgICAgICBi
cmVhazsKQEAgLTEwNjIsNyArMTAzMyw3IEBAIGdib29sZWFuIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICAgICAg
Z19mcmVlKGRldGFpbCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0jaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURF
T19UUkFDSykKICAgICBjYXNlIEdTVF9NRVNTQUdFX1RPQzoKICAgICAgICAgcHJvY2Vzc1RhYmxl
T2ZDb250ZW50cyhtZXNzYWdlKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMDk1LDcgKzEwNjYsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc0J1ZmZlcmluZ1N0YXRz
KEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgdXBkYXRlU3RhdGVzKCk7CiB9CiAKLSNpZiBFTkFC
TEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NU
YWJsZU9mQ29udGVudHMoR3N0TWVzc2FnZSogbWVzc2FnZSkKIHsKICAgICBpZiAobV9jaGFwdGVy
c1RyYWNrKQpAQCAtMTIzOSwxMSArMTIxMCw3IEBAIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6dG90YWxCeXRlcygpIGNvbnN0CiAKICAgICBHc3RGb3JtYXQgZm10ID0gR1NU
X0ZPUk1BVF9CWVRFUzsKICAgICBnaW50NjQgbGVuZ3RoID0gMDsKLSNpZmRlZiBHU1RfQVBJX1ZF
UlNJT05fMQogICAgIGlmIChnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbihtX3NvdXJjZS5nZXQo
KSwgZm10LCAmbGVuZ3RoKSkgewotI2Vsc2UKLSAgICBpZiAoZ3N0X2VsZW1lbnRfcXVlcnlfZHVy
YXRpb24obV9zb3VyY2UuZ2V0KCksICZmbXQsICZsZW5ndGgpKSB7Ci0jZW5kaWYKICAgICAgICAg
SU5GT19NRURJQV9NRVNTQUdFKCJ0b3RhbEJ5dGVzICUiIEdfR0lOVDY0X0ZPUk1BVCwgbGVuZ3Ro
KTsKICAgICAgICAgbV90b3RhbEJ5dGVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCk7
CiAgICAgICAgIG1faXNTdHJlYW1pbmcgPSAhbGVuZ3RoOwpAQCAtMTI1NSw3ICsxMjIyLDYgQEAg
dW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0b3RhbEJ5dGVzKCkgY29uc3QK
ICAgICBHc3RJdGVyYXRvciogaXRlciA9IGdzdF9lbGVtZW50X2l0ZXJhdGVfc3JjX3BhZHMobV9z
b3VyY2UuZ2V0KCkpOwogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwogICAgIHdoaWxlICghZG9uZSkg
ewotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgICAgIEdWYWx1ZSBpdGVtID0gR19WQUxV
RV9JTklUOwogICAgICAgICBzd2l0Y2ggKGdzdF9pdGVyYXRvcl9uZXh0KGl0ZXIsICZpdGVtKSkg
ewogICAgICAgICBjYXNlIEdTVF9JVEVSQVRPUl9PSzogewpAQCAtMTI2NSwxOCArMTIzMSw2IEBA
IHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxCeXRlcygpIGNvbnN0
CiAgICAgICAgICAgICAgICAgbGVuZ3RoID0gcGFkTGVuZ3RoOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgIGdwb2ludGVyIGRhdGE7Ci0KLSAgICAgICAgc3dp
dGNoIChnc3RfaXRlcmF0b3JfbmV4dChpdGVyLCAmZGF0YSkpIHsKLSAgICAgICAgY2FzZSBHU1Rf
SVRFUkFUT1JfT0s6IHsKLSAgICAgICAgICAgIEdSZWZQdHI8R3N0UGFkPiBwYWQgPSBhZG9wdEdS
ZWYoR1NUX1BBRF9DQVNUKGRhdGEpKTsKLSAgICAgICAgICAgIGdpbnQ2NCBwYWRMZW5ndGggPSAw
OwotICAgICAgICAgICAgaWYgKGdzdF9wYWRfcXVlcnlfZHVyYXRpb24ocGFkLmdldCgpLCAmZm10
LCAmcGFkTGVuZ3RoKSAmJiBwYWRMZW5ndGggPiBsZW5ndGgpCi0gICAgICAgICAgICAgICAgbGVu
Z3RoID0gcGFkTGVuZ3RoOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSNlbmRpZgog
ICAgICAgICBjYXNlIEdTVF9JVEVSQVRPUl9SRVNZTkM6CiAgICAgICAgICAgICBnc3RfaXRlcmF0
b3JfcmVzeW5jKGl0ZXIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjg3LDkgKzEyNDEsNyBA
QCB1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRvdGFsQnl0ZXMoKSBjb25z
dAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotI2lmZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCiAgICAgICAgIGdfdmFsdWVfdW5zZXQoJml0ZW0pOwotI2VuZGlmCiAgICAgfQogCiAgICAg
Z3N0X2l0ZXJhdG9yX2ZyZWUoaXRlcik7CkBAIC0xOTA1LDEwICsxODU3LDEwIEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKCkKIAogICAgIC8vIGdz
dF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgpIHJldHVybnMgYSBmbG9hdGluZyByZWZlcmVuY2Ugc28K
ICAgICAvLyB3ZSBzaG91bGQgbm90IGFkb3B0LgotICAgIG1fcGxheUJpbiA9IGdzdF9lbGVtZW50
X2ZhY3RvcnlfbWFrZShnUGxheWJpbk5hbWUsICJwbGF5Iik7CisgICAgbV9wbGF5QmluID0gZ3N0
X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJwbGF5YmluIiwgInBsYXkiKTsKICAgICBzZXRTdHJlYW1W
b2x1bWVFbGVtZW50KEdTVF9TVFJFQU1fVk9MVU1FKG1fcGxheUJpbi5nZXQoKSkpOwogCi0gICAg
R1JlZlB0cjxHc3RCdXM+IGJ1cyA9IHdlYmtpdEdzdFBpcGVsaW5lR2V0QnVzKEdTVF9QSVBFTElO
RShtX3BsYXlCaW4uZ2V0KCkpKTsKKyAgICBHUmVmUHRyPEdzdEJ1cz4gYnVzID0gYWRvcHRHUmVm
KGdzdF9waXBlbGluZV9nZXRfYnVzKEdTVF9QSVBFTElORShtX3BsYXlCaW4uZ2V0KCkpKSk7CiAg
ICAgZ3N0X2J1c19hZGRfc2lnbmFsX3dhdGNoKGJ1cy5nZXQoKSk7CiAgICAgZ19zaWduYWxfY29u
bmVjdChidXMuZ2V0KCksICJtZXNzYWdlIiwgR19DQUxMQkFDSyhtZWRpYVBsYXllclByaXZhdGVN
ZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKIApAQCAtMTkxNyw3ICsxODY5LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oKQogICAgIGdfc2lnbmFs
X2Nvbm5lY3QobV9wbGF5QmluLmdldCgpLCAibm90aWZ5Ojpzb3VyY2UiLCBHX0NBTExCQUNLKG1l
ZGlhUGxheWVyUHJpdmF0ZVNvdXJjZUNoYW5nZWRDYWxsYmFjayksIHRoaXMpOwogICAgIGdfc2ln
bmFsX2Nvbm5lY3QobV9wbGF5QmluLmdldCgpLCAidmlkZW8tY2hhbmdlZCIsIEdfQ0FMTEJBQ0so
bWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKICAgICBnX3Np
Z25hbF9jb25uZWN0KG1fcGxheUJpbi5nZXQoKSwgImF1ZGlvLWNoYW5nZWQiLCBHX0NBTExCQUNL
KG1lZGlhUGxheWVyUHJpdmF0ZUF1ZGlvQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7Ci0jaWYgRU5B
QkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJM
RShWSURFT19UUkFDSykKICAgICBpZiAod2Via2l0R3N0Q2hlY2tWZXJzaW9uKDEsIDEsIDIpKSB7
CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wbGF5QmluLmdldCgpLCAidGV4dC1jaGFuZ2Vk
IiwgR19DQUxMQkFDSyhtZWRpYVBsYXllclByaXZhdGVUZXh0Q2hhbmdlZENhbGxiYWNrKSwgdGhp
cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRl
eCBkN2Y1M2M0MzZlZGQ1ZDViYmJhOWMxZjg5N2Q5M2Q0ZWVmNTM0ZWZmLi43ZjZlMmQ2N2E3NmYw
YmI3YjU3ZTljOWJkMjdjMTJjMWU2Nzk3ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgbm90aWZ5UGxheWVyT2ZWaWRlb0NhcHMoKTsKICAgICB2b2lkIG5vdGlmeVBsYXllck9mQXVk
aW8oKTsKIAotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJ
T05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgdm9pZCB0ZXh0Q2hhbmdlZCgpOwog
ICAgIHZvaWQgbm90aWZ5UGxheWVyT2ZUZXh0KCk7CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBzZXREb3dubG9hZEJ1ZmZlcmluZygpOwogICAgIHZvaWQgcHJvY2Vz
c0J1ZmZlcmluZ1N0YXRzKEdzdE1lc3NhZ2UqKTsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYm
IGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
IHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50cyhHc3RNZXNzYWdlKik7CiAgICAgdm9pZCBwcm9j
ZXNzVGFibGVPZkNvbnRlbnRzRW50cnkoR3N0VG9jRW50cnkqLCBHc3RUb2NFbnRyeSogcGFyZW50
KTsKICNlbmRpZgpAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiBwcml2YXRlOgogICAgIEdS
ZWZQdHI8R3N0RWxlbWVudD4gbV9wbGF5QmluOwogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9z
b3VyY2U7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lP
Tl8xKQorI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1f
dGV4dEFwcFNpbms7CiAgICAgR1JlZlB0cjxHc3RQYWQ+IG1fdGV4dEFwcFNpbmtQYWQ7CiAjZW5k
aWYKQEAgLTE5OCw3ICsxOTgsNyBAQCBwcml2YXRlOgogICAgIEdzdFN0YXRlIG1fcmVxdWVzdGVk
U3RhdGU7CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX2F1dG9BdWRpb1Npbms7CiAgICAgYm9v
bCBtX21pc3NpbmdQbHVnaW5zOwotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChH
U1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgVmVjdG9yPFJl
ZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4+IG1fYXVkaW9UcmFja3M7CiAgICAgVmVj
dG9yPFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPj4gbV90ZXh0VHJhY2tz
OwogICAgIFZlY3RvcjxSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+PiBtX3ZpZGVv
VHJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UuY3BwCmluZGV4IDk5NWRkOGRhNGQ3YjczZGI4NTdhYTYzOThkZDcwOTlkNDhkNGMyNTgu
LmE5N2I0ZmI3ZmQ3ODQwNWI5MjViODk2N2I5MTgxOTJiODdlZDYzYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTI4LDcg
KzI4LDYgQEAKIAogI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJHU3RyZWFtZXJV
dGlsaXRpZXMuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUg
IkltYWdlR1N0cmVhbWVyLmgiCkBAIC00MSwxMSArNDAsNyBAQAogI2luY2x1ZGUgPGdzdC9nc3Qu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJ
T05fMQogI2luY2x1ZGUgPGdzdC9hdWRpby9zdHJlYW12b2x1bWUuaD4KLSNlbHNlCi0jaW5jbHVk
ZSA8Z3N0L2ludGVyZmFjZXMvc3RyZWFtdm9sdW1lLmg+Ci0jZW5kaWYKIAogI2lmIEdTVF9DSEVD
S19WRVJTSU9OKDEsIDEsIDApICYmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKQogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgpAQCAtMTY0
LDEzICsxNTksNyBAQCBJbnRTaXplIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5h
dHVyYWxTaXplKCkgY29uc3QKICAgICBpZiAoIW1fdmlkZW9TaXplLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG1fdmlkZW9TaXplOwogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBH
UmVmUHRyPEdzdENhcHM+IGNhcHMgPSBjdXJyZW50VmlkZW9TaW5rQ2FwcygpOwotI2Vsc2UKLSAg
ICBnX211dGV4X2xvY2sobV9idWZmZXJNdXRleCk7Ci0gICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBz
ID0gbV9idWZmZXIgPyBHU1RfQlVGRkVSX0NBUFMobV9idWZmZXIpIDogMDsKLSAgICBnX211dGV4
X3VubG9jayhtX2J1ZmZlck11dGV4KTsKLSNlbmRpZgogICAgIGlmICghY2FwcykKICAgICAgICAg
cmV0dXJuIEludFNpemUoKTsKIApAQCAtMzI0LDExICszMTMsNyBAQCBQYXNzUmVmUHRyPEJpdG1h
cFRleHR1cmU+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUo
VGV4dHVyZQogICAgIH0KIAogICAgIGNvbnN0IHZvaWQqIHNyY0RhdGEgPSAwOwotI2lmZGVmIEdT
VF9BUElfVkVSU0lPTl8xCiAgICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBzID0gY3VycmVudFZpZGVv
U2lua0NhcHMoKTsKLSNlbHNlCi0gICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBzID0gR1NUX0JVRkZF
Ul9DQVBTKG1fYnVmZmVyKTsKLSNlbmRpZgogICAgIGlmICghY2FwcykgewogICAgICAgICBnX211
dGV4X3VubG9jayhtX2J1ZmZlck11dGV4KTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zNTksMTkg
KzM0NCwxMyBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoVGV4dHVyZQogICAgIH0KICNlbmRpZgogCi0jaWZk
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBHc3RNYXBJbmZvIHNyY0luZm87CiAgICAgZ3N0X2J1
ZmZlcl9tYXAobV9idWZmZXIsICZzcmNJbmZvLCBHU1RfTUFQX1JFQUQpOwogICAgIHNyY0RhdGEg
PSBzcmNJbmZvLmRhdGE7Ci0jZWxzZQotICAgIHNyY0RhdGEgPSBHU1RfQlVGRkVSX0RBVEEobV9i
dWZmZXIpOwotI2VuZGlmCiAKICAgICB0ZXh0dXJlLT51cGRhdGVDb250ZW50cyhzcmNEYXRhLCBX
ZWJDb3JlOjpJbnRSZWN0KFdlYkNvcmU6OkludFBvaW50KDAsIDApLCBzaXplKSwgV2ViQ29yZTo6
SW50UG9pbnQoMCwgMCksIHN0cmlkZSwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2Fubm90TW9kaWZ5
T3JpZ2luYWxJbWFnZURhdGEpOwogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBnc3Rf
YnVmZmVyX3VubWFwKG1fYnVmZmVyLCAmc3JjSW5mbyk7Ci0jZW5kaWYKIAogICAgIGdfbXV0ZXhf
dW5sb2NrKG1fYnVmZmVyTXV0ZXgpOwogICAgIHJldHVybiB0ZXh0dXJlOwpAQCAtNDIwLDExICsz
OTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHMgPSBj
dXJyZW50VmlkZW9TaW5rQ2FwcygpOwotI2Vsc2UKLSAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHMg
PSBHU1RfQlVGRkVSX0NBUFMobV9idWZmZXIpOwotI2VuZGlmCiAgICAgaWYgKCFjYXBzKSB7CiAg
ICAgICAgIGdfbXV0ZXhfdW5sb2NrKG1fYnVmZmVyTXV0ZXgpOwogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4
dENvbWJpbmVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIuY3BwCmluZGV4IGY5MjI4NDViYzliNjk1
MzA2OWQzYzY5NDgzMGNhMmZjNjU0NDhiMTAuLmMwZWJlN2MwMWRiMDA2MGE2NThjNWRiNDUyYzhh
NzA2NjRkN2M1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIuY3BwCkBA
IC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmIEVOQUJMRShW
SURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVk
KEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikg
JiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiVGV4dENvbWJpbmVyR1N0cmVhbWVy
LmgiCiAKQEAgLTI5MSw0ICsyOTEsNCBAQCBHc3RFbGVtZW50KiB3ZWJraXRUZXh0Q29tYmluZXJO
ZXcoKQogICAgIHJldHVybiBHU1RfRUxFTUVOVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVEVY
VF9DT01CSU5FUiwgMCkpOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NU
UkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9O
XzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUo
VklERU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVGV4dENvbWJpbmVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dENvbWJpbmVyR1N0cmVhbWVyLmgKaW5kZXggYTE5
MzAzZGMyNTEwYzhiZTgxNDBmNGQzNTE5ZDAxYzMzMjk1OGNjOS4uMjBjNTc5Njk3ZTQ2ODM0ZjM4
MDQ3YjM1MDQzZjdhYTRjYmI5ZTJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRDb21iaW5lckdTdHJlYW1lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFt
ZXIuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBUZXh0Q29tYmluZXJHU3RyZWFtZXJfaAog
I2RlZmluZSBUZXh0Q29tYmluZXJHU3RyZWFtZXJfaAogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBV
U0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9W
RVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUo
VklERU9fVFJBQ0spCiAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPGdzdC9n
c3QuaD4KQEAgLTYyLDUgKzYyLDUgQEAgc3RydWN0IF9XZWJLaXRUZXh0Q29tYmluZXJDbGFzcyB7
CiAKIEdzdEVsZW1lbnQqIHdlYmtpdFRleHRDb21iaW5lck5ldygpOwogCi0jZW5kaWYgLy8gRU5B
QkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRl
ZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0Uo
R1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0U2lua0dTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dFNp
bmtHU3RyZWFtZXIuY3BwCmluZGV4IDE0ZmQ0NjkyYmJmM2EyZGE5MDhkZTdkNzA0ZWJiYjlhNmQ0
YTBhMzcuLjY3OGU3YWMzNTZlZDVjNWFmZmUzM2Q2MGE4ZDA1Nzg1MDBmY2I5NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0U2lua0dT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1RleHRTaW5rR1N0cmVhbWVyLmNwcApAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVO
QUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFC
TEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2lu
Y2x1ZGUgIlRleHRTaW5rR1N0cmVhbWVyLmgiCiAKQEAgLTk4LDQgKzk4LDQgQEAgR3N0RWxlbWVu
dCogd2Via2l0VGV4dFNpbmtOZXcoKQogICAgIHJldHVybiBHU1RfRUxFTUVOVChnX29iamVjdF9u
ZXcoV0VCS0lUX1RZUEVfVEVYVF9TSU5LLCAwKSk7CiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoVklE
RU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChH
U1RfQVBJX1ZFUlNJT05fMSkKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFN
RVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0U2lua0dTdHJlYW1lci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRTaW5rR1N0cmVhbWVyLmgKaW5k
ZXggNmM2YjZhYmRjMzk3NTQ1NzQzNzAwODZiNDUyNDYzN2JkODY1MGUwMi4uZDA5YmU4NjJiODll
ZmQzNzIzZDI2OTEyMDlmNTUyYTE5MGMxMDk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRTaW5rR1N0cmVhbWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRTaW5rR1N0cmVhbWVy
LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgVGV4dFNpbmtHU3RyZWFtZXJfaAogI2RlZmlu
ZSBUZXh0U2lua0dTdHJlYW1lcl9oCiAKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFN
RVIpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkK
KyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFD
SykKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBz
aW5rLmg+CkBAIC02MSw1ICs2MSw1IEBAIHN0cnVjdCBfV2ViS2l0VGV4dFNpbmtDbGFzcyB7CiAK
IEdzdEVsZW1lbnQqIHdlYmtpdFRleHRTaW5rTmV3KCk7CiAKLSNlbmRpZiAvLyBFTkFCTEUoVklE
RU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChH
U1RfQVBJX1ZFUlNJT05fMSkKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFN
RVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNr
UHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCmluZGV4IGIzMjAxNTc1N2NhNWNkMGI5NTY4NTlmMjNi
ZGRiOTM3ZTM3NWFiNWEuLmJkN2E2OGRjNWVkZTcyNDI3NmVmYmFiN2I3ZTA2NTkwZjE1MDQ2ZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9U
cmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKQEAgLTI1
LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQ
SV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFC
TEUoVklERU9fVFJBQ0spCiAKICNpbmNsdWRlICJUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmgi
CiAKQEAgLTE2Miw0ICsxNjIsNCBAQCB2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5v
dGlmeVRyYWNrT2ZUYWdzQ2hhbmdlZCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2Vu
ZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RS
QUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURF
TykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmgKaW5kZXggOTk1ZGE0ZmY4YTdmMWU1MGE2MDQ1
NzBmNjcwNzI5NGNiNDliMTZhYi4uNGZhZjliMjU4NzUyMjg2NmRhOGQ2Zjc3ZGUzYzk0NTczOTky
MmNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5oCkBAIC0y
Niw3ICsyNiw3IEBACiAjaWZuZGVmIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXJfaAogI2RlZmlu
ZSBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyX2gKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNF
KEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVS
U0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogCiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzEsNiArNzEsNiBAQCBwcml2YXRlOgogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFN
RVIpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkK
KyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURF
T19UUkFDSykKIAogI2VuZGlmIC8vIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lu
a0dTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAppbmRleCBmMjQzMjNkNzc2NGM1YTFhN2U4YjU5ODRj
Y2MwOGJiNjYwODdkM2ExLi5jN2FlNzFjNjJhNTBlZjcyNzk4NGIzNWU5NWJhMTNkOTZlNGFkM2U3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9TaW5rR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcApAQCAtMzAsMTcgKzMwLDE0IEBA
CiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAjaW5jbHVkZSAiR1JlZlB0
ckdTdHJlYW1lci5oIgotI2luY2x1ZGUgIkdTdHJlYW1lclZlcnNpb25pbmcuaCIKKyNpbmNsdWRl
ICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8
Z2xpYi5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQog
I2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4KLSNlbmRpZgogI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KIAogLy8gQ0FJUk9fRk9STUFUX1JHQjI0IHVzZWQgdG8gcmVuZGVyIHRoZSB2
aWRlbyBidWZmZXJzIGlzIGxpdHRsZS9iaWcgZW5kaWFuIGRlcGVuZGFudC4KLSNpZmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQogI2lmIEdfQllURV9PUkRFUiA9PSBHX0xJVFRMRV9FTkRJQU4KICNkZWZp
bmUgR1NUX0NBUFNfRk9STUFUICJ7IEJHUngsIEJHUkEgfSIKICNlbHNlCkBAIC01MSwxNyArNDgs
OCBAQAogI2Vsc2UKICNkZWZpbmUgR1NUX0ZFQVRVUkVEX0NBUFMKICNlbmRpZgotI2VuZGlmIC8v
IEdTVF9BUElfVkVSU0lPTl8xCiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogI2RlZmluZSBX
RUJLSVRfVklERU9fU0lOS19QQURfQ0FQUyBHU1RfRkVBVFVSRURfQ0FQUyBHU1RfVklERU9fQ0FQ
U19NQUtFKEdTVF9DQVBTX0ZPUk1BVCkKLSNlbHNlCi0jaWYgR19CWVRFX09SREVSID09IEdfTElU
VExFX0VORElBTgotI2RlZmluZSBXRUJLSVRfVklERU9fU0lOS19QQURfQ0FQUyBHU1RfVklERU9f
Q0FQU19CR1J4ICI7IiBHU1RfVklERU9fQ0FQU19CR1JBCi0jZWxzZQotI2RlZmluZSBXRUJLSVRf
VklERU9fU0lOS19QQURfQ0FQUyBHU1RfVklERU9fQ0FQU194UkdCICI7IiBHU1RfVklERU9fQ0FQ
U19BUkdCCi0jZW5kaWYKLSNlbmRpZiAvLyBHU1RfQVBJX1ZFUlNJT05fMQogCiBzdGF0aWMgR3N0
U3RhdGljUGFkVGVtcGxhdGUgc19zaW5rVGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFU
RSgic2luayIsIEdTVF9QQURfU0lOSywgR1NUX1BBRF9BTFdBWVMsIEdTVF9TVEFUSUNfQ0FQUyhX
RUJLSVRfVklERU9fU0lOS19QQURfQ0FQUykpOwogCkBAIC04Nyw5ICs3NSw3IEBAIHN0cnVjdCBf
V2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSB7CiAgICAgR011dGV4KiBidWZmZXJNdXRleDsKICAgICBH
Q29uZCogZGF0YUNvbmRpdGlvbjsKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgR3N0
VmlkZW9JbmZvIGluZm87Ci0jZW5kaWYKIAogICAgIEdzdENhcHMqIGN1cnJlbnRDYXBzOwogCkBA
IC0xMjEsOSArMTA3LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3ZpZGVvX3NpbmtfaW5pdChXZWJL
aXRWaWRlb1NpbmsqIHNpbmspCiAgICAgc2luay0+cHJpdi0+YnVmZmVyTXV0ZXggPSBnX211dGV4
X25ldygpOwogI2VuZGlmCiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGdzdF92aWRl
b19pbmZvX2luaXQoJnNpbmstPnByaXYtPmluZm8pOwotI2VuZGlmCiB9CiAKIHN0YXRpYyBnYm9v
bGVhbiB3ZWJraXRWaWRlb1NpbmtUaW1lb3V0Q2FsbGJhY2soZ3BvaW50ZXIgZGF0YSkKQEAgLTE2
NCwyMyArMTQ4LDEyIEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRl
cihHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdEJ1ZmZlciogYnVmCiAKICAgICBwcml2LT5idWZm
ZXIgPSBnc3RfYnVmZmVyX3JlZihidWZmZXIpOwogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8x
Ci0gICAgLy8gRm9yIHRoZSB1bmxpa2VseSBjYXNlIHdoZXJlIHRoZSBidWZmZXIgaGFzIG5vIGNh
cHMsIHRoZSBjYXBzCi0gICAgLy8gYXJlIGltcGxpY2l0ZWx5IHRoZSBjYXBzIG9mIHRoZSBwYWQu
IFRoaXMgc2hvdWxkbid0IGhhcHBlbi4KLSAgICBpZiAoVU5MSUtFTFkoIUdTVF9CVUZGRVJfQ0FQ
UyhidWZmZXIpKSkgewotICAgICAgICBidWZmZXIgPSBwcml2LT5idWZmZXIgPSBnc3RfYnVmZmVy
X21ha2VfbWV0YWRhdGFfd3JpdGFibGUocHJpdi0+YnVmZmVyKTsKLSAgICAgICAgZ3N0X2J1ZmZl
cl9zZXRfY2Fwcyhwcml2LT5idWZmZXIsIEdTVF9QQURfQ0FQUyhHU1RfQkFTRV9TSU5LX1BBRChi
YXNlU2luaykpKTsKLSAgICB9Ci0KLSAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHMgPSBHU1RfQlVG
RkVSX0NBUFMoYnVmZmVyKTsKLSNlbHNlCiAgICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBzOwogICAg
IC8vIFRoZSB2aWRlbyBpbmZvIHN0cnVjdHVyZSBpcyB2YWxpZCBvbmx5IGlmIHRoZSBzaW5rIGhh
bmRsZWQgYW4gYWxsb2NhdGlvbiBxdWVyeS4KICAgICBpZiAoR1NUX1ZJREVPX0lORk9fRk9STUFU
KCZwcml2LT5pbmZvKSAhPSBHU1RfVklERU9fRk9STUFUX1VOS05PV04pCiAgICAgICAgIGNhcHMg
PSBhZG9wdEdSZWYoZ3N0X3ZpZGVvX2luZm9fdG9fY2FwcygmcHJpdi0+aW5mbykpOwogICAgIGVs
c2UKICAgICAgICAgY2FwcyA9IHByaXYtPmN1cnJlbnRDYXBzOwotI2VuZGlmCiAKICAgICBHc3RW
aWRlb0Zvcm1hdCBmb3JtYXQ7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplOwpAQCAtMjExLDE3
ICsxODQsMTIgQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4gd2Via2l0VmlkZW9TaW5rUmVuZGVyKEdz
dEJhc2VTaW5rKiBiYXNlU2luaywgR3N0QnVmZmVyKiBidWYKICAgICAgICAgLy8gb25lIGZ1bmN0
aW9uIGNhbGwgcGVyIHZpZGVvIHBpeGVsIGlzIGp1c3QgdG9vIGV4cGVuc2l2ZToKICAgICAgICAg
Ly8gRm9yIDcyMHAvUEFMIGZvciBleGFtcGxlIHRoaXMgbWVhbnMgMTI4MCo3MjAqMjU9MjMwNDAw
MDAKICAgICAgICAgLy8gZnVuY3Rpb24gY2FsbHMgcGVyIHNlY29uZCEKLSNpZm5kZWYgR1NUX0FQ
SV9WRVJTSU9OXzEKLSAgICAgICAgY29uc3QgZ3VpbnQ4KiBzb3VyY2UgPSBHU1RfQlVGRkVSX0RB
VEEoYnVmZmVyKTsKLSAgICAgICAgZ3VpbnQ4KiBkZXN0aW5hdGlvbiA9IEdTVF9CVUZGRVJfREFU
QShuZXdCdWZmZXIpOwotI2Vsc2UKICAgICAgICAgR3N0TWFwSW5mbyBzb3VyY2VJbmZvOwogICAg
ICAgICBHc3RNYXBJbmZvIGRlc3RpbmF0aW9uSW5mbzsKICAgICAgICAgZ3N0X2J1ZmZlcl9tYXAo
YnVmZmVyLCAmc291cmNlSW5mbywgR1NUX01BUF9SRUFEKTsKICAgICAgICAgY29uc3QgZ3VpbnQ4
KiBzb3VyY2UgPSBjb25zdF9jYXN0PGd1aW50OCo+KHNvdXJjZUluZm8uZGF0YSk7CiAgICAgICAg
IGdzdF9idWZmZXJfbWFwKG5ld0J1ZmZlciwgJmRlc3RpbmF0aW9uSW5mbywgR1NUX01BUF9XUklU
RSk7CiAgICAgICAgIGd1aW50OCogZGVzdGluYXRpb24gPSBzdGF0aWNfY2FzdDxndWludDgqPihk
ZXN0aW5hdGlvbkluZm8uZGF0YSk7Ci0jZW5kaWYKIAogICAgICAgICBmb3IgKGludCB4ID0gMDsg
eCA8IHNpemUuaGVpZ2h0KCk7IHgrKykgewogICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkg
PCBzaXplLndpZHRoKCk7IHkrKykgewpAQCAtMjQzLDEwICsyMTEsOCBAQCBzdGF0aWMgR3N0Rmxv
d1JldHVybiB3ZWJraXRWaWRlb1NpbmtSZW5kZXIoR3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBHc3RC
dWZmZXIqIGJ1ZgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSNpZmRlZiBHU1RfQVBJX1ZF
UlNJT05fMQogICAgICAgICBnc3RfYnVmZmVyX3VubWFwKGJ1ZmZlciwgJnNvdXJjZUluZm8pOwog
ICAgICAgICBnc3RfYnVmZmVyX3VubWFwKG5ld0J1ZmZlciwgJmRlc3RpbmF0aW9uSW5mbyk7Ci0j
ZW5kaWYKICAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOwogICAgICAgICBidWZmZXIg
PSBwcml2LT5idWZmZXIgPSBuZXdCdWZmZXI7CiAgICAgfQpAQCAtMzc1LDE5ICszNDEsMTYgQEAg
c3RhdGljIGdib29sZWFuIHdlYmtpdFZpZGVvU2lua1NldENhcHMoR3N0QmFzZVNpbmsqIGJhc2VT
aW5rLCBHc3RDYXBzKiBjYXBzKQogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzaW5rLCAiQ3VycmVu
dCBjYXBzICUiIEdTVF9QVFJfRk9STUFUICIsIHNldHRpbmcgY2FwcyAlIiBHU1RfUFRSX0ZPUk1B
VCwgcHJpdi0+Y3VycmVudENhcHMsIGNhcHMpOwogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEK
ICAgICBHc3RWaWRlb0luZm8gaW5mbzsKICAgICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2Fw
cygmaW5mbywgY2FwcykpIHsKICAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzaW5rLCAiSW52YWxp
ZCBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKICAgICAgICAgcmV0dXJuIEZBTFNFOwog
ICAgIH0KLSNlbmRpZgogCiAgICAgZ3N0X2NhcHNfcmVwbGFjZSgmcHJpdi0+Y3VycmVudENhcHMs
IGNhcHMpOwogICAgIHJldHVybiBUUlVFOwogfQogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEK
IHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRWaWRlb1NpbmtQcm9wb3NlQWxsb2NhdGlvbihHc3RCYXNl
U2luayogYmFzZVNpbmssIEdzdFF1ZXJ5KiBxdWVyeSkKIHsKICAgICBHc3RDYXBzKiBjYXBzOwpA
QCAtNDA2LDMwICszNjksNiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0VmlkZW9TaW5rUHJvcG9z
ZUFsbG9jYXRpb24oR3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBHc3RRdWVyeQogI2VuZGlmCiAgICAg
cmV0dXJuIFRSVUU7CiB9Ci0jZW5kaWYKLQotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotc3Rh
dGljIHZvaWQgd2Via2l0VmlkZW9TaW5rTWFyc2hhbFZvaWRBbmRNaW5pT2JqZWN0KEdDbG9zdXJl
KiBjbG9zdXJlLCBHVmFsdWUqLCBndWludCBwYXJhbWV0ZXJzTnVtYmVyLCBjb25zdCBHVmFsdWUq
IHBhcmFtZXRlclZhbHVlcywgZ3BvaW50ZXIsIGdwb2ludGVyIG1hcnNoYWxEYXRhKQotewotICAg
IHR5cGVkZWYgdm9pZCAoKm1hcnNoYWxmdW5jX1ZPSURfX01JTklPQkpFQ1QpIChncG9pbnRlciBv
YmosIGdwb2ludGVyIGFyZzEsIGdwb2ludGVyIGRhdGEyKTsKLSAgICBtYXJzaGFsZnVuY19WT0lE
X19NSU5JT0JKRUNUIGNhbGxiYWNrOwotICAgIEdDQ2xvc3VyZSogY2Nsb3N1cmUgPSByZWludGVy
cHJldF9jYXN0PEdDQ2xvc3VyZSo+KGNsb3N1cmUpOwotICAgIGdwb2ludGVyIGRhdGExLCBkYXRh
MjsKLQotICAgIGdfcmV0dXJuX2lmX2ZhaWwocGFyYW1ldGVyc051bWJlciA9PSAyKTsKLQotICAg
IGlmIChHX0NDTE9TVVJFX1NXQVBfREFUQShjbG9zdXJlKSkgewotICAgICAgICBkYXRhMSA9IGNs
b3N1cmUtPmRhdGE7Ci0gICAgICAgIGRhdGEyID0gZ192YWx1ZV9wZWVrX3BvaW50ZXIocGFyYW1l
dGVyVmFsdWVzICsgMCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZGF0YTEgPSBnX3ZhbHVlX3Bl
ZWtfcG9pbnRlcihwYXJhbWV0ZXJWYWx1ZXMgKyAwKTsKLSAgICAgICAgZGF0YTIgPSBjbG9zdXJl
LT5kYXRhOwotICAgIH0KLQotICAgIGNhbGxiYWNrID0gKG1hcnNoYWxmdW5jX1ZPSURfX01JTklP
QkpFQ1QpIChtYXJzaGFsRGF0YSA/IG1hcnNoYWxEYXRhIDogY2Nsb3N1cmUtPmNhbGxiYWNrKTsK
LSAgICBjYWxsYmFjayhkYXRhMSwgZ3N0X3ZhbHVlX2dldF9taW5pX29iamVjdChwYXJhbWV0ZXJW
YWx1ZXMgKyAxKSwgZGF0YTIpOwotfQotI2VuZGlmCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF92aWRl
b19zaW5rX2NsYXNzX2luaXQoV2ViS2l0VmlkZW9TaW5rQ2xhc3MqIGtsYXNzKQogewpAQCAtNDM4
LDcgKzM3Nyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF92aWRlb19zaW5rX2NsYXNzX2luaXQoV2Vi
S2l0VmlkZW9TaW5rQ2xhc3MqIGtsYXNzKQogICAgIEdzdEVsZW1lbnRDbGFzcyogZWxlbWVudENs
YXNzID0gR1NUX0VMRU1FTlRfQ0xBU1Moa2xhc3MpOwogCiAgICAgZ3N0X2VsZW1lbnRfY2xhc3Nf
YWRkX3BhZF90ZW1wbGF0ZShlbGVtZW50Q2xhc3MsIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dl
dCgmc19zaW5rVGVtcGxhdGUpKTsKLSAgICBzZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YShlbGVt
ZW50Q2xhc3MsICJXZWJLaXQgdmlkZW8gc2luayIsICJTaW5rL1ZpZGVvIiwgIlNlbmRzIHZpZGVv
IGRhdGEgZnJvbSBhIEdTdHJlYW1lciBwaXBlbGluZSB0byBhIENhaXJvIHN1cmZhY2UiLCAiQWxw
IFRva2VyIDxhbHBAYXRva2VyLmNvbT4iKTsKKyAgICBnc3RfZWxlbWVudF9jbGFzc19zZXRfbWV0
YWRhdGEoZWxlbWVudENsYXNzLCAiV2ViS2l0IHZpZGVvIHNpbmsiLCAiU2luay9WaWRlbyIsICJT
ZW5kcyB2aWRlbyBkYXRhIGZyb20gYSBHU3RyZWFtZXIgcGlwZWxpbmUgdG8gYSBDYWlybyBzdXJm
YWNlIiwgIkFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+Iik7CiAKICAgICBnX3R5cGVfY2xhc3Nf
YWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRWaWRlb1NpbmtQcml2YXRlKSk7CiAKQEAg
LTQ1Miw5ICszOTEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfdmlkZW9fc2lua19jbGFzc19pbml0
KFdlYktpdFZpZGVvU2lua0NsYXNzKiBrbGFzcykKICAgICBiYXNlU2lua0NsYXNzLT5zdG9wID0g
d2Via2l0VmlkZW9TaW5rU3RvcDsKICAgICBiYXNlU2lua0NsYXNzLT5zdGFydCA9IHdlYmtpdFZp
ZGVvU2lua1N0YXJ0OwogICAgIGJhc2VTaW5rQ2xhc3MtPnNldF9jYXBzID0gd2Via2l0VmlkZW9T
aW5rU2V0Q2FwczsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGJhc2VTaW5rQ2xhc3Mt
PnByb3Bvc2VfYWxsb2NhdGlvbiA9IHdlYmtpdFZpZGVvU2lua1Byb3Bvc2VBbGxvY2F0aW9uOwot
I2VuZGlmCiAKICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFz
cywgUFJPUF9DQVBTLAogICAgICAgICBnX3BhcmFtX3NwZWNfYm94ZWQoImN1cnJlbnQtY2FwcyIs
ICJDdXJyZW50LUNhcHMiLCAiQ3VycmVudCBjYXBzIiwgR1NUX1RZUEVfQ0FQUywgR19QQVJBTV9S
RUFEQUJMRSkpOwpAQCAtNDY1LDExICs0MDIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfdmlkZW9f
c2lua19jbGFzc19pbml0KFdlYktpdFZpZGVvU2lua0NsYXNzKiBrbGFzcykKICAgICAgICAgICAg
IDAsIC8vIENsYXNzIG9mZnNldAogICAgICAgICAgICAgMCwgLy8gQWNjdW11bGF0b3IKICAgICAg
ICAgICAgIDAsIC8vIEFjY3VtdWxhdG9yIGRhdGEKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEK
LSAgICAgICAgICAgIHdlYmtpdFZpZGVvU2lua01hcnNoYWxWb2lkQW5kTWluaU9iamVjdCwKLSNl
bHNlCiAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfZ2VuZXJpYywKLSNlbmRpZgogICAg
ICAgICAgICAgR19UWVBFX05PTkUsIC8vIFJldHVybiB0eXBlCiAgICAgICAgICAgICAxLCAvLyBP
bmx5IG9uZSBwYXJhbWV0ZXIKICAgICAgICAgICAgIEdTVF9UWVBFX0JVRkZFUik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAyN2RlNTdmZDYx
ZDBlOWI5NGVmNDUxYTdhZDNlNjBlNGY3NzJiYWRmLi5lMzY1MmMzNTBlM2RmYTNhZTFhNWJlNWU2
NWNjYWZlZjE1MGVjMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lci5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0j
aWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0sp
ICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0Uo
R1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNpbmNsdWRlICJWaWRlb1RyYWNr
UHJpdmF0ZUdTdHJlYW1lci5oIgogCkBAIC01OCw0ICs1OCw0IEBAIHZvaWQgVmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXI6OnNldFNlbGVjdGVkKGJvb2wgc2VsZWN0ZWQpCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikg
JiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2Vu
ZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RS
QUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBh
ZWYxZjU4ZWQ1MjU4NzQ2MjFiN2ExYWQyNzA1MWZkMTAzMTRkNTk4Li5lZTdhMDM4ZDBjMGRiZmIy
YjM1ZmVlOWNlYTc1ZWZlZWYxMTY3MzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXIuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBWaWRlb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lcl9oCiAjZGVmaW5lIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyX2gKIAot
I2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNL
KSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNF
KEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiR1JlZlB0ckdT
dHJlYW1lci5oIgogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaCIKQEAgLTU5
LDYgKzU5LDYgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYg
Ly8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0sp
ICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNlbmRpZiAvLyBWaWRl
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdE1lZGlhU291
cmNlR1N0cmVhbWVyLmNwcAppbmRleCAwOGFjZGNhNDQ1MzA0NGYzY2FjNGRhMWFkZmNjNTE3Yjhj
NjAxM2FlLi44ZDVmNmM5Njg1NmEyNTIwMzI2OGQwNzk3YmU4MDllMzQ5MjBkZTVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0TWVk
aWFTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTIzLDcgKzIz
LDggQEAKIAogI2lmIEVOQUJMRShWSURFTykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNF
KEdTVFJFQU1FUikKIAotI2luY2x1ZGUgIkdTdHJlYW1lclZlcnNpb25pbmcuaCIKKyNpbmNsdWRl
ICJHUmVmUHRyR1N0cmVhbWVyLmgiCisjaW5jbHVkZSAiR1N0cmVhbWVyVXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5j
bHVkZSA8Z3N0L2FwcC9nc3RhcHBzcmMuaD4KQEAgLTEyMiw3ICsxMjMsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfbWVkaWFfc3JjX2NsYXNzX2luaXQoV2ViS2l0TWVkaWFTcmNDbGFzcyoga2xhc3Mp
CiAKICAgICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlKGVrbGFzcywgZ3N0X3N0
YXRpY19wYWRfdGVtcGxhdGVfZ2V0KCZzcmNUZW1wbGF0ZSkpOwogCi0gICAgc2V0R3N0RWxlbWVu
dENsYXNzTWV0YWRhdGEoZWtsYXNzLCAiV2ViS2l0IE1lZGlhIHNvdXJjZSBlbGVtZW50IiwgIlNv
dXJjZSIsICJIYW5kbGVzIEJsb2IgdXJpcyIsICJTdGVwaGFuZSBKYWRhdWQgPHNqYWRhdWRAc2lp
LmZyPiIpOworICAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9tZXRhZGF0YShla2xhc3MsICJXZWJL
aXQgTWVkaWEgc291cmNlIGVsZW1lbnQiLCAiU291cmNlIiwgIkhhbmRsZXMgQmxvYiB1cmlzIiwg
IlN0ZXBoYW5lIEphZGF1ZCA8c2phZGF1ZEBzaWkuZnI+Iik7CiAKICAgICAvKiBBbGxvd3Mgc2V0
dGluZyB0aGUgdXJpIHVzaW5nIHRoZSAnbG9jYXRpb24nIHByb3BlcnR5LCB3aGljaCBpcyB1c2Vk
CiAgICAgICogZm9yIGV4YW1wbGUgYnkgZ3N0X2VsZW1lbnRfbWFrZV9mcm9tX3VyaSgpICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDNmOWEwNzVj
NjVmMjYzNzNjODQ5ODZlNmRhMTQ4ZjI1NDMwZWMzMzguLmZmMTg4OWE1ZTczNzViZjExY2YwMTIz
N2JlMzNlZTllMjA3MzU5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJHUmVm
UHRyR1N0cmVhbWVyLmgiCi0jaW5jbHVkZSAiR1N0cmVhbWVyVmVyc2lvbmluZy5oIgorI2luY2x1
ZGUgIkdTdHJlYW1lclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgpAQCAt
MTM4LDEwICsxMzgsNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlNyY1ByaXZhdGUgewogICAgIGdjaGFy
KiBpcmFkaW9HZW5yZTsKICAgICBnY2hhciogaXJhZGlvVXJsOwogICAgIGdjaGFyKiBpcmFkaW9U
aXRsZTsKLQotICAgIC8vIFRSVUUgaWYgYXBwc3JjJ3MgdmVyc2lvbiBpcyA+PSAwLjEwLjI3LCBz
ZWUKLSAgICAvLyBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA5
NDIzCi0gICAgZ2Jvb2xlYW4gaGF2ZUFwcFNyYzI3OwogfTsKIAogZW51bSB7CkBAIC0xNzAsOSAr
MTY2LDYgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjR2V0UHJvcGVydHkoR09iamVjdCosIGd1
aW50IHByb3BlcnR5SUQsIEdWYWx1ZSosIEdQYXJhbVMKIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJl
dHVybiB3ZWJLaXRXZWJTcmNDaGFuZ2VTdGF0ZShHc3RFbGVtZW50KiwgR3N0U3RhdGVDaGFuZ2Up
OwogCiBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjUXVlcnlXaXRoUGFyZW50KEdzdFBhZCos
IEdzdE9iamVjdCosIEdzdFF1ZXJ5Kik7Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi1zdGF0
aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjUXVlcnkoR3N0UGFkKiwgR3N0UXVlcnkqKTsKLSNlbmRp
ZgogCiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNOZWVkRGF0YUNiKEdzdEFwcFNyYyosIGd1aW50
IGxlbmd0aCwgZ3BvaW50ZXIgdXNlckRhdGEpOwogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjRW5v
dWdoRGF0YUNiKEdzdEFwcFNyYyosIGdwb2ludGVyIHVzZXJEYXRhKTsKQEAgLTIwNCw3ICsxOTcs
NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19jbGFzc19pbml0KFdlYktpdFdlYlNyY0Ns
YXNzKiBrbGFzcykKIAogICAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUoZWts
YXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3N0X3N0YXRpY19w
YWRfdGVtcGxhdGVfZ2V0KCZzcmNUZW1wbGF0ZSkpOwotICAgIHNldEdzdEVsZW1lbnRDbGFzc01l
dGFkYXRhKGVrbGFzcywgIldlYktpdCBXZWIgc291cmNlIGVsZW1lbnQiLCAiU291cmNlIiwgIkhh
bmRsZXMgSFRUUC9IVFRQUyB1cmlzIiwKKyAgICBnc3RfZWxlbWVudF9jbGFzc19zZXRfbWV0YWRh
dGEoZWtsYXNzLCAiV2ViS2l0IFdlYiBzb3VyY2UgZWxlbWVudCIsICJTb3VyY2UiLCAiSGFuZGxl
cyBIVFRQL0hUVFBTIHVyaXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZWJh
c3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4iKTsKIAogICAg
IC8vIGljZWNhc3Qgc3R1ZmYKQEAgLTI3NSw5ICsyNjgsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3NyY19pbml0KFdlYktpdFdlYlNyYyogc3JjKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgR3N0RWxlbWVudEZhY3RvcnkqIGZhY3RvcnkgPSBHU1RfRUxFTUVOVF9GQUNUT1JZKEdT
VF9FTEVNRU5UX0dFVF9DTEFTUyhwcml2LT5hcHBzcmMpLT5lbGVtZW50ZmFjdG9yeSk7Ci0gICAg
cHJpdi0+aGF2ZUFwcFNyYzI3ID0gZ3N0X3BsdWdpbl9mZWF0dXJlX2NoZWNrX3ZlcnNpb24oR1NU
X1BMVUdJTl9GRUFUVVJFKGZhY3RvcnkpLCAwLCAxMCwgMjcpOwotCiAgICAgZ3N0X2Jpbl9hZGQo
R1NUX0JJTihzcmMpLCBHU1RfRUxFTUVOVChwcml2LT5hcHBzcmMpKTsKIAogCkBAIC0yODYsMTIg
KzI3Niw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX2luaXQoV2ViS2l0V2ViU3JjKiBz
cmMpCiAKICAgICBnc3RfZWxlbWVudF9hZGRfcGFkKEdTVF9FTEVNRU5UKHNyYyksIHByaXYtPnNy
Y3BhZCk7CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIEdTVF9PQkpFQ1RfRkxBR19T
RVQocHJpdi0+c3JjcGFkLCBHU1RfUEFEX0ZMQUdfTkVFRF9QQVJFTlQpOwogICAgIGdzdF9wYWRf
c2V0X3F1ZXJ5X2Z1bmN0aW9uKHByaXYtPnNyY3BhZCwgd2ViS2l0V2ViU3JjUXVlcnlXaXRoUGFy
ZW50KTsKLSNlbHNlCi0gICAgZ3N0X3BhZF9zZXRfcXVlcnlfZnVuY3Rpb24ocHJpdi0+c3JjcGFk
LCB3ZWJLaXRXZWJTcmNRdWVyeSk7Ci0jZW5kaWYKIAogICAgIGdzdF9hcHBfc3JjX3NldF9jYWxs
YmFja3MocHJpdi0+YXBwc3JjLCAmYXBwc3JjQ2FsbGJhY2tzLCBzcmMsIDApOwogICAgIGdzdF9h
cHBfc3JjX3NldF9lbWl0X3NpZ25hbHMocHJpdi0+YXBwc3JjLCBGQUxTRSk7CkBAIC0zMTQsOCAr
MzAwLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfaW5pdChXZWJLaXRXZWJTcmMqIHNy
YykKICAgICAvLyBsaWtlbHkgdGhhdCBsaWJzb3VwIGFscmVhZHkgcHJvdmlkZXMgbmV3IGRhdGEg
YmVmb3JlCiAgICAgLy8gdGhlIHF1ZXVlIGlzIHJlYWxseSBlbXB0eS4KICAgICAvLyBUaGlzIG1p
Z2h0IG5lZWQgdHdlYWtpbmcgZm9yIHBvcnRzIG5vdCB1c2luZyBsaWJzb3VwLgotICAgIGlmIChw
cml2LT5oYXZlQXBwU3JjMjcpCi0gICAgICAgIGdfb2JqZWN0X3NldChwcml2LT5hcHBzcmMsICJt
aW4tcGVyY2VudCIsIDIwLCBOVUxMKTsKKyAgICBnX29iamVjdF9zZXQocHJpdi0+YXBwc3JjLCAi
bWluLXBlcmNlbnQiLCAyMCwgTlVMTCk7CiAKICAgICBnc3RfYXBwX3NyY19zZXRfY2Fwcyhwcml2
LT5hcHBzcmMsIDApOwogICAgIGdzdF9hcHBfc3JjX3NldF9zaXplKHByaXYtPmFwcHNyYywgLTEp
OwpAQCAtMzUzLDExICszMzgsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTZXRQcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgY29uc3QgR1ZhbHVlKgogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBQUk9QX0xPQ0FUSU9OOgotI2lmZGVmIEdTVF9BUElfVkVS
U0lPTl8xCiAgICAgICAgIGdzdF91cmlfaGFuZGxlcl9zZXRfdXJpKHJlaW50ZXJwcmV0X2Nhc3Q8
R3N0VVJJSGFuZGxlcio+KHNyYyksIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSksIDApOwotI2Vs
c2UKLSAgICAgICAgZ3N0X3VyaV9oYW5kbGVyX3NldF91cmkocmVpbnRlcnByZXRfY2FzdDxHc3RV
UklIYW5kbGVyKj4oc3JjKSwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7Ci0jZW5kaWYKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElE
X1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwc3BlYyk7CkBAIC00MzYsOSArNDE3LDcgQEAg
c3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1N0b3AoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAg
fQogCiAgICAgaWYgKHByaXYtPmJ1ZmZlcikgewotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAg
ICAgICAgIHVubWFwR3N0QnVmZmVyKHByaXYtPmJ1ZmZlci5nZXQoKSk7Ci0jZW5kaWYKICAgICAg
ICAgcHJpdi0+YnVmZmVyLmNsZWFyKCk7CiAgICAgfQogCkBAIC02MzgsMTQgKzYxNyw2IEBAIHN0
YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNRdWVyeVdpdGhQYXJlbnQoR3N0UGFkKiBwYWQsIEdz
dE9iamVjdCogcGFyZW50LCBHc3RRCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotI2lmbmRlZiBH
U1RfQVBJX1ZFUlNJT05fMQotc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1F1ZXJ5KEdzdFBh
ZCogcGFkLCBHc3RRdWVyeSogcXVlcnkpCi17Ci0gICAgR1JlZlB0cjxHc3RFbGVtZW50PiBzcmMg
PSBhZG9wdEdSZWYoZ3N0X3BhZF9nZXRfcGFyZW50X2VsZW1lbnQocGFkKSk7Ci0gICAgcmV0dXJu
IHdlYktpdFdlYlNyY1F1ZXJ5V2l0aFBhcmVudChwYWQsIEdTVF9PQkpFQ1Qoc3JjLmdldCgpKSwg
cXVlcnkpOwotfQotI2VuZGlmCi0KIHN0YXRpYyBib29sIHVybEhhc1N1cHBvcnRlZFByb3RvY29s
KGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiB1cmwuaXNWYWxpZCgpICYmICh1cmwucHJv
dG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHVybC5wcm90b2NvbElzKCJibG9iIikpOwpAQCAtNjUz
LDcgKzYyNCw2IEBAIHN0YXRpYyBib29sIHVybEhhc1N1cHBvcnRlZFByb3RvY29sKGNvbnN0IFVS
TCYgdXJsKQogCiAvLyB1cmkgaGFuZGxlciBpbnRlcmZhY2UKIAotI2lmZGVmIEdTVF9BUElfVkVS
U0lPTl8xCiBzdGF0aWMgR3N0VVJJVHlwZSB3ZWJLaXRXZWJTcmNVcmlHZXRUeXBlKEdUeXBlKQog
ewogICAgIHJldHVybiBHU1RfVVJJX1NSQzsKQEAgLTcwMyw1NyArNjczLDYgQEAgc3RhdGljIGdi
b29sZWFuIHdlYktpdFdlYlNyY1NldFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyLCBjb25zdCBn
Y2hhciogdXJpLCBHRXIKICAgICByZXR1cm4gVFJVRTsKIH0KIAotI2Vsc2UKLXN0YXRpYyBHc3RV
UklUeXBlIHdlYktpdFdlYlNyY1VyaUdldFR5cGUodm9pZCkKLXsKLSAgICByZXR1cm4gR1NUX1VS
SV9TUkM7Ci19Ci0KLXN0YXRpYyBnY2hhcioqIHdlYktpdFdlYlNyY0dldFByb3RvY29scyh2b2lk
KQotewotICAgIHN0YXRpYyBnY2hhciogcHJvdG9jb2xzW10gPSB7KGdjaGFyKikgImh0dHAiLCAo
Z2NoYXIqKSAiaHR0cHMiLCAoZ2NoYXIqKSAiYmxvYiIsIDAgfTsKLSAgICByZXR1cm4gcHJvdG9j
b2xzOwotfQotCi1zdGF0aWMgY29uc3QgZ2NoYXIqIHdlYktpdFdlYlNyY0dldFVyaShHc3RVUklI
YW5kbGVyKiBoYW5kbGVyKQotewotICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9T
UkMoaGFuZGxlcik7Ci0gICAgZ2NoYXIqIHJldDsKLQotICAgIEdNdXRleExvY2tlciBsb2NrZXIo
R1NUX09CSkVDVF9HRVRfTE9DSyhzcmMpKTsKLSAgICByZXQgPSBnX3N0cmR1cChzcmMtPnByaXYt
PnVyaSk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNy
Y1NldFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyLCBjb25zdCBnY2hhciogdXJpKQotewotICAg
IFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMoaGFuZGxlcik7Ci0gICAgV2ViS2l0
V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKLQotICAgIGlmIChHU1RfU1RBVEUoc3Jj
KSA+PSBHU1RfU1RBVEVfUEFVU0VEKSB7Ci0gICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAi
VVJJIGNhbiBvbmx5IGJlIHNldCBpbiBzdGF0ZXMgPCBQQVVTRUQiKTsKLSAgICAgICAgcmV0dXJu
IEZBTFNFOwotICAgIH0KLQotICAgIEdNdXRleExvY2tlciBsb2NrZXIoR1NUX09CSkVDVF9HRVRf
TE9DSyhzcmMpKTsKLQotICAgIGdfZnJlZShwcml2LT51cmkpOwotICAgIHByaXYtPnVyaSA9IDA7
Ci0KLSAgICBpZiAoIXVyaSkKLSAgICAgICAgcmV0dXJuIFRSVUU7Ci0KLSAgICBVUkwgdXJsKFVS
TCgpLCB1cmkpOwotICAgIGlmICghdXJsSGFzU3VwcG9ydGVkUHJvdG9jb2wodXJsKSkgewotICAg
ICAgICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIkludmFsaWQgVVJJICclcyciLCB1cmkpOwotICAg
ICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotCi0gICAgcHJpdi0+dXJpID0gZ19zdHJkdXAodXJs
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIHJldHVybiBUUlVFOwotfQotI2VuZGlmCi0K
IHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1VyaUhhbmRsZXJJbml0KGdwb2ludGVyIGdJZmFjZSwg
Z3BvaW50ZXIpCiB7CiAgICAgR3N0VVJJSGFuZGxlckludGVyZmFjZSogaWZhY2UgPSAoR3N0VVJJ
SGFuZGxlckludGVyZmFjZSAqKSBnSWZhY2U7CkBAIC05MDEsMTUgKzgyMCwxMyBAQCBjaGFyKiBT
dHJlYW1pbmdDbGllbnQ6OmNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90IHJlcXVlc3RlZFNpemUsIHNp
emVfdCYgYWN0dWFsU2l6ZQogCiAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RfYnVmZmVyX25l
d19hbmRfYWxsb2MocmVxdWVzdGVkU2l6ZSk7CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQog
ICAgIG1hcEdzdEJ1ZmZlcihidWZmZXIpOwotI2VuZGlmCiAKICAgICBHTXV0ZXhMb2NrZXIgbG9j
a2VyKEdTVF9PQkpFQ1RfR0VUX0xPQ0soc3JjKSk7CiAgICAgcHJpdi0+YnVmZmVyID0gYWRvcHRH
UmVmKGJ1ZmZlcik7CiAgICAgbG9ja2VyLnVubG9jaygpOwogCi0gICAgYWN0dWFsU2l6ZSA9IGdl
dEdzdEJ1ZmZlclNpemUoYnVmZmVyKTsKKyAgICBhY3R1YWxTaXplID0gZ3N0X2J1ZmZlcl9nZXRf
c2l6ZShidWZmZXIpOwogICAgIHJldHVybiBnZXRHc3RCdWZmZXJEYXRhUG9pbnRlcihidWZmZXIp
OwogfQogCkBAIC05MzgsMTEgKzg1NSw3IEBAIHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVS
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIHBy
aXYtPnNpemUgPSBsZW5ndGggPj0gMCA/IGxlbmd0aCA6IDA7CiAgICAgcHJpdi0+c2Vla2FibGUg
PSBsZW5ndGggPiAwICYmIGdfYXNjaWlfc3RyY2FzZWNtcCgibm9uZSIsIHJlc3BvbnNlLmh0dHBI
ZWFkZXJGaWVsZCgiQWNjZXB0LVJhbmdlcyIpLnV0ZjgoKS5kYXRhKCkpOwogCi0jaWZkZWYgR1NU
X0FQSV9WRVJTSU9OXzEKICAgICBHc3RUYWdMaXN0KiB0YWdzID0gZ3N0X3RhZ19saXN0X25ld19l
bXB0eSgpOwotI2Vsc2UKLSAgICBHc3RUYWdMaXN0KiB0YWdzID0gZ3N0X3RhZ19saXN0X25ldygp
OwotI2VuZGlmCiAgICAgU3RyaW5nIHZhbHVlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJp
Y3ktbmFtZSIpOwogICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGdfZnJlZShw
cml2LT5pcmFkaW9OYW1lKTsKQEAgLTk3NywxNSArODkwLDYgQEAgdm9pZCBTdHJlYW1pbmdDbGll
bnQ6OmhhbmRsZVJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiAgICAgLy8gbm90aWZ5IHNpemUvZHVyYXRpb24KICAgICBpZiAobGVuZ3RoID4gMCkgewog
ICAgICAgICBnc3RfYXBwX3NyY19zZXRfc2l6ZShwcml2LT5hcHBzcmMsIGxlbmd0aCk7Ci0KLSNp
Zm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICAgICAgaWYgKCFwcml2LT5oYXZlQXBwU3JjMjcp
IHsKLSAgICAgICAgICAgIGdzdF9zZWdtZW50X3NldF9kdXJhdGlvbigmR1NUX0JBU0VfU1JDKHBy
aXYtPmFwcHNyYyktPnNlZ21lbnQsIEdTVF9GT1JNQVRfQllURVMsIGxlbmd0aCk7Ci0gICAgICAg
ICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UoR1NUX0VMRU1FTlQocHJpdi0+YXBwc3JjKSwK
LSAgICAgICAgICAgICAgICBnc3RfbWVzc2FnZV9uZXdfZHVyYXRpb24oR1NUX09CSkVDVChwcml2
LT5hcHBzcmMpLAotICAgICAgICAgICAgICAgICAgICBHU1RfRk9STUFUX0JZVEVTLCBsZW5ndGgp
KTsKLSAgICAgICAgfQotI2VuZGlmCiAgICAgfSBlbHNlCiAgICAgICAgIGdzdF9hcHBfc3JjX3Nl
dF9zaXplKHByaXYtPmFwcHNyYywgLTEpOwogCkBAIC0xMDA1LDEzICs5MDksOSBAQCB2b2lkIFN0
cmVhbWluZ0NsaWVudDo6aGFuZGxlUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIAogICAgIC8vIG5vdGlmeSB0YWdzCiAgICAgaWYgKGdzdF90YWdfbGlz
dF9pc19lbXB0eSh0YWdzKSkKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgICAgICBnc3Rf
dGFnX2xpc3RfdW5yZWYodGFncyk7Ci0jZWxzZQotICAgICAgICBnc3RfdGFnX2xpc3RfZnJlZSh0
YWdzKTsKLSNlbmRpZgogICAgIGVsc2UKLSAgICAgICAgbm90aWZ5R3N0VGFnc09uUGFkKEdTVF9F
TEVNRU5UKHNyYyksIHByaXYtPnNyY3BhZCwgdGFncyk7CisgICAgICAgIGdzdF9wYWRfcHVzaF9l
dmVudChwcml2LT5zcmNwYWQsIGdzdF9ldmVudF9uZXdfdGFnKHRhZ3MpKTsKIH0KIAogdm9pZCBT
dHJlYW1pbmdDbGllbnQ6OmhhbmRsZURhdGFSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKQpAQCAtMTAyMSwxNCArOTIxLDEyIEBAIHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpoYW5k
bGVEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIAogICAgIEdNdXRl
eExvY2tlciBsb2NrZXIoR1NUX09CSkVDVF9HRVRfTE9DSyhzcmMpKTsKIAotICAgIEdTVF9MT0df
T0JKRUNUKHNyYywgIkhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIHByaXYtPmJ1ZmZlciA/IGdldEdz
dEJ1ZmZlclNpemUocHJpdi0+YnVmZmVyLmdldCgpKSA6IGxlbmd0aCk7CisgICAgR1NUX0xPR19P
QkpFQ1Qoc3JjLCAiSGF2ZSAlbGQgYnl0ZXMgb2YgZGF0YSIsIHByaXYtPmJ1ZmZlciA/IGdzdF9i
dWZmZXJfZ2V0X3NpemUocHJpdi0+YnVmZmVyLmdldCgpKSA6IGxlbmd0aCk7CiAKICAgICBBU1NF
UlQoIXByaXYtPmJ1ZmZlciB8fCBkYXRhID09IGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKHByaXYt
PmJ1ZmZlci5nZXQoKSkpOwogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBpZiAocHJp
di0+YnVmZmVyKQogICAgICAgICB1bm1hcEdzdEJ1ZmZlcihwcml2LT5idWZmZXIuZ2V0KCkpOwot
I2VuZGlmCiAKICAgICBpZiAocHJpdi0+c2Vla0lEKSB7CiAgICAgICAgIEdTVF9ERUJVR19PQkpF
Q1Qoc3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdub3JpbmcgZGF0YSIpOwpAQCAtMTA0MSw3ICs5
MzksNyBAQCB2b2lkIFN0cmVhbWluZ0NsaWVudDo6aGFuZGxlRGF0YVJlY2VpdmVkKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgpCiAgICAgaWYgKCFwcml2LT5idWZmZXIpCiAgICAgICAgIHBy
aXYtPmJ1ZmZlciA9IGFkb3B0R1JlZihjcmVhdGVHc3RCdWZmZXJGb3JEYXRhKGRhdGEsIGxlbmd0
aCkpOwogICAgIGVsc2UKLSAgICAgICAgc2V0R3N0QnVmZmVyU2l6ZShwcml2LT5idWZmZXIuZ2V0
KCksIGxlbmd0aCk7CisgICAgICAgIGdzdF9idWZmZXJfc2V0X3NpemUocHJpdi0+YnVmZmVyLmdl
dCgpLCBzdGF0aWNfY2FzdDxnc3NpemU+KGxlbmd0aCkpOwogCiAgICAgR1NUX0JVRkZFUl9PRkZT
RVQocHJpdi0+YnVmZmVyLmdldCgpKSA9IHByaXYtPm9mZnNldDsKICAgICBpZiAocHJpdi0+cmVx
dWVzdGVkT2Zmc2V0ID09IHByaXYtPm9mZnNldCkKQEAgLTEwNTgsMTEgKzk1Niw3IEBAIHZvaWQg
U3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKICAgICBsb2NrZXIudW5sb2NrKCk7CiAKICAgICBHc3RGbG93UmV0dXJuIHJldCA9
IGdzdF9hcHBfc3JjX3B1c2hfYnVmZmVyKHByaXYtPmFwcHNyYywgcHJpdi0+YnVmZmVyLmxlYWtS
ZWYoKSk7Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBpZiAocmV0ICE9IEdTVF9GTE9X
X09LICYmIHJldCAhPSBHU1RfRkxPV19FT1MpCi0jZWxzZQotICAgIGlmIChyZXQgIT0gR1NUX0ZM
T1dfT0sgJiYgcmV0ICE9IEdTVF9GTE9XX1VORVhQRUNURUQpCi0jZW5kaWYKICAgICAgICAgR1NU
X0VMRU1FTlRfRVJST1Ioc3JjLCBDT1JFLCBGQUlMRUQsICgwKSwgKDApKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1FZmwuY21ha2UKaW5kZXggNjUyOWY3N2E4ZTk3OWUyNDZiMTc3OTE5NGEzZTM2OWU5ZTIz
ZTczMy4uNDEwYjVhZGQ2ZTc2OTVjMDA5YWQzMzIxNzlmYTdlNDk5ZTU0OWE3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtRWZsLmNtYWtlCkBAIC0xMTMsNyArMTEzLDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NP
VVJDRVMKICAgICBlZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAogICAgIGVm
bC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKICAgICBlZmwvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbC5jcHAKLSAgICBlZmwvV2ViQ29yZVN1
cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckVmbC5jcHAKICAgICBlZmwvV2ViQ29yZVN1
cHBvcnQvSWNvbkRhdGFiYXNlQ2xpZW50RWZsLmNwcAogICAgIGVmbC9XZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRFZmwuY3BwCiAgICAgZWZsL1dlYkNvcmVTdXBwb3J0L05hdmlnYXRvckNv
bnRlbnRVdGlsc0NsaWVudEVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJFZmwuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckVmbC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYzI1NTJlMDYwNDlkMWU3MmUxNDQ3NDA2
YmViYzgwOTdlMTZmMWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMgKzAsMCBAQAotLyoKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAotICogIENvcHlyaWdodCAoQykgMjAxMCBTYW1z
dW5nIEVsZWN0cm9uaWNzCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVO
QUJMRShWSURFTykgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCi0KLSNpbmNsdWRlICJG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyRWZsLmgiCi0KLSNpbmNsdWRlICJNZWRpYVBsYXllci5o
IgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpCi0gICAgOiBt
X2h1ZFRpbWVvdXRJZCgwKQotICAgICwgbV9wcm9ncmVzc0JhclVwZGF0ZUlkKDApCi0gICAgLCBt
X3NlZWtMb2NrKGZhbHNlKQotICAgICwgbV93aW5kb3coMCkKLSAgICAsIG1faHVkV2luZG93KDAp
Ci17Ci19Ci0KLUZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6On5GdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyKCkKLXsKLSAgICBleGl0RnVsbHNjcmVlbigpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OnNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVs
ZW1lbnQpCi17Ci0gICAgaWYgKG1lZGlhRWxlbWVudCA9PSBtX21lZGlhRWxlbWVudCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9tZWRpYUVsZW1lbnQgPSBtZWRpYUVsZW1lbnQ7Ci0gICAgaWYg
KCFtX21lZGlhRWxlbWVudCkgewotICAgICAgICAvLyBDYW4ndCBkbyBmdWxsLXNjcmVlbiwganVz
dCBnZXQgb3V0Ci0gICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7Ci0gICAgfQotfQotCi12b2lkIEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNob3dIdWQoYm9vbCAvKmF1dG9IaWRlKi8pCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
OjpoaWRlSHVkKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsbHNjcmVlbigpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp1cGRhdGVIdWRQb3Np
dGlvbigpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyOjpleGl0T25Vc2VyUmVxdWVzdCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpleGl0RnVsbHNjcmVlbigp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9vbCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjpjYW5QbGF5KCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwbGF5KCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6OnBhdXNlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBsYXlTdGF0ZUNoYW5nZWQoKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dG9nZ2xlUGxh
eSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotZmxvYXQgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6dm9sdW1lKCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiAwOwotfQotCi1ib29sIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om11dGVkKCkg
Y29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
dm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRWb2x1bWUoZmxvYXQgLyp2b2x1bWUq
LykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OnZvbHVtZUNoYW5nZWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6bXV0ZUNoYW5nZWQoKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLWZsb2F0IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmN1
cnJlbnRUaW1lKCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAw
OwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKGZs
b2F0IC8qdmFsdWUqLykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1mbG9hdCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpkdXJhdGlvbigpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotZmxvYXQgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6cGVyY2VudExvYWRlZCgpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gMDsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpiZWdpblNl
ZWsoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6ZG9TZWVrKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVuZFNlZWsoKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLWJvb2wgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dXBkYXRlSHVkUHJv
Z3Jlc3NCYXIoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmNyZWF0ZUh1ZCgpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0VmbC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IDhl
NTA5Y2FlOGI0NTg0ZjQ2YmMwNjUxNTUzM2ZjODRiNzViMTdkMGUuLjhhNTRlNGQxZGZlNjY3MDZh
ZjY1NGFlN2NmZWY5ODVkZmFhMzg4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25z
RWZsLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCkBAIC0xNTgsNyAr
MTU4LDcgQEAgZW5kaWYgKCkKIGlmIChFTkFCTEVfVklERU8gT1IgRU5BQkxFX1dFQl9BVURJTykK
ICAgICBzZXQoR1NUUkVBTUVSX0NPTVBPTkVOVFMgYXBwIHBidXRpbHMpCiAgICAgc2V0KFdURl9V
U0VfR1NUUkVBTUVSIDEpCi0gICAgYWRkX2RlZmluaXRpb25zKC1EV1RGX1VTRV9HU1RSRUFNRVI9
MSAtREdTVF9BUElfVkVSU0lPTl8xPTEpCisgICAgYWRkX2RlZmluaXRpb25zKC1EV1RGX1VTRV9H
U1RSRUFNRVI9MSkKIAogICAgIGlmIChFTkFCTEVfVklERU8pCiAgICAgICAgIGxpc3QoQVBQRU5E
IEdTVFJFQU1FUl9DT01QT05FTlRTIHZpZGVvKQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hh
bmdlTG9nCmluZGV4IGZiOWNjNDMzZjFiYzEwMWI0MDRmMjE0ZjkyN2RmYjdhOWU3NGQ1NjYuLjAw
NjRhZjk5Y2ZmNWViMmUxNTM1YzQ2YjZlNjk3Nzg1MWM2ZDhkZmIgMTAwNjQ0Ci0tLSBhL0NoYW5n
ZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMS0yMiAgWGFiaWVy
IFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3Ry
ZWFtZXJdIFJlbW92ZSAwLjEwIGNvZGVwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOiBSZW1v
dmVkIEdTVF9BUElfVkVSU0lPTl8xCisgICAgICAgIGRlZmluaXRpb24uCisKIDIwMTMtMTEtMDYg
IEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0g
Q2hhbmdlIHJlcXVpcmVkIHZlcnNpb24gb2YgQVRLIHRvIDIuMTAuMAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217692</attachid>
            <date>2013-11-22 09:18:34 -0800</date>
            <delta_ts>2013-11-25 09:26:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124534-20131122181812.patch</filename>
            <type>text/plain</type>
            <size>116193</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5Njg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMxNDVjNGJkZGQ4YzdlZmVlYjYzMGZi
MGQ5NGYyNzQzMzFjNDY5NDguLjRiZjhiNjkyNDU5YmNkYzI0MDk5NWU3MjUwNmJjNTRkN2U5YTM0
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTEtMjIgIFhhYmllciBSb2RyaWd1ZXogQ2Fs
dmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBSZW1vdmUg
MC4xMCBjb2RlcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI0NTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm0uaDogUmVtb3ZlZCBtYWNybyBmb3IgR1N0cmVhbWVyIDEuMCBh
cyBpdCBpcyB0aGUKKyAgICAgICAgb25seSBjb2RlcGF0aCBub3cuCisKIDIwMTMtMTEtMjEgIFBl
dGVyIE1vbG5hciAgPHBtb2xuYXIudS1zemVnZWRAcGFydG5lci5zYW1zdW5nLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgRU5BQkxFX1dPUktFUlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjZTY3MTUxMDg4NTY2NTNk
NGY0NDQ1NGEzYTQwNmIyNWI3NjA2MjllLi41ODUxNTE0NGM0YmQ4ZjRhNTdlMjVhMjMwMmVlZGI5
MDBhYzg4YzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY3IEBACisyMDEzLTExLTIyICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gUmVtb3ZlIDAuMTAgY29kZXBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFsbCBHU3RyZWFtZXIgcG9ydHMgYXJlIHVzaW5nIDEuMCBu
b3cgc28gd2UgcmVtb3ZlIHRoZSAwLjEwCisgICAgICAgIGNvZGVwYXRoLgorCisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAg
ICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmls
dGVyczogUmVtb3ZlZAorICAgICAgICBHU3RyZWFtZXJWZXJzaW9uaW5nLgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKG9uR1N0cmVhbWVyV2F2cGFyc2VQYWRBZGRlZENhbGxiYWNrKTogUmVtb3ZlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIpOgorICAgICAgICBSZXBsYWNlZCB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyBh
bmQgcmVtb3ZlZCAwLjEwIGNvZGVwYXRoLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lcjo6fkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIpOgorICAgICAgICBSZXBs
YWNlZCB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvcHlHc3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6
b25BcHBzaW5rUHVsbFJlcXVpcmVkQ2FsbGJhY2spOiBSZW1vdmVkIDAuMTAgY29kZXBhdGguCisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6On5BdWRpb0ZpbGVSZWFkZXIpOiBSZXBs
YWNlZAorICAgICAgICB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyBhbmQgcmVtb3ZlZCAwLjEwIGNv
ZGVwYXRoLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVTYW1wbGUp
OiBMZWZ0IGFzIG9ubHkgY29kZXBhdGguCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFk
ZXI6OmhhbmRsZUJ1ZmZlcik6IFJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVS
ZWFkZXI6OmhhbmRsZU5ld0RlaW50ZXJsZWF2ZVBhZCk6IFJlbW92ZWQgMC4xMAorICAgICAgICBj
b2RlcGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6cGx1Z0RlaW50ZXJs
ZWF2ZSk6IFJlcGxhY2VkCisgICAgICAgIGdldEdzdEF1ZGlvQ2Fwcy4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlQXVkaW9Gb3JCdXNDcmVhdGlvbik6IFJlcGxhY2Vk
CisgICAgICAgIHdlYmtpdEdzdFBpcGVsaW5lR2V0QnVzLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMpOiBSZW1vdmVkIDAuMTAgY29kZXBhdGguCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVy
LmNwcDoKKyAgICAgICAgKGdldEdTdHJlYW1lck1vbm9BdWRpb0NhcHMpOgorICAgICAgICAod2Vi
S2l0V2ViQXVkaW9HU3RyZWFtZXJDaGFubmVsUG9zaXRpb24pOiBSZW1vdmVkIDAuMTAgY29kZXBh
dGguCisgICAgICAgICh3ZWJraXRfd2ViX2F1ZGlvX3NyY19jbGFzc19pbml0KTogUmVwbGFjZWQK
KyAgICAgICAgc2V0R3N0RWxlbWVudENsYXNzTWV0YWRhdGEuCisgICAgICAgICh3ZWJraXRfd2Vi
X2F1ZGlvX3NyY19pbml0KToKKyAgICAgICAgKHdlYktpdFdlYkF1ZGlvU3JjQ29uc3RydWN0ZWQp
OgorICAgICAgICAod2ViS2l0V2ViQXVkaW9TcmNGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJLaXRX
ZWJBdWRpb1NyY0xvb3ApOiBSZW1vdmVkIDAuMTAgY29kZXBhdGguCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuaDoKKyAgICAgICAgUmVtb3ZlZCBjaGVja3MgZm9yIDEuMCBhcyBpdCBpcyB0aGUgb25s
eSBjb2RlcGF0aCBub3cuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dS
ZWZQdHJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV1RGOjpHc3RFbGVtZW50KToKKyAgICAgICAg
KFdURjo6R3N0UGFkKToKKyAgICAgICAgKFdURjo6R3N0UGFkVGVtcGxhdGUpOgorICAgICAgICAo
V1RGOjpHc3RUYXNrKToKKyAgICAgICAgKFdURjo6R3N0QnVzKToKKyAgICAgICAgKFdURjo6R3N0
RWxlbWVudEZhY3RvcnkpOgorICAgICAgICAoV1RGOjphZG9wdEdSZWYpOiBSZXBsYWNlZCBnc3RP
YmplY3RJc0Zsb2F0aW5nLgorICAgICAgICAoV1RGOjpyZWZHUmVmKTogUmVwbGFjZWQgd2Via2l0
R3N0T2JqZWN0UmVmU2luay4KKyAgICAgICAgKFdURjo6R3N0VGFnTGlzdCk6CisgICAgICAgIChX
VEY6OkdzdFNhbXBsZSk6IFJlbW92ZWQgY2hlY2tzIGZvciAxLjAgYXMgaXQgaXMgdGhlIG9ubHkK
KyAgICAgICAgY29kZXBhdGggbm93LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HUmVmUHRyR1N0cmVhbWVyLmg6IFJlbW92ZWQgY2hlY2tzCisgICAgICAgIGZvciAxLjAg
YXMgaXQgaXMgdGhlIG9ubHkgY29kZXBhdGggbm93LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
d2Via2l0R3N0R2hvc3RQYWRGcm9tU3RhdGljVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0VmlkZW9TaXplQW5kRm9ybWF0RnJvbUNhcHMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
R3N0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdzdEJ1ZmZlckZvckRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6bWFwR3N0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnVubWFwR3N0QnVmZmVyKTog
TW92ZWQgaGVyZSBmcm9tIEdzdFZlcnNpb25pbmcgYW5kIGFkZGVkCisgICAgICAgIHRvIFdlYkNv
cmUgbmFtZXNwYWNlLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEdzdENoZWNrVmVyc2lv
bik6IE1vdmVkIGhlcmUgZnJvbSBHc3RWZXJzaW9uaW5nCisgICAgICAgIGFuZCBhZGRlZCB0byBX
ZWJDb3JlIG5hbWVzcGFjZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyVmVyc2lvbmluZy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaDogUmVtb3ZlZCBj
aGVja3MgZm9yCisgICAgICAgIDEuMCBhcyBpdCBpcyB0aGUgb25seSBjb2RlcGF0aCBub3cuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8u
Y3BwOgorICAgICAgICAoSW1hZ2VHU3RyZWFtZXI6OkltYWdlR1N0cmVhbWVyKTogUmVtb3ZlZCAw
LjEwIGNvZGVwYXRoLgorICAgICAgICAoSW1hZ2VHU3RyZWFtZXI6On5JbWFnZUdTdHJlYW1lcik6
IFJlbW92ZWQgY2hlY2tzIGZvciAxLjAgYXMgaXQgaXMKKyAgICAgICAgdGhlIG9ubHkgY29kZXBh
dGggbm93LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuaDoKKyAgICAgICAgUmVtb3ZlZCBjaGVja3MgZm9yIDEuMCBhcyBpdCBpcyB0aGUg
b25seSBjb2RlcGF0aCBub3cuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRB
dWRpb1N0cmVhbVByb3BlcnRpZXNDYWxsYmFjayk6IFJlbW92ZWQgMC4xMCBjb2RlcGF0aC4KKyAg
ICAgICAgKFdlYkNvcmU6Om1lZGlhUGxheWVyUHJpdmF0ZVRleHRDaGFuZ2VkQ2FsbGJhY2spOiBS
ZW1vdmVkIGNoZWNrcworICAgICAgICBmb3IgMS4wIGFzIGl0IGlzIHRoZSBvbmx5IGNvZGVwYXRo
IG5vdy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aXNB
dmFpbGFibGUpOiBSZXBsYWNlZAorICAgICAgICBnUGxheWJpbk5hbWUuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIpOgorICAgICAgICBSZW1vdmVkIGNoZWNrcyBmb3IgMS4wIGFuZCByZXBsYWNlZCB3ZWJr
aXRHc3RQaXBlbGluZUdldEJ1cy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6ZHVyYXRpb24pOiBSZW1vdmVkIDAuMTAKKyAgICAgICAgY29kZXBhdGguCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXll
ck9mVmlkZW8pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojpub3RpZnlQbGF5ZXJPZkF1ZGlvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6dGV4dENoYW5nZWQpOgorICAgICAgICBSZW1vdmVkIGNoZWNrcyBmb3Ig
MS4wIGFzIGl0IGlzIHRoZSBvbmx5IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YnVmZmVyZWQpOiBSZXBsYWNlZAorICAgICAgICBn
UGVyY2VudE1heC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6aGFuZGxlTWVzc2FnZSk6IFJlbW92ZWQKKyAgICAgICAgMC4xMCBjb2RlcGF0aC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZD
b250ZW50cyk6CisgICAgICAgIFJlbW92ZWQgY2hlY2tzIGZvciAxLjAgYXMgaXQgaXMgdGhlIG9u
bHkgY29kZXBhdGggbm93LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjp0b3RhbEJ5dGVzKTogUmVtb3ZlZCAwLjEwCisgICAgICAgIGNvZGVwYXRoLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5
QmluKTogUmVwbGFjZWQKKyAgICAgICAgZ1BsYXliaW5OYW1lIGFuZCB3ZWJraXRHc3RQaXBlbGlu
ZUdldEJ1cyBhbmQgcmVtb3ZlZCBjaGVja3MgZm9yCisgICAgICAgIDEuMC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6
CisgICAgICAgIFJlbW92ZWQgY2hlY2tzIGZvciAxLjAgYXMgaXQgaXMgdGhlIG9ubHkgY29kZXBh
dGggbm93LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdHVyYWxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQpOiBSZW1vdmVk
IDAuMTAKKyAgICAgICAgY29kZXBhdGguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RleHRDb21iaW5lckdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1RleHRDb21iaW5lckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0U2lua0dTdHJlYW1lci5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRTaW5rR1N0cmVhbWVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVC
YXNlR1N0cmVhbWVyLmg6IFJlbW92ZWQKKyAgICAgICAgY2hlY2tzIGZvciAxLjAgYXMgaXQgaXMg
dGhlIG9ubHkgY29kZXBhdGggbm93LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2Via2l0VmlkZW9TaW5rUmVu
ZGVyKTogUmVtb3ZlZCAwLjEwIGNvZGVwYXRoIGFuZCBhZGRlZCBXZWJDb3JlCisgICAgICAgIGFz
IGNyZWF0ZUdzdEJ1ZmZlciBuYW1lc3BhY2UuCisgICAgICAgICh3ZWJraXRWaWRlb1NpbmtTZXRD
YXBzKTogUmVtb3ZlZCAwLjEwIGNvZGVwYXRoLgorICAgICAgICAod2Via2l0VmlkZW9TaW5rUHJv
cG9zZUFsbG9jYXRpb24pOiBSZW1vdmVkIGNoZWNrcyBmb3IgMS4wIGFzIGl0CisgICAgICAgIGlz
IHRoZSBvbmx5IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKHdlYmtpdFZpZGVvU2lua01hcnNoYWxW
b2lkQW5kTWluaU9iamVjdCk6IFJlbW92ZWQgYXMgaXQgd2FzIDAuMTAuCisgICAgICAgICh3ZWJr
aXRfdmlkZW9fc2lua19jbGFzc19pbml0KTogUmVtb3ZlZCAwLjEwIGNvZGVwYXRoIGFuZCByZXBs
YWNlZAorICAgICAgICBzZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oOgorICAgICAgICBSZW1vdmVkIGNoZWNrcyBmb3IgMS4wIGFzIGl0IGlzIHRoZSBv
bmx5IGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
V2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2Via2l0X21lZGlhX3Ny
Y19jbGFzc19pbml0KTogUmVwbGFjZWQKKyAgICAgICAgc2V0R3N0RWxlbWVudENsYXNzTWV0YWRh
dGEuCisgICAgICAgICh3ZWJLaXRNZWRpYVNyY0FkZFNyYyk6IEFkZGVkIFdlYkNvcmUgbmFtZXNw
YWNlIHRvCisgICAgICAgIHdlYmtpdEdzdEdob3N0UGFkRnJvbVN0YXRpY1RlbXBsYXRlLgorICAg
ICAgICAoTWVkaWFTb3VyY2VDbGllbnRHc3RyZWFtZXI6OmRpZFJlY2VpdmVEYXRhKTogQWRkZWQg
V2ViQ29yZQorICAgICAgICBuYW1lc3BhY2UgdG8gY3JlYXRlR3N0QnVmZmVyRm9yRGF0YS4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgUmVtb3ZlZCAwLjEwIGNvZGVwYXRoLgorICAgICAgICAod2ViS2l0
V2ViU3JjUXVlcnkpOiBSZW1vdmVkIGFzIGl0IHdhcyAwLjEwIG9ubHkuCisgICAgICAgICh2b2lk
IHdlYmtpdF93ZWJfc3JjX2NsYXNzX2luaXQpOiBSZXBsYWNlZCBzZXRHc3RFbGVtZW50Q2xhc3NN
ZXRhZGF0YS4KKyAgICAgICAgKHdlYmtpdF93ZWJfc3JjX2luaXQpOiBSZW1vdmVkIGhhdmVBcHBT
cmMyNyBwcml2YXRlIGF0dHJpYnV0ZSBhbmQKKyAgICAgICAgMC4xMCBjb2RlcGF0aC4KKyAgICAg
ICAgKHdlYktpdFdlYlNyY1N0b3ApOiBSZW1vdmVkIGNoZWNrcyBmb3IgMS4wIGFzIGl0IGlzIHRo
ZSBvbmx5CisgICAgICAgIGNvZGVwYXRoIG5vdy4KKyAgICAgICAgKHdlYktpdFdlYlNyY1NldFBy
b3BlcnR5KToKKyAgICAgICAgKHdlYktpdFdlYlNyY1VyaUdldFR5cGUpOgorICAgICAgICAod2Vi
S2l0V2ViU3JjR2V0UHJvdG9jb2xzKToKKyAgICAgICAgKHdlYktpdFdlYlNyY0dldFVyaSk6Cisg
ICAgICAgICh3ZWJLaXRXZWJTcmNTZXRVcmkpOiBSZW1vdmVkIDAuMTAgY29kZXBhdGguCisgICAg
ICAgIChTdHJlYW1pbmdDbGllbnQ6OmNyZWF0ZVJlYWRCdWZmZXIpOiBSZW1vdmVkIGNoZWNrcyBm
b3IgMS4wIGFuZAorICAgICAgICByZXBsYWNlZCBnZXRHc3RCdWZmZXJTaXplLgorICAgICAgICAo
U3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVSZXNwb25zZVJlY2VpdmVkKTogUmVtb3ZlZCAwLjEwIGNv
ZGVwYXRoCisgICAgICAgIGFuZCByZXBsYWNlZCBub3RpZnlHc3RUYWdzT25QYWQuCisgICAgICAg
IChTdHJlYW1pbmdDbGllbnQ6OmhhbmRsZURhdGFSZWNlaXZlZCk6IFJlbW92ZWQgMC4xMCBjb2Rl
cGF0aCBhbmQKKyAgICAgICAgcmVwbGFjZWQgc2V0R3N0QnVmZmVyU2l6ZSBhbmQgZ3N0X2J1ZmZl
cl9nZXRfc2l6ZS4KKwogMjAxMy0xMS0wOCAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbQ1NTIEdyaWQgTGF5b3V0XSBSdW4gdGhlIGNvbnRlbnQt
c2l6ZWQgdHJhY2tzIHNpemluZyBhbGdvcml0aG0gb25seSB3aGVuIHJlcXVpcmVkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDllNGI4YWQxZDgyZTMzNTk5NmQyYjAxNTg2ZDZkZjQxZWY5MjQ3YTkuLjAyODQ1YWQxNDgy
N2Y3MDMxOWRiNGI5OGM2MjY4YWQ0ZWE0YTFhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTMtMTEtMjIgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1N0cmVhbWVyXSBSZW1vdmUgMC4xMCBjb2RlcGF0aAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NTM0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZTogUmVtb3ZlZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyRWZsLmNwcC4KKwogMjAxMy0xMS0y
MSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJlbW92ZSBBTkdMRUdlbmVyYXRlZCBmcm9tIFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
aW5kZXggYmUyODhlMTJjOWRmMWU0ZDcyZWQ5YzEzNDE0ZGJlNWFmMmQ3NmJhNi4uZWY1YTU4NmVj
ZjNhNTQ5YWY5MTYyY2RiZmM3MzA3MzIwZjc1MDU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDEzLTExLTIyICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlz
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gUmVtb3ZlIDAuMTAgY29kZXBhdGgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDUzNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckVmbC5jcHA6IFJlbW92ZWQuCisKIDIw
MTMtMTEtMjEgIFBldGVyIE1vbG5hciAgPHBtb2xuYXIudS1zemVnZWRAcGFydG5lci5zYW1zdW5n
LmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX1dPUktFUlMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDJl
MDFkMzY5YmQzODVhMDZlNzM3ZmM0NDZiMDg4NDM0OTNmYmQ2ZTkuLmMxY2MxNzVkODE5MjJjNjhk
OGFlMWRhNTkzZDY1ZDY1YWM5M2M2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtNDk0LDcgKzQ5NCw2IEBA
CiAjZGVmaW5lIFdURl9VU0VfU09VUCAxCiAjZGVmaW5lIFdURl9VU0VfV0VCUCAxCiAjZGVmaW5l
IEVOQUJMRV9HTE9CQUxfRkFTVE1BTExPQ19ORVcgMAotI2RlZmluZSBHU1RfQVBJX1ZFUlNJT05f
MSAxCiAjZW5kaWYKIAogLyogT24gV2luZG93cywgdXNlIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVy
IGJ5IGRlZmF1bHQgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDcxZGRkNjY2
YTcwMjAyMGNjZjgzMWM1MTJhMDhmMGEzNTFhMmM0ZDQuLmExMDk2OTAyODcwYzZjNjcxYTY1Njk2
MGE1ODllYjNmYWE5ZWE4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjMy
Nyw4ICs2MzI3LDYgQEAgcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJV
dGlsaXRpZXMuaCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclZlcnNpb25pbmcuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1FZmwuY21ha2UKaW5kZXggMTJkOGUwYmEwN2RjNzlkZjJhMDVhYTE3NTY4M2ZiZjM3MDk4
NWUyZi4uMWU5OTU4ODc2ZjA4MzkyNjcwOTZhMDYyNDQ2NjFjNzA2Yjc2MjkxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTEyNiw3ICsxMjYsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJH
U3RyZWFtZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0
aWxpdGllcy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVy
c2lvbmluZy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFt
ZXJDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpp
bmRleCAxOTdlMWQ2Y2IxZGFkZDI2N2ZjMmUyMDlmYzI3ZGYyMjMyMzI2YzRhLi41NTc3NzQyYTVh
MjU5MWQ0MmQ2YjEzZmVjODRmNGYxMGU3M2Q0NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFr
ZQpAQCAtOTksNyArOTksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwCi0gICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCmluZGV4IDc2Y2QzNGRjMzUzM2M0NGU5OWFhOTlhNTVkNDZlM2M1ZGYwNjFkMzkuLjkzMDBi
NGIzYmI4NDIyYmE2NzYzOTc1MWRjNmFlOTE1ODcxNTdjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtNzI3NSwxNiArNzI3NSw2IEBA
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgog
ICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcZ3N0cmVhbWVyXEdTdHJlYW1lclZlcnNpb25pbmcuY3BwIj4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyXEltYWdlR1N0cmVhbWVyQ2Fpcm8u
Y3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE5
MDQxLDcgKzE5MDMxLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXGdzdHJlYW1lclxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyXEdSZWZQdHJH
U3RyZWFtZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXGdzdHJlYW1lclxHU3RyZWFtZXJVdGlsaXRpZXMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1lclxHU3RyZWFtZXJWZXJzaW9uaW5n
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xnc3Ry
ZWFtZXJcSW1hZ2VHU3RyZWFtZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1lclxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXGdzdHJlYW1lclxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKaW5kZXggMGM2YmM1YzUxYjAyZWUyOWExZDM0NTQ2M2RjZDllNWUzZDNhY2Q5NS4uNGQ3
NTE0NGZiMjU1YmU5NzQ3Yzk5YmNlMjI3YTQ0ZDEwNmNjNmUzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAt
NzA3Miw5ICs3MDcyLDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXGdzdHJlYW1lclxHU3RyZWFtZXJVdGlsaXRpZXMuY3BwIj4KICAgICAgIDxGaWx0ZXI+
cGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0g
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xnc3RyZWFtZXJcR1N0
cmVhbWVyVmVyc2lvbmluZy5jcHAiPgotICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1xn
c3RyZWFtZXI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1lclxJbWFnZUdTdHJlYW1lckNhaXJvLmNw
cCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1lcjwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgpAQCAtMTQ5MDYsOSArMTQ5MDMsNiBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyXEdTdHJlYW1lclV0aWxpdGll
cy5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xnc3RyZWFtZXJcR1N0cmVhbWVyVmVyc2lvbmluZy5oIj4KLSAgICAgIDxGaWx0ZXI+
cGxhdGZvcm1cZ3JhcGhpY3NcZ3N0cmVhbWVyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xnc3RyZWFtZXJcSW1h
Z2VHU3RyZWFtZXIuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXGdzdHJlYW1l
cjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCmluZGV4IGNjZjA0NTA3MmJlMGI5NzQ3ZDhiN2NmNmI4N2MyYmViYjM4NWE2
ZTQuLmRkMjQ0YmExNjkxZTE2ZDdjNDQxNmE5MTc1MTk2MzhhMmZhZmI0MzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNs
dWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJW
ZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIldlYktpdFdlYkF1
ZGlvU291cmNlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgpAQCAtNzAsMTMgKzY5
LDYgQEAgdW5zaWduZWQgbG9uZyBBdWRpb0Rlc3RpbmF0aW9uOjptYXhDaGFubmVsQ291bnQoKQog
ICAgIHJldHVybiAwOwogfQogCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi1zdGF0aWMgdm9p
ZCBvbkdTdHJlYW1lcldhdnBhcnNlUGFkQWRkZWRDYWxsYmFjayhHc3RFbGVtZW50KiwgR3N0UGFk
KiBwYWQsIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIqIGRlc3RpbmF0aW9uKQotewotICAgIGRl
c3RpbmF0aW9uLT5maW5pc2hCdWlsZGluZ1BpcGVsaW5lQWZ0ZXJXYXZQYXJzZXJQYWRSZWFkeShw
YWQpOwotfQotI2VuZGlmCi0KIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGlu
YXRpb25HU3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgZmxvYXQgc2FtcGxlUmF0
ZSkKICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgLCBtX3JlbmRlckJ1cyhBdWRpb0J1
czo6Y3JlYXRlKDIsIGZyYW1lc1RvUHVsbCwgZmFsc2UpKQpAQCAtODQsNyArNzYsNyBAQCBBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKEF1ZGlvSU9D
YWxsYmFjayYgY2FsbGJhY2ssCiAgICAgLCBtX2lzUGxheWluZyhmYWxzZSkKIHsKICAgICBtX3Bp
cGVsaW5lID0gZ3N0X3BpcGVsaW5lX25ldygicGxheSIpOwotICAgIEdSZWZQdHI8R3N0QnVzPiBi
dXMgPSB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUobV9waXBlbGluZSkpOwor
ICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMo
R1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUpKSk7CiAgICAgQVNTRVJUKGJ1cyk7CiAgICAgZ3N0X2J1
c19hZGRfc2lnbmFsX3dhdGNoKGJ1cy5nZXQoKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChidXMu
Z2V0KCksICJtZXNzYWdlIiwgR19DQUxMQkFDSyhtZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKQEAg
LTEwMiwyMSArOTQsMTYgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAogICAgIGlmICghbV93YXZQ
YXJzZXJBdmFpbGFibGUpCiAgICAgICAgIHJldHVybjsKIAotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJ
T05fMQotICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2F2UGFyc2VyLCAicGFkLWFkZGVkIiwgR19DQUxM
QkFDSyhvbkdTdHJlYW1lcldhdnBhcnNlUGFkQWRkZWRDYWxsYmFjayksIHRoaXMpOwotI2VuZGlm
CiAgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKG1fcGlwZWxpbmUpLCB3ZWJraXRBdWRpb1Ny
Yywgd2F2UGFyc2VyLCBOVUxMKTsKICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbCh3ZWJr
aXRBdWRpb1NyYywgInNyYyIsIHdhdlBhcnNlciwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tf
Tk9USElORyk7CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIEdSZWZQdHI8R3N0UGFk
PiBzcmNQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQod2F2UGFyc2Vy
LCAic3JjIikpOwogICAgIGZpbmlzaEJ1aWxkaW5nUGlwZWxpbmVBZnRlcldhdlBhcnNlclBhZFJl
YWR5KHNyY1BhZC5nZXQoKSk7Ci0jZW5kaWYKIH0KIAogQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6fkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoKQogewotICAgIEdSZWZQdHI8R3N0QnVzPiBi
dXMgPSB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUobV9waXBlbGluZSkpOwor
ICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMo
R1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUpKSk7CiAgICAgQVNTRVJUKGJ1cyk7CiAgICAgZ19zaWdu
YWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKGJ1cy5nZXQoKSwgcmVpbnRlcnByZXRfY2Fz
dDxncG9pbnRlcj4obWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7CiAgICAgZ3N0X2J1c19yZW1vdmVf
c2lnbmFsX3dhdGNoKGJ1cy5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFt
ZXIuY3BwCmluZGV4IGNiNTVmYzdjODQ4NjM5MTA2NTBmZWY0YjMwYWZjMGYyNWJjMDNlYmUuLjY3
MmFlYzFhZTA5ZDdiYTg1M2FhNTI0NWE4OTgyMDEyMmMxYzlmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAiQXVk
aW9GaWxlUmVhZGVyLmgiCiAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2luY2x1ZGUgIkdTdHJl
YW1lclZlcnNpb25pbmcuaCIKIAogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDxnc3Qv
YXBwL2dzdGFwcHNpbmsuaD4KQEAgLTM1LDE3ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIAotI2lmZGVm
IEdTVF9BUElfVkVSU0lPTl8xCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+Ci0jZWxzZQot
I2luY2x1ZGUgPGdzdC9hdWRpby9tdWx0aWNoYW5uZWwuaD4KLSNlbmRpZgotCi0jaWZkZWYgR1NU
X0FQSV9WRVJTSU9OXzEKLXN0YXRpYyBjb25zdCBjaGFyKiBnRGVjb2RlYmluTmFtZSA9ICJkZWNv
ZGViaW4iOwotI2Vsc2UKLXN0YXRpYyBjb25zdCBjaGFyKiBnRGVjb2RlYmluTmFtZSA9ICJkZWNv
ZGViaW4yIjsKLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU4LDExICs0Nyw3
IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1cyhmbG9hdCBz
YW1wbGVSYXRlLCBib29sIG1peFRvTW9ubyk7CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQog
ICAgIEdzdEZsb3dSZXR1cm4gaGFuZGxlU2FtcGxlKEdzdEFwcFNpbmsqKTsKLSNlbHNlCi0gICAg
R3N0Rmxvd1JldHVybiBoYW5kbGVCdWZmZXIoR3N0QXBwU2luayopOwotI2VuZGlmCiAgICAgZ2Jv
b2xlYW4gaGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKik7CiAgICAgdm9pZCBoYW5kbGVOZXdEZWlu
dGVybGVhdmVQYWQoR3N0UGFkKik7CiAgICAgdm9pZCBkZWludGVybGVhdmVQYWRzQ29uZmlndXJl
ZCgpOwpAQCAtNzgsMTEgKzYzLDYgQEAgcHJpdmF0ZToKICAgICBHc3RCdWZmZXJMaXN0KiBtX2Zy
b250TGVmdEJ1ZmZlcnM7CiAgICAgR3N0QnVmZmVyTGlzdCogbV9mcm9udFJpZ2h0QnVmZmVyczsK
IAotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotICAgIEdzdEJ1ZmZlckxpc3RJdGVyYXRvciog
bV9mcm9udExlZnRCdWZmZXJzSXRlcmF0b3I7Ci0gICAgR3N0QnVmZmVyTGlzdEl0ZXJhdG9yKiBt
X2Zyb250UmlnaHRCdWZmZXJzSXRlcmF0b3I7Ci0jZW5kaWYKLQogICAgIEdzdEVsZW1lbnQqIG1f
cGlwZWxpbmU7CiAgICAgdW5zaWduZWQgbV9jaGFubmVsU2l6ZTsKICAgICBHUmVmUHRyPEdzdEVs
ZW1lbnQ+IG1fZGVjb2RlYmluOwpAQCAtOTMsNyArNzMsNiBAQCBwcml2YXRlOgogCiBzdGF0aWMg
dm9pZCBjb3B5R3N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVsKEdzdEJ1ZmZlckxpc3QqIGJ1
ZmZlcnMsIEF1ZGlvQ2hhbm5lbCogYXVkaW9DaGFubmVsKQogewotI2lmZGVmIEdTVF9BUElfVkVS
U0lPTl8xCiAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gYXVkaW9DaGFubmVsLT5tdXRhYmxlRGF0
YSgpOwogICAgIHVuc2lnbmVkIGJ1ZmZlckNvdW50ID0gZ3N0X2J1ZmZlcl9saXN0X2xlbmd0aChi
dWZmZXJzKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVmZmVyQ291bnQ7ICsraSkg
ewpAQCAtMTAzLDI2ICs4MiwxMSBAQCBzdGF0aWMgdm9pZCBjb3B5R3N0cmVhbWVyQnVmZmVyc1Rv
QXVkaW9DaGFubmVsKEdzdEJ1ZmZlckxpc3QqIGJ1ZmZlcnMsIEF1ZGlvQ2hhbgogICAgICAgICBn
c3RfYnVmZmVyX2V4dHJhY3QoYnVmZmVyLCAwLCBkZXN0aW5hdGlvbiwgYnVmZmVyU2l6ZSk7CiAg
ICAgICAgIGRlc3RpbmF0aW9uICs9IGJ1ZmZlclNpemUgLyBzaXplb2YoZmxvYXQpOwogICAgIH0K
LSNlbHNlCi0gICAgR3N0QnVmZmVyTGlzdEl0ZXJhdG9yKiBpdGVyID0gZ3N0X2J1ZmZlcl9saXN0
X2l0ZXJhdGUoYnVmZmVycyk7Ci0gICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX25leHRfZ3Jv
dXAoaXRlcik7Ci0gICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0
b3JfbWVyZ2VfZ3JvdXAoaXRlcik7Ci0gICAgaWYgKGJ1ZmZlcikgewotICAgICAgICBtZW1jcHko
YXVkaW9DaGFubmVsLT5tdXRhYmxlRGF0YSgpLCByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oR1NU
X0JVRkZFUl9EQVRBKGJ1ZmZlcikpLCBHU1RfQlVGRkVSX1NJWkUoYnVmZmVyKSk7Ci0gICAgICAg
IGdzdF9idWZmZXJfdW5yZWYoYnVmZmVyKTsKLSAgICB9Ci0KLSAgICBnc3RfYnVmZmVyX2xpc3Rf
aXRlcmF0b3JfZnJlZShpdGVyKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgR3N0Rmxvd1JldHVybiBv
bkFwcHNpbmtQdWxsUmVxdWlyZWRDYWxsYmFjayhHc3RBcHBTaW5rKiBzaW5rLCBncG9pbnRlciB1
c2VyRGF0YSkKIHsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxBdWRpb0ZpbGVSZWFkZXIqPih1c2VyRGF0YSktPmhhbmRsZVNhbXBsZShzaW5rKTsKLSNl
bHNlCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlvRmlsZVJlYWRlcio+KHVzZXJEYXRhKS0+
aGFuZGxlQnVmZmVyKHNpbmspOwotI2VuZGlmCiB9CiAKIGdib29sZWFuIG1lc3NhZ2VDYWxsYmFj
ayhHc3RCdXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBBdWRpb0ZpbGVSZWFkZXIqIHJlYWRlcikK
QEAgLTE3Myw3ICsxMzcsNyBAQCBBdWRpb0ZpbGVSZWFkZXI6OkF1ZGlvRmlsZVJlYWRlcihjb25z
dCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YVNpemUpCiBBdWRpb0ZpbGVSZWFkZXI6On5BdWRpb0Zp
bGVSZWFkZXIoKQogewogICAgIGlmIChtX3BpcGVsaW5lKSB7Ci0gICAgICAgIEdSZWZQdHI8R3N0
QnVzPiBidXMgPSB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUobV9waXBlbGlu
ZSkpOworICAgICAgICBHUmVmUHRyPEdzdEJ1cz4gYnVzID0gYWRvcHRHUmVmKGdzdF9waXBlbGlu
ZV9nZXRfYnVzKEdTVF9QSVBFTElORShtX3BpcGVsaW5lKSkpOwogICAgICAgICBBU1NFUlQoYnVz
KTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKGJ1cy5nZXQo
KSwgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4obWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7CiAg
ICAgICAgIGdzdF9idXNfcmVtb3ZlX3NpZ25hbF93YXRjaChidXMuZ2V0KCkpOwpAQCAtMTkzLDE1
ICsxNTcsMTAgQEAgQXVkaW9GaWxlUmVhZGVyOjp+QXVkaW9GaWxlUmVhZGVyKCkKICAgICAgICAg
bV9kZUludGVybGVhdmUuY2xlYXIoKTsKICAgICB9CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9O
XzEKLSAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfZnJlZShtX2Zyb250TGVmdEJ1ZmZlcnNJ
dGVyYXRvcik7Ci0gICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX2ZyZWUobV9mcm9udFJpZ2h0
QnVmZmVyc0l0ZXJhdG9yKTsKLSNlbmRpZgogICAgIGdzdF9idWZmZXJfbGlzdF91bnJlZihtX2Zy
b250TGVmdEJ1ZmZlcnMpOwogICAgIGdzdF9idWZmZXJfbGlzdF91bnJlZihtX2Zyb250UmlnaHRC
dWZmZXJzKTsKIH0KIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiBHc3RGbG93UmV0dXJuIEF1
ZGlvRmlsZVJlYWRlcjo6aGFuZGxlU2FtcGxlKEdzdEFwcFNpbmsqIHNpbmspCiB7CiAgICAgR3N0
U2FtcGxlKiBzYW1wbGUgPSBnc3RfYXBwX3NpbmtfcHVsbF9zYW1wbGUoc2luayk7CkBAIC0yNDIs
NjMgKzIwMSw2IEBAIEdzdEZsb3dSZXR1cm4gQXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVTYW1wbGUo
R3N0QXBwU2luayogc2luaykKICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CiAKIH0KLSNlbmRpZgot
Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi1Hc3RGbG93UmV0dXJuIEF1ZGlvRmlsZVJlYWRl
cjo6aGFuZGxlQnVmZmVyKEdzdEFwcFNpbmsqIHNpbmspCi17Ci0gICAgR3N0QnVmZmVyKiBidWZm
ZXIgPSBnc3RfYXBwX3NpbmtfcHVsbF9idWZmZXIoc2luayk7Ci0gICAgaWYgKCFidWZmZXIpCi0g
ICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLQotICAgIEdzdENhcHMqIGNhcHMgPSBnc3Rf
YnVmZmVyX2dldF9jYXBzKGJ1ZmZlcik7Ci0gICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
c3RfY2Fwc19nZXRfc3RydWN0dXJlKGNhcHMsIDApOwotCi0gICAgZ2ludCBjaGFubmVscyA9IDA7
Ci0gICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAiY2hhbm5lbHMiLCAm
Y2hhbm5lbHMpIHx8ICFjaGFubmVscykgewotICAgICAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsK
LSAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOwotICAgICAgICByZXR1cm4gR1NUX0ZM
T1dfRVJST1I7Ci0gICAgfQotCi0gICAgZ2ludCBzYW1wbGVSYXRlID0gMDsKLSAgICBpZiAoIWdz
dF9zdHJ1Y3R1cmVfZ2V0X2ludChzdHJ1Y3R1cmUsICJyYXRlIiwgJnNhbXBsZVJhdGUpIHx8ICFz
YW1wbGVSYXRlKSB7Ci0gICAgICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOwotICAgICAgICBnc3Rf
YnVmZmVyX3VucmVmKGJ1ZmZlcik7Ci0gICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLSAg
ICB9Ci0KLSAgICBnaW50IHdpZHRoID0gMDsKLSAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2lu
dChzdHJ1Y3R1cmUsICJ3aWR0aCIsICZ3aWR0aCkgfHwgIXdpZHRoKSB7Ci0gICAgICAgIGdzdF9j
YXBzX3VucmVmKGNhcHMpOwotICAgICAgICBnc3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7Ci0gICAg
ICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLSAgICB9Ci0KLSAgICBHc3RDbG9ja1RpbWUgZHVy
YXRpb24gPSAoc3RhdGljX2Nhc3Q8Z3VpbnQ2ND4oR1NUX0JVRkZFUl9TSVpFKGJ1ZmZlcikpICog
OCAqIEdTVF9TRUNPTkQpIC8gKHNhbXBsZVJhdGUgKiBjaGFubmVscyAqIHdpZHRoKTsKLSAgICBp
bnQgZnJhbWVzID0gR1NUX0NMT0NLX1RJTUVfVE9fRlJBTUVTKGR1cmF0aW9uLCBzYW1wbGVSYXRl
KTsKLQotICAgIC8vIENoZWNrIHRoZSBmaXJzdCBhdWRpbyBjaGFubmVsLiBUaGUgYnVmZmVyIGlz
IHN1cHBvc2VkIHRvIHN0b3JlCi0gICAgLy8gZGF0YSBvZiBhIHNpbmdsZSBjaGFubmVsIGFueXdh
eS4KLSAgICBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiogcG9zaXRpb25zID0gZ3N0X2F1ZGlvX2dl
dF9jaGFubmVsX3Bvc2l0aW9ucyhzdHJ1Y3R1cmUpOwotICAgIHN3aXRjaCAocG9zaXRpb25zWzBd
KSB7Ci0gICAgY2FzZSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZUOgotICAg
ICAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfYWRkKG1fZnJvbnRMZWZ0QnVmZmVyc0l0ZXJh
dG9yLCBidWZmZXIpOwotICAgICAgICBtX2NoYW5uZWxTaXplICs9IGZyYW1lczsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVDoK
LSAgICAgICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX2FkZChtX2Zyb250UmlnaHRCdWZmZXJz
SXRlcmF0b3IsIGJ1ZmZlcik7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IGdzdF9idWZmZXJfdW5yZWYoYnVmZmVyKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
Z19mcmVlKHBvc2l0aW9ucyk7Ci0gICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7Ci0gICAgcmV0dXJu
IEdTVF9GTE9XX09LOwotfQotI2VuZGlmCiAKIGdib29sZWFuIEF1ZGlvRmlsZVJlYWRlcjo6aGFu
ZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogewpAQCAtMzM3LDEyICsyMzksNyBAQCB2
b2lkIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTmV3RGVpbnRlcmxlYXZlUGFkKEdzdFBhZCogcGFk
KQogICAgIEdzdEFwcFNpbmtDYWxsYmFja3MgY2FsbGJhY2tzOwogICAgIGNhbGxiYWNrcy5lb3Mg
PSAwOwogICAgIGNhbGxiYWNrcy5uZXdfcHJlcm9sbCA9IDA7Ci0jaWZkZWYgR1NUX0FQSV9WRVJT
SU9OXzEKICAgICBjYWxsYmFja3MubmV3X3NhbXBsZSA9IG9uQXBwc2lua1B1bGxSZXF1aXJlZENh
bGxiYWNrOwotI2Vsc2UKLSAgICBjYWxsYmFja3MubmV3X2J1ZmZlcl9saXN0ID0gMDsKLSAgICBj
YWxsYmFja3MubmV3X2J1ZmZlciA9IG9uQXBwc2lua1B1bGxSZXF1aXJlZENhbGxiYWNrOwotI2Vu
ZGlmCiAgICAgZ3N0X2FwcF9zaW5rX3NldF9jYWxsYmFja3MoR1NUX0FQUF9TSU5LKHNpbmspLCAm
Y2FsbGJhY2tzLCB0aGlzLCAwKTsKIAogICAgIGdfb2JqZWN0X3NldChzaW5rLCAic3luYyIsIEZB
TFNFLCBOVUxMKTsKQEAgLTM4MCw3ICsyNzcsMTAgQEAgdm9pZCBBdWRpb0ZpbGVSZWFkZXI6OnBs
dWdEZWludGVybGVhdmUoR3N0UGFkKiBwYWQpCiAgICAgZ19zaWduYWxfY29ubmVjdChtX2RlSW50
ZXJsZWF2ZS5nZXQoKSwgInBhZC1hZGRlZCIsIEdfQ0FMTEJBQ0sob25HU3RyZWFtZXJEZWludGVy
bGVhdmVQYWRBZGRlZENhbGxiYWNrKSwgdGhpcyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChtX2Rl
SW50ZXJsZWF2ZS5nZXQoKSwgIm5vLW1vcmUtcGFkcyIsIEdfQ0FMTEJBQ0sob25HU3RyZWFtZXJE
ZWludGVybGVhdmVSZWFkeUNhbGxiYWNrKSwgdGhpcyk7CiAKLSAgICBHc3RDYXBzKiBjYXBzID0g
Z2V0R3N0QXVkaW9DYXBzKDIsIG1fc2FtcGxlUmF0ZSk7CisgICAgR3N0Q2FwcyogY2FwcyA9IGdz
dF9jYXBzX25ld19zaW1wbGUoImF1ZGlvL3gtcmF3IiwgInJhdGUiLCBHX1RZUEVfSU5ULCBzdGF0
aWNfY2FzdDxpbnQ+KG1fc2FtcGxlUmF0ZSksCisgICAgICAgICJjaGFubmVscyIsIEdfVFlQRV9J
TlQsIDIsCisgICAgICAgICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBnc3RfYXVkaW9fZm9ybWF0
X3RvX3N0cmluZyhHU1RfQVVESU9fRk9STUFUX0YzMiksCisgICAgICAgICJsYXlvdXQiLCBHX1RZ
UEVfU1RSSU5HLCAiaW50ZXJsZWF2ZWQiLCBudWxscHRyKTsKICAgICBnX29iamVjdF9zZXQoY2Fw
c0ZpbHRlciwgImNhcHMiLCBjYXBzLCBOVUxMKTsKICAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsK
IApAQCAtNDA2LDcgKzMwNiw3IEBAIHZvaWQgQXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVBdWRpb0Zv
ckJ1c0NyZWF0aW9uKCkKICAgICAvLyBBIGRlaW50ZXJsZWF2ZSBlbGVtZW50IGlzIGFkZGVkIG9u
Y2UgYSBzcmMgcGFkIGJlY29tZXMgYXZhaWxhYmxlIGluIGRlY29kZWJpbi4KICAgICBtX3BpcGVs
aW5lID0gZ3N0X3BpcGVsaW5lX25ldygwKTsKIAotICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSB3
ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUobV9waXBlbGluZSkpOworICAgIEdS
ZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJ
UEVMSU5FKG1fcGlwZWxpbmUpKSk7CiAgICAgQVNTRVJUKGJ1cyk7CiAgICAgZ3N0X2J1c19hZGRf
c2lnbmFsX3dhdGNoKGJ1cy5nZXQoKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChidXMuZ2V0KCks
ICJtZXNzYWdlIiwgR19DQUxMQkFDSyhtZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKQEAgLTQyMiw3
ICszMjIsNyBAQCB2b2lkIEF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlQXVkaW9Gb3JCdXNDcmVhdGlv
bigpCiAgICAgICAgIGdfb2JqZWN0X3NldChzb3VyY2UsICJsb2NhdGlvbiIsIG1fZmlsZVBhdGgs
IE5VTEwpOwogICAgIH0KIAotICAgIG1fZGVjb2RlYmluID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9t
YWtlKGdEZWNvZGViaW5OYW1lLCAiZGVjb2RlYmluIik7CisgICAgbV9kZWNvZGViaW4gPSBnc3Rf
ZWxlbWVudF9mYWN0b3J5X21ha2UoImRlY29kZWJpbiIsICJkZWNvZGViaW4iKTsKICAgICBnX3Np
Z25hbF9jb25uZWN0KG1fZGVjb2RlYmluLmdldCgpLCAicGFkLWFkZGVkIiwgR19DQUxMQkFDSyhv
bkdTdHJlYW1lckRlY29kZWJpblBhZEFkZGVkQ2FsbGJhY2spLCB0aGlzKTsKIAogICAgIGdzdF9i
aW5fYWRkX21hbnkoR1NUX0JJTihtX3BpcGVsaW5lKSwgc291cmNlLCBtX2RlY29kZWJpbi5nZXQo
KSwgTlVMTCk7CkBAIC00MzcsMTQgKzMzNyw2IEBAIFBhc3NSZWZQdHI8QXVkaW9CdXM+IEF1ZGlv
RmlsZVJlYWRlcjo6Y3JlYXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vCiAg
ICAgbV9mcm9udExlZnRCdWZmZXJzID0gZ3N0X2J1ZmZlcl9saXN0X25ldygpOwogICAgIG1fZnJv
bnRSaWdodEJ1ZmZlcnMgPSBnc3RfYnVmZmVyX2xpc3RfbmV3KCk7CiAKLSNpZm5kZWYgR1NUX0FQ
SV9WRVJTSU9OXzEKLSAgICBtX2Zyb250TGVmdEJ1ZmZlcnNJdGVyYXRvciA9IGdzdF9idWZmZXJf
bGlzdF9pdGVyYXRlKG1fZnJvbnRMZWZ0QnVmZmVycyk7Ci0gICAgZ3N0X2J1ZmZlcl9saXN0X2l0
ZXJhdG9yX2FkZF9ncm91cChtX2Zyb250TGVmdEJ1ZmZlcnNJdGVyYXRvcik7Ci0KLSAgICBtX2Zy
b250UmlnaHRCdWZmZXJzSXRlcmF0b3IgPSBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0ZShtX2Zyb250
UmlnaHRCdWZmZXJzKTsKLSAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfYWRkX2dyb3VwKG1f
ZnJvbnRSaWdodEJ1ZmZlcnNJdGVyYXRvcik7Ci0jZW5kaWYKLQogICAgIEdSZWZQdHI8R01haW5D
b250ZXh0PiBjb250ZXh0ID0gYWRvcHRHUmVmKGdfbWFpbl9jb250ZXh0X25ldygpKTsKICAgICBn
X21haW5fY29udGV4dF9wdXNoX3RocmVhZF9kZWZhdWx0KGNvbnRleHQuZ2V0KCkpOwogICAgIG1f
bG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9uZXcoY29udGV4dC5nZXQoKSwgRkFMU0UpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJL
aXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDU1
ZGJlZDRmODBkMjM5NGRlYTM4MzFhYTVkZTE4ZGRmZmNmZWQzMjkuLjc3YmY5MjA2OGRlMzllMmIy
YmE3MmMyZDhjYTY4MDg2ZjE5NTQxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlv
U291cmNlR1N0cmVhbWVyLmNwcApAQCAtMjYsMTkgKzI2LDEwIEBACiAjaW5jbHVkZSAiQXVkaW9J
T0NhbGxiYWNrLmgiCiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUg
IkdSZWZQdHJHU3RyZWFtZXIuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCi0j
aWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpbmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIK
ICNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KLSNlbHNlCi0jaW5jbHVkZSA8Z3N0L2F1ZGlv
L211bHRpY2hhbm5lbC5oPgotI2VuZGlmCiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5o
PgogCi0vLyBHU3RhdGljUmVjTXV0ZXggaXMgZGVwcmVjYXRlZCBpbiBHbGliLCBidXQgcmVxdWly
ZWQgaW4gR1N0cmVhbWVyIDAuMTAKLSNpZiAoQ09NUElMRVIoR0NDKSAmJiBHQ0NfVkVSU0lPTl9B
VF9MRUFTVCg0LCA2LCAwKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkpCi0jcHJhZ21h
IEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0jZW5k
aWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJBdWRpb1NyY0NsYXNzICAgV2ViS2l0V2ViQXVkaW9TcmNDbGFzczsKQEAgLTY1LDExICs1Niw3
IEBAIHN0cnVjdCBfV2ViS2l0V2ViQXVkaW9Tb3VyY2VQcml2YXRlIHsKICAgICBHUmVmUHRyPEdz
dEVsZW1lbnQ+IHdhdkVuY29kZXI7CiAKICAgICBHUmVmUHRyPEdzdFRhc2s+IHRhc2s7Ci0jaWZk
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBHUmVjTXV0ZXggbXV0ZXg7Ci0jZWxzZQotICAgIEdT
dGF0aWNSZWNNdXRleCBtdXRleDsKLSNlbmRpZgogCiAgICAgR1NMaXN0KiBwYWRzOyAvLyBMaXN0
IG9mIHF1ZXVlIHNpbmsgcGFkcy4gT25lIHF1ZXVlIGZvciBlYWNoIHBsYW5hciBhdWRpbyBjaGFu
bmVsLgogICAgIEdzdFBhZCogc291cmNlUGFkOyAvLyBzcmMgcGFkIG9mIHRoZSBlbGVtZW50LCBp
bnRlcmxlYXZlZCB3YXYgZGF0YSBpcyBwdXNoZWQgdG8gaXQuCkBAIC05OSwxNyArODYsMTAgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViQXVkaW9TcmNMb29wKFdlYktpdFdlYkF1ZGlvU3JjKik7CiAK
IHN0YXRpYyBHc3RDYXBzKiBnZXRHU3RyZWFtZXJNb25vQXVkaW9DYXBzKGZsb2F0IHNhbXBsZVJh
dGUpCiB7Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICByZXR1cm4gZ3N0X2NhcHNfbmV3
X3NpbXBsZSgiYXVkaW8veC1yYXciLCAicmF0ZSIsIEdfVFlQRV9JTlQsIHN0YXRpY19jYXN0PGlu
dD4oc2FtcGxlUmF0ZSksCiAgICAgICAgICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIDEsCiAgICAg
ICAgICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBnc3RfYXVkaW9fZm9ybWF0X3RvX3N0cmluZyhH
U1RfQVVESU9fRk9STUFUX0YzMiksCiAgICAgICAgICJsYXlvdXQiLCBHX1RZUEVfU1RSSU5HLCAi
bm9uLWludGVybGVhdmVkIiwgTlVMTCk7Ci0jZWxzZQotICAgIHJldHVybiBnc3RfY2Fwc19uZXdf
c2ltcGxlKCJhdWRpby94LXJhdy1mbG9hdCIsICJyYXRlIiwgR19UWVBFX0lOVCwgc3RhdGljX2Nh
c3Q8aW50PihzYW1wbGVSYXRlKSwKLSAgICAgICAgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgMSwK
LSAgICAgICAgImVuZGlhbm5lc3MiLCBHX1RZUEVfSU5ULCBHX0JZVEVfT1JERVIsCi0gICAgICAg
ICJ3aWR0aCIsIEdfVFlQRV9JTlQsIDMyLCBOVUxMKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgR3N0
QXVkaW9DaGFubmVsUG9zaXRpb24gd2ViS2l0V2ViQXVkaW9HU3RyZWFtZXJDaGFubmVsUG9zaXRp
b24oaW50IGNoYW5uZWxJbmRleCkKQEAgLTEyNywxMSArMTA3LDcgQEAgc3RhdGljIEdzdEF1ZGlv
Q2hhbm5lbFBvc2l0aW9uIHdlYktpdFdlYkF1ZGlvR1N0cmVhbWVyQ2hhbm5lbFBvc2l0aW9uKGlu
dCBjaGFubmUKICAgICAgICAgcG9zaXRpb24gPSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9G
Uk9OVF9DRU5URVI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVkaW9CdXM6OkNoYW5uZWxM
RkU6Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICAgICAgcG9zaXRpb24gPSBHU1RfQVVE
SU9fQ0hBTk5FTF9QT1NJVElPTl9MRkUxOwotI2Vsc2UKLSAgICAgICAgcG9zaXRpb24gPSBHU1Rf
QVVESU9fQ0hBTk5FTF9QT1NJVElPTl9MRkU7Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBBdWRpb0J1czo6Q2hhbm5lbFN1cnJvdW5kTGVmdDoKICAgICAgICAgcG9zaXRpb24gPSBH
U1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0xFRlQ7CkBAIC0xNTgsNyArMTM0LDcgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9hdWRpb19zcmNfY2xhc3NfaW5pdChXZWJLaXRXZWJBdWRp
b1NyY0NsYXNzKiB3ZWJLaXRXZWJBdWQKICAgICBHc3RFbGVtZW50Q2xhc3MqIGVsZW1lbnRDbGFz
cyA9IEdTVF9FTEVNRU5UX0NMQVNTKHdlYktpdFdlYkF1ZGlvU3JjQ2xhc3MpOwogCiAgICAgZ3N0
X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZShlbGVtZW50Q2xhc3MsIGdzdF9zdGF0aWNf
cGFkX3RlbXBsYXRlX2dldCgmc3JjVGVtcGxhdGUpKTsKLSAgICBzZXRHc3RFbGVtZW50Q2xhc3NN
ZXRhZGF0YShlbGVtZW50Q2xhc3MsICJXZWJLaXQgV2ViQXVkaW8gc291cmNlIGVsZW1lbnQiLCAi
U291cmNlIiwgIkhhbmRsZXMgV2ViQXVkaW8gZGF0YSBmcm9tIFdlYkNvcmUiLCAiUGhpbGlwcGUg
Tm9ybWFuZCA8cG5vcm1hbmRAaWdhbGlhLmNvbT4iKTsKKyAgICBnc3RfZWxlbWVudF9jbGFzc19z
ZXRfbWV0YWRhdGEoZWxlbWVudENsYXNzLCAiV2ViS2l0IFdlYkF1ZGlvIHNvdXJjZSBlbGVtZW50
IiwgIlNvdXJjZSIsICJIYW5kbGVzIFdlYkF1ZGlvIGRhdGEgZnJvbSBXZWJDb3JlIiwgIlBoaWxp
cHBlIE5vcm1hbmQgPHBub3JtYW5kQGlnYWxpYS5jb20+Iik7CiAKICAgICBvYmplY3RDbGFzcy0+
Y29uc3RydWN0ZWQgPSB3ZWJLaXRXZWJBdWRpb1NyY0NvbnN0cnVjdGVkOwogICAgIG9iamVjdENs
YXNzLT5maW5hbGl6ZSA9IHdlYktpdFdlYkF1ZGlvU3JjRmluYWxpemU7CkBAIC0yMDUsMTMgKzE4
MSw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfYXVkaW9fc3JjX2luaXQoV2ViS2l0V2ViQXVk
aW9TcmMqIHNyYykKICAgICBwcml2LT5wcm92aWRlciA9IDA7CiAgICAgcHJpdi0+YnVzID0gMDsK
IAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgZ19yZWNfbXV0ZXhfaW5pdCgmcHJpdi0+
bXV0ZXgpOwogICAgIHByaXYtPnRhc2sgPSBnc3RfdGFza19uZXcocmVpbnRlcnByZXRfY2FzdDxH
c3RUYXNrRnVuY3Rpb24+KHdlYktpdFdlYkF1ZGlvU3JjTG9vcCksIHNyYywgMCk7Ci0jZWxzZQot
ICAgIGdfc3RhdGljX3JlY19tdXRleF9pbml0KCZwcml2LT5tdXRleCk7Ci0gICAgcHJpdi0+dGFz
ayA9IGdzdF90YXNrX2NyZWF0ZShyZWludGVycHJldF9jYXN0PEdzdFRhc2tGdW5jdGlvbj4od2Vi
S2l0V2ViQXVkaW9TcmNMb29wKSwgc3JjKTsKLSNlbmRpZgogCiAgICAgZ3N0X3Rhc2tfc2V0X2xv
Y2socHJpdi0+dGFzay5nZXQoKSwgJnByaXYtPm11dGV4KTsKIH0KQEAgLTI1MCwxNSArMjIxLDEx
IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjQ29uc3RydWN0ZWQoR09iamVjdCogb2Jq
ZWN0KQogCiAgICAgICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbW9ub0NhcHMgPSBhZG9wdEdSZWYoZ2V0
R1N0cmVhbWVyTW9ub0F1ZGlvQ2Fwcyhwcml2LT5zYW1wbGVSYXRlKSk7CiAKLSNpZmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQogICAgICAgICBHc3RBdWRpb0luZm8gaW5mbzsKICAgICAgICAgZ3N0X2F1
ZGlvX2luZm9fZnJvbV9jYXBzKCZpbmZvLCBtb25vQ2Fwcy5nZXQoKSk7CiAgICAgICAgIEdTVF9B
VURJT19JTkZPX1BPU0lUSU9OKCZpbmZvLCAwKSA9IHdlYktpdFdlYkF1ZGlvR1N0cmVhbWVyQ2hh
bm5lbFBvc2l0aW9uKGNoYW5uZWxJbmRleCk7CiAgICAgICAgIEdSZWZQdHI8R3N0Q2Fwcz4gY2Fw
cyA9IGFkb3B0R1JlZihnc3RfYXVkaW9faW5mb190b19jYXBzKCZpbmZvKSk7CiAgICAgICAgIGdf
b2JqZWN0X3NldChjYXBzZmlsdGVyLCAiY2FwcyIsIGNhcHMuZ2V0KCksIE5VTEwpOwotI2Vsc2UK
LSAgICAgICAgZ19vYmplY3Rfc2V0KGNhcHNmaWx0ZXIsICJjYXBzIiwgbW9ub0NhcHMuZ2V0KCks
IE5VTEwpOwotI2VuZGlmCiAKICAgICAgICAgLy8gQ29uZmlndXJlIHRoZSBxdWV1ZSBmb3IgbWlu
aW1hbCBsYXRlbmN5LgogICAgICAgICBnX29iamVjdF9zZXQocXVldWUsICJtYXgtc2l6ZS1idWZm
ZXJzIiwgc3RhdGljX2Nhc3Q8Z3VpbnQ+KDEpLCBOVUxMKTsKQEAgLTI4NCwxMSArMjUxLDcgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViQXVkaW9TcmNGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiAg
ICAgV2ViS2l0V2ViQXVkaW9TcmMqIHNyYyA9IFdFQktJVF9XRUJfQVVESU9fU1JDKG9iamVjdCk7
CiAgICAgV2ViS2l0V2ViQXVkaW9Tb3VyY2VQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCi0j
aWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBnX3JlY19tdXRleF9jbGVhcigmcHJpdi0+bXV0
ZXgpOwotI2Vsc2UKLSAgICBnX3N0YXRpY19yZWNfbXV0ZXhfZnJlZSgmcHJpdi0+bXV0ZXgpOwot
I2VuZGlmCiAKICAgICBnX3NsaXN0X2ZyZWVfZnVsbChwcml2LT5wYWRzLCByZWludGVycHJldF9j
YXN0PEdEZXN0cm95Tm90aWZ5Pihnc3Rfb2JqZWN0X3VucmVmKSk7CiAKQEAgLTM2MCwxNCArMzIz
LDEwIEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjTG9vcChXZWJLaXRXZWJBdWRpb1Ny
Yyogc3JjKQogICAgICAgICBHc3RCdWZmZXIqIGNoYW5uZWxCdWZmZXIgPSBnc3RfYnVmZmVyX25l
d19hbmRfYWxsb2MoYnVmZmVyU2l6ZSk7CiAgICAgICAgIEFTU0VSVChjaGFubmVsQnVmZmVyKTsK
ICAgICAgICAgY2hhbm5lbEJ1ZmZlckxpc3QgPSBnX3NsaXN0X3ByZXBlbmQoY2hhbm5lbEJ1ZmZl
ckxpc3QsIGNoYW5uZWxCdWZmZXIpOwotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgICAg
IEdzdE1hcEluZm8gaW5mbzsKICAgICAgICAgZ3N0X2J1ZmZlcl9tYXAoY2hhbm5lbEJ1ZmZlciwg
JmluZm8sIEdTVF9NQVBfUkVBRCk7CiAgICAgICAgIHByaXYtPmJ1cy0+c2V0Q2hhbm5lbE1lbW9y
eShpLCByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oaW5mby5kYXRhKSwgcHJpdi0+ZnJhbWVzVG9Q
dWxsKTsKICAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcChjaGFubmVsQnVmZmVyLCAmaW5mbyk7Ci0j
ZWxzZQotICAgICAgICBwcml2LT5idXMtPnNldENoYW5uZWxNZW1vcnkoaSwgcmVpbnRlcnByZXRf
Y2FzdDxmbG9hdCo+KEdTVF9CVUZGRVJfREFUQShjaGFubmVsQnVmZmVyKSksIHByaXYtPmZyYW1l
c1RvUHVsbCk7Ci0jZW5kaWYKICAgICB9CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9y
IGxvY2FsL2xpdmUgYXVkaW8gaW5wdXQuCkBAIC0zNzksMTQgKzMzOCw2IEBAIHN0YXRpYyB2b2lk
IHdlYktpdFdlYkF1ZGlvU3JjTG9vcChXZWJLaXRXZWJBdWRpb1NyYyogc3JjKQogICAgICAgICBH
c3RQYWQqIHBhZCA9IHN0YXRpY19jYXN0PEdzdFBhZCo+KHBhZHNJdC0+ZGF0YSk7CiAgICAgICAg
IEdzdEJ1ZmZlciogY2hhbm5lbEJ1ZmZlciA9IHN0YXRpY19jYXN0PEdzdEJ1ZmZlcio+KGJ1ZmZl
cnNJdC0+ZGF0YSk7CiAKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICAgICAgR1JlZlB0
cjxHc3RDYXBzPiBtb25vQ2FwcyA9IGFkb3B0R1JlZihnZXRHU3RyZWFtZXJNb25vQXVkaW9DYXBz
KHByaXYtPnNhbXBsZVJhdGUpKTsKLSAgICAgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
c3RfY2Fwc19nZXRfc3RydWN0dXJlKG1vbm9DYXBzLmdldCgpLCAwKTsKLSAgICAgICAgR3N0QXVk
aW9DaGFubmVsUG9zaXRpb24gY2hhbm5lbFBvc2l0aW9uID0gd2ViS2l0V2ViQXVkaW9HU3RyZWFt
ZXJDaGFubmVsUG9zaXRpb24oaSk7Ci0gICAgICAgIGdzdF9hdWRpb19zZXRfY2hhbm5lbF9wb3Np
dGlvbnMoc3RydWN0dXJlLCAmY2hhbm5lbFBvc2l0aW9uKTsKLSAgICAgICAgZ3N0X2J1ZmZlcl9z
ZXRfY2FwcyhjaGFubmVsQnVmZmVyLCBtb25vQ2Fwcy5nZXQoKSk7Ci0jZW5kaWYKLQogICAgICAg
ICBHc3RGbG93UmV0dXJuIHJldCA9IGdzdF9wYWRfY2hhaW4ocGFkLCBjaGFubmVsQnVmZmVyKTsK
ICAgICAgICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykKICAgICAgICAgICAgIEdTVF9FTEVNRU5U
X0VSUk9SKHNyYywgQ09SRSwgUEFELCAoIkludGVybmFsIFdlYkF1ZGlvU3JjIGVycm9yIiksICgi
RmFpbGVkIHRvIHB1c2ggYnVmZmVyIG9uICVzOiVzIiwgR1NUX0RFQlVHX1BBRF9OQU1FKHBhZCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4
IDkwZDMwYTY5YTQ2ODBiYzQxYjg5N2RkYzEzMmYxNmRlOWU0OWYwYTEuLjJmMGRlYmNjMDg3YzZm
OWFmNDdkMTUzNzY2NmM5ODIyNDg2ODg1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShW
SURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklE
RU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2luY2x1ZGUg
IkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCiAKQEAgLTU4LDQgKzU4LDQgQEAgdm9pZCBB
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdT
VFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lP
Tl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxF
KFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIu
aAppbmRleCBiMWU4YTQ4Yzc0MWUyZDEyNTU3ZGIxNDJhMDRhYTdmNzAxZjYzMDI1Li4zMjQyNjhi
NjY3NzY1NjVlZjFkZjY2MzkzMDJiMWI4NjZmM2VkNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVk
aW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBBdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lcl9oCiAjZGVmaW5lIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVh
bWVyX2gKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJ
REVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURF
TykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAi
QXVkaW9UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCkBAIC01
OSw2ICs1OSw2IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlm
IC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNL
KSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykg
JiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjZW5kaWYgLy8gQXVk
aW9UcmFja1ByaXZhdGVHU3RyZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuY3BwCmlu
ZGV4IDJhZGRjY2QzM2ZjNDI1NDE2YTY1OWQwY2YxYjVhZTU4ZWI5ODNhZTUuLmY3ZWY0NmRkODM5
MGQ5NDUzNDFmZTM4MDYzMjkwM2U1YWZiNjk2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1l
ci5jcHAKQEAgLTE5LDcgKzE5LDYgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkdSZWZQdHJHU3RyZWFtZXIuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCiAK
ICNpZiBVU0UoR1NUUkVBTUVSKQogI2luY2x1ZGUgPGdzdC9nc3QuaD4KQEAgLTI4LDE0ICsyNywx
NCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGUgPD4gR1JlZlB0cjxHc3RFbGVtZW50PiBh
ZG9wdEdSZWYoR3N0RWxlbWVudCogcHRyKQogewotICAgIEFTU0VSVCghcHRyIHx8ICFnc3RPYmpl
Y3RJc0Zsb2F0aW5nKEdTVF9PQkpFQ1QocHRyKSkpOworICAgIEFTU0VSVCghcHRyIHx8ICFnX29i
amVjdF9pc19mbG9hdGluZyhHX09CSkVDVChwdHIpKSk7CiAgICAgcmV0dXJuIEdSZWZQdHI8R3N0
RWxlbWVudD4ocHRyLCBHUmVmUHRyQWRvcHQpOwogfQogCiB0ZW1wbGF0ZSA8PiBHc3RFbGVtZW50
KiByZWZHUHRyPEdzdEVsZW1lbnQ+KEdzdEVsZW1lbnQqIHB0cikKIHsKICAgICBpZiAocHRyKQot
ICAgICAgICB3ZWJraXRHc3RPYmplY3RSZWZTaW5rKEdTVF9PQkpFQ1QocHRyKSk7CisgICAgICAg
IGdzdF9vYmplY3RfcmVmX3NpbmsoR1NUX09CSkVDVChwdHIpKTsKIAogICAgIHJldHVybiBwdHI7
CiB9CkBAIC00OCwxNCArNDcsMTQgQEAgdGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHI8R3N0RWxl
bWVudD4oR3N0RWxlbWVudCogcHRyKQogCiB0ZW1wbGF0ZSA8PiBHUmVmUHRyPEdzdFBhZD4gYWRv
cHRHUmVmKEdzdFBhZCogcHRyKQogewotICAgIEFTU0VSVCghcHRyIHx8ICFnc3RPYmplY3RJc0Zs
b2F0aW5nKEdTVF9PQkpFQ1QocHRyKSkpOworICAgIEFTU0VSVCghcHRyIHx8ICFnX29iamVjdF9p
c19mbG9hdGluZyhHX09CSkVDVChwdHIpKSk7CiAgICAgcmV0dXJuIEdSZWZQdHI8R3N0UGFkPihw
dHIsIEdSZWZQdHJBZG9wdCk7CiB9CiAKIHRlbXBsYXRlIDw+IEdzdFBhZCogcmVmR1B0cjxHc3RQ
YWQ+KEdzdFBhZCogcHRyKQogewogICAgIGlmIChwdHIpCi0gICAgICAgIHdlYmtpdEdzdE9iamVj
dFJlZlNpbmsoR1NUX09CSkVDVChwdHIpKTsKKyAgICAgICAgZ3N0X29iamVjdF9yZWZfc2luayhH
U1RfT0JKRUNUKHB0cikpOwogCiAgICAgcmV0dXJuIHB0cjsKIH0KQEAgLTY4LDE0ICs2NywxNCBA
QCB0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cjxHc3RQYWQ+KEdzdFBhZCogcHRyKQogCiB0ZW1w
bGF0ZSA8PiBHUmVmUHRyPEdzdFBhZFRlbXBsYXRlPiBhZG9wdEdSZWYoR3N0UGFkVGVtcGxhdGUq
IHB0cikKIHsKLSAgICBBU1NFUlQoIXB0ciB8fCAhZ3N0T2JqZWN0SXNGbG9hdGluZyhHU1RfT0JK
RUNUKHB0cikpKTsKKyAgICBBU1NFUlQoIXB0ciB8fCAhZ19vYmplY3RfaXNfZmxvYXRpbmcoR19P
QkpFQ1QocHRyKSkpOwogICAgIHJldHVybiBHUmVmUHRyPEdzdFBhZFRlbXBsYXRlPihwdHIsIEdS
ZWZQdHJBZG9wdCk7CiB9CiAKIHRlbXBsYXRlIDw+IEdzdFBhZFRlbXBsYXRlKiByZWZHUHRyPEdz
dFBhZFRlbXBsYXRlPihHc3RQYWRUZW1wbGF0ZSogcHRyKQogewogICAgIGlmIChwdHIpCi0gICAg
ICAgIHdlYmtpdEdzdE9iamVjdFJlZlNpbmsoR1NUX09CSkVDVChwdHIpKTsKKyAgICAgICAgZ3N0
X29iamVjdF9yZWZfc2luayhHU1RfT0JKRUNUKHB0cikpOwogCiAgICAgcmV0dXJuIHB0cjsKIH0K
QEAgLTEwNywxNCArMTA2LDE0IEBAIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyPEdzdENhcHM+
KEdzdENhcHMqIHB0cikKIAogdGVtcGxhdGUgPD4gR1JlZlB0cjxHc3RUYXNrPiBhZG9wdEdSZWYo
R3N0VGFzayogcHRyKQogewotICAgIEFTU0VSVCghZ3N0T2JqZWN0SXNGbG9hdGluZyhHU1RfT0JK
RUNUKHB0cikpKTsKKyAgICBBU1NFUlQoIWdfb2JqZWN0X2lzX2Zsb2F0aW5nKEdfT0JKRUNUKHB0
cikpKTsKICAgICByZXR1cm4gR1JlZlB0cjxHc3RUYXNrPihwdHIsIEdSZWZQdHJBZG9wdCk7CiB9
CiAKIHRlbXBsYXRlIDw+IEdzdFRhc2sqIHJlZkdQdHI8R3N0VGFzaz4oR3N0VGFzayogcHRyKQog
ewogICAgIGlmIChwdHIpCi0gICAgICAgIHdlYmtpdEdzdE9iamVjdFJlZlNpbmsoR1NUX09CSkVD
VChwdHIpKTsKKyAgICAgICAgZ3N0X29iamVjdF9yZWZfc2luayhHU1RfT0JKRUNUKHB0cikpOwog
CiAgICAgcmV0dXJuIHB0cjsKIH0KQEAgLTEyNywxNCArMTI2LDE0IEBAIHRlbXBsYXRlIDw+IHZv
aWQgZGVyZWZHUHRyPEdzdFRhc2s+KEdzdFRhc2sqIHB0cikKIAogdGVtcGxhdGUgPD4gR1JlZlB0
cjxHc3RCdXM+IGFkb3B0R1JlZihHc3RCdXMqIHB0cikKIHsKLSAgICBBU1NFUlQoIWdzdE9iamVj
dElzRmxvYXRpbmcoR1NUX09CSkVDVChwdHIpKSk7CisgICAgQVNTRVJUKCFnX29iamVjdF9pc19m
bG9hdGluZyhHX09CSkVDVChwdHIpKSk7CiAgICAgcmV0dXJuIEdSZWZQdHI8R3N0QnVzPihwdHIs
IEdSZWZQdHJBZG9wdCk7CiB9CiAKIHRlbXBsYXRlIDw+IEdzdEJ1cyogcmVmR1B0cjxHc3RCdXM+
KEdzdEJ1cyogcHRyKQogewogICAgIGlmIChwdHIpCi0gICAgICAgIHdlYmtpdEdzdE9iamVjdFJl
ZlNpbmsoR1NUX09CSkVDVChwdHIpKTsKKyAgICAgICAgZ3N0X29iamVjdF9yZWZfc2luayhHU1Rf
T0JKRUNUKHB0cikpOwogCiAgICAgcmV0dXJuIHB0cjsKIH0KQEAgLTE0NywxNCArMTQ2LDE0IEBA
IHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyPEdzdEJ1cz4oR3N0QnVzKiBwdHIpCiAKIHRlbXBs
YXRlIDw+IEdSZWZQdHI8R3N0RWxlbWVudEZhY3Rvcnk+IGFkb3B0R1JlZihHc3RFbGVtZW50RmFj
dG9yeSogcHRyKQogewotICAgIEFTU0VSVCghZ3N0T2JqZWN0SXNGbG9hdGluZyhHU1RfT0JKRUNU
KHB0cikpKTsKKyAgICBBU1NFUlQoIWdfb2JqZWN0X2lzX2Zsb2F0aW5nKEdfT0JKRUNUKHB0cikp
KTsKICAgICByZXR1cm4gR1JlZlB0cjxHc3RFbGVtZW50RmFjdG9yeT4ocHRyLCBHUmVmUHRyQWRv
cHQpOwogfQogCiB0ZW1wbGF0ZSA8PiBHc3RFbGVtZW50RmFjdG9yeSogcmVmR1B0cjxHc3RFbGVt
ZW50RmFjdG9yeT4oR3N0RWxlbWVudEZhY3RvcnkqIHB0cikKIHsKICAgICBpZiAocHRyKQotICAg
ICAgICB3ZWJraXRHc3RPYmplY3RSZWZTaW5rKEdTVF9PQkpFQ1QocHRyKSk7CisgICAgICAgIGdz
dF9vYmplY3RfcmVmX3NpbmsoR1NUX09CSkVDVChwdHIpKTsKIAogICAgIHJldHVybiBwdHI7CiB9
CkBAIC0xODQsNyArMTgzLDYgQEAgdGVtcGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxHc3RCdWZmZXI+
KEdzdEJ1ZmZlciogcHRyKQogICAgICAgICBnc3RfYnVmZmVyX3VucmVmKHB0cik7CiB9CiAKLSNp
ZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogdGVtcGxhdGU8PiBHUmVmUHRyPEdzdFNhbXBsZT4gYWRv
cHRHUmVmKEdzdFNhbXBsZSogcHRyKQogewogICAgIHJldHVybiBHUmVmUHRyPEdzdFNhbXBsZT4o
cHRyLCBHUmVmUHRyQWRvcHQpOwpAQCAtMjIyLDcgKzIyMCw2IEBAIHRlbXBsYXRlPD4gdm9pZCBk
ZXJlZkdQdHI8R3N0VGFnTGlzdD4oR3N0VGFnTGlzdCogcHRyKQogICAgIGlmIChwdHIpCiAgICAg
ICAgIGdzdF90YWdfbGlzdF91bnJlZihwdHIpOwogfQotI2VuZGlmCiAKIHRlbXBsYXRlPD4gR1Jl
ZlB0cjxHc3RFdmVudD4gYWRvcHRHUmVmKEdzdEV2ZW50KiBwdHIpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJH
U3RyZWFtZXIuaAppbmRleCA1ZTA1NjU3ZTU3YzdmNDAyNWNmYTM1NWRmOGJlN2E2NzY3NzNhNDFi
Li4yY2UwYTFkODA4YWUyMjQ1NmVhYjMzOGY1NDA1NTI1NWQzYWMxOThiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVm
UHRyR1N0cmVhbWVyLmgKQEAgLTMxLDEwICszMSw4IEBAIHR5cGVkZWYgc3RydWN0IF9Hc3RUYXNr
IEdzdFRhc2s7CiB0eXBlZGVmIHN0cnVjdCBfR3N0QnVzIEdzdEJ1czsKIHR5cGVkZWYgc3RydWN0
IF9Hc3RFbGVtZW50RmFjdG9yeSBHc3RFbGVtZW50RmFjdG9yeTsKIHR5cGVkZWYgc3RydWN0IF9H
c3RCdWZmZXIgR3N0QnVmZmVyOwotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiB0eXBlZGVmIHN0
cnVjdCBfR3N0U2FtcGxlIEdzdFNhbXBsZTsKIHR5cGVkZWYgc3RydWN0IF9Hc3RUYWdMaXN0IEdz
dFRhZ0xpc3Q7Ci0jZW5kaWYKIHR5cGVkZWYgc3RydWN0IF9Hc3RFdmVudCBHc3RFdmVudDsKIHR5
cGVkZWYgc3RydWN0IF9Hc3RUb2MgR3N0VG9jOwogCkBAIC03MiwxNyArNzAsMTMgQEAgdGVtcGxh
dGU8PiBHUmVmUHRyPEdzdEJ1ZmZlcj4gYWRvcHRHUmVmKEdzdEJ1ZmZlciogcHRyKTsKIHRlbXBs
YXRlPD4gR3N0QnVmZmVyKiByZWZHUHRyPEdzdEJ1ZmZlcj4oR3N0QnVmZmVyKiBwdHIpOwogdGVt
cGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxHc3RCdWZmZXI+KEdzdEJ1ZmZlciogcHRyKTsKIAotI2lm
ZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0vKiBHc3RTYW1wbGUgd2FzIGFkZGVkIGluIEdTdHJlYW1l
ciAxLjAgKi8KIHRlbXBsYXRlPD4gR1JlZlB0cjxHc3RTYW1wbGU+IGFkb3B0R1JlZihHc3RTYW1w
bGUqIHB0cik7CiB0ZW1wbGF0ZTw+IEdzdFNhbXBsZSogcmVmR1B0cjxHc3RTYW1wbGU+KEdzdFNh
bXBsZSogcHRyKTsKIHRlbXBsYXRlPD4gdm9pZCBkZXJlZkdQdHI8R3N0U2FtcGxlPihHc3RTYW1w
bGUqIHB0cik7CiAKLS8qIEdzdFRhZ0xpc3QgaXNuJ3QgcmVmY291bnRlZCBpbiBHU3RyZWFtZXIg
MC4xMCAqLwogdGVtcGxhdGU8PiBHUmVmUHRyPEdzdFRhZ0xpc3Q+IGFkb3B0R1JlZihHc3RUYWdM
aXN0KiBwdHIpOwogdGVtcGxhdGU8PiBHc3RUYWdMaXN0KiByZWZHUHRyPEdzdFRhZ0xpc3Q+KEdz
dFRhZ0xpc3QqIHB0cik7CiB0ZW1wbGF0ZTw+IHZvaWQgZGVyZWZHUHRyPEdzdFRhZ0xpc3Q+KEdz
dFRhZ0xpc3QqIHB0cik7Ci0jZW5kaWYKIAogdGVtcGxhdGU8PiBHUmVmUHRyPEdzdEV2ZW50PiBh
ZG9wdEdSZWYoR3N0RXZlbnQqIHB0cik7CiB0ZW1wbGF0ZTw+IEdzdEV2ZW50KiByZWZHUHRyPEdz
dEV2ZW50PihHc3RFdmVudCogcHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAK
aW5kZXggZmMzODYyZGE4MWI4NDM0ZjBlMTU2YmM2OThkNzM0NzNmN2YzMmU5Ny4uMTZkNzVmNzhh
NjExMjVmODUwZTUzMWEwNjA3YTM5YWU4ZmUwMzQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0
aWxpdGllcy5jcHAKQEAgLTIxLDExICsyMSwxMDQgQEAKICNpbmNsdWRlICJHU3RyZWFtZXJVdGls
aXRpZXMuaCIKIAogI2lmIFVTRShHU1RSRUFNRVIpCisKKyNpbmNsdWRlICJJbnRTaXplLmgiCisK
KyNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Nv
bnN0IGNoYXIqIHdlYmtpdEdzdE1hcEluZm9RdWFya1N0cmluZyA9ICJ3ZWJraXQtZ3N0LW1hcC1p
bmZvIjsKKworR3N0UGFkKiB3ZWJraXRHc3RHaG9zdFBhZEZyb21TdGF0aWNUZW1wbGF0ZShHc3RT
dGF0aWNQYWRUZW1wbGF0ZSogc3RhdGljUGFkVGVtcGxhdGUsIGNvbnN0IGdjaGFyKiBuYW1lLCBH
c3RQYWQqIHRhcmdldCkKK3sKKyAgICBHc3RQYWQqIHBhZDsKKyAgICBHc3RQYWRUZW1wbGF0ZSog
cGFkVGVtcGxhdGUgPSBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQoc3RhdGljUGFkVGVtcGxh
dGUpOworCisgICAgaWYgKHRhcmdldCkKKyAgICAgICAgcGFkID0gZ3N0X2dob3N0X3BhZF9uZXdf
ZnJvbV90ZW1wbGF0ZShuYW1lLCB0YXJnZXQsIHBhZFRlbXBsYXRlKTsKKyAgICBlbHNlCisgICAg
ICAgIHBhZCA9IGdzdF9naG9zdF9wYWRfbmV3X25vX3RhcmdldF9mcm9tX3RlbXBsYXRlKG5hbWUs
IHBhZFRlbXBsYXRlKTsKKworICAgIGdzdF9vYmplY3RfdW5yZWYocGFkVGVtcGxhdGUpOworCisg
ICAgcmV0dXJuIHBhZDsKK30KKworI2lmIEVOQUJMRShWSURFTykKK2Jvb2wgZ2V0VmlkZW9TaXpl
QW5kRm9ybWF0RnJvbUNhcHMoR3N0Q2FwcyogY2FwcywgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwg
R3N0VmlkZW9Gb3JtYXQmIGZvcm1hdCwgaW50JiBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBp
bnQmIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciwgaW50JiBzdHJpZGUpCit7CisgICAgR3N0
VmlkZW9JbmZvIGluZm87CisKKyAgICBpZiAoIWdzdF9jYXBzX2lzX2ZpeGVkKGNhcHMpIHx8ICFn
c3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNhcHMpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBmb3JtYXQgPSBHU1RfVklERU9fSU5GT19GT1JNQVQoJmluZm8pOworICAgIHNp
emUuc2V0V2lkdGgoR1NUX1ZJREVPX0lORk9fV0lEVEgoJmluZm8pKTsKKyAgICBzaXplLnNldEhl
aWdodChHU1RfVklERU9fSU5GT19IRUlHSFQoJmluZm8pKTsKKyAgICBwaXhlbEFzcGVjdFJhdGlv
TnVtZXJhdG9yID0gR1NUX1ZJREVPX0lORk9fUEFSX04oJmluZm8pOworICAgIHBpeGVsQXNwZWN0
UmF0aW9EZW5vbWluYXRvciA9IEdTVF9WSURFT19JTkZPX1BBUl9EKCZpbmZvKTsKKyAgICBzdHJp
ZGUgPSBHU1RfVklERU9fSU5GT19QTEFORV9TVFJJREUoJmluZm8sIDApOworCisgICAgcmV0dXJu
IHRydWU7Cit9CisjZW5kaWYKKworR3N0QnVmZmVyKiBjcmVhdGVHc3RCdWZmZXIoR3N0QnVmZmVy
KiBidWZmZXIpCit7CisgICAgZ3NpemUgYnVmZmVyU2l6ZSA9IGdzdF9idWZmZXJfZ2V0X3NpemUo
YnVmZmVyKTsKKyAgICBHc3RCdWZmZXIqIG5ld0J1ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FuZF9h
bGxvYyhidWZmZXJTaXplKTsKKworICAgIGlmICghbmV3QnVmZmVyKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIGdzdF9idWZmZXJfY29weV9pbnRvKG5ld0J1ZmZlciwgYnVmZmVyLCBzdGF0aWNf
Y2FzdDxHc3RCdWZmZXJDb3B5RmxhZ3M+KEdTVF9CVUZGRVJfQ09QWV9NRVRBREFUQSksIDAsIGJ1
ZmZlclNpemUpOworICAgIHJldHVybiBuZXdCdWZmZXI7Cit9CisKK0dzdEJ1ZmZlciogY3JlYXRl
R3N0QnVmZmVyRm9yRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIEdz
dEJ1ZmZlciogYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jKGxlbmd0aCk7CisKKyAg
ICBnc3RfYnVmZmVyX2ZpbGwoYnVmZmVyLCAwLCBkYXRhLCBsZW5ndGgpOworCisgICAgcmV0dXJu
IGJ1ZmZlcjsKK30KKworY2hhciogZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIoR3N0QnVmZmVyKiBi
dWZmZXIpCit7CisgICAgR3N0TWluaU9iamVjdCogbWluaU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8R3N0TWluaU9iamVjdCo+KGJ1ZmZlcik7CisgICAgR3N0TWFwSW5mbyogbWFwSW5mbyA9IHN0
YXRpY19jYXN0PEdzdE1hcEluZm8qPihnc3RfbWluaV9vYmplY3RfZ2V0X3FkYXRhKG1pbmlPYmpl
Y3QsIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKHdlYmtpdEdzdE1hcEluZm9RdWFya1N0cmlu
ZykpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWFwSW5mby0+ZGF0YSk7
Cit9CisKK3ZvaWQgbWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciogYnVmZmVyKQoreworICAgIEdzdE1h
cEluZm8qIG1hcEluZm8gPSBnX3NsaWNlX25ldyhHc3RNYXBJbmZvKTsKKyAgICBpZiAoIWdzdF9i
dWZmZXJfbWFwKGJ1ZmZlciwgbWFwSW5mbywgR1NUX01BUF9XUklURSkpIHsKKyAgICAgICAgZ19z
bGljZV9mcmVlKEdzdE1hcEluZm8sIG1hcEluZm8pOworICAgICAgICBnc3RfYnVmZmVyX3VucmVm
KGJ1ZmZlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHc3RNaW5pT2JqZWN0KiBt
aW5pT2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RNaW5pT2JqZWN0Kj4oYnVmZmVyKTsKKyAg
ICBnc3RfbWluaV9vYmplY3Rfc2V0X3FkYXRhKG1pbmlPYmplY3QsIGdfcXVhcmtfZnJvbV9zdGF0
aWNfc3RyaW5nKHdlYmtpdEdzdE1hcEluZm9RdWFya1N0cmluZyksIG1hcEluZm8sIDApOworfQor
Cit2b2lkIHVubWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciogYnVmZmVyKQoreworICAgIEdzdE1pbmlP
YmplY3QqIG1pbmlPYmplY3QgPSByZWludGVycHJldF9jYXN0PEdzdE1pbmlPYmplY3QqPihidWZm
ZXIpOworICAgIEdzdE1hcEluZm8qIG1hcEluZm8gPSBzdGF0aWNfY2FzdDxHc3RNYXBJbmZvKj4o
Z3N0X21pbmlfb2JqZWN0X3N0ZWFsX3FkYXRhKG1pbmlPYmplY3QsIGdfcXVhcmtfZnJvbV9zdGF0
aWNfc3RyaW5nKHdlYmtpdEdzdE1hcEluZm9RdWFya1N0cmluZykpKTsKKworICAgIGlmICghbWFw
SW5mbykKKyAgICAgICAgcmV0dXJuOworCisgICAgZ3N0X2J1ZmZlcl91bm1hcChidWZmZXIsIG1h
cEluZm8pOworICAgIGdfc2xpY2VfZnJlZShHc3RNYXBJbmZvLCBtYXBJbmZvKTsKK30KKwogYm9v
bCBpbml0aWFsaXplR1N0cmVhbWVyKCkKIHsKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigwLCAxMCwg
MzEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmgKaW5kZXggM2VkZGNiNzE1OTEzYzg4Zjg4
YzQ1YjVmZmExYTUzY2JmNjVkMTU5Ny4uNzU1ZGJkYjcyMDMwZjM5NTRmZWE5MjJlMDg0NmNhZmFm
Mzk0YmUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuaApAQCAtMTgsNiArMTgsOSBA
QAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1
ZGUgPGdzdC92aWRlby92aWRlby5oPgorCiAjZGVmaW5lIExPR19NRURJQV9NRVNTQUdFKC4uLikg
ZG8geyBcCiAgICAgR1NUX0RFQlVHKF9fVkFfQVJHU19fKTsgXAogICAgIExPR19WRVJCT1NFKE1l
ZGlhLCBfX1ZBX0FSR1NfXyk7IH0gd2hpbGUgKDApCkBAIC0zNSw1ICszOCwzOSBAQAogICAgIExP
R19WRVJCT1NFKE1lZGlhLCBfX1ZBX0FSR1NfXyk7IH0gd2hpbGUgKDApCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgSW50U2l6ZTsKKworaW5saW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tW
ZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8pCit7CisgICAgZ3Vp
bnQgY3VycmVudE1ham9yLCBjdXJyZW50TWlub3IsIGN1cnJlbnRNaWNybywgY3VycmVudE5hbm87
CisgICAgZ3N0X3ZlcnNpb24oJmN1cnJlbnRNYWpvciwgJmN1cnJlbnRNaW5vciwgJmN1cnJlbnRN
aWNybywgJmN1cnJlbnROYW5vKTsKKworICAgIGlmIChjdXJyZW50TWFqb3IgPCBtYWpvcikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjdXJyZW50TWFqb3IgPiBtYWpvcikKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoY3VycmVudE1pbm9yIDwgbWlub3IpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoY3VycmVudE1pbm9yID4gbWlub3IpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgaWYgKGN1cnJlbnRNaWNybyA8IG1pY3JvKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworR3N0UGFkKiB3ZWJraXRHc3RHaG9z
dFBhZEZyb21TdGF0aWNUZW1wbGF0ZShHc3RTdGF0aWNQYWRUZW1wbGF0ZSosIGNvbnN0IGdjaGFy
KiBuYW1lLCBHc3RQYWQqIHRhcmdldCk7CisjaWYgRU5BQkxFKFZJREVPKQorYm9vbCBnZXRWaWRl
b1NpemVBbmRGb3JtYXRGcm9tQ2FwcyhHc3RDYXBzKiwgV2ViQ29yZTo6SW50U2l6ZSYsIEdzdFZp
ZGVvRm9ybWF0JiwgaW50JiBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBpbnQmIHBpeGVsQXNw
ZWN0UmF0aW9EZW5vbWluYXRvciwgaW50JiBzdHJpZGUpOworI2VuZGlmCitHc3RCdWZmZXIqIGNy
ZWF0ZUdzdEJ1ZmZlcihHc3RCdWZmZXIqKTsKK0dzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVyRm9y
RGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKK2NoYXIqIGdldEdzdEJ1ZmZlckRh
dGFQb2ludGVyKEdzdEJ1ZmZlciopOwordm9pZCBtYXBHc3RCdWZmZXIoR3N0QnVmZmVyKik7Cit2
b2lkIHVubWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciopOwogYm9vbCBpbml0aWFsaXplR1N0cmVhbWVy
KCk7CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMzVlOTZiMzQyYmJkN2JkNzI0MGRhYzJmMzE0MTU5ODUzYWFhOTM0
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBJZ2FsaWEsIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBDb2xsYWJvcmEgTHRkLgot
ICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJHU3RyZWFtZXJWZXJz
aW9uaW5nLmgiCi0KLSNpZiBVU0UoR1NUUkVBTUVSKQotI2luY2x1ZGUgIkludFNpemUuaCIKLQot
I2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0jaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+Ci0j
ZWxzZQotI2luY2x1ZGUgPGdzdC9hdWRpby9tdWx0aWNoYW5uZWwuaD4KLSNpbmNsdWRlIDxzdHJp
bmcuaD4KLSNlbmRpZgotCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLWNvbnN0IGNoYXIqIHdl
YmtpdEdzdE1hcEluZm9RdWFya1N0cmluZyA9ICJ3ZWJraXQtZ3N0LW1hcC1pbmZvIjsKLSNlbmRp
ZgotCi12b2lkIHdlYmtpdEdzdE9iamVjdFJlZlNpbmsoR3N0T2JqZWN0KiBnc3RPYmplY3QpCi17
Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBnc3Rfb2JqZWN0X3JlZl9zaW5rKGdzdE9i
amVjdCk7Ci0jZWxzZQotICAgIGdzdF9vYmplY3RfcmVmKGdzdE9iamVjdCk7Ci0gICAgZ3N0X29i
amVjdF9zaW5rKGdzdE9iamVjdCk7Ci0jZW5kaWYKLX0KLQotR3N0UGFkKiB3ZWJraXRHc3RHaG9z
dFBhZEZyb21TdGF0aWNUZW1wbGF0ZShHc3RTdGF0aWNQYWRUZW1wbGF0ZSogc3RhdGljUGFkVGVt
cGxhdGUsIGNvbnN0IGdjaGFyKiBuYW1lLCBHc3RQYWQqIHRhcmdldCkKLXsKLSAgICBHc3RQYWQq
IHBhZDsKLSAgICBHc3RQYWRUZW1wbGF0ZSogcGFkVGVtcGxhdGUgPSBnc3Rfc3RhdGljX3BhZF90
ZW1wbGF0ZV9nZXQoc3RhdGljUGFkVGVtcGxhdGUpOwotCi0gICAgaWYgKHRhcmdldCkKLSAgICAg
ICAgcGFkID0gZ3N0X2dob3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZShuYW1lLCB0YXJnZXQsIHBh
ZFRlbXBsYXRlKTsKLSAgICBlbHNlCi0gICAgICAgIHBhZCA9IGdzdF9naG9zdF9wYWRfbmV3X25v
X3RhcmdldF9mcm9tX3RlbXBsYXRlKG5hbWUsIHBhZFRlbXBsYXRlKTsKLQotI2lmZGVmIEdTVF9B
UElfVkVSU0lPTl8xCi0gICAgZ3N0X29iamVjdF91bnJlZihwYWRUZW1wbGF0ZSk7Ci0jZW5kaWYK
LQotICAgIHJldHVybiBwYWQ7Ci19Ci0KLUdSZWZQdHI8R3N0Q2Fwcz4gd2Via2l0R3N0R2V0UGFk
Q2FwcyhHc3RQYWQqIHBhZCkKLXsKLSAgICBpZiAoIXBhZCkKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotICAgIHJldHVybiBhZG9wdEdSZWYoZ3N0X3BhZF9n
ZXRfY3VycmVudF9jYXBzKHBhZCkpOyAvLyBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgcmV0dXJu
IGEgbmV3IHJlZmVyZW5jZS4KLSNlbHNlCi0gICAgcmV0dXJuIEdTVF9QQURfQ0FQUyhwYWQpOwot
I2VuZGlmCi19Ci0KLUdSZWZQdHI8R3N0QnVzPiB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHc3RQ
aXBlbGluZSogcGlwZWxpbmUpCi17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICByZXR1
cm4gYWRvcHRHUmVmKGdzdF9waXBlbGluZV9nZXRfYnVzKHBpcGVsaW5lKSk7Ci0jZWxzZQotICAg
IC8vIGdzdF9waXBlbGluZV9nZXRfYnVzIHJldHVybnMgYSBmbG9hdGluZyByZWZlcmVuY2UgaW4K
LSAgICAvLyBnc3RyZWFtZXIgMC4xMCBzbyB3ZSBzaG91bGQgbm90IGFkb3B0LgotICAgIHJldHVy
biBnc3RfcGlwZWxpbmVfZ2V0X2J1cyhwaXBlbGluZSk7Ci0jZW5kaWYKLX0KLQotI2lmIEVOQUJM
RShWSURFTykKLWJvb2wgZ2V0VmlkZW9TaXplQW5kRm9ybWF0RnJvbUNhcHMoR3N0Q2FwcyogY2Fw
cywgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgR3N0VmlkZW9Gb3JtYXQmIGZvcm1hdCwgaW50JiBw
aXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRv
ciwgaW50JiBzdHJpZGUpCi17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBHc3RWaWRl
b0luZm8gaW5mbzsKLQotICAgIGlmICghZ3N0X2NhcHNfaXNfZml4ZWQoY2FwcykgfHwgIWdzdF92
aWRlb19pbmZvX2Zyb21fY2FwcygmaW5mbywgY2FwcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGZvcm1hdCA9IEdTVF9WSURFT19JTkZPX0ZPUk1BVCgmaW5mbyk7Ci0gICAgc2l6ZS5z
ZXRXaWR0aChHU1RfVklERU9fSU5GT19XSURUSCgmaW5mbykpOwotICAgIHNpemUuc2V0SGVpZ2h0
KEdTVF9WSURFT19JTkZPX0hFSUdIVCgmaW5mbykpOwotICAgIHBpeGVsQXNwZWN0UmF0aW9OdW1l
cmF0b3IgPSBHU1RfVklERU9fSU5GT19QQVJfTigmaW5mbyk7Ci0gICAgcGl4ZWxBc3BlY3RSYXRp
b0Rlbm9taW5hdG9yID0gR1NUX1ZJREVPX0lORk9fUEFSX0QoJmluZm8pOwotICAgIHN0cmlkZSA9
IEdTVF9WSURFT19JTkZPX1BMQU5FX1NUUklERSgmaW5mbywgMCk7Ci0jZWxzZQotICAgIGdpbnQg
d2lkdGgsIGhlaWdodDsKLSAgICBpZiAoIUdTVF9JU19DQVBTKGNhcHMpIHx8ICFnc3RfY2Fwc19p
c19maXhlZChjYXBzKQotICAgICAgICB8fCAhZ3N0X3ZpZGVvX2Zvcm1hdF9wYXJzZV9jYXBzKGNh
cHMsICZmb3JtYXQsICZ3aWR0aCwgJmhlaWdodCkKLSAgICAgICAgfHwgIWdzdF92aWRlb19wYXJz
ZV9jYXBzX3BpeGVsX2FzcGVjdF9yYXRpbyhjYXBzLCAmcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRv
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
cGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHNpemUuc2V0V2lkdGgod2lkdGgpOwotICAgIHNpemUuc2V0SGVpZ2h0KGhlaWdodCk7Ci0gICAg
c3RyaWRlID0gc2l6ZS53aWR0aCgpICogNDsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHRydWU7Ci19
Ci0jZW5kaWYKLQotR3N0QnVmZmVyKiBjcmVhdGVHc3RCdWZmZXIoR3N0QnVmZmVyKiBidWZmZXIp
Ci17Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgR3N0QnVmZmVyKiBuZXdCdWZmZXIg
PSBnc3RfYnVmZmVyX3RyeV9uZXdfYW5kX2FsbG9jKEdTVF9CVUZGRVJfU0laRShidWZmZXIpKTsK
LSNlbHNlCi0gICAgZ3NpemUgYnVmZmVyU2l6ZSA9IGdzdF9idWZmZXJfZ2V0X3NpemUoYnVmZmVy
KTsKLSAgICBHc3RCdWZmZXIqIG5ld0J1ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyhi
dWZmZXJTaXplKTsKLSNlbmRpZgotCi0gICAgaWYgKCFuZXdCdWZmZXIpCi0gICAgICAgIHJldHVy
biAwOwotCi0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgZ3N0X2J1ZmZlcl9jb3B5X21l
dGFkYXRhKG5ld0J1ZmZlciwgYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RCdWZmZXJDb3B5RmxhZ3M+
KEdTVF9CVUZGRVJfQ09QWV9BTEwpKTsKLSNlbHNlCi0gICAgZ3N0X2J1ZmZlcl9jb3B5X2ludG8o
bmV3QnVmZmVyLCBidWZmZXIsIHN0YXRpY19jYXN0PEdzdEJ1ZmZlckNvcHlGbGFncz4oR1NUX0JV
RkZFUl9DT1BZX01FVEFEQVRBKSwgMCwgYnVmZmVyU2l6ZSk7Ci0jZW5kaWYKLSAgICByZXR1cm4g
bmV3QnVmZmVyOwotfQotCi1Hc3RCdWZmZXIqIGNyZWF0ZUdzdEJ1ZmZlckZvckRhdGEoY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkKLXsKLSAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9i
dWZmZXJfbmV3X2FuZF9hbGxvYyhsZW5ndGgpOwotCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEK
LSAgICBnc3RfYnVmZmVyX2ZpbGwoYnVmZmVyLCAwLCBkYXRhLCBsZW5ndGgpOwotI2Vsc2UKLSAg
ICBtZW1jcHkoR1NUX0JVRkZFUl9EQVRBKGJ1ZmZlciksIGRhdGEsIGxlbmd0aCk7Ci0jZW5kaWYK
LQotICAgIHJldHVybiBidWZmZXI7Ci19Ci0KLWludCBnZXRHc3RCdWZmZXJTaXplKEdzdEJ1ZmZl
ciogYnVmZmVyKQotewotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgcmV0dXJuIGdzdF9i
dWZmZXJfZ2V0X3NpemUoYnVmZmVyKTsKLSNlbHNlCi0gICAgcmV0dXJuIEdTVF9CVUZGRVJfU0la
RShidWZmZXIpOwotI2VuZGlmCi19Ci0KLXZvaWQgc2V0R3N0QnVmZmVyU2l6ZShHc3RCdWZmZXIq
IGJ1ZmZlciwgaW50IG5ld1NpemUpCi17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBn
c3RfYnVmZmVyX3NldF9zaXplKGJ1ZmZlciwgc3RhdGljX2Nhc3Q8Z3NzaXplPihuZXdTaXplKSk7
Ci0jZWxzZQotICAgIEdTVF9CVUZGRVJfU0laRShidWZmZXIpID0gc3RhdGljX2Nhc3Q8Z3NpemU+
KG5ld1NpemUpOwotI2VuZGlmCi19Ci0KLWNoYXIqIGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKEdz
dEJ1ZmZlciogYnVmZmVyKQotewotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgR3N0TWlu
aU9iamVjdCogbWluaU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+KGJ1
ZmZlcik7Ci0gICAgR3N0TWFwSW5mbyogbWFwSW5mbyA9IHN0YXRpY19jYXN0PEdzdE1hcEluZm8q
Pihnc3RfbWluaV9vYmplY3RfZ2V0X3FkYXRhKG1pbmlPYmplY3QsIGdfcXVhcmtfZnJvbV9zdGF0
aWNfc3RyaW5nKHdlYmtpdEdzdE1hcEluZm9RdWFya1N0cmluZykpKTsKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4obWFwSW5mby0+ZGF0YSk7Ci0jZWxzZQotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihHU1RfQlVGRkVSX0RBVEEoYnVmZmVyKSk7Ci0jZW5kaWYK
LX0KLQotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi12b2lkIG1hcEdzdEJ1ZmZlcihHc3RCdWZm
ZXIqIGJ1ZmZlcikKLXsKLSAgICBHc3RNYXBJbmZvKiBtYXBJbmZvID0gZ19zbGljZV9uZXcoR3N0
TWFwSW5mbyk7Ci0gICAgaWYgKCFnc3RfYnVmZmVyX21hcChidWZmZXIsIG1hcEluZm8sIEdTVF9N
QVBfV1JJVEUpKSB7Ci0gICAgICAgIGdfc2xpY2VfZnJlZShHc3RNYXBJbmZvLCBtYXBJbmZvKTsK
LSAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgR3N0TWluaU9iamVjdCogbWluaU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
TWluaU9iamVjdCo+KGJ1ZmZlcik7Ci0gICAgZ3N0X21pbmlfb2JqZWN0X3NldF9xZGF0YShtaW5p
T2JqZWN0LCBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZyh3ZWJraXRHc3RNYXBJbmZvUXVhcmtT
dHJpbmcpLCBtYXBJbmZvLCAwKTsKLX0KLQotdm9pZCB1bm1hcEdzdEJ1ZmZlcihHc3RCdWZmZXIq
IGJ1ZmZlcikKLXsKLSAgICBHc3RNaW5pT2JqZWN0KiBtaW5pT2JqZWN0ID0gcmVpbnRlcnByZXRf
Y2FzdDxHc3RNaW5pT2JqZWN0Kj4oYnVmZmVyKTsKLSAgICBHc3RNYXBJbmZvKiBtYXBJbmZvID0g
c3RhdGljX2Nhc3Q8R3N0TWFwSW5mbyo+KGdzdF9taW5pX29iamVjdF9zdGVhbF9xZGF0YShtaW5p
T2JqZWN0LCBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZyh3ZWJraXRHc3RNYXBJbmZvUXVhcmtT
dHJpbmcpKSk7Ci0KLSAgICBpZiAoIW1hcEluZm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGdz
dF9idWZmZXJfdW5tYXAoYnVmZmVyLCBtYXBJbmZvKTsKLSAgICBnX3NsaWNlX2ZyZWUoR3N0TWFw
SW5mbywgbWFwSW5mbyk7Ci19Ci0jZW5kaWYKLQotdm9pZCBzZXRHc3RFbGVtZW50Q2xhc3NNZXRh
ZGF0YShHc3RFbGVtZW50Q2xhc3MqIGVsZW1lbnRDbGFzcywgY29uc3QgY2hhciogbmFtZSwgY29u
c3QgY2hhciogbG9uZ05hbWUsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiBh
dXRob3IpCi17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBnc3RfZWxlbWVudF9jbGFz
c19zZXRfbWV0YWRhdGEoZWxlbWVudENsYXNzLCBuYW1lLCBsb25nTmFtZSwgZGVzY3JpcHRpb24s
IGF1dGhvcik7Ci0jZWxzZQotICAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9kZXRhaWxzX3NpbXBs
ZShlbGVtZW50Q2xhc3MsIG5hbWUsIGxvbmdOYW1lLCBkZXNjcmlwdGlvbiwgYXV0aG9yKTsKLSNl
bmRpZgotfQotCi1ib29sIGdzdE9iamVjdElzRmxvYXRpbmcoR3N0T2JqZWN0KiBnc3RPYmplY3Qp
Ci17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICByZXR1cm4gZ19vYmplY3RfaXNfZmxv
YXRpbmcoR19PQkpFQ1QoZ3N0T2JqZWN0KSk7Ci0jZWxzZQotICAgIHJldHVybiBHU1RfT0JKRUNU
X0lTX0ZMT0FUSU5HKGdzdE9iamVjdCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBub3RpZnlHc3RUYWdz
T25QYWQoR3N0RWxlbWVudCogZWxlbWVudCwgR3N0UGFkKiBwYWQsIEdzdFRhZ0xpc3QqIHRhZ3Mp
Ci17Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7
Ci0gICAgZ3N0X3BhZF9wdXNoX2V2ZW50KEdTVF9QQURfQ0FTVChwYWQpLCBnc3RfZXZlbnRfbmV3
X3RhZyh0YWdzKSk7Ci0jZWxzZQotICAgIGdzdF9lbGVtZW50X2ZvdW5kX3RhZ3NfZm9yX3BhZChl
bGVtZW50LCBwYWQsIHRhZ3MpOwotI2VuZGlmCi19Ci0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQot
R3N0Q2FwcyogZ2V0R3N0QXVkaW9DYXBzKGludCBjaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkK
LXsKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotICAgIHJldHVybiBnc3RfY2Fwc19uZXdfc2lt
cGxlKCJhdWRpby94LXJhdyIsICJyYXRlIiwgR19UWVBFX0lOVCwgc3RhdGljX2Nhc3Q8aW50Pihz
YW1wbGVSYXRlKSwKLSAgICAgICAgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgY2hhbm5lbHMsCi0g
ICAgICAgICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBnc3RfYXVkaW9fZm9ybWF0X3RvX3N0cmlu
ZyhHU1RfQVVESU9fRk9STUFUX0YzMiksCi0gICAgICAgICJsYXlvdXQiLCBHX1RZUEVfU1RSSU5H
LCAiaW50ZXJsZWF2ZWQiLCBOVUxMKTsKLSNlbHNlCi0gICAgcmV0dXJuIGdzdF9jYXBzX25ld19z
aW1wbGUoImF1ZGlvL3gtcmF3LWZsb2F0IiwgInJhdGUiLCBHX1RZUEVfSU5ULCBzdGF0aWNfY2Fz
dDxpbnQ+KHNhbXBsZVJhdGUpLAotICAgICAgICAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCBjaGFu
bmVscywKLSAgICAgICAgImVuZGlhbm5lc3MiLCBHX1RZUEVfSU5ULCBHX0JZVEVfT1JERVIsCi0g
ICAgICAgICJ3aWR0aCIsIEdfVFlQRV9JTlQsIDMyLCBOVUxMKTsKLSNlbmRpZgotfQotI2VuZGlm
Ci0KLSNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5n
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MDU1YmI3NDFmZDkwN2FkYzI1OWM1
YTc4NDMxMzRkNmM1N2VlZmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclZlcnNpb25pbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhLCBTLkwuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgR1N0cmVh
bWVyVmVyc2lvbmluZ19oCi0jZGVmaW5lIEdTdHJlYW1lclZlcnNpb25pbmdfaAotI2lmIFVTRShH
U1RSRUFNRVIpCi0KLSNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCi0jaW5jbHVkZSA8Z3N0
L2dzdC5oPgotI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBJbnRTaXplOwotfTsKLQotaW5saW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJz
aW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8pCi17Ci0gICAgZ3VpbnQg
Y3VycmVudE1ham9yLCBjdXJyZW50TWlub3IsIGN1cnJlbnRNaWNybywgY3VycmVudE5hbm87Ci0g
ICAgZ3N0X3ZlcnNpb24oJmN1cnJlbnRNYWpvciwgJmN1cnJlbnRNaW5vciwgJmN1cnJlbnRNaWNy
bywgJmN1cnJlbnROYW5vKTsKLQotICAgIGlmIChjdXJyZW50TWFqb3IgPCBtYWpvcikKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjdXJyZW50TWFqb3IgPiBtYWpvcikKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoY3VycmVudE1pbm9yIDwgbWlub3IpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoY3VycmVudE1pbm9yID4gbWlub3IpCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgaWYgKGN1cnJlbnRNaWNybyA8IG1pY3JvKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCB3ZWJraXRHc3RPYmplY3RSZWZT
aW5rKEdzdE9iamVjdCopOwotR3N0UGFkKiB3ZWJraXRHc3RHaG9zdFBhZEZyb21TdGF0aWNUZW1w
bGF0ZShHc3RTdGF0aWNQYWRUZW1wbGF0ZSosIGNvbnN0IGdjaGFyKiBuYW1lLCBHc3RQYWQqIHRh
cmdldCk7Ci1HUmVmUHRyPEdzdENhcHM+IHdlYmtpdEdzdEdldFBhZENhcHMoR3N0UGFkKik7Ci1H
UmVmUHRyPEdzdEJ1cz4gd2Via2l0R3N0UGlwZWxpbmVHZXRCdXMoR3N0UGlwZWxpbmUqKTsKLSNp
ZiBFTkFCTEUoVklERU8pCi1ib29sIGdldFZpZGVvU2l6ZUFuZEZvcm1hdEZyb21DYXBzKEdzdENh
cHMqLCBXZWJDb3JlOjpJbnRTaXplJiwgR3N0VmlkZW9Gb3JtYXQmLCBpbnQmIHBpeGVsQXNwZWN0
UmF0aW9OdW1lcmF0b3IsIGludCYgcGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yLCBpbnQmIHN0
cmlkZSk7Ci0jZW5kaWYKLUdzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVyKEdzdEJ1ZmZlciopOwot
R3N0QnVmZmVyKiBjcmVhdGVHc3RCdWZmZXJGb3JEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBs
ZW5ndGgpOwotaW50IGdldEdzdEJ1ZmZlclNpemUoR3N0QnVmZmVyKik7Ci12b2lkIHNldEdzdEJ1
ZmZlclNpemUoR3N0QnVmZmVyKiwgaW50IG5ld1NpemUpOwotY2hhciogZ2V0R3N0QnVmZmVyRGF0
YVBvaW50ZXIoR3N0QnVmZmVyKik7Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLXZvaWQgbWFw
R3N0QnVmZmVyKEdzdEJ1ZmZlciopOwotdm9pZCB1bm1hcEdzdEJ1ZmZlcihHc3RCdWZmZXIqKTsK
LSNlbmRpZgotdm9pZCBzZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YShHc3RFbGVtZW50Q2xhc3Mq
LCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBsb25nTmFtZSwgY29uc3QgY2hhciogZGVz
Y3JpcHRpb24sIGNvbnN0IGNoYXIqIGF1dGhvcik7Ci1ib29sIGdzdE9iamVjdElzRmxvYXRpbmco
R3N0T2JqZWN0Kik7Ci12b2lkIG5vdGlmeUdzdFRhZ3NPblBhZChHc3RFbGVtZW50KiwgR3N0UGFk
KiwgR3N0VGFnTGlzdCopOwotI2lmIEVOQUJMRShXRUJfQVVESU8pCi1Hc3RDYXBzKiBnZXRHc3RB
dWRpb0NhcHMoaW50IGNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsKLSNlbmRpZgotI2VuZGlm
IC8vIFVTRShHU1RSRUFNRVIpCi0jZW5kaWYgLy8gR1N0cmVhbWVyVmVyc2lvbmluZ19oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VH
U3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lci5oCmluZGV4IDhiNDZjZDY4OGQyZDQzZDBmNmE2Y2RlMGMwNDhmYWU2YjMx
YzRmZWIuLjM4YmYzYjRkMWFkMTNiNjI3NjQxMTc2NmFhZDJiYTE0MGM5NmFiMTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJl
YW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lci5oCkBAIC0yNCw3ICsyNCwxMCBAQAogCiAjaW5jbHVkZSAiQml0bWFwSW1h
Z2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJWZXJzaW9u
aW5nLmgiCisjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgorCisjaW5jbHVkZSA8Z3N0L2dz
dC5oPgorCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTYwLDcgKzYzLDcgQEAgY2xhc3Mg
SW1hZ2VHU3RyZWFtZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUdTdHJlYW1lcj4gewogICAg
ICAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IG1faW1hZ2U7CiAgICAgICAgIEZsb2F0UmVjdCBtX2Ny
b3BSZWN0OwogCi0jaWYgVVNFKENBSVJPKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQor
I2lmIFVTRShDQUlSTykKICAgICAgICAgR1JlZlB0cjxHc3RCdWZmZXI+IG1fYnVmZmVyOwogICAg
ICAgICBHc3RNYXBJbmZvIG1fbWFwSW5mbzsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVh
bWVyQ2Fpcm8uY3BwCmluZGV4IDc1ZTEyNmYxYjQ4OTZmNTI1YTY5ZDVjYzk3NDIzZTM0NjJjNjAx
MzIuLjA5MDkyMDdkNzVjZjViNmMyMzAwM2RmYzBhMTQzMjE4ZDExMWYyYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1l
ckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAKQEAgLTIyLDM0ICsyMiwyOCBAQAogCiAjaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQogCisjaW5jbHVkZSAiR1N0cmVhbWVyVXRpbGl0
aWVzLmgiCisKICNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQog
I2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4KLSNlbmRpZgogCiAKIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogSW1hZ2VHU3RyZWFtZXI6
OkltYWdlR1N0cmVhbWVyKEdzdEJ1ZmZlciogYnVmZmVyLCBHc3RDYXBzKiBjYXBzKQotI2lmZGVm
IEdTVF9BUElfVkVSU0lPTl8xCiAgICAgOiBtX2J1ZmZlcihidWZmZXIpCi0jZW5kaWYKIHsKICAg
ICBHc3RWaWRlb0Zvcm1hdCBmb3JtYXQ7CiAgICAgSW50U2l6ZSBzaXplOwogICAgIGludCBwaXhl
bEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IsIHN0cmlk
ZTsKICAgICBnZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9tQ2FwcyhjYXBzLCBzaXplLCBmb3JtYXQs
IHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IsIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciwg
c3RyaWRlKTsKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgZ3N0X2J1ZmZlcl9tYXAo
YnVmZmVyLCAmbV9tYXBJbmZvLCBHU1RfTUFQX1JFQUQpOwogICAgIHVuc2lnbmVkIGNoYXIqIGJ1
ZmZlckRhdGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihtX21hcEluZm8uZGF0
YSk7Ci0jZWxzZQotICAgIHVuc2lnbmVkIGNoYXIqIGJ1ZmZlckRhdGEgPSByZWludGVycHJldF9j
YXN0PHVuc2lnbmVkIGNoYXIqPihHU1RfQlVGRkVSX0RBVEEoYnVmZmVyKSk7Ci0jZW5kaWYKIAog
ICAgIGNhaXJvX2Zvcm1hdF90IGNhaXJvRm9ybWF0OwogI2lmIEdfQllURV9PUkRFUiA9PSBHX0xJ
VFRMRV9FTkRJQU4KQEAgLTYyLDEwICs1Niw4IEBAIEltYWdlR1N0cmVhbWVyOjpJbWFnZUdTdHJl
YW1lcihHc3RCdWZmZXIqIGJ1ZmZlciwgR3N0Q2FwcyogY2FwcykKICAgICBBU1NFUlQoY2Fpcm9f
c3VyZmFjZV9zdGF0dXMoc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpOwog
ICAgIG1faW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKHN1cmZhY2UucmVsZWFzZSgpKTsKIAot
I2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgaWYgKEdzdFZpZGVvQ3JvcE1ldGEqIGNyb3BN
ZXRhID0gZ3N0X2J1ZmZlcl9nZXRfdmlkZW9fY3JvcF9tZXRhKGJ1ZmZlcikpCiAgICAgICAgIHNl
dENyb3BSZWN0KEZsb2F0UmVjdChjcm9wTWV0YS0+eCwgY3JvcE1ldGEtPnksIGNyb3BNZXRhLT53
aWR0aCwgY3JvcE1ldGEtPmhlaWdodCkpOwotI2VuZGlmCiB9CiAKIEltYWdlR1N0cmVhbWVyOjp+
SW1hZ2VHU3RyZWFtZXIoKQpAQCAtNzUsMTAgKzY3LDggQEAgSW1hZ2VHU3RyZWFtZXI6On5JbWFn
ZUdTdHJlYW1lcigpCiAKICAgICBtX2ltYWdlID0gMDsKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCiAgICAgLy8gV2Uga2VlcCB0aGUgYnVmZmVyIG1lbW9yeSBtYXBwZWQgdW50aWwgdGhlIGlt
YWdlIGlzIGRlc3Ryb3llZCBiZWNhdXNlIHRoZSBpbnRlcm5hbAogICAgIC8vIGNhaXJvX3N1cmZh
Y2VfdCB3YXMgY3JlYXRlZCB1c2luZyBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0
YSgpLgogICAgIGdzdF9idWZmZXJfdW5tYXAobV9idWZmZXIuZ2V0KCksICZtX21hcEluZm8pOwot
I2VuZGlmCiB9CiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCAy
ZGI2NWU0ZjVjNmEyYWIxYzFlZTVmNTFlNDhmMzczYzg2YTZlMDQxLi4wM2U0MDFkYTZkYTNkNDY0
ZGIzMTY1ODQ1OTgxYzUyYTkyMjE1MmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0yNiw3ICsyNiw3
IEBACiAjaWZuZGVmIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcl9oCiAj
ZGVmaW5lIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcl9oCiAKLSNpZiBF
TkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYg
ZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RS
RUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFt
ZXIuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCkBAIC01Nyw2ICs1Nyw2
IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJM
RShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZp
bmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdT
VFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjZW5kaWYgLy8gSW5iYW5kTWV0YWRh
dGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBjODQ5YjhjZWIwN2Y3MmM2MzA0
OGY4ODc0MTI1ZWZhOGZkZmZmZWRkLi5iZWQxMGZhYTdjMjU1YmY2ZjdmMGVhZTkxNTJmODg3MTNi
ZWI2ZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAot
I2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNL
KSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNF
KEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIgogCkBAIC0xNTcsNCArMTU3LDQgQEAgdm9pZCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mU3RyZWFtQ2hhbmdlZCgp
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYg
VVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElf
VkVSU0lPTl8xKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYg
RU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmgKaW5kZXggNDM4OGY5ODBjMDY2YTM2MmUzZjcwNTU0ZmE2NjMwY2Vi
Njc3YWQyNi4uYWM1ZDIwNmZiNTYzNGNlNmZiOGUwM2RkMDg3NmU3Y2VlMmIxOTU5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0y
Niw3ICsyNiw3IEBACiAjaWZuZGVmIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXJfaAog
I2RlZmluZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyX2gKIAotI2lmIEVOQUJMRShW
SURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVk
KEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikg
JiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgog
I2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKQEAgLTcxLDYgKzcxLDYgQEAgcHJp
dmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVP
KSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NU
X0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVS
KSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNlbmRpZiAvLyBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKaW5kZXggNDYwMjk3OTdmMWY2Nzk0MzdmMTY1N2UwMWVkZTExYTVkZDAzMjdmZS4u
YmEzMWM2MzNmZWEyNGZiODNiMTYyOGNiZWQ3OTZhYWEyYzk2NDU5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI3LDcgKzI3LDYgQEAK
ICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAKICNpbmNsdWRlICJHU3RyZWFt
ZXJVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCiAjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1lZGlh
UGxheWVyLmgiCkBAIC00MSw3ICs0MCw3IEBACiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShWSURFT19U
UkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCiAjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJJ
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJJbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCkBAIC01MCwxMSArNDksNyBAQAogI2luY2x1
ZGUgIlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCiAjZW5kaWYKIAotI2lmZGVmIEdTVF9B
UElfVkVSU0lPTl8xCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL3N0cmVhbXZvbHVtZS5oPgotI2Vsc2UK
LSNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy9zdHJlYW12b2x1bWUuaD4KLSNlbmRpZgogCiAjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKICNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgpAQCAtNzYsMTgg
KzcxLDYgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBHU1RfUExBWV9GTEFHX0JVRkZFUklORyAgICAg
PSAweDAwMDAwMDEwMAogfSBHc3RQbGF5RmxhZ3M7CiAKLS8vIGdQZXJjZW50TWF4IGlzIHVzZWQg
d2hlbiBwYXJzaW5nIGJ1ZmZlcmluZyByYW5nZXMgd2l0aAotLy8gZ3N0X3F1ZXJ5X3BhcnNlX250
aF9idWZmZXJpbmdfcmFuZ2UgYXMgdGhlcmUgd2FzIGEgYnVnIGluIEdTdHJlYW1lcgotLy8gMC4x
MCB0aGF0IHdhcyB1c2luZyAxMDAgaW5zdGVhZCBvZiBHU1RfRk9STUFUX1BFUkNFTlRfTUFYLiBU
aGlzIHdhcwotLy8gY29ycmVjdGVkIGluIDEuMC4gZ3N0X3F1ZXJ5X3BhcnNlX2J1ZmZlcmluZ19y
YW5nZSB3b3JrZWQgYXMKLS8vIGV4cGVjdGVkIHdpdGggR1NUX0ZPUk1BVF9QRVJDRU5UX01BWCBp
biBib3RoIGNhc2VzLgotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi1zdGF0aWMgY29uc3QgY2hh
ciogZ1BsYXliaW5OYW1lID0gInBsYXliaW4iOwotc3RhdGljIGNvbnN0IGdpbnQ2NCBnUGVyY2Vu
dE1heCA9IEdTVF9GT1JNQVRfUEVSQ0VOVF9NQVg7Ci0jZWxzZQotc3RhdGljIGNvbnN0IGNoYXIq
IGdQbGF5YmluTmFtZSA9ICJwbGF5YmluMiI7Ci1zdGF0aWMgY29uc3QgZ2ludDY0IGdQZXJjZW50
TWF4ID0gMTAwOwotI2VuZGlmCiAvLyBNYXggaW50ZXJ2YWwgaW4gc2Vjb25kcyB0byBzdGF5IGlu
IHRoZSBSRUFEWSBzdGF0ZSBvbiBtYW51YWwKIC8vIHN0YXRlIGNoYW5nZSByZXF1ZXN0cy4KIHN0
YXRpYyBjb25zdCBndWludCBnUmVhZHlTdGF0ZVRpbWVySW50ZXJ2YWwgPSA2MDsKQEAgLTEzMSwx
MiArMTE0LDggQEAgc3RhdGljIGdib29sZWFuIG1lZGlhUGxheWVyUHJpdmF0ZUF1ZGlvQ2hhbmdl
VGltZW91dENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdmF0ZUcKICAgICByZXR1cm4gRkFMU0U7CiB9
CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogc3RhdGljIHZvaWQgc2V0QXVkaW9TdHJlYW1Q
cm9wZXJ0aWVzQ2FsbGJhY2soR3N0Q2hpbGRQcm94eSosIEdPYmplY3QqIG9iamVjdCwgZ2NoYXIq
LAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQotI2Vsc2UKLXN0YXRp
YyB2b2lkIHNldEF1ZGlvU3RyZWFtUHJvcGVydGllc0NhbGxiYWNrKEdzdENoaWxkUHJveHkqLCBH
T2JqZWN0KiBvYmplY3QsIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQotI2Vu
ZGlmCiB7CiAgICAgcGxheWVyLT5zZXRBdWRpb1N0cmVhbVByb3BlcnRpZXMob2JqZWN0KTsKIH0K
QEAgLTE1NSw3ICsxMzQsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2YXRlVmlk
ZW9DYXBzQ2hhbmdlVGltZW91dENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdgogICAgIHJldHVybiBG
QUxTRTsKIH0KIAotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZF
UlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBzdGF0aWMgdm9pZCBtZWRpYVBsYXll
clByaXZhdGVUZXh0Q2hhbmdlZENhbGxiYWNrKEdPYmplY3QqLCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIqIHBsYXllcikKIHsKICAgICBwbGF5ZXItPnRleHRDaGFuZ2VkKCk7CkBAIC0yNTAs
NyArMjI5LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmlzQXZhaWxhYmxl
KCkKICAgICBpZiAoIWluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdpc3RlcldlYktpdEVsZW1lbnRz
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudEZhY3Rv
cnk+IGZhY3RvcnkgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2ZpbmQoZ1BsYXliaW5OYW1lKTsKKyAg
ICBHUmVmUHRyPEdzdEVsZW1lbnRGYWN0b3J5PiBmYWN0b3J5ID0gZ3N0X2VsZW1lbnRfZmFjdG9y
eV9maW5kKCJwbGF5YmluIik7CiAgICAgcmV0dXJuIGZhY3Rvcnk7CiB9CiAKQEAgLTI5OSw3ICsy
NzgsNyBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcihNZWRpYVBsYXllciogcGxheWVyKQogCiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogewotI2lmIEVOQUJMRShWSURFT19U
UkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2F1ZGlvVHJhY2tzLnNpemUoKTsgKytp
KQogICAgICAgICBtX2F1ZGlvVHJhY2tzW2ldLT5kaXNjb25uZWN0KCk7CiAKQEAgLTMyNSw3ICsz
MDQsNyBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIoKQogICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9yZWFkeVRpbWVySGFuZGxlcik7
CiAKICAgICBpZiAobV9wbGF5QmluKSB7Ci0gICAgICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSB3
ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUobV9wbGF5QmluLmdldCgpKSk7Cisg
ICAgICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9i
dXMoR1NUX1BJUEVMSU5FKG1fcGxheUJpbi5nZXQoKSkpKTsKICAgICAgICAgQVNTRVJUKGJ1cyk7
CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhidXMuZ2V0KCks
IHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KG1lZGlhUGxheWVyUHJpdmF0ZU1lc3NhZ2VDYWxs
YmFjayksIHRoaXMpOwogICAgICAgICBnc3RfYnVzX3JlbW92ZV9zaWduYWxfd2F0Y2goYnVzLmdl
dCgpKTsKQEAgLTMzMyw3ICszMTIsNyBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19k
aXNjb25uZWN0X2J5X2Z1bmMobV9wbGF5QmluLmdldCgpLCByZWludGVycHJldF9jYXN0PGdwb2lu
dGVyPihtZWRpYVBsYXllclByaXZhdGVTb3VyY2VDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKICAg
ICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fcGxheUJpbi5nZXQo
KSwgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4obWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DaGFu
Z2VkQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVj
dF9ieV9mdW5jKG1fcGxheUJpbi5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4obWVk
aWFQbGF5ZXJQcml2YXRlQXVkaW9DaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKLSNpZiBFTkFCTEUo
VklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMo
bV9wbGF5QmluLmdldCgpLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPihtZWRpYVBsYXllclBy
aXZhdGVOZXdUZXh0U2FtcGxlQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgZ19zaWduYWxfaGFu
ZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fcGxheUJpbi5nZXQoKSwgcmVpbnRlcnByZXRfY2Fz
dDxncG9pbnRlcj4obWVkaWFQbGF5ZXJQcml2YXRlVGV4dENoYW5nZWRDYWxsYmFjayksIHRoaXMp
OwogI2VuZGlmCkBAIC01NDMsMTEgKzUyMiw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6ZHVyYXRpb24oKSBjb25zdAogICAgIEdzdEZvcm1hdCB0aW1lRm9ybWF0ID0gR1NU
X0ZPUk1BVF9USU1FOwogICAgIGdpbnQ2NCB0aW1lTGVuZ3RoID0gMDsKIAotI2lmZGVmIEdTVF9B
UElfVkVSU0lPTl8xCiAgICAgYm9vbCBmYWlsdXJlID0gIWdzdF9lbGVtZW50X3F1ZXJ5X2R1cmF0
aW9uKG1fcGxheUJpbi5nZXQoKSwgdGltZUZvcm1hdCwgJnRpbWVMZW5ndGgpIHx8IHN0YXRpY19j
YXN0PGd1aW50NjQ+KHRpbWVMZW5ndGgpID09IEdTVF9DTE9DS19USU1FX05PTkU7Ci0jZWxzZQot
ICAgIGJvb2wgZmFpbHVyZSA9ICFnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbihtX3BsYXlCaW4u
Z2V0KCksICZ0aW1lRm9ybWF0LCAmdGltZUxlbmd0aCkgfHwgdGltZUZvcm1hdCAhPSBHU1RfRk9S
TUFUX1RJTUUgfHwgc3RhdGljX2Nhc3Q8Z3VpbnQ2ND4odGltZUxlbmd0aCkgPT0gR1NUX0NMT0NL
X1RJTUVfTk9ORTsKLSNlbmRpZgogICAgIGlmIChmYWlsdXJlKSB7CiAgICAgICAgIExPR19NRURJ
QV9NRVNTQUdFKCJUaW1lIGR1cmF0aW9uIHF1ZXJ5IGZhaWxlZCBmb3IgJXMiLCBtX3VybC5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6aW5maW5pdHkoKTsKQEAgLTY4OCw3ICs2NjMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZWaWRlbygpCiAKICAgICBtX2hhc1ZpZGVvID0gbnVt
VHJhY2tzID4gMDsKIAotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJ
X1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgZm9yIChnaW50IGkgPSAw
OyBpIDwgbnVtVHJhY2tzOyArK2kpIHsKICAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHBhZDsKICAg
ICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fcGxheUJpbi5nZXQoKSwgImdldC12aWRlby1w
YWQiLCBpLCAmcGFkLm91dFB0cigpLCBOVUxMKTsKQEAgLTc0MSw3ICs3MTYsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygpCiAKICAgICBt
X2hhc0F1ZGlvID0gbnVtVHJhY2tzID4gMDsKIAotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYg
ZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAg
Zm9yIChnaW50IGkgPSAwOyBpIDwgbnVtVHJhY2tzOyArK2kpIHsKICAgICAgICAgR1JlZlB0cjxH
c3RQYWQ+IHBhZDsKICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fcGxheUJpbi5nZXQo
KSwgImdldC1hdWRpby1wYWQiLCBpLCAmcGFkLm91dFB0cigpLCBOVUxMKTsKQEAgLTc3MCw3ICs3
NDUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZB
dWRpbygpCiAgICAgbV9wbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyRW5n
aW5lVXBkYXRlZChtX3BsYXllcik7CiB9CiAKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRl
ZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRleHRDaGFuZ2VkKCkKIHsKICAgICBpZiAobV90
ZXh0VGltZXJIYW5kbGVyKQpAQCAtOTI3LDggKzkwMiw4IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdl
cz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCgpIGNvbnN0CiAgICAgZm9y
IChndWludCBpbmRleCA9IDA7IGluZGV4IDwgZ3N0X3F1ZXJ5X2dldF9uX2J1ZmZlcmluZ19yYW5n
ZXMocXVlcnkpOyBpbmRleCsrKSB7CiAgICAgICAgIGdpbnQ2NCByYW5nZVN0YXJ0ID0gMCwgcmFu
Z2VTdG9wID0gMDsKICAgICAgICAgaWYgKGdzdF9xdWVyeV9wYXJzZV9udGhfYnVmZmVyaW5nX3Jh
bmdlKHF1ZXJ5LCBpbmRleCwgJnJhbmdlU3RhcnQsICZyYW5nZVN0b3ApKQotICAgICAgICAgICAg
dGltZVJhbmdlcy0+YWRkKHN0YXRpY19jYXN0PGZsb2F0PigocmFuZ2VTdGFydCAqIG1lZGlhRHVy
YXRpb24pIC8gZ1BlcmNlbnRNYXgpLAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0
PigocmFuZ2VTdG9wICogbWVkaWFEdXJhdGlvbikgLyBnUGVyY2VudE1heCkpOworICAgICAgICAg
ICAgdGltZVJhbmdlcy0+YWRkKHN0YXRpY19jYXN0PGZsb2F0PigocmFuZ2VTdGFydCAqIG1lZGlh
RHVyYXRpb24pIC8gR1NUX0ZPUk1BVF9QRVJDRU5UX01BWCksCisgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KChyYW5nZVN0b3AgKiBtZWRpYUR1cmF0aW9uKSAvIEdTVF9GT1JNQVRf
UEVSQ0VOVF9NQVgpKTsKICAgICB9CiAKICAgICAvLyBGYWxsYmFjayB0byB0aGUgbW9yZSBnZW5l
cmFsIG1heFRpbWVMb2FkZWQoKSBpZiBubyByYW5nZSBoYXMKQEAgLTEwMzMsMTEgKzEwMDgsNyBA
QCBnYm9vbGVhbiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0
TWVzc2FnZSogbWVzc2FnZSkKICAgICBjYXNlIEdTVF9NRVNTQUdFX0JVRkZFUklORzoKICAgICAg
ICAgcHJvY2Vzc0J1ZmZlcmluZ1N0YXRzKG1lc3NhZ2UpOwogICAgICAgICBicmVhazsKLSNpZmRl
ZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGNhc2UgR1NUX01FU1NBR0VfRFVSQVRJT05fQ0hBTkdF
RDoKLSNlbHNlCi0gICAgY2FzZSBHU1RfTUVTU0FHRV9EVVJBVElPTjoKLSNlbmRpZgogICAgICAg
ICBpZiAobWVzc2FnZVNvdXJjZUlzUGxheWJpbikKICAgICAgICAgICAgIGR1cmF0aW9uQ2hhbmdl
ZCgpOwogICAgICAgICBicmVhazsKQEAgLTEwNjIsNyArMTAzMyw3IEBAIGdib29sZWFuIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdl
KQogICAgICAgICAgICAgZ19mcmVlKGRldGFpbCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQor
I2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBjYXNlIEdTVF9NRVNTQUdFX1RPQzoKICAgICAg
ICAgcHJvY2Vzc1RhYmxlT2ZDb250ZW50cyhtZXNzYWdlKTsKICAgICAgICAgYnJlYWs7CkBAIC0x
MDk1LDcgKzEwNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vz
c0J1ZmZlcmluZ1N0YXRzKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgdXBkYXRlU3RhdGVzKCk7
CiB9CiAKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9O
XzEpCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVzc2FnZSogbWVzc2FnZSkKIHsKICAg
ICBpZiAobV9jaGFwdGVyc1RyYWNrKQpAQCAtMTIzOSwxMSArMTIxMCw3IEBAIHVuc2lnbmVkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxCeXRlcygpIGNvbnN0CiAKICAgICBHc3RG
b3JtYXQgZm10ID0gR1NUX0ZPUk1BVF9CWVRFUzsKICAgICBnaW50NjQgbGVuZ3RoID0gMDsKLSNp
ZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGlmIChnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlv
bihtX3NvdXJjZS5nZXQoKSwgZm10LCAmbGVuZ3RoKSkgewotI2Vsc2UKLSAgICBpZiAoZ3N0X2Vs
ZW1lbnRfcXVlcnlfZHVyYXRpb24obV9zb3VyY2UuZ2V0KCksICZmbXQsICZsZW5ndGgpKSB7Ci0j
ZW5kaWYKICAgICAgICAgSU5GT19NRURJQV9NRVNTQUdFKCJ0b3RhbEJ5dGVzICUiIEdfR0lOVDY0
X0ZPUk1BVCwgbGVuZ3RoKTsKICAgICAgICAgbV90b3RhbEJ5dGVzID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGxlbmd0aCk7CiAgICAgICAgIG1faXNTdHJlYW1pbmcgPSAhbGVuZ3RoOwpAQCAtMTI1
NSw3ICsxMjIyLDYgQEAgdW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0b3Rh
bEJ5dGVzKCkgY29uc3QKICAgICBHc3RJdGVyYXRvciogaXRlciA9IGdzdF9lbGVtZW50X2l0ZXJh
dGVfc3JjX3BhZHMobV9zb3VyY2UuZ2V0KCkpOwogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwogICAg
IHdoaWxlICghZG9uZSkgewotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgICAgIEdWYWx1
ZSBpdGVtID0gR19WQUxVRV9JTklUOwogICAgICAgICBzd2l0Y2ggKGdzdF9pdGVyYXRvcl9uZXh0
KGl0ZXIsICZpdGVtKSkgewogICAgICAgICBjYXNlIEdTVF9JVEVSQVRPUl9PSzogewpAQCAtMTI2
NSwxOCArMTIzMSw2IEBAIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90
YWxCeXRlcygpIGNvbnN0CiAgICAgICAgICAgICAgICAgbGVuZ3RoID0gcGFkTGVuZ3RoOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgIGdwb2ludGVyIGRhdGE7
Ci0KLSAgICAgICAgc3dpdGNoIChnc3RfaXRlcmF0b3JfbmV4dChpdGVyLCAmZGF0YSkpIHsKLSAg
ICAgICAgY2FzZSBHU1RfSVRFUkFUT1JfT0s6IHsKLSAgICAgICAgICAgIEdSZWZQdHI8R3N0UGFk
PiBwYWQgPSBhZG9wdEdSZWYoR1NUX1BBRF9DQVNUKGRhdGEpKTsKLSAgICAgICAgICAgIGdpbnQ2
NCBwYWRMZW5ndGggPSAwOwotICAgICAgICAgICAgaWYgKGdzdF9wYWRfcXVlcnlfZHVyYXRpb24o
cGFkLmdldCgpLCAmZm10LCAmcGFkTGVuZ3RoKSAmJiBwYWRMZW5ndGggPiBsZW5ndGgpCi0gICAg
ICAgICAgICAgICAgbGVuZ3RoID0gcGFkTGVuZ3RoOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSNlbmRpZgogICAgICAgICBjYXNlIEdTVF9JVEVSQVRPUl9SRVNZTkM6CiAgICAgICAg
ICAgICBnc3RfaXRlcmF0b3JfcmVzeW5jKGl0ZXIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0x
Mjg3LDkgKzEyNDEsNyBAQCB1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRv
dGFsQnl0ZXMoKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotI2lmZGVm
IEdTVF9BUElfVkVSU0lPTl8xCiAgICAgICAgIGdfdmFsdWVfdW5zZXQoJml0ZW0pOwotI2VuZGlm
CiAgICAgfQogCiAgICAgZ3N0X2l0ZXJhdG9yX2ZyZWUoaXRlcik7CkBAIC0xOTA1LDEwICsxODU3
LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5Qmlu
KCkKIAogICAgIC8vIGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgpIHJldHVybnMgYSBmbG9hdGlu
ZyByZWZlcmVuY2Ugc28KICAgICAvLyB3ZSBzaG91bGQgbm90IGFkb3B0LgotICAgIG1fcGxheUJp
biA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZShnUGxheWJpbk5hbWUsICJwbGF5Iik7CisgICAg
bV9wbGF5QmluID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJwbGF5YmluIiwgInBsYXkiKTsK
ICAgICBzZXRTdHJlYW1Wb2x1bWVFbGVtZW50KEdTVF9TVFJFQU1fVk9MVU1FKG1fcGxheUJpbi5n
ZXQoKSkpOwogCi0gICAgR1JlZlB0cjxHc3RCdXM+IGJ1cyA9IHdlYmtpdEdzdFBpcGVsaW5lR2V0
QnVzKEdTVF9QSVBFTElORShtX3BsYXlCaW4uZ2V0KCkpKTsKKyAgICBHUmVmUHRyPEdzdEJ1cz4g
YnVzID0gYWRvcHRHUmVmKGdzdF9waXBlbGluZV9nZXRfYnVzKEdTVF9QSVBFTElORShtX3BsYXlC
aW4uZ2V0KCkpKSk7CiAgICAgZ3N0X2J1c19hZGRfc2lnbmFsX3dhdGNoKGJ1cy5nZXQoKSk7CiAg
ICAgZ19zaWduYWxfY29ubmVjdChidXMuZ2V0KCksICJtZXNzYWdlIiwgR19DQUxMQkFDSyhtZWRp
YVBsYXllclByaXZhdGVNZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKIApAQCAtMTkxNyw3ICsxODY5
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4o
KQogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wbGF5QmluLmdldCgpLCAibm90aWZ5Ojpzb3VyY2Ui
LCBHX0NBTExCQUNLKG1lZGlhUGxheWVyUHJpdmF0ZVNvdXJjZUNoYW5nZWRDYWxsYmFjayksIHRo
aXMpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wbGF5QmluLmdldCgpLCAidmlkZW8tY2hhbmdl
ZCIsIEdfQ0FMTEJBQ0sobWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9DaGFuZ2VkQ2FsbGJhY2spLCB0
aGlzKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fcGxheUJpbi5nZXQoKSwgImF1ZGlvLWNoYW5n
ZWQiLCBHX0NBTExCQUNLKG1lZGlhUGxheWVyUHJpdmF0ZUF1ZGlvQ2hhbmdlZENhbGxiYWNrKSwg
dGhpcyk7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lP
Tl8xKQorI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAod2Via2l0R3N0Q2hlY2tWZXJz
aW9uKDEsIDEsIDIpKSB7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wbGF5QmluLmdldCgp
LCAidGV4dC1jaGFuZ2VkIiwgR19DQUxMQkFDSyhtZWRpYVBsYXllclByaXZhdGVUZXh0Q2hhbmdl
ZENhbGxiYWNrKSwgdGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuaAppbmRleCBkN2Y1M2M0MzZlZGQ1ZDViYmJhOWMxZjg5N2Q5M2Q0ZWVmNTM0ZWZm
Li43ZjZlMmQ2N2E3NmYwYmI3YjU3ZTljOWJkMjdjMTJjMWU2Nzk3ODlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0xMDAsNyArMTAwLDcgQEAg
cHVibGljOgogICAgIHZvaWQgbm90aWZ5UGxheWVyT2ZWaWRlb0NhcHMoKTsKICAgICB2b2lkIG5v
dGlmeVBsYXllck9mQXVkaW8oKTsKIAotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5l
ZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgdm9pZCB0
ZXh0Q2hhbmdlZCgpOwogICAgIHZvaWQgbm90aWZ5UGxheWVyT2ZUZXh0KCk7CiAKQEAgLTE0Myw3
ICsxNDMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXREb3dubG9hZEJ1ZmZlcmluZygpOwog
ICAgIHZvaWQgcHJvY2Vzc0J1ZmZlcmluZ1N0YXRzKEdzdE1lc3NhZ2UqKTsKLSNpZiBFTkFCTEUo
VklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50cyhHc3RNZXNzYWdlKik7
CiAgICAgdm9pZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkoR3N0VG9jRW50cnkqLCBHc3RU
b2NFbnRyeSogcGFyZW50KTsKICNlbmRpZgpAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiBw
cml2YXRlOgogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9wbGF5QmluOwogICAgIEdSZWZQdHI8
R3N0RWxlbWVudD4gbV9zb3VyY2U7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVk
KEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBHUmVmUHRy
PEdzdEVsZW1lbnQ+IG1fdGV4dEFwcFNpbms7CiAgICAgR1JlZlB0cjxHc3RQYWQ+IG1fdGV4dEFw
cFNpbmtQYWQ7CiAjZW5kaWYKQEAgLTE5OCw3ICsxOTgsNyBAQCBwcml2YXRlOgogICAgIEdzdFN0
YXRlIG1fcmVxdWVzdGVkU3RhdGU7CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX2F1dG9BdWRp
b1Npbms7CiAgICAgYm9vbCBtX21pc3NpbmdQbHVnaW5zOwotI2lmIEVOQUJMRShWSURFT19UUkFD
SykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CiAgICAgVmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4+IG1fYXVkaW9U
cmFja3M7CiAgICAgVmVjdG9yPFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
Pj4gbV90ZXh0VHJhY2tzOwogICAgIFZlY3RvcjxSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXI+PiBtX3ZpZGVvVHJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IDk5NWRkOGRhNGQ3YjczZGI4NTdhYTYzOThk
ZDcwOTlkNDhkNGMyNTguLmE5N2I0ZmI3ZmQ3ODQwNWI5MjViODk2N2I5MTgxOTJiODdlZDYzYTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNs
dWRlICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJWZXJzaW9uaW5n
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBl
cy5oIgogI2luY2x1ZGUgIkltYWdlR1N0cmVhbWVyLmgiCkBAIC00MSwxMSArNDAsNyBAQAogI2lu
Y2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZmRl
ZiBHU1RfQVBJX1ZFUlNJT05fMQogI2luY2x1ZGUgPGdzdC9hdWRpby9zdHJlYW12b2x1bWUuaD4K
LSNlbHNlCi0jaW5jbHVkZSA8Z3N0L2ludGVyZmFjZXMvc3RyZWFtdm9sdW1lLmg+Ci0jZW5kaWYK
IAogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDEsIDApICYmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJHTC5oIgpAQCAtMTY0LDEzICsxNTksNyBAQCBJbnRTaXplIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6Om5hdHVyYWxTaXplKCkgY29uc3QKICAgICBpZiAoIW1fdmlkZW9TaXplLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1fdmlkZW9TaXplOwogCi0jaWZkZWYgR1NUX0FQSV9W
RVJTSU9OXzEKICAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHMgPSBjdXJyZW50VmlkZW9TaW5rQ2Fw
cygpOwotI2Vsc2UKLSAgICBnX211dGV4X2xvY2sobV9idWZmZXJNdXRleCk7Ci0gICAgR1JlZlB0
cjxHc3RDYXBzPiBjYXBzID0gbV9idWZmZXIgPyBHU1RfQlVGRkVSX0NBUFMobV9idWZmZXIpIDog
MDsKLSAgICBnX211dGV4X3VubG9jayhtX2J1ZmZlck11dGV4KTsKLSNlbmRpZgogICAgIGlmICgh
Y2FwcykKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIApAQCAtMzI0LDExICszMTMsNyBAQCBQ
YXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OnVwZGF0ZVRleHR1cmUoVGV4dHVyZQogICAgIH0KIAogICAgIGNvbnN0IHZvaWQqIHNyY0RhdGEg
PSAwOwotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBz
ID0gY3VycmVudFZpZGVvU2lua0NhcHMoKTsKLSNlbHNlCi0gICAgR1JlZlB0cjxHc3RDYXBzPiBj
YXBzID0gR1NUX0JVRkZFUl9DQVBTKG1fYnVmZmVyKTsKLSNlbmRpZgogICAgIGlmICghY2Fwcykg
ewogICAgICAgICBnX211dGV4X3VubG9jayhtX2J1ZmZlck11dGV4KTsKICAgICAgICAgcmV0dXJu
IDA7CkBAIC0zNTksMTkgKzM0NCwxMyBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoVGV4dHVyZQogICAgIH0K
ICNlbmRpZgogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBHc3RNYXBJbmZvIHNyY0lu
Zm87CiAgICAgZ3N0X2J1ZmZlcl9tYXAobV9idWZmZXIsICZzcmNJbmZvLCBHU1RfTUFQX1JFQUQp
OwogICAgIHNyY0RhdGEgPSBzcmNJbmZvLmRhdGE7Ci0jZWxzZQotICAgIHNyY0RhdGEgPSBHU1Rf
QlVGRkVSX0RBVEEobV9idWZmZXIpOwotI2VuZGlmCiAKICAgICB0ZXh0dXJlLT51cGRhdGVDb250
ZW50cyhzcmNEYXRhLCBXZWJDb3JlOjpJbnRSZWN0KFdlYkNvcmU6OkludFBvaW50KDAsIDApLCBz
aXplKSwgV2ViQ29yZTo6SW50UG9pbnQoMCwgMCksIHN0cmlkZSwgQml0bWFwVGV4dHVyZTo6VXBk
YXRlQ2Fubm90TW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwogCi0jaWZkZWYgR1NUX0FQSV9WRVJT
SU9OXzEKICAgICBnc3RfYnVmZmVyX3VubWFwKG1fYnVmZmVyLCAmc3JjSW5mbyk7Ci0jZW5kaWYK
IAogICAgIGdfbXV0ZXhfdW5sb2NrKG1fYnVmZmVyTXV0ZXgpOwogICAgIHJldHVybiB0ZXh0dXJl
OwpAQCAtNDIwLDExICszOTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBHUmVmUHRyPEdz
dENhcHM+IGNhcHMgPSBjdXJyZW50VmlkZW9TaW5rQ2FwcygpOwotI2Vsc2UKLSAgICBHUmVmUHRy
PEdzdENhcHM+IGNhcHMgPSBHU1RfQlVGRkVSX0NBUFMobV9idWZmZXIpOwotI2VuZGlmCiAgICAg
aWYgKCFjYXBzKSB7CiAgICAgICAgIGdfbXV0ZXhfdW5sb2NrKG1fYnVmZmVyTXV0ZXgpOwogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVGV4dENvbWJpbmVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIuY3BwCmluZGV4
IGY5MjI4NDViYzliNjk1MzA2OWQzYzY5NDgzMGNhMmZjNjU0NDhiMTAuLmMwZWJlN2MwMWRiMDA2
MGE2NThjNWRiNDUyYzhhNzA2NjRkN2M1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0Q29tYmluZXJH
U3RyZWFtZXIuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RS
QUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiVGV4dENv
bWJpbmVyR1N0cmVhbWVyLmgiCiAKQEAgLTI5MSw0ICsyOTEsNCBAQCBHc3RFbGVtZW50KiB3ZWJr
aXRUZXh0Q29tYmluZXJOZXcoKQogICAgIHJldHVybiBHU1RfRUxFTUVOVChnX29iamVjdF9uZXco
V0VCS0lUX1RZUEVfVEVYVF9DT01CSU5FUiwgMCkpOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKFZJ
REVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQo
R1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVB
TUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dENvbWJpbmVyR1N0cmVhbWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dENvbWJpbmVyR1N0cmVh
bWVyLmgKaW5kZXggYTE5MzAzZGMyNTEwYzhiZTgxNDBmNGQzNTE5ZDAxYzMzMjk1OGNjOS4uMjBj
NTc5Njk3ZTQ2ODM0ZjM4MDQ3YjM1MDQzZjdhYTRjYmI5ZTJiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRDb21iaW5lckdTdHJlYW1l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0
Q29tYmluZXJHU3RyZWFtZXIuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBUZXh0Q29tYmlu
ZXJHU3RyZWFtZXJfaAogI2RlZmluZSBUZXh0Q29tYmluZXJHU3RyZWFtZXJfaAogCi0jaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRl
ZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVB
TUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgog
I2luY2x1ZGUgPGdzdC9nc3QuaD4KQEAgLTYyLDUgKzYyLDUgQEAgc3RydWN0IF9XZWJLaXRUZXh0
Q29tYmluZXJDbGFzcyB7CiAKIEdzdEVsZW1lbnQqIHdlYmtpdFRleHRDb21iaW5lck5ldygpOwog
Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklE
RU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxF
KFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9U
ZXh0U2lua0dTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVGV4dFNpbmtHU3RyZWFtZXIuY3BwCmluZGV4IDE0ZmQ0NjkyYmJmM2EyZGE5MDhk
ZTdkNzA0ZWJiYjlhNmQ0YTBhMzcuLjY3OGU3YWMzNTZlZDVjNWFmZmUzM2Q2MGE4ZDA1Nzg1MDBm
Y2I5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9UZXh0U2lua0dTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRTaW5rR1N0cmVhbWVyLmNwcApAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShH
U1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJ
T05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURF
T19UUkFDSykKIAogI2luY2x1ZGUgIlRleHRTaW5rR1N0cmVhbWVyLmgiCiAKQEAgLTk4LDQgKzk4
LDQgQEAgR3N0RWxlbWVudCogd2Via2l0VGV4dFNpbmtOZXcoKQogICAgIHJldHVybiBHU1RfRUxF
TUVOVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVEVYVF9TSU5LLCAwKSk7CiB9CiAKLSNlbmRp
ZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFD
SykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8p
ICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0U2lua0dTdHJlYW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRTaW5r
R1N0cmVhbWVyLmgKaW5kZXggNmM2YjZhYmRjMzk3NTQ1NzQzNzAwODZiNDUyNDYzN2JkODY1MGUw
Mi4uZDA5YmU4NjJiODllZmQzNzIzZDI2OTEyMDlmNTUyYTE5MGMxMDk2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRTaW5rR1N0cmVh
bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Rl
eHRTaW5rR1N0cmVhbWVyLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgVGV4dFNpbmtHU3Ry
ZWFtZXJfaAogI2RlZmluZSBUZXh0U2lua0dTdHJlYW1lcl9oCiAKLSNpZiBFTkFCTEUoVklERU8p
ICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1Rf
QVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVO
QUJMRShWSURFT19UUkFDSykKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8
Z3N0L2FwcC9nc3RhcHBzaW5rLmg+CkBAIC02MSw1ICs2MSw1IEBAIHN0cnVjdCBfV2ViS2l0VGV4
dFNpbmtDbGFzcyB7CiAKIEdzdEVsZW1lbnQqIHdlYmtpdFRleHRTaW5rTmV3KCk7CiAKLSNlbmRp
ZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFD
SykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8p
ICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJp
dmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCmluZGV4IGIzMjAxNTc1N2Nh
NWNkMGI5NTY4NTlmMjNiZGRiOTM3ZTM3NWFiNWEuLmJkN2E2OGRjNWVkZTcyNDI3NmVmYmFiN2I3
ZTA2NTkwZjE1MDQ2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lci5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYg
RU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYm
IGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NU
UkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNpbmNsdWRlICJUcmFja1ByaXZhdGVC
YXNlR1N0cmVhbWVyLmgiCiAKQEAgLTE2Miw0ICsxNjIsNCBAQCB2b2lkIFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZUYWdzQ2hhbmdlZCgpCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYg
RU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2VuZGlm
IC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNL
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmgKaW5kZXggOTk1ZGE0
ZmY4YTdmMWU1MGE2MDQ1NzBmNjcwNzI5NGNiNDliMTZhYi4uNGZhZjliMjU4NzUyMjg2NmRhOGQ2
Zjc3ZGUzYzk0NTczOTkyMmNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdT
dHJlYW1lci5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFRyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXJfaAogI2RlZmluZSBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyX2gKIAotI2lmIEVOQUJM
RShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBkZWZp
bmVkKEdTVF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1F
UikgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5o
IgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzEsNiArNzEsNiBAQCBwcml2
YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoVklERU8p
ICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1Rf
QVBJX1ZFUlNJT05fMSkKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIp
ICYmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2VuZGlmIC8vIFRyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAppbmRleCBmMjQzMjNkNzc2
NGM1YTFhN2U4YjU5ODRjY2MwOGJiNjYwODdkM2ExLi4zNTE4MzdhYWI0MTNmOGUzODE4MGRmNzVm
ZTllODI3NmJiYzlmNzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcApAQCAt
MzAsMTcgKzMwLDE0IEBACiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAj
aW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgotI2luY2x1ZGUgIkdTdHJlYW1lclZlcnNpb25p
bmcuaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJbnRTaXpl
LmgiCiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpZmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4KLSNlbmRp
ZgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogLy8gQ0FJUk9fRk9STUFUX1JHQjI0IHVzZWQg
dG8gcmVuZGVyIHRoZSB2aWRlbyBidWZmZXJzIGlzIGxpdHRsZS9iaWcgZW5kaWFuIGRlcGVuZGFu
dC4KLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogI2lmIEdfQllURV9PUkRFUiA9PSBHX0xJVFRM
RV9FTkRJQU4KICNkZWZpbmUgR1NUX0NBUFNfRk9STUFUICJ7IEJHUngsIEJHUkEgfSIKICNlbHNl
CkBAIC01MSwxNyArNDgsOCBAQAogI2Vsc2UKICNkZWZpbmUgR1NUX0ZFQVRVUkVEX0NBUFMKICNl
bmRpZgotI2VuZGlmIC8vIEdTVF9BUElfVkVSU0lPTl8xCiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJ
T05fMQogI2RlZmluZSBXRUJLSVRfVklERU9fU0lOS19QQURfQ0FQUyBHU1RfRkVBVFVSRURfQ0FQ
UyBHU1RfVklERU9fQ0FQU19NQUtFKEdTVF9DQVBTX0ZPUk1BVCkKLSNlbHNlCi0jaWYgR19CWVRF
X09SREVSID09IEdfTElUVExFX0VORElBTgotI2RlZmluZSBXRUJLSVRfVklERU9fU0lOS19QQURf
Q0FQUyBHU1RfVklERU9fQ0FQU19CR1J4ICI7IiBHU1RfVklERU9fQ0FQU19CR1JBCi0jZWxzZQot
I2RlZmluZSBXRUJLSVRfVklERU9fU0lOS19QQURfQ0FQUyBHU1RfVklERU9fQ0FQU194UkdCICI7
IiBHU1RfVklERU9fQ0FQU19BUkdCCi0jZW5kaWYKLSNlbmRpZiAvLyBHU1RfQVBJX1ZFUlNJT05f
MQogCiBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc19zaW5rVGVtcGxhdGUgPSBHU1RfU1RB
VElDX1BBRF9URU1QTEFURSgic2luayIsIEdTVF9QQURfU0lOSywgR1NUX1BBRF9BTFdBWVMsIEdT
VF9TVEFUSUNfQ0FQUyhXRUJLSVRfVklERU9fU0lOS19QQURfQ0FQUykpOwogCkBAIC04Nyw5ICs3
NSw3IEBAIHN0cnVjdCBfV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSB7CiAgICAgR011dGV4KiBidWZm
ZXJNdXRleDsKICAgICBHQ29uZCogZGF0YUNvbmRpdGlvbjsKIAotI2lmZGVmIEdTVF9BUElfVkVS
U0lPTl8xCiAgICAgR3N0VmlkZW9JbmZvIGluZm87Ci0jZW5kaWYKIAogICAgIEdzdENhcHMqIGN1
cnJlbnRDYXBzOwogCkBAIC0xMjEsOSArMTA3LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3ZpZGVv
X3NpbmtfaW5pdChXZWJLaXRWaWRlb1NpbmsqIHNpbmspCiAgICAgc2luay0+cHJpdi0+YnVmZmVy
TXV0ZXggPSBnX211dGV4X25ldygpOwogI2VuZGlmCiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05f
MQogICAgIGdzdF92aWRlb19pbmZvX2luaXQoJnNpbmstPnByaXYtPmluZm8pOwotI2VuZGlmCiB9
CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRWaWRlb1NpbmtUaW1lb3V0Q2FsbGJhY2soZ3BvaW50
ZXIgZGF0YSkKQEAgLTE2NCwyMyArMTQ4LDEyIEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYmtp
dFZpZGVvU2lua1JlbmRlcihHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdEJ1ZmZlciogYnVmCiAK
ICAgICBwcml2LT5idWZmZXIgPSBnc3RfYnVmZmVyX3JlZihidWZmZXIpOwogCi0jaWZuZGVmIEdT
VF9BUElfVkVSU0lPTl8xCi0gICAgLy8gRm9yIHRoZSB1bmxpa2VseSBjYXNlIHdoZXJlIHRoZSBi
dWZmZXIgaGFzIG5vIGNhcHMsIHRoZSBjYXBzCi0gICAgLy8gYXJlIGltcGxpY2l0ZWx5IHRoZSBj
YXBzIG9mIHRoZSBwYWQuIFRoaXMgc2hvdWxkbid0IGhhcHBlbi4KLSAgICBpZiAoVU5MSUtFTFko
IUdTVF9CVUZGRVJfQ0FQUyhidWZmZXIpKSkgewotICAgICAgICBidWZmZXIgPSBwcml2LT5idWZm
ZXIgPSBnc3RfYnVmZmVyX21ha2VfbWV0YWRhdGFfd3JpdGFibGUocHJpdi0+YnVmZmVyKTsKLSAg
ICAgICAgZ3N0X2J1ZmZlcl9zZXRfY2Fwcyhwcml2LT5idWZmZXIsIEdTVF9QQURfQ0FQUyhHU1Rf
QkFTRV9TSU5LX1BBRChiYXNlU2luaykpKTsKLSAgICB9Ci0KLSAgICBHUmVmUHRyPEdzdENhcHM+
IGNhcHMgPSBHU1RfQlVGRkVSX0NBUFMoYnVmZmVyKTsKLSNlbHNlCiAgICAgR1JlZlB0cjxHc3RD
YXBzPiBjYXBzOwogICAgIC8vIFRoZSB2aWRlbyBpbmZvIHN0cnVjdHVyZSBpcyB2YWxpZCBvbmx5
IGlmIHRoZSBzaW5rIGhhbmRsZWQgYW4gYWxsb2NhdGlvbiBxdWVyeS4KICAgICBpZiAoR1NUX1ZJ
REVPX0lORk9fRk9STUFUKCZwcml2LT5pbmZvKSAhPSBHU1RfVklERU9fRk9STUFUX1VOS05PV04p
CiAgICAgICAgIGNhcHMgPSBhZG9wdEdSZWYoZ3N0X3ZpZGVvX2luZm9fdG9fY2FwcygmcHJpdi0+
aW5mbykpOwogICAgIGVsc2UKICAgICAgICAgY2FwcyA9IHByaXYtPmN1cnJlbnRDYXBzOwotI2Vu
ZGlmCiAKICAgICBHc3RWaWRlb0Zvcm1hdCBmb3JtYXQ7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBz
aXplOwpAQCAtMTk5LDcgKzE3Miw3IEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYmtpdFZpZGVv
U2lua1JlbmRlcihHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdEJ1ZmZlciogYnVmCiAgICAgICAg
IC8vIFRoZSBidWZmZXIgY29udGVudCBzaG91bGQgbm90IGJlIGNoYW5nZWQgaGVyZSBiZWNhdXNl
IHRoZSBzYW1lIGJ1ZmZlcgogICAgICAgICAvLyBjb3VsZCBiZSBwYXNzZWQgbXVsdGlwbGUgdGlt
ZXMgdG8gdGhpcyBtZXRob2QgKGluIHRoZW9yeSkuCiAKLSAgICAgICAgR3N0QnVmZmVyKiBuZXdC
dWZmZXIgPSBjcmVhdGVHc3RCdWZmZXIoYnVmZmVyKTsKKyAgICAgICAgR3N0QnVmZmVyKiBuZXdC
dWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVHc3RCdWZmZXIoYnVmZmVyKTsKIAogICAgICAgICAvLyBD
aGVjayBpZiBhbGxvY2F0aW9uIGZhaWxlZC4KICAgICAgICAgaWYgKFVOTElLRUxZKCFuZXdCdWZm
ZXIpKSB7CkBAIC0yMTEsMTcgKzE4NCwxMiBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJraXRW
aWRlb1NpbmtSZW5kZXIoR3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBHc3RCdWZmZXIqIGJ1ZgogICAg
ICAgICAvLyBvbmUgZnVuY3Rpb24gY2FsbCBwZXIgdmlkZW8gcGl4ZWwgaXMganVzdCB0b28gZXhw
ZW5zaXZlOgogICAgICAgICAvLyBGb3IgNzIwcC9QQUwgZm9yIGV4YW1wbGUgdGhpcyBtZWFucyAx
MjgwKjcyMCoyNT0yMzA0MDAwMAogICAgICAgICAvLyBmdW5jdGlvbiBjYWxscyBwZXIgc2Vjb25k
IQotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotICAgICAgICBjb25zdCBndWludDgqIHNvdXJj
ZSA9IEdTVF9CVUZGRVJfREFUQShidWZmZXIpOwotICAgICAgICBndWludDgqIGRlc3RpbmF0aW9u
ID0gR1NUX0JVRkZFUl9EQVRBKG5ld0J1ZmZlcik7Ci0jZWxzZQogICAgICAgICBHc3RNYXBJbmZv
IHNvdXJjZUluZm87CiAgICAgICAgIEdzdE1hcEluZm8gZGVzdGluYXRpb25JbmZvOwogICAgICAg
ICBnc3RfYnVmZmVyX21hcChidWZmZXIsICZzb3VyY2VJbmZvLCBHU1RfTUFQX1JFQUQpOwogICAg
ICAgICBjb25zdCBndWludDgqIHNvdXJjZSA9IGNvbnN0X2Nhc3Q8Z3VpbnQ4Kj4oc291cmNlSW5m
by5kYXRhKTsKICAgICAgICAgZ3N0X2J1ZmZlcl9tYXAobmV3QnVmZmVyLCAmZGVzdGluYXRpb25J
bmZvLCBHU1RfTUFQX1dSSVRFKTsKICAgICAgICAgZ3VpbnQ4KiBkZXN0aW5hdGlvbiA9IHN0YXRp
Y19jYXN0PGd1aW50OCo+KGRlc3RpbmF0aW9uSW5mby5kYXRhKTsKLSNlbmRpZgogCiAgICAgICAg
IGZvciAoaW50IHggPSAwOyB4IDwgc2l6ZS5oZWlnaHQoKTsgeCsrKSB7CiAgICAgICAgICAgICBm
b3IgKGludCB5ID0gMDsgeSA8IHNpemUud2lkdGgoKTsgeSsrKSB7CkBAIC0yNDMsMTAgKzIxMSw4
IEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRlcihHc3RCYXNlU2lu
ayogYmFzZVNpbmssIEdzdEJ1ZmZlciogYnVmCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAot
I2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgICAgIGdzdF9idWZmZXJfdW5tYXAoYnVmZmVy
LCAmc291cmNlSW5mbyk7CiAgICAgICAgIGdzdF9idWZmZXJfdW5tYXAobmV3QnVmZmVyLCAmZGVz
dGluYXRpb25JbmZvKTsKLSNlbmRpZgogICAgICAgICBnc3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7
CiAgICAgICAgIGJ1ZmZlciA9IHByaXYtPmJ1ZmZlciA9IG5ld0J1ZmZlcjsKICAgICB9CkBAIC0z
NzUsMTkgKzM0MSwxNiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0VmlkZW9TaW5rU2V0Q2FwcyhH
c3RCYXNlU2luayogYmFzZVNpbmssIEdzdENhcHMqIGNhcHMpCiAKICAgICBHU1RfREVCVUdfT0JK
RUNUKHNpbmssICJDdXJyZW50IGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQgIiwgc2V0dGluZyBjYXBz
ICUiIEdTVF9QVFJfRk9STUFULCBwcml2LT5jdXJyZW50Q2FwcywgY2Fwcyk7CiAKLSNpZmRlZiBH
U1RfQVBJX1ZFUlNJT05fMQogICAgIEdzdFZpZGVvSW5mbyBpbmZvOwogICAgIGlmICghZ3N0X3Zp
ZGVvX2luZm9fZnJvbV9jYXBzKCZpbmZvLCBjYXBzKSkgewogICAgICAgICBHU1RfRVJST1JfT0JK
RUNUKHNpbmssICJJbnZhbGlkIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOwogICAgICAg
ICByZXR1cm4gRkFMU0U7CiAgICAgfQotI2VuZGlmCiAKICAgICBnc3RfY2Fwc19yZXBsYWNlKCZw
cml2LT5jdXJyZW50Q2FwcywgY2Fwcyk7CiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKLSNpZmRlZiBH
U1RfQVBJX1ZFUlNJT05fMQogc3RhdGljIGdib29sZWFuIHdlYmtpdFZpZGVvU2lua1Byb3Bvc2VB
bGxvY2F0aW9uKEdzdEJhc2VTaW5rKiBiYXNlU2luaywgR3N0UXVlcnkqIHF1ZXJ5KQogewogICAg
IEdzdENhcHMqIGNhcHM7CkBAIC00MDYsMzAgKzM2OSw2IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJr
aXRWaWRlb1NpbmtQcm9wb3NlQWxsb2NhdGlvbihHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdFF1
ZXJ5CiAjZW5kaWYKICAgICByZXR1cm4gVFJVRTsKIH0KLSNlbmRpZgotCi0jaWZuZGVmIEdTVF9B
UElfVkVSU0lPTl8xCi1zdGF0aWMgdm9pZCB3ZWJraXRWaWRlb1NpbmtNYXJzaGFsVm9pZEFuZE1p
bmlPYmplY3QoR0Nsb3N1cmUqIGNsb3N1cmUsIEdWYWx1ZSosIGd1aW50IHBhcmFtZXRlcnNOdW1i
ZXIsIGNvbnN0IEdWYWx1ZSogcGFyYW1ldGVyVmFsdWVzLCBncG9pbnRlciwgZ3BvaW50ZXIgbWFy
c2hhbERhdGEpCi17Ci0gICAgdHlwZWRlZiB2b2lkICgqbWFyc2hhbGZ1bmNfVk9JRF9fTUlOSU9C
SkVDVCkgKGdwb2ludGVyIG9iaiwgZ3BvaW50ZXIgYXJnMSwgZ3BvaW50ZXIgZGF0YTIpOwotICAg
IG1hcnNoYWxmdW5jX1ZPSURfX01JTklPQkpFQ1QgY2FsbGJhY2s7Ci0gICAgR0NDbG9zdXJlKiBj
Y2xvc3VyZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0NDbG9zdXJlKj4oY2xvc3VyZSk7Ci0gICAgZ3Bv
aW50ZXIgZGF0YTEsIGRhdGEyOwotCi0gICAgZ19yZXR1cm5faWZfZmFpbChwYXJhbWV0ZXJzTnVt
YmVyID09IDIpOwotCi0gICAgaWYgKEdfQ0NMT1NVUkVfU1dBUF9EQVRBKGNsb3N1cmUpKSB7Ci0g
ICAgICAgIGRhdGExID0gY2xvc3VyZS0+ZGF0YTsKLSAgICAgICAgZGF0YTIgPSBnX3ZhbHVlX3Bl
ZWtfcG9pbnRlcihwYXJhbWV0ZXJWYWx1ZXMgKyAwKTsKLSAgICB9IGVsc2UgewotICAgICAgICBk
YXRhMSA9IGdfdmFsdWVfcGVla19wb2ludGVyKHBhcmFtZXRlclZhbHVlcyArIDApOwotICAgICAg
ICBkYXRhMiA9IGNsb3N1cmUtPmRhdGE7Ci0gICAgfQotCi0gICAgY2FsbGJhY2sgPSAobWFyc2hh
bGZ1bmNfVk9JRF9fTUlOSU9CSkVDVCkgKG1hcnNoYWxEYXRhID8gbWFyc2hhbERhdGEgOiBjY2xv
c3VyZS0+Y2FsbGJhY2spOwotICAgIGNhbGxiYWNrKGRhdGExLCBnc3RfdmFsdWVfZ2V0X21pbmlf
b2JqZWN0KHBhcmFtZXRlclZhbHVlcyArIDEpLCBkYXRhMik7Ci19Ci0jZW5kaWYKIAogc3RhdGlj
IHZvaWQgd2Via2l0X3ZpZGVvX3NpbmtfY2xhc3NfaW5pdChXZWJLaXRWaWRlb1NpbmtDbGFzcyog
a2xhc3MpCiB7CkBAIC00MzgsNyArMzc3LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3ZpZGVvX3Np
bmtfY2xhc3NfaW5pdChXZWJLaXRWaWRlb1NpbmtDbGFzcyoga2xhc3MpCiAgICAgR3N0RWxlbWVu
dENsYXNzKiBlbGVtZW50Q2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyhrbGFzcyk7CiAKICAgICBn
c3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlKGVsZW1lbnRDbGFzcywgZ3N0X3N0YXRp
Y19wYWRfdGVtcGxhdGVfZ2V0KCZzX3NpbmtUZW1wbGF0ZSkpOwotICAgIHNldEdzdEVsZW1lbnRD
bGFzc01ldGFkYXRhKGVsZW1lbnRDbGFzcywgIldlYktpdCB2aWRlbyBzaW5rIiwgIlNpbmsvVmlk
ZW8iLCAiU2VuZHMgdmlkZW8gZGF0YSBmcm9tIGEgR1N0cmVhbWVyIHBpcGVsaW5lIHRvIGEgQ2Fp
cm8gc3VyZmFjZSIsICJBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPiIpOworICAgIGdzdF9lbGVt
ZW50X2NsYXNzX3NldF9tZXRhZGF0YShlbGVtZW50Q2xhc3MsICJXZWJLaXQgdmlkZW8gc2luayIs
ICJTaW5rL1ZpZGVvIiwgIlNlbmRzIHZpZGVvIGRhdGEgZnJvbSBhIEdTdHJlYW1lciBwaXBlbGlu
ZSB0byBhIENhaXJvIHN1cmZhY2UiLCAiQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4iKTsKIAog
ICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFZpZGVvU2lu
a1ByaXZhdGUpKTsKIApAQCAtNDUyLDkgKzM5MSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF92aWRl
b19zaW5rX2NsYXNzX2luaXQoV2ViS2l0VmlkZW9TaW5rQ2xhc3MqIGtsYXNzKQogICAgIGJhc2VT
aW5rQ2xhc3MtPnN0b3AgPSB3ZWJraXRWaWRlb1NpbmtTdG9wOwogICAgIGJhc2VTaW5rQ2xhc3Mt
PnN0YXJ0ID0gd2Via2l0VmlkZW9TaW5rU3RhcnQ7CiAgICAgYmFzZVNpbmtDbGFzcy0+c2V0X2Nh
cHMgPSB3ZWJraXRWaWRlb1NpbmtTZXRDYXBzOwotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAg
ICAgYmFzZVNpbmtDbGFzcy0+cHJvcG9zZV9hbGxvY2F0aW9uID0gd2Via2l0VmlkZW9TaW5rUHJv
cG9zZUFsbG9jYXRpb247Ci0jZW5kaWYKIAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoZ29iamVjdENsYXNzLCBQUk9QX0NBUFMsCiAgICAgICAgIGdfcGFyYW1fc3BlY19ib3hl
ZCgiY3VycmVudC1jYXBzIiwgIkN1cnJlbnQtQ2FwcyIsICJDdXJyZW50IGNhcHMiLCBHU1RfVFlQ
RV9DQVBTLCBHX1BBUkFNX1JFQURBQkxFKSk7CkBAIC00NjUsMTEgKzQwMiw3IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF92aWRlb19zaW5rX2NsYXNzX2luaXQoV2ViS2l0VmlkZW9TaW5rQ2xhc3MqIGts
YXNzKQogICAgICAgICAgICAgMCwgLy8gQ2xhc3Mgb2Zmc2V0CiAgICAgICAgICAgICAwLCAvLyBB
Y2N1bXVsYXRvcgogICAgICAgICAgICAgMCwgLy8gQWNjdW11bGF0b3IgZGF0YQotI2lmbmRlZiBH
U1RfQVBJX1ZFUlNJT05fMQotICAgICAgICAgICAgd2Via2l0VmlkZW9TaW5rTWFyc2hhbFZvaWRB
bmRNaW5pT2JqZWN0LAotI2Vsc2UKICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9nZW5l
cmljLAotI2VuZGlmCiAgICAgICAgICAgICBHX1RZUEVfTk9ORSwgLy8gUmV0dXJuIHR5cGUKICAg
ICAgICAgICAgIDEsIC8vIE9ubHkgb25lIHBhcmFtZXRlcgogICAgICAgICAgICAgR1NUX1RZUEVf
QlVGRkVSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3Bw
CmluZGV4IDI3ZGU1N2ZkNjFkMGU5Yjk0ZWY0NTFhN2FkM2U2MGU0Zjc3MmJhZGYuLmUzNjUyYzM1
MGUzZGZhM2FlMWE1YmU1ZTY1Y2NhZmVmMTUwZWMxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Zp
ZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVO
QUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFC
TEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2lu
Y2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCiAKQEAgLTU4LDQgKzU4LDQgQEAg
dm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6c2V0U2VsZWN0ZWQoYm9vbCBzZWxlY3Rl
ZCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQ
SV9WRVJTSU9OXzEpCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAm
JiBFTkFCTEUoVklERU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oCmluZGV4IGFlZjFmNThlZDUyNTg3NDYyMWI3YTFhZDI3MDUxZmQxMDMxNGQ1OTgu
LmVlN2EwMzhkMGMwZGJmYjJiMzVmZWU5Y2VhNzVlZmVlZjExNjczMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZu
ZGVmIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyX2gKICNkZWZpbmUgVmlkZW9UcmFja1ByaXZh
dGVHU3RyZWFtZXJfaAogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBF
TkFCTEUoVklERU9fVFJBQ0spICYmIGRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNp
bmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlQmFzZUdT
dHJlYW1lci5oIgpAQCAtNTksNiArNTksNiBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVO
QUJMRShWSURFT19UUkFDSykgJiYgZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKKyNlbmRpZiAv
LyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIEVOQUJMRShWSURFT19UUkFDSykK
IAogI2VuZGlmIC8vIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRNZWRpYVNvdXJj
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDA4YWNkY2E0NDUzMDQ0ZjNj
YWM0ZGExYWRmY2M1MTdiOGM2MDEzYWUuLjU1ZGNlOTU0YTE2MjkwYzUxOTU0MTE2MDcyZmM1OGM4
ZTk3MGVjNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVy
LmNwcApAQCAtMjMsNyArMjMsOCBAQAogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUoTUVE
SUFfU09VUkNFKSAmJiBVU0UoR1NUUkVBTUVSKQogCi0jaW5jbHVkZSAiR1N0cmVhbWVyVmVyc2lv
bmluZy5oIgorI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJHU3RyZWFt
ZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlRp
bWVSYW5nZXMuaCIKICNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNyYy5oPgpAQCAtMTIyLDcgKzEy
Myw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9tZWRpYV9zcmNfY2xhc3NfaW5pdChXZWJLaXRNZWRp
YVNyY0NsYXNzKiBrbGFzcykKIAogICAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxh
dGUoZWtsYXNzLCBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQoJnNyY1RlbXBsYXRlKSk7CiAK
LSAgICBzZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YShla2xhc3MsICJXZWJLaXQgTWVkaWEgc291
cmNlIGVsZW1lbnQiLCAiU291cmNlIiwgIkhhbmRsZXMgQmxvYiB1cmlzIiwgIlN0ZXBoYW5lIEph
ZGF1ZCA8c2phZGF1ZEBzaWkuZnI+Iik7CisgICAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X21ldGFk
YXRhKGVrbGFzcywgIldlYktpdCBNZWRpYSBzb3VyY2UgZWxlbWVudCIsICJTb3VyY2UiLCAiSGFu
ZGxlcyBCbG9iIHVyaXMiLCAiU3RlcGhhbmUgSmFkYXVkIDxzamFkYXVkQHNpaS5mcj4iKTsKIAog
ICAgIC8qIEFsbG93cyBzZXR0aW5nIHRoZSB1cmkgdXNpbmcgdGhlICdsb2NhdGlvbicgcHJvcGVy
dHksIHdoaWNoIGlzIHVzZWQKICAgICAgKiBmb3IgZXhhbXBsZSBieSBnc3RfZWxlbWVudF9tYWtl
X2Zyb21fdXJpKCkgKi8KQEAgLTE1NCw3ICsxNTUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRp
YVNyY0FkZFNyYyhXZWJLaXRNZWRpYVNyYyogc3JjLCBHc3RFbGVtZW50KiBlbGVtZW50KQogCiAg
ICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudChlbGVtZW50KTsKICAgICBuYW1l
LnNldChnX3N0cmR1cF9wcmludGYoInNyY18ldSIsIHByaXYtPm5iU291cmNlKSk7Ci0gICAgZ2hv
c3RQYWQgPSB3ZWJraXRHc3RHaG9zdFBhZEZyb21TdGF0aWNUZW1wbGF0ZSgmc3JjVGVtcGxhdGUs
IG5hbWUuZ2V0KCksIHRhcmdldHNyYy5nZXQoKSk7CisgICAgZ2hvc3RQYWQgPSBXZWJDb3JlOjp3
ZWJraXRHc3RHaG9zdFBhZEZyb21TdGF0aWNUZW1wbGF0ZSgmc3JjVGVtcGxhdGUsIG5hbWUuZ2V0
KCksIHRhcmdldHNyYy5nZXQoKSk7CiAgICAgZ3N0X3BhZF9zZXRfYWN0aXZlKGdob3N0UGFkLCBU
UlVFKTsKIAogICAgIHByaXYtPm5iU291cmNlKys7CkBAIC03ODUsNyArNzg2LDcgQEAgdm9pZCBN
ZWRpYVNvdXJjZUNsaWVudEdzdHJlYW1lcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCwgU3QKICAgICAgICAgICAgIHByaXYtPnNvdXJjZVZpZGVvLnBhZEFkZGVk
ID0gVFJVRTsKICAgICAgICAgfQogICAgICAgICBHU1RfT0JKRUNUX0xPQ0sobV9zcmMpOwotICAg
ICAgICBidWZmZXIgPSBjcmVhdGVHc3RCdWZmZXJGb3JEYXRhKGRhdGEsIGxlbmd0aCk7CisgICAg
ICAgIGJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUdzdEJ1ZmZlckZvckRhdGEoZGF0YSwgbGVuZ3Ro
KTsKICAgICAgICAgR1NUX09CSkVDVF9VTkxPQ0sobV9zcmMpOwogCiAgICAgICAgIHJldCA9IGdz
dF9hcHBfc3JjX3B1c2hfYnVmZmVyKEdTVF9BUFBfU1JDKHByaXYtPnNvdXJjZVZpZGVvLmFwcHNy
YyksIGJ1ZmZlcik7CkBAIC03OTksNyArODAwLDcgQEAgdm9pZCBNZWRpYVNvdXJjZUNsaWVudEdz
dHJlYW1lcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgU3QK
ICAgICAgICAgICAgIHByaXYtPnNvdXJjZUF1ZGlvLnBhZEFkZGVkID0gVFJVRTsKICAgICAgICAg
fQogICAgICAgICBHU1RfT0JKRUNUX0xPQ0sobV9zcmMpOwotICAgICAgICBidWZmZXIgPSBjcmVh
dGVHc3RCdWZmZXJGb3JEYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGJ1ZmZlciA9IFdlYkNv
cmU6OmNyZWF0ZUdzdEJ1ZmZlckZvckRhdGEoZGF0YSwgbGVuZ3RoKTsKICAgICAgICAgR1NUX09C
SkVDVF9VTkxPQ0sobV9zcmMpOwogCiAgICAgICAgIHJldCA9IGdzdF9hcHBfc3JjX3B1c2hfYnVm
ZmVyKEdTVF9BUFBfU1JDKHByaXYtPnNvdXJjZUF1ZGlvLmFwcHNyYyksIGJ1ZmZlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDNmOWEwNzVjNjVm
MjYzNzNjODQ5ODZlNmRhMTQ4ZjI1NDMwZWMzMzguLmZmMTg4OWE1ZTczNzViZjExY2YwMTIzN2Jl
MzNlZTllMjA3MzU5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFt
ZXIuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJHUmVmUHRy
R1N0cmVhbWVyLmgiCi0jaW5jbHVkZSAiR1N0cmVhbWVyVmVyc2lvbmluZy5oIgorI2luY2x1ZGUg
IkdTdHJlYW1lclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgpAQCAtMTM4
LDEwICsxMzgsNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlNyY1ByaXZhdGUgewogICAgIGdjaGFyKiBp
cmFkaW9HZW5yZTsKICAgICBnY2hhciogaXJhZGlvVXJsOwogICAgIGdjaGFyKiBpcmFkaW9UaXRs
ZTsKLQotICAgIC8vIFRSVUUgaWYgYXBwc3JjJ3MgdmVyc2lvbiBpcyA+PSAwLjEwLjI3LCBzZWUK
LSAgICAvLyBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA5NDIz
Ci0gICAgZ2Jvb2xlYW4gaGF2ZUFwcFNyYzI3OwogfTsKIAogZW51bSB7CkBAIC0xNzAsOSArMTY2
LDYgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjR2V0UHJvcGVydHkoR09iamVjdCosIGd1aW50
IHByb3BlcnR5SUQsIEdWYWx1ZSosIEdQYXJhbVMKIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVy
biB3ZWJLaXRXZWJTcmNDaGFuZ2VTdGF0ZShHc3RFbGVtZW50KiwgR3N0U3RhdGVDaGFuZ2UpOwog
CiBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjUXVlcnlXaXRoUGFyZW50KEdzdFBhZCosIEdz
dE9iamVjdCosIEdzdFF1ZXJ5Kik7Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi1zdGF0aWMg
Z2Jvb2xlYW4gd2ViS2l0V2ViU3JjUXVlcnkoR3N0UGFkKiwgR3N0UXVlcnkqKTsKLSNlbmRpZgog
CiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNOZWVkRGF0YUNiKEdzdEFwcFNyYyosIGd1aW50IGxl
bmd0aCwgZ3BvaW50ZXIgdXNlckRhdGEpOwogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjRW5vdWdo
RGF0YUNiKEdzdEFwcFNyYyosIGdwb2ludGVyIHVzZXJEYXRhKTsKQEAgLTIwNCw3ICsxOTcsNyBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19jbGFzc19pbml0KFdlYktpdFdlYlNyY0NsYXNz
KiBrbGFzcykKIAogICAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUoZWtsYXNz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3N0X3N0YXRpY19wYWRf
dGVtcGxhdGVfZ2V0KCZzcmNUZW1wbGF0ZSkpOwotICAgIHNldEdzdEVsZW1lbnRDbGFzc01ldGFk
YXRhKGVrbGFzcywgIldlYktpdCBXZWIgc291cmNlIGVsZW1lbnQiLCAiU291cmNlIiwgIkhhbmRs
ZXMgSFRUUC9IVFRQUyB1cmlzIiwKKyAgICBnc3RfZWxlbWVudF9jbGFzc19zZXRfbWV0YWRhdGEo
ZWtsYXNzLCAiV2ViS2l0IFdlYiBzb3VyY2UgZWxlbWVudCIsICJTb3VyY2UiLCAiSGFuZGxlcyBI
VFRQL0hUVFBTIHVyaXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZWJhc3Rp
YW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4iKTsKIAogICAgIC8v
IGljZWNhc3Qgc3R1ZmYKQEAgLTI3NSw5ICsyNjgsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3NyY19pbml0KFdlYktpdFdlYlNyYyogc3JjKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgR3N0RWxlbWVudEZhY3RvcnkqIGZhY3RvcnkgPSBHU1RfRUxFTUVOVF9GQUNUT1JZKEdTVF9F
TEVNRU5UX0dFVF9DTEFTUyhwcml2LT5hcHBzcmMpLT5lbGVtZW50ZmFjdG9yeSk7Ci0gICAgcHJp
di0+aGF2ZUFwcFNyYzI3ID0gZ3N0X3BsdWdpbl9mZWF0dXJlX2NoZWNrX3ZlcnNpb24oR1NUX1BM
VUdJTl9GRUFUVVJFKGZhY3RvcnkpLCAwLCAxMCwgMjcpOwotCiAgICAgZ3N0X2Jpbl9hZGQoR1NU
X0JJTihzcmMpLCBHU1RfRUxFTUVOVChwcml2LT5hcHBzcmMpKTsKIAogCkBAIC0yODYsMTIgKzI3
Niw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX2luaXQoV2ViS2l0V2ViU3JjKiBzcmMp
CiAKICAgICBnc3RfZWxlbWVudF9hZGRfcGFkKEdTVF9FTEVNRU5UKHNyYyksIHByaXYtPnNyY3Bh
ZCk7CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIEdTVF9PQkpFQ1RfRkxBR19TRVQo
cHJpdi0+c3JjcGFkLCBHU1RfUEFEX0ZMQUdfTkVFRF9QQVJFTlQpOwogICAgIGdzdF9wYWRfc2V0
X3F1ZXJ5X2Z1bmN0aW9uKHByaXYtPnNyY3BhZCwgd2ViS2l0V2ViU3JjUXVlcnlXaXRoUGFyZW50
KTsKLSNlbHNlCi0gICAgZ3N0X3BhZF9zZXRfcXVlcnlfZnVuY3Rpb24ocHJpdi0+c3JjcGFkLCB3
ZWJLaXRXZWJTcmNRdWVyeSk7Ci0jZW5kaWYKIAogICAgIGdzdF9hcHBfc3JjX3NldF9jYWxsYmFj
a3MocHJpdi0+YXBwc3JjLCAmYXBwc3JjQ2FsbGJhY2tzLCBzcmMsIDApOwogICAgIGdzdF9hcHBf
c3JjX3NldF9lbWl0X3NpZ25hbHMocHJpdi0+YXBwc3JjLCBGQUxTRSk7CkBAIC0zMTQsOCArMzAw
LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfaW5pdChXZWJLaXRXZWJTcmMqIHNyYykK
ICAgICAvLyBsaWtlbHkgdGhhdCBsaWJzb3VwIGFscmVhZHkgcHJvdmlkZXMgbmV3IGRhdGEgYmVm
b3JlCiAgICAgLy8gdGhlIHF1ZXVlIGlzIHJlYWxseSBlbXB0eS4KICAgICAvLyBUaGlzIG1pZ2h0
IG5lZWQgdHdlYWtpbmcgZm9yIHBvcnRzIG5vdCB1c2luZyBsaWJzb3VwLgotICAgIGlmIChwcml2
LT5oYXZlQXBwU3JjMjcpCi0gICAgICAgIGdfb2JqZWN0X3NldChwcml2LT5hcHBzcmMsICJtaW4t
cGVyY2VudCIsIDIwLCBOVUxMKTsKKyAgICBnX29iamVjdF9zZXQocHJpdi0+YXBwc3JjLCAibWlu
LXBlcmNlbnQiLCAyMCwgTlVMTCk7CiAKICAgICBnc3RfYXBwX3NyY19zZXRfY2Fwcyhwcml2LT5h
cHBzcmMsIDApOwogICAgIGdzdF9hcHBfc3JjX3NldF9zaXplKHByaXYtPmFwcHNyYywgLTEpOwpA
QCAtMzUzLDExICszMzgsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTZXRQcm9wZXJ0eShH
T2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgY29uc3QgR1ZhbHVlKgogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgY2FzZSBQUk9QX0xPQ0FUSU9OOgotI2lmZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCiAgICAgICAgIGdzdF91cmlfaGFuZGxlcl9zZXRfdXJpKHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
VVJJSGFuZGxlcio+KHNyYyksIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSksIDApOwotI2Vsc2UK
LSAgICAgICAgZ3N0X3VyaV9oYW5kbGVyX3NldF91cmkocmVpbnRlcnByZXRfY2FzdDxHc3RVUklI
YW5kbGVyKj4oc3JjKSwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7Ci0jZW5kaWYKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS
T1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwc3BlYyk7CkBAIC00MzYsOSArNDE3LDcgQEAgc3Rh
dGljIGdib29sZWFuIHdlYktpdFdlYlNyY1N0b3AoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgfQog
CiAgICAgaWYgKHByaXYtPmJ1ZmZlcikgewotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAg
ICAgIHVubWFwR3N0QnVmZmVyKHByaXYtPmJ1ZmZlci5nZXQoKSk7Ci0jZW5kaWYKICAgICAgICAg
cHJpdi0+YnVmZmVyLmNsZWFyKCk7CiAgICAgfQogCkBAIC02MzgsMTQgKzYxNyw2IEBAIHN0YXRp
YyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNRdWVyeVdpdGhQYXJlbnQoR3N0UGFkKiBwYWQsIEdzdE9i
amVjdCogcGFyZW50LCBHc3RRCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotI2lmbmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQotc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1F1ZXJ5KEdzdFBhZCog
cGFkLCBHc3RRdWVyeSogcXVlcnkpCi17Ci0gICAgR1JlZlB0cjxHc3RFbGVtZW50PiBzcmMgPSBh
ZG9wdEdSZWYoZ3N0X3BhZF9nZXRfcGFyZW50X2VsZW1lbnQocGFkKSk7Ci0gICAgcmV0dXJuIHdl
YktpdFdlYlNyY1F1ZXJ5V2l0aFBhcmVudChwYWQsIEdTVF9PQkpFQ1Qoc3JjLmdldCgpKSwgcXVl
cnkpOwotfQotI2VuZGlmCi0KIHN0YXRpYyBib29sIHVybEhhc1N1cHBvcnRlZFByb3RvY29sKGNv
bnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiB1cmwuaXNWYWxpZCgpICYmICh1cmwucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpIHx8IHVybC5wcm90b2NvbElzKCJibG9iIikpOwpAQCAtNjUzLDcg
KzYyNCw2IEBAIHN0YXRpYyBib29sIHVybEhhc1N1cHBvcnRlZFByb3RvY29sKGNvbnN0IFVSTCYg
dXJsKQogCiAvLyB1cmkgaGFuZGxlciBpbnRlcmZhY2UKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCiBzdGF0aWMgR3N0VVJJVHlwZSB3ZWJLaXRXZWJTcmNVcmlHZXRUeXBlKEdUeXBlKQogewog
ICAgIHJldHVybiBHU1RfVVJJX1NSQzsKQEAgLTcwMyw1NyArNjczLDYgQEAgc3RhdGljIGdib29s
ZWFuIHdlYktpdFdlYlNyY1NldFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyLCBjb25zdCBnY2hh
ciogdXJpLCBHRXIKICAgICByZXR1cm4gVFJVRTsKIH0KIAotI2Vsc2UKLXN0YXRpYyBHc3RVUklU
eXBlIHdlYktpdFdlYlNyY1VyaUdldFR5cGUodm9pZCkKLXsKLSAgICByZXR1cm4gR1NUX1VSSV9T
UkM7Ci19Ci0KLXN0YXRpYyBnY2hhcioqIHdlYktpdFdlYlNyY0dldFByb3RvY29scyh2b2lkKQot
ewotICAgIHN0YXRpYyBnY2hhciogcHJvdG9jb2xzW10gPSB7KGdjaGFyKikgImh0dHAiLCAoZ2No
YXIqKSAiaHR0cHMiLCAoZ2NoYXIqKSAiYmxvYiIsIDAgfTsKLSAgICByZXR1cm4gcHJvdG9jb2xz
OwotfQotCi1zdGF0aWMgY29uc3QgZ2NoYXIqIHdlYktpdFdlYlNyY0dldFVyaShHc3RVUklIYW5k
bGVyKiBoYW5kbGVyKQotewotICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMo
aGFuZGxlcik7Ci0gICAgZ2NoYXIqIHJldDsKLQotICAgIEdNdXRleExvY2tlciBsb2NrZXIoR1NU
X09CSkVDVF9HRVRfTE9DSyhzcmMpKTsKLSAgICByZXQgPSBnX3N0cmR1cChzcmMtPnByaXYtPnVy
aSk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1Nl
dFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyLCBjb25zdCBnY2hhciogdXJpKQotewotICAgIFdl
YktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMoaGFuZGxlcik7Ci0gICAgV2ViS2l0V2Vi
U3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKLQotICAgIGlmIChHU1RfU1RBVEUoc3JjKSA+
PSBHU1RfU1RBVEVfUEFVU0VEKSB7Ci0gICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiVVJJ
IGNhbiBvbmx5IGJlIHNldCBpbiBzdGF0ZXMgPCBQQVVTRUQiKTsKLSAgICAgICAgcmV0dXJuIEZB
TFNFOwotICAgIH0KLQotICAgIEdNdXRleExvY2tlciBsb2NrZXIoR1NUX09CSkVDVF9HRVRfTE9D
SyhzcmMpKTsKLQotICAgIGdfZnJlZShwcml2LT51cmkpOwotICAgIHByaXYtPnVyaSA9IDA7Ci0K
LSAgICBpZiAoIXVyaSkKLSAgICAgICAgcmV0dXJuIFRSVUU7Ci0KLSAgICBVUkwgdXJsKFVSTCgp
LCB1cmkpOwotICAgIGlmICghdXJsSGFzU3VwcG9ydGVkUHJvdG9jb2wodXJsKSkgewotICAgICAg
ICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIkludmFsaWQgVVJJICclcyciLCB1cmkpOwotICAgICAg
ICByZXR1cm4gRkFMU0U7Ci0gICAgfQotCi0gICAgcHJpdi0+dXJpID0gZ19zdHJkdXAodXJsLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIHJldHVybiBUUlVFOwotfQotI2VuZGlmCi0KIHN0
YXRpYyB2b2lkIHdlYktpdFdlYlNyY1VyaUhhbmRsZXJJbml0KGdwb2ludGVyIGdJZmFjZSwgZ3Bv
aW50ZXIpCiB7CiAgICAgR3N0VVJJSGFuZGxlckludGVyZmFjZSogaWZhY2UgPSAoR3N0VVJJSGFu
ZGxlckludGVyZmFjZSAqKSBnSWZhY2U7CkBAIC05MDEsMTUgKzgyMCwxMyBAQCBjaGFyKiBTdHJl
YW1pbmdDbGllbnQ6OmNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90IHJlcXVlc3RlZFNpemUsIHNpemVf
dCYgYWN0dWFsU2l6ZQogCiAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RfYnVmZmVyX25ld19h
bmRfYWxsb2MocmVxdWVzdGVkU2l6ZSk7CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAg
IG1hcEdzdEJ1ZmZlcihidWZmZXIpOwotI2VuZGlmCiAKICAgICBHTXV0ZXhMb2NrZXIgbG9ja2Vy
KEdTVF9PQkpFQ1RfR0VUX0xPQ0soc3JjKSk7CiAgICAgcHJpdi0+YnVmZmVyID0gYWRvcHRHUmVm
KGJ1ZmZlcik7CiAgICAgbG9ja2VyLnVubG9jaygpOwogCi0gICAgYWN0dWFsU2l6ZSA9IGdldEdz
dEJ1ZmZlclNpemUoYnVmZmVyKTsKKyAgICBhY3R1YWxTaXplID0gZ3N0X2J1ZmZlcl9nZXRfc2l6
ZShidWZmZXIpOwogICAgIHJldHVybiBnZXRHc3RCdWZmZXJEYXRhUG9pbnRlcihidWZmZXIpOwog
fQogCkBAIC05MzgsMTEgKzg1NSw3IEBAIHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVSZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIHByaXYt
PnNpemUgPSBsZW5ndGggPj0gMCA/IGxlbmd0aCA6IDA7CiAgICAgcHJpdi0+c2Vla2FibGUgPSBs
ZW5ndGggPiAwICYmIGdfYXNjaWlfc3RyY2FzZWNtcCgibm9uZSIsIHJlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZCgiQWNjZXB0LVJhbmdlcyIpLnV0ZjgoKS5kYXRhKCkpOwogCi0jaWZkZWYgR1NUX0FQ
SV9WRVJTSU9OXzEKICAgICBHc3RUYWdMaXN0KiB0YWdzID0gZ3N0X3RhZ19saXN0X25ld19lbXB0
eSgpOwotI2Vsc2UKLSAgICBHc3RUYWdMaXN0KiB0YWdzID0gZ3N0X3RhZ19saXN0X25ldygpOwot
I2VuZGlmCiAgICAgU3RyaW5nIHZhbHVlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJpY3kt
bmFtZSIpOwogICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGdfZnJlZShwcml2
LT5pcmFkaW9OYW1lKTsKQEAgLTk3NywxNSArODkwLDYgQEAgdm9pZCBTdHJlYW1pbmdDbGllbnQ6
OmhhbmRsZVJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiAgICAgLy8gbm90aWZ5IHNpemUvZHVyYXRpb24KICAgICBpZiAobGVuZ3RoID4gMCkgewogICAg
ICAgICBnc3RfYXBwX3NyY19zZXRfc2l6ZShwcml2LT5hcHBzcmMsIGxlbmd0aCk7Ci0KLSNpZm5k
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICAgICAgaWYgKCFwcml2LT5oYXZlQXBwU3JjMjcpIHsK
LSAgICAgICAgICAgIGdzdF9zZWdtZW50X3NldF9kdXJhdGlvbigmR1NUX0JBU0VfU1JDKHByaXYt
PmFwcHNyYyktPnNlZ21lbnQsIEdTVF9GT1JNQVRfQllURVMsIGxlbmd0aCk7Ci0gICAgICAgICAg
ICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UoR1NUX0VMRU1FTlQocHJpdi0+YXBwc3JjKSwKLSAg
ICAgICAgICAgICAgICBnc3RfbWVzc2FnZV9uZXdfZHVyYXRpb24oR1NUX09CSkVDVChwcml2LT5h
cHBzcmMpLAotICAgICAgICAgICAgICAgICAgICBHU1RfRk9STUFUX0JZVEVTLCBsZW5ndGgpKTsK
LSAgICAgICAgfQotI2VuZGlmCiAgICAgfSBlbHNlCiAgICAgICAgIGdzdF9hcHBfc3JjX3NldF9z
aXplKHByaXYtPmFwcHNyYywgLTEpOwogCkBAIC0xMDA1LDEzICs5MDksOSBAQCB2b2lkIFN0cmVh
bWluZ0NsaWVudDo6aGFuZGxlUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIAogICAgIC8vIG5vdGlmeSB0YWdzCiAgICAgaWYgKGdzdF90YWdfbGlzdF9p
c19lbXB0eSh0YWdzKSkKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgICAgICBnc3RfdGFn
X2xpc3RfdW5yZWYodGFncyk7Ci0jZWxzZQotICAgICAgICBnc3RfdGFnX2xpc3RfZnJlZSh0YWdz
KTsKLSNlbmRpZgogICAgIGVsc2UKLSAgICAgICAgbm90aWZ5R3N0VGFnc09uUGFkKEdTVF9FTEVN
RU5UKHNyYyksIHByaXYtPnNyY3BhZCwgdGFncyk7CisgICAgICAgIGdzdF9wYWRfcHVzaF9ldmVu
dChwcml2LT5zcmNwYWQsIGdzdF9ldmVudF9uZXdfdGFnKHRhZ3MpKTsKIH0KIAogdm9pZCBTdHJl
YW1pbmdDbGllbnQ6OmhhbmRsZURhdGFSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoKQpAQCAtMTAyMSwxNCArOTIxLDEyIEBAIHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVE
YXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIAogICAgIEdNdXRleExv
Y2tlciBsb2NrZXIoR1NUX09CSkVDVF9HRVRfTE9DSyhzcmMpKTsKIAotICAgIEdTVF9MT0dfT0JK
RUNUKHNyYywgIkhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIHByaXYtPmJ1ZmZlciA/IGdldEdzdEJ1
ZmZlclNpemUocHJpdi0+YnVmZmVyLmdldCgpKSA6IGxlbmd0aCk7CisgICAgR1NUX0xPR19PQkpF
Q1Qoc3JjLCAiSGF2ZSAlbGQgYnl0ZXMgb2YgZGF0YSIsIHByaXYtPmJ1ZmZlciA/IGdzdF9idWZm
ZXJfZ2V0X3NpemUocHJpdi0+YnVmZmVyLmdldCgpKSA6IGxlbmd0aCk7CiAKICAgICBBU1NFUlQo
IXByaXYtPmJ1ZmZlciB8fCBkYXRhID09IGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKHByaXYtPmJ1
ZmZlci5nZXQoKSkpOwogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBpZiAocHJpdi0+
YnVmZmVyKQogICAgICAgICB1bm1hcEdzdEJ1ZmZlcihwcml2LT5idWZmZXIuZ2V0KCkpOwotI2Vu
ZGlmCiAKICAgICBpZiAocHJpdi0+c2Vla0lEKSB7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdub3JpbmcgZGF0YSIpOwpAQCAtMTA0MSw3ICs5Mzks
NyBAQCB2b2lkIFN0cmVhbWluZ0NsaWVudDo6aGFuZGxlRGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpCiAgICAgaWYgKCFwcml2LT5idWZmZXIpCiAgICAgICAgIHByaXYt
PmJ1ZmZlciA9IGFkb3B0R1JlZihjcmVhdGVHc3RCdWZmZXJGb3JEYXRhKGRhdGEsIGxlbmd0aCkp
OwogICAgIGVsc2UKLSAgICAgICAgc2V0R3N0QnVmZmVyU2l6ZShwcml2LT5idWZmZXIuZ2V0KCks
IGxlbmd0aCk7CisgICAgICAgIGdzdF9idWZmZXJfc2V0X3NpemUocHJpdi0+YnVmZmVyLmdldCgp
LCBzdGF0aWNfY2FzdDxnc3NpemU+KGxlbmd0aCkpOwogCiAgICAgR1NUX0JVRkZFUl9PRkZTRVQo
cHJpdi0+YnVmZmVyLmdldCgpKSA9IHByaXYtPm9mZnNldDsKICAgICBpZiAocHJpdi0+cmVxdWVz
dGVkT2Zmc2V0ID09IHByaXYtPm9mZnNldCkKQEAgLTEwNTgsMTEgKzk1Niw3IEBAIHZvaWQgU3Ry
ZWFtaW5nQ2xpZW50OjpoYW5kbGVEYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50IGxl
bmd0aCkKICAgICBsb2NrZXIudW5sb2NrKCk7CiAKICAgICBHc3RGbG93UmV0dXJuIHJldCA9IGdz
dF9hcHBfc3JjX3B1c2hfYnVmZmVyKHByaXYtPmFwcHNyYywgcHJpdi0+YnVmZmVyLmxlYWtSZWYo
KSk7Ci0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09L
ICYmIHJldCAhPSBHU1RfRkxPV19FT1MpCi0jZWxzZQotICAgIGlmIChyZXQgIT0gR1NUX0ZMT1df
T0sgJiYgcmV0ICE9IEdTVF9GTE9XX1VORVhQRUNURUQpCi0jZW5kaWYKICAgICAgICAgR1NUX0VM
RU1FTlRfRVJST1Ioc3JjLCBDT1JFLCBGQUlMRUQsICgwKSwgKDApKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm1FZmwuY21ha2UKaW5kZXggNGM5NTlkOTA2MmY2YzU1YTg5NTkwZWU4NTYyNDhmM2E1ZGMwZjMx
NS4uMmFiOWQyZWRkZjBmZTM3YTM0NzMwYjY5NzJhZjk0YzQzYjJkNzJhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtRWZsLmNtYWtlCkBAIC0xMTMsNyArMTEzLDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJD
RVMKICAgICBlZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAogICAgIGVmbC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKICAgICBlZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbC5jcHAKLSAgICBlZmwvV2ViQ29yZVN1cHBv
cnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckVmbC5jcHAKICAgICBlZmwvV2ViQ29yZVN1cHBv
cnQvSWNvbkRhdGFiYXNlQ2xpZW50RWZsLmNwcAogICAgIGVmbC9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRFZmwuY3BwCiAgICAgZWZsL1dlYkNvcmVTdXBwb3J0L05hdmlnYXRvckNvbnRl
bnRVdGlsc0NsaWVudEVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJFZmwuY3BwIGIvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckVmbC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYzI1NTJlMDYwNDlkMWU3MmUxNDQ3NDA2YmVi
YzgwOTdlMTZmMWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMgKzAsMCBAQAotLyoKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAotICogIENvcHlyaWdodCAoQykgMjAxMCBTYW1zdW5n
IEVsZWN0cm9uaWNzCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJM
RShWSURFTykgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCi0KLSNpbmNsdWRlICJGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyRWZsLmgiCi0KLSNpbmNsdWRlICJNZWRpYVBsYXllci5oIgot
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0KLXVz
aW5nIG5hbWVzcGFjZSBzdGQ7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpCi0gICAgOiBtX2h1
ZFRpbWVvdXRJZCgwKQotICAgICwgbV9wcm9ncmVzc0JhclVwZGF0ZUlkKDApCi0gICAgLCBtX3Nl
ZWtMb2NrKGZhbHNlKQotICAgICwgbV93aW5kb3coMCkKLSAgICAsIG1faHVkV2luZG93KDApCi17
Ci19Ci0KLUZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6On5GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyKCkKLXsKLSAgICBleGl0RnVsbHNjcmVlbigpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OnNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1l
bnQpCi17Ci0gICAgaWYgKG1lZGlhRWxlbWVudCA9PSBtX21lZGlhRWxlbWVudCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9tZWRpYUVsZW1lbnQgPSBtZWRpYUVsZW1lbnQ7Ci0gICAgaWYgKCFt
X21lZGlhRWxlbWVudCkgewotICAgICAgICAvLyBDYW4ndCBkbyBmdWxsLXNjcmVlbiwganVzdCBn
ZXQgb3V0Ci0gICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7Ci0gICAgfQotfQotCi12b2lkIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNob3dIdWQoYm9vbCAvKmF1dG9IaWRlKi8pCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpo
aWRlSHVkKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsbHNjcmVlbigpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp1cGRhdGVIdWRQb3NpdGlv
bigpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpleGl0T25Vc2VyUmVxdWVzdCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpleGl0RnVsbHNjcmVlbigpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9vbCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpjYW5QbGF5KCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwbGF5KCkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6OnBhdXNlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OnBsYXlTdGF0ZUNoYW5nZWQoKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dG9nZ2xlUGxheSgp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotZmxvYXQgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6dm9sdW1lKCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiAwOwotfQotCi1ib29sIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om11dGVkKCkgY29u
c3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9p
ZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRWb2x1bWUoZmxvYXQgLyp2b2x1bWUqLykK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6OnZvbHVtZUNoYW5nZWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6bXV0ZUNoYW5nZWQoKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KLWZsb2F0IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmN1cnJl
bnRUaW1lKCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwot
fQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKGZsb2F0
IC8qdmFsdWUqLykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1mbG9hdCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpkdXJhdGlvbigpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotZmxvYXQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cjo6cGVyY2VudExvYWRlZCgpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gMDsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpiZWdpblNlZWso
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6ZG9TZWVrKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVuZFNlZWsoKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLWJvb2wgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dXBkYXRlSHVkUHJvZ3Jl
c3NCYXIoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmNyZWF0ZUh1ZCgpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc0VmbC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IDhlNTA5
Y2FlOGI0NTg0ZjQ2YmMwNjUxNTUzM2ZjODRiNzViMTdkMGUuLjhhNTRlNGQxZGZlNjY3MDZhZjY1
NGFlN2NmZWY5ODVkZmFhMzg4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZs
LmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCkBAIC0xNTgsNyArMTU4
LDcgQEAgZW5kaWYgKCkKIGlmIChFTkFCTEVfVklERU8gT1IgRU5BQkxFX1dFQl9BVURJTykKICAg
ICBzZXQoR1NUUkVBTUVSX0NPTVBPTkVOVFMgYXBwIHBidXRpbHMpCiAgICAgc2V0KFdURl9VU0Vf
R1NUUkVBTUVSIDEpCi0gICAgYWRkX2RlZmluaXRpb25zKC1EV1RGX1VTRV9HU1RSRUFNRVI9MSAt
REdTVF9BUElfVkVSU0lPTl8xPTEpCisgICAgYWRkX2RlZmluaXRpb25zKC1EV1RGX1VTRV9HU1RS
RUFNRVI9MSkKIAogICAgIGlmIChFTkFCTEVfVklERU8pCiAgICAgICAgIGxpc3QoQVBQRU5EIEdT
VFJFQU1FUl9DT01QT05FTlRTIHZpZGVvKQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdl
TG9nCmluZGV4IDdkZDdjYmZiZTI1OWMxNzBhYTdjMmU4Y2U0NjBhNjI1NDQ2NTUzZGIuLjA5OGFk
ZDliZDhhZTIxZWQ1Yzg1NzI2ZjkyNjQyNjUyZDNlMzY5MmMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxv
ZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMS0yMiAgWGFiaWVyIFJv
ZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFt
ZXJdIFJlbW92ZSAwLjEwIGNvZGVwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjQ1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOiBSZW1vdmVk
IEdTVF9BUElfVkVSU0lPTl8xCisgICAgICAgIGRlZmluaXRpb24uCisKIDIwMTMtMTEtMjEgIFBl
dGVyIE1vbG5hciAgPHBtb2xuYXIudS1zemVnZWRAcGFydG5lci5zYW1zdW5nLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgRU5BQkxFX1dPUktFUlMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217813</attachid>
            <date>2013-11-25 09:20:51 -0800</date>
            <delta_ts>2013-11-25 09:25:32 -0800</delta_ts>
            <desc>patch for wrong bug</desc>
            <filename>bug-124534-20131125182050.patch</filename>
            <type>text/plain</type>
            <size>1757</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFjNzMzZjcxNmIxYTc2
YzRlNDYxZmI4M2IzYzg1OWJhNDkxYzQ0OC4uYTc4NWQ0MzdhM2M4ZjcwZTYyMWY3MGI2ODkwMWFm
NWYwY2Y3MGRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEzLTExLTI1ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gUmVtb3ZlIDAuMTAgY29kZXBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDcxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChTdHJlYW1pbmdDbGllbnQ6OmhhbmRs
ZVJlc3BvbnNlUmVjZWl2ZWQpOiBIVFRQIGVycm9ycyBoYW5kbGVkIGFuZAorICAgICAgICByYWlz
ZWQgYSBnc3QgZXJyb3IgaW4gdGhlIGdzdCBzb3VyY2UuCisKIDIwMTMtMTEtMjUgIExhc3psbyBW
aWRhY3MgIDxsYWNAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFZlcnRpY2FsIGJvcmRlciBz
cGFjaW5nIGlzIGRvdWJsZWQgYmV0d2VlbiB0YWJsZSByb3cgZ3JvdXBzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IGE5NDQ5MzNmMWVhZGUzZDgwZDg1
MTUzNmM4ZjFhMjA3MmQwMDBmZDQuLmFmNzhhZTAwZGM5ZmI5MzJkNTNjZGQ4OWM0MzkzYTQyYzU3
MDg3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBA
IC04MzcsNiArODM3LDE0IEBAIHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpoYW5kbGVSZXNwb25zZVJl
Y2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogCiAgICAgR1NUX0RFQlVH
X09CSkVDVChzcmMsICJSZWNlaXZlZCByZXNwb25zZTogJWQiLCByZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpKTsKIAorICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCkgewor
ICAgICAgICAvLyBSZWNlaXZlZCBlcnJvciBjb2RlCisgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9S
KHNyYywgUkVTT1VSQ0UsIFJFQUQsICgiUmVjZWl2ZWQgJWQgSFRUUCBlcnJvciBjb2RlIiwgcmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSksICgwKSk7CisgICAgICAgIGdzdF9hcHBfc3JjX2VuZF9v
Zl9zdHJlYW0ocHJpdi0+YXBwc3JjKTsKKyAgICAgICAgd2ViS2l0V2ViU3JjU3RvcChzcmMpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgR011dGV4TG9ja2VyIGxvY2tlcihHU1RfT0JK
RUNUX0dFVF9MT0NLKHNyYykpOwogCiAgICAgaWYgKHByaXYtPnNlZWtJRCkgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>